AVR Heizungssteuerung

Motivation

Als ich noch in meiner 1-Zimmer Studentenwohnung wohnte, und am Wochenende häufig unterwegs war, hatte ich das Problem, dass wenn ich im Winter Sonntag Abend wieder nach Hause kam und Freitags die Heizung gedrosselt hatte, in eine ziemlich kalte Wohnung kam. Ich stellte die Überlegung an „Irgendwie müsste ich meinen Heizkörper Fernsteuern können“. Ein Grundkonzept war schnell erdacht; eine AVR-ENC28J60 Platine, die ich schonmal gebaut hatte mit einem elektronischen Heizkörperthermostat zu koppeln und einfach im Router eine Portfreigabe und DynDns einzurichten.

Umsetzung

Um erstmal einen Überblick zu bekommen, wurde der Heizkörperthermostat auseinander-genommen und gründlich analysiert; ein Drehencoder dient zur Einstellung der Soll-Temperatur und sendet je nach dem , wie schnell man dreht, ca. 50ms lange High-Low Pulse auf 2 Leitungen die zueinander verzögert sind. Dreht man rechts herum ist Kanal B um halbe Pulsbreite zu Kanal A verzögert. bei umgekehrter Drehrichtung genau umgekert. Ein Mikrocontroller kann dieses Verhalten des Drehencoders dem Thermostat recht leicht „vorgaukeln“. Damit eine Handbedienung des Thermostats auch noch möglich ist, muss noch ein kleiner Transistor in die GND Leitung des Drehencoder gehängt werden. Der den Drehencoder trennt, sobald eine Temperatureinstellung vom Webserver kommt, und ihn hinterher wieder zuschaltet. Da das Auslesen der Drehencoders im Controller des Thermostats anscheinend nicht über einen Interrupt realisiert wurde und es irgendwo in der Hauptschleife statt findet, war es nötig, bei jeder Temperatureinstellung von extern einen Nullpunkt zu finden; d.h. erstmal wird eine lange Drehung nach links simuliert, damit der Thermostat auf „OFF“ schaltet, danach wird eine definierte Drehung, je nach gewünschter Temperatur, nach rechts simuliert. Ansonsten würde sich nach mehreren Temperatureinstellung eine Abweichung durch nicht kontinuierliches Auslesens des Drehencoders sehr schnell addieren.

Software/Hardware


Die Basis für dieses Projekt bildet der Webserver von Ulrich Radig. Da die relativ Große Platine etwas unschön an dem Thermostat wirkte, habe ich die Schaltung auf das notwendigste beschränkt und ein komplett neues Layout kleiner als eine Streichholzschachtel erstellt und als Platine fertigen lassen. Zusätzlich wurde noch ein DS1621 I^2C Temperatursensor mit implementiert der im Webfrontend die IST-Temperatur mit Minimal- und Maximalwerten ausgibt.
Auch die Software wurde nur leicht angepasst, das Webfrontend wurde etwas aufgehübscht und für Smartphones angepasst und der Timer wurde für die Pulse, die den Drehencoder simulieren sollen etwas angepasst. Bei dem von mir verwendeten Thermostat handelt es sich übrigens um den „TechnoLine TM3030“. Andere Thermostate werden aber recht ähnlich funktionieren und müssten ggf. in Software und Beschaltung leicht angepasst werden.



Schaltplan & Layout gibt es hier als Download: heizungssteuerung.zip

Bildergalerie

---- photogallery show ---- namespace : :web:elektronik:heizung:gallery: posteralign: left posterimg : img_0505_1.jpg


Basis-Projekt: