Server » Verwarming » Eigen installatie » Temperatuurberekening
Computergestuurde verwarming:
de werking van het systeem
Temperatuurberekening
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.
-

-


Adverteer op deze site voor slechts 20€:
uw reklame onder de ogen van duizenden nerds!

0 - Voorbereiding

De sensor moet een spanning afgeven die in het meetgebied van de AD-omzetter zit (je kan natuurlijk ook sensoren gebruiken met ingebouwde ADC). Voor een buitensensor is het meetgebied verschillend dan die voor een ketelsensor. Dit is het ingestelde werkingsgebied (meetgebied van de convertors, dus waarbij geen under- of overflow gebeurt):
  • Buitensensor: -5 tot +25
  • Binnensensor: +5 tot +25
  • Ketelsensor: 0 tot +80
Warden buiten dit gebied hebben geen nut voor ons systeem. Wij zijn misschien wel geïnteresseerd in de zomertemperatuur in de tuin, maar voor ons systeem is een dergelijke temperatuur irrelevant.

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 temperatuur

Ik gebruik AD-converters met een resolutie van 256 bits, de meetwaarde loopt dus van 0 tot 255. Met de volgende formule reken ik de meetwaarde om naar een temperatuur:
tx = 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).
De versterkingsfaktor bepaal je door de sensor op een warme plaats op te stellen (de compresseur van de frigo!). Kies nu b zodat tx overeenkomt met de effektieve temperatuur.

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 temperatuur

In de praktijk ga je niet iedere meting omzetten naar een temperatuur en die gebruiken om het systeem bij te sturen. Sensorruis en transients zouden het systeem constant in de war sturen (het aansteken van een lucifer op 50cm van de sensor zorgt voor een temperatuurstijging van 0.25°C).

Voor 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+1
t(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:

  • Keteltemperatuur: 0.25 (hoge reaktiesnelheid gewenst)
  • Living en kamers: 0.1 (gemiddelde waarde: vangt de transients goed op)
  • buitensensor: 0.01 (zeer lage waarde: de invloed van de buitentemperatuur laat zich zeer traag voelen -dikke buitenmuren, thermische traagheid van het gebouw).

3- Prediktie

Als je de brander uitschakelt, dan zal de watertemperatuur in de ketel nog stijgen. Hetzelfde gebeurt met de kamertemperatuur als je de circulateur uitschakelt. Je moet dus de warmtebron uitschakelen vòòr het bereiken van de gewenste set-waarde. Hoe kan je echter de temperatuur voorspellen?
Hier gebruiken we twee verschillende vertragingsfaktoren:
t(i+1) = v.tx + (1 - v).t(i)
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.

De verhouding v/v' bepaal je door de reaktiesnelheid van de ruimte te bepalen (overshoot en traagheid). Dit zijn mijn waarden:

  • Ketel: 10 (veel overshoot)
  • Living: 6 (redelijk veel overshoot, radiatoren zijn overgedimensioneerd)
  • Kamers: 3 (nauwelijks overshoot, radiatoren zijn ondergedimensioneerd)
  • Buitentemp: niet nodig, wij regelen de buitentemperatuur niet zelf.

Bij de keteltemperatuur hangt de overshoot ook nog af van de snelheid van de circulatiepomp:

  • circulatiepomp op maximale snelheid: 2 (geen overshoot, warmte wordt direkt afgevoerd)
  • circulatiepomp op 2/3 vermogen: 5
  • circulatiepomp op 1/3 vermogen: 10
  • circulatiepomp draait niet: 25 (de temperatuur blijft nog minutenlang stijgen omdat er de warmte niet afgevoerd wordt).

Wij hebben dus de effektieve temperatuur t en de vertraagde temperatuur t'. De toekomstige temperatuur bepaal je door prediktie:

tp = t + 3.Δt
Δt = t - 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.

4- Faktorberekening

Al de faktoren heb ik automatisch laten berekenen door een puls-procedure. Een naaldpuls wordt in de electronika en meettechniek vaak gebruikt om het gedrag van systemen te analyseren. Enkelvoudige electronische ruimtethermostaten met PID-regeling zijn in staat de parameters van de ruimte waarin ze opgesteld staan automatisch te berekenen. Als een thermostaat van in den Brico dat kan, dan moet ik dit ook kunnen.

Een 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- Warmtevraag

De belangrijkste variabele van mijn systeem is de warmtevraag: hoeveel warmte is er nodig om de gewenste temperatuur in een ruimte te bereiken.
W = 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:
  • in de kamers laat ik de circulateursnelheid niet zo snel stijgen bij een hogere warmtevraag om nachtelijke suisgeluiden in de leidingen te vermijden.
  • in de living laat ik de keteltemperatuur niet zo snel stijgen met de warmtevraag omdat de radiatoren overgedimensioneerd zijn.

6- Invloed van de buitentemperatuur

De buitentemperatuur wordt gebruikt om de set-temperatuur lichtjes te verhogen als het kouder wordt zodat het binnen altijd aangenaam is. Ook wordt de setwaarde van de brandertemperatuur verhoogd om de verhoogde verliezen te compenseren.

7- Bijkomende regels

Na al de berekeningen, en voordat het resultaat (bijvoorbeeld: brander AAN) op het systeem losgelaten wordt, worden er een aantal regels gecontroleerd.

7.1- Brander

Hysteresis - doorwarming - warmteversneller

Het 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.

Voorwaartse regeling

Uitleg over de voorwaartse regeling is hier te vinden.
Het probleem is echter dat de warmteaanvoer van de brander de thermometer pas na ongeveer een minuut bereikt. Dit heet de dode tijd in regeltermen. Na het uitschakelen zal de temperatuur nog een paar minuten stijgen (doorwarming). De doorwarming is sterk afhankelijk van de rotatiesnelheid van de circulatiepomp (die instelbaar is).

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 circulateur

De regelkleppen hebben 5 minuten nodig om open te gaan. De circulateur mag dus niet draaien als de kleppen minder dan 5 minuten aangestuurd werden.

7.3- Evolutie setwaarde

Als de setwaarde (=gewenste temperatuur) moet dalen, dan zal de brander gedurende de laatste 10 minuten niet meer aanslaan zodat er geen overmatige residuele warmte in het systeem overblijft. Ook de waakvlam wordt gedoofd.

Publicités - Reklame

-