ultimo aggiornamento 21 agosto 2017


 

Indice

Descrizione

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.

homotix

PCBA

OurPCB

Specifiche tecniche

Altezza    5.2mm
Profondità    4.19mm
Lunghezza    5.2mm
Package fornitore    TO-92
Funzione    Sensore di temperatura
Numero pin  3
Precisione    ± 2 ° C
Linearità  ± 0,5 ° C
Sensibilità  10 mV / °C fattore di scala
Campo temperatura minima    -40 ° C a +125 ° C, funzionamento a +150 ° C
Tensione tipica di funzionamento    2,7 V a 5,5 V
Tipo uscita    Analogica
Corrente di riposo  Meno di 50 μA
   Basso auto-riscaldamento
TMP36 Sensore di temperatura di precisione (Gradi centigradi)
Piedinatura Foto dell'integrato


Datasheet


Codice RS  427-351

 Utilizzo con Arduino UNO

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


Scarica il programma

/*
 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 );
}

 Utilizzo con Arduino DUE

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

Elenco componenti
ICI Sensore TMP36
LCD1

LCD 16x2 tipo LCM1602A + Pinstrip femmina 1x16

POT1

10k Trimmer
R1 10Ω 1/4W
C1 Condensatore 100nF multistrato

Listato del programma per Arduino DUE


Scarica il programma

/*
 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
}

Filmato illustrativo

 

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
Private Policy Cookie Policy