/*thermistor parameters:
* RT0: 10 000 Ω
* B: 3977 K +- 0.75%
* T0: 25 C
* +- 5%
*/
//These values are in the datasheet
#define RT0 10000 // Ω
#define B 3977 // K
//--------------------------------------
#define VCC 5 //Supply voltage
#define R 10000 //R=10KΩ
//--------------------------------------
int Tsp=30; // set point
int deltaT=2; // errore tollerato
int pinRele= 2;
int statoLamp= 0;
//Variables
float RT, VR, ln, TX, T0, VRT;
void setup() {
Serial.begin(9600);
pinMode(pinRele, OUTPUT);
T0 = 25 + 273.15;
}
void loop() {
VRT = analogRead(A0);
VRT = (5.00 / 1023.00) * VRT; //Conversion to voltage
VR = VCC - VRT;
RT = VRT / (VR / R); //Resistance of RT
ln = log(RT / RT0);
TX =1/(ln/ B+1/T0); //Temperature from thermistor in K
TX = TX - 273.15; //Conversion to °C
Serial.print("Temperatura: ");
Serial.print(TX);
Serial.println(" ℃");
if (TX<(Tsp-deltaT/2)) {
digitalWrite(pinRele, HIGH);
Serial.println("ACCESO");
statoLamp = 1;
}
else if ((TX>(Tsp+deltaT/2)))
{
digitalWrite(pinRele, LOW);
Serial.println("SPENTO");
statoLamp = 0;
}
else {
if (statoLamp==0) {Serial.println("MANTENGO SPENTO");}
else {Serial.println("MANTENGO ACCESO");}
}
delay(1000);
}