diff --git a/measure.py b/measure.py index 7a7674612246e3dfd609ed9c28c9a3149c69a0e7..b3e9139f31d05ca443cf51c60e3df10777ddd7a2 100644 --- a/measure.py +++ b/measure.py @@ -50,10 +50,12 @@ class OhmPiHardware: soh_logger=self.soh_logger)) self.readings = np.array([]) # time series of acquired data self._start_time = None # time of the beginning of a readings acquisition + self._pulse = 0 # pulse number def _clear_values(self): self.readings = np.array([]) self._start_time = None + self._pulse = 0 def _inject(self, duration): self.tx_sync.set() @@ -72,11 +74,13 @@ class OhmPiHardware: self._start_time = datetime.datetime.utcnow() while self.tx_sync.is_set(): lap = datetime.datetime.utcnow() - _readings.append([elapsed_seconds(self._start_time), self.tx.current, self.rx.voltage, self.tx.polarity]) + _readings.append([elapsed_seconds(self._start_time), self._pulse, self.tx.polarity, self.tx.current, + self.rx.voltage]) sample+=1 sleep_time = self._start_time + datetime.timedelta(seconds = sample * sampling_rate / 1000) - lap time.sleep(np.min([0, np.abs(sleep_time.total_seconds())])) self.readings = np.array(_readings) + self._pulse += 1 def _compute_tx_volt(self, best_tx_injtime=0.1, strategy='vmax', tx_volt=5, vab_max=voltage_max, vmn_min=voltage_min): @@ -129,8 +133,8 @@ class OhmPiHardware: else: sampling_rate = self.tx.sampling_rate self._vab_pulse(vab=vab, length=best_tx_injtime, sampling_rate=sampling_rate) - vmn = np.mean(self.readings[:,2]) - iab = np.mean(self.readings[:,1]) + vmn = np.mean(self.readings[:,4]) + iab = np.mean(self.readings[:,3]) # if np.abs(vmn) is too small (smaller than voltage_min), strategy is not constant and vab < vab_max , # then we could call _compute_tx_volt with a tx_volt increased to np.min([vab_max, tx_volt*2.]) for example if strategy == 'vmax': diff --git a/test_measure_with_ohmpi_card_3_15.py b/test_measure_with_ohmpi_card_3_15.py index a0d5722015b90526806d6d7c23633f50467545f4..f48f4c70be524a5db98a19a014ed00558516d7c4 100644 --- a/test_measure_with_ohmpi_card_3_15.py +++ b/test_measure_with_ohmpi_card_3_15.py @@ -1,29 +1,34 @@ import numpy as np +import logging import matplotlib.pyplot as plt from utils import change_config change_config('config_ohmpi_card_3_15.py', verbose=False) from OhmPi.measure import OhmPiHardware k = OhmPiHardware() +k.exec_logger.setLevel(logging.INFO) # Test #1: print('Testing _vab_pulse') k._vab_pulse(vab=12, length=1., sampling_rate=k.rx.sampling_rate, polarity=1) -r = k.readings[:,2]/k.readings[:,1] +r = k.readings[:,4]/k.readings[:,3] print(f'Mean resistance: {np.mean(r):.3f} Ohms, Dev. {100*np.std(r)/np.mean(r):.1f} %') print(f'sampling rate: {k.rx.sampling_rate:.1f} ms, mean sample spacing: {np.mean(np.diff(k.readings[:,0]))*1000.:.1f} ms') # Test #2: print('\n\nTesting vab_square_wave') k.vab_square_wave(vab=12, cycle_length=2., sampling_rate=k.rx.sampling_rate, cycles=3) -r = k.readings[:,2]/k.readings[:,1] +r = k.readings[:,4]/k.readings[:,3] print(f'Mean resistance: {np.mean(r):.3f} Ohms, Dev. {100*np.std(r)/np.mean(r):.1f} %') print(f'sampling rate: {k.rx.sampling_rate:.1f} ms, mean sample spacing: {np.mean(np.diff(k.readings[:,0]))*1000.:.1f} ms') print(r) print(f'length of array: {len(r)}, expected length: {6000./k.rx.sampling_rate}') print(k.readings) fig, ax = plt.subplots() -ax.plot(k.readings[:,0], k.readings[:,1], '-r', label='iab') +ax.plot(k.readings[:,0], k.readings[:,3], '-r', marker='.', label='iab') +ax.set_ylabel('Iab [mA]') ax2 = ax.twinx() -ax2.plot(k.readings[:,0], k.readings[:,2], '-b', label='vmn') +ax2.plot(k.readings[:,0], k.readings[:,2]*k.readings[:,4], '-b', marker='.', label='vmn') +ax2.set_ylabel('Vmn [mV]') +fig.legend() plt.show() change_config('config_default.py', verbose=False)