calibration started
This commit is contained in:
@ -18,10 +18,15 @@ const uint8_t ADC_1_RDY_PIN = 7;
|
||||
const uint8_t ADC_2_CS_PIN = 2;
|
||||
const uint8_t ADC_2_RDY_PIN = 3;
|
||||
|
||||
const uint8_t CAL_ENABLE = ..;
|
||||
const uint8_t CAL_OFFSET_ENABLE = ..;
|
||||
const uint8_t CAL_FACTOR_ENABLE = ..;
|
||||
|
||||
const uint8_t MODBUS_TX_ENABLE_PIN = 6;
|
||||
const uint8_t MODBUS_ID = 3;
|
||||
const uint32_t MODBUS_BAUD = 1200;
|
||||
|
||||
const uint16_t CALIBRATION_CYCLES = 100;
|
||||
|
||||
const uint8_t NUM_OF_CHANNELS = 2;
|
||||
|
||||
@ -29,7 +34,11 @@ ADS1210 ads1210[NUM_OF_CHANNELS];
|
||||
Thermometer thermometer[NUM_OF_CHANNELS];
|
||||
LED led;
|
||||
Metro secondTick = Metro(1000);
|
||||
uint32_t uptimeSeconds;
|
||||
uint32_t uptimeSeconds = 0;
|
||||
bool calibrationDone = false;
|
||||
uint16_t calibrationCycleCnt = 0;
|
||||
float calibrationValueSum[NUM_OF_CHANNELS];
|
||||
|
||||
|
||||
|
||||
struct {
|
||||
@ -84,44 +93,41 @@ void setup() {
|
||||
thermometer[1].begin(initializeConfig, Config::THERMO2START);
|
||||
modbus_configure(&Serial, MODBUS_BAUD, SERIAL_8N2, MODBUS_ID, MODBUS_TX_ENABLE_PIN,
|
||||
sizeof(modbusHoldingRegisters), (uint16_t*)(&modbusHoldingRegisters));
|
||||
uptimeSeconds = 0;
|
||||
|
||||
for (uint8_t i = 0; i < NUM_OF_CHANNELS; i++) {
|
||||
modbusHoldingRegisters.channelVariables[i].calOffset.in = ads1210[i].calOffset;
|
||||
modbusHoldingRegisters.channelVariables[i].calFactor.in = ads1210[i].calFactor;
|
||||
modbusHoldingRegisters.channelVariables[i].alpha.in = thermometer[i].alpha;
|
||||
modbusHoldingRegisters.channelVariables[i].calOffset.in = ads1210[i].getCalOffset();
|
||||
modbusHoldingRegisters.channelVariables[i].calFactor.in = ads1210[i].getCalFactor();
|
||||
modbusHoldingRegisters.channelVariables[i].alpha.in = thermometer[i].getAlpha();
|
||||
calibrationValueSum[i] = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for (uint8_t i = 0; i < NUM_OF_CHANNELS; i++) {
|
||||
ads1210[i].exec();
|
||||
modbusHoldingRegisters.channelVariables[i].adcValue.in = ads1210[i].value;
|
||||
modbusHoldingRegisters.channelVariables[i].adcU.in = ads1210[i].u;
|
||||
modbusHoldingRegisters.channelVariables[i].adcR.in = ads1210[i].r;
|
||||
modbusHoldingRegisters.channelVariables[i].adcValue.in = ads1210[i].getValue();
|
||||
modbusHoldingRegisters.channelVariables[i].adcU.in = ads1210[i].getU();
|
||||
modbusHoldingRegisters.channelVariables[i].adcR.in = ads1210[i].getR();
|
||||
|
||||
thermometer[i].exec(ads1210[i].r);
|
||||
modbusHoldingRegisters.channelVariables[i].temperatureRaw.in = thermometer[i].temperatureRaw;
|
||||
modbusHoldingRegisters.channelVariables[i].temperature.in = thermometer[i].temperature;
|
||||
thermometer[i].exec(ads1210[i].getR());
|
||||
modbusHoldingRegisters.channelVariables[i].temperatureRaw.in = thermometer[i].getTemperatureRaw();
|
||||
modbusHoldingRegisters.channelVariables[i].temperature.in = thermometer[i].getTemperature();
|
||||
|
||||
if (modbusHoldingRegisters.channelVariables[i].calOffset.in != ads1210[i].calOffset) {
|
||||
ads1210[i].calOffset = modbusHoldingRegisters.channelVariables[i].calOffset.in;
|
||||
}
|
||||
if (modbusHoldingRegisters.channelVariables[i].calFactor.in != ads1210[i].calFactor) {
|
||||
ads1210[i].calOffset = modbusHoldingRegisters.channelVariables[i].calFactor.in;
|
||||
}
|
||||
if (modbusHoldingRegisters.channelVariables[i].alpha.in != thermometer[i].alpha) {
|
||||
thermometer[i].alpha = modbusHoldingRegisters.channelVariables[i].alpha.in;
|
||||
if (modbusHoldingRegisters.channelVariables[i].alpha.in != thermometer[i].getAlpha()) {
|
||||
thermometer[i].setAlpha(modbusHoldingRegisters.channelVariables[i].alpha.in);
|
||||
}
|
||||
}
|
||||
|
||||
modbus_update();
|
||||
|
||||
|
||||
if (((digitalRead(CAL_ENABLE) != 0) && (! calibrationDone)) {
|
||||
led.toggle();
|
||||
calibrationCycleCnt++;
|
||||
}
|
||||
|
||||
if (secondTick.check() == 1) {
|
||||
if ((digitalRead(CAL_ENABLE) == 0) && (secondTick.check() == 1)) {
|
||||
led.toggle();
|
||||
uptimeSeconds++;
|
||||
modbusHoldingRegisters.uptimeSeconds.in = uptimeSeconds;
|
||||
}
|
||||
|
||||
modbus_update();
|
||||
}
|
||||
|
Reference in New Issue
Block a user