From c2ff35e0b02f2b0d4663750e95935a3a14a6d1a1 Mon Sep 17 00:00:00 2001
From: esarrey <eliott.sarrey@gmail.com>
Date: Tue, 6 Jun 2023 16:15:57 +0200
Subject: [PATCH] Fix voltage aquisition bug

---
 src/classes/dac.py        | 12 +++++++++---
 src/procedures/b_sweep.py |  4 +++-
 src/procedures/x_sweep.py |  2 +-
 src/procedures/y_sweep.py |  2 +-
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/classes/dac.py b/src/classes/dac.py
index 63bfa2a..5f1eb2a 100644
--- a/src/classes/dac.py
+++ b/src/classes/dac.py
@@ -8,6 +8,7 @@ class DAC():
     def __init__(self, addr):
         self.type = addr[:2]
         self.setup = False
+        self.addr = addr
         
         if self.type=="ao":
             try:
@@ -23,16 +24,21 @@ class DAC():
                 log.info("Seems like the DAC is inaccessible")
         
     def read(self):
+        output = -1
         if self.setup:
             if self.type=="ai":
-                return nidaqmx.Task().read()
+                with nidaqmx.Task() as task:
+                    task.ai_channels.add_ai_voltage_chan("Dev1/"+self.addr)
+                    output = task.read()
             else:
                 print("Cannot read from a analog output")
-        return -1
+        return output
         
     def write(self, value):
         if self.setup:
             if self.type=="ao":
-                nidaqmx.Task().write(value)
+                with nidaqmx.Task() as task:
+                    task.ao_channels.add_ao_voltage_chan("Dev1/"+self.addr)
+                    task.write(value)
             else:
                 print("Cannot write to a analog input")
\ No newline at end of file
diff --git a/src/procedures/b_sweep.py b/src/procedures/b_sweep.py
index 56bd29e..e0b08b2 100644
--- a/src/procedures/b_sweep.py
+++ b/src/procedures/b_sweep.py
@@ -53,12 +53,14 @@ class B_Sweep(Procedure):
             
             field.write(b_values[i])
 
-            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)))
+            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)), dtype='float64')
 
             for step in range(len(average_voltage)):
                 average_voltage[step] = voltage.read()
                 sleep(1/self.freq)
 
+            print(average_voltage)
+
             data = {
                 'Magnetic Field [V]': b_values[i],
                 'Voltage': np.mean(average_voltage)
diff --git a/src/procedures/x_sweep.py b/src/procedures/x_sweep.py
index 29a3046..74b059b 100644
--- a/src/procedures/x_sweep.py
+++ b/src/procedures/x_sweep.py
@@ -52,7 +52,7 @@ class X_Sweep(Procedure):
         for i in range(len(x_positions)):
             stage.move_x_to(x_positions[i])
 
-            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)))
+            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)), dtype='float64')
 
             for step in range(len(average_voltage)):
                 average_voltage[step] = voltage.read()
diff --git a/src/procedures/y_sweep.py b/src/procedures/y_sweep.py
index 4e7b1ce..60628b4 100644
--- a/src/procedures/y_sweep.py
+++ b/src/procedures/y_sweep.py
@@ -52,7 +52,7 @@ class Y_Sweep(Procedure):
         for i in range(len(y_positions)):
             stage.move_y_to(y_positions[i])
 
-            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)))
+            average_voltage = np.arange(0, int(round(self.acq_time * self.freq)), dtype='float64')
 
             for step in range(len(average_voltage)):
                 average_voltage[step] = voltage.read()
-- 
GitLab