Quarto Esperimento: Sensore di temperatura lm35dz stampa su seriale
Oggi realizzeremo un piccolo circuito che ci permette di utilizzare un sensore di temperatura lm35dz tramite Arduino e di stampare il suo valore su seriale, prossimamente lo stesso tutorial verrà realizzato con la stampa su un lcd.
Prima di iniziare le solite premesse:
Se volete sapere cos’è un sensore di temperatura lm35dz leggete l’articolo ad esso dedicato
Colleghiamo Arduino tramite una porta usb al pc, avviate l’ide, se non avete ancora configurato l’ide vi rimando all’articolo specifico
Perfetto adesso entriamo nel vivo del tutorial, per prima cosa elenchiamo il materiale occorrente:
1 Arduino (il mio è un 2009)
1 sensore di temperatura LM35dz
1 breadboard (la mia è da 840 punti ma ne basta anche una piccola)
5 fili per i collegamenti
tempo di realizzazione 3 minuti
copiamo lo sketch (il programma) nell’ide, basta selezionare tutto il programma di seguito, poi tasto destro, copia ed incolla nella pagina bianca dell’ide.
—-inizio programma—-
/* An open-source LM35DZ Temperature Sensor for Arduino. This project will be enhanced on a regular basis (cc) by Walter Esposito , http://www.arduinoproject.it http://creativecommons.org/license/cc-gpl */ float tempC; //dichiarazione di variabile int tempPin = 0; //inizializzazione del pin di Arduino void setup() { Serial.begin(9600); //apertura porta seriale, set della velocità a 9600 bps } void loop() { tempC = analogRead(tempPin); //lettura valore del sensore tempC = (5.0 * tempC * 100.0)/1024.0; //conversione del dato analogico in temperatura Serial.println(tempC); //invia i dati alla seriale Serial.print(" Celsius, "); delay(1000); //aspetta 1 secondo prima di ripetere }
----fine programma----
una volta copiato lo sketch clicchiamo sull’icona uploaded attendiamo il caricamento sul nostro Arduino.
Ora scolleghiamo Arduino dal pc, sistemiamolo vicino alla breadboard ed iniziamo ad inserire i componenti.
Posizionare il componente lm35dz su una linea della breadboard.
Colleghiamo i fili in questo modo:
- LM35 +Vs ——————– Breadboard linea di alimentazione + (nella foto il filo verde)
- LM35 Vout —————— Arduino uscita analogica 0 (analog 0) (nella foto filo grigio)
- LM35 GND ——————– Breadboard linea di alimentazione – (nella foto il filo giallo)
Una volta completata questa parte, relativa al sensore lm35, possiamo inserire e collegare i fili rimanenti all’alimentazione di Arduino:
- Arduino 5v ——————– Breadboard linea di alimentazione + (nella foto il filo verde)
- Arduino Gnd ——————– Breadboard linea di alimentazione – (nella foto il filo giallo)
IL circuito è completo, di seguito un’immagine d’insieme:
Infine basta collegare il cavo usb ad Arduino ed al pc e dall’ide selezionare serial monitor per visualizzare il risultato
Come di consueto illustriamo il programma realizzato,
per prima cosa si dichiarano le variabili e si buy essays inizializzano i pin dell’Arduino
La variabile float, per chi non è pratico di programmazione si riferisce ad un numero floating point in singola precisione, insomma dei numeri che hanno una parte frazionaria, dichiariamo questa variabile poichè in seguito la utilizzeremo per contenere il valore della temperatura.
Con la stringa int tempPin=0; inizializziamo il pin 0 analogico dell’Arduino e denominiamo tale variabile tempPin.
Nel void setup() viene solo settata la velocità dello scambio di dati tra Arduino e il pc tramite la porta seriale
Se avete bisogno di modificare tale valore basta cambiare il numero 9600 con quello di vostro interesse, l’ide di Arduino supporta 11 velocità diverse!!!
L’ultima parte del programma riguarda il ciclo principale, il cuore di tutto, prima l’immagine relativa e poi di seguito la spiegazione
analogread(tempPin) è la lettura del valore analogico che il sensore invia sulla porta 0 di Arduino, questo valoe viene inserito nella variabile tempC dove come seconda operazione viene eseguito un calcolo per convertire il dato da analogico a temperatura. Il dato analogico è un numero che varia in un range 0-1023 quindi l’espressione (5,0*tempC*100,0) viene divisa per 1024,0 così da avere la temperatura in gradi centigradi.
La stringa serial.println stampa su seriale il valore della temperatura e di seguito la dicitura celsius, il println a differenza del print da un invio (va alla riga successiva) una volta stampato il valore tra parentesi.
Per ovviare alla troppa velocità di scrittura, inseriamo un delay cioè un tempo di attesa, un blocco write my paper for me momentaneo del ciclo di 1 secondo (1000 millesimi di secondo) prima di ripetere il tutto.
Come ultima immagine vi lascio il circuito realizzato con fritzing!!!
Tutorial terminato,
A presto e buon divertimento con Arduino!!!
Bella guida,grazie..carina,semplice e molto ben illustrata;vorrei soltanto fare una osservazione ed una domanda…Ma non sarebbe meglio inserire una resistenza per stabilizzare il segnale del sensore?
Poi vorrei capire meglio l’espressione di conversione del valore del sensore,o meglio a che si riferiscono i valori 5 e 100 che moltiplicano tempC (in relazione al datasheet del sensore immagino).
Grazie mille
Ciao Andrea, grazie per i complimenti, lo scopo del blog è proprio quello, creare tutorial semplici per tutti, anche a chi si affaccia per la prima volta nel mondo dell’elettronica, possa seguire per realizzare un circuito funzionante.
Ora rispondo alle tue domande, per la resistenza, non vedo la necessità di inserirlo, ma ti parlo sempre da informatico, se mi illustri la tua tesi posso fare anche delle modifiche al progetto iniziale, sono sempre a disposizione.
Per quanto riguarda la formula sarò più “tecnico”: Gli ingressi analogici su Arduino hanno una risoluzione a 10 bit, che può fornire in uscita 2 ^ 10 = 1024 valori discreti. Quando viene usato alimentazione a 5V (5000 mV), e si collega direttamente il sensore ad un pin analogico, abbiamo bisogno di una conversione per poter definire il valore che poi sarà la temperatura, la risoluzione risultante è 5000mV/1024 = 4.8mV. Poiché l’LM35 ha una risoluzione di uscita di 10mV/°C (da datasheet), la risoluzione del termometro collegato ad Arduino è 10mV/4.8mV ~ 0,5 ° C.
Da queste due considerazione nasce la formula, se poni la lettura del pin analogico ad 1(tempC) e risolvi l’espressione vedi che il risultato è 0,488 cioè ~0,5 , spero di essere stato chiaro, altrimenti commenta e cercherò di spiegarmi meglio, a presto e continua a seguirci!!!