Beim DS18B20 handelt es sich um einen digitalen Temperatursensor im TO92 Gehäuse, der über einen One-Wire-Bus angesprochen wird. Auf diese Weise ist es möglich mehrere Sensoren an einem Mikrocontroller-Pin anzuschließen. Der Sensor besitzt eine Auflösung von 12 Bit und eine Messgenauigkeit von ±0.5°C im Messbereich von -55°C bis +125°C.
Wichtiger Hinweis:
Es handelt sich bei dem hier vorgestellten DS18B20 von AZ-Delivery nicht um das Original von Maxim. Der Parasitic Power Mode wird NICHT unterstützt, d.h. der Sensor muss am VCC Eingang mit 3.3V oder 5V Spannung versorgt werden. Beim Originalmodell von Maxim erfolgt die Stromversorgung über den Datenpin, beim Betrieb mit mehreren Sensoren am Bus ist aber auch hier eine separate Stromversorgung empfehlenswert, da sonst Probleme auftreten können.
Anschluss des DS18B20 an ein Arduino
Der DS18B20 verfügt nur über die drei Pins
- VCC
- Data (nicht parasitär!)
- GND
An den Pin VCC wird eine Spannung von 3.3V oder 5V angelegt. Der Data Pin wird mit einem digitalen Pin des Arduino verbunden, z.B. mit Pin 3. Zuletzt nur noch GND mit Masse verbinden.
Bitte nicht vergessen:
Zwischen VCC und Data muss noch ein Pull-Up-Widerstand von 4,7 kΩ geschaltet werden. Wenn weitere Sensoren angeschlossen werden und lange Leitungen eingesetzt werden, muss der Widerstand evtl. verkleinert werden.
Zur Demonstration des One-Wire-Bus habe ich in die Schaltung zwei Sensoren eingebaut. Hier ist nur ein Pull-Up-Widerstand in Höhe von 4,7 kΩ notwendig.
Beispiel-Quellcode
Um unsere Temperatursensoren auszulesen, schreiben wir wieder einen kleinen Code. Aber zunächst müssen wir zwei Bibliotheken installieren.
OneWire
https://github.com/PaulStoffregen/OneWire
Arduino-Temperature-Control-Library
https://github.com/milesburton/Arduino-Temperature-Control-Library