Der Temperatursensor DS18B20 kann bei der vergossenen Ausführung, die für ca. 2,00 Euro erhältlich ist, auch zur Messung in feuchten Umgebungen eingesetzt werden. Er arbeitet im Gegensatz zu den Sensoren DHT22 und DHT11 mit dem 1-Wire-Bus. Das bedeutet, dass die Datenleitung zwingend an den GPIO Pin 7 (BMC 4 / WiringPi 7) angeschlossen werden muss. Wenn zusätzliche Sensoren angeschlossen sind, müssen diese einen anderen PIN nutzen.

Aufbau

In den Schaltbild ist ein unvergossender Temeratursensor abgebildet. Die Schaltung ist für einen vergossenen Sensor die Gleiche. Der Wiederstand hat einen Wert von 4,7K Ohm. Ohne diesen Wiederstand wird der Temperatursensor nicht erkannt.

Schaltung DS18B20

Schaltung DS18B20

 

Programme

Zusätzliche Programme (Bibliotheken) für das Auslesen des Sensors sind nicht notwendig. Man muss jedoch das 1-Wire Protokoll auf dem Rasberry Pi aktivieren. Das geschieht über die Menüpunkte Einstellungen->Raspberry Pi Konfiguration. Dort muss man den Konfigurationspunkt Eindraht Bus einschalten und anschließend den Raspberry neu starten.

Eindraht-Bus aktivieren

Eindraht-Bus aktivieren

Nach dem Neustart des Raspberry kann man mit dem Befehl sudo lsmod prüfen, ob die Module für das 1-Wire Protokoll geladen worden sind. Es müssen drei Module mit den Namen w1_therm, w1_gpio und wire erscheinen.

Die Sensoren des 1-Wire-Bus erscheinen als Ordner und Textdateien im Order /sys/bus/w1/devices/ des Raspberry. Für jeden angeschlossenen Sensor wird ein Verzeichnis bestehend aus Zahlen und Buchstaben erstellt.

1wiredevices

1wiredevices

In desem Fall sind die Sensordaten in der Datei w1_slave in dem Ordner 28-0517c3d237ff zu finden. Der Wert wird in der Variable t abgelegt und muss noch durch 1000 geteilt werden, um die Temperatur zu erhalten. In diesem Fall 17,94°C.

Für eine Weiterverarbeitung der Daten kann ein Script geschrieben werden, dass die Datei w1_slave ausliest, nach einer Zeile sucht, die den Text t=xxxxxx enthält, und den Wert hinter dem Gleichheitszeichen weiterverarbeitet. Dieser Wert kann man dann zum Beispiel auf einem LCD-Display angezeigen, oder in einer Datenbank abspeichern.