Warmwasser-Zirkulationspumpe auslesen

Zum besseren Verständnis der Funktionsweise meiner Warmwasser-Zirkulationspumpe (Grundfos UP15-14 BA PM mit Autoadapt) erfasse ich die Vor- und Rücklauftemperatur des Warmwasser-Zirkulationskreislaufs und den Schaltzustand der Zirkulationspumpe (ein oder aus). Die beiden Temperaturen werden über DS18B20-Temperatursensoren erfasst. Der Ein-Aus-Zustand der Pumpe wird über eine Stromzange erfasst. Die Sensoren sind an einen ESP8266 ESP-12 angeschlossen und werden dort eingelesen.

Die elektrische Leistung der Zirkulationspumpe im Betrieb ist mit ca. 6 Watt angegeben. Der zu messende elektrische Strom liegt damit bei ca. 25mA. Ich verwende dazu die Stromzange SCT-013-005, die 5A in eine Spannung von 1V wandelt. Um den relativ niedrigen Strom richtig erfassen zu können führe ich die Phase der elektrischen Zuleitung zur Zirkulationspumpe zehn Mal durch die Stromzange. Die 25mA entsprechen damit 250mA, die demnach in 50mV umgewandelt werden. Bei Wechselstrom erhält man eine Wechselspannung. Es gilt also, maximal ca. 50mVAC am Analogeingang des ESP8266 ESP-12 zuverlässig zu erfassen.


Programm für den ESP8266 ESP-12

Um nun den Schaltzustand der Zirkulationspumpe zu erfassen wird im folgenden Code ESP8266_Zirkulationspumpe.ino am Analogeingang des ESP8266 ESP-12 anliegende Wechselspannung ausgewertet.

 

Den Verlauf dieses Signals bei eingeschalteter Pumpe habe ich vorher mit einem Oszilloskop angeschaut. Da das Signal ziemlich verrauscht ist, habe ich einen Tiefpassfilter über ein RC-Glied dem Analogeingang vorausgeschaltet. In einer Schleife wird der Analogeingang des ESP8266 ESP-12 500 Mal eingelesen. Aus diesem Messwerten wird der minimale und maximale Messwert berechnet. Aus der Differenz dieser beiden Werte wird ein Parameter erzeugt, der mein eigentlicher Messwert ist. Wenn dieser Messwert einen bestimmten Grenzwert überschreitet gehe ich davon aus dass die Pumpe eingeschaltet ist. Wenn der Code an einem ESP8266 NudeMCU entwickelt wird, werden die einzelnen Messwerte im seriellen Monitor dargestellt. Der für die jeweilige Pumpe gültige Grenzwert ermittelt werden. Bei meiner Pumpe habe ich den Grenzwert bei 100 festgelegt.

Der ESP8266 ESP-12 erfasst also alle ca. 2 Sekunden den Schaltzustand der Zirkulationspumpe. Die aktuellen Werte (Vor- und Rücklauftemperatur, Pumpenzustand und Messparameter) werden an ein PHP-Skript geschickt, das auf einem Server liegt. Dieser Server ist bei mir ein Raspberry Pi, der die aktuellen Werte mittels PHP-Script empfängt, mit einem Zeitstempelversieht, und in eine MySQL-Datenbanktabelle einträgt. Wenn die Pumpe ausgeschaltet ist, werden die Werte ca. alle 5 Minuten übertragen. Wenn die Pumpe eingeschaltet ist ca. alle 10 Sekunden.

Die Daten der Zirkulationspumpe werden mit amcharts in einem Diagramm direkt aus der MySQL-Datenbank visualisiert. Weiter unten ist ein Beispiel dargestellt.


Aufbau des Geräts

Das folgende Bild zeigt den Aufbau von innen. Links wird die Stromzange angeschlossen und man erkennt das RC-Glied. In der Mitte sitzt der ESP8266 ESP-12. Rechts auf der Platine werden die DS18B20-Temperatursensoren angeschlossen. Ganz rechts sitzt ein Spannungswandler AMS1117-3.3, der die Versorgungsspannung für den ESP-12 von 3.3VDC aus 5 bis 12VDC bereitstellt:

Gehäuse


Das fertige Gehäuse sieht vor außen so aus. Links ist die Stromzange angeschlossen. Die LED signalisiert durch Blinken (alle ca. 2 sec) dass der ESP8266 ESP-12 läuft und leuchtet dauerhaft, wenn die Zirkulationspumpe eingeschaltet ist. Rechts sind die DS18B20-Temperatursensoren angeklemmt. Und ganz rechts an der Seite ist noch die Spannungsversorgung (5 bis 12VDC) über eine Hohlbuchse zu erkennen:

Gehäuse


Ergebnis aus Diagrammdarstellung

Mit diesem selbst gebauten Messgerät kann ich jetzt Diagramme wie in diesem Beispiel erstellen. Dargestellt ist die Vorlauftemperatur in rot, die Rücklauftemperatur in blau, und der Schaltzustand der Zirkulationspumpe in grün:

Gehäuse


Fazit

Mit diesem Aufbau habe ich herausgefunden, dass die bei mir eingebaute Warmwasser-Zirkulationspumpe bei mir nicht so wie vom Hersteller beschrieben funktioniert. Die Autoadapt-Funktionsweise soll laut Herstellerangaben verbrauchsabhängig nach einem bestimmten Algorithmus die Pumpe ein- und ausschalten. Auch eine Urlaubs- oder Abwesenheitsfunktion soll eingebaut sein. In meinem Fall läuft die Pumpe allerdings Tag und Nacht nach demselben Muster durch. Auch während längeren Abwesenheiten wie Urlaub hat sich daran nichts geändert. Der Gasverbrauch war trotz ausgeschalteter Heizung (Sommerurlaub) und keinem Warmwasserbezug deutlich messbar. Aus meiner Sicht ein Ergebnis der nicht funktionierenden Abwesenheitsfunktion.

Eigentlich sollte die Pumpe über die Messung der Vorlauftemperatur laufend den tatsächlichen Bedarf ermitteln, diesen in einen "Kalender" eintragen um daraus entsprechende Vorhersagen über den zukünftigen Bedarf zu treffen. Basierend auf dieser Vorhersage sollte die Zirkulationspumpe vorgesteuert werden. Klingt gut, hat aber nicht funktioniert. Die Pumpe ging im Minutentakt an und aus, ohne jemals auf unseren WW-Bedarf zu reagieren. Das habe ich erst festgestellt, nachdem ich den tatsächlichen elektrischen Verbrauch gemessen und in einem Diagramm dargestellt hatte. Auf dreimaliges Nachfragen beim Hersteller erhielt ich immer dieselbe Antwort: Das Erstellen des Kalenders dauere 14 Tage. Innerhalb dieser Zeit sei das Regelverhalten also völlig normal. Auf meine Frage, wie denn die Pumpe meinen Bedarf ermitteln wolle, wenn sie selbst doch immer für WW-Nachschub im Vorlauf sorgt, ging der Hersteller nicht ein und meinte, ich sollte abwarten.

Die WW-Zirkulationspumpe wurde insgesamt drei mal durch die jeweils aktuelle Version getauscht, ohne Erfolg! Der Service-Techniker des Herstellers meinte bei seinem letzten Versuch, dass es Einbausituationen gäbe, bei denen die Pumpe einfach nicht so wie erwartet und beschrieben funtionieren würde. Das hat mich dann doch etwas ins Grübeln gebracht. Und ich habe mich in das Thema weiter eingelesen. Letztendlich habe ich aufgrund der vorliegenden Messdaten festgestellt, dass die Pumpe gar nicht richtig funktionieren kann! Warum? Wegen Schwerkraftzirkulation! In dem WW-Zirkulationskreislauf in unserem Haus ist die Schwerkraftzirkulation so hoch, dass es völlig egal ist ob die Pumpe ein- oder ausgeschaltet ist. Zeigen konnte ich das indem ich die Handventile vor und nach der Pumpe geschlossen und damit die Zirkulation unerbunden habe. Die Rücklauftemperatur sinkt dann auf die Raumtemperatur (in unserem Fall Kellertemperatur). Und bleibt da unverändert! Wenn die Handventile geöffnet werden, die Pumpe aber nach wie vor ausgeschaltet bleibt, steigt die Rücklauftemperatur in wenigen Sekunden an und erreicht nach wenigen Minuten in etwa die Vorlauftemperatur. Damit ist belegt, dass auch ganz ohne Pumpe der WW-Kreislauf zirkuliert! Damit kann die Pumpensteuerung natürlich nicht umgehen, meldet aber auch keinen Fehler!

Ein zirkulierender WW-Zirkulationskreislauf ist ja erst einmal nicht ganz verkehrt. An jeder Entnahmestelle ist sofort WW da! Das Problem an der Sache ist aber folgendes: Durch die ständige WW-Zirkulation sinkt die Speichertemperatur deutlich schneller ab als ohne Zirkulation. Ist logisch, es wird ja ständig WW im ganzen Haus verteilt, auch wenn es nirgends gebraucht wird. Man erkennt das sehr schön an den Daten des EMS-Busses. Der Temperaturgradient ist mit Schwerkraftzirkulation 1,5-fach steiler als ohne. Andersherum ist der Temperaturgradient 1,5-fach flacher wenn die Schwerkraftzirkulation unterbunden ist. Damit wird der Speicher seltener aufgeladen und man spart Energie (Erdgas in unserem Fall).

Ich arbeite gerade an einer Lösung des Problems. Meine Idee ist es, ein Magnetventil vor oder nach der Pumpe einzubauen. Und dieses stromlos geschlossene Ventil "verbrauchsgesteuert" lediglich einige Minuten zu öffnen. Eventuell unterstützt durch die dann zugeschaltete WW-Zirkulationspumpe. Mal schauen ob das so funktioniert!