From 9263b41fa11f5942bb7ad3d3361be324816c74d7 Mon Sep 17 00:00:00 2001
From: su530201 <olivier.kaufmann@umons.ac.be>
Date: Tue, 20 Jun 2023 17:22:54 +0200
Subject: [PATCH] Fixes bug in rx voltge measurement

---
 ohmpi/hardware_components/ohmpi_card_3_15.py | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/ohmpi/hardware_components/ohmpi_card_3_15.py b/ohmpi/hardware_components/ohmpi_card_3_15.py
index 757b2540..94f161e6 100644
--- a/ohmpi/hardware_components/ohmpi_card_3_15.py
+++ b/ohmpi/hardware_components/ohmpi_card_3_15.py
@@ -28,6 +28,7 @@ RX_CONFIG['voltage_min'] = np.min([voltage_adc_voltage_min, RX_CONFIG.pop('volta
 RX_CONFIG['voltage_max'] = np.min([voltage_adc_voltage_max, RX_CONFIG.pop('voltage_max', np.inf)])  # mV
 RX_CONFIG['sampling_rate'] = RX_CONFIG.pop('sampling_rate', sampling_rate)
 RX_CONFIG['data_rate'] = RX_CONFIG.pop('data_rate', data_rate)
+RX_CONFIG['coef_p2'] = 2.5
 
 # *** TX ***
 # ADC for current
@@ -223,6 +224,7 @@ class Rx(RxAbstract):
         self._ads_voltage = ads.ADS1115(self.ctl.bus, gain=self._adc_gain, data_rate=860,
                                         address=self._ads_voltage_address)
         self._ads_voltage.mode = Mode.CONTINUOUS
+        self._coef_p2 = kwargs.pop('coef_p2', RX_CONFIG['coef_p2'])
         self._sampling_rate = kwargs.pop('sampling_rate', sampling_rate)
         self.exec_logger.event(f'{self.board_name}\trx_init\tend\t{datetime.datetime.utcnow()}')
 
@@ -252,10 +254,6 @@ class Rx(RxAbstract):
         """ Gets the voltage VMN in Volts
         """
         self.exec_logger.event(f'{self.board_name}\trx_voltage\tbegin\t{datetime.datetime.utcnow()}')
-        u0 = AnalogIn(self._ads_voltage, ads.P0).voltage * 1000.
-        u2 = AnalogIn(self._ads_voltage, ads.P2).voltage * 1000.
-        self.exec_logger.info(f'u0: {u0} mV, u2: {u2} mV')
-        u = np.max([u0, u2]) * (np.heaviside(u0-u2, 1.) * 2 - 1.)  # gets the max between u0 & u2 and set the sign
-        self.exec_logger.debug(f'Reading voltages {u0} mV and {u2} mV on RX. Returning {u} mV')
+        u = -AnalogIn(self._ads_voltage, ads.P0, ads.P1).voltage * self._coef_p2 * 1000.
         self.exec_logger.event(f'{self.board_name}\trx_voltage\tend\t{datetime.datetime.utcnow()}')
         return u
-- 
GitLab