Tag: Warmtepomp

  • Optimaliseren van de warmtepomp deel 4

    Nadat het systeem om warmte op te wekken behandels is in de delen 1 en 2 en vervolgens in deel 3 de warmtevraag, is in dit deel het systeem van warmteafgifte het onderwerp.

    Beide deelsystemen horen in evenwicht te zijn. Aangezien ze ieder hun eigen circulatie hebben en deze via een kortsluiting met een buffervat ontkoppeld zijn voor wat betreft de debieten hoeft dat niet zo te zijn, maar dat is wel voordelig.

    Immers: als de circulatie over de radiatoren en de vloerverwarming (veel) hoger is dan die over de warmtepomp, circuleert dit systeem over het buffervat en wordt warm water vanuit de warmtepomp opgemengd met met retourwater uit de radiatoren: dit vernietigt “energiewaarde” (geen energie maar de waarde ervan, oftewel werkt entropieverhogend).

    Analoog is het als de circulatie over de warmtepomp veel hoger is: in dat geval wordt de retourstroom uit de radiatoren opgemengd met warm water uit de warmtepomp en wordt ook daar de energiewaarde vernietigd.

    Nu is de grootte van beide circulaties niet onafhankelijk in te stellen; ze zijn geregelde grootheden. Alle radiatoren en het vloerverwarmingssysteem hebben eigen regelaars die afhankelijk van ieders warmtevraag de stroming vergroten of verkleinen. De circulatie over de warmtepomp wordt gestuurd door het regelen van de verschiltemperatuur van de circulatie over de warmtepomp. Beide circulaties zijn dus afhankelijk van enerzijds de warmtevraag en anderzijds de warmte-input door de warmtepomp.

    De vrijheidsgraden om de warmteafgifte in te stellen zijn de voetventielen van de individuele radiatoren, de instelwaarde van de vloerverwarming en de instelling van de circulatiepomp.

    Om met het laatste te beginnen: de circulatiepomp heeft 3 instellingen voor “hoe hard hij pompt” en 3 instellingen voor de pompcurve, dus in totaal 9 combinaties. Ik heb de laagste instelling voor hoe hard hij pompt, aangezien bij een hogere instelling ik merkte dat constant er circulatie over het verschildrukventiel ging: dat is ongewenst en daarom de lagere waarde. Een mogelijkheid zou nog zijn om de instelwaarde van dit ventiel te verhogen, maar dat heb ik tot nu toe niet gedaan.

    Er zijn 3 pompcurves:

    1. altijd op hetzelfde vermogen; in dit geval zal er bij stroming door de radiatoren een lagere verschildruk ontstaan (hij zakt dan in); dit verstoort dan weer de doorstroming van de andere radiatoren;
    2. een vaste verschildruk; in dat geval zal er bij een lage doorstroming een lager vermogen door de pomp geleverd worden en bij het verder openen van een radiatorventiel gaat de doorstroming omhoog. maar compenseert de pomp dit door meer vermogen; als er geen weerstand in de aan- en afvoerleidingen is, dan zorgt dit ervoor dat de verschildruk over de radiator (min of meer) constant blijft en dat de ventielen ideaal kunnen werken;
    3. een toenemende verschildruk bij een toenemende doorstroming: in dat geval wordt het effect van 2 “overdreven”. er wordt onevenredig meer vermogen geleverd bij toenemende doorstroming en dit compenseert het drukverlies in de aan- en afvoerleidingen zodat ter plaatse van de radiator zelf de verschildruk weer min of meer constant is. Optie 1) is dus: accepteer dat bij hogere doorstroming de verschildruk wat wegval; optie 2 gebruik je bij relatief lage drukval in de leidingen en optie 3) als de leidingweerstand relevant hoog is. Aangezien ik wat langere leidingen heb, heb ik optie 3) ingesteld.

    De instelwaarde voor de vloerverwarming is een vaste instelling van een mechanische regelaar; deze zorgt voor een enigszins fluctuerende temperatuur in de woonkamer (als je er niet meer aankomt) omdat de vloertemperatuur constant is. De instelling is gedurende de loop der tijden tot stand gekomen; met een stift heb ik de voorkeursinstelling en een instelling bij -10 graden gemarkeerd, zodat ik als het nodig is kan bijregelen, wat zelden gebeurt.

    De installatie is ooit (eind 90’er jaren) gebouwd voor een gasketel. Met een warmtepomp heb je beduidend lagere watertemperaturen en is het zaak om de radiatoren goed in te regelen. Normaal wordt een verschiltemperatuur van ca. 10 graden Celsius als vuistregel genomen; in mijn geval zou dat echter tot zodanig koele radiatoren leiden dat ze te weinig capaciteit zouden krijgen. Ik heb er uiteindelijk voor gekozen om ze op een verschiltemperatuur van 6 graden Celsius in te stellen. Diezelfde verschiltemperatuur is ook ingesteld over de warmtepomp.

    Om die verschiltemperatuur te kunnen instellen, moet je die wel kunnen meten. Hiervoor heb ik 2 klemthermometers (Testo 115i) gekocht:

    Deze moet je op/bij de radiator aanbrengen zodat je zo zuiver mogelijk de aan- en afvoertemperaturen kunt meten.

    Het mooie van deze meters is, is dat er een IOS app is, die deze metingen logt, visualiseert én ook een API heeft waarmee je de data live kunnen opvragen. Deze app heb ik op mijn iPad geïnstalleerd.

    De app kan een CSV bestand opleveren. De data erin kun je combineren met metingen van de buitentemperatuur, de warmtepomp-temperaturen, maar ook de Honeywell HR92 metingen en dan kun jet het hele radiatorgedrag beoordelen.

    Het combineren van al die data is best wel een hoop werk. Maar wacht: de gegevens van de warmtepomp en van de HR92 radiatorventielen had ik toch al in mijn MQTT server beschikbaar? Wat nu als ik die van de Testo thermometers daar ook zou kunnen krijgen?

    Ik heb daarom een python script gemaakt (met Chatgpt) dat de API in de iPAD gebruikt om de meetdata op te vragen en die worden vervolgens in de MQTT server gepubliceerd.

    Vervolgens heb ik op dezelfde manier een python script gemaakt dat een logboek van data genereert (wel in csv) dat op hetzelfde tijdstip alle relevante data uit de MQTT server opvraagt (van de warmtepomp, de HR92 regelaars en van de Testo thermometers) en netjes opslaat.

    Een meetsessie duurt makkelijk enkele uren vanwege de traagheid van het systeem: je hoeft de sessie alleen maar op te starten; even te checken of alles werkt en vervolgens heb je er geen omkijken meer naar totdat je de data gaat uitwerken.

    Een logboek ziet er dan zo uit:

    De oranje lijn is de verschiltemperatuur. Bij zit rond de 6 graden; alleen aan het einde zakt die in, omdat dan de temperatuurinstelling verlaagd is en de regelaar de hele watertoevoer naar de radiator heeft dichtgedraaid en het geheel helemaal aan het afkoelen is.

    Op die manier kon ik dus alle radiatoren individueel instellen.

    Het volgende onderdeel behandelt dan hoe alles samenkomt: hoe zorg ik ervoor dat alle temperaturen goed geregeld worden?

  • Optimaliseren van de warmtepomp deel 3

    Dit onderdeel beschrijft het meten van de warmtevraag om ruimtes in mijn huis op de gewenste temperatuur te houden. Die vraag moet dan door het warmtepomp-systeem geleverd kunnen worden.

    In 2020 werd in ons huis het Honeywell EvoHome systeem geïnstalleerd. Dit systeem bestaat uit elektronische radiatorventielen (-kranen) die draadloos met een centrale unit communiceren. Er werden 8 ventielen geïnstalleerd, praktisch in elke ruimte eentje. In de woonkamer is er vloerverwarming die een handmatige temperatuurinstelling bleef behouden en zijn er 3 kleine radiatoren, waarvan 1 er een EvoHome ventiel kreeg en de andere 2 hun mechanische thermostaten hielden.

    De woonkamer is een vreemd geval: de vloerverwarming heeft de grootste invloed op de temperatuur. Ik probeer zo weinig mogelijk aan de temperatuurinstelling (rond 26 °C) te veranderen. De enige Evohome regelaar (en de mechanische regelaars) kunnen dan lokaal via hun kleine radiator een wat hogere temperatuur leveren met een wat lagere algemene woonkamer-temperatuur.

    Het EvoHome systeem heeft een centrale unit die als kamerthermostaat dient en via welke je voor elke ventiel een temperatuurprogramma kunt instellen. Deze unit communiceert met het internet en heeft natuurlijk een passend gebruikersinterface.

    Tenslotte heeft het systeem een kastje dat oorspronkelijk mijn oude CV-installatie aantuurde met een aan/uit-regeling. De oude CV-ketel had een verouderd protocol voor het modulerend aansturen, maar dat bleek niet compatibel te maken met dat van het EvoHome systeem.

    Nadat de warmtepomp geïnstalleerd was, was het kastje dat de CV aanstuurde niet meer nodig; in de centrale unit kon deze ook uit de functionaliteit verwijderd worden en sindsdien is het EvoHome systeem dus een losstaand systeem dat de temperatuur in de verschillende ruimtes probeert te regelen, zonder de warmtebron te kunnen aansturen. Dat hoeft geen probleem te zijn, als er maar voldoende warmte (de aanvoertemperatuur naar de radiator moet hoog genoeg zijn) beschikbaar is, wanneer deze nodig is. En dat is nu het doel van het optimaal instellen van de stooklijn (en de andere parameters).

    Het EvoHome systeem heeft ook een API via welke je meetgegevens kunt opvragen; misschien kun je ook dingen instellen, maar dat doe ik niet; het gaat prima via het gebruikersinterface. Er is een standaard module voor deze API van Domoticz en die gebruik ik dus om de gegevens op te halen en verder te verwerken.

    De API levert het setpoint en de gemeten waarde per radiator en van de centrale unit (woonkamer) met een resolutie van 0,5 °C. Maar hij levert niet de warmtevraag. Je zou die warmtevraag kunnen afleiden van het setpoint en de gemeten waarde, maar dat zou te speculatief en naar mijn inschatting te onnauwkeurig zijn; het regelalgoritme ken ik niet.

    In het EvoHome-systeem communiceren de onderdelen met elkaar via een draadloos protocol en wel op 868 Mhz. Er bestaat een USB dongle, die bestaat uit een transceiver chip samen met een micro-Arduino onder de naam Nano CUL 868.

    Je kunt er misschien wel meer mee, maar ik gebruik deze USB dongle om het communicatieverkeer tussen de EvoHome onderdelen af te luisteren, en met name dan de signalen die door de radiator-ventielen naar de centrale unit worden verstuurd. Ik heb deze bij Amazon besteld. Het jammere is, dat er verschillende protocollen bestaan en dat de firmware die je dan krijgt niet het EvoHome protocol kan ontcijferen. Je moet dus een nieuwe firmware naar de chiup op de Arduino schrijven.

    Dat bleek best wel wat werk: het meeste werk (voor mij) was om een aansluiting op het arduinobordje te maken waarmee ik een programmeerapparaatje kon aansluiten. Dit moest gesoldeerd worden en solderen is niet mijn sterkste kant. Met wat hulp (ik had 3 handen nodig) is het toch gelukt en wonderwel had ik niets beschadigd aan het bordje en de aansluitingen waren allemaal OK, waarna ik de firmware kon laden. Meer informatie op deze pagina.

    Ik kon de dongle in een Raspberry Pi met Ubuntu steken en daarop de EvoGateway software installeren. Het werkte eigenlijk best snel , ook de configuratie is snel aangemaakt, want na een tijdje luisteren naar de communicatie maakt de software zelf alvast een configuratiebestand aan. Volgens mij hoefde ik alleen nog maar de namen van de ruimtes in het huis in te vullen; de rest was er al. (Lijkt de Belastingdienst wel.) En het mooie is: de EvoGateway stuurt de meetgegevens naar een MQTT server.

    Laat ik nou net al een MQTT server hebben met daarop de data van de warmtepomp (en ook van de thuisbatterij, maar dat is een ander verhaal) en de EvoHome signalen konden er gemakkelijk bij. Ik moest nog wel een aparte Domoticz module maken (met behulp van Chatgpt) om deze gegevens in te lezen, maar toen had ik uiteindelijk alles.

    Het resultaat was: setpoints en temperaturen in hogere resolutie en een nieuwe meting per radiator-ventiel; “heat demand” oftewel “warmtevraag” op een schaal van 0 tot 1.

    Mij is geen documentatie bekend, maar kijkende naar het gedrag van de regelaars, beschouw ik een waarde van 0,5 als “in balans”; een waarde lager dan dat als “meer dan genoeg voorhanden” en groter dan 0,5 “ik heb meer nodig”. Dit betekent dan, dat het maximum van alle HD waardes de overall vraag bepaalt om ervoor te zorgen dat alle temperaturen adequaat gehandhaafd kunnen worden.

    Met dit hele verhaal is het dus mogelijk om de in deel 2 al genoemde optimalisatie-doelstelling verder uit te werken, ware het niet dat … er uiteenlopende waardes van de heat demand (HD) waren over de verschillende radiatoren en ik me ging afvragen: zijn alle radiatoren wel goed ingesteld? Deze vraag is het onderwerp van deel 4.

  • Optimaliseren van de warmtepomp deel 2

    In het vorige deel is de installatie en de automatisering al in grote lijnen beschreven. Om te kunnen optimaliseren, moet je wat dieper in de materie gaan. Hoe werkt de installatie eigenlijk? Aan welke knoppen kun je draaien om te optimaliseren?

    Veel informatie over de warmtepomp is te vinden op deze Tweakers pagina. Ik beperk me tot mijn essentie.

    Systeembeschrijving

    Het centrale deel van het warmtepomp systeem bestaat uit twee in elkaar grijpende circulaties van water: 1. de circulatie over de radiatoren en de vloerverwarming (links in het schema) en 2. de circulatie over de warmtepomp. Het buffervat is een kortsluiting die beide circulaties met elkaar verbindt. Als beide circulaties even groot zijn, stroomt er netto niets door het buffervat; bij ongelijke debieten wordt dat via het buffervat vereffend en dat kan in twee richtingen zijn.

    Van belang is dat er nog een circulatie over de bijverwarming gaat. Die wordt normaal gesproken niet gebruikt; alleen als bij strenge vorst de warmtepomp te weinig warmte levert, wordt die ingeschakeld via het openen van de driewegklep. Aangezien dit niet vaak voorkomt, wordt die situatie niet in de optimalisatie betrokken.

    Wat ook nog belangrijk is: er zijn 10 radiatoren in het huis waarvan er twee van een mechanische temperatuurregelaar zijn voorzien (in de woonkamer met de vloerverwarming) en de overigen een geautomatiseerde temperatuurregeling hebben. De vloerverwarming is een aparte circulatie met een mechanische temperatuurregelaar voor alle circuits samen die 1 gedeelde pomp hebben. Tenslotte is het belangrijk te weten, dat het systeem van radiatoren (en de aanvoer van het vloerverwarmingssysteem) een overstortventiel heeft.

    Dus alle warmteverbruikers zijn temperatuurgeregeld en dus varieert het debiet over het linkerdeel van het systeem; het overstortventiel voorkomt een te groot drukverschil tussen aan- en afvoer.

    Vrijheidsgraden warmtepomp

    Om de vrijheidsgraden te begrijpen: de warmtepomp bepaaklt de hoeveelheid warmte die hij moet opwekken een de hand van de buitentemperatuur, de zogenaamde stooklijn. Deze bepaalt de gewenste temperatuur van het verwarmingswater dat naar de radiatoren en naar het voedingspunt van de vloerverwarming wordt gestuurd. De curve is lineair

    Tgewenst = Tvoet + B * (T0 – Tbuiten) voor Tbuiten tussen T0 en Tmin

    Aardig wat vrijheidsgraden, zou je zeggen. Het regelalgoritme van de warmtepomp is echter grotendeels een “black box”, maar gelukkig is er wel officiële informatie over hoe het type dat ik heb kan worden ingesteld.

    Voor deze stooklijn is relevant:

    • De verwarming werkt vanaf een laagste buitentemperatuur. De advieswaarde voor T0 is 18 °C (oudbouw); dit neem ik over.
    • Tmin wordt als “niet te wijzigen adviesinstelling” op -10 °C gehouden.
    • B wordt gepaald door de maximale Tgewenst, Tmax (hoogste gewenste watertemperatuur) bij (logischerwijze) Tmin (laagste “geldige” buitentemperatuur)

    Met andere woorden de vrijheidgraden zijn Tvoet en Tmax. Voor de installatie als geheel worden deze geoptimalisserd bij een buitentemperatuur tussen de 0 en 5 °C, waarbij voor het overige gecontroleerd wordt of de verwarming “naar behoren” werkt.

    Regeling van de warmtevraag

    Normaal gesproken kan de warmtevraag/productie van een CV ketel opgelegd worden. Dit kan via het verouderde aan/uit principe of door de ketel tussen een minimaal en maximaal vermogen te laten moduleren.

    Uit het bovenstaande kun je al afleiden, dat dit bij de warmtepomp niet mogelijk is. De interne regeling van de warmtepomp bepaalt het starten en stoppen van de warmtepomp op zichzelf en ook het moduleren van het opwarmend vermogen tussen (redelijk beperkte) grenzen.

    Het algoritme is niet bekend, maar als je het gedrag bekijkt (en het Tweakers forum staat vol met ervaringen van gebruikers), is het het regelen van een gemiddelde watertemperatuur aan de hand van de stooklijn met criteris voor het starten en stoppen. Het netto-effect (bij mij) is dat bij een buitentemperatuur warmer dan ongeveer 10 – 15 °C er een combinatie van aan/uit-gedrag en moduleren voorkomt en daaronder een continue werking met modulatie.

    Er is nog een ander effect: bij lage temperaturen en/of hoge luchtvochtigheid vindt er ijsvorming plaats op de verdamper (daar waar het koude koelmiddel verdampt door de koude buitenlucht, die daardoor nog kouder wort, maar waarbij vocht uit de lucht zich afzet. De regeling van de warmtepomp zal dan een “ontdooi-cyclus” starten door de verdamper op te warmen waardoor het ijs afsmelt.

    Tijdens zo’n cyclus valt het verwarmend vermogen weg; de opgeslagen warmte in het buffervat kan dit opvangen, maar bij steeds lagere temperaturen wort dat moeilijker en dan zal de regeling van de warmtepomp de bijverwarming (mijn CV ketel) starten en van daaruit warm water in het circuit stoppen.

    Belangrijk is nu: de thermostaat in de woonkamer (of in mijn geval de individuele regelaars op de radiatoren) kunnen dus niet de warmtevraag opleggen aan de warmtepomp. De warmtepomp regelt alleen maar de temperatuur in de aanvoer van de circulatie naar de radiatoren en naar het eigen circulatiesysteem van de vloerverwarming.

    Bijgewerkte probleemstelling

    Het uitdaging is dus, om bij een buitentemperatuur tussen ongeveer 0 en 5 °C de stookcurve zo laag mogelijk in te stellen, zodat er toch voldoende warmte wordt geleverd in vergelijking met de warmtevraag. Er wordt dan achteraf gecheckt of bij andere buitentemperaturen de verwarming “naar behoren” werkt.

    Zonder verdere uitweiding, dienen ook de volgende systeem-instellingen te worden geoptimaliseerd:

    • De instelling van de “Buderus” circulatiepomp (debiet laag/middel/hoog en de vorm van de pompcurve)
    • De instelling van de circulatiepomp van de vloerverwarming (laag/middel/hoog)
    • De regel-instelling van de circulatiepomp over de warmtepomp. Deze wordt geregeld door het temperatuurverschil tussen in- en uitgaande stromen naar/van de warmtepomp. Dat is een instelling in de lijst van Nefit-Bosch, een “niet te wijzigen instelling” van 7 °C tijdens verwarmen

    Dit is het voor deel 2 van het verhaal. In deel 3: hoe weet ik de warmtevraag vanuit de radiatoren?

  • Optimaliseren van de warmtepomp deel 1

    In plaats van de hele infrastructuur van mijn thuis-automatisering helemaal uit te leggen, ga ik de laatste toepassing ervan, het optimaliseren van de warmtepomp beschrijven en en passant komen de onderdelen van die automatisering wel langs.

    In 2022 was mijn oorspronkelijk verwarmingsketel aan vervanging toe en toen besloten we een hybride warmtepomp / gasketel combinatie te nemen. Dat werd een Nefit Bosch Enviline Monoblock. Daar zit een complexe binnen-unit bij die alle circulatiestromen stuurt met de benodigde meet- en regel functionaliteit. Er zijn maar beperkte instelmogelijkheden (zeker als je op het werk gewend bent in het DCS systeem alles te kunnen instellen en wijzigen!), maar wat wel mogelijk is, om alle signalen digitaal op te vragen.

    Er bestaat namelijk een kastje dat het netwerkprotocol (EMS bus) dat de sturing van alle onderdelen van het systeem (de binnen- en de buiten-unit, de communicatie met de CV ketel (ook Nefit) kan afluisteren. Dat is een kastje van BBQKees. In totaal zijn er zo’n 100 signalen, maar een hoop ervan zijn overbodig of nietszeggend, dus uiteindelijk verwerk is er iets meer dan de helft ervan, zeg zo’n 65 signalen.

    Het BBQKees kastje kan als MQTT client communiceren met een MQTT server en daarop al die meetgegevens publiceren.

    In mijn thuis automatisering speelt Domoticz een centrale rol als centrale waarop vele signalen binnenkomen. Ik heb het ooit eens geïnstalleerd toen ik in 2019 begon met zonnepanelen en ik de gegevens van mijn gas- en stroommeter wilde registreren. Nadien zijn er diverse andere typen signalen aan toegevoegd. De functionaliteit van Domoticz vind ik niet denderend, maar je kunt de metingen doorsturen naar InfluxDB en dat is de kern van de verwerking van real-time signalen naar “bruikbare” geaggregeerde data.

    Domoticz nu, kan zich abonneren op MQTT data en het is zelfs zo dat het BBQKees der opbouw van het topic met al die EMS meetgegevens zodanig kan doen dat je met een eenvoudige Domoticz module ze allemaal naar binnen kunt halen.

    De Domoticz applicatie draait op een dedicated Raspi server en op diezelfde server heb ik de MQTT server software geïnstalleerd. Deze server draait in zijn eigen VLAN in mijn thuisnetwerk. Het BBQKees kastje zit in het IoT VLAN en met firewall-regels op de OPNsense zorg ik ervoor dat hij op de MQTT server kan publiceren.

    Even terug naar het oorspronkelijke doel: het optimaliseren van de hybride warmtepomp-installatie: je hebt daarvoor meetgegevens nodig en dat is dus mogelijk doordat Netfit-Bosch het EMS protocol gebruikt om systeem-onderdelen met elkaar te laten communiceren. Aan datzelfde netwerk kun je een BBQKees kastje koppelen dat naar een servertje met Domoticz en een MQTT server de signalen kan ontvangen.

    Om het deel van de warmtepomp compleet te maken, hierbij ook nog een schema van het fysieke systeem:

    Er zijn twee circulatiepompen, eentje over de radiatoren en de vloerverwarming (“Buderus” pomp, eigenlijk een Buderus-systeem met daarin een Wilo pomp) en eentje die de circulatie over de buiten-unit stuurt (zit in de binnen-unit). Die laatste circulatiepomp regelt het temperatuurverschil ((TC3 – TC0) over de buiten-unit door de circulatiesnelheid aan te passen. Je kunt daarvan het setpoint instellen, maar Nefit Bosch geeft hiervoor een advieswaarde.

    Dit is het voorlopig even. De volgende hoofdstukken gaan over

    • De individuele regelventielen (Honeywell EvoHome HR92) op de radiatoren: hierbij de door de fabrikant geleverde API en mijn zelfgebouwde systeempje om de ruwe data uit de communicatie tussen regelaars en centrale unit te onderscheppen)
    • De Testo klem-temperatuurmeters die je op leidingen of radiatoren kunt klemmen om lokale temperaturen te meten; ook hierbij de manier om de signalen via een API te kunnen registreren en via MQTT verder te verwerken
    • Daarna komt het hele meten en optimaliseren van het gehele system aan bod

    Als je al specifieke vragen bet, kun je die via Contact stellen.