Sensore di temperatura
LM35

ultimo aggiornamento 22 giugno 2019


 

Indice

Descrizione

Il sensore di temperatura LM35, è molto semplice da utilizzare e da collegare in quanto si presenta un contenitore di tipo TO92 analogo a quello di un normale transistor, e necessita solo di un collegamento ad una porta ADC per la lettura del valore di tensione fornito dal sensore.
Il sensore si presenta con 3 terminali: uno per l’alimentazione, uno di massa e uno per l’uscita della tensione proporzionale alla temperatura rilevata che è pari a 10 mV per ogni grado centigrado, ed è calibrato in gradi Cesius.

 

LM 35 Sensore di temperatura di precisione (Gradi centigradi)

Piedinatura Datasheet

Caratteristiche

 
Descrizione Valore
Altezza    5.2mm
Profondità    4.19mm
Lunghezza    5.2mm
Package fornitore    TO-92
Funzione    Sensore di temperatura
Pin Count    3
Precisione    ±0.6°C
Sensibilità  10mV/°C
Temperatura massima    100°C
Temperatura minima    0°C
Tensione tipica di funzionamento    4-30V
Tipo uscita    Analogica

Dove trovare il sensore

Il sensore LM35DZ può essere trovato sul sito Homotix, ricordo che quanti inseriranno in codice "ADRIROBOT_19" potranno usufruire di uno speciale sconto

homotix

PCBA

OurPCB

Esempio di gestione del sensore

Per la prova del sensore, l'uscita è stata collegata alla porta AD1 della scheda Arduino, la visualizzazione del valore della temperatura viene mostrata sul un display 16x2, il tutto montato su una breadboard. Lo schema è sotto riportato.

Componenti utilizzati

Breadboard 830 punti

Sensore LM35

Potenziometro Lineare da 10 Kohm

Display LCD 16X2

Jumper Dupont M/M 200mm

Uno R3 ATmega328 Arduino Compatibile

Tutti i componenti sopra riportati sono presenti nel Kit Arduino Avanzato con Arduino Uno R3 Compatibile, venduto dal sito HOMOTIX, il kit è adatto a utenti esperti e principianti, con i componenti forniti è possibile realizzare una ampia varietà di progetti.

Schema dei collegamenti

Sketch di prova

Lo sketch utilizzato è sotto riportato, all'interno sono presenti dei commenti che dovrebbero facilitarne la comprensione. Per la gestione del display occorre utilizzare la libreria LiquidCrystal che è presente tra quelle standard dell'IDE di Arduino, per avere maggiori informazioni vedere questa pagina.
All'interno del programma è presente la sezione /* Legge la temperatura */ che si occupa di convertire il valore analogico letto dal sensore in digitale, questo viene poi mostrato sul display LCD.


Scarica il programma
/*
  Test_lettura_sensore_LM33_new.ino
  Il programma misura la temperatura tramite il sensore LM35
  e mostra il valore sul display LCD

  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 1 -> lettura LM35

  La scala dell'LM 35 è T = K * V
  dove:
  K = 100 [°C/V] coeff.angolare della scala
  V = tensione generata dall'LM35 (10mV/°C)
  T = temperatura in °C

  Include la libreria per la gestione del LCD

  Creato il 15/12/2011
  Aggiornato il 22/6/2019
  Sito web https://www.adrirobot.it
  Blog https://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.

*/

#include <LiquidCrystal.h>

/* Corrispondenza pin LCD <-> pin digitali di Arduino */

#define RS  8
#define EN  9
#define D7  7
#define D6  6
#define D5  5
#define D4  4

/* Numero del pin analogico sul quale è collegato l'LM35  */
#define LM35_pin 1

/* Definizioni globali */
float vref = 1.1;	                     // Vref dell'ADC (quell'interno è di 1,1V)
LiquidCrystal lcd( RS, EN, D4, D5, D6, D7 ); // 'lcd' è una variabile di tipo LiquidCrystal */


/* Impostazione dell'hardware */

void setup()
{
  analogReference( INTERNAL );  // per l'ADC usiamo il Vref interno da 1,1V (migliore precisione)
  analogRead( LM35_pin );       // Prima lettura "a vuoto" (serve per l'assestamento dell'ADC)
  lcd.begin( 2, 16 );           // Impostazione per l' LCD (2x16)
}

void loop()
{
  float temp = readTemp();  // legge il valore della temperatura e la memorizza nella var. temp.
  sendTempToLCD( temp );    // invia il valore al LCD
}

/* Legge la temperatura */
float readTemp()
{
  float temp = 0.0;       // valore convertito in temperatura (°C)
  int val = 0;            // valore quantizzato dall'ADC [0..1023]
  int nread = 5;          // numero di letture (da 5 a 8)
  float somma = 0.0;      // somma delle letture
  for (int i = 0; i < nread; i++)
  {
    val = analogRead( LM35_pin );              // legge il dato della tensione sul pin 'LM35_pin'
    temp = ( 100.0 *  vref * val ) / 1024.0;   // lo converte in °C
    somma += temp;                             // aggiunge alla somma delle temperature lette
  }
  return ( somma / nread );                     // ne calcola il valore medio
}

/* Invia la temperatura su un LCD (modo 4bit) */
void sendTempToLCD( float temp )
{
  lcd.clear();               // Pulisce lo schermo
  lcd.setCursor( 0, 0 );     // Va in posizione di home: colonna 1, riga 1
  lcd.print( "Temperatura di: ");
  lcd.setCursor( 0, 1 );     // Va in posizione di home: colonna 1, riga 2
  lcd.print( temp );         // Stampa solo la parte intera della temp.
  lcd.print( ' ' );          // Stampa uno spazio
  lcd.print( (char) 223 );   // Stampa '°'
  lcd.print( 'C' );
  delay( 250 );
}

Esempio di collegamento con shield auto costruito

Esempio di collegamento del sensore il cui valore viene mostrato su un LCD shield auto costruito, il sensore è invece montato su in uno shield di test montata sulla scheda Arduino, maggiori informazioni a questo link

 

 

Schema del LCD shield auto costruito

Schema dello shield di test

Altri esempi di utilizzo del sensore

Sensore montato sul robot Littlebot, con dato trasmesso via collegamento Bluetooth

Sensore montato sul "Temp Sensor" montato all0interno del robot I-Droid 01 della De Agostini

Sensore LM35 collegato tramite un convertitore ADC0831 ad un Basic Stamp 2

Sensore LM35 collegato ad una scheda Cubloc 220

 

Elenco revisioni:
22/06/2019 Aggiornato pagina
17/12/2011 Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni