DS18B20

Einfach Temperatur messen mit dem DS18B20 und Python auf dem Raspberry Pi

Puh, ganz schön kalt/lauwarm/heiß hier drinnen. Du möchtest wissen, wie kalt/lauwarm/heiß es genau ist? Mit dieser hoch technologischen Temperaturerkennungsapparatur ist das kein Problem.

Pin 1Pin 2Pin 3
GND GroundDataVCC - 3,3V

[Vorne ist die flache Seite]

Der DS18B20, wie wir unseren kleinen Temperatursensor liebevoll nennen, ist ein recht simpel aufgebauter Sensor. Eine Besonderheit an ihm ist, dass er zur Kommunikation das One Wire Protokoll benutzt. Dies ermöglicht uns beliebig viele Sensoren an einen GPIO Pin des Raspberry Pi anzuschliessen. Mehr dazu erfährst du in den nächsten Kapiteln.

Raspberry Pi einrichten

Bevor du diesen Sensor benutzen kannst, musst du an deinem Pi noch ein paar Konfigurationen durchführen. Da der Pi ein ganz schön fauler Computer ist, spart er sich einfach etwas Arbeit und lädt nicht alle für uns wichtigen Pakete nach. Um das zu ändern, müssen wir die configx.txt Datei bearbeiten.

$ sudo nano /boot/config.txt

Füge am Ende dieses Dokumentes einfach folgende Zeile hinzu:

dtoverlay=w1-gpio,gpiopin=4

Speichern musst du mit mit Strg + X, dann y und am Ende noch Enter. Was haben wir jetzt eigentlich verändert? Ganz einfach, beim Start deines Pi wird jetzt immer das One Wire Interface geladen. Außerdem legen wir mit gpiopin=4 fest, dass der GPIO Pin 4 der zuständige One Wire Pin ist.

Alle wichtigen Einstellungen sind jetzt gespeichert. Damit alles auch einwandfrei funktioniert, musst du deinen Pi kurz neu starten.

$ sudo reboot

DS18B20 anschließen

GPIO Pins am PiPins am Sensor
3,3VVCC
GPIO4Data+ 4,7kΩ zu VCC
GNDGND

Das Verbinden des Sensors mit deinem Pi ist simpler als einen Kaktus am Leben zu erhalten. Du solltest darauf achten, den Data Pin und den VCC Pin mit einem 4,7kΩ Widerstand zu verbinden UND das er richtig rum ist!

Daten auslesen

Um ganz einfach die ersten Daten auszulesen, musst du, wenn alles richtig angeschlossen ist, erstmal einen großen Berg versetzen. Da dieser Sensor ein One-Wire Sensor ist, kannst du alle Daten auch in dem Verzeichnis von den One-Wire Geräten lesen.

$ cd /sys/bus/w1/devices
$ ls

Alle One-Wire Geräte haben eine spezifische Adresse, die einzigartig ist. Beim DS18B20 fangen diese Adressen gewöhnlich mit 28-xxxxxxxxxxxxx an. Deswegen ersetzt du einfach die xxxxxxxxxxxxx durch deine Nummer in den nachfolgenden Beispielen.

$ cd 28-xxxxxxxxxxx

In diesem Ordner sehen wir verschiedene Dateien. Die einzige Datei, die für uns jetzt interessant ist, ist die w1_slave. In dieser steht auch die gemessene Temperatur, die wir aber zuerst auslesen müssen.

$ cat w1_slave

In der ersten Zeile ist vor allem das Ende wichtig, weil uns das YES anzeigt, dass alle Daten korrekt gelesen wurden. In der zweite Zeile steht am Ende die Temperatur. In diesem Fall beträgt die Zimmertemperatur gerade 21,625°C. Für mich persönlich eine sehr angenehme Temperatur, ein Pinguin fände es wahrscheinlich etwas zu warm. So viel zur subjektiven Wahrnehmung einer objektivierten Einheit durch unterschiedliche Individuen.

Auch wenn viele Nachkommastellen angegeben werden, hat der Sensor eine Ungenauigkeit von ± 0,5°C. Das heißt, in diesem Fall liegt die echte Temperatur zwischen 21,1°C und 22,1°C

Questions? Feedback?



Answered Questions

Gast User 18:30 14.04.2016

Hallo, warum ist bei euch in der Zeichnung denn der Sensor-GND-Anschluss mit dem Pin2 des Raspi verbunden. Da liegen doch 5 V an und das sollte doch wahrscheinlich schief gehen, oder? Wollte es nicht ausprobieren, weil ich Angst hatte irgendwas irreparabel zu beschädigen. Zumindest hat mich euer erster Kurs aber schon dorthin gebracht, dass ich es von selbst an den Pin6/GND des Raspi angeschlossen habe. ;)

Samuel 18:43 14.04.2016

Stimmt danke für den Hinweis!!!