Forum: Mikrocontroller und Digitale Elektronik Steuerung für die Zirkulationspumpe


von Alexander S. (alexander_s12)


Angehängte Dateien:

Lesenswert?

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!

von Alexander S. (alexander_s12)


Lesenswert?

Keiner eine Idee?

Ich bitte ja nicht um eine fertige Lösung, Anregungen oder 
Verbesserungen zu meinem Programm. Mehr will ich nicht.

von Stefan Frings (Gast)


Lesenswert?

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?

von stefan (Gast)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

Stefan Frings schrieb:
> "Die Zirkulationspumpe" sagt mir jedenfalls fast nichts.

Guckst du hier:
http://de.wikipedia.org/wiki/Zirkulationspumpe

von Asko B. (dg2brs)


Lesenswert?

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.

von Niffko _. (niffko)


Lesenswert?

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

von Stephan W. (stipo)


Lesenswert?

> 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.

von Alexander S. (alexander_s12)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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.

von TheChosenOne (Gast)


Lesenswert?

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.

von Thomas (kosmos)


Lesenswert?

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.

von Alexander S. (alexander_s12)


Lesenswert?

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.

von Thomas (kosmos)


Lesenswert?

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.

von fonsana (Gast)


Lesenswert?

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

von Thomas (kosmos)


Lesenswert?

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.

von Rangi J. (rangi)


Lesenswert?

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.

von R. M. (rmax)


Lesenswert?

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.

von UR-Schmitt (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von UR-Schmitt (Gast)


Lesenswert?

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 
:-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Niffko _. (niffko)


Lesenswert?

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

von Alexander S. (alexander_s12)


Lesenswert?

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
Noch kein Account? Hier anmelden.