From 6d10c0d7f52d53e820b505397ff1ec81e54e5b40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Arensk=C3=B6tter?= Date: Sat, 4 Nov 2023 13:51:51 +0100 Subject: [PATCH] Finetuning ADC performance and bugfix for PID --- src/MAX11270.py | 15 +++++++++------ src/PID.py | 6 +++--- src/test_MAX11270.py | 13 ++++++++++--- src/test_MCP4822.py | 4 ++-- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/MAX11270.py b/src/MAX11270.py index 0d170d7..4705c11 100644 --- a/src/MAX11270.py +++ b/src/MAX11270.py @@ -464,11 +464,14 @@ class MAX11270: ''' Read ADC value in differential mode ''' - def read_differential(self): + def read_differential(self, rate=0b1001, OSR=8): #Triggers conversion - self._conversionMode() - time.sleep(0.001) - adc_code = self.readDataRegister() - return self.value_to_voltage(adc_code) - + voltage = 0 + for i in range(OSR): + self._conversionMode(rate=rate) + time.sleep(0.01) + adc_code = self.readDataRegister() + voltage = voltage + self.value_to_voltage(adc_code) + + return(voltage/OSR) diff --git a/src/PID.py b/src/PID.py index eb7995e..64058ea 100644 --- a/src/PID.py +++ b/src/PID.py @@ -34,7 +34,7 @@ class PID: self.dev_num_adc = dev_num_adc self.channel_num_adc = channel_num_adc self.dev_num_dac = dev_num_dac - self.channel_dac = channel_num_dac + self.channel_num_dac = channel_num_dac self.pid_num = pid_num self.ITerm = 0 @@ -187,10 +187,10 @@ def run(pid_obj, freq, num): pid_obj.setKd(msg[1]) server.send_string('ACK') elif msg[0] == 'set_outmax': - pid_obj.setOutmax(msg[1]) + pid_obj.setOutmax(float(msg[1])) server.send_string('ACK') elif msg[0] == 'set_outmin': - pid_obj.setOutmin(msg[1]) + pid_obj.setOutmin(float(msg[1])) server.send_string('ACK') elif msg[0] == 'get_setpoint': #out_queue.put(pid_obj.getSetpoint() ) diff --git a/src/test_MAX11270.py b/src/test_MAX11270.py index 4d6af34..47a91ea 100644 --- a/src/test_MAX11270.py +++ b/src/test_MAX11270.py @@ -47,15 +47,22 @@ def adc2T(dU): myADC = MAX11270.MAX11270(21,20,19,17,27,22) myDAC = MCP4822.MCP4822(11, 10, 8, 5) -#myDAC.write(0,1) +myDAC.write(1.29,1) #myDAC.write(0,0) print('-Status-') -print(myADC.readStatusRegister(1)) +print(bin(myADC.readStatusRegister(1))) +print(bin(myADC.rate)) + +myADC.setConversion('continous') #myADC.performCalibration('offsetCalibration') #print(myADC.readStatusRegister(1)) print('--------Readout ADC value ---------') for i in range(0,100): + #print(myADC.read_differential()) print(adc2T(myADC.read_differential())) - time.sleep(10) + + myADC.readStatusRegister(1) + print(bin(myADC.rate)) + time.sleep(1) diff --git a/src/test_MCP4822.py b/src/test_MCP4822.py index 5df697b..9e35b65 100644 --- a/src/test_MCP4822.py +++ b/src/test_MCP4822.py @@ -3,6 +3,6 @@ import time myDAC = MCP4822.MCP4822(11, 10, 8, 5) myDAC.write(1,0) -myDAC.write(0,1) +myDAC.write(1,1) -#time.sleep(10) \ No newline at end of file +time.sleep(10)