original in de Stefan Blechschmidt
Als gelernter Elektriker hat man mich 1990 vor einen CAD Arbeitsplatz gesetzt, um eine Schaltanlage zu planen. Anscheinend habe ich mich damals mit einem noch unbekannten Virus infiziert, und das ist gut so.
Linuxserver verrichten ihre Arbeit zuverl�ssig und
sicher, somit schenkt man ihnen kaum Beachtung, den sie laufen
und laufen. Was aber wenn es dem kleinen Pinguin zu hei�
wird.
Der Sommer hat es uns gezeigt, also sollte wir unseren kleinen
Freund eine Temperatur�berwachung schenken. Dieser Artikel
soll dir zeigen wie du eine solche, mit geringen Aufwand ca. 10
€, bauen kannst.
Brian C.Lane hat ein Programm f�r den Temperatursensor DS1820 von DALLAS Semiconductor geschrieben. Mit diesen zwei Komponenten und eine handvoll Bauteile, ist es nicht mehr schwer eine Temperatur�berwachung zu bauen.
Anmerkung
Brian C.Lane hat seine Seite umgebaut und bietet die Version,
digitemp-1.3.tar.gz,
die ich in diesem Artikel verwende nicht mehr an.
Wer seine aktuelle Version digitemp-3.2.0.tar.gz
verwenden m�chte kann sie sich von der Seite http://www.digitemp.com/software.shtml
runter laden.
Der Sensor wurde urspr�nglich von DALLAS Semiconductor
hergestellt, die sich zu Maxim/Dallas Semiconductor
zusammengeschlossen haben. Laut Datenblatt kann der Sensor
Temperaturen von -55°C bis 125°C messen. Die Daten der
Messung gibt er als Digitales Signal mit einer Breite von 9 Bit
aus. Au�erdem besitzt jeder Sensor eine 64 Bit ID Nummer, so
dass mehrere Sensoren an einer Schnittstellenschaltung (Bus)
betrieben werden k�nne. Man spricht hier von 100 Sensoren
an einem Bus bis zu 300 Meter L�nge.
Mit der hier vorgestellten Schaltung sollten aber nur 10
Sensoren an einem 60 Meterbus funktioieren. Ich betreibe zur
Zeit 4 Sensoren an einem Bus mit ca. 12 Meter.
Mehr Infos �ber den Sensor findest du im Datenblatt.
Ausserdem m�chte ich nicht verschweigen, dass mit der hier vorgestellten Schaltung, nur Messungen bis 75 Grad m�glich sind, das sollte aber f�r unseren Anwendungsfall reichen.
Um den Sensor an die serielle Schnittstelle anschlie�en zu k�nnen, brauchen wir noch ein paar zus�tzliche Bauteile. Du bekommst diese bei den meisten Elektronikh�ndlern, im Internet oder noch besser bei deinem Elektronikladen in deiner N�he.
Anzahl | Bezeichnung | Typ | alter.Typ |
---|---|---|---|
1 | Resistor | 1,5 k Ohm | -------- |
2 | Schottky Diode | 1N5818 | BAT 43 |
1 | Zener Diode | 1N5228 | ZPY 3,9V |
1 | Zener Diode | 1N5234 | ZPY 6,2V |
1 | Sensor | DS18S20 | -------- |
1 | Buchse seriell | RS232C/9 | -------- |
1 | Steckergeh�use | SUB-D/9 | -------- |
1 | Lochrasterplatte | Hartpapier | -------- |
Da die Schnittstellenschaltung sehr einfach ist, habe ich mich f�r den Aufbau auf einer Lochrasterplatte entschieden. Sorry, an dieser Stelle f�r meine L�tkunst :-)
Wer geschickt ist, bringt die Bauteile auch im Stecker der seriellen Schnittstelle unter.
Anmerkung
Auf der Seite LinuxNetMag
findet man auch einen Artikel �ber digitemp, unter
anderem aber auch ein Forum, in der eine Schaltung
beschrieben wird, bei der Messungen �ber 75°C
m�glich sind. Die Schaltung wurde aber von mir noch nicht
getestet.
Bei unserer Schnittstellenschaltung ben�tigen wir nur 2 Anschlussbeine des Sensors, der Anschluss VDD kann entfernt werden. Ich habe ihn einfach abgezwickt :-).
Nachfolgenden eine Tabelle der Beschaltung zwischen der Schnittstellenkarte, der Sensoren, und der seriellen Schnittstelle.
Bezeichnung | DB-25 | DB-9 | Sensor |
DTR | 20 | 4 | Data (PIN 2) |
RXD | 3 | 2 | GND (PIN 1) |
TXD | 2 | 3 | |
GND | 1 und 7 | 5 |
Die Software wird als TAR Archiv angeboten und kann mit dem Befehl:
tar -xvzf digitemp-1.3.tar.gzim aktuellen Verzeichnis ausgepackt werden.
Im dem neu erstellten Verzeichnis
digitemp1-3
befinden sich die Quelldateien,
Beschreibung und einigen Perlscripts unter anderem aber auch
die ausf�hrbare Datei digitemp
, die
direkt verwendet werden kann.
Wird digitemp
ohne Parameter aufgerufen bekommt
man eine �bersicht der Parameter zu gesicht.
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Usage: digitemp -s<device> [-i -d -l -r -v -t -p -a] -i Initalize .digitemprc file -s/dev/ttyS0 Set serial port -l/var/log/temperature Send output to logfile -f5 Fail delay in S -r500 Read delay in mS -v Verbose output -t0 Read Sensor # -a Read all Sensors -d5 Delay between samples (in sec.) -n50 Number of times to repeat -o2 Output format for logfile -o"output format string" See description below Logfile formats: 1 = One line per sensor, time, C, F (default) 2 = One line per sample, elapsed time, temperature in C 3 = Same as #2, except temperature is in F #2 and #3 have the data seperated by tabs, suitable for import into a spreadsheet or other graphing software. The format string uses strftime tokens plus 3 special ones for digitemp - %s for sensor #, %C for centigrage, %F for fahrenheight. The case of the token is important! The default format string is: "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59
Wie uns die Hilfe zeigt, m�ssen wir die angeschlossenen Sensoren, diese k�nnen ja mehrere sein, initialisieren. Hierbei muss die Schnittstelle, an der unsere Schaltung angaschlossen ist, und der Parameter f�r die Initialisierung angegeben werden.
Der Befehl
digitemp -i -s/dev/ttyS0erledigt das, wobei hier die Schnittstellenschaltung an der ersten seriellen Schnittstelle angeschlossen ist.
Die Software liest daraufhin die Sensoren aus, es erscheit eine Meldung �hnlich dieser:
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing ROM #0 : 1032724700080086 ROM #1 : 1092214400080089Man kann hier erkennen, das die Software 2 Sensoren gefunden hat. Zus�tzlich wird im aktuellen Verzeichnis die Datei
.digitemprc
erstellt, in der die Daten
�ber die Sensoren, der Schnittstelle und dem Ausgabeformat
festgehalte werden.
Jetzt k�nnen wir mit dem Befehl ./digitemp
-a
alle Werte der Sensoren auslesen. Zu beachten
sind hier die Zeichen ./
, da wir uns immer
noch in einem Verzeichnis befinden das nicht im den aktuellen
Suchpfad eingetragen ist.
Ausgabe einer Messung
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29 Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129
Um das Programm in unser System zu integrieren, m�ssen noch ein paar kleine Anpassungen gemacht werden.
Zuerst sollte man die bin�r Datei, also
digitemp
, in ein Verzeichnis kopieren, in dem
Programme ohne Pfadangabe ausgef�hrt werden k�nnen.
Bei mir ist die Wahl auf /usr/local/bin/
gefallen.
Wer sich unsicher ist kann die Pfade mit echo
$PATH
auslesen. Ausserdem muss noch die Datei
.digitemprc
mit den Initialisierungsdaten in das
Homeverzeichnis des Users kopiert werden, der die Messungen
durchf�hrt. Um die Messausgabe nicht auf der Konsole
sondern in einer Datei zu sichern wird der Schalter
-l[PFAD/DATEINAME]
verwenden werden.
Jetzt fehlt uns noch die Messungen zu automatisieren, was
f�r uns der altbew�hrte cron erledigt. Mit
crontab -u [USER] -e
k�nnen wir Jobs
f�r den jeweiligen User anlegen. Der Eintrag
0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.logbringt digitemp dazu alle 15 Minuten eine Messung durchzuf�hren und diese nach
/var/log/digitemp.log
zu schreiben.
Mit dem Befehl tail /var/log/digitemp.log
k�nnen wir uns letzten Zeilen der Messungen ansehen.
Sollte die Datei /var/log/digitemp.log
nicht
erstellt werden, bitte auf die Dateirechte achte.
Im Archiv sind noch einige Perlscripte zur grafischen Auswertung enthalten. Diese werden ich an dieser Stelle nicht beschreiben. Ich spiele mit dem Gedanken in einen weiteren Artikel zu schreiben, wie man die Sensordaten in eine Datenbank mySQL bringt und diese dann �ber ein Webinterface auswertet.
Es wird dann haupts�chlich �ber Perl mit den Funktion mySQL, CGI, Grafik gehen.