← Back to CoursesStemExpert
StemExpert
Intermediate · Handboek · 31. Regelsystemen
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
I31. Regelsystemen
IIntermediate · deel I8 · Regelen en robotica

Handboek · hoofdstuk 31Regelsystemen

Meten, vergelijken, bijsturen: de verwarming en de ventilatie van de klimaatmodule met hysterese

Een thermostaat, een cruisecontrol en je eigen lichaam doen hetzelfde: ze meten, vergelijken met wat ze willen en sturen bij, en dan meten ze opnieuw. In dit hoofdstuk leer je de taal van het blokschema, bouw je een aan/uit-regeling met hysterese voor de klimaatmodule, simuleer je ze met een warmtemodel, en beoordeel je ze met getallen: hoe ver schommelt de temperatuur, hoe vaak schakelt de verwarming, en wat kost het?

10× uitleg3× uitgewerkt voorbeeld1× proef1× ontleed1× naslag1× verhaal1× het geheel3× code16 opdrachten in het werkboek± 8 lestijden
Buiten vriest het, binnen houdt een regeling de sla tussen 16 en 17 °C.
Buiten vriest het, binnen houdt een regeling de sla tussen 16 en 17 °C.
Na dit hoofdstuk
Verhaal · 31.1

Een blinde uitvinder en een schokkerige chauffeur

1/21

De Amerikaanse ingenieur Ralph Teetor werd blind toen hij vijf jaar was. Hij werd toch ingenieur, en een van de productiefste uitvinders van de auto-industrie: hij kreeg meer dan veertig octrooien. Zijn bekendste uitvinding begon met ergernis. Teetor reed vaak mee met zijn advocaat, en die had een gewoonte: als hij luisterde, gaf hij gas, als hij praatte, liet hij het gaspedaal los. De auto versnelde en vertraagde voortdurend. Teetor, die de beweging voelde in plaats van zag, werd er misselijk van.

Hij bedacht een toestel dat de snelheid zelf vasthoudt. Het meet hoe snel de auto rijdt, vergelijkt dat met de snelheid die de bestuurder gekozen heeft, en geeft meer of minder gas. In 1950 kreeg hij er een octrooi op. In 1958 zat het als 'Auto-Pilot' in de Chrysler Imperial; een jaar later bood Cadillac het aan onder de naam die bleef: cruise control.

Teetors toestel doet wat elke regeling doet: meten, vergelijken, bijsturen, en dan opnieuw meten. De thermostaat van je verwarming doet het, de koelkast, het vlotterventiel in een toilet, en je eigen lichaam, dat zijn temperatuur op 37 °C houdt. In dit hoofdstuk leer je de taal waarin ingenieurs zulke regelingen tekenen en beoordelen, en je regelt de verwarming en de ventilatie van de klimaatmodule.

Waarom dit hoofdstuk ertoe doet

De meetkas gaf water onder 30 % en opende haar dakraam boven 28 °C (Fundamental, hoofdstuk 25). In de klimaatmodule werken mensen en groeit sla die niet mag bevriezen en niet mag koken. Waar leg je de grenzen? Hoe vaak mag een klep schakelen? Wat als de sensor traag is of uitvalt? En hoe bewijs je met metingen dat je regeling goed werkt?

De eerste cruisecontrols hadden een draaiknop: de bestuurder stelde de gewenste snelheid in.
De eerste cruisecontrols hadden een draaiknop: de bestuurder stelde de gewenste snelheid in.
Uitleg · 31.2

Open en gesloten lus

2/21

In Fundamental (hoofdstuk 25) leerde je het patroon meten, beslissen, doen, en het verschil tussen een tuinsproeier met een timer en een pomp die pas water geeft als de grond droog is. Nu maak je dat precies.

Een open lus stuurt volgens een plan of een opdracht, zonder te meten wat er gebeurt: 'verwarming aan van 22 tot 6 uur'. Is de nacht zachter dan verwacht, dan wordt het te warm; is ze kouder, te koud. Een gesloten lus meet de geregelde grootheid (de luchttemperatuur) en past de actie aan zolang er een verschil is met wat je wil. Die pijl terug van de sensor naar de regelaar heet terugkoppeling.

systeemluswat wordt er gemeten?
broodrooster met draaiknopopenniets: de tijd beslist
pomp van de module, 10 min per uur (hoofdstuk 29)openniets: de klok beslist
stappenmotor zonder encoder (hoofdstuk 26)openniets: de motor telt zijn stappen
groeilampen dimmen met het daglicht (hoofdstuk 25)open, met voorsturinghet daglicht, niet het licht op de planten
servomotor (hoofdstuk 26)geslotende hoek, met een potmeter in de servo
wasmachine die water inlaatgeslotenhet waterniveau in de trommel
verwarming van de module (dit hoofdstuk)geslotende luchttemperatuur

Een open lus is eenvoudig, goedkoop en snel, en kan nooit gaan slingeren. Maar ze corrigeert niets: een storing (een koude nacht, een open deur) of een fout in het plan werkt volledig door. Een gesloten lus corrigeert storingen die ze niet kent, maar ze heeft een sensor nodig die het juiste meet, en ze kan schommelen of doorschieten. Daarover gaat dit hoofdstuk.

Voorsturing: de storing meten

De groeilampen meten het daglicht en dimmen vooraf, nog voor de planten te veel licht krijgen. Dat heet voorsturing: je meet de storing, niet het resultaat. Snel, maar blind voor alles wat je niet meet: als een lamp veroudert en minder licht geeft, merkt de regeling niets. Echte installaties combineren daarom vaak voorsturing met terugkoppeling.

open lus: de klok beslist, niemand meetopdrachtklok: 22 tot 6 uurregelaarverwarming aanactuatorconvector 800 Wprocesmodulegesloten lus: de sensor meet wat de verwarming verandertsetpoint16,0 tot 17,0 °Cregelaarvergelijkt met demetingactuatorconvector 800 WprocesmoduleSHT31 meetmeting
Dezelfde verwarming, twee manieren van sturen. Alleen de onderste ziet wat de verwarming echt doet.
Uitleg · 31.3

De taal van het blokschema

3/21

Ingenieurs tekenen elke regelkring op dezelfde manier. De blokken zijn apparaten of processen, de pijlen zijn signalen: grootheden die van het ene blok naar het andere gaan.

  • Het proces is wat je wil regelen: de lucht in de module, een auto, een lichaam.
  • De actuator grijpt in het proces in: de convector die warmte geeft, de gasklep, de zweetklieren.
  • De sensor meet de geregelde grootheid en geeft de meting .
  • De regelaar vergelijkt de meting met de gewenste waarde of setpoint en berekent de stuurgrootheid : wat de actuator moet doen.
  • Een storing werkt van buitenaf in: kou, wind, een helling, een open deur.

Wat de actuator aan het proces geeft (een warmtestroom, een kracht), heet in de figuur .

Het rondje met Σ is een vergelijkingspunt: het telt de signalen op met hun teken. Zo ontstaat de regelafwijking of fout:

regelafwijking (fout)
Is het 16,2 °C en wil je 16,5 °C, dan is : te koud. Een negatieve fout betekent te warm.

Het minteken maakt er een negatieve terugkoppeling van: een te hoge meting maakt de fout kleiner of negatief, en de regelaar doet minder. Zo dempt de lus afwijkingen uit. Bij positieve terugkoppeling versterkt een afwijking zichzelf: een microfoon die zijn eigen luidspreker opvangt, gaat fluiten (rondzingen).

De regelaar kent alleen de meting

Hangt de sensor in de zon of vlak boven de convector, dan regelt de lus perfect, maar naar de verkeerde temperatuur. Een regelkring is nooit beter dan zijn meting.

rsetpointΣ+−eregelaaruactuatorqprocesstoring dysensormeting ym
Elke regelkring in dezelfde taal: de fout e gaat naar de regelaar, de meting komt terug via de sensor.
Ontleed · 31.4

Het blokschema van de verwarming van de module

4/21

De klimaatmodule heeft geen eigen verwarming op haar batterij: de warmte komt van het station. Een warmwaterleiding van de stationsverwarming loopt naar een ventiloconvector in de module: een klein radiatortje met een ventilator erachter. Als de Mega verwarmt, zet pin D12 (nieuw in pinnen.h) via een MOSFET een magneetklep open en het ventilatortje aan; dan komt er ongeveer 800 W warmte in de module.

16,0-17,0 °CΣMega 2560twee grenzen(hysterese)D12convectorklep +ventilator: 0of 800 Wde modulelucht en buffer,20,2 W/Kbuiten −2 °C, zon, deurluchtSHT31 in desensorkastgemeten luchttemperatuur
De verwarming van de klimaatmodule als gesloten regelkring (nachtstand).
Wijs een nummer aan: de figuur zoomt in. Klik om vast te zetten.
  1. 1
    Setpoint

    Geen enkel getal maar een band: 's nachts aan onder 16,0 °C en uit boven 17,0 °C, overdag 18,0 en 19,0 °C.

  2. 2
    Vergelijken

    In de code: luchtT < laag en luchtT > hoog. De Mega doet het om de 2 s.

  3. 3
    Regelaar

    Een aan/uit-regelaar met hysterese: hij onthoudt of de verwarming aan staat, en verandert alleen voorbij een grens.

  4. 4
    Actuator

    De convector geeft 0 of 800 W: meer standen heeft hij niet. Bij −8 °C buiten verliest de module 495 W bij 16,5 °C: er blijft reserve om op te warmen.

  5. 5
    Proces

    De lucht (en alles wat snel meewarmt) en de buffer: het vat van 200 L en het reservoir. Verlies naar buiten: 20,2 W per graad verschil (hoofdstuk 19).

  6. 6
    Storingen

    De buitentemperatuur, de zon door het kasdak, de lampen (190 W warmte), een deur die opengaat. De regelaar kent ze niet: hij ziet alleen hun gevolg.

  7. 7
    Sensor

    De SHT31 hangt in de sensorkast (hoofdstuk 30). Die kast volgt de lucht met een vertraging van ongeveer een minuut.

  8. 8
    Terugkoppeling

    De meting gaat terug naar het vergelijkingspunt: daardoor is dit een gesloten lus.

Uitleg · 31.5

Cruisecontrol: dezelfde lus op de weg

5/21

Bij een cruisecontrol is het proces de auto en de geregelde grootheid de snelheid. De sensor telt de omwentelingen van een wiel, de regelaar is de motorsturing, de actuator de inspuiting of de gasklep. De storingen zijn een helling, tegenwind, een zware lading.

De grafiek toont een simulatie: een auto van 1200 kg rijdt aan 90 km/h en komt aan een helling van 4 % over 600 m. Met het gaspedaal vast (een open lus) zakt de snelheid tot 55 km/h: de helling vraagt 471 N extra, en niemand geeft meer gas. Met cruisecontrol zakt ze maar tot 87,3 km/h. Dat is geen aan/uit-regeling: de motorsturing geeft evenredig met de fout meer kracht, hier 600 N extra per m/s te traag. Aan/uit zou betekenen: gas vol of gas dicht, en een schokkende auto, precies wat Teetor wilde vermijden.

Merk op dat de auto op de helling niet helemaal 90 km/h haalt. Een regelaar die evenredig met de fout werkt, geeft alleen extra gas als er een fout is: er blijft een kleine blijvende afwijking. Echte cruisecontrols tellen daarom ook op hoe lang de fout al duurt (een I-actie); dat leer je in Expert (hoofdstuk 39). Een adaptieve cruisecontrol heeft nog een tweede lus: een radar meet de afstand tot de auto ervoor.

90 km/h(knop)Σmotorsturingrekent het gasuitactuatorinspuiting,gasklepFde autohelling, wind, ladingvwieltoerental
De snelheid is de geregelde grootheid; de helling is een storing die de regelaar niet kent.
helling 4 %050010001500200025003000556065707580859095afgelegde weg (m)snelheid (km/h)90 km/hgaspedaal vast (open lus)cruisecontrol (gesloten lus)
Simulatie: op de helling verliest de auto met het gaspedaal vast 35 km/h, met cruisecontrol ongeveer 3 km/h.
Uitgewerkt voorbeeld · 31.6

Hoeveel trager op de helling?

6/21

De auto uit de simulatie (1200 kg) rijdt 90 km/h () op een vlakke weg. Hij komt aan een helling van 4 %. (a) Hoeveel extra kracht vraagt de helling? (b) Hoe snel vertraagt de auto in het begin als het gaspedaal niet verandert? (c) De cruisecontrol geeft 600 N extra per m/s die de auto te traag rijdt. Welke snelheid houdt hij op de helling?

Gegeven
  • , , helling 4 % (4 m hoger per 100 m)
  • regelaar:
Gevraagd
  • extra kracht
  • vertraging
  • snelheid met cruisecontrol
Oplossing
  1. 1
    (a) Een helling van 4 % maakt een hoek (hoofdstuk 6). De component van de zwaartekracht langs de weg: .
  2. 2
    (b) Met het gaspedaal vast verandert de motorkracht niet: die 471 N is een netto kracht naar achter. (hoofdstuk 8). Na 10 s is dat al of 14 km/h trager.
  3. 3
    (c) De cruisecontrol vindt een evenwicht als zijn extra kracht de helling dekt: , dus . De auto rijdt .
Antwoord
(a) 471 N extra. (b) In het begin 0,39 m/s² vertraging. (c) Ongeveer 87,2 km/h: een blijvende afwijking van bijna 3 km/h.
Klopt dit? De simulatie geeft 87,3 km/h: iets beter, omdat de luchtweerstand bij een lagere snelheid ook iets kleiner wordt. Wil je een kleinere afwijking, dan kies je een sterkere regelaar (meer N per m/s), maar dan reageert de auto schokkeriger op elke kleine fout.
Uitleg · 31.7

Je lichaam: een regeling met vele actuatoren

7/21

Je lichaam houdt zijn kerntemperatuur tussen ongeveer 36,5 en 37,5 °C (Fundamental, hoofdstuk 29). Zenuwcellen in de huid en in de hersenen zijn de sensoren, een deel van de hersenen, de hypothalamus, is de regelaar. Dat constant houden heet homeostase.

Het lichaam gebruikt zijn actuatoren in trappen. Wijkt de temperatuur een beetje af, dan past het alleen de doorbloeding van de huid aan: wijdere bloedvaten geven meer warmte af, nauwere houden ze binnen. Dat kost bijna niets. Pas bij een grotere afwijking volgen zweten of rillen. Zweten koelt sterk: een liter zweet die verdampt, neemt 2,4 MJ mee (hoofdstuk 18); een halve liter per uur is al koeling. Rillen laat spieren warmte maken. En je gedrag is ook een actuator: een jas aantrekken, de schaduw zoeken.

Twee dingen zijn anders dan bij een eenvoudige thermostaat. Het lichaam regelt geleidelijk: een beetje te warm geeft een beetje zweet. En de huid meet de omgeving al voor de kern afkoelt: het lichaam reageert op kou voor het echt te koud is, een vorm van voorsturing. De klimaatmodule doet iets gelijkaardigs in trappen: eerst de ventilatoren, pas bij meer warmte het dak.

Koorts: een verschoven setpoint

Bij een infectie zet de hypothalamus de gewenste waarde hoger, bijvoorbeeld op 39 °C. Je lichaam is dan 'te koud' tegenover zijn nieuwe setpoint: je rilt en hebt het koud, terwijl je temperatuur stijgt. De regelkring werkt perfect, alleen met een ander setpoint.

± 37 °CΣhypothalamusvergelijktte warmzweten, huid wijdergedrag: jas, schaduwte koudrillen, huid nauwerhet lichaamkou, hitte, sportzenuwcellen inhuid en hersenen
Eén regelaar, meerdere actuatoren: de hypothalamus kiest de actie die past bij de grootte van de fout.
Uitleg · 31.8

Drie soorten regelaars

8/21

Wat doet de regelaar met de fout? Drie mogelijkheden, van eenvoudig naar verfijnd:

  • Aan/uit met één drempel. Kouder dan 16,5 °C: aan; warmer: uit. Eenvoudig, maar rond de drempel schakelt de actuator voortdurend, want elke kleine schommeling van de meting zit er afwisselend boven en onder.
  • Aan/uit met hysterese. Twee grenzen: aan onder 16,0 °C, uit boven 17,0 °C. Daartussen verandert er niets: de regelaar onthoudt of de verwarming aan staat. Warmt de lucht op, dan blijft de verwarming aan tot 17,0 °C; koelt ze af, dan blijft ze uit tot 16,0 °C. De grafiek is een lus die je maar in één richting doorloopt.
  • Evenredig (P). Hoe groter de fout, hoe meer vermogen: , begrensd tussen 0 en het maximum. Daarvoor moet de actuator tussenstanden hebben (een dimbare lamp, een klep die half open kan, een motor met PWM). De cruisecontrol werkt zo.

In code is hysterese twee regels. Belangrijk is het woord else en de variabele die de toestand onthoudt:

if (!verwarmen && luchtT < laag) verwarmen = true;        // koud genoeg: aan
else if (verwarmen && luchtT > hoog) verwarmen = false;  // warm genoeg: uit
// daartussen: niets veranderen

Hysterese ken je al: de Schmitt-trigger 74HC14 schakelt bij 2,6 V en terug bij 1,6 V (hoofdstuk 24), de groeilampen gaan aan onder 4000 lx en uit boven 6000 lx (hoofdstuk 22), en het dakraam van de meetkas opent boven 28 °C en sluit onder 25 °C.

De thermostaat hoger zetten warmt sneller op

Een aan/uit-verwarming geeft altijd haar volle vermogen, hier 800 W. Een hoger setpoint maakt de module niet sneller warm; de verwarming blijft alleen langer aan, en de temperatuur gaat hoger. Wie de thermostaat op 25 °C zet om sneller 19 °C te hebben, krijgt na een tijd 25 °C.

één drempelaanuitmeting16,5hystereseaanuitmeting16,017,0evenredig (P)aanuitmeting16,5u = Kp·e
Links schakelt de regelaar op één punt, midden onthoudt hij zijn toestand tussen twee grenzen, rechts doseert hij.
Proef · 31.9

Een thermostaat in een doos

9/21
Onderzoeksvraag

Hoe vaak schakelt een verwarming met hysterese, en hoe ver schiet de temperatuur voorbij de grenzen? Hangt dat af van de breedte van de band en van waar de sensor zit?

Materiaal
  • schoenendoos met deksel
  • lampje 12 V / 10 W in een metalen fitting (of vermogensweerstand 15 Ω / 10 W)
  • logic-level MOSFET (IRLZ44N) met 220 Ω naar de gate en 10 kΩ naar GND, 12 V-voeding
  • Arduino met temperatuursensor (DS18B20, of TMP36 met het gemiddelde van 16 metingen)
  • computer met de seriële monitor
  • stopwatch of de klok van het programma
VeiligheidHet lampje wordt heet: laat minstens 3 cm ruimte tot het karton en laat de opstelling nooit alleen. Alleen 12 V. Stop de proef als het in de doos warmer wordt dan 40 °C.
schoenendoos (deksel dicht)10 WlampjesensorwarmteArduinohysteresein de codeMOSFET + 12 Vseriële monitor:tijd, T, aan/uit
De opstelling: een lampje als verwarming, een sensor op 10 cm, een Arduino met een MOSFET.
Werkwijze
  1. 1Bouw de schakeling van hoofdstuk 23: de MOSFET schakelt het lampje, de Arduino meet de temperatuur. Leg de sensor op 10 cm van het lampje.
  2. 2Programmeer een regeling met hysterese rond 27 °C: aan onder LAAG, uit boven HOOG. Laat elke seconde de tijd, de temperatuur en de stand (0 of 1) naar de seriële monitor sturen.
  3. 3Begin met een band van 1,0 K (26,5 en 27,5 °C). Wacht tot de doos opgewarmd is (ongeveer 20 minuten) en meet dan 20 minuten.
  4. 4Tel hoe vaak het lampje aangaat en noteer de hoogste en laagste temperatuur in die 20 minuten.
  5. 5Herhaal met 0,5 K en 2,0 K. Leg daarna de sensor vlak tegen het lampje en herhaal met 1,0 K.
Waarneming
bandkeer aan in 20 minlaagste (°C)hoogste (°C)
0,5 K1126,427,5
1,0 K726,127,7
2,0 K525,628,2

Voorbeeldmeting (sensor op 10 cm). Met de sensor tegen het lampje schakelt het lampje veel sneller, en is de lucht in de rest van de doos kouder dan de sensor aangeeft.

Verklaring

Hoe smaller de band, hoe vaker het lampje schakelt: de temperatuur heeft minder tijd nodig om van de ene grens naar de andere te gaan. Maar de temperatuur blijft niet tussen de grenzen: bij 1,0 K schommelt ze tussen 26,1 en 27,7 °C. Twee oorzaken. De warmte moet eerst van het lampje naar de sensor, en de sensor zelf moet opwarmen: de meting loopt achter. En een uitgeschakeld lampje is nog heet en geeft nog even warmte. Beide laten de temperatuur doorschieten voorbij de grens. Een sensor tegen het lampje regelt de temperatuur van het lampje, niet die van de doos: de meting moet de juiste grootheid meten.

Een TMP36 geeft per stap van de ADC ongeveer 0,49 °C (5 V / 1024 / 10 mV per °C): voor een band van 0,5 K is dat te grof. Neem het gemiddelde van 16 metingen, of een digitale sensor zoals de DS18B20 (0,0625 °C per stap).

Uitleg · 31.10

Het warmtemodel van de module

10/21

Om een regeling te ontwerpen voor je ze bouwt, heb je een model nodig: rekenregels die voorspellen hoe de temperatuur verandert. Voor de klimaatmodule volstaan twee temperaturen:

  • de lucht , met alles wat in enkele minuten mee opwarmt (planten, goten, lampen, de binnenkant van de wanden): samen . De lucht alleen is maar 14 kJ/K;
  • de buffer : het vat van 200 L en het reservoir van 60 L, samen (hoofdstuk 18).

De lucht verliest per graad verschil met buiten (hoofdstuk 19) en wisselt per graad verschil uit met de buffer. Elke 2 s rekent het model de warmte die binnenkomt en buitengaat, en zet de temperatuur een stapje verder, zoals in hoofdstuk 18 ():

een stap van het model
: buitentemperatuur, . De buffer krijgt op dezelfde manier bij. De sensor volgt de lucht met een tijdconstante : , zoals een condensator die oplaadt (hoofdstuk 24).

Waarom twee temperaturen? In hoofdstuk 18 koelde alles samen af, als één blok van 1,1 MJ/K. Voor een hele nacht klopt dat ongeveer. Voor een regeling die om de paar minuten schakelt niet: de lucht warmt in enkele minuten een graad op, het water in de vaten merkt daar nauwelijks iets van. Een model moet passen bij de vraag die je stelt.

Waarom 800 W?

Bij de ontwerptemperatuur van −8 °C (hoofdstuk 19) en 16,5 °C binnen verliest de module . Een verwarming die net 495 W geeft, houdt de temperatuur, maar warmt nooit op na een open deur. Met 800 W blijft er 305 W reserve. De warmte komt uit de verwarmingskring van het station; de 12 V-batterij van de module (hoofdstuk 20) moet er niets voor leveren.

lucht (snel)C = 80 kJ/Kbuffer (traag)vat 200 L + reservoir 60L: 1,10 MJ/Kbuiten−2 tot 16 °Cverwarming0 of 800 Wzon en lampentot 1,5 kW overdag20,2 W/K+40 W/K met ventilatoren vol,+60 W/K met het dak open30 W/Koverdag's nachts terugsensorkastvolgt de lucht met60 s vertraging
Twee temperaturen: de lucht reageert in minuten, de buffer in uren.
Uitgewerkt voorbeeld · 31.11

Hoe lang staat de verwarming aan?

11/21

Het is een windstille januarinacht, buiten 0 °C. De verwarming (800 W) gaat aan onder 16,0 °C en uit boven 17,0 °C. De buffer heeft ongeveer de gemiddelde luchttemperatuur, 16,5 °C, zodat hij gemiddeld geen warmte geeft of neemt. Neem aan dat de sensor zonder vertraging meet. Bereken hoe lang de verwarming telkens aan en uit staat, hoe vaak ze per uur aangaat, welk deel van de tijd ze aan staat, en hoeveel warmte een nacht van 8 uur kost.

0246810121416182016,0016,2516,5016,7517,0017,25minutenT (°C)lucht (sensor zonder vertraging)
De zaagtand uit het voorbeeld: stijgen tegen 0,35 °C per minuut, dalen tegen 0,25 °C per minuut. Rood: verwarming aan.
Gegeven
  • , ,
  • band van 16,0 tot 17,0 °C: ; buiten
Gevraagd
  • aantijd en uittijd
  • keer aan per uur
  • inschakelduur
  • warmte per nacht
Oplossing
  1. 1
    Verlies bij gemiddeld 16,5 °C: .
  2. 2
    Opwarmen: er komt netto binnen. De lucht moet opnemen: .
  3. 3
    Afkoelen: nu gaat er uit en komt er niets binnen: .
  4. 4
    Eén volledige zaagtand duurt (6,9 min): keer aan per uur.
  5. 5
    Inschakelduur: , of 41,7 %. Dat is precies : gemiddeld moet de verwarming juist het verlies dekken.
  6. 6
    Warmte per nacht: gemiddeld levert de verwarming precies het verlies, dus .
Antwoord
Telkens 171 s aan en 240 s uit; 8,7 keer aan per uur; 42 % van de tijd aan; ongeveer 2,7 kWh warmte per nacht.
Klopt dit? De simulatie met hetzelfde model (zonder vertraging en zonder ruis) geeft 8,57 keer aan per uur en 41,5 % aan. Het kleine verschil komt van de buffer, die toch wat warmte uitwisselt, en van het meten om de 2 s. Merk op: de inschakelduur hangt niet af van de band, het aantal schakelingen wel.
Uitleg · 31.12

De zaagtand van een echte nacht

12/21

Nu een realistische januarinacht: om 22 uur gaan de lampen uit, de lucht is 19 °C, de buffer 20 °C, en buiten daalt de temperatuur van 2 naar −2 °C. De sensor hangt in de sensorkast en loopt een minuut achter, en hij ruist een beetje (±0,03 °C). De regelaar gebruikt de nachtband: aan onder 16,0, uit boven 17,0 °C.

  • Na 18 minuten is de lucht onder 16 °C gezakt en gaat de verwarming voor het eerst aan.
  • Daarna tekent de lucht een zaagtand: 5,3 keer aan per uur, tussen 15,8 en 17,4 °C. Dat is breder dan de band van 1,0 K: de trage sensor laat de lucht voorbij beide grenzen gaan (verderop).
  • Hoe kouder het buiten wordt, hoe langer de verwarming aan staat: van 24 % van de tijd tussen 23 en 24 uur tot 38 % tussen 5 en 6 uur.
  • De buffer koelt de hele nacht langzaam af, van 20 naar 18,2 °C. Zolang hij warmer is dan de lucht, geeft hij warmte: de verwarming hoeft minder.
  • Van 23 tot 6 uur geeft de verwarming 1,88 kWh warmte (gemiddeld 269 W).
012345678−4−20246810121416182022uren na 22 uurT (°C)luchtbuffer (water)buiten
De hele nacht: de lucht zaagt tussen de twee grenzen, de buffer daalt traag, buiten wordt het kouder.
05101520253035404550556016,016,517,017,5minuten na 1 uur 's nachtsT (°C)luchtwat de sensor ziet
Eén uur ingezoomd, met de grenzen 16,0 en 17,0 °C. Rood: verwarming aan. De sensor (stippellijn) loopt achter op de lucht.
Code · 31.13

De thermostaat simuleren

13/21

Het model past in een Python-functie van twintig regels. Ze simuleert een nacht van 8 uur bij 0 °C en telt hoe vaak de verwarming aangaat. Zo probeer je in een paar seconden grenzen uit die je op de echte module weken zou moeten testen.

Pythonthermostaat.py33 regelsDownload
# thermostaat.py - de verwarming van de klimaatmodule met hystereseC_L, C_W = 80e3, 1.10e6     # J/K: de lucht (met wat snel meewarmt) en de buffer (vat + reservoir)H, G = 20.2, 30.0           # W/K: lucht -> buiten, lucht <-> bufferP = 800.0                   # W: verwarming aanDT = 2.0                    # s: om de 2 s meten en beslissenTAU_S = 60.0                # s: tijdconstante van de sensor in de sensorkast  def nacht(laag, hoog, uren=8.0, buiten=0.0):    lucht = buffer = meting = 16.5    aan = False    keer_aan, tijd_aan = 0, 0.0    t_min, t_max = 99.0, -99.0    for stap in range(int(uren * 3600 / DT)):        if not aan and meting < laag:          # de regelaar: twee grenzen            aan = True            keer_aan += 1        elif aan and meting > hoog:            aan = False        warmte = (P if aan else 0.0) - H * (lucht - buiten) - G * (lucht - buffer)   # W        lucht_nieuw = lucht + warmte * DT / C_L        buffer += G * (lucht - buffer) * DT / C_W        meting += (lucht - meting) * DT / TAU_S        lucht = lucht_nieuw        if aan:            tijd_aan += DT        t_min, t_max = min(t_min, lucht), max(t_max, lucht)    return keer_aan / uren, 100 * tijd_aan / (uren * 3600), t_min, t_max  for breedte in (0.2, 0.5, 1.0, 2.0):    per_uur, pct, lo, hi = nacht(16.5 - breedte / 2, 16.5 + breedte / 2)    print(f"hysterese {breedte:.1f} K: {per_uur:4.1f} keer aan per uur, {pct:.0f} % aan, lucht {lo:.2f} tot {hi:.2f} °C")

Uitvoer:

hysterese 0.2 K: 12.8 keer aan per uur, 42 % aan, lucht 16.18 tot 16.88 °C
hysterese 0.5 K:  8.4 keer aan per uur, 42 % aan, lucht 16.01 tot 17.07 °C
hysterese 1.0 K:  5.6 keer aan per uur, 42 % aan, lucht 15.76 tot 17.34 °C
hysterese 2.0 K:  3.5 keer aan per uur, 42 % aan, lucht 15.28 tot 17.82 °C

Drie dingen vallen op. De inschakelduur is altijd dezelfde: de verwarming moet het verlies dekken, welke band je ook kiest. Het aantal schakelingen daalt sterk met de breedte. En de lucht schommelt telkens meer dan de band breed is. De volgorde van de regels in de lus is belangrijk: eerst beslissen met de meting, dan de lucht, de buffer en de sensor één stap verder zetten, allemaal met de oude waarden.

Uitleg · 31.14

Hoe breed moet de hysterese zijn?

14/21

Met één drempel en een sensor die een beetje ruist, is het een ramp. De meting springt afwisselend boven en onder 16,5 °C, en de verwarming gaat 382 keer per uur aan: om de paar seconden. Een relais of een magneetklep is dan na enkele weken versleten. Een band van 0,2 K brengt dat al terug tot 14 keer per uur.

Een bredere band geeft minder schakelingen, maar een grotere schommeling. De simulatie (buiten 0 °C, sensor met 60 s vertraging, gemeten van het eerste tot het achtste uur) geeft:

hysteresekeer aan per uurlucht (°C)gem. afwijking (K)warmte in 7 h (kWh)
één drempel381,716,36 tot 16,670,032,34
0,2 K14,316,17 tot 16,880,162,35
0,5 K8,716,00 tot 17,100,252,34
1,0 K5,715,75 tot 17,360,382,33
1,5 K4,315,51 tot 17,590,502,37
2,0 K3,415,26 tot 17,840,632,36
3,0 K2,414,79 tot 18,310,872,35

Zonder vertraging volgt het aantal keer per uur uit het rekenvoorbeeld: het is omgekeerd evenredig met de breedte van de band. Met een trage sensor schiet de lucht aan elke kant verder door; dat werkt alsof de band breder is. Een vuistregel voor een korte vertraging:

effectieve breedte van de band
Voor de module: extra. Een band van 1,0 K gedraagt zich als 1,6 K: formule 5,5 keer per uur, simulatie 5,7.
Een smallere band kost meer energie

Nee: de warmte die de verwarming levert, is altijd het verlies van de module. In de tabel verschilt ze tussen 0,2 en 3,0 K nauwelijks. Een smallere band laat de verwarming alleen vaker en korter aangaan. Wat wel energie spaart: een lagere gemiddelde temperatuur, of minder verlies (een nachtscherm).

één drempelband 0,2 Kband 1,0 K012345678910minuten
Tien minuten uit dezelfde nacht. Met één drempel flikkert de verwarming; met een band van 1,0 K schakelt ze rustig.
0,00,51,01,52,02,53,00246810121416breedte van de hysterese (K)keer aan per uursimulatie (sensor 60 s)formule zonder vertragingformule, band + 0,6 K
Aantal keer aan per uur: de simulatie volgt de formule met de effectieve band (band + 0,6 K).
0,00,51,01,52,02,53,00,00,51,01,52,02,53,03,54,0breedte van de hysterese (K)schommeling max − min (K)simulatiede band zelf
Hoe breder de band, hoe groter de schommeling; door de vertraging altijd meer dan de band zelf.
Uitleg · 31.15

Meetvertraging: de regeling schiet door

15/21

Een sensor ziet een verandering nooit meteen. De SHT31 zelf reageert in enkele seconden, maar hij hangt in een sensorkast, en de lucht in die kast moet eerst meewarmen. Zet de verwarming uit boven 17,0 °C, dan is de lucht rond de convector al warmer, en hij warmt nog verder op terwijl de sensor achterloopt. De temperatuur schiet door voorbij de grens, boven én onder.

tijdconstante sensorkeer aan per uurboven 17,0 (K)onder 16,0 (K)gem. afwijking (K)
0 s9,10,040,020,24
60 s5,70,360,250,38
180 s3,60,870,640,61
300 s2,91,250,960,78

Een trage sensor laat de verwarming dus minder vaak schakelen, maar de lucht schommelt meer. Het is geen gratis bredere band: de regeling weet niet meer precies waar ze is. Met 300 s vertraging zakt de lucht tot 15,0 °C, onder de grens van 16,0 °C die je voor de sla gekozen had.

De doorschot is ongeveer de snelheid waarmee de lucht verandert maal de vertraging. Opwarmen gaat hier sneller (0,35 K per minuut) dan afkoelen (0,25 K per minuut): daarom schiet de lucht boven verder door dan onder. Waar hang je de sensor dus? Niet in de luchtstroom van de convector (dan schakelt hij te snel en regelt hij de convector in plaats van de module), niet in een dichte doos (te traag), maar midden in de ruimte, op de hoogte van de planten, in een kastje met openingen of een klein ventilatortje dat lucht aanzuigt.

05101520253035404550556015,015,516,016,517,017,518,018,519,0minutenT (°C)luchtsensor met 300 s vertraging
Met een sensor die 300 s achterloopt, gaat de lucht meer dan een graad voorbij de grenzen (16,0 en 17,0 °C, stippellijnen).
Uitgewerkt voorbeeld · 31.16

Grenzen kiezen met eisen

16/21

De magneetklep van de convector gaat volgens de fabrikant 200 000 schakelingen mee (rekenwaarde). Het team stelt drie eisen: (1) de lucht zakt nooit onder 15,5 °C, (2) de klep houdt minstens tien stookseizoenen, (3) de gemiddelde afwijking van 16,5 °C is zo klein mogelijk. Een stookseizoen telt 200 dagen, met gemiddeld 12 uur per dag in het ritme van een koude nacht. Welke band kies je: 0,5, 1,0 of 2,0 K?

Gegeven
  • de tabel van 'Hoe breed moet de hysterese zijn?'
  • klep: 200 000 schakelingen; 200 dagen × 12 h per seizoen
Gevraagd
  • de band die aan alle eisen voldoet
Oplossing
  1. 1
    Eis 1: de laagste temperatuur is 16,00 °C (0,5 K), 15,75 °C (1,0 K) en 15,26 °C (2,0 K). De band van 2,0 K valt af.
  2. 2
    Eis 2, schakelingen per seizoen: (0,5 K) en (1,0 K).
  3. 3
    De klep houdt seizoenen (0,5 K) of seizoenen (1,0 K). De band van 0,5 K valt net af.
  4. 4
    Eis 3 kiest dan tussen wat overblijft: alleen 1,0 K, met een gemiddelde afwijking van 0,38 K.
Antwoord
Een band van 1,0 K: 16,0 tot 17,0 °C 's nachts. Dezelfde breedte krijgt de dagband: 18,0 tot 19,0 °C.
Klopt dit? Een ontwerpkeuze is altijd een afweging. Een betere klep (een miljoen schakelingen) laat een smallere band toe. Een snellere sensor (een kastje met een ventilatortje) geeft met dezelfde band minder doorschot, maar meer schakelingen: de effectieve band wordt smaller. Reken elke combinatie na met de tabel en de vuistregel voor de effectieve band.
Uitleg · 31.17

Koelen in twee trappen: ventilatoren en dak

17/21

Overdag is het probleem omgekeerd. Op een heldere aprildag komt er door het kasdak tot 1,5 kW zonnewarmte binnen. Zonder koelen zou de lucht in het model tot 53 °C stijgen: sla verbrandt. De module koelt in twee trappen, elk met hysterese:

  • Trap 1, de ventilatoren: ze draaien altijd zacht voor de basisventilatie (hoofdstuk 14). Boven 25 °C draaien ze vol (ongeveer 120 m³ lucht per uur), onder 24 °C weer zacht.
  • Trap 2, het dak: boven 27 °C gaat het kasdak open, onder 25 °C weer dicht. Een open dak ververst ongeveer 180 m³ per uur.

Met alleen de ventilatoren haalt de lucht nog 34,1 °C; met ventilatoren en dak blijft ze onder 27,3 °C. Die dag draaien de ventilatoren 8 keer vol, samen 7,5 uur; het dak gaat 7 keer open, samen 3,7 uur. De verwarming gaat 19 keer aan, vooral 's nachts en vroeg in de ochtend (dagband vanaf 6 uur: 18,0 tot 19,0 °C).

Tussen 19 °C (verwarming uit) en 24 °C (ventilatoren vol) ligt een dode zone waarin geen enkele actuator iets doet. Die zone is bewust: verwarmen en koelen mogen nooit tegelijk, want dan betaal je voor warmte die je meteen weer wegblaast. In de code staat daarom een extra regel: als de verwarming aan is, draaien de ventilatoren niet vol.

Het dak is geen lampje

Een dak openen duurt 7 s en een motor start met een grote stroom (hoofdstuk 26). De hysterese moet daarom breder zijn dan bij de ventilatoren: 2 K in plaats van 1 K. Het openen en sluiten zelf, met eindeloopschakelaars en time-out, is een toestandsmachine: dat programmeer je in hoofdstuk 32.

0246810121416182022240510152025303540455055tijdstip (h)T (°C)zonder koelenalleen ventilatorenventilatoren en dakbuiten
Rood: verwarming aan; groen: ventilatoren vol; oranje: dak open. De stippellijnen tonen wat er zonder koeling gebeurt.
Code · 31.18

De regeling in C++

18/21

In pinnen.h komt één regel bij: const int VERWARMING = 12;. De nieuwe taak meet om de 2 s de SHT31, kiest de dag- of nachtband volgens de klok (DS3231, hoofdstuk 30) en schakelt de verwarming en de ventilatoren met hysterese. Ze komt in klimaat.ino (versie 3); hier staat ze als losse schets, zoals ze getest is. Twee dingen zijn nieuw: een uuroverzicht waarmee de regeling zichzelf beoordeelt, en een noodprogramma als de sensor niet antwoordt.

C++ (Arduino)klimaatregeling.ino125 regelsDownload
// klimaatregeling.ino - verwarming en ventilatoren van de klimaatmodule met hysterese (hoofdstuk 31)// Deze taak komt in klimaat.ino (versie 3) naast taakMeten(); hier als losse schets om ze te testen.#include <Wire.h>#include <RTClib.h>#include <Adafruit_SHT31.h>#include "pinnen.h" // ---------------------------------------------------------------- grenzen (graden C): aan onder LAAG, uit boven HOOGconst float DAG_LAAG = 18.0, DAG_HOOG = 19.0;         // verwarming van 6 tot 22 uurconst float NACHT_LAAG = 16.0, NACHT_HOOG = 17.0;     // verwarming 's nachtsconst float KOEL_UIT = 24.0, KOEL_AAN = 25.0;         // ventilatoren vol boven 25, terug laag onder 24const int VENT_LAAG = 90, VENT_VOL = 255;             // PWM: basisventilatie (hoofdstuk 14) of koelenconst unsigned long MEET_MS = 2000;                   // om de 2 s meten en beslissenconst unsigned long VENSTER_MS = 600000UL;            // noodprogramma: vensters van 10 minuten // ---------------------------------------------------------------- toestandAdafruit_SHT31 sht;RTC_DS3231 rtc;float luchtT = NAN;bool verwarmen = false, koelen = false, noodprogramma = false;float gemAan = 0.5;                                   // gemiddelde inschakelduur (0 tot 1) van het laatste uurunsigned long vorigeMeting = 0, vensterStart = 0;int starts = 0, vorigUur = -1;                        // voor het uuroverzichtunsigned long aanMs = 0;float tMin = 99.0, tMax = -99.0; // ---------------------------------------------------------------- meldingenvoid printTwee(int x) {  if (x < 10) Serial.print('0');  Serial.print(x);} void melding(const char* tekst) {                     // "# 22:13:24 tekst"  DateTime k = rtc.now();  Serial.print("# ");  printTwee(k.hour());  Serial.print(':');  printTwee(k.minute());  Serial.print(':');  printTwee(k.second());  Serial.print(' ');  Serial.println(tekst);} void uurOverzicht(int uur) {                          // elk vol uur: hoe deed de regeling het?  if (vorigUur >= 0) {    melding("uuroverzicht");    Serial.print("  keer aan: ");    Serial.print(starts);    Serial.print("   aan: ");    Serial.print(aanMs / 36000.0, 0);                 // ms per uur -> procent    Serial.print(" %   lucht: ");    Serial.print(tMin, 1);    Serial.print(" tot ");    Serial.print(tMax, 1);    Serial.println(" C");  }  vorigUur = uur;  starts = 0;  aanMs = 0;  tMin = 99.0;  tMax = -99.0;} // ---------------------------------------------------------------- de regelingvoid regelen(unsigned long nu, int uur) {  bool dag = (uur >= 6 && uur < 22);  float laag = dag ? DAG_LAAG : NACHT_LAAG;  float hoog = dag ? DAG_HOOG : NACHT_HOOG;  bool was = verwarmen, wasKoelen = koelen;  if (isnan(luchtT)) {                                // geen meting: open lus met het gemiddelde van het laatste uur    if (!noodprogramma) {      noodprogramma = true;      vensterStart = nu;      melding("ALARM: geen temperatuur, noodprogramma");    }    if (nu - vensterStart >= VENSTER_MS) vensterStart += VENSTER_MS;    verwarmen = (nu - vensterStart) < (unsigned long)(gemAan * VENSTER_MS);    koelen = false;  } else {    if (noodprogramma) {      noodprogramma = false;      melding("temperatuur terug: gewone regeling");    }    if (!verwarmen && luchtT < laag) verwarmen = true;          // hysterese: twee grenzen    else if (verwarmen && luchtT > hoog) verwarmen = false;    if (!koelen && luchtT > KOEL_AAN) koelen = true;    else if (koelen && luchtT < KOEL_UIT) koelen = false;    if (verwarmen) koelen = false;                              // nooit tegelijk verwarmen en koelen    gemAan += ((verwarmen ? 1.0 : 0.0) - gemAan) * (MEET_MS / 3600000.0);    tMin = min(tMin, luchtT);    tMax = max(tMax, luchtT);  }  if (verwarmen && !was) starts++;  if (verwarmen) aanMs += MEET_MS;  if (koelen != wasKoelen) melding(koelen ? "ventilatoren vol: koelen" : "ventilatoren terug laag");  digitalWrite(VERWARMING, verwarmen ? HIGH : LOW);  analogWrite(VENTILATOREN, koelen ? VENT_VOL : VENT_LAAG);} void taakKlimaat(unsigned long nu) {  if (nu - vorigeMeting < MEET_MS) return;  vorigeMeting += MEET_MS;  float t, rv;  if (sht.readBoth(&t, &rv)) luchtT = t;  else luchtT = NAN;                                  // de sensor antwoordt niet (draad los, sensor stuk)  int uur = rtc.now().hour();  if (uur != vorigUur) uurOverzicht(uur);  regelen(nu, uur);} void setup() {  pinMode(VERWARMING, OUTPUT);  digitalWrite(VERWARMING, LOW);                      // veilig starten: verwarming uit  pinMode(VENTILATOREN, OUTPUT);  Serial.begin(115200);  Wire.begin();  rtc.begin();  if (!sht.begin(0x44)) Serial.println("# ALARM: geen SHT31 op adres 0x44");  melding("klimaatregeling gestart");} void loop() {  taakKlimaat(millis());}

Getest in een gesloten lus: een C++-versie van het warmtemodel speelt de module en geeft de temperatuur door aan een gesimuleerde SHT31. Om 2:10 gaat het stekkertje van de sensor een halfuur los. De seriële monitor:

# 22:00:00 klimaatregeling gestart
# 23:00:00 uuroverzicht
  keer aan: 4   aan: 21 %   lucht: 15.9 tot 19.1 C
# 00:00:00 uuroverzicht
  keer aan: 4   aan: 26 %   lucht: 15.9 tot 17.3 C
# 01:00:00 uuroverzicht
  keer aan: 5   aan: 30 %   lucht: 16.0 tot 17.3 C
# 02:00:00 uuroverzicht
  keer aan: 5   aan: 31 %   lucht: 15.9 tot 17.2 C
# 02:10:02 ALARM: geen temperatuur, noodprogramma
# 02:40:02 temperatuur terug: gewone regeling
# 03:00:00 uuroverzicht
  keer aan: 6   aan: 36 %   lucht: 15.8 tot 17.2 C
# 04:00:00 uuroverzicht
  keer aan: 6   aan: 37 %   lucht: 15.9 tot 17.2 C
# 05:00:00 uuroverzicht
  keer aan: 5   aan: 37 %   lucht: 15.9 tot 17.2 C
# 06:00:00 uuroverzicht
  keer aan: 6   aan: 42 %   lucht: 15.9 tot 17.2 C

Het uuroverzicht bevestigt de simulatie in Python: vijf à zes keer aan per uur, de meting tussen 15,8 en 17,3 °C, en een inschakelduur die stijgt naarmate het kouder wordt. Tijdens het noodprogramma regelt de Mega blind: hij zet de verwarming elke 10 minuten even lang aan als ze het afgelopen uur gemiddeld aan stond. Dat is een open lus, maar een verstandige: de lucht bleef in de test tussen 15,7 en 17,4 °C. Zonder de test isnan(luchtT) was elke vergelijking met nan onwaar geweest, en was de verwarming blijven staan zoals ze stond, aan of uit.

Een tweede test op een zonnige aprildag (10 tot 18 uur) toont de grens van trap 1: de ventilatoren draaien vanaf 10:11 vol, maar de lucht stijgt toch tot 34,0 °C om 13:47. Zonder dak lukt het niet.

Code · 31.19

Een regeling beoordelen met een meting

19/21

Werkt de regeling op de echte module zoals in de simulatie? Dat bewijs je met een meting. Voor een testnacht laat je de Mega elke 10 s een regel naar de computer sturen (hoofdstuk 30): tijdstip, gemeten temperatuur, stand van de verwarming. De eerste regels van het bestand nacht.csv:

tijdstip,temperatuur_C,verwarming
23:00:00,16.78,1
23:00:10,16.78,1
23:00:20,16.81,1
23:00:30,16.92,1
23:00:40,17.00,0
23:00:50,17.11,0

Vier kengetallen vatten een aan/uit-regeling samen: de gemiddelde afwijking van het midden van de band (nauwkeurigheid), de laagste en hoogste waarde (schommeling), het aantal keer aan per uur (slijtage) en de inschakelduur (energie).

Pythonbeoordeel.py23 regelsDownload
# beoordeel.py - hoe goed regelde de verwarming vannacht? (testmeting: elke 10 s een regel)import csv MIDDEN = 16.5            # midden van de band 16,0 tot 17,0 °CSTAP = 10                # s tussen twee regels temps, aan = [], []with open("nacht.csv", newline="") as f:    for rij in csv.DictReader(f):        temps.append(float(rij["temperatuur_C"]))        aan.append(rij["verwarming"] == "1") uren = len(temps) * STAP / 3600keer_aan = sum(1 for vorige, nu in zip(aan, aan[1:]) if nu and not vorige)gem = sum(temps) / len(temps)afwijking = sum(abs(t - MIDDEN) for t in temps) / len(temps)inschakelduur = sum(aan) / len(aan) print(f"meetduur {uren:.1f} h, {len(temps)} metingen")print(f"temperatuur gemiddeld {gem:.2f} °C, van {min(temps):.2f} tot {max(temps):.2f} °C")print(f"gemiddelde afwijking van {MIDDEN} °C: {afwijking:.2f} °C")print(f"verwarming {keer_aan} keer aan: {keer_aan / uren:.1f} keer per uur, {100 * inschakelduur:.0f} % van de tijd")print(f"warmte van het station: {0.8 * inschakelduur * uren:.2f} kWh")

Uitvoer:

meetduur 7.0 h, 2520 metingen
temperatuur gemiddeld 16.59 °C, van 15.93 tot 17.24 °C
gemiddelde afwijking van 16.5 °C: 0.34 °C
verwarming 37 keer aan: 5.3 keer per uur, 34 % van de tijd
warmte van het station: 1.88 kWh

De gemeten waarden liggen dichter bij elkaar dan de echte luchttemperatuur (15,80 tot 17,42 °C): de sensor loopt achter en vlakt de toppen af. Een meting beoordeelt dus altijd de lucht zoals de sensor ze ziet. Wie de echte schommeling wil kennen, hangt voor de test een tweede, snelle sensor in de ruimte.

Naslag · 31.20

Formules, kengetallen en grenzen

20/21
regelafwijking
symboolbetekeniseenheid
setpoint, gewenste waarde°C
meting°C
aan- en uittijd (zonder vertraging)
symboolbetekeniseenheid
warmtecapaciteit die meewarmtJ/K
breedte van de bandK
vermogen van de verwarmingW
verlies bij het midden van de bandW
keer aan per uur en inschakelduur
symboolbetekeniseenheid
keer aan per uur1/h
effectieve band met een trage sensor
symboolbetekeniseenheid
tijdconstante van de sensors
één stap van een warmtemodel
symboolbetekeniseenheid
tijdstaps
kengetalwat het zegtmodule, januarinacht
gemiddelde afwijking van het middennauwkeurigheid0,39 K
laagste en hoogste waardeschommeling15,8 tot 17,4 °C
keer aan per uurslijtage van klep of relais5,3
inschakelduurenergie34 %, 1,88 kWh in 7 h
klimaatmoduleaan / vol / openuit / laag / dichtpin
verwarming overdag (6-22 h)onder 18,0 °Cboven 19,0 °CD12
verwarming 's nachtsonder 16,0 °Cboven 17,0 °CD12
ventilatoren vol (anders zacht)boven 25 °Conder 24 °CD11 (PWM 255 / 90)
kasdak (hoofdstuk 32)boven 27 °Conder 25 °CD6-D8
sensor wegverwarming blind, even lang als gemiddeld het laatste uur
Het geheel · 31.21

Waar regelen vandaan komt en waar het heen gaat

21/21

Regelen is de leerlijn waar de andere samenkomen: het proces is energie en warmte (hoofdstukken 18 en 19), de meting is elektronica en sensoren (22 en 30), de uitvoering is programmeren (29), en het ontwerp is een afweging met getallen. Ook de natuur regelt zo: homeostase is een regelkring. In Expert leer je regelaars die niet schommelen (PID) en modellen met afgeleiden in plaats van stapjes.

Meten, beslissen, doen: de eerste drempel en het eerste dakraam met twee grenzen.

Homeostase en de lichaamstemperatuur als regelkring.

Q = C · ΔT en het watervat als nachtbuffer: de bouwstenen van het warmtemodel.

De 20,2 W/K van de module: het verlies dat de verwarming moet dekken.

De vertraging van de sensor gedraagt zich als een RC-kring; de Schmitt-trigger als hysterese in hardware.

millis(), taken en pinnen.h: de basis van de nieuwe taak.

Het logboek waarmee je een regeling beoordeelt.

Het dak, de modi van de module en de veilige toestand bij een fout.

Tijdconstanten en modellen met differentiaalvergelijkingen in plaats van stapjes.

Regelaars die doseren in plaats van schakelen: P, I en D, zonder zaagtand.

Bloedsuiker en temperatuur: regelkringen in het lichaam, kwantitatief.

HabitatDe klimaatmodule krijgt haar klimaatregeling: verwarming met de warmte van het station (convector op D12) in een dag- en een nachtband, ventilatoren en dak als twee koeltrappen, een dode zone ertussen, en een noodprogramma als de sensor uitvalt. In hoofdstuk 32 worden dag, nacht, alarm en onderhoud modi van een toestandsmachine; in het integratieproject (hoofdstuk 40) test je de regeling met een logboek van een week.
Samenvatting

In het kort

Begrippen

Wat je nu kent

gesloten lus
Regeling die de geregelde grootheid meet en haar actie aanpast aan het verschil met de gewenste waarde (terugkoppeling).
open lus
Sturing volgens een plan of opdracht, zonder te meten wat het resultaat is.
blokschema
Tekening van een regelkring met blokken (regelaar, actuator, proces, sensor) en pijlen voor de signalen.
regelafwijking (fout)
Het verschil tussen de gewenste waarde en de meting.
storing
Een invloed van buiten die de geregelde grootheid verandert, zoals de buitentemperatuur of een open deur.
hysterese
Een regelaar met twee grenzen: aan onder de ene, uit boven de andere; daartussen blijft hij in zijn toestand.
inschakelduur
Het deel van de tijd dat een aan/uit-actuator aan staat; gemiddeld dekt ze precies het verlies.
meetvertraging
De tijd die een sensor nodig heeft om een verandering te volgen; ze laat de regeling voorbij haar grenzen schieten.
negatieve terugkoppeling
Terugkoppeling die een afwijking verkleint: te warm geeft minder verwarming.
voorsturing
Een storing meten en er vooraf op reageren, zonder het resultaat te meten (open lus).
Aan de slag in het werkboek16 opdrachten, van oefenen tot uitdagen