diff --git a/ohmpi/hardware_components/mb_2024_0_2.py b/ohmpi/hardware_components/mb_2024_0_2.py index 4806908152ec0debb0047e76ed142d91f7d2b3b9..c50c49088ab5b3bc5b359d2c0811c2ee1125357d 100644 --- a/ohmpi/hardware_components/mb_2024_0_2.py +++ b/ohmpi/hardware_components/mb_2024_0_2.py @@ -131,7 +131,7 @@ class Tx(Tx_mb_2023): self._pwr_state = 'off' def current_pulse(self, current=None, length=None, polarity=1): - """ Generates a square voltage pulse + """ Generates a square current pulse. Currenttly no DPS can handle this... Parameters ---------- @@ -148,7 +148,7 @@ class Tx(Tx_mb_2023): length = self.injection_duration if current is not None: self.pwr.current = current - self.exec_logger.debug(f'Current pulse of {polarity*self.pwr.voltage:.3f} V for {length:.3f} s') + self.exec_logger.debug(f'Current pulse of {polarity*self.pwr.current:.3f} V for {length:.3f} s') self.inject(polarity=polarity, injection_duration=length) self.exec_logger.event(f'{self.model}\ttx_current_pulse\tend\t{datetime.datetime.utcnow()}') diff --git a/ohmpi/hardware_components/pwr_dps5005.py b/ohmpi/hardware_components/pwr_dps5005.py index 672f163bf4373e12b421650cb68082b22c322f9a..5e89e06915b959d23ee8437ce24737c96f9a49eb 100644 --- a/ohmpi/hardware_components/pwr_dps5005.py +++ b/ohmpi/hardware_components/pwr_dps5005.py @@ -37,11 +37,13 @@ class Pwr(PwrAbstract): self._voltage_max = kwargs['voltage_max'] self._power_max = kwargs['power_max'] self._current_max_tolerance = kwargs['current_max_tolerance'] - self.voltage_default(self._voltage) - self.current_max_default(self._current_max) - self.current_max = self._current_max - self.voltage_max = self._voltage_max - self.power_max(self._power_max) + if self.connect: + self.voltage_default(self._voltage) + self.current_max_default(self._current_max) + self.current_max = self._current_max + self.current_overload = self._current_max + self.voltage_max = self._voltage_max + self.power_max(self._power_max) self.voltage_adjustable = True self.current_adjustable = False self._current = np.nan @@ -53,13 +55,13 @@ class Pwr(PwrAbstract): def _retrieve_current(self): self._current = self.connection.read_register(0x0003, 2) * 100 # in mA (not sure why but value from DPS comes in [A*10] - # @property - # def current(self): - # return self._current - # - # @current.setter - # def current(self, value, **kwargs): - # self.exec_logger.debug(f'Current cannot be set on {self.model}') + @property + def current(self): + return self._current + + @current.setter + def current(self, value, **kwargs): + self.exec_logger.debug(f'Current cannot be set on {self.model}') def _retrieve_voltage(self): self._voltage = self.connection.read_register(0x0002, 2) @@ -89,30 +91,23 @@ class Pwr(PwrAbstract): self.connection.write_register(0x0052, np.round(value, 2), 2) self._voltage_max = value - def battery_voltage(self): self._battery_voltage = self.connection.read_register(0x05, 2) return self._battery_voltage - @property - def current(self): - return self._current - - @current.setter - def current(self, value, **kwargs): - # value = value # To set DPS max current slightly above (20%) the limit to avoid regulation artefacts - self.connection.write_register(0x0001, np.round((value), 3), 3) - self._current = value - # self.exec_logger.debug(f'Current cannot be set on {self.model}') - @property def current_max(self): return self._current_max @current_max.setter - def current_max(self, value): # [A] + def current_max(self, value): + new_value = value * ( + 1 + self._current_max_tolerance / 100) # To set DPS max current slightly above (20% by default) the limit to avoid regulation artefacts + self.connection.write_register(0x0001, np.round((new_value), 3), 3) + self._current_max = value + + def current_overload(self, value): # [A] new_value = value * (1 + self._current_max_tolerance / 100) # To set DPS max current slightly above (20% by default) the limit to avoid regulation artefacts - print(new_value) self.connection.write_register(0x0053, np.round((new_value), 3), 3) self._current_max = value diff --git a/ohmpi/hardware_system.py b/ohmpi/hardware_system.py index 145a5daf30c91718eac108ed8750c81df0c60662..cafe33b46bc565d1bcdb7235c03145967e5b8210 100644 --- a/ohmpi/hardware_system.py +++ b/ohmpi/hardware_system.py @@ -148,7 +148,7 @@ class OhmPiHardware: self.pwr_state = 'off' self.tx.pwr = self.pwr - self.tx.pwr._current_max = self.current_max + # self.tx.pwr._current_max = self.current_max # Initialize Muxes self._cabling = kwargs.pop('cabling', {})