Der Thermosensor DS18B20 im TO92-Gehäuse misst die Temperatur auf das Grad genau, übermittelt diese in digitaler Form im sogenannten 1-Wire-Protokoll und ist bereits für wenige Euro im Handel erhältlich. Er besitzt drei Pins, die Stromversorgung VDD, die 0 V-Erdung GND, sowie die Datenleitung DQ.
Der GPIO-Port Nr. 4 am Raspberry Pi unterstützt bereits das 1-Wire-Protokoll und kann direkt mit der Datenleitung des Sensors verbunden werden. Ground und Stromversorgung werden mit entsprechenden GPIO-Ports des Raspberry Pi verbunden (bspw. GPIO 1 und GPIO 9). Zwischen Stromversorgung und Datenleitung wird noch ein sogenannter Pull-Up Widerstand (4,7k Ohm) geschaltet, um eine störungsfreie Übertragung sicherzustellen. Der DS18B20 könnte über diesen Pull-Up Widerstand – im sogenannten parasitären Modus – auch ganz ohne Stromversorgung an VDD betrieben werden, der Betriebsstrom wird dann direkt über die Datenleitung DQ gezogen.
Der Sensor sollte nun bereits vom Raspberry Pi erkannt werden. Neuere Kernel-Versionen ab 2015 haben die dazu benötigten Module w1-therm und w1-gpio bereits geladen. Auf älteren Systemen müssen diese ggf. zunächst einzeln nachgeladen werden
sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm
und können bei Bedarf dauerhaft in die Datei /etc/modules eingetragen werden.
Auf neueren Systemen (ab 2015) sollte hingegen die passende Device-Tree-Konfiguration in der Datei /boot/config.txt eingetragen werden durch hinzufügen der Zeile
dtoverlay=w1-gpio,gpiopin=4
Alternativ für einen Betrieb mit Pull-Up-Stromversorgung und Verwendung von GPIO-Pin 7 als 1-Wire-Datenleitung
dtoverlay=w1-gpio-pullup,gpiopin=7
Je nach Änderung der Konfiguration muss das System neu gestartet werden. Auf dem Raspberry Pi findet sich nun im Dateisystem der neue Ordner
/sys/bus/w1/devices/...
und darin ein Unterordner mit der entsprechenden ID des jeweiligen Sensors.
In der Textdatei
/sys/bus/w1/devices/xx-(Sensor-ID)/w1_slave
findet sich nun eine Textzeile folgender Form
xx 00 4b 46 ff ff 02 10 xx t=23605
Diese Textzeile enthält den fortlaufend aktualisierten Temperaturwert des Sensors in tausendstel Grad (hier 23,6).
One Reply to “Thermosensor DS18B20 am Raspberry Pi”