Go Down

Topic: letture errate sensore lm35dz (Read 5300 times) previous topic - next topic

mattwolf

ciao ragazzi,
stavo lavorando con gli analog input del mio arduino e provando a misurare la temperatura ambiente con un lm35dz ho riscontrato il problema che misura valori tendenti ai 490 gradi mi chiedevo se qualcuno sa indicarmi la formula per convertire il valore letto da arduino in un valore di temperatura espressa in gradi centigradi..
girando in rete ho trovato : 5.0 * analogRead(inPin) * 10.0) / 1024.0...
è corretta la formula e considero diffettoso il sensore oppure potrei avere altro?dubito in quanto il codice è talmente breve che ci possa essere possibilità di errore..
grazie a chi risponde

pablos

Di norma quando si chiedono conferme su dati errati da un hardware esterno, si pubblica oltre che lo sketch anche lo schemino o un link che riporti quello usato. Il fatto che il codice sia breve non è esente da errori.
Se hai usato un codice corretto e uno schema di connessione corretto, il sensore è da cestinare.
Questo solo tu lo sai :)
no comment

mattwolf


Di norma quando si chiedono conferme su dati errati da un hardware esterno, si pubblica oltre che lo sketch anche lo schemino o un link che riporti quello usato. Il fatto che il codice sia breve non è esente da errori.
Se hai usato un codice corretto e uno schema di connessione corretto, il sensore è da cestinare.
Questo solo tu lo sai :)


ho provato con più codici e mi riporta sempre gli stessi valori..il più semplice usato è stato questo
Code: [Select]
01 int inPin = 2; // Pin di lettura
int temp = 0; // variabile temperatura

void setup()  {
Serial.begin(9600); // Avvia seriale a 9600 baud
}

void loop() { temp = ( 5.0 * analogRead(inPin) * 100.0) / 1024.0; // Conversione voltaggio sensore in temperatura
Serial.println(temp); // invio temperatura via serial monitor (accendere serial monitor per vedere val)
delay(1000); // delay tra una lettura e l'altra
}


per il collegamento su breadboard mi sono limitato a collegare il sensore al pin a2 e gnd e v+ alle uscite gnd e 5v

PaoloP

#3
Jan 15, 2013, 11:25 pm Last Edit: Jan 15, 2013, 11:35 pm by PaoloP Reason: 1
Prova a modificare il codice così:
Code: [Select]

int inPin = A2; // Pin di lettura
float temp = 0; // variabile temperatura

void setup()  {
Serial.begin(9600); // Avvia seriale a 9600 baud
}

void loop() {
temp = ( 5.0 * analogRead(inPin) / 1024.0) * 100.0; // Conversione voltaggio sensore in temperatura
Serial.println(temp); // invio temperatura via serial monitor (accendere serial monitor per vedere val)
delay(1000); // delay tra una lettura e l'altra
}




Usa float temp.

pablos

la formula è giusta, lo schema è questo http://www.tributemercury.com/wp/arduino-e-sensori-lm35-tmp36.html , non c'è molto altro da poterti dire se non fare misure a vuoto nel setup e fare la media di qualche valore prima di prenderlo in esame, questo serve solo per avere maggiori precisioni, ma non risolve il tuo dubbio, prova con un altro sensore

ciao
no comment

pablos

#5
Jan 15, 2013, 11:29 pm Last Edit: Jan 15, 2013, 11:33 pm by pablos Reason: 1
Che stai dicendo Paolo, i pin analog vanno da A0 ad A5 nel tuo disegno, lui lo può mettere dove gli pare sulle porte analog, su A2 perchè non dovrebbe andare?

posso benissimo scrivere analogRead(2) è inteso che si tratta dell' A2
no comment

PaoloP


Che stai dicendo Paolo, i pin analog vanno da A0 ad A5 nel tuo disegno, lui lo può mettere dove gli pare sulle porte analog su A2 perchè non dovrebbe andare?


Leggendo di fretta mi era parso di capire che l'avesse collegato al pin 2 e non al pin A2.
Ho corretto.

mattwolf


Prova a modificare il codice così:
Code: [Select]

int inPin = A0; // Pin di lettura
float temp = 0; // variabile temperatura

void setup()  {
Serial.begin(9600); // Avvia seriale a 9600 baud
}

void loop() { temp = ( 5.0 * analogRead(inPin) * 100.0) / 1024.0; // Conversione voltaggio sensore in temperatura
Serial.println(temp); // invio temperatura via serial monitor (accendere serial monitor per vedere val)
delay(1000); // delay tra una lettura e l'altra
}




Usa float temp.


abbi pazienza ma sarà l'orario..oltre ad aver sostituito 2 con A0 cosa ci sarebbe di diverso?

pablos


Leggendo di fretta mi era parso di capire che l'avesse collegato al pin 2 e non al pin A2.


Per un istante ho pensato anch'io che lo avesse messo sul pin digital 2, ma scrivendo analogread non c'e' errore  :D
no comment

mattwolf



Che stai dicendo Paolo, i pin analog vanno da A0 ad A5 nel tuo disegno, lui lo può mettere dove gli pare sulle porte analog su A2 perchè non dovrebbe andare?


Leggendo di fretta mi era parso di capire che l'avesse collegato al pin 2 e non al pin A2.
Ho corretto.


non so di preciso cosa sia accaduto ma ora funziona nella norma e rileva un temperatura verosimile a quella della mia stanza...senza nessuna modifica..misteri dell'elettronica...

PaoloP

Se stai usando lo sketch che ho postato, io ho modificato il tipo della variabile temp da int a float.

mattwolf


Se stai usando lo sketch che ho postato, io ho modificato il tipo della variabile temp da int a float.


non avevo notato il float  :D comunque facendo la modifica nessuna variazione eccezion fatta per la presenza di due cifre decimali e una lettura dei valori meno monotona non segna fisso 20 gradi ma oscilla tra i 20 e i 21.50

pablos

Ho una scheda cablata di pulsanti, led, display, 4 lm35, relays, tsop, ho caricato lo schetch originale di mattwolf, mi indica 23° ...è giusto, deve solo vedere la parte hardware che sia corretta o che non sia guasta
no comment

PaoloP

Allora dovrebbe provare a rimettere il sensore sul A2.

mattwolf


Ho una scheda cablata di pulsanti, led, display, 4 lm35, relays, tsop, ho caricato lo schetch originale di mattwolf, mi indica 23,85° ...è giusto, deve solo vedere la parte hardware che sia corretta o che non sia guasta


evidentemente è il mio sensore che da i numeri in tutti i sensi...poco male..ne comprerò un altro per essere sicuro e poi proseguo nell'ampliare questo segmento di progetto..un grazie a tutti!

Go Up