Welk verwarmingssysteem je gebruikt, hoe de brander aangestuurd wordt, hoe de kleppen en de circulateur bediend worden, enz is verschillend van systeem tot systeem. Wat wel altijd hetzelfde is, is de omzetting van een meetwaarde naar een bruikbare temperatuur. |
-
0 - Voorbereiding
De sensor kan je een spanning laten afleveren dat in het omzettingsvenster van de converter ligt door het veranderen van een paar weerstanden (gain en offset). Eventueel kan je een op-amp bijplaatsen om tot de gewenste waarden te komen (0-5V). De sensor zelf levert een spanning van 10mV per graad celcius. Echt precies moet de waarde niet zijn, de exacte temperatuur bepalen we in een volgende stap. 1 - Meetwaarde naar temperatuurtx = a + b.m
a: offsetwaarde (positief of negatief)b: faktor (positief) m: meetwaarde (0..255)
De offsetwaarde bepaal je als volgt: sensor op een koude plaats opstellen (een kleine frigo is ideaal) zodat de meetwaarde m nagenoeg nul is. Nu kies je a zodat tx overeenkomt met de effektieve temperatuur (een nauwkeurige thermometer is hier een must). Offset en gain zal je enkele keren na elkaar moeten bijstellen. Let op: een sensor heeft tijd nodig om zijn nieuwe temperatuur te bereiken en bij overgang van koud naar warm kan er waterdamp op de sensor en de bedrading condenseren! 2- Integratie temperatuurVoor een nauwkeurige meting gebruikte ik vroeger een wobbelgenerator om een kleine wisselspanning op de meetwaarde te superponeren (1 à 2 bits). Ook wordt de meetspanning die door de sensor afgeleverd wordt gedifferentieërd om een snellere reaktie te bekomen. Ruis, transients en eventuele wobbelsignaal moeten geëlimineerd worden. Dit doe je met volgende formule: t(i+1) = v.tx + (1 - v).t(i)
t(i+1): nieuwe temperatuur op tijdstip i+1t(i): de temperatuur dat bij de vorige cyclus berekend werd tx: gemeten temperatuur afkomstig van de sensor (dat is de tx van hoofdstuk 1) De vertragingsfaktor v kies je naargelang de meetfrekwentie en de gewenste responssnelheid. Voor de keteltemperatuur zal je een snellere respons nodig hebben dan voor de buitentemperatuur. Per sensor voer ik één meting uit om de 5 seconden. Dit zijn mijn vertragingsfaktoren:
3- PrediktieHier gebruiken we twee verschillende vertragingsfaktoren: t(i+1) = v.tx + (1 - v).t(i)
t' heeft een veel hogere vertraging dan t (ongeveer het 10-voudige, dus als v = 0.2 dan is v' = 0.02). t' loopt dus achter op t dat de huidige temperatuur toont. Het accentje heet prime in de wiskunde maar dat zal u niet verder helpen in het leven.
t'(i+1) = v'.tx + (1 - v').t'(i) De verhouding v/v' bepaal je door de reaktiesnelheid van de ruimte te bepalen (overshoot en traagheid). Dit zijn mijn waarden:
Bij de keteltemperatuur hangt de overshoot ook nog af van de snelheid van de circulatiepomp:
Wij hebben dus de effektieve temperatuur t en de vertraagde temperatuur t'. De toekomstige temperatuur bepaal je door prediktie: tp = t + 3.Δt
Δt is de temperatuursevolutie. De prediktiewaarde tp gebruik je nu om het systeem aan te sturen. Het systeem is weinig gevoelig voor transients wegens de vertraging en toch reageert het perfekt op temperatuursveranderingen.
Δt = t - t' 4- FaktorberekeningEen speciale routine laat de brander precies één minuut werken en meet dan de evolutie van de keteltemperatuur. Hetzelfde gebeurt met de verschillende ruimtes, waarbij ik warmte (water van 50°) gedurende precies 5 minuten naar de ruimte stuur. Aan de hand van het impulsgedrag berekent de routine de verschillende parameters. 5- WarmtevraagW = MAX(tset - tp, 0)
De warmtevraag is de gewenste temperatuur - de prediktie-temperatuur.Iedere ruimte heeft zijn eigen warmtevraag, die gebruikt wordt voor de betreffende regelklep. Alle warmtevragen worden opgeteld voor de circulateur en keteltemperatuur. Negatieve warmtevragen worden gelijkgesteld aan nul (dat is de MAX(x,0) in de formule). Aan de hand van de warmtevraag bepaal ik hoe warm de ketel moet zijn en hoe snel de circulateur moet draaien. De warmtevraag wordt anders toegepast naargelang de ruimte:
6- Invloed van de buitentemperatuur7- Bijkomende regels7.1- BranderHysteresis - doorwarming - warmteversnellerHet is niet de bedoeling dat de brander om de 5 seconden zou aan- en afslaan (cyclustijd van mijn systeem). In mijn vernieuwde systeem is de waakvlam losgekoppeld van de hoofdbrander. De waakvlam blijft aan zolang er warmtevraag is en de hoofdbrander wordt aan- en uitgeschakeld naargelang de keteltemperatuur 1° lager of 1° hoger is dan de berekende gewenste watertemperatuur. Er zit dus een hysteresis van 2° op de boilertemperatuur om constaan aan- en afslaan te vermijden.
Mijn systeem werkte pas goed met een extra ingreep in de software: van zodra de brander ingeschakeld is, wordt de prediktietemperatuur programmatorisch verhoogd: van 0.03°C tot 1°C per 5 seconden (naargelang het vermogen op de circulatiepomp). Na 30 seconden is de boilertemperatuur met een paar graden gestegen, al meet de thermometer deze stijging nog niet. Maar de software heeft deze temperatuurstijging ingecalculeerd. Zo wordt de brander vroeger uitgeschakeld en wordt overshoot van de boilertemperatuur vermeden. Deze software-ingreep komt overeen met de welbekende “warmteversneller” op oude mechanische thermostaten (ruimtethermostaten met bi-metaal). Het bepalen van hoeveelheid "warmteversneller" is relatief eenvoudig: laat de brander precies één minuut werken en bepaal hoeveel de temperatuur achteraf stijgt. De temperatuur kan nog gedurende een paar minuten stijgen na het afleggen van de brander. Als de temperatuur met 30° gestegen is, dan is dat de waarde van je warmteversneller. De waarde kan je naar beneden afronden. Deze waarde moet je proportioneel optellen bij de gemeten temperatuur in de loop van een minuut. Voer je bijvoorbeeld één meting om de 5 seconden, dan moet de software om de 5 seconden 2° bijtellen bij de gemeten temperatuur. Dus na één minuut is de berekende temperatuur evenveel gestegen als de echte temperatuur (maar de thermometer meet die nog niet). De berekende warmteversneller is verschillend naargelang de rotatiesnelheid van de circulatiepomp. Wordt er constant water aangevoerd, dan heb je minder doorwarming. Een hoge warmteversneller is echter nodig als de ciclulatiepomp op een laag vermogen draait, want dan wordt de geproduceerde warmte ook niet goed gemengd in de boiler en vangt de thermostaat de temperatuurstijging niet snel genoeg op. Bij mijn systeem wordt er geen rekening gehouden met de temperatuur van het aangevoerde (koude) water.
7.2- Regelkleppen en circulateur7.3- Evolutie setwaarde |
Publicités - Reklame