Hallo zusammen, Wie der Beitragnamme schon sagt möchte ich eine Steuerung für Die Zirkulationspumpe basteln. Da ich vom Beruf Elektroniker bin war der Hardwareteil eigentlich ganz simpel, der Softwareteil dafür nicht ganz so leicht. Also ich hab mir das ganze so gedacht: Mit einem AtMega 8 die Temperatur am Ausgang vom Brauchwasserspeicher überwachen und bei einer positiven Änderung die Zirkulationspumpe einschalten. Soweit zum Grundprinzip, natürlich soll da etwas mehr Logik das Einschalte kontrollieren. In einem älteren Beitrag habe ich über ähnliche Lösungsansätze gelesen, aber leider nichts darüber wie man das Programmtechnisch lösen kann. Meinen Lösungsansatz habe ich angehängt. Würde mich über eure Hilfe freuen, schon mal viellen Dank!
Keiner eine Idee? Ich bitte ja nicht um eine fertige Lösung, Anregungen oder Verbesserungen zu meinem Programm. Mehr will ich nicht.
Unter den Bastlern hier sind wohl nur wenige, die sich anhand Deiner Beschreibung vorstellen können, worum es überhaupt geht. "Die Zirkulationspumpe" sagt mir jedenfalls fast nichts. Beschreibe welchen Zweck die Pumpe in welcher Anlage hat. Warum willst Du eine eigene Steuerung bauen? Welche Ziele verfolgst Du?
Hallo Sind die Wartezeiten wirklich in nano Sekunden?? Hab den Quelltext nur schnell überflogen. Denke aber im großen und Ganzen würde das so gehen.
Naja, im Prinzip sieht Dein Code doch gut aus - ich weiß ehrlich gesagt nicht so recht, was Du zusätzlich noch einbauen möchtest (hängt natürlich auch stark von den persönlichen Präferenzen ab). Hast Du ihn schon einmal getestet; funktioniert er? Die einzige mögliche Schwierigkeit, die ich sehe, ist, den Sensoranbindung schnell genug hinzukriegen, d. h. die Trägheit von Rohr und Sensor so niedrig als möglich zu halten. Von der Firma Technische Alternative gibt es hierfür speziell einen "ultraschnellen" Fühler mit Tauchhülse, aber im Prinzip sollte es auch mit einem dünnwandigen Metallrohr (Kupfer), Wärmeleitkleber, Sensor im SMD-Gehäuse und Dämmung gehen. Gegen die hart codierten Werte ist wohl auch nichts zu sagen, solange Du nicht in die Großserienproduktion einsteigen willst. Evtl. könnte man mit einem zweiten Sensor die Temperatur an der Zirkulationsleitung erfassen und die Pumpe wieder abschalten, wenn sie z. B. 90% der Vorlauftemperatur erreicht hat. Da sich aber andererseits die Rohrlänge nur selten ändern wird, ist hart codiert auch kein Problem. Eine zeitabhängige Sperrung der Zirkulationspumpe macht wohl keinen Sinn; wenn jemand nachts Warmwasser entnehmen will und welches im Speicher ist, so kriegt er es auch... Vielleicht noch einen Betriebsstundenzähler für die Pumpe? Persönlich fände ich eine Wärmemengenzählung interessant, um zu sehen, welche "Menge" warmen Wassers entnommen wurde bzw. wie hoch der Verlust durch die Zirkulation ist; ohne Volumenstromgeber in Vorlauf- und Zirkulationsleitung und einen zweiten Temperaturfühler ist das allerdings natürlich witzlos.
Ergänzung: Mögliche Szenarien für eine Fehlfunktion wären m. M. n. lediglich: - Druckschwankungen auf der Kaltwasserzuleitung, welche Warmwasser aus dem Speicher in die Rohrleitung drücken. Da jedoch V(Speicher) >> V(Rohrleitung), müsste das schon eine recht beachtliche Druckschwankung sein (dann dürftest Du noch andere Sorgen haben als den ungewollten Start der Pumpe)... - Ein ungewöhnlich schnelles Aufheizen des Puffers - ebenfalls unwahrscheinlich, da wieder V(Puffer) >> V(Rohr). - (Mikro)zirkulation. Beherrschbar durch konstruktive Maßnahmen (zur Not Thermosiphon nachrüsten) und entsprechende Wahl des Schwellwerts (Zirkulation sollte ja in erster Näherung konstant sein). Evtl. könnte man ja die Startzeiten für eine Weile aufzeichnen, um ungewollte Starts zu erkennen - aber auf Grund obiger Ausführungen halte ich das für sinnfrei. Noch möglich wäre eine Selbstlernfunktion (bzw. "Hellsehfunktion"): Das Gerät lernt, dass z. B. innerhalb von 14 Tagen täglich morgens um sechs Uhr warmes Wasser benötigt wird und lässt in der Folge bereits immer proaktiv zirkulieren. Noch sinnvoll wäre ein Festklemmschutz: Wenn die Pumpe z. B. für 24 Stunden nicht gelaufen ist, wird sie kurz betätigt, um ein Festsitzen durch längere Nichtbenutzung zu vermeiden.
Stefan Frings schrieb: > "Die Zirkulationspumpe" sagt mir jedenfalls fast nichts. Guckst du hier: http://de.wikipedia.org/wiki/Zirkulationspumpe
Hallo Alexander Die einfachste Variante ist wohl eine preiswerte Digitalschaltuhr aus dem Baumarkt. Wo dann die meistbenutzten Zeiten programmiert werden. Eine mechanische Tagesschaltuhr (wie von den meisten Heizungsfirmen eingesetzt) ist nicht zu empfehlen. Die geht eh immer verkehrt und die Funktionszeiten stimmen spaetestens nach einem Monat nichtmehr. Wenn Du jedoch die Temperatur auswerten moechtest, wuerde ich die Temperatur am Einbindungspunkt der Zirkulationsleitung in die Warmwasserleitung setzen. jedoch zirkuliert dann auch Nachts und Tagsueber was, wenn vielleicht die Funktion gar nicht gefordert ist. Wenn Du dann noch eine Uhr in den Mega8 implementierst, und beides miteinander koppelst, sollte eine sinnvolle Anwendung entstehen. Gruss Asko.
Ich denke nicht, dass der Code so funktioniert. Die DO-While Schleife läuft permanent ungebremst durch. Alexander, überlege mal, wie viel Zeit zwischen zwei Messungen liegt. Mit Sicherheit zu wenig, als dass eine robuste Differenz entstehen könnte. Und da der neue Messwert immer wieder der alte wird, wäre die Einschaltbedingung niemals erfüllt. IMHO gehört da noch ein Delay in die Do-While Schleife. //Niffko
> Also ich hab mir das ganze so gedacht: Mit einem AtMega 8 die Temperatur > am Ausgang vom Brauchwasserspeicher überwachen und bei einer positiven > Änderung die Zirkulationspumpe einschalten. Soweit zum Grundprinzip, > natürlich soll da etwas mehr Logik das Einschalte kontrollieren. Also ich halte das für unsinn, was Du da vor hast. Ich habe schon verstanden, was Du bewirken willst. Du möchtest überwachen, ob jemand den Warmwasserhahn öffnet und sich dadurch am Speicher der Ausgang erwärmt und dann mit der Zirkulationspumpe das beschleunigen. Ich habe aber bedenken, das es in der Form gut funktionieren wird. Denn wenn Du erst die Pumpe zuschaltest, wenn sich das Rohr erwärmt, dann ist der Wasserhahn schon offen und pumpt fröhlich das kalte Wasser schon raus. Alleine durch das zuschalten der Pumpe zu diesem Zeitpunkt dürfte das nicht besser werden und dadurch gespart werden. Meine Idee: Baue eine Inteligenz in die Pumpensteuerung. Überlasse der Pumpe das lernen des passenden Zyklus. Mit einem RTC und 1 Monat überwachen der Nutzung ( Uhrzeit, Dauer, Temperatur) kann die Pumpe dann ein eigenes Nutzerprofil anlegen und genau dann schon frühzeitig die Pumpe aktivieren, das zu den ermittelten Nutzerzeiten warmes Wasser vorhalten. Aber der vorschlag von mir macht das alles nicht einfacher ;) Es gäbe aber auch schon passende Pumpen, die genau das so in der Form können. Habe ich kürzlich auf der Baustelle schon gesehen.
Erstmal vielen Dank für eure Antworten, Ich denke jetzt sollte jedem klar sein was eine Zirkulationspumpe ist und wozu diese gut ist. Für die, die das Grundprinzip nicht ganz verstanden haben hie noch eine kurze Erklährung: 1 Wasserhan für ca. 3-5 sekunde auf (Pumpe wird durch die positive veränderung des Temperatursensors am Wasserspeicherausgang eingeschaltet) 2 ca. 20 sekunden (die eingestelte Zeit im Program für eine volle Runde) warten bis die Pumpe eine Runde macht. 3 Wassehan wieder auf und warmes wasser ist grifbereit. Danke auch für andere Vorschläge aber ich möchte mal erzählen warum es unbedingt diese Lösung seien muss. Ich habe ein 30 Jahre altes haus und dem Alter entsprechend sind die Rohre nicht ganz so gut gedähmt. Deshalb ist jede unnüze Zirkulation verschwendung der Wärmeenergie. Mit einer normalen digetalen Zeitschaltuhr kann mann zu nur bestimmten Zeiten die Pumpe laufen lassen und wenn man das Ganze richtig gut abgeschätzt hat, dan hat man das wünschenswerte ergebniss ca. zu 50% erreicht. Weil ein Mensch keine Maschiene ist, ist jede Nutzung individuell. Eine Inteligente, selbstlernende Pumpensteuerung würde bei persönlich nur am lernen sein weil ich im Schichtbetrieb arbeite und jede Woche andere Schicht habe. Niffko auf eine Antwort wie deine habe ich eigentlich gewartet. Wie soll deiner Meinung nach Do-While Schleife aussehen, ist es vielleicht sogar besser eine andere Schleife dafür zu verwenden? Die Werte im Code sind nur zum Ausprobieren(Einfahren) der Steuerung. Die Steuerung ist schon aufgebaut und das Programm aufgespielt, das Problemm ist nur die Pumpe wird willkülich und oft eingeschalten, obwohl keine Warmwasseranfrage stattfand.
Alexander S. schrieb: > Wie soll deiner Meinung nach Do-While Schleife aussehen, ist es > vielleicht sogar besser eine andere Schleife dafür zu verwenden? Gegen die Schleife an und für sich ist nichts zu sagen. Alexander S. schrieb: > Die Steuerung ist schon aufgebaut und das Programm aufgespielt, das > Problemm ist nur die Pumpe wird willkülich und oft eingeschalten, obwohl > keine Warmwasseranfrage stattfand. Im Grunde hast Du zwei Parameter, an denen Du drehen kannst: - Die Verzögerung pro Schleifendurchlauf (fehlt bei Dir noch; einfach eine Verzögerung z. B. vor dem while(1), sagen wir um eine Sekunde für den Anfang) - Die Schaltschwelle, d. h. der Temperaturunterschied Offensichtlich ist die Schaltschwelle zu gering. Am besten wäre es, wenn Du z. B. einen UART am µC hättest, über den Du die Messwerte ausgeben kannst (zum "Debuggen"). Dann siehst Du gleich, wie sie sich verhalten.
Ich hatte bei der Lösung mit einem Fühler leider Fehlauslösungen... Habe den einen Fühler sehr nah am Auslass. Habe das dann mit einem zweiten Fühler zwei Meter weiter gelöst. Wasserhan eine Sekunde auf. Wenn dann fühler 1 wesentlich Wärmer und fühler zwei bisschen wärmer dann macht er die Pumpe an.
ich habe mir deinen Code nicht angesehen, aber das Problem mit der Schleife das angesprochen wurde ist das die Temperaturen nicht so schnell steigen/fallen wie du misst. Ein schneller Temperatursensor hat idealerweise eine sehr kleine Wärmekapazität. Man kann also sagen umso kleiner das Ding desto schneller wird er. Deswegen würde ich aber einen Drucksensor in die Leitung setzten, dieser reagier viel schneller, sobald man den Hahn öffnen schwankt der Druck kurz dazu muss man auch keine 3-5 Sekunden Wasser laufen lassen, sondern einfach nur ganz kurz Hahn auf und zu dann wirft man die Zirkulationspumpe an. In deinem Fall würde ich auch eine etwas potentere Pumpe wählen, selbst wenn die ein paar Watt mehr braucht. Weil du ja erstens die Pumpe nicht vorlaufen läßt, die Stromkosten also eh sehr klein bleiben und zweitens ja möglichst schnell warmes Wasser haben möchtest. Das andere Problem ist halt das man eine Zirkulationsleitung nicht zu lange stillstehen lassen sollte weil sich dort vermehrt Legionellen vermehren, dein Speicher dürfte deshalb auch nicht zu groß sein, damit die Chance besteht das öfter mal ein Austausch mit frischen Wasser stattfindet.
Die Idee mit dem Druckschalter ist sehr gut wobei ich denke das die schwankungen sehr gering seien werden. Bei einem gutem system regelt sich der Druck ziemlich schnell nach, zumal man auch das system aufmachen müsste.
Drucksensor nicht Schalter. Ich habe im Keller soetwas http://www.heima24.de/shop/images/products/main/ZSBHWS.jpg sitzen. Dort sieht man sofort am Zeiger wenn jemand Wasser zapft und diese Druckschwankung(allerdings in der WW-Leitung) kann man dazu auswerten die Zirkulationspumpe zu steuern. Oder man nimmt einen Druchflussmesser mit elektr. Ausgang. Wenn man das System nicht öffnen will kann man den Sensor auf einen Kugelhahn setzten den man meist zum Entlüften haben sollte. Diese Druckschwankung könnte man evtl. auch akustisch auswerten, wenn man ein Mikro oder Klopfsensor an der Wasserleitung befestigt.
Thomas O. schrieb: > Druckschwankung(allerdings in der WW-Leitung) kann man dazu auswerten Die Unterscheidung ob die Schwankung aus der WW-Leitung kommt, stelle ich mir eher schwierig vor. fonsana
war Käse was ich geschrieben habe, hängt ja eh alles zusammen deswegen kann man den Druckabfall sowohl an der Kaltwasser als auch WW-leitung messen. Allerdings läuft dann die Pumpe auch an wenn man kaltes Wasser zum Gartengießen zapft, deswegen wäre ein Durchflussmeser in der WW-Leitung besser geeignet.
Was macht man bevor man warmes Wasser braucht? A: man geht ins Bad ! Was macht man bevor man ins Bad geht? A: die Türe auf ! Ergo hab ich an der Badezimmertür einen Reed-Kontakt angebracht. Dieser triggert die Zirkulationspumpe. Das Programm schaltet die Pumpe solange ein, bis 1.) die Solltemperatur am Zikrulationsende erreicht ist oder 2.) nach n Sekunden. Danach läuft ein Timeout von einstellbar bis 30 min, wo ich davon ausgehe, dass das wasser noch Warm im Rohr steht. Innerhalb dessen kann die Pumpe nicht wieder eingeschaltet werden. Und wenn alle im Haus wissen wie das mit der Tür funktioniert, dann kann auch wenn die Badezimmertüre immer offen steht, jeder mal schnell die Türe zumachen wenn er weiss, das gleich warmes Wasser gebraucht wird. Zudem habe ich die Funktion der Pumpe noch auf Tageszeiten eingestellt. Denn wenn jemand Nachts um eins aufs Klo geht, muss er sich halt mal mit kalten Wasser die Finger waschen. Da ist es eher unwahrscheinlich das jetzt jemand Duscht. Mein Programm kann i hier nicht posten, da es viel zu komplex ist, denn es steuert auch noch ne Menge anderer Abläufe im Haus. Es würde eher zur Verwirrung beitragen.
Meines Wissens muß (oder zumindest soll) vor dem WW-Speicher ein Rückschlagventil sitzen (das den Rückfluß von warmem Wasser ins Kaltwassersystem verhindert) und hinter dem Ventil ein Ausdehnungsgefäß. Damit dürfte die Entnahme von kaltem Wasser bei einem Drucksensor, der hinter dem WW-Speicher mißt, allenfalls zu einem minimalen Druckabfall oder einem kurzen Spike führen, der sich sicher deutlich von einem kurzen, beherzten Öffnen eines Warmwasserhahns unterscheiden läßt. Außerdem könnte man zusätzlich zum Druckabfall beim Öffnen des Hahns auch noch den Druckanstieg beim Schliessen und die Zeit dazwischen berücksichtigen. Aber mit einem Durchflußmesser ist man natürlich auf jeden Fall auf der sicheren Seite.
Eine weitere Variante ist einen Taster (Niederspannung) da anzubringen wo man das warme Wasser braucht. Mit dem Taster startet man ein Monoflop das die Zirkulationspumpe für einige Sekunden startet, oder es wird über eine Temperaturmessung im Rücklauf gemessen wann die Pumpe wieder abgestellt werden kann.
Ich habe es einfach so gemacht: einen NTC auf den Speicherzulauf (Kaltwasser), einen NTC auf den Ablauf (Warmwasser). Aus diesen beiden einen Spannungsteiler gebaut:
1 | +12V o |
2 | | |
3 | | |
4 | - NTC (Warmwasser) |
5 | | | |
6 | | | |
7 | - |
8 | | |
9 | o--------------> Komparator mit Hysterese -> HL-Relais |
10 | | |
11 | - NTC (Zulauf, Kaltwasser) |
12 | | | |
13 | | | |
14 | - |
15 | | |
16 | | |
17 | GND |
Wenn jemand Warmwasser abnimmt, stellt sich prompt ein starker
Temperaturunterschied und damit ein entsprechender Spannungsunterschied
ein. Und die Pumpe läuft dann exakt solange nach, wie maximal nötig:
nämlich bis das Warmwasser durch die Zirkulationsleitung wieder am
Speicher ankommt. Denn dann wird der Zulaufsensor durch das
zurückkommende (zirkulierende) Warmwasser ebenfalls erwärmt.
Läuft ganz ohne uC und sonstwas seit gut 10 Jahren zur allseitigen
Zufriedenheit. Und das sogar mit einer stark schwankenden
Speichertemperatur (Winter max. 50°C, Sommer bis über 90°C).
> bis 1.) die Solltemperatur am Zikrulationsende erreicht ist
So richtig "ideal" wäre natürlich so eine Platzierung des
Kaltwassersensors am "oberen" Ende der Zirkulationsleitung, denn dann
würde sich das Warmwasser den Rückweg zum Speicher sparen. Aber das war
mir zuviel Verdrahtung...
Lothar Miller schrieb: > Wenn jemand Warmwasser abnimmt, stellt sich prompt ein starker > Temperaturunterschied und damit ein entsprechender Spannungsunterschied > ein. Und die Pumpe läuft dann exakt solange nach, wie maximal nötig: > nämlich bis das Warmwasser durch die Zirkulationsleitung wieder am > Speicher ankommt. Denn dann wird der Zulaufsensor durch das > zurückkommende (zirkulierende) Warmwasser ebenfalls erwärmt. Hmm, der Nachteil der Lösung ist aber, daß, wenn du länger eine größere Menge Wasser entnimmst (Vollbad füllen), die ganze Zeit Kaltwasser nachströmt. Und zwar soviel, daß das bischen Warmwasser, das durch den Rücklauf der Zirkulation kommt, nicht viel an der Temperatur ändert. Dadurch läuft die Pumpe die ganze Zeit bis die Wasserentnahme aufhört. Ansonsten besticht die Konstruktion aber schon durch ihre Einfachheit :-)
UR-Schmitt schrieb: > Hmm, der Nachteil der Lösung ist aber, daß, wenn du länger eine größere > Menge Wasser entnimmst (Vollbad füllen), die ganze Zeit Kaltwasser > nachströmt. Das liegt in der Natur der Dinge... ;-) > Dadurch läuft die Pumpe die ganze Zeit bis die Wasserentnahme aufhört. Das ist mir egal, denn die Pumpe kommt bei einer deratigen Wasserentnahme sowieso nicht zum Pumpen, weil das Rückschlagventil zumacht. Und wenn sie es doch schafft, dann pumpt sie ja das zurückkommende Wasser direkt in die Kaltwasserleitung, in der gerade das Badewasser erwärmt wird. Und nach dieser brachialen Wasserentmahme läuft die Pumpe wieder solange nach, bis beide Rohre (annähernd) gleich warm sind... > Ansonsten besticht die Konstruktion aber schon durch ihre Einfachheit Ich musste es so einfach machen, damit ich es noch verstehe... ;-) Und sie ist allemal besser als die davor verbaute Zeitschaltuhr, die sich absolut nicht meinem/unserem Lebensstil angepasst hat.
Alexander S. schrieb: > Niffko auf eine Antwort wie deine habe ich eigentlich gewartet. > Wie soll deiner Meinung nach Do-While Schleife aussehen ... Wie gesagt, du müsstest in die Hauptschleife eine Wartesequenz von z.B. 1 Sekunde einbauen. Des Weiteren würde ich pro Durchgang nicht nur einmal messen, sondern z.B. 4 mal, die Ergebnisse aufsummieren und die Summe anschließend durch 4 teilen - Mittelwertbildung ist bei Sensorwerten immer nicht verkehrt. Um das Ganze robuster zu gestalten, könntest du anstatt immer nur die zwei letzten Messungen auszuwerten, z.B. immer die 3 letzten Differenzwerte sichern, diese aufsummieren und die entstehende Summe als Einschaltkriterium verwenden. // Niffko
Niffko danke für deine Erklärung, aber ich habe eher Schwierigkeiten das ganze in C um zu setzen. ich befase mich erst seit ein paar Monaten mit dieser Programmiersprache und mein größtes Problem ist das ich das ganze mit SIEMENS S7 vergleiche. Ich meine nicht die Funktionalität sondern die "Logik" das ganze zu verstehen. Wenn das nicht viel Aufwand ist, könntest du vielleicht anhand von meinem Code ein paar deiner Beispiele zeigen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.