ultimo aggiornamento 21 agosto 2017 |
|
L'integrato
TMP36 è un sensore di temperatura di precisione alimentabile a bassa tensione.
Fornisce una tensione di uscita che è linearmente proporzionale
temperatura in gradi Celsius.
Il sensore non richiede nessuna regolazione esterna per fornire precisioni
tipiche di ± 1 ° C a +25 ° C e ± 2 ° C nel range compreso tra i -40 ° C
e i +125 ° C.
L'uscita lineare e la calibrazione di
precisione semplificano l'interfacciamento al circuito di controllo della
temperatura e ADC.
Il sensore è utilizzabile con singola alimentazione con valori compresi tra
2,7 V a 5,5 V massimo.
La corrente di alimentazione è minore di 50 μA, fornendo un basso
auto-riscaldamento inferiore a 0,1 ° C in aria calma.
Il TMP36 fornisce un uscita di 750 mV a 25
° C, e opera a 125 ° C con soli 2,7 V di alimentazione.
Per quanto riguarda il valore dell'impedenza di uscita, il
data sheet
riporta una corrente massima di 50 uA, questo vuol dire che la sua impedenza
d'uscita a 0° è circa 500mV/50uA = 10k, mentre a 20° diventa 700mV/50uA =
15k e così via a salire in funzione della temperatura.
Il TMP36 è funzionalmente compatibile con la LM50 e presenta un fattore di
scala di uscita di 10 mV / ° C.
|
|
Per la prova, l'uscita del sensore è stata collegata
ad una porta analogica della
scheda
Arduino UNO, come riportato nello
schema.
Il valore può essere letto su un display LCD 16x2, per esempio il
Display LCD keypad, presentato in
questa
sezione
Il sensore è installato su una scheda Proto-shield come quella presente in
questa pagina, è comunque possibile realizzare il montaggio
effettuando i collegamenti tramite una breadbord
come illustrato più sotto.
Per la lettura del valore di tensione fornito dal sensore e relativa
temperatura, occorrerà caricare il programma che è commentato
ed è molto semplice.
I valori saranno riportati sul display e leggibili tramite il monitor seriale.
|
Schema collegamento alla scheda Arduino UNO
Listato del programma per Arduino UNO
/* sensore_tmp36_lcd_arduino_uno.ino Il programma permette di misurare la temperatura tramite un sensore TMP36 e di mostrare il valore sul display LCD 16x2. Attivando il monitor seriale è possibile anche leggere il valore in volt letto. Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione Pin GND -> Alimentazione Pin Digital 4 -> Bus D4 dati LCD Pin Digital 5 -> Bus D5 dati LCD Pin Digital 6 -> Bus D6 dati LCD Pin Digital 7 -> Bus D7 dati LCD Pin Digital 8 -> terminale RS display LCD Pin Digital 9 -> terminale EN display LCD Pin Analogico A1 -> lettura sensore Creato il 18/1/2014 da Adriano Gandolfo https://www.adrirobot.it Blog http://it.emcelettronica.com/user/26920 Pagina facebook https://www.facebook.com/pages/Adrirobot/318949048122955 This example code is in the public domain. */ //Caricamento liberia per gestione LCD #include <LiquidCrystal.h> // Selezione dei pin utilizzati dal display LCD // Sintassi LiquidCrystal(rs, enable, d4, d5, d6, d7) LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int val_Adc = 0; float temp = 0; const int Pin_TMP36 = A1; //variabile lettura sensore void setup() { // inizializzazione libreria lcd.begin(16, 2); // inizializzazione porta seriale Serial.begin(9600); // Pulisce lo schermo LCD lcd.clear(); //Va in posizione di home: colonna 1, riga 1 lcd.setCursor( 0, 0 ); lcd.print( "Temperatura di: "); } void loop() { //Legge il valore dalla porta analogica int val_Adc = analogRead(Pin_TMP36); //Converte il valore letto in tensione float voltage = (val_Adc /1024.0) * 5.0; //Converte il valore di tensione in temperatura float temp = (voltage - .5) * 100; // Trasmette sulla seriale il valore della tensione letto Serial.print(voltage,4); Serial.print(" volts "); // Trasmette sulla seriale il valore della temperatura Serial.print(temp,2); Serial.println(" gradi celsius"); // Va in posizione di home: colonna 1, riga 2 lcd.setCursor( 0, 1 ); // scrive la temperatura lcd.print( temp,1 ); // lascia uno spazio lcd.print( ' ' ); // Scrive '°' lcd.print( (char) 223 ); //Scrive il carattere "C" lcd.print( 'C' ); //Pausa di mezzo secondo tra le misure delay( 500 ); } |
Per la prova, l'uscita del sensore è stata collegata
ad una porta analogica della
scheda
Arduino DUE, Per la visualizzazione del valore della temperatura ho utilizzato un
display LCD 16x2 connesso alla scheda shield montata sulla
scheda
Arduino DUE.
Il
listato del programma che è commentato è molto semplice
Schema di collegamento del sensore alla scheda Arduino
|
Listato del programma per Arduino DUE
/* sensore_tmp36_lcd.ino Il programma misura la temperatura tramite il sensore TMP36 e mostra il valore sul display LCD Creato il 22/11/2012 da Adriano Gandolfo <https://www.adrirobot.it> This example code is in the public domain. */ #include <LiquidCrystal.h> /* Include la libreria per la gestione del LCD */ #define RS 8 #define EN 9 #define D7 7 #define D6 6 #define D5 5 #define D4 4 // Corrispondenza pin LCD <-> pin digitali di Arduino int sensorPin = 2; // Numero del pin analogico sul quale è collegato TMP36 int val = 0; LiquidCrystal lcd( RS, EN, D4, D5, D6, D7 ); // Impostazione del display LCD void setup() { analogReadResolution(12); //imposta la risoluzione a 12 bit lcd.begin( 2, 16 ); // Impostazione per l' LCD (2x16) Serial.begin(9600); lcd.clear(); // Pulisce lo schermo LCD lcd.setCursor( 0, 0 ); //Va in posizione di home: colonna 1, riga 1 lcd.print( "Temperatura di: "); } void loop() { val = analogRead(sensorPin); //Legge il valore dalla porta analogica float voltage = (val * 3.289)/4096; // converte il valore letto in tensione float celsius = (voltage - 0.5) * 100 ; //converte la tensione in temperatura Serial.print(voltage,4); Serial.print(" volts "); // Trasmette sulla seriale il valore della Tensione letto Serial.print(celsius,2); Serial.println(" gradi celsius"); // Trasmette sulla seriale il valore in gradi lcd.setCursor( 0, 1 ); // Va in posizione di home: colonna 1, riga 2 lcd.print( celsius,1 ); // scrive la temperatura lcd.print( ' ' ); // lascia uno spazio lcd.print( (char) 223 ); // Scrive '°' lcd.print( 'C' ); //Scrive il carattere "C" delay( 500 ); //Pausa di mezzo secondo tra le misure } |
Display e scheda utilizzato per i test
Per visualizzare il valore della temperatura è stato utilizzato un display montato su una basetta millefori collegata ad una proto shield.
LCM1602A-NSW-BBW - Display LCD 16 caratteri x 2 linee con fondo Blu | ||
Piedinatura | Datasheet display | Foto |
Elenco revisioni: | |
21/08/2017 | Aggiornato pagina |
23/11/2012 | Emissione preliminare |