From 5511248cd00ce949f4ade9e5a980ce66e8c5d288 Mon Sep 17 00:00:00 2001 From: awatlet <arnaud.watlet@umons.ac.be> Date: Tue, 3 Oct 2023 12:35:43 +0200 Subject: [PATCH] Updates hardware system --- ohmpi/hardware_system.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/ohmpi/hardware_system.py b/ohmpi/hardware_system.py index f3fe7ba6..7a65b064 100644 --- a/ohmpi/hardware_system.py +++ b/ohmpi/hardware_system.py @@ -139,12 +139,25 @@ class OhmPiHardware: self._start_time = None self._pulse = 0 - def _gain_auto(self): # TODO: improve _gain_auto + def _gain_auto(self, polarities=[1, -1]): # TODO: improve _gain_auto self.exec_logger.event(f'OhmPiHardware\ttx_rx_gain_auto\tbegin\t{datetime.datetime.utcnow()}') self.tx_sync.wait() - self.tx.adc_gain_auto() - self.rx.adc_gain_auto() - self.rx.voltage_gain_auto() + current, voltage = 0, 0 + assert isinstance(polarities, ) + for pol in polarities: + self.tx.polarity = pol + # set gains automatically + injection = Thread(target=self._inject, kwargs={'injection_duration': 0.2, 'polarity': polarity}) + readings = Thread(target=self._read_values) + readings.start() + injection.start() + readings.join() + injection.join() + current = max(current,np.mean(self.readings[v, 3])) + voltage = max(voltage,np.abs(np.mean(self.readings[v, 2] * (self.readings[v, 4])))) + + self.tx.gain_auto(current) + self.rx.gain_auto(voltage) self.exec_logger.event(f'OhmPiHardware\ttx_rx_gain_auto\tend\t{datetime.datetime.utcnow()}') def _inject(self, polarity=1, injection_duration=None): # TODO: deal with voltage or current pulse @@ -344,15 +357,7 @@ class OhmPiHardware: def vab_square_wave(self, vab, cycle_duration, sampling_rate=None, cycles=3, polarity=1, duty_cycle=1., append=False): self.exec_logger.event(f'OhmPiHardware\tvab_square_wave\tbegin\t{datetime.datetime.utcnow()}') - self.tx.polarity = polarity ### TODO: inject on both polarities for gain auto? - durations = [cycle_duration/2]*2*cycles - # set gains automatically - gain_auto = Thread(target=self._gain_auto) - injection = Thread(target=self._inject, kwargs={'injection_duration': 0.2, 'polarity': polarity}) - gain_auto.start() - injection.start() - gain_auto.join() - injection.join() + self._gain_auto() assert 0. <= duty_cycle <= 1. if duty_cycle < 1.: durations = [cycle_duration/2 * duty_cycle, cycle_duration/2*(1.-duty_cycle)] * 2 * cycles -- GitLab