Title: Temperatur�berwachung mit Linux

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

Hardware

AuthorImage:[Here we need a little image from you]

Stefan Blechschmidt

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Stefan Blechschmidt 

AboutTheAuthor:[A small biography about the author]

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.

Abstract:[Here you write a little summary]

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.

ArticleIllustration:[One image that will end up at the top of the article]

Titelbild

ArticleBody:[The main part of the article]

Die Komponenten

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

Sensor Anschlussübersicht               Sensor Bild
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.

Die Bauteile

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 --------

Aufbau der Schnittstellenschaltung

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 :-)


Schalplan


Platine - Vorderseite               Platine - Rückseite

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.

Beschaltung der seriellen Schnittstelle

Bei unserer Schnittstellenschaltung ben�tigen wir nur 2 Anschlussbeine des Sensors, der Anschluss VDD kann entfernt werden. Ich habe ihn einfach abgezwickt :-).

Anschluss nicht genutzt

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  

Installation der Software

Die Software wird als TAR Archiv angeboten und kann mit dem Befehl:

 tar -xvzf digitemp-1.3.tar.gz
im 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/ttyS0
erledigt 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 : 1092214400080089
Man 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

Anpassung des Systems

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.

Messungen automatisieren

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.log
bringt 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.

Schlusswort

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.

Download

Links / Referenzen