From e8396fee968e39bafded900de6e83c000a4d59e3 Mon Sep 17 00:00:00 2001 From: jesgome <70040018+jesgome@users.noreply.github.com> Date: Fri, 22 Apr 2022 16:36:18 -0700 Subject: [PATCH 1/4] Update ADS1256.py Added differential mode functionality --- RaspberryPI/AD-DA/python/ADS1256.py | 49 +++++++++++------------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/RaspberryPI/AD-DA/python/ADS1256.py b/RaspberryPI/AD-DA/python/ADS1256.py index f5791f1..37e28dc 100644 --- a/RaspberryPI/AD-DA/python/ADS1256.py +++ b/RaspberryPI/AD-DA/python/ADS1256.py @@ -1,10 +1,6 @@ import config import RPi.GPIO as GPIO - -ScanMode = 0 - - # gain channel ADS1256_GAIN_E = {'ADS1256_GAIN_1' : 0, # GAIN 1 'ADS1256_GAIN_2' : 1, # GAIN 2 @@ -129,27 +125,21 @@ def ADS1256_ConfigADC(self, gain, drate): config.digital_write(self.cs_pin, GPIO.HIGH)#cs 1 config.delay_ms(1) - + def ADS1256_SetMode(self,Mode): + self.ScanMode=Mode def ADS1256_SetChannal(self, Channal): - if Channal > 7: + if Channal>7: return 0 - self.ADS1256_WriteReg(REG_E['REG_MUX'], (Channal<<4) | (1<<3)) + self.ADS1256_WriteReg(REG_E['REG_MUX'],(Channal<<4)|(1<<3)) def ADS1256_SetDiffChannal(self, Channal): - if Channal == 0: - self.ADS1256_WriteReg(REG_E['REG_MUX'], (0 << 4) | 1) #DiffChannal AIN0-AIN1 - elif Channal == 1: - self.ADS1256_WriteReg(REG_E['REG_MUX'], (2 << 4) | 3) #DiffChannal AIN2-AIN3 - elif Channal == 2: - self.ADS1256_WriteReg(REG_E['REG_MUX'], (4 << 4) | 5) #DiffChannal AIN4-AIN5 - elif Channal == 3: - self.ADS1256_WriteReg(REG_E['REG_MUX'], (6 << 4) | 7) #DiffChannal AIN6-AIN7 - - def ADS1256_SetMode(self, Mode): - ScanMode = Mode + if Channal>3: + return 0 + self.ADS1256_WriteReg(REG_E['REG_MUX'],((2*Channal)<<4)|(2*Channal+1)) #DiffChannal set def ADS1256_init(self): + self.ADS1256_SetMode(0) if (config.module_init() != 0): return -1 self.ADS1256_reset() @@ -166,7 +156,6 @@ def ADS1256_Read_ADC_Data(self): self.ADS1256_WaitDRDY() config.digital_write(self.cs_pin, GPIO.LOW)#cs 0 config.spi_writebyte([CMD['CMD_RDATA']]) - # config.delay_ms(10) buf = config.spi_readbytes(3) config.digital_write(self.cs_pin, GPIO.HIGH)#cs 1 @@ -178,30 +167,30 @@ def ADS1256_Read_ADC_Data(self): return read def ADS1256_GetChannalValue(self, Channel): - if(ScanMode == 0):# 0 Single-ended input 8 channel1 Differential input 4 channe - if(Channel>=8): + if self.ScanMode == 0:# 0 Single-ended input 8 channel 1 Differential input 4 channel + if Channel>7: return 0 self.ADS1256_SetChannal(Channel) self.ADS1256_WriteCmd(CMD['CMD_SYNC']) - # config.delay_ms(10) self.ADS1256_WriteCmd(CMD['CMD_WAKEUP']) - # config.delay_ms(200) Value = self.ADS1256_Read_ADC_Data() else: - if(Channel>=4): + if(Channel>3): return 0 self.ADS1256_SetDiffChannal(Channel) self.ADS1256_WriteCmd(CMD['CMD_SYNC']) - # config.delay_ms(10) self.ADS1256_WriteCmd(CMD['CMD_WAKEUP']) - # config.delay_ms(10) Value = self.ADS1256_Read_ADC_Data() return Value def ADS1256_GetAll(self): - ADC_Value = [0,0,0,0,0,0,0,0] - for i in range(0,8,1): - ADC_Value[i] = self.ADS1256_GetChannalValue(i) + if self.ScanMode==0: + ADC_Value = [0,0,0,0,0,0,0,0] + for i in range(0,8,1): + ADC_Value[i] = self.ADS1256_GetChannalValue(i) + else: + ADC_Value=[0,0,0,0] + for i in range(0,4,1): + ADC_Value[i]=self.ADS1256_GetChannalValue(i) return ADC_Value ### END OF FILE ### - From 1f5f39f5d95b6ea100eced964bc663df217fa1f2 Mon Sep 17 00:00:00 2001 From: jesgome <70040018+jesgome@users.noreply.github.com> Date: Fri, 22 Apr 2022 16:42:27 -0700 Subject: [PATCH 2/4] Update main.py Update allows compiling with python3, removes "import time" module from prior artifacts, fixes 5V for LEDs, and sets LED voltage to 0 after completing run to ensure LEDs turn off. --- RaspberryPI/AD-DA/python/main.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/RaspberryPI/AD-DA/python/main.py b/RaspberryPI/AD-DA/python/main.py index 11ebc73..de58ad8 100644 --- a/RaspberryPI/AD-DA/python/main.py +++ b/RaspberryPI/AD-DA/python/main.py @@ -1,20 +1,18 @@ -#!/usr/bin/python +#!/usr/bin/python3 # -*- coding:utf-8 -*- -import time import ADS1256 import DAC8532 import RPi.GPIO as GPIO +ADC = ADS1256.ADS1256() +DAC = DAC8532.DAC8532() +ADC.ADS1256_init() try: - ADC = ADS1256.ADS1256() - DAC = DAC8532.DAC8532() - ADC.ADS1256_init() - - DAC.DAC8532_Out_Voltage(0x30, 3) - DAC.DAC8532_Out_Voltage(0x34, 3) + while(1): + ADC_Value = ADC.ADS1256_GetAll() print ("0 ADC = %lf"%(ADC_Value[0]*5.0/0x7fffff)) print ("1 ADC = %lf"%(ADC_Value[1]*5.0/0x7fffff)) @@ -29,9 +27,12 @@ print ("DAC :",temp) print ("\33[10A") DAC.DAC8532_Out_Voltage(DAC8532.channel_A, temp) - DAC.DAC8532_Out_Voltage(DAC8532.channel_B, 3.3 - temp) + DAC.DAC8532_Out_Voltage(DAC8532.channel_B, 5.0 - temp) + +except: -except : + DAC.DAC8532_Out_Voltage(DAC8532.channel_A,0) + DAC.DAC8532_Out_Voltage(DAC8532.channel_B,0) GPIO.cleanup() print ("\r\nProgram end ") exit() From 910396227d2db6ed918e371224ce3a9235ef2f76 Mon Sep 17 00:00:00 2001 From: jesgome <70040018+jesgome@users.noreply.github.com> Date: Fri, 22 Apr 2022 23:30:11 -0700 Subject: [PATCH 3/4] Update DAC8532.py Adjust max reference voltage value for full 5V write capability. --- RaspberryPI/AD-DA/python/DAC8532.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RaspberryPI/AD-DA/python/DAC8532.py b/RaspberryPI/AD-DA/python/DAC8532.py index 70dc306..4f5a04b 100644 --- a/RaspberryPI/AD-DA/python/DAC8532.py +++ b/RaspberryPI/AD-DA/python/DAC8532.py @@ -7,7 +7,7 @@ DAC_Value_MAX = 65535 -DAC_VREF = 3.3 +DAC_VREF = 5.0 class DAC8532: def __init__(self): @@ -26,4 +26,3 @@ def DAC8532_Out_Voltage(self, Channel, Voltage): self.DAC8532_Write_Data(Channel, temp) ### END OF FILE ### - From 099afe847243cc42780e9dcc4c4664c68ed61293 Mon Sep 17 00:00:00 2001 From: jesgome <70040018+jesgome@users.noreply.github.com> Date: Fri, 22 Apr 2022 23:37:38 -0700 Subject: [PATCH 4/4] Update DAC8532.py Changed reference voltage value to 5V for max writing capability. Removed extra config module reference as unnecessary. --- RaspberryPI/AD-DA/python/DAC8532.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/RaspberryPI/AD-DA/python/DAC8532.py b/RaspberryPI/AD-DA/python/DAC8532.py index 4f5a04b..c3d260b 100644 --- a/RaspberryPI/AD-DA/python/DAC8532.py +++ b/RaspberryPI/AD-DA/python/DAC8532.py @@ -12,9 +12,7 @@ class DAC8532: def __init__(self): self.cs_pin = config.CS_DAC_PIN - # config.module_init() - def DAC8532_Write_Data(self, Channel, Data): config.digital_write(self.cs_pin, GPIO.LOW)#cs 0 config.spi_writebyte([Channel, Data >> 8, Data & 0xff])