NEWS
Poolheizung- Steuerung und Effizienz
-
Hallo Gemeinde,
hier zeige ich mal kurz wie ich meine Poolheizung steure, überwache und auch versuche die Effektivität der Heizung zu ermitteln.
Meine Heizung ist relativ simpel aufgebaut. Es liegen 6 Kreise a ca. 80m Gartenschlauch (1/2“) parallelverschaltet auf dem Garagendach. Eine separate Pumpe fördert das Poolwasser durch diesen „Absorber“. Somit bin ich unabhängig von Filterlaufzeiten und muss die existierender Verrohrung des Filters nicht ändern.
An Sensoren gibt es einen Homematic Differenztemperatursensor der die Pool und die Rücklauftemperatur vom Absorber misst. Dazu einen Sonnensensor ebenfalls basierend auf dem Homematic Differenztemperatursensor.
Ein Blockly schaltet die Heizpumpe ein, wenn
Sonne scheint
Pooltemp < 24,8C
Differenz Pool/Absorber > 1K
Elevation Sonne > 10
Und aus, wenn
Pooltemp > 25°C oder
Differenz Pool/Absorber < 1K
Soweit, so simpel. Die grosse Frage ist: Bringt das was?
Dazu bedarf es erstmal einer Info wie stark scheint die Sonne. Ich habe glücklicherweise ca. 5-10km Luftlinie von meinem Pool eine Mess Station gefunden die den Wert der Globalstrahlung in [W/m²] auf einer Website darstellt.
Das nächste was wir brauchen ist die Wasseroberfläche des Pools in [m²] und die Fläche des Absorbers in [m²].
Jetzt fehlt noch die Fördermenge der Heizungspumpe in [l/min] und die Masse des Poolwassers in [kg].
Berechnungen:
- Sonnenenergie die das Poolwasser direkt aufheizt.
Energie [kWh] = Globalstrahlung x Poolfläche x Messzeit
Das ganze macht ein Blockly alle 15 minuten
- Sonnenenergie die den Absorber aufheizt.
Energie [kWh] = Globalstrahlung x Absorberfläche x Messzeit
Das macht das gleiche Blockly alle 15 minuten
- In das Poolwasser verbrachte Energie vom Absorber
Energie [kWh] = m x c x delta t
m = Wassermasse die den Absorber in der Messzeit (15 minuten) durchströmt
c = spezifische Wäremkonstante Wasser (1,163 Wh/kgK)
delta t = Temperaturdifferent Poolwasser / Absorber Rücklauf.
- Wirkungsgrad des Absorbers
eta = Ergebnis aus 2 / Ergebnis aus 3
- Anteil des Absorbers an der Aufheizung des Pools
prozentualer Anteil = Ergebnis aus 2 / (Ergebnis aus 1 + Ergebnis aus 2) *100
Hier das Blockly das alles bis auf Punkt 5 macht.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="oydV|(K_vtXNJ2L]b7P" x="112" y="-32"><field name="COMMENT">Berechnung der durch die Sonne erzielte Energie im Pool</field> <next><block type="schedule" id="TPz.~u#rq~J9u#ozY9qk"><field name="SCHEDULE">*/15 * * * *</field> <statement name="STATEMENT"><block type="comment" id="zo^0#vhbgEfZs6);=Mk*"><field name="COMMENT">20.2 ist die Poolfläche im m²</field> <next><block type="comment" id="ifS6_rN}8M;t;59T@k8w"><field name="COMMENT">0.25 ist der Zeitfaktorda das Script alle 15 minuten läuft</field> <next><block type="variables_set" id="Zzfvr(uBQ3y,RuOX5VOn"><field name="VAR">Energie_pro_15min</field> <value name="VALUE"><block type="math_arithmetic" id="CoV]2gyc75LCjnL
f@nV" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="yg=a^!%@cs}W5K-VYIM"><field name="NUM">1</field></shadow>
<block type="get_value" id="cZ:zNBM@eJx5%PeWr#2o"><field name="ATTR">val</field>
<field name="OID">parser.0.Globalstrahlung_1h</field></block></value>
<value name="B"><shadow type="math_number" id="f]JkGvM3%{[~Fp_rx#7K"><field name="NUM">1</field></shadow>
<block type="math_arithmetic" id="m3ts0FQ^X3ScMe4tp%~V" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="NtNqm92j!Mk+D*0R+@Yl"><field name="NUM">1</field></shadow>
<block type="math_number" id="/fYK9gE=M47Y;VtM@WaN"><field name="NUM">20.2</field></block></value>
<value name="B"><shadow type="math_number" id=";tqWo(^Y::L*NT9g]0"><field name="NUM">1</field></shadow> <block type="math_number" id="?h]3YOb*X
ERtQf_%J5%"><field name="NUM">0.25</field></block></value></block></value></block></value>
<next><block type="update" id="Oi%MKWXH*(:G)09r3Zd;"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Pool.Solareinstrahlung_Pool</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="math_arithmetic" id="5!11L!YlAa2H+U9S/-U{" inline="false"><field name="OP">ADD</field>
<value name="A"><shadow type="math_number" id="HGr19Y%q8Yy(6WUyI:i0"><field name="NUM">1</field></shadow>
<block type="get_value" id="i/^hwY85kKk-SZvRH!"><field name="ATTR">val</field>
<field name="OID">javascript.0.Pool.Solareinstrahlung_Pool</field></block></value>
<value name="B"><shadow type="math_number" id="#X7vgA)Mn)QtHb)llf3i"><field name="NUM">1</field></shadow>
<block type="variables_get" id="l2m57X(4Es~;;^,zrbBu"><field name="VAR">Energie_pro_15min</field></block></value></block></value>
<next><block type="comment" id="Q0]01WebJ?0iRlN.%cG|"><field name="COMMENT">8 ist die Kollektorfläche im m²</field>
<next><block type="comment" id="q%J23o?2v[%tLrw-NT~S"><field name="COMMENT">0.25 ist der Zeitfaktorda das Script alle 15 minuten läuft</field>
<next><block type="variables_set" id="os_o:v.khCWOw,@:w[w"><field name="VAR">Energie2_pro_15min</field>
<value name="VALUE"><block type="math_arithmetic" id="eglU+)NqQd)Y}#h3MGU!" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="yg=a^_!%@cs}W5K-VYIM"><field name="NUM">1</field></shadow>
<block type="get_value" id="m4NooAxT0_koiG:STWtD"><field name="ATTR">val</field>
<field name="OID">parser.0.Globalstrahlung_1h</field></block></value>
<value name="B"><shadow type="math_number" id="f]JkGvM3%{[~Fp_rx#7K"><field name="NUM">1</field></shadow>
<block type="math_arithmetic" id=";w/j%6qGd]^{BM+IL#kH" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="NtNqm92j!Mk+D0R+@Yl"><field name="NUM">1</field></shadow>
<block type="math_number" id="^DP+1t+|l_OhyF+q#dI%"><field name="NUM">8</field></block></value>
<value name="B"><shadow type="math_number" id=";tqWo(^Y:_:L*NT9g]0"><field name="NUM">1</field></shadow> <block type="math_number" id="zt}[9S0lXm1PvXD^{K-l"><field name="NUM">0.25</field></block></value></block></value></block></value> <next><block type="update" id="dFqs;fl03C}H/TDYM)c!"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Pool.Solareinstrahlung_Kollektor</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="d
wec_8z.iLtoaa+Vbuc" inline="false"><field name="OP">ADD</field>
<value name="A"><shadow type="math_number" id="HGr19Y%q8Yy(6WUyI:i0"><field name="NUM">1</field></shadow>
<block type="get_value" id="lt?uOAj(AZI.t!mA!pd"><field name="ATTR">val</field> <field name="OID">javascript.0.Pool.Solareinstrahlung_Kollektor</field></block></value> <value name="B"><shadow type="math_number" id="#X7vgA)Mn)QtHb)llf3i"><field name="NUM">1</field></shadow> <block type="variables_get" id="rZ_@Ak|YaK}rc^y:)Muq"><field name="VAR">Energie2_pro_15min</field></block></value></block></value> <next><block type="controls_if" id="
rJHmEw*%Vi#,d}xK3w+"><value name="IF0"><block type="logic_compare" id="!,e:])(~-XtG:MnpM2mf"><field name="OP">EQ</field>
<value name="A"><block type="get_value" id=";l[m49w5|Q.Zfp2N,US"><field name="ATTR">val</field>
<field name="OID">hm-rpc.2.MEQ0023494.2.STATE</field></block></value>
<value name="B"><block type="logic_boolean" id="ARDAss3|lS+9_B}oo7.L"><field name="BOOL">TRUE</field></block></value></block></value>
<statement name="DO0"><block type="comment" id="ohk;IVmGWy,@YD;V^cMz"><field name="COMMENT">Fördermenge Heizpumpe in 15 min =187.5l</field>
<next><block type="comment" id="Zi#is+O);SH/9q(/5vlt"><field name="COMMENT">spez. Wärmekonstante c=1,163 Wh/kgK</field>
<next><block type="variables_set" id="X{(m[Vk+9(*K;!%l}|m"><field name="VAR">DeltaT</field> <value name="VALUE"><block type="get_value" id="#4z
bBIs8qnerRPo{08M"><field name="ATTR">val</field>
<field name="OID">hm-rpc.2.LEQ0773808.3.TEMPERATURE</field></block></value>
<next><block type="variables_set" id="gWGlZYkbF_U9Jt^@8Wsh"><field name="VAR">DeltaT</field>
<value name="VALUE"><block type="math_number" id="TJC/O]my@kl3R1skLQeh"><field name="NUM">3</field></block></value>
<next><block type="variables_set" id="#{VW/yg%1Z0u{Sk?KFQV"><field name="VAR">Abgegebene_Arbeit</field>
<value name="VALUE"><block type="math_arithmetic" id="T/@EK[oAc?VP/Ya%XL+c" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="e{%qPrY=C(T)aU}X)i+r"><field name="NUM">1</field></shadow>
<block type="math_number" id="iI+nban![~Ab1Yo%95V^"><field name="NUM">187.5</field></block></value>
<value name="B"><shadow type="math_number" id="MhZ8IyN!h!=+mG{TC?r{"><field name="NUM">1</field></shadow>
<block type="math_arithmetic" id="qh=5oI%rJ:D,VgW(h38}" inline="false"><field name="OP">MULTIPLY</field>
<value name="A"><shadow type="math_number" id="_KoNMysI:v5%,w3,EN4"><field name="NUM">1</field></shadow>
<block type="math_number" id="?b4K?xqNhtMOldd+]*C"><field name="NUM">1.163</field></block></value> <value name="B"><shadow type="math_number" id="y7bXedJ|6y|?.dZzUWd@"><field name="NUM">1</field></shadow> <block type="variables_get" id="{73+o)gZQ}Q*MeBZCU-m"><field name="VAR">DeltaT</field></block></value></block></value></block></value> <next><block type="update" id="@b4z,SvXw}*C,oq@o51{"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Pool.Energie_Poolheizung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="variables_get" id="}rs334/_RMF8C|lx)32k"><field name="VAR">Abgegebene_Arbeit</field></block></value> <next><block type="update" id="
H;^0VDq-53?oTFGT@^#"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Pool.Wirkungsgrad_Poolheizung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="math_arithmetic" id="B%3?o8YJ%!Y9XZx#D99" inline="false"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id="tsWa:(_PPm
L9dF#]Tjb"><field name="NUM">1</field></shadow>
<block type="variables_get" id="O5N;dA?obdIF(@{m?@vB"><field name="VAR">Abgegebene_Arbeit</field></block></value>
<value name="B"><shadow type="math_number" id="[S){f8|}/at6H7p,st^R"><field name="NUM">1</field></shadow>
<block type="variables_get" id="eCA!uUT-8E#W(hLCV0d}"><field name="VAR">Energie2_pro_15min</field></block></value></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml>Das Ganze ist natürlich mit einer gewissen Unschärfe verbunden. Einfallswinkel der Sonne, temporäre Beschattung, Aufheizung der Wandung des Pools… Aber als grobe Abschätzung schon OK. Wenn ich abends rückrechne wieviel Energie notwendig war, um die Temperatursteigerung des Tages zu erzielen, bin ich schon ziemlich nahe dran an meinen Ergebnissen. Mas schauen was ich da noch optimieren kann. hier noch 2 View´s mit denen ich das ganze visualisiere: ![1564_2018-07-25.png](/assets/uploads/files/1564_2018-07-25.png) ![1564_2018-07-25__1_.png](/assets/uploads/files/1564_2018-07-25__1_.png)
-
Gefällt mir sehr gut.
Werde ich mal ausprobieren