Sorry dat de toetsen schuin staan...
De verbinding tussen arduino en LCD paneel is een seriële verbinding
|
---|
In 2019 heb ik besloten de centrale verwarming niet meer te gebruiken. De computer die tot nu toe diende om de centrale verwarming te regelen zou enkel nog gebruikt worden om de temperaturen te meten en zou uiteindelijk (als het nieuw systeem volledig operationeel is) ook niet meer gebruikt worden.
- Problemen met de centrale verwarming,...
en ook met de gaskachel
- De centrale verwarming heeft een relatief hoog verbruik (eigenlijk is een centrale verwarming een overkill voor een klein rijhuis). De regeling van de temperatuur is perfekt, maar de installatie heeft een hoge traagheid, waardoor het huis pas verwarmd wordt na ongeveer 30 minuten (temperatuurstijging van 2°). Dit is de reden waarom er een dag- en weekprogramma nodig is, zodat het huis al wat opgewarmd is als ik thuis kom.
Dan is er een gaskachel gekomen, maar die heeft ook zijn nadelen, namelijk een mechanische thermostaat.
- De thermostaat heeft een zeer grote dode zone, waardoor de temperatuur rond de instelwaarde pendelt. Dit heb ik al de dag zelf verholpen door een "warmteversneller", maar dit heeft als gevolg dat de regeling minder goed werkt. Daardoor reageert de thermostaat minder goed op buiteninvloeden, maar dat was te verwachten.
- Door de mechanische speling is de instelling soms te laag, een andere dag te hoog. Je zet de thermostaat op "3", één dag regelt ie rond 18°, de dag nadien rond 19°.
- Oplossing met een arduino
- De meeste problemen van de mechanische thermostaat kunnen beperkt worden door een regelsysteem die de ruimtetemperatuur nauwkeurig kan meten en eventueel een "duwtje" aan de thermostaat kan geven zodat de stabilisatie beter wordt.
Ik werk hier met 3 temperatuurniveaus: 19° (aanwezig, overdag), 16° ('s nachts) en 12° (afwezig), meer moet dat niet zijn. Ik heb ook de mogelijkheid om de temperatuur met 1° te verhogen of te verlagen. De arduino houdt de ingestelde temperatuur permanent vast. Met de funktie "temperatuurboost" wordt de thermostaat van de kachel gedurende 10 minuten hoger gezet zodat de brander op een hoger vermogen gaat werken of inschakelt als die uit was.
Een bijkomend voordeel van de sturing met een computer is dat er een vaste temperatuur ingesteld wordt. Als je wat koud hebt, ga je niet vals spelen en de thermostaat van de gaskachel wat hoger zetten, maar trek je geoon een dikke pull aan.
- Software van de arduino
- De software is in C geschreven wat voor mij een aanpassing is (ik ben gewoon om in (power)basic te programmeren). Er wordt trouwens nog altijd in basic geprogrammeerd, een basic versie die tegenwoordig veel succes heeft is purebasic.
De arduino communiceert serieel met een LCD paneel, waarop de ingestelde parameters en de huidige temperatuur zichtbaar zijn. De verschillende parameters kunnen ook ingesteld worden via een toetsenbord, zodat ik niet opnieuw de computer moet opstarten om een parameter van de PID regeling of de servo regeling te wijzigen.
De toestand wordt aangegeven met 8 leds en er zijn ook 8 drukknoppen voor het instellen van de talrijke werkingsparameters.
De software is zodanig geschreven, dat er snel op temperatuurwijzigingen gereageerd wordt. Voor een correcte regeling is ook de status van de kachel nodig, daarvoor wordt de derde analoge ingang gebruikt. Is de gevraagde temperatuur nog niet bereikt, maar is de kachel aan het werken, dan moet er niet bijgeregeld worden. Hetzelfde geldt als de temperatuur voldoende hoog is en de kachel uit is.
Maar de temperatuurmeting van de kachel moet geïnterpreteerd worden want een absolute meting geeft geen eenduidend aantwoord. Als de temperatuur stijgt of daalt, dan is de brander aan of uit (ongeacht de absolute waarde), als de temperatuur stabiel is, dan moet de absolute waarde gebruikt worden. Een absolute meting is bijvoorbeeld: input boven 500 brander is aan, anders is de brander uit.
- Electronica
- In dit ontwerp is de electronica beperkt: 8 mosfet transistoren om de leds te sturen (de poorten van de arduino kunnen in theorie de leds direct aansturen, maar ik wil geen risico's nemen).
Dezelfde lijnen worden ook gebruikt om het toetsenbord te scannen (daarvoor worden de leds kortstondig uitgeschakeld). Als een toets ingedrukt is, dan wordt de lijn verbonden met een analoge ingang.
De ruimtetemperatuur wordt met een nauwkeurige Pt1000 gemeten. De op-amp compenseert de thermische traagheid van de sensor, zodat het uitgangssignaal de luchttemperatuur is, niet de temperatuur van de probe. Deze instelling moet slechts éénmaal gebeuren.
Voor de status van de gaskachel dacht ik eerst dat hiervoor een gewone NTC weerstand kon dienen (opgesteld in een weerstandsbrug), maar de meting was niet betrouwbaar. Ik kon geen niveau vastleggen waarbij de brander aan of uit was. Plan B is dan een Pt1000 die een meer consistente meting geeft, maar het verschil in weerstandswaarde is zo klein dat er een op amp nodig is.
- Als afsluiting
- Nog een paar opmerkingen nadat de installatie klaar is: temperatuur buitenvoeler, wisselwerking servomotor en mechanische thermostaat, plaatsing ruimte thermostaat,...
- Afdrukken van de temperaturen
- Wat eigenlijk nog ontbreekt is een printer om de evolutie van de temperaturen op te tekenen. De arduino zelf heeft te weinig geheugen om temperatuurtabellen op te slaan. Naast de temperatuur wordt ook de stand van de servomotor, de gevraagde temperatuur en de temperatuur van de uitlaatgassen getoond.
- Opmaken van logs
- Met een arduino is het niet enkel mogelijk om de temperaturen uit te printen, je kan ze ook opnemen in een log. Het enige wat je extra nodig hebt is een shield met SD kaartlezer. De gegevens worden via de SD-kaart overgebracht op een computer om grafieken te maken.
Het voordeel van het nieuwe systeem is dat de verwarming blijft werken zelfs met een defekte sturing, wat niet het geval was met de computergestuurde centrale verwarming. In die 20 jaar dat de centrale verwarming gebruikt werd heb ik slechts enkele pannes gehad: slechte contacten en computers die niet meer wilden opstarten aan het begin van het stookseizoen.
Hieronder een temperatuurgrafiek op 24 uur van de oude centrale verwarming en de nieuwe verwarming met een gaskachel (ga over de cyan tags hieronder om het beeld te doen verschijnen).
De gemiddelde buitentemperatuur bedroeg 8° (centrale verwarming) en 7° (gaskachel), maar met in dit laatste geval zon van 9 tot 14 uur. In beide gevallen was de temperatuur in de garage 12° (een maat voor de buitentemperatuur).
De centrale verwarming doet er meer dan een uur over om de living op temperatuur te brengen (van 14° tot 18°). De gaskachel doet het op 15 minuten, maar de vlam wordt dan uitgeschakeld gedurende 15 minuten waardoor de temperatuurstijging dan trager verloopt. Het probleem van de moeilijke temperatuurregeling van de gasbrander zal via electronische weg aangepakt worden.
De arduino heeft een nauwkeurigheid van 1024 niveau's (10 bits), terwijl de omzetters van de computer van mijn vorig systeem maar 256 niveaus hadden (8 bits). Methodes om de nauwkeurigheid te verbeteren kunnen dus achterwege blijven. Tussen 15° en 20° varieert de spanning ingangspanning op de omzetter van 3V naar 4V, dus 200 digitale niveaus (of 40 niveau's per graad).
|