Temperaturen mit dem Raspberry Pi messen

Der Raspberry Pi hat nur digitale IO-Pins. Messdaten sammeln kann man also nur mit Hilfe eines AD-Wandlers, oder man benutzt gleich Sensoren, die Werte digital liefern. Um Temperaturen zu messen kommt dafür zum Beispiel der Sensor DS18B20 in Frage. Im Folgenden werde ich kurz beschreiben, wie dieser Sensor angeschlossen und ausgelesen wird.

DS18B20Der Sensor kommt mit einem ca. halben Meter langen Kabel. Er hat drei Anschlüsse: Plus 3,3 V (rot), Minus (schwarz) und den dritten für die Datenübertragung (gelb).

Der Anschluss an den Raspberry Pi ist relativ simpel: Der rote Draht wird an einen +3,3V Pin und der Schwarze an einen GND-Pin angeschlossen. Der gelbe Draht wird an GPIO-Pin 4 angeschlossen. Das Datenkabel kann sicherlich auch an andere GPIO Pins angeschlossen werden, dass habe ich aber nicht getestet. Laut Datenblatt soll zwischen Plus (rot) und dem Datenkabel (gelb) ein 4,7 Kilo-Ohm Widerstand angeschlossen werden.

Es ist übrigens ohne Probleme möglich mehrere von diesen Sensoren an den gleichen Datenpin anzuschließen!

Das ist schon alles, was angeschlossen werden muss. Nun kann es direkt los gehen und die erste Temperatur kann ausgelesen werden. Das funktioniert auch ganz einfach. Dafür müssen zuerst die Treiber für den Sensor geladen werden. Das funktioniert mit den beiden Konsolenbefehlen

sudo modprobe w1-gpio

sudo modprobe w1-therm

tempAuslesenDamit sind die Treiber geladen und es kann auf den Sensor zugegriffen werden. Dafür wechselt man in den Ordner /sys/bus/w1/devices und bekommt dort alle angeschlossenen Sensoren angezeigt. Auf dem Bild sind das zwei der Temperaturfühler mit den Seriennummern „28-000004ac1efa“ und „28-000004acc093“. Die Seriennummern die hier angezeigt werden sind eigentlich Ordner und wenn man in einen dieser Ordner wechselt sieht man dort die Datei „w1_slave“. Wenn man sich diese Datei ansieht, dann findet man ganz am Ende die Temperatur. In diesem Fall t=-1062. Es ist natürlich nicht -1062 °C kalt sondern -1,062°C. Der angezeigte Wert muss also immer durch Tausend geteilt werden.

Wenn man ein Programm schreiben möchte, dass die Daten automatisch ausliest gibt es verschiedene Möglichkeiten dies zu tun. Die einfachste ist einfach wie hier beschrieben die Treiber zu laden und mit dem Programm die entsprechende Datei öffnen und den Wert übernehmen. Die andere und sicherlich etwas kompliziertere Möglichkeit ist, sich das Datenblatt des Sensors zu suchen und die komplette Kommunikation mit dem Sensor selbst zu programmieren. Aber zum automatischen auslesen der Daten wird es noch einen extra Artikel geben.

Schreibe einen Kommentar