Hallo!
Ich würde sagen, dass man dafür Regelungstechnik verwenden soll und glaube nicht, dass alle gut funktionierende Regler mit "try and error" entwickelt wurden.
Hallo Leute,
ich möchte für eine Warmwasser Fussbodenheizung ein Raumthermosstat mit einem ATMEGA16 entwickeln.
Der Grund ist, das die üblichen Raumthermostate nur reine 2 Punkt Regler sind, die aber durch die Trägheit der Fussbodenheizung so nicht funktionieren.
Der Effekt ist, das die Temperatur im Raum zwischen zwei Extremen hin und herpendelt.
Am Fussboden Heizkreis befindet sich ein magnetisches Ventile, das unter Strom innerhalb von 180 sekunden voll aufgeht.
Nimmt man den Strom weg schließt dieses Ventil innerhalb von 180 Sekunden wieder komplett.
Mein erster Ansatz ist, das Ventil mit einer langsamen PWM mit 10sek Zykluszeit in seiner Stellung zu halten.
Die Idee, die ich hab wäre es einen reinen I Regler zu proggen, der Zyklisch ( zur Zeit alle 5 minuten ), zusätzlich zu dem Haltemodus die Ventile auf bzw. zu macht.
Das Problem ist, wie krieg ich raus wie viele Prozente pro Grad Temperaturabweichung ( zur Zeit hab ich 2% / 1°C ) muss ich proggen, damit das System zwar schnell reagiert, aber nicht überschwingt.
Kann ich das nur per Try and Error rauskriegen, oder gibt es da einen besseren Ansatz?
Da die Vorlauftemperatur der kompletten Heizung zusätzlich über die Aussentemperatur gesteuert ( Mischventil am Fussbodenkreis ) ist, bleibt die Frage inwieweit muss ich das bei meinem Ansatz berücksichtigen?
Derzeitiger Stand:
Ich hab die Schaltung bereits provisorisch aber funktionsfähig angeschlossen.
Der ATMEGA loggt alle 5 min die Raumtemperatur, den berechneten Offnungszustand des Ventils und die Regelwerte in sein EEPROM.
Diese kann man dann einfach per serieller Schnittstelle auf den PC übertragen.
Leider passen wegen des nur 512Byte großen EEPROM des ATMEGA16 nur max. 10 Stunden in den Speicher.
Wegen der zur Zeit hohen Aussentemperaturen schaltet die Heizung natürlich ab.
Deshalb kann ich zur Zeit keine Daten gewinnen.
Hallo!
Ich würde sagen, dass man dafür Regelungstechnik verwenden soll und glaube nicht, dass alle gut funktionierende Regler mit "try and error" entwickelt wurden.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
I-Regler ist glaub ich nicht so toll, weil das Stellglied schon I-Verhalten hat. Dreipunktschrittregler wäre glaub ich besser geeignet.
Ich würde eher folgendermaßen regeln: alle z.B. 180s die Temperaturdifferenz Soll - Ist bestimmen und mit einem Kp multiplizieren. Das Ergebnis ist die Stellzeit, mit der du das Ventil ansteuerst.
Stellzeit= Kp * (Solltemperatur - Isttemperatur)
Die Ansteuerung wird limitiert, also z.B. wenn Temperaturdifferenz < 0.5°C oder Stellzeit < 1s dann Stellzeit = 0.
Das Kp kannst du nur experimentell bestimmen, dazu am besten den Temperatur grafisch in einem Zeitdiagramm z.B. mit einem Tabellenprogramm wie Excel oder OpenOffice Calc aufzeichnen (zu meiner Zeit hätte man noch Millimeterpapier genommen). Immer weiter erhöhen bis die Temperatur nach einem Sollwert-Sprung sichtlich anfängt zu schwingen, dann Faktor 2 runter. Damit bekommst du einen recht robusten Regler. Und am besten im Winter bzw. bei einer hohen Vorlauftemperatur optimieren.
Es wäre gut den Reglerparameter Kp von außen einstellbar zu machen, über Poti oder Display und Tasten.
Im Prinzip hab ich das ja so gemacht.Dreipunktschrittregler
Das Stellglied hat ja ein "Eigenleben". Durch die PWM wird es an seiner Position gehalten.
Die Stellzeit wird mit (( Isttemperatur - Solltemperatur)*kp*Stellzeit für Endposition)/100 berechnet.
Das Ventil wird dann für die berechnete Zeit zusätzlich zur PWM auf- bzw. zugefahren.
mein kp beträgt zur Zeit 2,0% Regelweg pro 1°C Temperaturunterschied.
In einer Internetquelle hab ich gelesen, das eine voll aufgedrehte Fussbodenheizung innerhalb von 15min eine Raumtemperaturerhöhung von 2°C schafft. Das ist natürlich ein individueller Wert und kann natürlich abweichen.
Gibt es da einen anderen Weg um den kp Wert zumindest näherungsweise zu bestimmen?Immer weiter erhöhen bis die Temperatur nach einem Sollwert-Sprung sichtlich anfängt zu schwingen, dann Faktor 2 runter. Damit bekommst du einen recht robusten Regler. Und am besten im Winter bzw. bei einer hohen Vorlauftemperatur optimieren.
Das mit dem Wert erhöhen bis zum Schwingen werd ich so machen, ist ne gute Idee.
Ich hab zusätzlich zum Thermostat einen Temperaturlogger in den Raum gehängt.
Ich kann also die Temperatur über einen sehr langen Zeitraum aufzeichnen.
Da ich im Controller nur mit int Variablen arbeite, ergibt sich bei geringer Temperaturabweichung ohnehin kein Regelwert ( Werte <1 werden verworfen ).
Die Stellzeiten für die Endpositionen, sowie der Regelparameter kp kann per Tastatur und Display in 0,1% Schritten geändert werden.
Die PWM Ein / Aus Dauer kann ebenfalls in 0,1% Schritten geändert werden, falls das auffahren eine andere Zeit benötigt als das zufahren.
Das Display und die Tasten hab ich zum Einstellen der Solltemperatur ohnehin gebraucht.
Geändert von wkrug (24.07.2014 um 11:54 Uhr)
Was ist bei dir int? 8bit oder 16bit? Auch mit 8 bit kannst du du die Auflösung verbessern, einen Wertebereich der sich über 256K erstreckt wirst du in deiner Wohnung wahrscheinlich nicht haben. Wäre es nicht besser mit Wertigkeit von vielleicht 0,25K / digit intern zu arbeiten? Oder bei 16bit gleich mit 0,1K / digit und dann nur für die Anzeige entspr. skalieren?
- - - Aktualisiert - - -
Es gibt schnellere Verfahren der Regleroptimierung wie z.B. Wendetangenten der Sprungantwort, die eignen sich aber gut für lineare Regler und Strecken. Eine Raumheizung ist aber alles andere als vorhersagbar und linear: das Ventilverhalten ist anders im fast geschlossenen als im fast geöffneten Zustand, das Abkühlen verläuft mit anderen Zeitkonstanten als das Aufheizen der Wohnung, und zwar je nach Außentemperatur, Windverhältnissen und Wasservorlauftemperatur sehr unterschiedlich, und und und.
Vielleicht meldet sich jemand mit einem besseren Vorschlag, nach meiner Meinung ist es wirklich besser empirisch zu ermitteln, und zwar mit dem Auge und einem Zeitdiagramm.
Geändert von witkatz (24.07.2014 um 12:55 Uhr)
Ich hab je nach Zweck und Wertebereich verschiedene int Variablen verwendet.
Also 8 Bit, 16Bit und 32Bit aber immer Ganzzahlen und keine float's.
Aber immer vorher ausmultipliziert und die Divisionen erst hinterher.
Das verringert die Rundungsfehler.
Mit den Einflussfaktoren hast Du natürlich recht.
Da ich ja nun fast alle Parameter von aussen ohne Programmänderung einstellen kann, sollte die empirische Ermittlung auch möglich sein.
Durch den externen Temperaturlogger kann ich sehr lange Perioden beobachten.
Und durch die interne Abspeicherung der Daten seh ich auch was der Regler so anstellt.
Die Vorlauftemperatur könnte man ggf. in der Regelung berücksichtigen - je höher die Temperatur desto wirksamer ist das Stellglied. Das lässt sich ganz gut rechnerisch berücksichtigen.
Die Stellfunktion des Ventils könnte tatsächlich nichtlinear sein - das ist aber relativ schwer zu beurteilen. Als letzten Ausweg könnte man hier eine Linearisierung vorsehen. Einfacher ist vermutlich die Bodentemperatur als zusätzliche Messgröße.
Die Methode der Wahl es eher ein PID- Regler, ggf. sogar einfach ein PD Regler mit Feedforward anhand der Außentemperatur (so ähnlich wie die von der Außentemperatur abhängige Vorlauftemperatur bei vielen Heizungsreglern). Wenn man hohe Ziele hat, wäre es ggf. auch hilfreich wenn man nicht nur die Lufttemperatur, sondern auch die Temperatur des Bodens erfasst. Das kann denn ggf. auf eine Art Kaskadenregler hinauslaufen: die Bodentemperatur wird als Zwischengröße geregelt. Damit könnte auch gleich eine Nichtlinearität des Ventils und Schwankungen beim Druck schon in der schnelleren Schleife ausgeregelt werden. Also etwas so: Aus Aussentemperatur und Lufttemperatur wird ein Sollwert für den Boden bestimmt. Die Bodentemperatur wird dann über das Ventil in einer extra Schleife geregelt.
Bei einem so trägen System ist die Try and Error Methode eher nicht zielführend - sonst ist der Winter vorbei bis man auch nur halbwegs gute Parameter hat. Der bessere Weg ist da eher die Aufnahme der Systemantwort und dann eine Rechenmethode wir die nach der Wendetangente oder ggf. auch einen numerische Simulation des Systems, etwa anhand der Pulsantwort.
Die Zeitkonstanten des Systems wird ggf. schon etwas variieren mit Wind, sollte aber kaum von der Temperatur oder der Frage Aufheizen / abkühlen zusammenhängen. Das man da den Eindruck hat es geht in die eine Richtung schneller als die andere ist mehr eine Frage der Begrenzung der Stellglieder. Man muss also schon auch so etwas wie Anti Windup beim einem PID Regler Berücksichtigen. Auch die Vorlauftemperatur ändert nur die Wirkung des Ventils - die Zeit bis sich der Stationäre Wert einstellt sollte die gleiche bleiben. Ein erste Abschätzung wäre ggf. auch schon jetzt im Sommer möglich, oder auch rein rechnerisch über den Wärme Verlust (Heizkosten) und die geschätzte Wärmekapazität des Hauses.
Wie groß ist die Temperaturdifferenz ? Wie ist der Aufbau der Fußbodenheizung (Estrich / Fermacell o.ä.) ?
Wenn die Schalthysterese der Regler zu groß ist erklärt das den Effekt.
Abhilfe würde eine höhere "Auflösung" der Regler bewirken.
Ich habe meine 30 Jahre alte Estrich-Fußbodenheizung (träge) mit einer Einzelraumregelung
(uponor Funk-Thermostate mit Stellgliedern an den Verteilern) nachgerüstet und bin seit dem sehr zufrieden damit.
Die Thermostate zeigen die Temperatur in 1/10 °C an. Wie groß die interne Auflösung ist kann ich nicht sagen.
Das Ventil wird mit großer Sicherheit nicht magnetisch sondern thermisch "angetrieben".
Daher die 3 Minuten Stellzeit.
Dadurch wird die Durchflußmenge reduziert und du handelst dir u.U. kalte Zonen im Raum ein (Stichwort : Hydraulischer Abgleich).
mfG
Willi
Das würde zusätzliche Sensoren bedeuten, die über 2 Stockwerke funktionieren müssten.Die Vorlauftemperatur könnte man ggf. in der Regelung berücksichtigen - je höher die Temperatur desto wirksamer ist das Stellglied. Das lässt sich ganz gut rechnerisch berücksichtigen.
Zudem hab ich nicht nur einen Fussbodenheizkreis, sondern 3.
Das ganze soll möglichst einfach bleiben und ohne zusätzliche Verkabelung auskommen.
Bei meiner Nichte sind für die Fussbodenheizung genau die gleichen mechanischen Thermostate eingebaut, allerdings haben diese, im Gegensatz zu meinem Problemfall, einen Fernfühler der in den Estrich eingelassen ist. Dort funktioniert die Temperaturregelung problemlos.Wenn man hohe Ziele hat, wäre es ggf. auch hilfreich wenn man nicht nur die Lufttemperatur, sondern auch die Temperatur des Bodens erfasst.
Eine Raumtemperaturregelung würde bei Ihr auch keinen Sinn machen, weil da zusätzlich noch ein Kachelofen geheizt wird.
Wenn die Regelkonstante zu klein ist wird es halt länger dauern, bis die Solltemperatur erreicht ist.Bei einem so trägen System ist die Try and Error Methode eher nicht zielführend - sonst ist der Winter vorbei bis man auch nur halbwegs gute Parameter hat
Man müsste sich dann halt Schrittweise an den Wert rantasten, bis das System zu schwingen beginnt und dann den Wert zurücknehmen. - Ich denk mal, so werd ich das auch machen.
Das pendelt so zwischen 15 und 25°C, also nervig.Wie groß ist die Temperaturdifferenz ?
Die Schalt Hysterese der bisher verwendeten Raumtherostate dürfte sicherlich einige Grad betragen, da es sich um mechanische mit Bimetall , bzw Gasdose handelt.Das war ja eigentlich das Ziel, den Durchfluss zu regeln und diesen dann auf einem bestimmten Level zu halten.Dadurch wird die Durchflußmenge reduziert und du handelst dir u.U. kalte Zonen im Raum ein
Das mit dem Hydraulischen Abgleich werd ich mal googeln - War mir nicht bewusst.
Das das Wasser am Ende der Heizschleifen kälter ist, als am Anfang ist klar, das dies auch von der Durchflussmenge abhängt auch.
Im Prinzip müsste dann aber auch jeder normale Heizkörper das gleiche Problem haben, da hier ja auch die Durchflussmenge reduziert wird.
Geändert von wkrug (25.07.2014 um 08:26 Uhr)
Richtig, das macht der auch. Nur nicht in dem Ausmaß (Metall statt Beton).
Ein Heizkörper wärmt den Raum aber durch Konvektion (hohe Luftgeschwindigkeit). Wenn der Heizkörper (aus Beton) so groß wäre wie die Fußbodenheizung (geringe Luftgeschwindigkeit) hättest du in der letzten Ecke auch eine kalte Zone. Der Durchfluß darf eine Mindestgröße nicht unterschreiten.
Andere Möglichkeit: Temperatur für diesen Zweig (Raum) regeln. Mischer> Stellglied> Regelung> Raumfühler , sehr aufwändig ! Macht kein Mensch.
Besser wäre wenn du die Thermostate gegen (selbst konstruierte) mit kleiner Schalthysterese austauscht.
Mit meinem trägen System pendelt die Temperatur um ca. +/- 0.5°. Ich merke die Hysterese subjektiv nicht.
Das Beispiel ist vom 28./29.Jan 2014
Die Peaks gegen Mittag sind durch die Sonne geschuldet.
mfG
Willi
Lesezeichen