126 lines
3.4 KiB
C++
126 lines
3.4 KiB
C++
#include "ThermometerPro.h"
|
|
|
|
#include "AD7190.h"
|
|
#include "cmd.h"
|
|
#include "test.h"
|
|
#include "uptime.h"
|
|
|
|
|
|
static CmdServer cmdServer(&Serial);
|
|
static TestCmd testCmd;
|
|
static Uptime uptime;
|
|
|
|
|
|
void setup() {
|
|
cmdServer.begin();
|
|
testCmd.registerYourself(&cmdServer);
|
|
uptime.begin(&cmdServer);
|
|
|
|
Serial.begin(9600);
|
|
|
|
delay(5000);
|
|
Serial.print("Hello world\n");
|
|
|
|
unsigned char ad7190Status = AD7190_Init();
|
|
Serial.print(String("ad7190Status: ") + ad7190Status + "\n");
|
|
|
|
AD7190_RangeSetup(1, AD7190_CONF_GAIN_1);
|
|
|
|
AD7190_Calibrate(AD7190_MODE_CAL_INT_ZERO, AD7190_CH_AIN4P_AINCOM);
|
|
AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN4P_AINCOM);
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsigned long T() {
|
|
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() {
|
|
|
|
cmdServer.exec();
|
|
uptime.exec();
|
|
|
|
|
|
Serial.print("Tick\n");
|
|
|
|
AD7190_ChannelSelect(AD7190_CH_AIN4P_AINCOM);
|
|
unsigned long n4 = AD7190_SingleConversion();
|
|
n4 &= 0xffff00;
|
|
AD7190_ChannelSelect(AD7190_CH_AIN3P_AINCOM);
|
|
unsigned long n3x = AD7190_SingleConversion();
|
|
n3x &= 0xffff00;
|
|
AD7190_ChannelSelect(AD7190_CH_AIN2P_AINCOM);
|
|
unsigned long n2x = AD7190_SingleConversion();
|
|
n2x &= 0xffff00;
|
|
AD7190_ChannelSelect(AD7190_CH_AIN1P_AINCOM);
|
|
unsigned long n1x = AD7190_SingleConversion();
|
|
n1x &= 0xffff00;
|
|
|
|
|
|
unsigned long n_max = 0xffffff;
|
|
float r_ref = 6000.0;
|
|
|
|
|
|
float r_m4 = (((float)n4) / ((float)n_max)) * r_ref * 1.0010705;
|
|
float t4 = pt1000(r_m4);
|
|
Serial.print(n4); Serial.print(", "); Serial.print(r_m4, 4); Serial.print(", "); Serial.print(t4, 2);
|
|
Serial.println();
|
|
|
|
unsigned long n3 = n3x - n4;
|
|
float r_m3 = (((float)n3) / ((float)n_max)) * r_ref * 1.000794;
|
|
float t3 = pt1000(r_m3);
|
|
Serial.print(n3x); Serial.print(", "); Serial.print(n3); Serial.print(", "); Serial.print(r_m3, 4); Serial.print(", "); Serial.print(t3, 2);
|
|
// float d = r_m4 - r_m3;
|
|
// Serial.print(", "); Serial.print(d, 2);
|
|
// unsigned long dd = n4 - n3;
|
|
// Serial.print(", "); Serial.print(dd);
|
|
Serial.println();
|
|
|
|
unsigned long n2 = n2x - n3x;
|
|
float r_m2 = (((float)n2) / ((float)n_max)) * r_ref * 1.001804;
|
|
float t2 = pt1000(r_m2);
|
|
Serial.print(n2x); Serial.print(", "); Serial.print(n2); Serial.print(", "); Serial.print(r_m2, 4); Serial.print(", "); Serial.print(t2, 2);
|
|
// d = r_m3 - r_m2;
|
|
// Serial.print(", "); Serial.print(d, 2);
|
|
// dd = n3 - n2;
|
|
// Serial.print(", "); Serial.print(dd);
|
|
Serial.println();
|
|
|
|
unsigned long n1 = n1x - n2x;
|
|
float r_m1 = (((float)n1) / ((float)n_max)) * r_ref * 1.002999;
|
|
float t1 = pt1000(r_m1);
|
|
Serial.print(n1x); Serial.print(", "); Serial.print(n1); Serial.print(", "); Serial.print(r_m1, 4); Serial.print(", "); Serial.print(t1, 2);
|
|
// d = r_m2 - r_m1;
|
|
// Serial.print(", "); Serial.print(d, 2);
|
|
// dd = n2 - n1;
|
|
// Serial.print(", "); Serial.print(dd);
|
|
Serial.println();
|
|
Serial.println();
|
|
|
|
|
|
delay(1000);
|
|
|
|
}
|