4
Messen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen die Temperatur gemessen werden. Dazu kann man den Sensor DS18B20 der Firma Dallas/Maxim verwenden, der mit nur 1 Datenleitung an den Mikrocontroller oder RaspberryPi angeschlossen wird. Darüber hinaus können bis zu 15 Sensoren an die gleiche Datenleitung angeschlossen werden, da jeder Sensor eine individuelle Codierung besitzt, die mit dem 1-wire-Protokoll der Firma Dallas ausgewertet wird. Die Firma Adafruit bietet in einem Sensorkit einen fertig beschalteteten DS18B20 an, zusammen mit passenden Python-Programmen. Für einen Test verwende ich einen RaspberryPi 3 mit dem Betriebssystem raspbian jessie vom 25.11.2016 und die Programmiersprache Python 2.7.9. Auf einem Lochraster-Testboard kann ich bis zu 15 weitere DS18B20 anschliessen. Von der Steckerleiste des Raspberrys verbinde ich die Masse (Pin6) und die Versorgungsspannung 3,3V (Pin1) mit den jeweiligen Pins der Sensoren. Für alle Sensoren benötige ich eine Daten-Leitung ( GPIO = GeneralPurposeInputOutput) zum Auslesen der Daten: GPIO4 (Pin7) mit der 1-wire-Kommunikation Im Ruhezustand liegt die Datenleitung auf High = 3,3V, bei Aktivität wird sie vom Rechner oder vom Sensor mit einem Transistor auf Masse gezogen. Deshalb benötigt die Datenleitung einen Widerstand von 4,7 kOhm zur Versorgungsspannung ( PullUp ). Damit der RaspbeeryPi über den 1-wire ( One-Wire ) Bus mit dem Sensor DS18B20 kommunizieren kann, muss dieser im Betriebssystem raspbian jessie aktiviert werden: Mit dem Editor nano wird eine neue Zeile in die Datei /boot/config.txt eingefügt: sudo nano /boot/config.txt dtoverlay=w1-gpio,gpiopin=4 Danach muss der RaspberryPi neu gebootet werden: sudo reboot Das Beispielprogramm KY-001_RPi_TemperaturSensor.py liest nur einen DS18B20 aus, aber es gibt im Internet weitere Beispiele, die auch mehrere Sensoren auslesen. Aus diesen habe ich das Programm "logtemp-3.py" entwickelt. Nach allgemeinen Deklarationen werden die Ergebnis-Datei" logtemp-3-datum-stunde.dat" und die 1 / 4

Messen der Temperatur mit DS18B20 Juni – Dezember 2017 fileMessen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Messen der Temperatur mit DS18B20 Juni – Dezember 2017 fileMessen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen

Messen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken

In einem Bienenstock soll an verschiedenen Stellen die Temperatur gemessen werden. Dazu kann man den Sensor DS18B20 der Firma Dallas/Maxim verwenden, der mit nur 1 Datenleitung an den Mikrocontroller oder RaspberryPi angeschlossen wird. Darüber hinaus können bis zu 15 Sensoren an die gleiche Datenleitung angeschlossen werden, da jeder Sensor eine individuelle Codierung besitzt, die mit dem 1-wire-Protokoll der Firma Dallas ausgewertet wird. Die Firma Adafruit bietet in einem Sensorkit einen fertig beschalteteten DS18B20 an, zusammen mit passenden Python-Programmen.Für einen Test verwende ich einen RaspberryPi 3 mit dem Betriebssystem raspbian jessie vom 25.11.2016 und die Programmiersprache Python 2.7.9. Auf einem Lochraster-Testboard kann ich biszu 15 weitere DS18B20 anschliessen. Von der Steckerleiste des Raspberrys verbinde ich die Masse (Pin6) und die Versorgungsspannung 3,3V (Pin1) mit den jeweiligen Pins der Sensoren.

Für alle Sensoren benötige ich eine Daten-Leitung ( GPIO = GeneralPurposeInputOutput) zum Auslesen der Daten: GPIO4 (Pin7) mit der 1-wire-KommunikationIm Ruhezustand liegt die Datenleitung auf High = 3,3V, bei Aktivität wird sie vom Rechner oder vom Sensor mit einem Transistor auf Masse gezogen. Deshalb benötigt die Datenleitung einen Widerstand von 4,7 kOhm zur Versorgungsspannung ( PullUp ).

Damit der RaspbeeryPi über den 1-wire ( One-Wire ) Bus mit dem Sensor DS18B20 kommunizieren kann, muss dieser im Betriebssystem raspbian jessie aktiviert werden:

Mit dem Editor nano wird eine neue Zeile in die Datei /boot/config.txt eingefügt:sudo nano /boot/config.txtdtoverlay=w1-gpio,gpiopin=4Danach muss der RaspberryPi neu gebootet werden:sudo reboot

Das Beispielprogramm KY-001_RPi_TemperaturSensor.py liest nur einen DS18B20 aus, aber es gibt im Internet weitere Beispiele, die auch mehrere Sensoren auslesen.Aus diesen habe ich das Programm "logtemp-3.py" entwickelt.Nach allgemeinen Deklarationen werden die Ergebnis-Datei" logtemp-3-datum-stunde.dat" und die

1 / 4

Page 2: Messen der Temperatur mit DS18B20 Juni – Dezember 2017 fileMessen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen

Steuer-Datei "logtemp-3-datum-stunde.plt" erzeugt.Nach dem Transfer auf einen PC können so die Messergebnisse sehr gut mit dem Programm Gnuplot-V5 gezeichnet werden.

In der Hauptschleife werden die Messwerte von bis zu 9 DS18B20 ausgelesen und in die Liste temp[x] geschrieben. Sind alle 9 Sensoren ausgelesen, werden die Daten auf die Konsole und in die Ergebnis-Datei geschrieben. Dann wird gewartet, bis der nächste Durchgang starten kann. Mit der Variablen secdel = 10 gibt es alle 10 Sekunden Messwerte.

Da die 9 Sensoren nicht exakt genau messen, kann man jede Temperatur mit einem Korrektur-Faktor korrigieren.

Vom PC aus kann man mit dem Programm WinSCP über das WLAN die Messdaten vom RasberryPi holen und dann mit dem Programm Gnuplot-V5 auswerten.

Zum Dauertest läuft das Programm logtemp-3.py und misst auf meinem Schreibtisch die Temperatur. Die Korrekturwerte für Temperatur wurden experimentell ermittelt und sind im Programm hinterlegt. Die Temperatur-Daten stimmen recht genau überein, mit etwas Geschick gibt es Abweichungen von nur 1/10 °C.

Am 1.6.2017 habe ich die 9 Sensoren in ein Glas Wasser getaucht, damit sie alle die gleiche Temperatur annehmen. Nach dem Bestimmen der Korrektur-Faktoren habe ich dann zuerst heisses Wasser in das Glas geschüttet, damit es sich auf über 60 °C erwärmt. Nach dem Abkühlen habe ich dann etwas Eis in das Glas geschüttet, so dass das Wasser schnell abkühlt und sich dann langsam wieder erwärmt.

2 / 4

Page 3: Messen der Temperatur mit DS18B20 Juni – Dezember 2017 fileMessen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen

Im Dezember 2017 habe ich das Messprogramm PlotDS18B20.py auf einem PiTop-CEED mit dem Betriebssystem "raspbian scratch" weiter entwickelt und 9 Sensoren DS18B20 angeschlossen.

Alle 10 Sekunden werden 9 Sensoren ausgelesen, mit einer Differenz korrigiert, auf der Konsole ausgegeben und in einer Datei PlotDS18B20-yyyymmtt-hh.dat gespeichert. Dazu wird ein Plotfile *.plt für Gnuplot V5 und ein Shellfile *.sh erzeugt, das gnuplot auf Mausklick aufruft. So kann auf dem RaspberryPi mit einem Klick ein aktuelles Bild erzeugt werden. Um Mitternacht werden alle Dateien neu erzeugt, so dass bei Non-Stop-Betrieb Tagesplots erzeugt werden.

Die 9 Sensoren habe ich gebündelt in eine Thermoskanne gesteckt, die mit Eis oder heissem Wasserbefüllt werden kann. Die ersten Tests verliefen sehr erfolgreich.

Im Bienenstock kann man z.B. eine Zarge mit 3 Sensoren ausstatten.

3 / 4

Page 4: Messen der Temperatur mit DS18B20 Juni – Dezember 2017 fileMessen der Temperatur mit DS18B20 Juni – Dezember 2017 Von Didi Lamken In einem Bienenstock soll an verschiedenen Stellen

Am 12.12.2017 habe ich die 9 Sensoren um 0:30 Uhr in einem kleinen Röhrchen mit Wasser in die Tiefkühltruhe gelegt und um 9:30 wieder herausgenommen und in die Thermoskanne gesteckt. Um 11:00 Uhr habe ich sie herausgenommen, damit das Eis schneller schmilzt. Man erkennt, wie beim Frieren und beim Schmelzen die Temperatur bei 0°C eine Weile konstant bleibt. Um 15:15 Uhr habe ich die Sensoren in die Thermoskanne mit kochendem Wasser gesteckt, wo sie sich schnell erhitzen und dann langsam abkühlen.

Auch über den grossen Temperatur-Unterschied von -35°C zu 93°C gibt es zwischen den 9 Sensoren nur geringe Unterschiede von unter 1 °C , wenn man sie für eine bestimmte Temperatur abgeglichen hat. Nur bei schnellen Temperaturänderungen weichen sie voneinander ab, weil einige Sensoren in der Mitte liegen und damit weiter entfernt vom Eis oder heissem Wasser.

4 / 4

-40

-30

-20

-10

0

10

20

30

40

50

60

70

80

90

100

00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 00:00

Tem

pera

tur

in °

C

Zeit in Stunden:Minuten

Temperatur am 12.12.2017 ab 00:00:00

Di 12. Dez 2017 22:25:11

1 Temperatur 12 Temperatur 23 Temperatur 34 Temperatur 45 Temperatur 56 Temperatur 67 Temperatur 78 Temperatur 89 Temperatur 9

10

20

30

40

00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 00:00

Tem

pera

tur

in °

C

Zeit in Stunden:Minuten

Temperatur am 13.12.2017 ab 00:00:00

Mi 13. Dez 2017 22:39:17

1 Temperatur 12 Temperatur 23 Temperatur 34 Temperatur 45 Temperatur 56 Temperatur 67 Temperatur 78 Temperatur 89 Temperatur 9