Il datasheet del LM335 da cui sono state estratte le immagini, riporta una tensione di alimentazione compresa fra +5V e +40V.
Usando il sensore con Arduino tanto la tensione di alimentazioni quanto il valore della resistenza e del potenziometro si riducono di 1/3: Vcc= +5V; R= 4 Kohm (valore standard 3,9 Kohm; potenziometro = 3,3 Kohm o valori simili.
In questa tabella è evidenziato che a 25°C la tensione di uscita è di 2,98 V e che in assenza del potenziometro di taratura l'errore di lettura può oscillare fra i 2 ed i 4 gradi.
A 25°C la tensione analogica di A0 è di 2,98V con un rapporto di 2,98 / 25 = 0,1192.
Tale rapporto, essendo il dispositivo lineare, è uguale per tutti i valori di tensione.
Alla tensione di ingresso di 2,98V corrisponde, posto 0V = 0 bit e 5V=1023bit, un valore di 610 bit ed il valore 610 è ciò che si legge su display LCD o sull'IDE di Arduino. Il rapporto
C° = 25
Vin = 2,98 V
Vin / °C = 0,1192
bit = (+Vin * 1023) / +Vcc
bit = 2,98 * 1023 / 5 = 2,98 * 204,6 = 610
Il valore su seriale, espresso in bit, può quindi essere semplificato con la formula:
b>bit = +Vin * 204,6
Il rapporto gradi °C / bit, uguale per tutti i valori di tensione (il dispositivo è lineare) è:
25 : 204,6 = 0,040983606
La formula diretta da inserie nello sketch sarà sunque semplificata a:
°C= +Vin * 0,040983606
Con le formule inverse si costruisce la seconda tabella dove viene evidenziato che il valore massimo di temperatura è poco meno di 42°C.
Lo scketch che segue permette, con il raffronto con un sensore DHT11 la taratura del LM335
/* Si confrantano fra loro tre sensori di temperatura. Il sensore DHT11 pin 2 Il sensore LM335 pin A0 */ #include <dht11.h> #define DHT11 2 #define LM335 A0 dht11 ValoreDHT11; float clsiusLM335 =0; void setup() { pinMode(LM335, INPUT); Serial.begin(9600); } void loop(){ ValoreDHT11.read(DHT11); float celsiusDHT =ValoreDHT11.temperature; clsiusLM335 = analogRead(LM335) *0.040983606 ; Serial.println("\n"); Serial.print("DHT11 Celsius "); Serial.println(celsiusDHT); Serial.print("LM335 Celsius: "); Serial.println(clsiusLM335); delay(5000); }
Nessun commento:
Posta un commento