PID alapú fűtésvezérlés

Azt hittem, nagyon már nem fogok hozzányúlni a fűtéshez. Aztán véletlenül beleolvastam egy mézeskút (Honeywell) termosztát leírásába, ahol arról áradoztak, hogy annyira de annyira takarékos, és annyira menő, mert PI vezérlést használ, ami a legszuperebb.

Mivel én is menő és takarékos termosztátot szerettem volna, kicsit utána olvastam a dolgonak, és rá is találtam a  Proportional Integral Derivative Control-ra, ami nem annyira bonyolult, mint amilyennek elsőre tűnik. Mint a neve is mutatja, derivál, integrál, ebből kitalálja (megjósolja), hogy mikor és mennyit kell fűteni, így nagyon precízen tudja tartani a beállított hőmérsékletet. Nagyjából így:

Akit érdekelnek a további részletek, az itt talál egy egész jó leírást, forráskódot, és további problémafelvetéseket (mint pl. tuning, derivative kick / filter, anti reset windup):

https://apmonitor.com/pdc/index.php/Main/ProportionalIntegralDerivative

A dolog annyira működik, hogy a bevezetés után az első visszajelzés az volt, hogy csináljam vissza az egészet, mert soha nem melegek igazán a radiátorok. Még különösebb tuningolás és különösebb görbeillesztések nélkül is, normál működés során elég észrevehetetlen mikor fűt, és mikor nem. Viszont a tényleges hőmérséklet tized foknál többel nem nagyon tér el az előre beállított értéktől.

A vezérlést egyébként épp a napokban módosítottam tovább, hogy a lenti részt csak akkor fűtse a rendszer ha a fentit amúgy is fűtené. Így önmagában a lenti ág csak végszükség esetén indul el, és sokkal melegebb is van, mintha külön fűteném. A fűtés hatásfoka nem észrevehető módon romlott (a plusz egy radiátor és padlófűtés cső nem sokat vesz el a visszatérő ágból, amit amúgy is felfűt a kazán).

A jövőben ha lesz még egy kis időm, akkor az újonnan érkezett szervómotorokból egyet rákötök a kazán hőmérséklet állító tekerőjére, és megpróbálom kihasználni a D részt a PID vezérlőből. Így majd az eltérés mértéke vezérli a kazán által előállított és keringetett víz hőmérsékletét. Ha csak picit kell fűteni, akkor az majd alacsony hőfokú (pl. 40 fokos) vízzel történik, ha nagyon, akkor pedig melegebb (pl. 60 fokos) vízzel.

A kapcsolódó kódok pedig a szokott helyen, a github-on.

Leave a Reply