From 87fc36d6069efaaab60a5f717fdb1eb58a4f68c7 Mon Sep 17 00:00:00 2001 From: su530201 <olivier.kaufmann@umons.ac.be> Date: Tue, 16 May 2023 10:56:44 +0200 Subject: [PATCH] Reverts to tx.polarity --- .../abstract_hardware_components.py | 12 ++++++++- hardware_components/ohmpi_card_3_15.py | 27 ++++++++++++------- hardware_system.py | 4 +-- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/hardware_components/abstract_hardware_components.py b/hardware_components/abstract_hardware_components.py index 125cb188..e4f9e207 100644 --- a/hardware_components/abstract_hardware_components.py +++ b/hardware_components/abstract_hardware_components.py @@ -220,6 +220,7 @@ class TxAbstract(ABC): self.soh_logger = create_stdout_logger('soh_tx') self.ctl = kwargs.pop('ctl', None) self.pwr = kwargs.pop('pwr', None) + self._polarity = 0 self._inj_time = None self._adc_gain = 1. self.inj_time = inj_time @@ -264,12 +265,21 @@ class TxAbstract(ABC): assert isinstance(value, float) self._inj_time = value + @property + def polarity(self): + return self._polarity + + @polarity.setter + @abstractmethod + def polarity(self, polarity): + assert polarity in [-1, 0, 1] + self._polarity = polarity + @property @abstractmethod def tx_bat(self): pass - def voltage_pulse(self, voltage=0., length=None, polarity=1): """ Generates a square voltage pulse diff --git a/hardware_components/ohmpi_card_3_15.py b/hardware_components/ohmpi_card_3_15.py index 86feb65d..46e1240f 100644 --- a/hardware_components/ohmpi_card_3_15.py +++ b/hardware_components/ohmpi_card_3_15.py @@ -95,8 +95,7 @@ class Tx(TxAbstract): self.pin0.direction = Direction.OUTPUT self.pin1 = self.mcp_board.get_pin(1) self.pin1.direction = Direction.OUTPUT - # self.polarity = 0 - + self.polarity = 0 self.adc_gain = 2 / 3 self.pwr = None @@ -141,21 +140,29 @@ class Tx(TxAbstract): self.exec_logger.warning(f'Current pulse is not implemented for the {TX_CONFIG["model"]} board') def inject(self, polarity=1, inj_time=None): - assert polarity in [-1,0,1] - if polarity==1: + self.polarity = polarity + TxAbstract.inject(self, polarity=polarity, inj_time=None) + + @property + def polarity(self): + return self._polarity + + @polarity.setter + def polarity(self, polarity): + assert polarity in [-1, 0, 1] + self._polarity = polarity + if polarity == 1: self.pin0.value = True self.pin1.value = False - time.sleep(0.005) # Max turn on time of 211EH relays = 5ms - elif polarity==-1: + time.sleep(0.005) # Max turn on time of 211EH relays = 5ms + elif polarity == -1: self.pin0.value = False self.pin1.value = True - time.sleep(0.005) # Max turn on time of 211EH relays = 5ms + time.sleep(0.005) # Max turn on time of 211EH relays = 5ms else: self.pin0.value = False self.pin1.value = False - time.sleep(0.001) # Max turn off time of 211EH relays = 1ms - TxAbstract.inject(self, polarity=polarity, inj_time=None) - + time.sleep(0.001) # Max turn off time of 211EH relays = 1ms def turn_off(self): self.pwr.turn_off(self) diff --git a/hardware_system.py b/hardware_system.py index 33b2f78d..077bf954 100644 --- a/hardware_system.py +++ b/hardware_system.py @@ -241,7 +241,7 @@ class OhmPiHardware: def _vab_pulse(self, vab, length, sampling_rate=None, polarity=1, append=False): """ Gets VMN and IAB from a single voltage pulse """ - + self.tx.polarity = polarity if sampling_rate is None: sampling_rate = RX_CONFIG['sampling_rate'] if self.tx.pwr.voltage_adjustable: @@ -268,7 +268,7 @@ class OhmPiHardware: if polarities is not None: assert len(polarities)==n_pulses else: - polarities = [-1 * np.heaviside(i % 2, -1.) for i in range(n_pulses)] + polarities = [-self.tx.polarity * np.heaviside(i % 2, -1.) for i in range(n_pulses)] if not append: self._clear_values() for i in range(n_pulses): -- GitLab