From e29497f2d4342765a533c448f052e64681055a1b Mon Sep 17 00:00:00 2001
From: su530201 <olivier.kaufmann@umons.ac.be>
Date: Sat, 15 Apr 2023 18:08:46 +0200
Subject: [PATCH] Adds a sampling_rate key in RX_CONFIG and use it in
 _vab_pulse

---
 config_ohmpi_card_3_15.py   | 1 +
 hardware/ohmpi_card_3_15.py | 2 ++
 measure.py                  | 8 ++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/config_ohmpi_card_3_15.py b/config_ohmpi_card_3_15.py
index 8ce65319..b11d7d75 100644
--- a/config_ohmpi_card_3_15.py
+++ b/config_ohmpi_card_3_15.py
@@ -27,6 +27,7 @@ HARDWARE_CONFIG = {
             },
     'rx' : {'model': 'ohmpi_card_3_15',
              'coef_p2': 2.50,  # slope for current conversion for ADS.P2, measurement in V/V
+             'sampling_rate': 10., # ms
              'nb_samples': 20,  # Max value 10 # was named integer before...
             },
     'mux': {'model' : 'dummy_mux', # 'ohmpi_i2c_mux64_v1.01',
diff --git a/hardware/ohmpi_card_3_15.py b/hardware/ohmpi_card_3_15.py
index d7798d52..e5175c1b 100644
--- a/hardware/ohmpi_card_3_15.py
+++ b/hardware/ohmpi_card_3_15.py
@@ -19,8 +19,10 @@ RX_CONFIG = HARDWARE_CONFIG['rx']
 # ADC for voltage
 voltage_adc_voltage_min = 10.  # mV
 voltage_adc_voltage_max = 4500.  # mV
+sampling_rate = 10.  # ms
 RX_CONFIG['voltage_min'] = np.min([voltage_adc_voltage_min, RX_CONFIG.pop('voltage_min', np.inf)])  # mV
 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)
 
 # *** TX ***
 # ADC for current
diff --git a/measure.py b/measure.py
index bc3ef817..2c1e5f62 100644
--- a/measure.py
+++ b/measure.py
@@ -45,7 +45,7 @@ class OhmPiHardware:
                                                     soh_logger=self.soh_logger))
 
 
-    def _vab_pulse(self, vab, length, polarity=None):
+    def _vab_pulse(self, vab, length, sampling_rate=10., polarity=None):
         """ Gets VMN and IAB from a single voltage pulse
         """
         def inject(duration):
@@ -53,14 +53,18 @@ class OhmPiHardware:
             self.tx.voltage_pulse(length=duration)
             self.tx_sync.clear()
 
-        def read_values():
+        def read_values(sampling_rate):
             _readings = []
             self.tx_sync.wait()
             start_time = time.gmtime()
             while self.tx_sync.is_set():
+                cur_time=start_time
                 _readings.append([time.gmtime() - start_time, self.tx.current, self.rx.voltage])
+                time.sleep(cur_time+sampling_rate-time.gmtime())
             return np.array(_readings)
 
+        if sampling_rate is None:
+            sampling_rate = RX_CONFIG['sampling_rate']
         if polarity is not None and polarity != self.tx.polarity:
             self.tx.polarity = polarity
         self.tx.voltage = vab
-- 
GitLab