Nadat de installatie volledig klaar was en in gebruikt werd genomen heb ik nog een paar opmerkingen.
Zoals de grafieken tonen is de temperatuurstabilisatie minder goed dan met mijn centrale verwarming, waarbij de temperatuur op 0.1° gestabiliseerd kon worden (zelfs met A/D omzetters met een nauwkelurigheid van 256 niveaus). Toen kon ik spelen met de watertemperatuur en de snelheid van de circulateur. Hier kan ik enkel spelen met het vermogen van de brander, en eigenlijk heb ik maar drie niveau's: uit, laag vermogen (6kW) en hoog vermogen (11kW).
In het tussenseizoen is het vermogen van de brander eigenlijk te hoog, waardoor die regelmatig in en uitgeschakeld wordt. De bedoeling van regeling met de arduino is de schakeltijden in te korten, zodat het pendelgedrag onderdrukt wordt.
Thermostaat en servomotor
Er is een gelukkige overeenkomst van de thermostaattemperatuur en de positie van de servomotor. In manuele werking komt een positie van 90 overeen met een thermostaat temperatuur van 20°, 80 met 19°, 70 met 18°, enz. In manuele werking is de temperatuurstabilisatie natuurlijk minder omdat de arduino niet meer ingrijpt (hysteresis van meer dan 1° en ongeveer één inschekaling per uur).
Door die gelijkloop is het gemakkelijk de basispositie van de thermostaat te bepalen als de automatische werking geselecteerd wordt. Er wordt ook rekening gehouden met de begintemperatuur in de ruimte zodat er sneller geregeld kan worden (zie lager).
Plaatsing ruimtethermostaat
De plaatsing van de ruimtethermostaat is zeer belangrijk om een goede werking te bekomen. De thermostaat mag niet in de buurt van de opstijgende warmte opgesteld staan, anders gaat de installatie te vroeg afslaan. In sommige gevallen is dat niet erg (er is geen overshoot), maar het vertraagt het bekomen van de gewenste temperatuur.
De zonnestralen mogen niet op de thermostaat vallen. Zelfs een kleine zonnestraal doet de temperatuur met een paar graden stijgen, waardoor de verwarming niet meer inschakelt. De thermostaat van de computergestuurde centrale verwarming stond zeer goed opgesteld. Deze thermostaat wordt nu nog gebruikt voor het controleren van de werking van het systeem. De kachel staat echter redelijk dicht bij de thermostaat, waardoor men goed kan zien wanneer de kachel ingeschakeld wordt.
Buitenvoeler
Op dit ogenblik heeft de installatie geen buitenvoeler. Dit is belangrijk om het regelgedrag bij te sturen. Bij het instellen van de gewenste temperatuur (bijvoorbeeld 's avonds als ik thuis kom) gaat de regeling de gasthermostaat in een bepaalde stand zetten, om dan na een paar minuten bij te regelen als dat nodig is.
De startpositie werd empirisch bepaald, maar houdt geen rekening met de buitentemperatuur (enkel de binnentemperatuur). Als het erg koud is buiten, dan moet de kraan eigenlijk meer open om de grotere verliezen te compenseren, als het minder koud is, dan gaat de brander te sterk werken.
Temperatuurstabilisatie centrale verwarming
Temperatuurstabilisatie gasverwarming zonder bijsturing
Temperatuurstabilisatie gasverwarming met arduino
Timer om één keer per dag de klok van de arduino te resetten
|
---|
Grafieken rechts
Eerste grafiek: temperatuurstabilisatie met de centrale verwarming op 0.1° nauwkeurig en geen temperatuurverloop.
Tweede grafiek: temperatuurverloop met de gaskachel: stabilisatie op 1° nauwkeurig en invloed van de buitentemperatuur.
Derde grafiek: gaskachel met sturing door arduino en servomotor. De temperatuur wordt gestabiliseerd op ongeveer 0.3°. Veel beter kan niet omdat de warmtevraag beperkt is (eind maart). Eenmaal dat de brander aanslaat loopt de temperatuur snel op. De gewenste temperatuur wordt heel snel bereikt, maar er is een lichte overshoot. De overshoot is meer merkbaar omdat de ruimtethermostaat (voor de meting) relatief dicht bij de kachel staat. De ruimtethermostaat voor de feedback staat beter opgesteld. Tussen 15 uur en 17 uur viel er zon in het huis, waardoor de temperatuur verder opliep (zonder dat de brander ingeschakeld werd).
Ik heb de positie van de servomotor opgeslagen gedurende 3h30. Je merkt dat de servo op een vaste positie blijft zolang de temperatuur binnen de grenzen blijft. De positie wordt verhoogd als de onderste temperatuurlimiet bereikt is en wordt verlaagt als de bovenste limiet bereikt wordt. De motor blijft verder stappen totdat de arduino merkt dat de brander aanslaat of stilgelegd wordt.
Softwarewijzigingen na het in gebruik stellen
Het is eenvoudig een wijziging aan te brengen aan de software.
- Starten en regelgedrag
Bij het instellen van een gewenste temperatuur wordt de kraan in een vaste positie gezet (vooraf proefondervindelijk bepaald). Er wordt ook rekening gehouden met de huidige temperatuur in het lokaal om de setwaarde wat aan te passen. De gewenste temperatuur wordt snel bereikt en de overshoot is beperkt. In deze eerste fase ziet de arduino de gaskraan als een echte thermostaat en regelt nauwelijks bij.
Het regelsysteem begint pas te werken na een 10-tal minuten om de temperatuurfout (gewenste temperatuur ten opzichte van gemeten temperatuur) te reduceren. De software vangt de hysteresis van de gasthermostaat op en corrigeert ook gedeeltelijk instelfouten (gewenste 19° corresponderen niet met echte 19°). Deze werking is vergelijkbaar met de integrerende werking van een PID regelaar.
- Verminderen van het pendelgedrag
De software was oorspronkelijk zo geschreven dat er een dode zone was van 0.2° rond de gevraagde temperatuur. Als de gemeten temperatuur in de dode zone lag, dan werd er niet ingegrepen (geen verandering van de positie van de servomotor).
Bij het bekijken van de grafieken (zie een volgend artikel) werd opgemerkt dat dit een lichte pendelgedrag in de hand werkte. De dode zone werd verwijderd zodat de servomotor sneller reageert als de temperatuur boven of onder de gevraagde temperatuur zit.
- Timermogelijkheid
Een voordeel van mijn vorige sturing met computer was de mogelijkheid van een timerfunktie in te bouwen, die werd vooral gebruikt als STOP-funktie gedurende een bepaalde tijd. Ik kan nu gewoon de verwarming afzetten als ik vertrek en die terug inschakelen als ik thuiskom, maar dan moet de brander op maximaal vermogen werken om de gewenste temperatuur te berieken. Het zou leuk zijn als een timerfunktie opnieuw beschikbaar zou zijn.
De arduino heeft geen RTC wegens te weinig poten over, maar de ingebouwde klok is voldoende voor een timerfunktie (zoveel uren stoppen). Ik kan nu een duur aangeven, een timer-temperatuur en een einde-timer temperatuur. In tegenstelling met de normale regeling waarbij de gewenste temperatuur zo snel mogelijk bereikt moet worden werkt de regeling hier veel rustiger: 35 minuten voor het verstrijken van de tijd wordt de temperatuur langzaam opgevoerd zodat de brander niet op hoog vermogen moet werken.
- Ingebouwde horloge
De arduino heeft een ingebouwde horloge die relatief juist loopt maar om de 24 uur opnieuw gesynchroniseerd moet worden. De tijd gaat verloren bij een stroomonderbreking.
Met een externe timer stuur ik om middernacht een puls van één minuut op een analoge ingang om de klok van de arduino te resetten. Dit is ruim voldoende om de ingebouwde klok van de arduino juist te laten lopen.
- Extra funktietoetsen
Bepaalde programma's die vaak aangeroepen worden (gaan werken = afwezig gedurende 11 uur) zouden met toetsen geprogrameerd moeten worden. De arduino heeft echter geen digitale ingangen meer.
Er wordt één analoge ingang gebruikt, samen met drukschakelaars die via een weerstand aan de arduino verbonden worden. Men kan een 10-tal toetsen aansluiten op één ingang (samen met de klokreset). Ieder drukschakelaar doet een specifiek temperatuurprogramma lopen.
|