beelogger

Temperatursensor (DS18B20)

Der DS18B20 ist ein digitaler Temperatursensor mit einer einstellbaren Auflösung von 9-12bit und eine Messgenauigkeit von ±0.5°C im Bereich von -10°C bis +85°C (außerhalb dieses Temperaturbereiches wird es ungenauer). Angesprochen wird der DS18B20 über den sogenannten ‘One-Wire-Bus’. Dadurch ist es möglich, an einem Datenpin vom Arduino, viele Sensoren gleichzeitig anzuschließen und nacheinander abzufragen. Der Begriff One-Wire kommt daher, weil man den Sensor mit nur einer Datenleitung (und GND) ohne zusätzliche Spannungsversorgung betreiben kann (parasitär). Grade bei mehreren Sensoren und bei längeren Leitungen, wird jedoch häufig von Problemen berichtet, weshalb diesem Sensor eine richtige Stromversorgung spendiert werden sollte.

Bezug

Den DS18B20 gibt es in verschiedenen Bauformen und auch fertig konfektioniert mit Kabel und wasserdichtem Gehäuse.

Der Sensor DS18B20 ist kompatibel mit beelogger-EasyPlug und beelogger-Solar !
Bild Bezugsquelle Preis ab Suchbegriffe* Bemerkungen
 beelogger DS18B20 eBay 1,00€ DS18B20 Bauform TO-92
 beelogger DS18b20 wasserdicht eBay 1,50€ DS18B20 mit Kabel und wasserdichtem Gehäuse

*Einkaufstipps

Beschaltung

Die fertig konfektionierten Sensoren im wasserdichten Gehäuse haben je nach Hersteller unterschiedlich farbige Leitungen.

beelogger DS18B20 Pinout

Die Beschaltung des DS18B20 ist sehr einfach. Versorgt wird der Sensor an ‘VDD’ mit einer Spannung von 3,0 bis 5,5V. ‘Data’ verbindet man mit Pin 3 des Arduinos. Fehlt noch ein Widerstand von 4,7K Ohm zwischen ‘VDD’ und ‘Data’ und die Verbindung von ‘GND’ mit Masse. Werden zwei Sensoren angeschlossen, beispielsweise für die Stocktemperatur und die Außentemperatur, ist die gleiche Verkabelung vorzunehmen. Ein weiterer Widerstand ist hierfür nicht notwendig.

beelogger DS18B20 Schaltung

Libraries

<OneWire.h> – https://github.com/PaulStoffregen/OneWire
<DallasTemperature.h> https://github.com/milesburton/Arduino-Temperature-Control-Library

Test-Programmcode

beelogger DS18B20 TestUm eine gewisse Integrität der Messwerte sicher zu stellen, wird geprüft, ob sich die Temperatur in einem gesetzten Wertebereich befindet. Mit diesem Test-Programmcode wird überprüft, ob sich die Temperatur zwischen -40 und +60°C befindet. Diese Abfrage deckt auch einige Verbindungsfehler ab, die sich mit einem Messwert von ‘-127’ darstellen.  Befindet sich der Messwert außerhalb des definierten Bereichs, bekommt die Variable den Wert ‘999.99‘. Mit diesem Test-Programmcode wird zusätzlich eine Fehlermeldung über den seriellen Monitor ausgegeben. Werden die Messwerte später an einen Webserver übertragen, erkennt das Skript zum Speichern der Datensätze den Wert ‘999.99‘ und es wird für diesen Sensor kein Messwert gespeichert. Dadurch wird die grafische Darstellung, beispielsweise durch Arbeiten am Sensor, nicht beeinträchtigt. Der Zwischenschritt über den Wert ‘999.99’, bietet dem Webserver oder dem Master eines Master-Client-Systems über Funk (RF433 oder nRF24L01) die Möglichkeit, ein Problem mit einem Sensor zu erkennen. Das ist bei Versendung eines ‘NULL-Wertes’, wie dies bei einem deaktivierten Sensor auch der Fall ist, nicht möglich. Eine Auswertung dieser Information ist derzeit nicht integriert, möglich wäre aber beispielsweise ein akustischer oder visueller Alarm am Master oder der Versand einer Email über den Webserver.

Zum Test des Sensors mit dem beelogger-Solar, muss zunächst die Stromversorgung aktiviert werden. Hierfür ist im Setup des Programmcodes der Pin 4 auf ‘HIGH’ zu setzen:

 

Ausgabe des seriellen Monitors (9600 baud):

Programmcode downloaden:

Download

Der komplette Programmcode für den Arduino Datenlogger mit Stockwaage für Imker ist unter Programmcode zu finden.