Temperaturen messen mit Linux

In diesem Artikel berichte ich über meine Erfahrungen mit der Temperaturmessung unter Linux zur Heizungssteuerung.

Um den Zustand der Heizungsanlage zu erfassen, reicht ein Temperatursensor alleine nicht aus. Idealerweise benötigt man ein Sensor pro beheiztem Raum. Soll auch die Vorlauftemperatur für die Heizung gemischt werden, währen drei weitere Sensoren am Mischventil sowie ein Sensor für die Außentemperatur hilfreich. Ist ein Pufferspeicher vorhanden, so sollte er großzügig mit Sensoren eingedeckt werden. An meinem 3 m hohen Speicher befinden sich 7 Sensoren. Das nächste Mal würde ich mindestens 10 anbringen, um die Position der Grenzschicht warm/kalt noch genauer zu bestimmen. An der Solaranlage befinden sich 5 Sensoren. Summa summarum habe ich momentan 17 Temperatursensoren im Betrieb. Tendenz: Steigend.

1-Wire Sensoren

Nun muss man glücklicherweise nicht für jeden Sensor ein Käbelchen vom PC zur Messstelle legen. Für Installationen mit mehreren Sensoren eignet sich ein Bus-System wesentlich besser und ist zudem einfach zu installieren und relativ billig. Das vermutlich einfachste System ist das 1-Wire-Netz. Dabei befinden sich alle Sensoren an einem zwei-adrigen Kabel. Die maximal erlaubte Gesamtlänge ist für ein Einfamilienhaus völlig ausreichend und die Sensoren können auf der Kabellänge beliebig verteilt werden, lediglich am Kabelende sollte ein Sensor sitzen.

DS18S20 Temperatursensor

Pinbelegung des 1-Wire Temperatursensors DS18S20

Am weitesten verbreitet sind die DS 18S20 Sensoren von Dallas, erhältlich z.B. bei Reichelt für 3,10 Euro pro Stück (Stand Juni 08). Das Kabel sollte ein Twisted-Pair sein, d.h. die beiden Adern müssen miteinander verdrillt sein. Gut eignen sich normale CAT5 Netzwerkkabel (eigentlich “overkill”), AUI aus dem Müllcontainer oder der Bastelkiste funktioniert ebenfalls.

Für den Anschluss am PC gibt es fertige Adapter für USB oder die serielle Schnittstelle zu kaufen. Wenn der PC noch eine serielle Schnittstelle besitzt, ist der Griff zum Lötkolben eine echte Alternative: Lediglich 4 Dioden (davon zwei Zener) und ein Widerstand muss man auf einen 9-poligen Sub-D-Stecker brutzeln – fertig. Eine Anleitung von Thomas Ratz gibt es auf den Seiten von Linux NetMag.

Was noch fehlt, ist ein Programm, um die Sensoren auszulesen. Ich verwende Digitemp von Brian C. Lane. Auf seiner Webseite finden sich auch noch viele weitere nützliche Informationen, z.B. zum Selbstbau von Sensor-Modulen etc.

Die DS 18S20 Sensoren haben ein TO-92 Gehäuse (die typische Bauform eines Transistors). Das dritte Beinchen ist für eine optionale +5V Stromversorgung und muss (wenn ohne externe Stromversorgung gearbeitet wird) unbedingt auf Masse gelegt werden. Wenn Temperaturen oberhalb von 80°C gemessen werden sollen, ist die +5V Versorgung jedoch sehr zu empfehlen: Je höher die Temperatur, umso größer ist die Stromaufnahme des Sensors und umso wahrscheinlicher ist es, dass der Messvorgang an der geringen Strombelastbarkeit der seriellen Schnittstelle scheitert. Meine Sensoren arbeiten alle ohne +5V Stromversorgung und messen Temperaturen bis 120°C – allerdings melden die heißeren Sensoren regelmäßig einen abgebrochenen Messvorgang. Solche fehlerhaften Messwerte werden vom Auswerteprogramm ignoriert und verursachen keine Probleme, solange sich die Temperatur seit der letzten erfolgreichen Messung nicht wesentlich geändert hat.

Edit:
Eine verbesserte Version des Adapters für die serielle Schnittstelle gibt es hier: Sie stellt auch die +5V Versorgungsspannung bereit und vermeidet so die oben genannten Probleme.

Installation der Temperatur-Sensoren

Sensor in Unterputzdose

Auf der Rückseite dieses “leeren” Lichtschalters klebt ein Temperatursensor. Die dahinter liegende UP-Dose habe ich mit Dämmmaterial gefüllt. Bitte beachten: 1-Wire-Leitungen dürfen aus Sicherheitsgründen nicht zusammen mit 230V Leitungen verlegt oder in einer Dose zusammengeführt werden. In meinen Lichtschaltern befinden sich lediglich 5V Steuerleitungen.

Das Gehäuse des Sensors sollte natürlich möglichst guten Kontakt zu dem Medium haben, dessen Temperatur gemessen werden soll. Soll die Raum- oder Außentemperatur gemessen werden, ist dies kein Problem. Hier geht es mehr darum, den Sensor möglichst gut zu verstecken.

Die Wassertemperatur in Kupferrohrleitungen ist ebenfalls kein Problem: Weil Kupfer ein sehr guter Wärmeleiter ist, reicht es, den Sensor direkt auf das Kupferrohr zu kleben und ihn mit der üblichen Rohrisolierung zu umhüllen. Als Klebstoff eignet sich z.B. 2-Komponenten-Epoxydharz. Tip: Entweder Sensor zuerst mit Sekundenkleber fixieren und anschließend satt mit Epoxid einkleistern oder den Sensor in ein Bett aus Epoxid legen und mit Isolierband fixieren.
Im Prinzip kann man auch nur Isolierband verwenden und den Klebstoff weglassen. Eine dünne Schicht Klebstoff zwischen Rohr und Sensor verbessert jedoch den Wärmeübergang. Bei hohen Temperaturen wird außerdem der Klebstoff des Isolierbandes schwach.

Stahl(rohr) leitet die Wärme wesentlich schlechter als Kupfer, wenn man Temperatursensor und Rohr großzügig in Wärmedämmung einpackt, sollte man aber auch hier eine akzeptable – allerdings träge – Messung erzielen.

Die Sensoren am Pufferspeicher habe ich ebenfalls einfach auf den lackierten Stahl des Behälters geklebt. Da der Puffer samt Temperatur-Sensoren von einer 20 cm starken Wärmedämmung umhüllt ist, ist hier kein Messfehler festzustellen.

Tauchhülse aus Kupferfittings

Selbstbau einer Tauchhülse aus Kupferfittings.

Edler sind jedoch echte Tauchfühler. bei denen der Sensor fast vollständig vom Medium umhüllt ist. Dabei befindet sich der Sensor in einer Hülse, die in das Rohr oder den Pufferspeicher eingeschraubt wird Leider habe ich noch in keinem Shop solche Tauchhülsen ohne (analogen) Thermometer gefunden. In jedem Fall sollte man den Sensor vor dem Einbau mit Wärmeleitpaste versehen und ihn möglichst an der tiefsten Stelle der Hülse festklemmen und den Rest der Hülse mit Dämmstoffresten füllen oder zumindest mit Klebeband verschließen. Eine Tauchhülse für Kupferrohre kann man sich übrigens selbst zusammen löten, siehe rechts.

Messgenauigkeit

Der Hersteller gibt im Datenblatt eine Messgenauigkeit von 0.5°C an. Die relative Genauigkeit, d.h. die Messung von Temperaturdifferenzen mit ein und dem selben Sensor, scheint jedoch erheblich genauer zu sein: Bei der Auswertung der Temperaturwerte sind Änderungen von 0.1°C bereits signifikant. Ein möglicherweise viel größerer Messfehler schleicht sich unter Umständen an anderer Stelle ein: Das (Kupfer-)Kabel, mit dem die Sensoren untereinander verbunden sind, überträgt nicht nur Daten sonder auch Wärme. Unglücklicherweise ist das Kabel vom obersten (heißesten) Sensor an meinem Pufferspeicher zum Sensor für die Außentemperatur nur ca. zwei Meter lang. Folglich ist die gemessene Außentemperatur immer einige 0.1°C höher als erwartet und die Puffertemperatur entsprechend niedriger. Ein guter Wärmekontakt reduziert diesen Fehler.


Posted

in

,

by

Tags: