Ankündigung

Einklappen
Keine Ankündigung bisher.

Steuerung WW-Zirkulationspumpe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Bei mir ist das genauso wie beim Klaus. Kurzes auf zu und nach kurzer Zeit ist Warmwasser da.

    Ob das mit den bestimmten Zeiten so immer klappt das bezweifel ich. Vorallem man möchte ja sparen und wer will denn genau auf die Minute am Waschbecken sein? Wenn aber die Zirkulation dann einen Zeitfenster von einer Stunde hat, dann frage ich mich was ist da sparsam. Meiner Meinung nach war dass mal früher mit den Zeiten wo man in der früh von 5-7Uhr und am Mittag für die Frau und am Abend bis der letzte geduscht hat. Heutzutage mit den intelligenten Pumpen sehe ich das nicht mehr nötig. Ich glaube auch nicht das ich meinen Kindern wirklich dazu bringen kann das Sie jedesmal wenn sie aus dem Bad gehen das Sie den Taster drucken damit die Pumpe ausgeht. Die werden zwar ja sagen aber danach mir den Vogel zeigen. Ist nur meine Meinung.

    grüße

    Kommentar


      #17
      Ich habe gute Erfahrungen mit der Zirkulationssteuerung Circon (gab es mal bei Conrad unter der Bestellnummer 610393 für ca. 170€) gemacht. Läuft bei mir jetzt seit ungefähr 10 Jahren. Funktioniert halt autonom und nicht über KNX. Der Kontroller erkennt durch die Temperaturüberwachung von Vor- und Rücklauf ob gerade Warmwasser abgenommen wird und schaltet die Pumpe dann aber auch wieder ab, wenn das Wasser in der Ringleitung erwärmt ist (d.h. Rücklautemp. ungefähr gleich Vorlauftemp.).
      Das Besondere ist aber, daß er sich die Zeiten merkt wann jeweils Warmwasser abgenommen wurde und wenn dies immer zur gleichen Zeit passiert, schaltet er zukünftig die Pumpe automatisch vorher ein. Ändert man seine Gewohnheiten (z.B. Urlaub) wieder "vergisst" der Kontroller die nicht unnötigen Pumpzeiten auch wieder mit der Zeit.
      Ich hatte die Pumpe mal mit Hilfe eines Energieverbrauchsmeßgerät überwacht. In unserem 4-Personenhaushalt ergab sich da folgendes Bild:
      - Ungesteuerter Betrieb (d.h. Dauerbetrieb) der Pumpe: ca. 160kWh pro Jahr
      - Gesteuerter Betrieb (nachdem der Kontroller unsere Gewohnheiten "erlernt" hatte): ca. 8kWh pro Jahr
      Der Kontroller amortisierte sich also nach 3-4 Jahren, zumindest bei uns.

      Gruß
      Christian

      Kommentar


        #18
        Ich denke auch schon seit einer Weile über die Steuerung meiner Zirkulationspumpe nach.

        Neben den hier im Thread genannten Aspekten gibt es bei mir noch einen weiteren wichtigen Aspekt: nämlich will ich vermeiden, daß im Sommer durch das kursierende Warmwasser mein Haus unnötig aufgeheizt wird.

        Ich denke nun also daran, zwei verschiedene Logiken einzusetzen, eine für den Sommer und eine andere für den Winter. Hat das bereits jemand realisiert und wie sind ggf. die Erfahrungen damit?

        Kommentar


          #19
          Zitat von klaus_kraemer Beitrag anzeigen
          Bei mir führt ein Temperatursprung der knapp hinter dem Boiler befindlichen WW-Leitung zum 45 sekündigen Lauf der Zirku. Damit kann die Zirkulation von jeder Entnahmestelle durch kurzes Öffnen des WW ausgelöst werden. Nassmachen der Zahnbürste reicht - nach dem Zähneputzen ist das warme Wasser da.
          Hallo,

          wie habt Ihr denn die Logik dahinter realisiert - also wie wertet Ihr den Temperaturanstieg aus? Hab aktuell die PM Lösung, aber diese gefällt mir irgendwie besser.

          Ein L&J Anlege-Temperaturfühler ist bereits vorhanden.

          Danke schon mal
          Franz

          Kommentar


            #20
            Zitat von colalight890 Beitrag anzeigen

            Hallo,

            wie habt Ihr denn die Logik dahinter realisiert - also wie wertet Ihr den Temperaturanstieg aus? Hab aktuell die PM Lösung, aber diese gefällt mir irgendwie besser.

            Ein L&J Anlege-Temperaturfühler ist bereits vorhanden.

            Danke schon mal
            Franz
            Hallo Franz,

            anbei der Code dazu, wichtig ist eigentlich nur die Funktion "Delta3(Name, pGA)" am Schluss des Codeteils, sie stellt den Temperaturanstieg pro Minute, also die Steilheit zur Verfügung. Ich schalte bei einem Temperaturanstieg von 1,6 K/min:

            Makroaufruf im Hauptprogramm:

            Code:
            HeizenZirkulation(Zirku, "Zirkulationspumpe-1/2/1", "Status Switch Zirkulationspumpe-1/2/101", "Temp_Zirkulation-1/0/5", 1.6f16)
            Das Makro

            Code:
            :
            begin HeizenZirkulation(Name, pGAzirkuPumpe, pGAzirkuPumpeStat, pGAzirkuTemp, pSchwellwert)
            
            :var isLocked@
            isLocked@ = AUS
            :var delta3@
            delta3@ = Delta3(Zirku, pGAzirkuTemp)
            
            //========== Abschalten nach 48 Sekunden, wenn nicht Dauer-EIN
            
            if delay(pGAzirkuPumpeStat == EIN, 48000u64) AND pGAzirkuPumpeStat == EIN and !Name_BFdauerEin then {
                write(pGAzirkuPumpe, AUS);
            } endif
            
            //========== Für 10 Minuten sperren
            if delay(pGAzirkuPumpeStat == EIN, 600000u64) then {
                isLocked@ = AUS;
            } endif
            
            if change(pGAzirkuPumpeStat) and pGAzirkuPumpeStat == EIN then {
                isLocked@ = EIN;
            } endif
            
            //========== Automatisches Einschalten, wenn der Temperaturanstieg über dem Schwellwert liegt
            
            if change(delta3@) or change(isLocked@) or change(Name_BF) then {
                if delta3@ > pSchwellwert and !isLocked@ and Name_BFautomatik then {
                    write(pGAzirkuPumpe, EIN);
                } endif;
            } endif
            
            //========== Statischer Betrieb
            
            if change(Name_BF) then {
                if Name_BFdauerAus then {
                    write(pGAzirkuPumpe,AUS);
                } endif;
                if Name_BFdauerEin then {
                    write(pGAzirkuPumpe,EIN);
                } endif;
            } endif
            
            //========== Betriebsarten-Management ======================================================
            Name_BF = 255u08
            Name_txtBF = $$  // Debug-StringVariable
            Name_BFautomatik = AUS;
            Name_BFdauerAus = AUS;
            Name_BFdauerEin = AUS;
            :var bfInFlash@
            :var bfIcon@
            :var bfIconStyle@
            :var strBF@
            bfInFlash@ = 255u08
            bfIcon@ = INFO
            bfIconStyle@ = DARKRED
            strBF@ = $$
            
            //========= BETRIEBSARTEN-INIT
            if (systemstart()) then {
                readflash(bfInFlash@, FlashZirkuPumpeBF);
                Name_BF = bfInFlash@;
            } endif;
            
            //========= BETRIEBSARTENAUSWAHL
            if (mpbutton(mbtnZirku_PumpeBF,1,pgIDwarmwasser) == 255) then {
                Name_BF = 1u08;    
            } endif
            if (mpbutton(mbtnZirku_PumpeBF,2,pgIDwarmwasser) == 255) then {
                Name_BF = 2u08;    
            } endif
            if (mpbutton(mbtnZirku_PumpeBF,3,pgIDwarmwasser) == 255) then {
                Name_BF = 3u08;
            } endif
            if (change(Name_BF) and (Name_BF > 0) and (Name_BF <= 3)) then {
                Name_BFautomatik = Name_BF == 1u08;
                Name_BFdauerAus = Name_BF == 2u08;
                Name_BFdauerEin = Name_BF == 3u08;
                if (Name_BFautomatik) then {
                    bfIcon@ = CLOCK;
                    bfIconStyle@ = ACTIVE;
                    strBF@ = $Betriebsart: Automatikbetrieb <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                } endif;
                if (Name_BFdauerAus) then {
                    bfIcon@ = WARN;
                    bfIconStyle@ = STATE5;
                    strBF@ = $Betriebsart: Dauer-Aus <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                } endif;
                if (Name_BFdauerEin) then {
                    bfIcon@ = WARN;
                    bfIconStyle@ = STATE7;
                    strBF@ = $Betriebsart: Dauer-Ein <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                } endif;
                pdisplay(mbtnZirku_PumpeBF,$$,bfIcon@,bfIconStyle@,BLINKRED,pgIDwarmwasser,Name_BF);
                Name_txtBF = strBF@;
            } endif;
            //========= Geänderte Betriebsart nach 60 Sekunden ins Flash schreiben
            if (delay(change(Name_BF),60000u64)) then {
                readflash(bfInFlash@,FlashZirkuPumpeBF);
                if (Name_BF != bfInFlash@) then {
                    writeflash(Name_BF,FlashZirkuPumpeBF);
                    Name_txtBF = $Betriebsart gesichert: <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small><br>$ + strBF@;
                } endif;
            } endif
            
            
            :end
            Die Funktion Delta3:
            Code:
            /*---------------  Delta3 ------------*/
            :begin Delta3(Name,pGA)
            :info $Bei Temperaturänderung die Änderung pro Minute errechnen$\\
            $Name zur Eindeutigkeit$
            $pGA die GA der Temperaturmessung$
            
            //Messwertspeicher
            :var mw1@
            :var mw2@
            //Zeitstempel
            :var ts0@
            :var ts1@
            :var ts2@
            //Wertezähler
            :var count@
            //Trigger
            :var triggerGA@
            :var triggerTime@
            //Rückgabewert
            :var result@
            
            :var testTriggerTime@
            testTriggerTime@ = 0u32
            :var testTriggerGA@
            testTriggerGA@ = 0u32
            
            mw1@ = 0f16
            mw2@ = 0f16
            ts0@ = 0u64
            ts1@ = 0u64
            ts2@ = 0u64
            count@ = 0u08
            triggerGA@ = AUS
            triggerTime@ = AUS
            result@ = 0f16
            
            //Code
            if change(pGA) then {
                triggerGA@ = EIN;
            } endif
            if stime(1) then {
                triggerTime@ = EIN;
            } endif
            if (change(triggerGA@) and triggerGA@ == EIN) or (change(triggerTime@) and triggerTime@ == EIN) then {
                ts0@ = utctime();
                if (count@ > 2) then {
                    result@ = convert(convert(pGA - mw2@,0f32) *60000f32 / convert(ts0@ - ts2@,0f32),0f16);
                } endif;
            
                if triggerGA@ then {
                    if (count@ > 2) then {
                        mw2@ = mw1@;
                        mw1@ = pGA;
                        ts2@ = ts1@;
                        ts1@ = ts0@;
                    } else {
                        count@ = count@ + 1;    
                    } endif;
                    triggerGA@ = AUS;
                    testTriggerGA@ = testTriggerGA@ + 1u32;
                } else {
                    triggerTime@ = AUS;
                    testTriggerTime@ = testTriggerTime@ + 1u32;
                } endif;
            }endif
            
            :return result@
            :end
            Viel Spaß!

            Kommentar


              #21
              Hab' gerade gemerkt, dass dieser Thread ja gar nicht im EibPC-Forumsteil steht, aber vielleicht hilft die Idee ja auch woanders weiter...

              Hier noch ein Bild der Bedienoberfläche dazu - der Wert der Temperaturänderung pro Minute in gelber Farbe:

              Zirku.PNG
              Zuletzt geändert von klaus_kraemer; 01.06.2018, 10:41. Grund: Bild dazu...

              Kommentar


                #22
                ja, geht mir hauptsächlich um die HS Logik.
                Danke trotzdem

                Kommentar


                  #23
                  Das bedeutet aber, etwas WW verbrauchen, 1 Minute warten, dann hast du warmes Wasser. Für mich wäre die PM Lösung die Bessere, ich bin selten im Bad ohne Wasser zu benutzen.

                  Gruß Florian

                  Kommentar


                    #24
                    Zitat von Beleuchtfix Beitrag anzeigen
                    Das bedeutet aber, etwas WW verbrauchen, 1 Minute warten, dann hast du warmes Wasser. Für mich wäre die PM Lösung die Bessere, ich bin selten im Bad ohne Wasser zu benutzen.

                    Gruß Florian
                    Jeder, wie er es braucht - wir müssen oft ins Bad, ohne warmes Wasser zu brauchen. Der Vorteil ist, dass man egal wo die Zirkulation anwerfen kann. Das ist allemal besser, als das noch nicht warme Wasser in Richtung Kläranlage zu schicken, bis in Küche, Gäste-WC und sonstwo das Wasser endlich auch warm aus dem Hahn kommt. Und mit einem PM verknüpfbar ist die Temperatursteigungslösung ja auch.

                    Kommentar


                      #25
                      Hallo Zusammen,
                      ich bin nach wie vor am überlegen wie ich hier am HS eine Logik gebastelt bekomme. Also wenn WW Temp. innerhalb von x Sek. von y auf z steig, oder eine gewisse Differenz erreicht wird, dann schalte die Zirkulationspumpe ein. Oder so in der Art

                      Hat dazu jemand einen Tip?

                      Kommentar


                        #26
                        ich hab das mit einem "Zennio minibox 45" gemacht der wird über PM in den Bädern geschalten
                        da sind gleich die Fühlereingänge und Aktorausgänge drauf und die Logik / Regelung kann das Teil auch - hier Läuft die Zirk. nur bis diese mit 40° zurückkommt und nur wenn der Speicher min. 45° hat - alles mit dem Zennio

                        zusätzlich werde ich mir noch eine "edomi" Zeitschaltuhr machen die Mo-Fr zusätzlich von von 6:00-6:10 weil Morgens bin ich zu schnell unter der Dusche und muss trotzdem etwas warten
                        Zuletzt geändert von maxl; 07.09.2018, 13:02.

                        Kommentar


                          #27
                          Ok, Danke. Hab nur kein Zennio - dafür halt einen Homeserver

                          Kommentar


                            #28
                            Zitat von klaus_kraemer Beitrag anzeigen

                            Hallo Franz,

                            anbei der Code dazu, wichtig ist eigentlich nur die Funktion "Delta3(Name, pGA)" am Schluss des Codeteils, sie stellt den Temperaturanstieg pro Minute, also die Steilheit zur Verfügung. Ich schalte bei einem Temperaturanstieg von 1,6 K/min:

                            Makroaufruf im Hauptprogramm:

                            Code:
                            HeizenZirkulation(Zirku, "Zirkulationspumpe-1/2/1", "Status Switch Zirkulationspumpe-1/2/101", "Temp_Zirkulation-1/0/5", 1.6f16)
                            Das Makro

                            Code:
                            :
                            begin HeizenZirkulation(Name, pGAzirkuPumpe, pGAzirkuPumpeStat, pGAzirkuTemp, pSchwellwert)
                            
                            :var isLocked@
                            isLocked@ = AUS
                            :var delta3@
                            delta3@ = Delta3(Zirku, pGAzirkuTemp)
                            
                            //========== Abschalten nach 48 Sekunden, wenn nicht Dauer-EIN
                            
                            if delay(pGAzirkuPumpeStat == EIN, 48000u64) AND pGAzirkuPumpeStat == EIN and !Name_BFdauerEin then {
                            write(pGAzirkuPumpe, AUS);
                            } endif
                            
                            //========== Für 10 Minuten sperren
                            if delay(pGAzirkuPumpeStat == EIN, 600000u64) then {
                            isLocked@ = AUS;
                            } endif
                            
                            if change(pGAzirkuPumpeStat) and pGAzirkuPumpeStat == EIN then {
                            isLocked@ = EIN;
                            } endif
                            
                            //========== Automatisches Einschalten, wenn der Temperaturanstieg über dem Schwellwert liegt
                            
                            if change(delta3@) or change(isLocked@) or change(Name_BF) then {
                            if delta3@ > pSchwellwert and !isLocked@ and Name_BFautomatik then {
                            write(pGAzirkuPumpe, EIN);
                            } endif;
                            } endif
                            
                            //========== Statischer Betrieb
                            
                            if change(Name_BF) then {
                            if Name_BFdauerAus then {
                            write(pGAzirkuPumpe,AUS);
                            } endif;
                            if Name_BFdauerEin then {
                            write(pGAzirkuPumpe,EIN);
                            } endif;
                            } endif
                            
                            //========== Betriebsarten-Management ======================================================
                            Name_BF = 255u08
                            Name_txtBF = $$ // Debug-StringVariable
                            Name_BFautomatik = AUS;
                            Name_BFdauerAus = AUS;
                            Name_BFdauerEin = AUS;
                            :var bfInFlash@
                            :var bfIcon@
                            :var bfIconStyle@
                            :var strBF@
                            bfInFlash@ = 255u08
                            bfIcon@ = INFO
                            bfIconStyle@ = DARKRED
                            strBF@ = $$
                            
                            //========= BETRIEBSARTEN-INIT
                            if (systemstart()) then {
                            readflash(bfInFlash@, FlashZirkuPumpeBF);
                            Name_BF = bfInFlash@;
                            } endif;
                            
                            //========= BETRIEBSARTENAUSWAHL
                            if (mpbutton(mbtnZirku_PumpeBF,1,pgIDwarmwasser) == 255) then {
                            Name_BF = 1u08;
                            } endif
                            if (mpbutton(mbtnZirku_PumpeBF,2,pgIDwarmwasser) == 255) then {
                            Name_BF = 2u08;
                            } endif
                            if (mpbutton(mbtnZirku_PumpeBF,3,pgIDwarmwasser) == 255) then {
                            Name_BF = 3u08;
                            } endif
                            if (change(Name_BF) and (Name_BF > 0) and (Name_BF <= 3)) then {
                            Name_BFautomatik = Name_BF == 1u08;
                            Name_BFdauerAus = Name_BF == 2u08;
                            Name_BFdauerEin = Name_BF == 3u08;
                            if (Name_BFautomatik) then {
                            bfIcon@ = CLOCK;
                            bfIconStyle@ = ACTIVE;
                            strBF@ = $Betriebsart: Automatikbetrieb <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                            } endif;
                            if (Name_BFdauerAus) then {
                            bfIcon@ = WARN;
                            bfIconStyle@ = STATE5;
                            strBF@ = $Betriebsart: Dauer-Aus <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                            } endif;
                            if (Name_BFdauerEin) then {
                            bfIcon@ = WARN;
                            bfIconStyle@ = STATE7;
                            strBF@ = $Betriebsart: Dauer-Ein <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small>$;
                            } endif;
                            pdisplay(mbtnZirku_PumpeBF,$$,bfIcon@,bfIconStyle@,BLINKRED,pgIDwarmwasser,Name_BF);
                            Name_txtBF = strBF@;
                            } endif;
                            //========= Geänderte Betriebsart nach 60 Sekunden ins Flash schreiben
                            if (delay(change(Name_BF),60000u64)) then {
                            readflash(bfInFlash@,FlashZirkuPumpeBF);
                            if (Name_BF != bfInFlash@) then {
                            writeflash(Name_BF,FlashZirkuPumpeBF);
                            Name_txtBF = $Betriebsart gesichert: <small>$ + convert(setdate(),$$) + $ $ + convert(settime(),$$) + $</small><br>$ + strBF@;
                            } endif;
                            } endif
                            
                            
                            :end
                            Die Funktion Delta3:
                            Code:
                            /*--------------- Delta3 ------------*/
                            :begin Delta3(Name,pGA)
                            :info $Bei Temperaturänderung die Änderung pro Minute errechnen$\\
                            $Name zur Eindeutigkeit$
                            $pGA die GA der Temperaturmessung$
                            
                            //Messwertspeicher
                            :var mw1@
                            :var mw2@
                            //Zeitstempel
                            :var ts0@
                            :var ts1@
                            :var ts2@
                            //Wertezähler
                            :var count@
                            //Trigger
                            :var triggerGA@
                            :var triggerTime@
                            //Rückgabewert
                            :var result@
                            
                            :var testTriggerTime@
                            testTriggerTime@ = 0u32
                            :var testTriggerGA@
                            testTriggerGA@ = 0u32
                            
                            mw1@ = 0f16
                            mw2@ = 0f16
                            ts0@ = 0u64
                            ts1@ = 0u64
                            ts2@ = 0u64
                            count@ = 0u08
                            triggerGA@ = AUS
                            triggerTime@ = AUS
                            result@ = 0f16
                            
                            //Code
                            if change(pGA) then {
                            triggerGA@ = EIN;
                            } endif
                            if stime(1) then {
                            triggerTime@ = EIN;
                            } endif
                            if (change(triggerGA@) and triggerGA@ == EIN) or (change(triggerTime@) and triggerTime@ == EIN) then {
                            ts0@ = utctime();
                            if (count@ > 2) then {
                            result@ = convert(convert(pGA - mw2@,0f32) *60000f32 / convert(ts0@ - ts2@,0f32),0f16);
                            } endif;
                            
                            if triggerGA@ then {
                            if (count@ > 2) then {
                            mw2@ = mw1@;
                            mw1@ = pGA;
                            ts2@ = ts1@;
                            ts1@ = ts0@;
                            } else {
                            count@ = count@ + 1;
                            } endif;
                            triggerGA@ = AUS;
                            testTriggerGA@ = testTriggerGA@ + 1u32;
                            } else {
                            triggerTime@ = AUS;
                            testTriggerTime@ = testTriggerTime@ + 1u32;
                            } endif;
                            }endif
                            
                            :return result@
                            :end
                            Viel Spaß!
                            Genau dieses als Homeserver Logik gibt es nicht zufällig?

                            Kommentar


                              #29
                              Zitat von maxl Beitrag anzeigen
                              Morgens bin ich zu schnell unter der Dusche und muss trotzdem etwas warten

                              Also ich brauche immer vorher 1-2 Espressi und trödle herum, bevor ich unter die Dusche gehe (nachdem ich aufstehe, also ungefähr am Mittag herum). Da startet dann schon mal der PM von der Küche die Zirkulationspumpe...

                              Da aber meine Freundin meist eh früher aufsteht, ist schon alles eingeschwungen
                              gemäss forenregeln soll man bitte und danke sagen! also: bitte und danke!

                              Kommentar

                              Lädt...
                              X