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