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 allen beelogger Varianten! |
Bild | Bezugsquelle | Preis ab | Suchbegriffe* | Bemerkungen |
![]() |
eBay | 1,00€ | DS18B20 | Bauform TO-92 |
![]() |
eBay | 1,50€ | DS18B20 | mit Kabel und wasserdichtem Gehäuse |
Beschaltung
Die fertig konfektionierten Sensoren im wasserdichten Gehäuse haben je nach Hersteller unterschiedlich farbige Leitungen.
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 Pull-Up 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. Werden weitere DS18B20 angeschlossen oder besonders lange Leitungen verwendet, kann es notwendig werden den Pull-Up Widerstand auf einen Wert bis zu 1,8 kOhm zu verringern.
Libraries
<OneWire.h> – https://github.com/PaulStoffregen/OneWire
<DallasTemperature.h>
– https://github.com/milesburton/Arduino-Temperature-Control-Library
Die Versionen für den beelogger sind im Library-Paket enthalten.
Test-Programmcode
Der Programmcode enthält neben einer Abfrage der angeschlossenen Sensoren eine zusätzliche Prüfung beim Auslesen den Sensoren auf mögliche Verbindungsfehler. Tritt ein Problem auf, beispielsweise durch ein loses Kabel, bekommt die entsprechende Variable für Temperatur einen vordefinierten Wert. 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 Server-Skript zum Speichern der Datensätze einen Fehler mit dem vordefinierten Wert und es wird für diesen Sensor kein Messwert gespeichert. Dadurch wird die grafische Darstellung, beispielsweise durch Arbeiten am Sensor, nicht beeinträchtigt.
Die neue Version des DS18B20 Testsketches liest die Adressen der DS18B20 aus.
Damit kann bei Bedarf in den Multi-Sketchen ein Auslesen der DS18B20 über die Adressen mit der daraus vorgegebenen Reihenfolge durchgeführt werden.
Testprogrammcode hier herunterladen
Ausgabe des seriellen Monitors (9600 baud):
DS18B20 Test Anzahl aktivierter Sensoren: 2 Anzahl angeschlossener Sensoren: 2 Sensor 1: 31.44 Sensor 2: 31.62 Sensor 1: 31.44 Sensor 2: 31.62 Sensor 1: 31.44 Sensor 2: 31.62
Der Programmcode zum Messbetrieb für den Arduino Datenlogger mit Stockwaage für Imker ist für ATmega328 oder STM32Fxyz für unterschiedliche Konfigurationen mit bis zu vier Waagen pro System verfübgar.