Inhaltsverzeichnis

Temperaturmessung mit digitemp

Zum Erfassen von Temperaturdaten, wie z.B. Raum-, Umgebungs-, Gehäusetemperaturen, oder Steckkarten, die von Haus aus keine Temperaturüberwachung haben (z.B. DVB-Karten unseres VDR) nutzen wir digitemp.

Photo eines fertigen Messfühlers

Hardware - Schaltung

Mittels einer kleinen Schaltung, die locker in ein DIN SUB-D Gehäuse passt können mehrere Meßsensoren der Baureihe DS18S20 angeschlossen werden.

Photo eines fertigen Messfühlers Lötseite Photo eines fertigen Messfühlers Bauteilseite

Bauteilliste

Die Bauteile holen wir uns am einfachsten beim einschlägigen Fachhandel (Kostenpunkt ca. 10 €). Folgende Kleinteile stehen auf der Bestellliste:

Schaltplan

Das ganze wir anhand des nachfolgenden Schaltplanes entweder direkt an die SUB-D 9 Buchse gelötet, oder man gönnt sich den Luxus einer kleinen Lochrasterplatine.

Den bzw. die Sensoren DS19S20 werden dann gemäß Schaltplan mit der Steuerplatine verbunden - will man mehrere Sensoren betreiben, so werden diese einfach parallel geschaltet. Die PIN-Belegung des DS18S20 ist wie folgt.

Software - digitemp

Zum „Auslesen“ der Temperaturfühler verwenden wir digitemp, welches als binary für Linux zur Verfügung steht.

Diese holen wir uns per wget von der Digitemp Homepage herunter und installieren wie folgt:

 # cd /usr/local/src/
 # wget http://www.digitemp.com/software/linux/digitemp-3.5.0.tar.gz
 # tar zxvf digitemp-3.5.0.tar.gz
 # ln -s digitemp-3.5.0 digitemp

Da das Ausleseprogramm wie erwähnt bereits als binary vorliegt verlinken wir das Programm einfach nach /usr/local/bin.

 # ln -s /usr/local/src/digitemp/digitemp_DS9097 /usr/local/bin/digitemp

Dass hierzu root-Rechte zum Anlegen des Symlinks benötigt werden, versteht sich von selbst. :-)

Als erstes müssen wir nun die ROM-Werte der angeschlossenen DS18S20-Temperaturfühler auslesen. Dazu verbinden wir den SUB-D9-Buche mit einem freien seriellen Port (COM1), den wir dann über die Gerätedatei /dev/ttyS0 ansprechen können. Eventuell müssen die Rechte an der device-Datei angepasst, bzw. dem Nutzer die Rechte erteilt werden. Nun kommen wir, wie schon erwähnt zum Auslesen der ROM-Werte:

 $ digitemp -s/dev/ttyS0 -i
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
1006CB4300080005 : DS1820/DS18S20/DS1920 Temperature Sensor
108FB643000800F8 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 1006CB4300080005
ROM #1 : 108FB643000800F8

Als Ergebnis erhalten wir dann im Homeverzeichnis die Datei .digitemprc, in der die ausgelesenen Daten enthalten sind, wie z.B.:

.digitemprc
TTY /dev/ttyS0
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 2
ROM 0 0x10 0x06 0xCB 0x43 0x00 0x08 0x00 0x05 
ROM 1 0x10 0x8F 0xB6 0x43 0x00 0x08 0x00 0xF8 

Zum Erfassen der Messwerte starten wir einfach mal eine Messreihe mit mit 15 Werten und 10 Sekunden Pause zwischen den Werten.

Wichtig: werden mehrere Fühler parallel betrieben, so ist am besten zwischen den Messungen eine Pause von 1 Sekunde einzulegen, da es sonst zu Werten von 85 °C (Fehlermeldung) kommt.

 $ digitemp -a -d10 -n15

Als Ergebnis erhalten wir dann:

 $ digitemp -a -d10 -n15
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
May 28 23:32:43 Sensor 0 C: 24.69 F: 76.44
May 28 23:32:45 Sensor 1 C: 32.44 F: 90.39
May 28 23:32:53 Sensor 0 C: 24.75 F: 76.55
May 28 23:32:54 Sensor 1 C: 32.56 F: 90.61
May 28 23:33:03 Sensor 0 C: 24.75 F: 76.55
May 28 23:33:04 Sensor 1 C: 32.69 F: 90.84
...

Zu späteren Aufbereitung lassen wir uns nun zum Schluss die Messdaten in eine Datei schreiben.

 $ digitemp -a -n0 -d300 -l /var/log/temperature

So werden alle 5 Minuten die Messwerte ermittelt und in eine Datei geschrieben.

 $ cat /var/log/temperature
May 28 23:34:01 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:02 Sensor 1 C: 32.69 F: 90.84
May 28 23:34:12 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:13 Sensor 1 C: 32.62 F: 90.72
May 28 23:34:21 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:22 Sensor 1 C: 32.50 F: 90.50
May 28 23:34:31 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:32 Sensor 1 C: 32.31 F: 90.16
May 28 23:34:41 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:42 Sensor 1 C: 32.25 F: 90.05
May 28 23:34:51 Sensor 0 C: 24.81 F: 76.66
May 28 23:34:52 Sensor 1 C: 32.19 F: 89.94
May 28 23:35:01 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:03 Sensor 1 C: 32.12 F: 89.83
May 28 23:35:11 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:12 Sensor 1 C: 32.06 F: 89.71
May 28 23:35:21 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:22 Sensor 1 C: 32.00 F: 89.60
May 28 23:35:31 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:32 Sensor 1 C: 31.94 F: 89.49
May 28 23:35:41 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:42 Sensor 1 C: 31.88 F: 89.38
May 28 23:35:51 Sensor 0 C: 24.81 F: 76.66
May 28 23:35:52 Sensor 1 C: 31.75 F: 89.15
May 28 23:36:01 Sensor 0 C: 24.88 F: 76.78
May 28 23:36:02 Sensor 1 C: 31.69 F: 89.04
May 28 23:36:11 Sensor 0 C: 24.88 F: 76.78
May 28 23:36:12 Sensor 1 C: 31.62 F: 88.92
May 28 23:36:22 Sensor 0 C: 24.88 F: 76.78
May 28 23:36:23 Sensor 1 C: 31.62 F: 88.92
...

Am besten nutzen wir hierzu aber ein kleines shell-script, welches wir via crontab regelmäßig ausführen lassen.