Sensorwerte in eine Datei schreiben lassen
Der Temperatursensor
Der hier verwendete Temperatursensor DS18B20 ist ein digitaler Sensor. Er hat eine abgeflachte Seite. Wenn wir diese Seite von vorne betrachten, dann können wir die drei Leitungen wie folgt zuordnen:
- Leitung 1 (GND): Masse
- Leitung 2 (DQ): Signalleitung
- Leitung 3 (VDD): 3,3V Spannung (bei sehr langen Leitungen auch 5V)
Zusätzlich benötigen wir noch Pullup-Widerstand von 4.7kΩ , der immer zwischen 3,3V und der Datenleitung liegen muss.
Warnung!
Vertauscht man versehentlich Leitung 1 und Leitung 3, dreht man also den Temperatursensor um 180 Grad, dann wird er sehr schnell sehr heiß.
Es besteht Verletzungsgefahr!
Im Falle eines Falles das Steckbrett von Spannung befreien und einige Zeit abwarten, bis der Sensor sich abgekühlt hat.
Die Schaltung
UPDATE: Notwendige Systemkonfiguration zur Verwendung des Sensors (Raspbian ab Ende 2017)
Das notwendige 1-Wire-Protokoll kann im Startemenü Einstellungen/Raspberry Pi Konfiguration
und dort im Reiter Schnittstellen
aktiviert werden (Eindrahtbus
aktivieren). Nach einem Neustart des Systems schreibt jetzt ein Dienst fortlaufend die aktuelle Temperatur in eine Datei. Diese Datei befindet sich im Dateibaum je nach Sensor in einen Ordner mit einem Namen, der mit 28-000
beginnt, z.B.:
/sys/bus/w1/devices/28-0000079a2709/w1_slave
Notwendige Systemkonfigurationen zur Verwendung des Sensors (RasPi 1+2, RasPi-Kernel bis 3.18)
Der Temperatursensor hat einen internen Digitalwandler und sendet seine Messwerte als serielle Folge von Nullen und Einsen über seine Signalleitung (Ein-Draht-Bus).
Standardmäßig wird am RasPi dafür der GPIO-Pin 7 (GPIO-4) verwendet! Dazu müssen allerdings die entsprechenden Treiber für einen Ein-Draht-Bus (1-wire-bus) im System aktiviert werden. Hierzu sind folgende Schritte nötig:
- Öffne die Datei
/boot/config.txt
mit Superuser-Rechten in einem Editor. Gib dazu in der Konsole diesen Befehl ein:sudo leafpad /boot/config.txt
- Trage am Ende der Datei eine Zeile mit folgendem Inhalt ein:
dtoverlay = w1-gpio, gpiopin = 4 , pullup = on
- Anschließend im Editor Speichern und Beenden
- Entsprechend müssen in die Datei
/etc/modules
folgende Zeilen eingefügt werden:
snd-bcm2835
w1-gpio
w1_therm
- Nach einem Neustart des Systems schreibt jetzt ein Dienst fortlaufend die aktuelle Temperatur in die Datei
w1_slave
. Diese Datei befindet sich im Dateibaum je nach Sensor in einen Ordner mit einem Namen, der mit28-000
beginnt, z.B.:
/sys/bus/w1/devices/28-0000079a2709/w1_slave
- In der Datei
w1_slave
steht der Temperaturwert ganz am Schluss der zweiten Zeile, in diesem Fall 20,875 Grad Celsius:
33 00 4b 46 ff ef 14 10 45 : crc=e4 YES
33 00 4b 46 ff ef 14 10 45 t=20875
Notwendige Systemkonfiguration zur Verwendung des Sensors (RasPi 3, RasPi-Kernel ab 3.18)
Das Konfiguration ist jetzt stark vereinfacht! Es muss lediglich folgende Anpassung vorgenommen werden:- Öffne die Datei
/boot/config.txt
mit Superuser-Rechten in einem Editor. Gib dazu in der Konsole diesen Befehl ein:sudo leafpad /boot/config.txt
- Trage am Ende der Datei eine Zeile mit folgendem Inhalt ein:
dtoverlay=w1-gpio
- Anschließend im Editor Speichern und Beenden
- Nach einem Neustart des Systems schreibt jetzt ein Dienst fortlaufend die aktuelle Temperatur in eine Datei Diese Datei befindet sich im Dateibaum je nach Sensor in einen Ordner mit einem Namen, der mit
28-000
beginnt, z.B.:
/sys/bus/w1/devices/28-0000079a2709/w1_slave
.
Quellen
- [1]: Temperatursensor - Urheber: JOM - Lizenz: Inf-Schule.de
- [2]: Temperatursensor auf Steckplatine - Urheber: Fritzing, Fabian König - Lizenz: Creative Commons BY-SA 3.0 International