Pages: [1] 2 3   Go Down
Author Topic: letture errate sensore lm35dz  (Read 4168 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 47
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

no comment

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

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 smiley

ho provato con più codici e mi riporta sempre gli stessi valori..il più semplice usato è stato questo
Code:
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
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7123
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova a modificare il codice così:
Code:
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.
« Last Edit: January 15, 2013, 05:35:43 pm by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Genova
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

no comment

Genova
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: January 15, 2013, 05:33:56 pm by pablos » Logged

no comment

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7123
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

Prova a modificare il codice così:
Code:
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?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin
Logged

no comment

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

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...
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7123
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

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  smiley-grin 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
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

no comment

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7123
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora dovrebbe provare a rimettere il sensore sul A2.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

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!
Logged

Pages: [1] 2 3   Go Up
Jump to: