Fussbodenheizung mit PWM steuern

Begonnen von jamesgo, 24 September 2015, 08:28:49

Vorheriges Thema - Nächstes Thema

jamesgo

Hallo,

ich steuere meine Fussbodenheizung seit 3 Jahren mit PWM und FHEM.
Bei Interesse kann ich die beiden Module 93_PWMR.pm (definiert einen Raum) und 94_PWM.pm (definiert eine Steuerungseinheit) zur Verfügung stellen.

Ein Raum kennt (mehrere) Fenstersensoren, einen Temperatursensor und einen Aktor zum Schalten des Thermo Stellantriebs sowie die Attribute aus dem Screenshot.

Die Steuereinheit Schaltet die Räume und implementiert Logik die über alle Räume gelten soll wie z.B.

- nicht alle gleichzeitig an oder aus schalten
- min Anzahl Heizkreise an (sofern Heizbedarf), max Anzahl Heizkreise an (damit der Brenner nicht immer auf Vollast läuft)

Das Zeitprogramm bedeutet z.B.

Mo-Fr 5:30,d 10,e 13:10,d 21:30,n

ab 5:30 temp(D)ay
ab 10:00 temp(E)nergy(saving)
ab 13:10 temp(D)ay
ab 21:30 temp(N)ight

Viele Grüße
Andy

BOFH

Hey Jamesgo,

ich meld mich dann mal in den Kreis der "INTERESSIERTEN".
RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)

Starkstrombastler

Hallo,
ich schließe mich auch an. Bin neugierig was da so geht.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

jamesgo

Ich bin gerade dabei das Commandref zu überarbeiten. Aber hier schon mal ein paar Graphen von gestern.


c_tempRule1           1-5 0730,D 1000,E 1405,D 2130,N

c_tempC                 20
c_tempD                 20.5
c_tempE                 20.5
c_tempFrostProtect  6
c_tempN                 18.5


Dieses Zeitprogramm bedeutet:
- ab 7:30, 20.5 °C
- ab 10:00, 20.5 °C  (tempE und tempD sind gleich)
- ab 14:04, 20.5 °C
- ab 21:30, 18.5 °C
- kurz nach 13:00 habe ich die Wunschtemperatur manuell (für 2 Stunden) auf 21.5 °C erhöht.

Hauswart

Fussbodenheizungslösungen hören sich immer interessant an  8)
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Cybers

wie ist denn der aktuelle Stand?

Gruß, Sascha
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

jamesgo

#6
Hallo,

für alle, die auf die PWM Module warten habe ich nun 94_PWM.pm und 93_PWMR.pm in den contrib Zweig von FHEM auf dem Sourceforge Server eingestellt.

Die beiden Module können mit


wget http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/93_PWMR.pm?format=raw
wget http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/94_PWM.pm?format=raw


geholt und nach /opt/fhem/FHEM copiert werden.

Die commandref kann folgendermaßen aktualisiert werden.

cd /opt/fhem
perl contrib/commandref_join.pl


Die Kurzbeschreibung:

PWMR definiert einen Raum der mittels "Puls Weiten Modulation" beheizt werden soll. Der Raum hat einen Temperatursensor, eine Wunschtemperatur, einen Aktor (der die Heizung an und aus schaltet) und optional mehrere Fenster. Ein offenes Fenster reduziert die Wunschtemperatur auf eine Frostschutz Temperatur. Über IODev wird auf ein PWM Object referenziert.
Die Wunschtemperatur wird entweder über eine Logik ausserhalb von PWMR ermittelt und gesetzt oder über Regeln innerhalb von PWMR kalkuliert.

PWM erhält die Größe der benötigten "Heizpulse" von den Räumen und schaltet die Aktoren. Der Standardzyklus für die PMW ist 15 Minuten da Fussbodenheizungen in der Regel sehr träge reagieren.
Die Entscheidung ob die Heizung in einem Raum an oder ausgeschalten werden soll wird alle 60 Sekunden neu getroffen.
Da meine Thermo Stellantriebe für einen auf/zu Zyklus ca. 2,5 Minuten benötigen gibt es ein Minimum für einen Schaltpuls (120 Sekunden).

Ich betreibe meine Fussbodenheizung (12 Heizkreise) an einer Vailant Gastherme. Die Therme kann bis zu eine gewissen Grundlast heruntermodulieren. Werden zuwenige Räume beheizt bzw. die erzeugte
Wärme nicht abgenommen, dann Schaltet die Heizung in eine Sperrzeit. D.h. für eine bestimmte Zeit wird nicht mehr geheizt.

Für PWM gibt es einige Paramter, die verhindern, dass die Heizung in die Sperrzeit kommt oder zu häufig auf "vollast" läuft.

Eine Minimalkonfiguration könnte folgendermaßen aussehen:


  • Temperatursensor für einen Raum, der im reading "temperatur"  eine Temperatur angibt. Z.B. tempKitchen (reading und regex für die Temperatur kann auch definiert werden)

  • Eine Aktor, der über "on" und "off" die Heizung in den zwei Schaltpunken "an" und "aus" schalten kann. (zum Testen geht natürlich auch ein dummy)

  • Optional Fensterkontakte in den Räumen ...
Der Basissetup wäre dann (fh steht für Fussboden Heizung):

define fh PWM 60 900 120
define roomKitchen PWMR fh 1 tempKitchen relaisKitchen
attr roomKitchen autoCalcTemp 0
set roomKitchen desired-temp 21.5
[code]

Nun wird das PWM Modul versuchen durch Schalten von relaisKitchen die Raumtemperatur auf 21.5 zu regeln.

Ich kann noch meine Filelogs und Graphen zur Verfügung stellen damit man die Schaltpulse visualisieren kann.

Andy

PS: Das Testen/Spielen kann beginnen

BOFH

super !
freu mich schon das ganze in Betreib zu nehmen.

Nächste Woche kommt die Heizung. In Betrieb wrids dann zwar erst in 1-2 monaten gehen ( möchte nämlich januar drin wohnen )
aber bis dahin kann man ja schon das ganze auf seinem raspberry einspielen und pseudo-"confen"
RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)

Reinhart

#8
Hallo Andy!

Dein Modul musste ich natürlich gleich testen und habe schon die ersten Erfolge sichtbar. Ich mache die Ausgabe noch auf einem Dummy, aber die Temperatur stammt von einem FHT80b der im Augenblick die Fussbodenheizung steuert. Da die Fussbodenheizung nachträglich eingebaut wurde (1cm Bauhöhe, Uponor) steuere ich die über einen FHT8V was bei dem System auch gut funktioniert. Natürlich hat die Steuerung eine starke Verzögerung.

Wenn die Temperaturen etwas absinken, werde ich den Regler von dir dann rein hängen und damit die Mischerpumpe dann direkt steuern.

In der Grafik sieht man eigentlich schon schön, wie der Regler versucht sich an den Sollwert heran zu tasten und die Pulsdauer immer weiter vergrößert, weil es ihm anscheinend über die Zeit gesehen zu langsam warm wird. Ein schönes Modul für verspielte Heizungsbastler!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Hallo Reinhart,
damit die Pulse bei steigender Temperatur größer werden musst du eigentlich die Wunsch-Temperatur erhöht haben.
Grüße Andy

Reinhart

Danke für den Tipp, ja ich habe mal von 22.5 auf 23 Grad erhöht.
Ich lasse die Kurven jetzt parallel zur herkömmlichen Steuerung mitlaufen, mit einem längerem Beobachtungszeitraum kann man sicher bessere Schlüsse ziehen. Auch ist mir das Ergebnis einiger Readings nicht ganz klar, aber auch das wird sich dann besser zeigen.

Ich muss bei den Beobachtungen halt immer im Hinterkopf behalten, dass hier ein Dummy gesteuert wird. Das wesentliche Verhalten der Pulsweitenmodulation ist jedoch jetzt schon schön zu erkennen.

Da du dein Modul ja schon länger in Betrieb hast, konntest du eine Überheizung beobachten? Ich meine damit, um wieviel wird der Sollwert mit dem Modul überschritten?
Obwohl ich einen kleinen Rohrdurchmesser von etwa 7 mm habe, genügt schon die reine Strahlungsenergie in den Fließen um noch einige Stunden nachzuwärmen und das bewirkt bei meist zusätzlich steigender Außentemperatur am Nachmittag eine leichte Überwärmung. Ich helfe mir jetzt einfach ab und Fhem stoppt die Fb-Pumpe wenn die Ventilstellung unter 30% fällt.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Das Problem, dass die Temperatur zu hoch ist, habe ich nicht. In der Regel komme ich bei -0,2 Grad zur Wunschtemperatur an.

Im CmdHelp habe ich beschrieben wie der Puls berechnet wird:

Pulse for PWM will be calculated as ((delta-temp * factor) ** 2) + offset.
Offset defaults to 0.11. Factor can be used to weight rooms.

D.h. wenn die Heizung schneller reagiert, dann factor und/oder offset verringern.

Du könntest aber auch die Vorlauftemperatur verringern. Dann wird auch weniger Energie in Boden/Fliesen gebracht.

... da bleibt noch viel Raum zum probieren und optimieren.

Grüße
Andy

jamesgo

zu den Readings:

PWMOnTime: vom Raum berechneter "Wunschpuls" in Minuten:Sekunden (bezogen auf den Zyklus von 15 Minuten)
PWMPulse:     vom Raum berechneter "Wunschpuls" 0.00 bis 1.00
desired-temp: aktuelle Wunschtemperatur (bei mir automatisch berechnet)

energyused:   000000000000000000000000000011
Das sind die Schaltzyklen der letzten 30 Minuten (0=off, 1=on)
energyusedp: Mittelwert aus den letzen 30 Minuten

lastswitch:     letzter Schaltzeitpunkt (direkt zum Rechnen verwendbar).
oldpulse:       letzter Puls der beim Schaltzeitpunkt angewendet wurde

manualTempDuration: der Wert der über "set" gesetzt wurde.

Reinhart

Hallo Andy!

Danke für die Erklärung, mir ist jetzt bei der PWM schon vieles klarer und ich experimentiere munter weiter.
Ein Problem (oder Verständnisproblem) habe ich noch in der Zeitsteuerung. Egal was ich einstelle, merke ich in den Nachtstunden fast keine Änderung an der Pulsbreite, die PWM arbeitet allen Anschein nach fröhlich weiter (siehe Bild "durchlauf" und die Konfiguration "internals").

Ich möchte gerne erreichen, dass in der Nacht ein generelles "off" stattfindet, damit die Pumpe (Mischer) meiner FB zum Stillstand kommt. Weitere Pumpenläufe würden bei meiner Steuerung keinen Sinn ergeben, da die Therme nach Wärmebedarf regelt (Ventilstellung und berechnete Wichtung) und daher zu 99,5% in der Nacht still steht. Was kann ich da tun um dies zu erreichen?

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Hallo Reinhart,

aus den Bildern sehe ich, dass c_AutoCalcTemp auf 0 steht. D.h. du gibst die desired-temp manuell vor.
Diese Wunschtemperatur könntest du z.B. von dem Wochenprogramm des fht nehmen.

Wenn du dass attribut "autoCalcTemp" auf 1 setzt wird das in c_AutoCalcTemp übernommen und die Regeln berechnen dein "desired-temp".

Wenn du jetzt noch das "desired-temp" in dein Chart bekommst kannst du auch kontrollieren ob alles so läuft wie du es wünscht.

Grüße
Andy