il sensore lm35 è un sensore utilizzato ampiamente per la rilevazione della temperatura di un ambiente. è dotato di una resistenza interna sensibile alla temperatura, all'aumentare di quest'ultima si avrà una diminuizione di resistenza all'interno del sensore e di conseguenza una maggiore differenza di potenziale.
Arduino quindi andrà ad interpretare la questa differenza di potenziale come la temperatura dell'ambiente in cui si trova.
Andando a leggere i datasheet del sensore si può notare che quest'ultimo è in grado di campionare una temperatura in un range tra -55 gradi Celsius di minima e 150 gradi Celsius di massima.
Opera con una differenza di potenziale tra i 4V e i 30V. il rapporto di diretta proporzionalità tra tensione e gradi Celsius è di 10mV/°C . Infine possiede una sensibilità di ± 0.5 °C alla temperatura di 25°C.
A livello codice dovremo effettuare una conversione del valore in millivolt che rappresenta la temperatura rilevata dal sensore. Come consiglia il sito ufficiale di Arduino l'equazione più utilizzata è temp=(5.0* valore* 100)/1024. Purtroppo però è noto che il sensore per via di come è stato progettato campionerà sempre tensioni inferiori ad 1V (perchè è in grado di funzionare tra -55°C e 250°C).
Dunque andiamo a riscrivere l'equazione considerando 1.1V di conversione: dividiamo 1100mV/1024 valori possibili (ovvero da 0 a 1023), poi considerando da datasheet il fattore di conversione di 10mv/°C il valore che otteniamo per la conversione è 10mv/(1100mv/1024)=~ 9.31.
Perchè funzioni però bisogna cambiare il valore di riferimento di arduino da 5V a 1.1V. Basterà digitare nel void setup: analogReference (INTERNAL).
Nonostante siano due oggetti completamente differenti, l'lm35 ha l'aspetto di un transistor;
è dotato di tre pin (visto frontalmente):
• GND (pin a sinistra);
• Output analogico (pin centrale);
• VCC (pin a destra)
Link Datasheet: http://www.ti.com/lit/ds/symlink/lm35.pdf
Per programmare Arduino prima di tutto si va a definire una macro #define temp A0 per "nominare" il pin di ricezione dati, successivamente inizializziamo una variabile float data = 0 che servirà per contenere il valore della temperatura attuale.
Nel void setup andiamo a scrivere analogReference(INTERNAL) per modificare il riferimento di tensione di arduino da 5V a 1.1V. Poi scriviamo Serial.begin(9600) per inizializzare il monitor seriale ed infine pinMode(temp,INPUT) per "dire" ad arduino che il pin A0 svolgerà il ruolo di input.
Nel void loop andiamo ad acquisire il valore attuale di temperatura con data= analogRead(temp) (valore analogico), e successivamente andiamo a definire una variabile float celsius la quale prenderà: celsius= data/9.31 (ovvero il nostro valore di conversione che abbiamo calcolato).
Infine andiamo a mostrare su monitor seriale la temperatura con rispettiva unità di misura in gradi celsius (°C) aggiungendo un delay di 500 millisecondi.
Link per l'acquisto del sensore:
https://amzn.to/2C7oJNN
https://amzn.to/2OfqX4D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Serial.print("Temperatura: "): Serial.print(celsius); Serial.println("°C"); delay(500); |
Commenti
Posta un commento