r, u, t
This commit is contained in:
@ -19,6 +19,7 @@ const uint8_t MODBUS_ID = 3;
|
|||||||
const uint32_t MODBUS_BAUD = 1200;
|
const uint32_t MODBUS_BAUD = 1200;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ADS1210 ads1210_1;
|
ADS1210 ads1210_1;
|
||||||
ADS1210 ads1210_2;
|
ADS1210 ads1210_2;
|
||||||
LED led;
|
LED led;
|
||||||
@ -32,16 +33,36 @@ struct {
|
|||||||
uint16_t modbusRegisters[2]; // 0, 1
|
uint16_t modbusRegisters[2]; // 0, 1
|
||||||
} adc1Value;
|
} adc1Value;
|
||||||
union {
|
union {
|
||||||
uint32_t in;
|
float in;
|
||||||
uint16_t modbusRegisters[2]; // 2, 3
|
uint16_t modbusRegisters[2]; // 2, 3
|
||||||
} adc2Value;
|
} adc1U;
|
||||||
|
union {
|
||||||
|
float in;
|
||||||
|
uint16_t modbusRegisters[2]; // 4, 5
|
||||||
|
} adc1R;
|
||||||
union {
|
union {
|
||||||
uint32_t in;
|
uint32_t in;
|
||||||
uint16_t modbusRegisters[2]; // 4, 5
|
uint16_t modbusRegisters[2]; // 6, 7
|
||||||
|
} adc2Value;
|
||||||
|
union {
|
||||||
|
float in;
|
||||||
|
uint16_t modbusRegisters[2]; // 8, 9
|
||||||
|
} adc2U;
|
||||||
|
union {
|
||||||
|
float in;
|
||||||
|
uint16_t modbusRegisters[2]; // 10, 11
|
||||||
|
} adc2R;
|
||||||
|
union {
|
||||||
|
uint32_t in;
|
||||||
|
uint16_t modbusRegisters[2]; // 12, 13
|
||||||
} uptimeSeconds;
|
} uptimeSeconds;
|
||||||
} modbusHoldingRegisters;
|
} modbusHoldingRegisters;
|
||||||
|
|
||||||
|
|
||||||
|
float pt1000(float r) {
|
||||||
|
return (r / PT1000_R0 - 1) / PT1000_Coeff;
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
delay(100);
|
delay(100);
|
||||||
led.begin(LED_PIN);
|
led.begin(LED_PIN);
|
||||||
@ -57,9 +78,14 @@ void loop() {
|
|||||||
|
|
||||||
ads1210_1.exec();
|
ads1210_1.exec();
|
||||||
modbusHoldingRegisters.adc1Value.in = ads1210_1.value;
|
modbusHoldingRegisters.adc1Value.in = ads1210_1.value;
|
||||||
|
modbusHoldingRegisters.adc1U.in = ads1210_1.u;
|
||||||
|
modbusHoldingRegisters.adc1R.in = ads1210_1.r;
|
||||||
|
|
||||||
|
|
||||||
ads1210_2.exec();
|
ads1210_2.exec();
|
||||||
modbusHoldingRegisters.adc2Value.in = ads1210_2.value;
|
modbusHoldingRegisters.adc2Value.in = ads1210_2.value;
|
||||||
|
modbusHoldingRegisters.adc2U.in = ads1210_2.u;
|
||||||
|
modbusHoldingRegisters.adc2R.in = ads1210_2.r;
|
||||||
|
|
||||||
if (secondTick.check() == 1) {
|
if (secondTick.check() == 1) {
|
||||||
led.toggle();
|
led.toggle();
|
||||||
|
19
Thermometer.cpp
Normal file
19
Thermometer.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "Thermometer.h"
|
||||||
|
|
||||||
|
using Thermometer;
|
||||||
|
|
||||||
|
Thermometer::Thermometer() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Thermometer::begin() {
|
||||||
|
m_lastSmoothedTemperature = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Thermometer::exec(float r) {
|
||||||
|
temperatureRaw = (r / PT1000_R0 - 1) / PT1000_Coeff;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
28
Thermometer.h
Normal file
28
Thermometer.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef _THERMOMETER_H_
|
||||||
|
#define _THERMOMETER_H_
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const float R_REF = 3000.0;
|
||||||
|
const float PT1000_R0 = 1000.0;
|
||||||
|
const float PT1000_Coeff = 3.85e-3;
|
||||||
|
|
||||||
|
const float ALPHA = 0.1;
|
||||||
|
const float CYCLE_TIME = 1000; // ms
|
||||||
|
};
|
||||||
|
|
||||||
|
class Thermometer {
|
||||||
|
public:
|
||||||
|
Thermometer();
|
||||||
|
void begin();
|
||||||
|
void exec(float r);
|
||||||
|
float temperature;
|
||||||
|
float temperatureRaw;
|
||||||
|
private:
|
||||||
|
float m_lastSmoothedTemperature;
|
||||||
|
float m_smoothedTemperature;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _THERMOMETER_H_
|
@ -76,6 +76,9 @@ void ADS1210::exec() {
|
|||||||
|
|
||||||
value = res.out;
|
value = res.out;
|
||||||
|
|
||||||
|
u = ((float)(value / V_MAX)) * U_REF;
|
||||||
|
r = (((float)(V_MAX / value)) - 1.0) * R_REF;
|
||||||
|
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
// fatal(2);
|
// fatal(2);
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ public:
|
|||||||
void exec();
|
void exec();
|
||||||
|
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
|
float u;
|
||||||
|
float r;
|
||||||
private:
|
private:
|
||||||
// register addresses
|
// register addresses
|
||||||
const uint8_t ADDR_DOR2 = 0x00;
|
const uint8_t ADDR_DOR2 = 0x00;
|
||||||
@ -68,6 +70,11 @@ private:
|
|||||||
const uint8_t INSR_MB0 = 0x20;
|
const uint8_t INSR_MB0 = 0x20;
|
||||||
const uint8_t INSR_ADDR = 0x0f;
|
const uint8_t INSR_ADDR = 0x0f;
|
||||||
|
|
||||||
|
const float U_REF = 2.5;
|
||||||
|
const uint32_t V_MAX = 0x3FFFFF;
|
||||||
|
const float R_REF = 3000.0;
|
||||||
|
|
||||||
|
|
||||||
uint8_t m_csPin;
|
uint8_t m_csPin;
|
||||||
uint8_t m_drdyPin;
|
uint8_t m_drdyPin;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user