APiP – DS18B20

Rate this post

Installation des/der Temperatursensor/en (DS1820B)

Du kannst problemlos 1 – 10 Temperatursenseoren des Typs DS1820B an die Wire 1 Schnittstelle anschließen.
Wie du dies machen kannst, zeige ich dir hier:

Zuerst einmal die Beschaffung:
Ich habe mir die DS1820B bei EBay bestellt.
Ihr werdet Im Internet aber auch weitere Quellen finden.
Zum Testen habe ich mir seinerzeit das billigste Angebot (10 Sensoren für unter 20,00 Euro) herausgesucht.
Gleich eines Vorweg.. Ich war überrascht wie genau die  “China Sensoren” arbeiten.
Im Vergleich zu einem Standart Glasthermometer gab es nur geringe Abweichungen von weniger als +-0,5 °C.
Lediglich die Lieferzeit war übel.. Ich habe die aus China gewohnten 6 Wochen gewartet.

Zur Installation:
Bevor du beginnst, den Raspberry bitte vom Strom trennen.

Du benötigst also 1-10 DS1820B Sensor, einen 4,7k Ω Widerstand.
Die Sensoren schließt du in Reihe wie folgt an den Raspberry PI an
DS1820B  1820B 1

Bitte auf Verpolung achten. Wenn + und – vertauscht werden, kann der Sensor oder der Raspberry beschädigt werden.
Danach versorgst du den Raspberry wieder mit strom und bootest.

In allen neuen Images von Raspian (Kernel 3.18) wird der device tree (DT) genutzt.
Zur Zeit kann man dieses Verfahren noch ausschalten. Ich empfehle jedoch, ab sofort DT zu nutzen!
In naher Zukunft kann es sein, dass DT nicht mehr zu deaktivieren ist!

Du editierts nun wie folgt:
sudo nano /boot/config.txt
und schreibst folgende Zeile an das Ende der Datei:
dtoverlay=w1-gpio,gpiopin=4
Nun speicherst und verläßt die Datei.
und fürhrst folgende Befehle aus:
modprobe w1-gpio pullup=1
modprobe w1-therm
Mit dem 1 wire Bus kann man mehrere Sensoren abfragen.
Das funktioniert, weil jeder Sensor eine eigene digitale ID hat.
Dies kannst du wie folgt überprüfen:
cd /sys/bus/w1/devices
ls
Im Beispiel siehst du 3 Sensoren und einen Ordner:
28-00000608bc23
28-0000060a68ff
28-0000060a6e77

185
Diese 3 Sensor ID´s (oder in deinem Fall vielleicht nur 1 ID) notierst du dir bitte auf einen Zettel.
Diese wirst du noch öfter benötigen.

Das Scripten

Um Die Sensoren automatisiert und für uns anständig lesbar auswerten zu können,
werden wir uns ein paar Scripte schreiben.
Wir fangen hier natürlich mit dem Script zum auslesen der Temperatursensoren an.
Zuerst legen wir uns ein Scriptverzeichnis an.

sudo mkdir /home/pi/scripts/apip
sudo mkdir /home/pi/scripts/apip/log
cd /home/pi/scripts/apip

Jetzt erstellen wir unser erstes BASH Script.
sudo nano readtemp.sh
Das folgende Script kannst du in deine neu erstellte Datei kopieren.
Bitte passe das Script denen Bedürfnissen an.
Im Besiel werden 3 Sensoren ausgelesen.
Diese sind mit Aquarium 1 – 3 “beschriftet”.
Wenn du nur 1 Sensor nutzt, lösche einfach 2 und 3, nutzt du mehr als 3, erweitere einfach die Liste.
Was du auf jeden Fall ändern mußt, sind die Sensor ID´s, die du dir vorhin notiert hast.
Im Beispiel:28-00000608bc23 + 28-0000060a68ff + 28-0000060a6e77

#!/bin/bash
clear
# hier definieren wir einige Variablen
# Das Logfile
log=”/home/pi/scripts/apip/log/APiP.log”
#das aktuelle Datum und Uhrzeit
jetzt=`date +”%d.%m.%Y um %H:%M Uhr”`

echo Temperatur auslesen ausgefuerhrt am $jetzt >>$log
echo ________________________________________________________________>>$log

# ———– DS1820 auslesen
# Temperatur des Sensors Aquarium 1 auslesen
echo DS1820 A1 auslesen
echo DS1820 Aquarium 1 – $jetzt >>$log
Aquarium_1=$(awk -F’t=’ ‘NF == 2 { printf( “%.3f”, $2 / 1000 ) ; }’ /sys/bus/w1/devices/w1_bus_master1/28-00000608bc23/w1_slave)
echo “Gemessene Temperatur des Sensors” $Aquarium_1 “°C”

# Temperatur des Sensors Aquarium 2 auslesen
echo DS1820 A2 auslesen
echo DS1820 Aquarium 2 – $jetzt >>$log
Aquarium_2=$(awk -F’t=’ ‘NF == 2 { printf( “%.3f”, $2 / 1000 ) ; }’ /sys/bus/w1/devices/w1_bus_master1/28-0000060a68ff/w1_slave)
echo “Gemessene Temperatur des Sensors” $Aquarium_2 “°C”

# Temperatur des Sensors Aquarium 3 auslesen
echo DS1820 A3 auslesen
echo DS1820 Aquarium 3 – $jetzt >>$log
Aquarium_3=$(awk -F’t=’ ‘NF == 2 { printf( “%.3f”, $2 / 1000 ) ; }’ /sys/bus/w1/devices/w1_bus_master1/28-0000060a6e77/w1_slave)
echo “Gemessene Temperatur des Sensors” $Aquarium_3 “°C”

sudo chmod 777 /home/pi/scripts/apip/log/APiP.log
sudo chmod 777 readtemp.sh
Dann führst du dein erstes Script aus…
./readtemp.sh

nun solltest du ähnliches zusehen bekommen wie im folgenden Bild.
186

Wenn dem so ist, Glückwunsch. Deine Temperatursensoren arbeiten einwandfrei.
Wir werden das Script später weiter ausbauen, und die Werte in eine Datenbank schreiben lassen.
Hier ging es nun erst einmal nur darum, die ersten Werte zu sehen.

Print Friendly, PDF & Email

Kategorien

%d Bloggern gefällt das: