Quarto Esperimento: Sensore di temperatura lm35dz stampa su seriale

by admin on 20/07/2011

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.

upload lm35dzSeriale

 

Ora scolleghiamo Arduino dal pc, sistemiamolo vicino alla breadboard ed iniziamo ad inserire i componenti.
Posizionare il componente lm35dz su una linea della breadboard.

lm35dz su 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:

Alimentazione da Arduino alla breadboard

 

  • 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:

Circuito completo

 

Infine basta collegare il cavo usb ad Arduino ed al pc e dall’ide selezionare serial monitor per visualizzare il risultato

 

Tasto serial monitor

 

Il risultato della nostra fatica….

 

Come di consueto illustriamo il programma realizzato,

per prima cosa si dichiarano le  variabili e si buy essays inizializzano i pin  dell’Arduino

 

Dichiarazione variabile ed inizializzazione pin

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

Set 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

Void loop

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!!!

circuito realizzato con Fritzing

Tutorial terminato,

A presto e buon divertimento con Arduino!!!

 

 

2 Responses to “Quarto Esperimento: Sensore di temperatura lm35dz stampa su seriale”

  • Andrea says:

    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

    • admin says:

      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!!!

Rispondi a admin Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *