Salve a tutti.
Ho da poco realizzato un semplice termostato che, attravero un sensore di temperatura LM35, controlla la temperatura dell'aria di un rack mediante l'utilizzo di due ventole 12v. Il programma in questione abilta o disabilita l'alimentazione alle ventole tramite l'utilizzo di un relè controllato da un transistor e relativo diodo di protezione, in oltre al superato di un certo valore soglia fa lampeggiare un led ed azionare un buzzer per segnalare il malfunzionameto del sistema.
Purtroppo sorgono alcuni problemi/bug nella compilazione ed costruzione di questo progetto e sono i seguenti:
- il valore della temperatura rilevata a volte viene falsato salendo in una rilevazione anche di 5 gradi
- al raggiungimento della temperartura di allarme il suono d'allarme non si ripete cicilicamente (anche se inserito in un loop diverso) fino a quando il delay impostato a 30s (usato per ovviare al problema della temperatura rilevata dal sensore) non fa ripartirre il loop principale
- il valore della misura non sembra essere nemmeno concordante rispetto al valore fornito da altri strumenti ma differente di circa 3 gradi
Ecco il codice installato all'interno della scheda Arduino UNO:
int TEMP;
int TEMPC;
int TEMPINT = 30; // temperatura di intervento
int TEMPALL = 42; //temperatura di allarme
const int TEMPIN = A0; //pin collegato al sensore di temperatura
const int X1PIN = 11; //pin collegato al relè
const int BUZPIN = 13; //pin collegato al buzzer
const int LEDPIN = 12; //pin collegato al led
void setup(){
pinMode(X1PIN, OUTPUT);
pinMode(BUZPIN, OUTPUT);
pinMode(LEDPIN, OUTPUT);
}
void loop(){
TEMP = ( analogRead(TEMPIN)/1024.0)*5000;
TEMPC = TEMP/10;
if(TEMPC <= TEMPINT){
digitalWrite(X1PIN, LOW);
digitalWrite(LEDPIN, LOW);
}
if(TEMPC >= TEMPINT){
digitalWrite(X1PIN, HIGH);
digitalWrite(LEDPIN, HIGH);
}
if(TEMPC >= TEMPALL){
allTEMP();
}
delay(30000);
}
void allTEMP(){
tone(BUZPIN,2048,100);
digitalWrite(LEDPIN, HIGH);
delay(200);
tone(BUZPIN,2048,100);
digitalWrite(LEDPIN, LOW);
delay(200);
tone(BUZPIN,2048,100);
digitalWrite(LEDPIN, HIGH);
delay(200);
tone(BUZPIN,2048,200);
digitalWrite(LEDPIN, LOW);
delay(200);
}
In allegato fornisco lo schema elettrico del termostato dove:
- la tensione VCC di ingresso è di 12v
- la tensione +5V a valle del regolatore viene collegata ad Arduino direttamente al pin 5V
- la massa di tutto il circuito è comune
- le ventole sono collegate alla stessa alimentazione di Arduino ovvero VCC
Spero, grazie all'aiuto del forum, di risolvere questi problemi e riuscire ad implementare nuove funzioni in futuro sia hardware che software.
Ringrazio in anticipo per le risposte fornite
Saluti
schema.pdf (36.4 KB)