Il mio DS18B20 sta leggendo in alto. Come posso ottenerlo per restituire la temperatura corretta?


10

Sto lavorando a un sistema di controllo del riscaldamento per la mia casa, ma ho problemi con la lettura del sensore di temperatura superiore a quanto mi aspetto.

Ho un clone Arduino Mini Pro da 5 V collegato a un modulo relè, un display HD47780 e un modulo Tiny RTC, con un DS18B20 collegato ad esso.

Il DS18B20 è alimentato dal 5v Vcc applicato al modulo Tiny RTC anziché utilizzare l'alimentazione parassita sulla linea DQ (poiché non ero sicuro che le librerie Onewire supportassero questa modalità operativa) e il foglio dati DS18B20 dice che Vcc potrebbe essere compreso tra 3.0v e 5.5v. Ho misurato la potenza regolata dal Mini Pro a 5,2 v.

Sto confrontando la temperatura del DS con il termostato ambiente esistente (bi-metallico), un monitor di temperatura desktop RS con due sensori, un piccolo "termoigrometro" e un termometro per frigorifero bi-metallico (nel quarto superiore della sua temperatura intervallo) . La lettura dal DS è sempre circa 1-2 gradi più alta della lettura degli altri sensori, che sono entro un grado l'uno dall'altro.

† Non quello attuale, ma qualcosa di simile.

Leggendo vari forum ho sentito che questi sensori sono abbastanza precisi ma possono soffrire di riscaldamento localizzato dai componenti vicini, quindi ho spostato il sensore su un cavo da 20 cm e l'ho posizionato ben lontano dal resto dell'elettronica. Questo non ha fatto differenza.

Ho quindi letto che il DS può diventare autoriscaldante se viene fornito con una tensione Vcc troppo alta, quindi ho aggiunto un LED rosso con caduta di 1,7 v e misurato la nuova tensione sul DS come 3,5 v, ma di nuovo, dopo aver atteso il le temperature per stabilizzarsi ancora una volta, questo non ha fatto differenza.

Qualcuno può suggerire perché il DS potrebbe leggere in alto e cosa posso fare per impedirlo?


Quanto sei sicuro che il tuo termostato ambiente non stia leggendo solo 1-2 gradi in basso ? Dovresti ottenere un terzo termometro e confrontarlo per determinare da dove proviene effettivamente il tuo offset . Poiché il termometro RS utilizza probabilmente la stessa elettronica di lettura per entrambi i sensori, probabilmente non è davvero utile come due riferimenti di calibrazione distinti.
Connor Wolf,

Risposte:


9

Ora ho installato molti sensori DS18B20 su vari nodi di sensori, forse circa 50. Ho imparato un po 'delle letture restituite da loro. So che hai isolato alcuni di questi come non essere la causa, ma è bene confermare che si tratta di problemi.

Non so se stai usando Celsius o Fahrenheit, quindi il grado del problema non è chiaro.

Riscaldamento localizzato

Non penso ad Arduino come un chip "caldo", ma mettere un DS18B20 in un contenitore con un Arduino e un LCD mi ha fatto vedere letture 2-3 ° C più alte del previsto.

Lo spostamento all'esterno del contenitore ha risolto questo problema.

Riscaldamento da Vcc elevato / conversioni frequenti

Se si fornisce al chip un Vcc elevato e si eseguono conversioni frequenti (ovvero il più frequentemente possibile), il chip si riscalda. Ho visto questo aumento letture di 1-2 ° C.

Non ho visto il problema con Vcc alto da solo, ma opero la maggior parte del DS18B20 in modalità parassita e converto al massimo una volta ogni 10 secondi. Quelli che funzionano in modalità attiva generalmente sono spenti quando non vengono utilizzati.

OneWire e DallasTemperature supportano la modalità parassita.

Non tutti i sensori di temperatura sono uguali

Avevo un numero di sensori di temperatura prima di iniziare a giocare con DS18B20. Quasi senza eccezione, questi sotto letti. La maggior parte di essi si basa su termistori e la calibrazione è scadente. Pensavo che il DS18B20 avesse finito di leggere, ma quando ho usato una buona termocoppia e un misuratore, ho potuto confermare che erano corretti.

Si trattava di imparare a fidarsi del DS18B20.

Calore condotto lungo il filo

Se hai i sensori su un filo, il filo conduce una quantità sorprendente di calore. Questo può essere un problema quando si esegue il cablaggio lungo i tubi.

DS18B20 falso

Questi sensori sono molto popolari e questo sembra aver fatto apparire falsi. Ho una serie di sensori impermeabili in acciaio inossidabile che hanno letto troppo e i tempi erano scaduti. Hanno lavorato con la libreria OneWire, ma non con un master OneWire DS2482. Ho sentito che anche quelli normali TO-92 sono falsi.


Nella grande saggezza del software di bordo, non sono autorizzato a rispondere a questa domanda, quindi aggiungerò un commento qui. Come ho scoperto nel modo più duro su github.com/PaulStoffregen/OneWire/issues/91 , se si utilizza un chip da 3,3 V, è necessario sostituire il resistore da 4,7k con un resistore da 2,7k, altrimenti alcuni sensori restituiranno valori errati.
Marc Merlin,

2

Nel mio caso, il cablaggio tra il mio uC e il sensore era troppo corto e trasmetteva calore. Inizialmente pensavo che non potesse essere così, dal momento che un altro sensore di temperatura riportava temperature accurate alla stessa distanza. L'ho spostato in un'altra posizione sul tabellone e voilà!


1

Forse potresti voler calibrare il tuo sensore.

Cosa legge quando è immerso in acqua bollente (presupponendo il livello del mare)? 102,5 gradi Celsius? Ciò ti darebbe una calibrazione ad alta temperatura di -2,5 ° C.

Ovviamente è meglio calibrare attorno alle temperature che ti aspetti di misurare. Ciò significa fidarsi (o fare la media?) Di un dispositivo di misurazione e calibrare su quello.


1

Ho visto offset di diversi gradi C usando DS18B20 su un bus da 3,3 V, passando a un bus stabile da 5,0 V e ho ottenuto valori più ragionevoli. (testato con e senza potere parassitario)


Questo è interessante, grazie e l'opposto di ciò che alcune persone hanno segnalato. Mi chiedo se questo è un altro problema di DS18B20 falso.
Mark Booth,

0

Ho fatto alcuni esperimenti. Se DS18B20 era su un cavo corto <1 cm dal mio Arduino Pro Micro, le letture erano 5 gradi in più rispetto all'ambiente. Sulla lunghezza del cavo> 10 cm dalla scheda Arduino e indipendentemente da dove fosse montata la resistenza (vicino ad Arduino o vicino a DS18B20) le letture andavano bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.