Pages: [1]   Go Down
Author Topic: LM335Z e valori sballati  (Read 833 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, innanzi tutto mi presento.
Mi chiamo Francesco e da pochissimo tempo mi sono affacciato ad Arduino, dopo averne scoperto le funzionalità e la scalabilità ( senza contare la facilità di programmazione). Da sempre sono appassionato di elettromeccanica ed elettronica. Con Arduino ho iniziato i primi progetti di rito per prendere confidenza con la piattaforma e dopo aver fatto un piccolo web server che comanda un paio di led, un circuito per comandare un relè, un botta e risposta da seriale, mi son detto, andiamo avanti ed esploriamo i sensori.
Ho deciso quindi di iniziare con un sensore di temperatura. La scelta dell' LM335Z tarato in gradi Kelvin è stata forzata dalla mancanza di un LM35, ma ciò non pregiudica l'esperimento, giusto?
Bene, dopo la piccola parentesi, veniamo al problemino.

Premetto che la mia configurazione attuale è la seguente:
  • Arduino UNO
  • Ethernet Shield +microSD v3 originale
  • Sensore LM335Z
  • Breadboard + cavetti vari
  • MacBookPro con SnowLeopard per la programmazione
e che in uscita dal pin vcc non ho una tensione di 5V, ma di 4,68V poichè l'Arduino è alimentato da USB

Il sensore è montato sulla breadboard e con i cavetti all'arduino
Con un altro termometro digitale posto affianco al sensore, misuro una temperatura di 26.8 gradi Celsius pari a 299.95 gradi Kelvin
Con il tester, misuro una tensione in uscita al sensore pari a circa 3.86V
Con questi valori di tensione, al pin A5 leggo un valore di 844 bit.
Converto quindi il valore letto in millivolt moltiplicando il valore per la costante data da tensioneMassima/1024 e moltiplicando per 1000.
A questo punto, sapendo che il sensore ha uno sbalzo di 1K ogni 10mV, divido il valore ottenuto per 10 per ottenere la temperatura in gradi Kelvin
Successivamente sottraggo la costante di conversione pari a 273.15 per ottenere i gradi Celsius.
Bene, questo in teoria dovrebbe essere corretto, vero?
Il problema è che ottengo a video i seguenti risultati:
Code:
844 bit | 3861.11 mV | 386.11 K | 112.96 C |
Un valore di 86,16 unità in più rispetto al reale ( di certo non ci sono più di 100°C in stanza)!!!

Di seguito il codice usato per il test:
Code:
int LM335Z = A5; //collego il sensore al pin A5
void setup()
{
Serial.begin(9600);  //stabilisco una connessione seriale
}
 
void loop ()
{
int leggo = analogRead(LM335Z);  //leggo i bit in ingresso
float rapporto = 4.68/1024.0; //ottengo il rapporto di conversione bit to volt
float voltage =leggo*rapporto*1000; //valore in millivolt in ingresso
float kelvin = voltage/10; //valore temperatura in kelvin
float celsius = kelvin-273.15; //valore temperatura in celsius
// Stampo a video le letture[
Serial.print(reading);
Serial.print(" bit | ");
Serial.print(voltage);
Serial.print(" mV | ");
Serial.print(kelvin);
Serial.print(" K | ");
Serial.print(celsius);
Serial.println(" C |");
//fine stampa
delay(5000); //aspetto 5 secondi prima di reiniziare il ciclo
}
Secondo voi, dove sto sbagliando?
Devo forse effettuare una tarartura del sensore?
Allego il datasheet del sensore per completezza.

* 2158.pdf (539.11 KB - downloaded 9 times.)
« Last Edit: June 12, 2012, 03:18:23 am by frank_lab » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E`  da calibrare, guarda nel datasheet  smiley
Pagina 6 "CALIBRATED SENSOR"
« Last Edit: June 11, 2012, 07:56:55 pm by Faccina » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Stai usando la tensione di alimentazione come riferimento.
Code:
float rapporto = 4.68/1024.0;
Mi sembra un po bassa. Sei sicuro che é costante?

Quote
Con il tester, misuro una tensione in uscita al sensore pari a circa 3.86V
C'é qualcosa che non quadra; é una tensione troppo alta per 26 gradi anche considerando un certo errore del sensore.

Se misuri temperature fino a 60 gradi usa i 3,3V come riferimento esterno del ADC.

Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Faccina:
hai ragione, non ci avevo proprio fatto caso ieri sera  smiley-red
@uwefed:
Si, la tensione è costante in uscita.
Per la tensione in uscita dal sensore, è sembrata un pò alta anche a me, ma potrebbe dipendere dalla mancanza delle opportune resistenze di calibrazione, che ne pensi?
In realtà, dovrò misurare temperature che si aggirano sugli 80/90 °C, portando il sensore quasi al limite della sua capacità.
« Last Edit: June 12, 2012, 03:19:15 am by frank_lab » Logged

Pages: [1]   Go Up
Jump to: