From bc8a9023aa54fcd67a57518aeca406a6052eefab Mon Sep 17 00:00:00 2001 From: hg Date: Thu, 20 Feb 2014 23:33:22 +0100 Subject: [PATCH] works --- AD7190.cpp | 32 ++---------------------- ThermometerPro.cpp | 62 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 38 deletions(-) diff --git a/AD7190.cpp b/AD7190.cpp index 10a2420..b42b138 100644 --- a/AD7190.cpp +++ b/AD7190.cpp @@ -115,12 +115,6 @@ void AD7190_SetRegisterValue(unsigned char registerAddress, unsigned char bytesNumber, unsigned char modifyCS) { -// Serial.print("set: "); -// Serial.print(registerAddress, 16); Serial.print(", "); -// Serial.print(registerValue, 16); Serial.print(", "); -// Serial.print(bytesNumber); -// Serial.println(); - unsigned char writeCommand[5] = {0, 0, 0, 0, 0}; unsigned char* dataPointer = (unsigned char*)®isterValue; unsigned char bytesNr = bytesNumber; @@ -149,11 +143,7 @@ unsigned long AD7190_GetRegisterValue(unsigned char registerAddress, unsigned char bytesNumber, unsigned char modifyCS) { -// Serial.print("get: "); -// Serial.print(registerAddress, 16); Serial.print(", "); -// Serial.print(bytesNumber); - - unsigned char registerWord[5] = {0, 0, 0, 0, 0}; + unsigned char registerWord[5] = {0, 0, 0, 0, 0}; unsigned long buffer = 0x0; unsigned char i = 0; @@ -165,9 +155,6 @@ unsigned long AD7190_GetRegisterValue(unsigned char registerAddress, buffer = (buffer << 8) + registerWord[i]; } -// Serial.print(buffer, 16); Serial.print(", "); -// Serial.println(); - return buffer; } @@ -334,30 +321,15 @@ unsigned long AD7190_SingleConversion(void) unsigned long command = 0x0; unsigned long regData = 0x0; -// command = (((1L) & 0x7) << 21); -// Serial.print("Command1: "); -// Serial.println(command, 16); -// command |= (((2L) & 0x3) << 18); -// Serial.print("Command2: "); -// Serial.println(command, 16); -// command |= ((0x060) & 0x3FF); -// Serial.print("Command3: "); -// Serial.println(command, 16); - command = AD7190_MODE_SEL(AD7190_MODE_SINGLE) | - AD7190_MODE_CLKSRC(AD7190_CLK_INT_CO) | + AD7190_MODE_CLKSRC(AD7190_CLK_INT) | AD7190_MODE_RATE(0x060); - //Serial.print("Command: "); - //Serial.println(command, 16); - //ADI_PART_CS_LOW; SPI_Enable(AD7190_SLAVE_ID); AD7190_SetRegisterValue(AD7190_REG_MODE, command, 3, 0); // CS is not modified. AD7190_WaitRdyGoLow(); regData = AD7190_GetRegisterValue(AD7190_REG_DATA, 3, 0); - //Serial.print("result: "); - //Serial.println(regData, 16); //ADI_PART_CS_HIGH; SPI_Disable(AD7190_SLAVE_ID); diff --git a/ThermometerPro.cpp b/ThermometerPro.cpp index 07f9018..8db6eec 100644 --- a/ThermometerPro.cpp +++ b/ThermometerPro.cpp @@ -12,27 +12,73 @@ void setup() { Serial.print(String("ad7190Status: ") + ad7190Status + "\n"); - delay(1000); - AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_TEMP_SENSOR); + AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_AIN4P_AINCOM); + AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN4P_AINCOM); - delay(1000); - AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_TEMP_SENSOR); + AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_AIN3P_AINCOM); + AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN3P_AINCOM); + AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_AIN2P_AINCOM); + AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN2P_AINCOM); + + AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_AIN1P_AINCOM); + AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN1P_AINCOM); + + AD7190_RangeSetup(1, AD7190_CONF_GAIN_1); } unsigned long T() { - AD7190_RangeSetup(0, AD7190_CONF_GAIN_1); - AD7190_ChannelSelect(AD7190_CH_TEMP_SENSOR); + AD7190_ChannelSelect(AD7190_CH_AIN4P_AINCOM); unsigned long t = AD7190_SingleConversion(); return t; } +float pt1000(float r) { + const float PT1000_R0 = 1000.0; + const float PT1000_Coeff = 3.85e-3; + float t = (r / PT1000_R0 - 1) / PT1000_Coeff; + return t; +} + + void loop() { Serial.print("Tick\n"); - unsigned long t = AD7190_TemperatureRead(); - Serial.println(t); + AD7190_ChannelSelect(AD7190_CH_AIN4P_AINCOM); + unsigned long n4 = AD7190_SingleConversion(); + AD7190_ChannelSelect(AD7190_CH_AIN3P_AINCOM); + unsigned long n3x = AD7190_SingleConversion(); + AD7190_ChannelSelect(AD7190_CH_AIN2P_AINCOM); + unsigned long n2x = AD7190_SingleConversion(); + AD7190_ChannelSelect(AD7190_CH_AIN1P_AINCOM); + unsigned long n1x = AD7190_SingleConversion(); + + + + + unsigned long n_max = 0xffffff; + float r_ref = 6000.0; + + float r_m4 = (((float)n4) / ((float)n_max)) * r_ref; + float t4 = pt1000(r_m4); + Serial.print(n4); Serial.print(", "); Serial.print(r_m4, 4); Serial.print(", "); Serial.println(t4, 2); + + unsigned long n3 = n3x - n4; + float r_m3 = (((float)n3) / ((float)n_max)) * r_ref; + float t3 = pt1000(r_m3); + Serial.print(n3x); Serial.print(", "); Serial.print(n3); Serial.print(", "); Serial.print(r_m3, 4); Serial.print(", "); Serial.println(t3, 2); + + unsigned long n2 = n2x - n3x; + float r_m2 = (((float)n2) / ((float)n_max)) * r_ref; + float t2 = pt1000(r_m2); + Serial.print(n2x); Serial.print(", "); Serial.print(n2); Serial.print(", "); Serial.print(r_m2, 4); Serial.print(", "); Serial.println(t2, 2); + + unsigned long n1 = n1x - n2x; + float r_m1 = (((float)n1) / ((float)n_max)) * r_ref; + float t1 = pt1000(r_m1); + Serial.print(n1x); Serial.print(", "); Serial.print(n1); Serial.print(", "); Serial.print(r_m1, 4); Serial.print(", "); Serial.println(t1, 2); + delay(1000); }