Pages: [1] 2 3   Go Down
Author Topic: Calcoli per temperatura con LM35DZ  (Read 1896 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 162
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti..!
Pian piano sto provando tutto quello che ho trovato dentro allo starter kit.. Oggi mi sono imbattuto in questo misuratore di temperatura.. Dopo aver smadonnato su internet per trovare come calcolare la temperatura sono arrivato a trovare (più di una volta, e persino su questo forum) questa riga di codice
Code:
temp = (5.0 * float(analogRead(A0)) * 100.0) / 1023.0);
Fin qua nessun problema, sono riuscito finalmente ad avere un risultato abbastanza coerente con le temperature normali in casa.. Il problema arriva confrontandolo col termostato del termosifone, perchè la temperatura che leggo sull'lcd è di qualche grado piu alta..
Ho provato di tutto, ma non riesco a sistemare questa cosa.. Non dico sia perfettamente uguale, ma almeno che sballi di non più di 1°C.. Finchè lo uso cosi a caso può andar bene, ma se dovessi usarla per progetti un pò più ambizioni sarebbe complicato..

Consigli..!? O sbaglio qualcosa io..!?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A parte che devi dividere per 1024.0 perché l'ADC dell'Arduino è a 10 bit (2^10=1024, ossia da 0 a 1023), devi considerare anche una minima tolleranza del sensore.
Se noti che la discrepanza fra temperatura misurata e temperatura reale è sempre uguale, puoi usare quel valore come correzione del dato letto.
Logged


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

Perchè 1024.0? Il sensore non arriva a massimo 1023.0?

Dovrei fare più prove per notare questa differenza..
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

2^10=1024, ossia da 0 a 1023
Gli step sono 1024, non 1023.
1023 è sì il valore massimo ma tu non consideri che esiste anche lo 0 che è il primo step, mica non lo conti  smiley-wink
Quindi da 0 a 1023 sono 1024 valori.
Logged


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

Aaaaaan.. Capisco..! Io facevo 1023.0, perchè ero convinto di dover dividere per il massimo che raggiungeva, non per gli step che faceva.. smiley-cry

Comunque, ora l'ho messo di fianco ad una sveglia col termometro, e lo lascio la per un pò..
È già partito con 2,5°C in più.. ma non resta fisso.. Pian piano (molto piano..) diminuisce.. Vediamo a che punto si ferma..
Logged

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

Sto cominciando a capire cosa mi sballa la temperatura..
Ho provato a staccare l'illuminazione dell'lcd, e ho guadagnato 1°C.. Ora su due termometri con cui ho confrontato mi son abbassato di temperatura ed è molto più giusta, la differenza si aggirava intorno al mezzo grado, o neanche..
Perchè sta roba???  smiley-eek
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Potrebbe essere dato dal fatto che l'lcd "cuccia" troppa corrente ad Arduino?Hai provato a mettere qualche resistenza? ti parlo da super ignorantone  smiley
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sto cominciando a capire cosa mi sballa la temperatura..
Ho provato a staccare l'illuminazione dell'lcd, e ho guadagnato 1°C.. Ora su due termometri con cui ho confrontato mi son abbassato di temperatura ed è molto più giusta, la differenza si aggirava intorno al mezzo grado, o neanche..
Perchè sta roba???  smiley-eek

mah... già il fatto che ci stai vicino  alzi la temperatura di un grado   noi stessi siamo una "stufa" ambulante di 100 watt

poi ci possono essere mille disturbi, 
 comunque una misura della temperatura dell'aria appena attendibile   dovrebbe essere effettuata a 2 metri di distanza da qualsiasi oggetto e all'ombra
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

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

Posso immaginare che la temp possa essere leggermente sbagliata per il calore che provoco toccandolo.. Ma adesso mi sto concentrando su questa differenza che viene creata dal collegamento con l'illuminazione dell'lcd.. Passi il calore del corpo, ma qua ho la corrente che mi crea uno sfasamento..!
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 103
Posts: 6579
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se hai un tester, misura la tensione tra il pin GND e il pin AREF (affianco al pin 13): dovrebbe essere 5V.
Se fosse inferiore devi correggere la formula:
Code:
temp = (VmisuratasuAref * float(analogRead(A0)) * 100.0) / 1024.0);
Logged

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

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

Non sono a casa adesso, appena arrivo verifico..

Comunque se può interessare ho misurato col tester la tensione che arriva al sensore dai pin 5v e GDN.. Più o meno si aggira sui 4.8v, e cala ai 4.6/4.7 quando collego i cavetti dell'illuminazione..

In ogni caso, se io rilevo un valore su AREF diverso da 5v, non ce un modo per rilevarla in tempo reale e cambiarla (nella variabile) al volo in base alla tensione che arriva?
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 103
Posts: 6579
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No, ma puoi fare il contrario.
Fornire ad AREF una tensione stabile e impostarla come riferimento per i calcoli dell'AnalogRead.
Puoi usare anche il riferimento interno a 1.1V ma avresti una limitazione sul campo di misura della temperatura.

Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Intanto prova a vedere se mettendo un piccolo C da 100nF ceramico tra i pin Vin e Gnd dell'LM35 migliori la situazione. Ti dovrebbe però aiutare solo per gli sbalzi all'accensione del display. Ma se la tensione resta bassa fintanto che è accesa la retroilluminazione secondo me risolvi usando un'alimentazione a 5V stabili separata per il sensore. La retroilluminazione di un display LCD può succhiare diverse decine di mA, anche un centinaio, e gli sbalzi di tensione influenzano la lettura del sensore. Tempo fa anch'io notai lo stesso problema con un sensore simile al tuo ed un piccolo display Nokia3310.
Logged


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

Allora.. Ho provato la tensione sul pin AREF.. esce 4.88v senza illuminazione, con illuminazione invece scende ai 4.73v..
Potrei portarla a 1.1v, ma oltre alla limitazione cosa mi cambierebbe? Avrei maggiore stabilità? O i cali ci saranno comunque?

X leo: vedo se ne ho qualcuno in giro, anche se la vedo dura..

EDIT: infatti non ne ho..  smiley-cry
Comunque, ho misurato la tensione in uscita dal sensore.. sia con l'illuminazione che senza lui fa uscire sempre 0.25v.. Perchè poi arduino me lo legge diversamente se la tensione in uscita è sempre la stessa???
« Last Edit: April 10, 2013, 03:03:17 pm by AleCune93 » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perché cambia la tensione di riferimento, che normalmente è quella presente su VCC.
Puoi provare col consiglio di Paolo, inserendo nel pin AREF una tensione a 5V stabili, settando la tensione di riferimento su EXTERNAL con analogReference e poi leggendo il sensore.
Ricordati le masse in comune fra l'Arduino e l'alimentatore esterno.
Logged


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