i

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:

Temperatursensor DS1820[1]

  • 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

Temperatursensor auf Steckplatine[2]

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 mit 28-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

Suche

v
11.5.5.1
www.inf-schule.de/vernetzung/raspi/wetterstation/sensor

Rückmeldung geben