# Calcoli per temperatura con LM35DZ

**URL:** <https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735>\
**Category:** Software\
**Created:** [April 9, 2013, 6:54pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735 "2013-04-09T18:54:38Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 9, 2013, 6:54pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/1 "2013-04-09T18:54:38Z")

</div>

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

```cpp
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..!?

---

<div class="post-metadata">

**Author:** ![leo72](https://avatars.discourse-cdn.com/v4/letter/l/71c47a/32.png) [@leo72](https://forum.arduino.cc/u/leo72)\
**Post date:** [April 9, 2013, 7:07pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/2 "2013-04-09T19:07:13Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 9, 2013, 7:11pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/3 "2013-04-09T19:11:32Z")

</div>

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

Dovrei fare più prove per notare questa differenza..

---

<div class="post-metadata">

**Author:** ![leo72](https://avatars.discourse-cdn.com/v4/letter/l/71c47a/32.png) [@leo72](https://forum.arduino.cc/u/leo72)\
**Post date:** [April 9, 2013, 7:14pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/4 "2013-04-09T19:14:23Z")

</div>

> leo72:  
> 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 😉  
Quindi da 0 a 1023 sono 1024 valori.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 9, 2013, 7:25pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/5 "2013-04-09T19:25:46Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 10, 2013, 3:27pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/6 "2013-04-10T15:27:32Z")

</div>

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??? 😲

---

<div class="post-metadata">

**Author:** ![hermit274](https://avatars.discourse-cdn.com/v4/letter/h/ac91a4/32.png) [@hermit274](https://forum.arduino.cc/u/hermit274)\
**Post date:** [April 10, 2013, 3:43pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/7 "2013-04-10T15:43:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [April 10, 2013, 4:17pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/8 "2013-04-10T16:17:40Z")

</div>

> AleCune93:  
> 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??? 😲

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

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 10, 2013, 4:46pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/9 "2013-04-10T16:46:57Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![PaoloP](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paolop/32/214739_2.png) [@PaoloP](https://forum.arduino.cc/u/PaoloP)\
**Post date:** [April 10, 2013, 4:56pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/10 "2013-04-10T16:56:33Z")

</div>

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:

```cpp
temp = (VmisuratasuAref * float(analogRead(A0)) * 100.0) / 1024.0);

```

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 10, 2013, 5:11pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/11 "2013-04-10T17:11:46Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![PaoloP](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paolop/32/214739_2.png) [@PaoloP](https://forum.arduino.cc/u/PaoloP)\
**Post date:** [April 10, 2013, 5:25pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/12 "2013-04-10T17:25:46Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![leo72](https://avatars.discourse-cdn.com/v4/letter/l/71c47a/32.png) [@leo72](https://forum.arduino.cc/u/leo72)\
**Post date:** [April 10, 2013, 7:01pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/13 "2013-04-10T19:01:15Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 10, 2013, 7:45pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/14 "2013-04-10T19:45:12Z")

</div>

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.. =(  
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???

---

<div class="post-metadata">

**Author:** ![leo72](https://avatars.discourse-cdn.com/v4/letter/l/71c47a/32.png) [@leo72](https://forum.arduino.cc/u/leo72)\
**Post date:** [April 10, 2013, 8:13pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/15 "2013-04-10T20:13:02Z")

</div>

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](http://arduino.cc/en/Reference/AnalogReference) e poi leggendo il sensore.  
Ricordati le masse in comune fra l'Arduino e l'alimentatore esterno.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 11, 2013, 12:57pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/16 "2013-04-11T12:57:55Z")

</div>

Attualmente non ho niente da 5v da dargli al pin AREF.. In ogni caso ho settato l'analogReference ad INTERNAL, ed ovviamente dal punto AREF mi escono 1.1v.. Ho modificato la formula in modo che mi calcoli la temperatura basandosi sugli 1.1, misurando il punto AREF resta stabile sia che metto, sia che tolgo l'illuminazione all'lcd.. Ma la temperatura cambia lo stesso..

Mi sa che non ho capito bene come funziona sta analogReference 😲

---

<div class="post-metadata">

**Author:** ![leo72](https://avatars.discourse-cdn.com/v4/letter/l/71c47a/32.png) [@leo72](https://forum.arduino.cc/u/leo72)\
**Post date:** [April 11, 2013, 1:05pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/17 "2013-04-11T13:05:22Z")

</div>

Se imposti l'ADC per usare la tensione a 1,1V devi anche adattare la tensione in ingresso sui pin analogici affinché vari da 0 a 1,1V altrimenti non c'è proporzione fra il valore letto ed il riferimento.  
Solo che perdi in range, come ti aveva detto anche Paolo.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 11, 2013, 1:09pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/18 "2013-04-11T13:09:36Z")

</div>

> leo72:  
> Se imposti l'ADC per usare la tensione a 1,1V **devi anche adattare la tensione in ingresso sui pin analogici affinché vari da 0 a 1,1V** altrimenti non c'è proporzione fra il valore letto ed il riferimento.  
> Solo che perdi in range, come ti aveva detto anche Paolo.

Ehm.. e come faccio ad adattarla sui pin..!? È una cosa software o hardware???

Comunque (se non sto sparando una cavolata) in uscita dal sensore leggo più o meno 0.2v stando a 20°C.. Anche se lo riduco a 1.1v penso di stare nel range che mi serve.. Se misuro delle temperature penso che mi servono al massimo tra i 10 e i 40°C..

---

<div class="post-metadata">

**Author:** ![PaoloP](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paolop/32/214739_2.png) [@PaoloP](https://forum.arduino.cc/u/PaoloP)\
**Post date:** [April 11, 2013, 1:50pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/19 "2013-04-11T13:50:49Z")

</div>

LM35 se non sbaglio varia da 0 a 150°C ogni 10mv, quindi al massimo misuri 110°  
Per la temperatura ambiente è sufficiente, ma non puoi andare sotto zero per le temperature invernali in nord italia.  
Per adattare la tensione potresti usare un partitore resistivo, ma non hai questa necessità.

Controlla la tensione in entrata all'LM ed in uscita, dovrebbe rimanere stabile anche accendendo o spegnendo il display.

---

<div class="post-metadata">

**Author:** ![AleCune93](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@AleCune93](https://forum.arduino.cc/u/AleCune93)\
**Post date:** [April 11, 2013, 2:05pm UTC](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735/20 "2013-04-11T14:05:30Z")

</div>

In uscita resta stabile, in entrata varia..

[Next page](https://forum.arduino.cc/t/calcoli-per-temperatura-con-lm35dz/155735.md?page=2)
