[google-translator]
Temperatursensoren für eine Hausautomation kann man ja gar nicht genug haben. Die Diskussionen in diesem Thread viewtopic.php?f=27&t=7751&hilit=temperaturmessung zeigen, daß preisgünstige sog. 1-wired Sensoren ideal wären, aber leider die Integration mit Homematic-Modulen zumindest bei der heutigen Entwicklungsgeschwindigkeit von ELV in nächster Zeit nicht zu erwarten ist.Das Wired 12/14 IO-Modul hat mit 6 analogen Eingängen gute Möglichkeiten, analoge Temperatursensoren auszuwerten. Das Problem ist nur, dass geeignete preiswerte Sensoren für den Eingangspannungsbereich 0 bis +10V nicht erhältlich sind bzw. nur in Verbindung mit einer geeigneten und dementsprechend teuren Anpasselektronik funktionieren. Insbesondere bei der Regelung von Heizungen werden fast ausschließlich NTC-Widerstände als Temperatursensoren eingesetzt. Der Nachteil einer nichtlinearen Widerstandcharakteristik fällt dabei kaum ins Gewicht, weil die Steuerungen mit geeigneten Algorithmen die Temperaturen aus dem Widerstandswert einfach berechnen können. Eigentlich könnten wir in der Homematic auch eine Berechnung mittels Skript durchführen, das Problem ist nur, dass die Widerstandscharakteristik exponential bzw. logaritmisch ist und solche mathematische Funktionen in der Skript-Sprache m.W. leider nicht verfügbar ist. Also kam nur eine Berechnung mit den vier Grundrechenarten in Frage.Verwendet wird ein preiswerter NTC und ein zusätzlicher Vorwiderstand. Das ist alles! Das Bild oben zeigt die Schaltung.
Vom +24V-Anschluss wird einfach der Vorwiderstand (100KOhm) auf den analogen Eingang des 12/14 IO-Moduls geschaltet und zwischen dem Eingang und Masse der NTC-Widerstand zugeschaltet. Unter der Annahme , daß der interne A/D-Wandler sehr hochohmig ist, ergibt sich aus dem Schaltplan ein Eingangswiderstand des analogen Einganges von insgesamt 62,5KOhm. Dieser bildet mit dem NTC und dem Vorwiderstand Rv einen Spannungsteiler. Damit entsteht in Abhängigkeit von der Temperatur am analogen Eingang ein Signal von etwa 0 bis 10V. Die Nichtlinearität der analogen Eingangsspannung in Abhängigkeit von der Temperatur hängt vom verwendeten NTC-Widerstand ab und ist im entsprechendenden Datenblatt als Tabelle genau definiert.
Ich habe einen 10KOhm NTC von Reichelt für 0,33€ verwendet, wie er so ähnlich in vielen Heizungen eingesetzt wird.
http://www.reichelt.de/NTC-0-2-10K/3/index.html?&ACTION=3&LA=446&ARTICLE=13553&artnr=NTC-0%2C2+10K&SEARCH=ntc+10k
Das Datenblatt mit der Widerstandskennlinie gibt´s da auch unter „Datenblätter und Downloads“.
Die gekrümmte Kennlinie habe ich nun abschnittsweise durch Geradenstücke ersetzt. Im für mich besonders wichtigen Bereich nahe Raumtemperatur und wegen der dort stärkeren Krümmung der Kennlinie wurden hier mehr Geradenstücke zur Linearisierung eingesetzt als in den Randbereichen. Mit einer Excel-Tabelle wurden die einzelnen Kennwerte der Geradenstücke (Steigung m und T-Abschnitt n ) aus der Werteliste des NTC berechnet. Diese Werte werden in einem einfachen Skript verwendet, um die Temperaturwerte aus der Eingangsspannung Ut zu bestimmen.
Damit das Ganz nicht zu kompliziert wird hier mein „Kochrezept“:
1 Auswahl eines geeigneten NTC-Widerstandes möglichst im Bereich um 10KOhm oder am besten den oben vorgeschlagenen Widerstand nehmen.
2 Vorwiderstand 100KOhm anschließen lt. Schaltplan. Achtung, da die 24V.Spannung als Referenzspannung dient, sollte sie auch möglichst genau 24V sein. Überprüfen!
3 Mit der NTC-Werteliste und dem nachfolgendem Excel-Berechnungsprogramm die Parameter der Geradengleichungen berechnen.
Hier ist das Excel-Programm zur Linearisierun_NTC
4 Systemvariable für die Temperatur definieren, z.B. „NTC_Temp“ , Variablentyp „Zahl“, Maßeinheit „Celsius“
5 WebUI-Programm erstellen, wobei der Messwert z.B. alle 3 Minuten berechnet wird. (Zeitabstände möglichst groß, um di CCU nicht zu sehr zu belasten!)
6 Folgendes Skript zur Umrechnung der analogen Eingangsspannung verwenden:
[codesyntax lang=“text“ title=“HM-Skript“]!Berechnung Temperatur aus NTC Widerstandswert 10KOhm!Wert vom analogen Eingang holen real Ut = dom.GetObject("BidCos-Wired.IEQ0525027:26.VALUE").Value(); !lgeeignete linearisierte Kennlinie aussuchen und Temperatur berechnen real Temp = -999; !NTC hat Kurzschluss if (Ut >10.0) {Temp = 126.310 - (0.859*Ut);} if (Ut>77.2) {Temp = 92.426 - (0.420*Ut);} if (Ut>112.9) {Temp = 76.264 - (0.277*Ut);} if (Ut >167.1) {Temp =65.700 - (0.214*Ut);} if (Ut >190.5) {Temp =60.915 - (0.189*Ut);} if (Ut >217.0) {Temp =56.340 - (0.167*Ut);} if (Ut >246.8) {Temp = 51.926 - (0.150*Ut);} if (Ut >280.3) {Temp = 46.342 - (0.130*Ut);} if (Ut >357.4) {Temp = 39.291 - (0.110*Ut);} if (Ut >900) {Temp = 999;} !kein NTC angeschlossen !Temperatur auf Systemvariable speichern dom.GetObject("NTC_Temp").State(Temp); dom.GetObject("Kennlinie").State(kennlinie);
[/codesyntax]
7 NTC-Sensor geeignet „verpacken“ z.B. so:
Abschließend noch einige Anmerkungen zur Genauigkeit und Auflösung:
Die Auflösung in den einzelnen Arbeitsbereichen ist unterschiedlich. Wie man in dem Excel-Berechnungsprogramm in der Spalte „Auflösung/oC“ sieht, nimmt die Auflösung zu den hohen Temperaturen ab ( weil beim NTC dort die relative Widerstandänderung immer kleiner wird). Insgesamt ist aber für meine Heizungsanwendungen die Auflösung im Temperaturbereich von -15oC bis 100oC völlig ausreichend.
Die Genauigkeit ist schwieriger abschätzbar. Sie hängt davon ab, wie genau der NTC die Datenblattangaben einhält. Auch ist wichtig, dass die Referenzspannung 24V möglichst genau eingehalten wird und daß natürlich die anderen Widerstände möglichst genau sind.
Anmerken möchte ich noch, daß diese Methode natürlich auch bei anderen nichtlinearen Sensoren ( z.B. Fotowiderstand, Hall-Element, etc. )geeignet ist, das Signal zu linearisieren und auszulesen. Da ist noch viel Platz für eigene Projekte!
Viel Spass beim Nachbau!
Haftungs- und Sicherheitshinweise
Beim Nachbau müssen natürlich alle wichtigen einschlägigen Sicherheitsvorschriften für den Umgang mit gefährlichen Spannungen eingehalten werden. Fundierte theoretische und praktische Fachkenntnisse der Elektrotechnik und für den Umgang mit gefährlichen Spannungen sind unverzichtbar!!
Durch eine unsachgemäße Installation gefährden Sie ihr Leben und das Leben ihrer Mitmenschen! Darüberhinaus riskieren Sie erhebliche Sachschäden , welche durch Brand etc. hervorgerufen werden können ! Für alle Personen- und Sachschäden durch falsche Installation etc. ist nicht der Hersteller sondern nur der Betreiber verantwortlich.
Ich verweise hier unbedingt auf die „Sicherheitshinweise und Haftungsausschluss„-Seite dieses Blogs.