Server » Verwarming » Eigen installatie» 2020 » Electronica
Verwarmingsinstallatie 2020
Electronica voor de sturing met een arduino
Evolutie
-

-

Bij dit ontwerp is er zeer weinig extra electronica nodig: de arduino doet het meeste werk.
  • Temperatuurmeting met Pt1000
    (ruimtetemperatuur) die een signaal geeft van 0 tot 5V (0 tot 1023)

  • Keyboard input met een hoge waarde (> 500) als de toets ingedrukt is
    Aangezien we met een analoge input werken kunnen we een tweede reeks toetsen bijvoegen (met een serieweerstand) en zelfs een derde reeks toetsen (met een serieweerstand van een andere waarde). Hier is geen electronica nodig.

  • Kacheltemperatuur Na testen met een NTC-weerstand werd toch gekozen voor een Pt1000.
    Dit is nodig om te weten of de kachel werkt. Het is ook mogelijk het huidig vermogen te schatten, maar deze mogelijkheid wordt verder niet benut.

Ik moet dus twee temperaturen meten: de temperatuur in de ruimte en of de brander aan staat of niet (dit is nodig voor de regellus). Om na te gaan of de brander werkt of niet kan ik enkel de temperatuur van de uitlaat meten. Mijn eerste ontwerpen zijn met een NTC die als voordeel heeft een grote weerstandsverandering te hebben, maar de meetwaarden zijn niet echt consistent. Uiteindelijk heb ik voor een Pt1000 gekozen, zoals voor de temperatuurmeting in huis.

Een normale weerstandsmeting is niet mogelijk: het duurt meer dan 3 minuten vooraleer de temperatuur van de buis boven de limiet van 1200Ω komt als de brander aanslaat, en omgekeerd duurt het 6 minuten vooraleer de weerstand onder die waarde zakt. De grenswaarde van 1200Ω werd gekozen omdat die tussen de weerstandswaarde met uitgeschakelde kachel en de waarde met ingeschakelde kachel ligt.

De oplossing is een licht differentieerende versterker te bouwen zodat de processor sneller kan detecteren dat de kachel aan of uit staat. Ook de software van de arduino werkt volgens dit systeem: zolang de temperatuur stijgt weet de software dat de brander aan staat. Eenmaal dat de temperatuur min of meer stabiel is (wijziging van minder dan 10Ω/minuut) dan wordt er gekeken of de temperatuur onder of boven de limiet is. Dit is de meest betrouwbare methode.

Als de weerstandswaarde boven de 1450Ω komt dan weet de software dat de verwarming op hoog vermogen werkt, maar er wordt geen gebruik gemaakt van deze mogelijkheid.

De print rechts bevat een dubbele op amp voor de temperatuurmeting met Pt1000. De meetwaarde moet omgezet worden naar een bereik dat door de A/D omzetter verwerkt kan worden.

Rechts de arduino bord met de volledige electronica (behalve de temperatuurmeting). Het is een super eenvoudige schakeling geworden in vergelijking met de sturing van de centrale verwarming (of in vergelijking met mijn ander arduino-ontwerp, de nixie klok).

De computer die voor de sturing van de verwarming gebruikt werd heeft om te beginnen geen data-ingangen en uitgangen (het is geen PLC) en de uit te voeren metingen waren meer complex met de centrale verwarming.

Bij de sturing van de gaskachel met een arduino worden 8 digitale lijnen gebruikt om de leds aan te sturen. Met dezelfde lijnen wordt ook het toetsenbord gescand (door de lijn kortstondig hoog te maken). De bijhorende led licht dan ook kortstondig op, maar de puls duurt minder dan 1ms. Tijdens de scanperiode worden alle lijnen laag gemaakt (behalve één) en dat merkt men zelfs niet.

Het scansignaal van alle toetsen gaat naar een analoge ingang zodat ik nog een paar digitale outputs over heb (ik heb nog een digitale lijn nodig voor de servorsuring en een digitale lijn voor de serieele interface). De processor weet welke lijn hoog was, en dus ook elke toets er ingedrukt werd. Met dit ontwerp kunnen meervoudige ingedrukte toetsen ook gedetecteerd worden, maar de mogelijkheid is niet geïmplementeerd.

De digitale uitgangen hebben de neiging de analoge temperatuuringangen te verstoren, waardoor de opeenvolgende metingen niet stabiel zijn. Juist voor het inlezen van een temperatuur voeg ik een pauze van 100ms. De schakelende voeding stoort eveneens: ik heb filtercondendatoren geplaatst op de analoge ingangen van de arduino. Zo ontstaat er een laagdoorlaatfilter die de spanningspieken onderdrukt.

Als de servosturing ingeschakeld is (positieve servo pulsen aanwezig), dan licht een groene led op. Als er communicatie is naar het LCD scherm is, dan licht een rode led op. Het is hier goed te merken dat er in één loop niet terzelfdertijd data naar de servomotor en naar het scherm gestuurd kan worden (softwarematig zo bepaald).

Afbeelding rechts: een pt-1000 sensor is maar twee millimeter groot. Het voordeel van een kleine sensor is dat die veel sneller reageert op temperatuurverschillen, zodat de differentiërende faktor beperkt kan blijven. Een nadeel is dat de sensor kan opwarmen door de meetstroom. Het is aangeraden die te beperken tot minder dan 1mA, dan heb je een spanning van ongeveer 1V over de klemmen en de warmte-ontwikkeling is beperkt tot 1mW, waardoor de sensor niet merkbaar opwarmt.

De schakeling is door verschillende versies gepasseerd. Uiteindelijk heb ik een kleine Pt1000 gebruikt voor de temperatuur van de kachel (superklein sensor, reageert binnen de 5 seconden) en een LM35 voor de temperatuur van de living. De LM35 is een geïntegreerde sensor die een spanning van 10mV geeft per °C. Bij 20° heb je dus een uitgangsspanning van 200mV, een signaal dat je 20× moet versterken om naar de arduino te sturen. Het uitgangssignaal is daarbij bijzonder lineair. Gebruik je een Pt1000 in een weerstandsbrug, dan is het uitgangssignal slechts lineair voor kleine temperatuurschommelingen.

Uiteindelijk heb ik gekozen voor een LM35 en niet een Pt1000 omdat om een voldoende signaal te bekomen met een Pt1000 je een minimale stroom moet gebruiken die de Pt1000 wat opwarmt (voor de temperatuur van de kachel is dit niet van belang). Gebruik je een grotere Pt1000 (in een industriele behuizing), dan reageert die veel trager op temperatuurschommelingen.

De op amp geeft ook een signaal naar een recuperatie-voltmeter die ingesteld is om de temperatuur te tonen. De vaste temperaturen van 16 en 19° zijn ook aangegeven.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's

-