Mein DS18B20 liest hoch. Wie kann ich dafür sorgen, dass die richtige Temperatur zurückgegeben wird?

10

Ich arbeite an einem Heizungssteuerungssystem für mein Zuhause, habe jedoch Probleme mit einem höheren Temperatursensor als erwartet.

Ich habe einen 5-V-Arduino Mini Pro-Klon an ein Relaismodul, ein HD47780-Display und ein Tiny RTC-Modul angeschlossen, an das ein DS18B20 angeschlossen ist.

Der DS18B20 wird mit 5 V Vcc betrieben, die an das Tiny RTC-Modul angelegt werden, anstatt parasitäre Stromversorgung auf der DQ-Leitung (da ich nicht sicher war, ob die Onewire-Bibliotheken diesen Betriebsmodus unterstützen) und dem DS18B20-Datenblatt besagt, dass Vcc möglicherweise dazwischen liegt 3,0 V und 5,5 V. Ich habe die geregelte Leistung des Mini Pro bei 5,2 V gemessen.

Ich vergleiche die Temperatur des DS mit dem vorhandenen Raumthermostat (Bimetall), einem RS-Desktop-Temperaturmonitor mit zwei Sensoren, einem kleinen „Thermo-Hygrometer“ und einem Bimetall-Kühlschrankthermometer (im oberen Viertel seiner Temperatur) Bereich) . Die Anzeige vom DS ist immer um 1-2 Grad höher als die Anzeige von den anderen Sensoren, die innerhalb eines Grades voneinander liegen.

† Nicht der eigentliche, aber etwas Ähnliches.

Beim Lesen verschiedener Foren habe ich gehört, dass diese Sensoren ziemlich genau sind, aber unter lokaler Erwärmung durch Komponenten in ihrer Nähe leiden können. Deshalb habe ich den Sensor auf ein 20-cm-Kabel gelegt und ihn weit vom Rest der Elektronik entfernt positioniert. Das machte keinen Unterschied.

Ich habe dann gelesen, dass der DS sich selbst erwärmen kann, wenn er mit einer zu hohen Vcc-Spannung versorgt wird. Deshalb habe ich eine rote LED mit einem Abfall von 1,7 V hinzugefügt und die neue Spannung über dem DS als 3,5 V gemessen, aber auch nach dem Warten auf die Temperaturen wieder zu stabilisieren, machte dies keinen Unterschied.

Kann jemand vorschlagen, warum der DS möglicherweise hoch liest und was ich tun kann, um dies zu verhindern?

Mark Booth
quelle
Wie sicher sind Sie, dass Ihr Raumthermostat nicht nur 1-2 Grad niedrig anzeigt ? Sie sollten sich ein drittes Thermometer zulegen und vergleichen, um festzustellen, woher Ihr Offset tatsächlich stammt . Da das RS-Thermometer wahrscheinlich für beide Sensoren dieselbe Ausleseelektronik verwendet, ist es als zwei unterschiedliche Kalibrierungsreferenzen wahrscheinlich nicht wirklich nützlich.
Connor Wolf

Antworten:

9

Ich habe jetzt viele DS18B20-Sensoren an verschiedenen Sensorknoten installiert - vielleicht 50 oder so. Ich habe etwas über die von ihnen zurückgegebenen Messwerte gelernt. Ich weiß, dass Sie einige davon als nicht die Ursache isoliert haben, aber es ist gut zu bestätigen, dass es sich um Probleme handelt.

Ich weiß nicht, ob Sie Celsius oder Fahrenheit verwenden, daher ist der Grad des Problems nicht klar.

Lokalisierte Heizung

Ich stelle mir Arduino nicht als "heißen" Chip vor, aber wenn ich einen DS18B20 in ein Gehäuse mit Arduino und LCD steckte, sah ich Werte, die 2-3 ° C höher waren als erwartet.

Durch Verschieben außerhalb des Gehäuses wurde dies behoben.

Erwärmung durch hohe Vcc / häufige Umwandlungen

Wenn Sie den Chip mit einem hohen Vcc versorgen und häufige Konvertierungen durchführen (dh so oft wie möglich), erwärmt sich der Chip. Ich habe diesen Anstieg der Messwerte um 1-2 ° C gesehen.

Ich habe das Problem mit hohem Vcc nicht alleine gesehen, aber ich betreibe die meisten DS18B20 im parasitären Modus und konvertiere höchstens einmal alle 10 Sekunden. Bei denjenigen, die im aktiven Modus betrieben werden, ist die Stromversorgung im Allgemeinen ausgeschaltet, wenn sie nicht verwendet werden.

OneWire und DallasTemperature unterstützen den parasitären Modus.

Nicht alle Temperatursensoren sind gleich

Ich hatte eine Reihe von Temperatursensoren, bevor ich anfing, mit DS18B20 herumzuspielen. Fast ausnahmslos werden diese unterlesen. Die meisten von ihnen basieren auf Thermistoren und die Kalibrierung ist schlecht. Ich dachte, der DS18B20 hätte zu viel gelesen, aber als ich ein gutes Thermoelement und Messgerät verwendete, konnte ich überprüfen, ob sie korrekt waren.

Hier ging es darum zu lernen, dem DS18B20 zu vertrauen.

Wärme entlang Draht geleitet

Wenn Sie die Sensoren an einem Draht haben, leitet der Draht überraschend viel Wärme. Dies kann ein Problem sein, wenn Kabel entlang von Rohren verlegt werden.

Gefälschter DS18B20

Diese Sensoren sind sehr beliebt, und dies scheint zu Fälschungen geführt zu haben. Ich habe eine Reihe wasserdichter Edelstahlsensoren, die überlesen wurden und deren Timing abgelaufen war. Sie arbeiteten mit der OneWire-Bibliothek, aber nicht mit einem DS2482 OneWire-Master. Ich habe gehört, dass die normalen TO-92-Gehäuse ebenfalls gefälscht sind.

Cybergibbons
quelle
2

In meinem Fall war die Verkabelung zwischen meinem uC und dem Sensor zu kurz und übertrug etwas Wärme. Ich dachte, dass dies zunächst nicht der Fall sein könnte, da ein anderer Temperatursensor genaue Temperaturen in derselben Entfernung anzeigt. Ich habe es an einen anderen Ort auf der Tafel verschoben und voila!

Jordan Sitkin
quelle
1

Vielleicht möchten Sie Ihren Sensor kalibrieren.

Was liest es, wenn es in kochendes Wasser getaucht ist (unter der Annahme des Meeresspiegels)? 102,5 Grad Celsius? Das würde Ihnen eine Hochtemperaturkalibrierung von -2,5 ° C geben.

Offensichtlich ist es besser, um die Temperaturen zu kalibrieren, die Sie von mir erwarten. Das bedeutet, einem Messgerät zu vertrauen (oder zu mitteln?) Und darauf zu kalibrieren.

Kingsley
quelle
1

Ich habe Offsets von mehreren Grad C gesehen, als ich DS18B20 auf einem 3,3-V-Bus verwendet und auf einen stabilen 5,0-V-Bus umgeschaltet habe, und ich habe vernünftigere Werte erhalten. (getestet mit und ohne parasitäre Kraft)

NiKiZe
quelle
Das ist interessant, danke und das Gegenteil von dem, was einige Leute berichtet haben. Ich frage mich, ob dies ein weiteres falsches DS18B20-Problem ist.
Mark Booth
0

Ich habe einige Experimente gemacht. Wenn der DS18B20 über ein kurzes Kabel <1 cm zu meinem Arduino Pro Micro verfügt, waren die Messwerte 5 Grad höher als in der Umgebung. Bei einer Kabellänge> 10 cm von der Arduino-Platine und unabhängig davon, wo der Widerstand montiert war (in der Nähe von Arduino oder in der Nähe von DS18B20), waren die Messwerte in Ordnung.

Michal.S
quelle