Dopo mesi che avevo il termostato della mia caldaia rotto mi son deciso a prendere un Arduino,almeno la programmo come voglio,la accendo e spengo via Internet e posso avere più sensori di temperatura nelle diverse camere (mi posso pure accorgere se ho lasciato un finestra aperta).
I componenti di questo nuovo termostato sono:
- un Arduino dueminlanove
- un sensore di temperatura lm35
- un relè da 5v
- un alimentatore per mantenere l’arduino alimentato nel caso si spegnesse il server
- un led che mi segnala lo stato del relè
praticamente il led indica quando la caldaia è in fuzione cioè il relè la accende e contemporaneamente alimenta il led. Gist’appunto ho sviluppato un programmino in Lazarus per Linux che tramite la seriale permette di visulizzare lo stato,e mi son accorto che l’Arduino ogni volta che ci si connette con la seriale (Seriale su cavo USB) si resetta,quindi i valori/parametri che mi servo come impostazione (Tipo la temperatura a cui far partire e fermare la caldaia) devo in qualche modo renderli permanenti,per questo sull’arduino è montata una EEPROM che permette lo store 30Kbytes di dati statici,e funziona come un array (ovviamente ad accesso diretto).
Detto questo è veramente bellissimo,l’LM35 è sensibilissimo,e la documentazione è facilmente reperibile dal sito della National Semiconductors.
Lo so ,lo so come elettronico son un cane,non ho nemmeno messo una resistenza di abbattimento ne sul sensore di temperatura ne sul led.. ma la smania di provare la cosa al volo mi ha indotto in questa scelta scellerata di montare tutto in un minuto. Cmq sia funziona da ieri alla grande.
Il programma che gira sull’arduino al momento è banale,praticamente permette di fare le seguenti cose:
- Si può definire la temperatura di soglia per accendere il riscaldamento da seriale
- Il pc sempre via seriale riceve due dati:la temperatura di soglia attuale e la temperature ambiente attiva
- Se la temperatura di reale è minore di quella di soglia fa scattare il relè
il codice del programma sull’arduino:
- #include <EEPROM.h>
- // These constants won’t change. They’re used to give names
- // to the pins used:
- float tempC;
- int TempC_Decimal = 0;
- int tempPin = 0;
- int DigitalPin = 13;
- int TemperaturaMinima = 22;
- int value = 0;
- int sensorValue = 0; // value read from the pot
- int outputValue = 0; // value output to the PWM (analog out)
- void setup() {
- // initialize serial communications at 9600 bps:
- Serial.begin(9600);
- value = EEPROM.read(0);
- if (value == 1)
- {
- TemperaturaMinima = EEPROM.read(1);
- }
- }
- void loop() {
- if (Serial.available() >0)
- {
- // read the incoming byte:
- TemperaturaMinima = Serial.read();
- EEPROM.write(0,1);
- EEPROM.write(1,TemperaturaMinima);
- }
- tempC = analogRead(tempPin); //read the value from the sensor
- tempC = (5.0 * tempC * 100.0)/1024.0; //convert the analog data to temperature
- TempC_Decimal = (tempC –((byte)tempC)) * 100;
- Serial.print((byte)tempC); //send the data to the computer
- Serial.print((byte)TempC_Decimal); //send the data to the computer
- Serial.println((byte)TemperaturaMinima);
- if (tempC <TemperaturaMinima)
- {
- digitalWrite(DigitalPin,HIGH); // set the LED on
- delay(4000); // wait for a second
- }
- if (tempC >(TemperaturaMinima + 1))
- {
- digitalWrite(DigitalPin,LOW); // set the LED on
- delay(4000);
- }
- delay(200);
- }
il programma invece fatto con lazarus si presenta come segue:
mentre i sorgenti del programma si possono scaricare dal seguente link:
Arduino_Lazarus.zip (3.1 MiB,338 hits)
a presto
ivan




Salve Ivan,
congratulazioni per l’applicazione,la ritengo molto utile!
Vorrei un chiarimento in merito alla conversione della temperatura dal valore Analogico a quello in gradi Celsius.
[Reply]
ivan Reply:
22 September 2010 at 1:33 PM
Ciao Leonardo,
il valore dell’LM35 per le temperature positive è proporzionale alla sua tensione di alimentazione ,che nel caso dello schema nell’articolo è di 5V quindi torna dei valori di tensione compresi da 0 a 5V per le temperature positive mentre inverte la polarità per quelle negative il tutto facendo una proporzione con la temperatura minima e massima esprimibile dal trasduttore. Comunque trovi tutto documentato sul sito della national Semiconductors al link http://www.national.com/ds/LM/LM35.pdf . Scusa per il ritardo nella risposta ma in ferie non volevo vedere un computer nemmeno di striscio se non per guardare il meteo.
Al momento siamo tutti impegnati con lavori / progetti / casini,quindi se migliori il progetto magari facendo anche uno schema elettrico meno banale del mio ad esempio con le giuste resistenze di abbattimento o magari che gestisca le temperature negative saremmo felici di pubblicare il tuo contributo (citando ovviamente l’autore).
a presto
ivan
[Reply]
Ciao a Tutti…
Dovrei fare un mini circuito elettrico collegando tra loro arduino Uno + sensore di CO2 + striscia di led
Il problema è come collegare il sensore ad Arduino?????
Il sensore acquistato è questo http://tecnosens.it/products/sensors/s1–sensori-di-gas/s1–sensori-a-semiconduttore/s25–sensori-per-anidride-carbonica-(co2)/s16–cdm4161.aspx
Ho acquistato anche la breadboard ma non so come collegarci il sensore.
Qualcuno mi può aiutare con uno schema e alcune indicazioni?
Alla fine devo ottenere un mini-circuito che quando rileva una elevata concentrazione di CO2 mi fa accendere la striscia di led…Ho acquistato anche la striscia di led,la batteria per alimentare la striscia di led e il relè…
Come posso fare?
[Reply]
ivan Reply:
15 November 2010 at 11:40 AM
Ciao Riccardo,
ho guardato la specifica del sensore,il collegamento è abbastanza semplice ,per l’alimentazione puoi usare un’uscita digitale (che appunto è a 5V) mentre il segnale di ritorno lo leggi dalla porta analogica,il valore tornato che puoi usare è un valore numerico compreso da 0 a 1000 che è proporzionale alla lettura da uno degli ingressi analogici. Attenzione però che il tuo sensore ritorna valori da 0V a 4V il che significa che devi fare le dovute proporzioni.
Spero di esserti stato utile,se nel caso hai ancora problemi e sei di milano magari ci possiamo vedere.
a presto
ivan
[Reply]
Mah…..ammetto che non ero molto informato e sono abbastanza stupito.
[Reply]
Ciao!
Ho scovato questo post in rete cercando informazioni per comunicare tramite seriale con Lazarus.
Vedo con piacere che il modo c’è! Fantastico! Proprio quello che mi piacerebbe fare (Arduino + Lazarus).
Che librerie hai usato per la comunicazione seriale?
Funziona sia su linux che su Windows?
Complimenti!
[Reply]
ivan Reply:
14 February 2013 at 4:18 PM
Ciao Simo,
ti confermo che la mia caldaia funziona ormai da quattro anni con l’arduino come descritto.
Ti confermo inoltre che la libreria che ho usato per comunicare con la seriale è ben descritta all’articolo precedente http://www.synaptica.info/2009/12/23/serial-comunication-on-fpc-target-hw-arduino/ e funziona benissimo su linux e windows. Ora avevo in mente di utilizzare un tablet spazzatura come interfaccia con Arduino per cui il prossimo progetto è quello di fare una app-android in modo da gestire via internet l’accensione e spegnimento della caldai.
Inoltre ti dico che questo progetto,anche se finanziato da synaptica è assolutamente amatoriale per cui non ci prendiamo alcuna responsabilità in merito.
a presto
ivan
[Reply]
Ci mancherebbe per le responsabilità!
Grazie per la dritta! Presto proverò le librerie per Lazarus,mi basta sapere che posso farli comunicare e poi il resto lo fa l’immaginazione!
Buon lavoro!
[Reply]