fun:digitemp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
fun:digitemp [30.05.2008 06:09. ] michifun:digitemp [20.04.2018 09:06. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== 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:vdr|VDR]]) nutzen wir digitemp.
 +
 +{{:fun:dsc01753.jpg?250|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.
 +
 +{{:fun:dsc01740.jpg?200|Photo eines fertigen Messfühlers Lötseite}} {{:fun:dsc01741.jpg?210|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:
 +  * Temperatursensor(en) DS10S20
 +  * 1x 1N5228 (Zenerdiode)
 +  * 1x 1N5234 (Zenerdiode)
 +  * 2x 1N5818 (Schottkydioden)
 +  * 1x 1,5kΩ 1/4 Watt Widerstand
 +  * 1x SUB D9 Buchse mit Gehäuse
 +  * 1x Stückchen Lochrasterplatine (bei Bedarf)
 +==== 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.
 +
 +{{:fun:schaltung.png?250}} 
 +
 +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. {{:fun:ds1820.png?50}}
 +===== 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 [[http://www.digitemp.com/software.shtml|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
 +
 +<code>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
 +</code>
 +
 +Als Ergebnis erhalten wir dann im Homeverzeichnis die Datei **.digitemprc**, in der die ausgelesenen Daten enthalten sind, wie z.B.:
 +<file bash .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 
 +</file>
 +
 +Zum Erfassen der Messwerte starten wir einfach mal eine Messreihe mit mit 15 Werten und 10 Sekunden Pause zwischen den Werten.<WRAP round important> __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.</WRAP>
 +
 +   $ digitemp -a -d10 -n15
 +Als Ergebnis erhalten wir dann:
 +   $ digitemp -a -d10 -n15
 +<code>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
 +...
 +</code>
 +
 +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
 +<code>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
 +...
 +</code>
 +Am besten nutzen wir hierzu aber ein kleines shell-script, welches wir via crontab regelmäßig ausführen lassen.
 +