Minden, ami elektronika

Elektronikával hobbi szinten foglalkozó oldal

PID szabályozás

2017. december 21. 06:53 - raptor13

Circuit cellar cikk fordítás...

Szeretem a sült húsokat, így néhány évvel ezelőtt úgy döntöttem, hogy saját magamnak fogom elkészíteni, amihez szükségem volt egy elektromos grillsütőre. Akkor – jobbat nem tudtam- vásároltam egy olcsó készüléket. Valójában nagyon jól épített és szigetelt készülék, de a költségek csökkentése érdekében a hőmérséklet beállítása manuálisan történik. Nem vettem észre, milyen bosszantó probléma lesz ez. A grill egy 600 W-os elektromos fűtést tartalmaz, aminek egy egyszerű, fázishasításon alapuló vezérlője van (lásd az 1. ábrát). A sütés szempontjából a hőmérséklet pontos értéken való tartása nem kritikus, de a jó végeredmény eléréséhez néhány fokon belül kell tartani.

abra1.jpg

1. ábra

A sütő gyárilag egy szinte használhatatlan, 4,5 cm-es átmérőjű hőmérővel volt felszerelve. A grillben tartott hőmérséklet a hőmérő méréstartományának az alsó harmadában helyezkedik el, és 5 ° C pontossággal lehet leolvasni. Ez önmagában kihívás a kívánt hőmérséklet fenntartásához. Ráadásul az R1 potenciométer, amivel a hőmérsékletet lehet szabályozni, az egy olcsó, rosszminőségű lineáris potenciométer, ami a sütő ajtaja alatt található. Miután elérte a kívánt hőmérsékletet, a potenciométert folyamatosan az alacsony 5% és 10% közötti tartományban kell mozgatni. Ez azt jelenti, hogy a megfelelő hőmérséklet fenntartása folyamatos figyelmet igényel, és még akkor is rendkívül nehéz.

A helyes hőmérséklet fenntartása érdekében született meg a fejemben egy automatikus hőmérséklet-szabályozó készítése. Miután sorban írtam a cikkeket az automatizálásról, most úgy döntöttem, hogy PID hőmérséklet-szabályozót építek a készülékemhez. Valójában, a PID-vezérlés túlzás lenne ide, egy egyszerű ki/be kapcsolós vezérlés valószínűleg elég lett volna, de tetszett az a gondolat, hogy a megvitatott elmélet gyakorlati megvalósításra kerüljön.

Amint azt korábban kifejtettem, a lineáris idő-invariáns (LTI) működési tartomány elengedhetetlen a PID működéséhez. A vezérelt elemnek - ami a melegítő ebben az esetben - nyilvánvalóan lineárisan vezérelhetőnek kell, hogy legyen. 0-nál kezdődik, és 100%-os vezérlésnél éri el a maximális teljesítményt. Úgy döntöttem, hogy a fűtést impulzusszélesség-modulációval (PWM) szabályozom, a meglévő fázishasítás helyett. A PWM-et egyszerűbb megvalósítani, és így nincs szükség hozzá, hogy nullaátmenetet kelljen figyelni. A sütő és a vezérlő közötti kapcsolat szintén egyszerűbb, ha nem kell a vezérlődobozba 120 VAC-t kellene vinni (lásd a 2. ábrát). A MOC3033M optocsatoló, amellyel a BTA12-600-as triakot hajtjuk, saját nullátmenet-vezérléssel rendelkezik, hogy minimalizálja az elektromágneses interferenciát (EMI), amelyet az áramkör egyébként generálna. A sugárzott interferenciát tovább csökkenti a sütő földelt fém szekrénye. Az MOC3033M opto-triac beépítése a sütő belsejében lévő NYÁK-on található teljesítmény-triachoz és a korábbi fázishasításos vezérlés alkatrészeinek leválasztása csak néhány percet vett igénybe, a NYÁK-on 3 vezetéket kellett átvágni hozzá.

abra2.jpg

2. ábra

A PWM 0-100%-os fűtési ciklusa 0-tól 255-ig terjed. A vezérlés 20 ms alappal működik, ami a gyakorlatban azt jelenti, hogy a fűtést 255x20 ms időnként (5120 ms, kb. 5 másodperc) bekapcsoljuk a PID szabályozás által meghatározott (0-255) érték 20 ms alapjával szorzott ideig. A sütő hőmérséklet emelkedése kb. 0,13 ° C / másodperc folyamatos fűtésnél, kisebb kitöltési időnél arányosan lassabb. Az 5.12 másodperces PID frissítési ciklus ideje elég gyors a hőmérséklet pontos szabályozásához.

A sütő belső hőmérsékletének méréséhez az Analog Devices TMP37 típusú hőmérőjét választottam 20 mV / ° C kimenettel. A vezérlővel egy árnyékolt vezetékkel van összekötve. A vezérlőbe építettem egy kb. 52 Hz-es aluláteresztő szűrőt (a kábelkapacitás miatt létrejövő lengések megakadályozására), amit egy kétszeres erősítési tényezőjű erősítő követ – ez a külső zajok csökkentésére szolgál (lásd a 3. ábrát). Az így kapott kimeneti feszültségtartomány lehetővé teszi az Arduino belső 10 bites analóg-digitális átalakító (ADC) hatékony felhasználását. A digitalizálás után a kapott hőmérséklet értékét tovább szűröm átlagolással, a zajok még pontosabb kiszűrésének érdekében.

abra3.jpg

3. ábra

Az Arduino I/O lábainak védelme érdekében a D1, D2, D3 és D4 diódák a feszültséget biztonságos szintre szorítják, esetleges feszültség-tüskék keletkezésekor (lásd 2. és 3. ábra). A vezérlőn lévő LCD-kijelző mutatja a beállított hőmérsékletet (alapjel) és a sütő hőmérsékletét. A három nyomógomb a vezérlő újraindítását és a hőmérséklet növelését illetve csökkentését szolgálja. Ez a hardver kiépítés lehetővé tette számomra, hogy kísérletezzek különböző szabályozási típusokkal és beállításokkal úgy, hogy egyszerűen módosítom a szoftvert az Arduino USB portján keresztül. A 4. ábra mutatja az Arduino lapkához történő csatlakoztatást.

abra4.jpg

4. ábra

A legfontosabb szabályozási probléma a grill termikus tehetetlensége miatt bekövetkezett jelentős késés. Amint fent említettem, a sütő felmelegítésekor a hőmérséklet – miközben a sütőt felmelegítem a 15 ° C-os környezeti hőmérsékletről 50 ° C-ra - kb. 0,13 ° C-ot emelkedik másodpercenként. Ez a növekedési ütem csak 100%-os teljesítménnyel történő felfűtés alatt  jelentkezik. PID-szabályozás közben sokkal lassúbb a felfűtés sebessége. A 100%-os teljesítménnyel történő fűtés lekapcsolása után a belső hőmérséklet körülbelül további 5 ° C-kal emelkedik. A sütő szekrénye hőszigetelt, de közben folyamatosan szellőzik. A hőmérő által mért belső hőmérsékletet nem befolyásolja a környezeti hőmérséklet változása. A TMP37 hőmérő mérési sebessége a gyakorlatban elhanyagolható a sütő nagy hőtehetetlensége miatt.

PROGRAMOZÁS

A hardver befejezése után (lásd: 1. kép) a kiegészítő funkciókat kezdtem el először leprogramozni, a beállított és az aktuális hőmérséklet megjelenítését a kijelzőn és a hőmérséklet beállítást a nyomógombok segítségével. Ezt követte a PWM alapú vezérlés, majd a PID szabályozás elkészítése. Sajnos az Arduino alap PWM szabályozása túl gyors, így nem alkalmas a 60 Hz-es AC feszültség szabályozására. Amint fent említettem, 20 ms alapú szabályozást állítottam fel, ezzel már hatékonyan lehet szabályozni a teljesítményt.

photo1.jpg

1. kép

Ahelyett, hogy az időmet az elméleti értékek kiszámolásával töltöttem volna, inkább a gyakorlati megközelítést alkalmaztam, amelyet sok mérnök valószínűleg előnyben részesítene. A rendszert a Ziegler-Nichols zárt hurkú módszerrel hangoltam.

Néhány szakértő inkább a nyitott hurkú beállítást preferálja, de az én esetemben kényelmesebb volt zárt hurkú szabályozással behangolni. A memóriánk frissítéséhez: ennél az eljárásnál kezdetben a Ki (integráló tag) és a Kd (deriváló tag)  értékét nullára kell beállítani. Ezután a Kp (proporcionális tag) értékét egészen addig növeljük, amíg instabillá nem válik a rendszer. A Kp ezen értékét Kmax-nak nevezzük el, a hőmérséklet értékének a lengési frekvenciáját pedig f0-nak. A következő lépésben a PID szabályzónak az alábbi értékeket adjuk meg: Kp=0,6*Kmax, Ki=2xf0 és Kd=0,125/f0.

Miután a Ki és a Kd paramétereket nullára állítottam, 50 ° C-ra felfűtöttem a sütőt. Ezután megemeltem a hőmérsékletet 1 ° C-kal. Néhány alkalommal ezt meg kellett tennem, miközben növeltem a Kp-t, amíg a hőmérséklet neki nem áll folyamatosan lengeni (lásd az 5. ábrát). Ezen a ponton a Kp = Kmax = 10. Az időtartam körülbelül 468 s volt, ami azt jelenti, hogy f0 = 2,14 × 10-3 Hz. A Ziegler-Nichols módszer használatával a következő értékek jöttek ki: Kp=6; Ki=0,005 amit módosítottam 0,5-re; Kd=58,5 amit késő módosítottam később 65-re. A kis Ki és a nagy Kd a sütő nagy hőtehetetlensége miatt van. Néhány alkalommal változtattam a paramétereket a legjobb teljesítmény érdekében. Mivel az erősítés beállításai a saját rendszer sajátosságaitól függnek, a letölthető szoftverek értékei KP = 1 és KI = KD = 0.

abra5.jpg

5. ábra

A rendszer teljesítményét a 6. ábra szemlélteti, ahol a kék vonal a sütő hőmérséklete. A piros vonal a fűtési teljesítmény, százalékában. A piros vonalon látható, hogy a vezérlés úgy módosítja a mindenkori pillanatnyi teljesítményt, hogy az előre beállított hőmérsékletet a lehető legrövidebb időn belül érje el.  Látható, hogy úgy írtam meg a programot, hogy a beállított hőmérsékletnél 6 fokkal alacsonyabb értékig a fűtés 100%-on megy, onnantól veszi át a szabályozást a PID algoritmus.

abra6.jpg

6. ábra

A sütő úgy működik, ahogy vártam. Nem kell folyamatosan figyelnem a hőmérsékletét, és ami még fontosabb, tökéletesen sült hús a végeredmény.

Az eredeti cikket George Novacek írta és a Circuit Cellar újság 2017. augusztusi számában jelent meg, onnan lett lefordítva magyar nyelvre. A fordításban lévő esetleges hibákért felelősséget nem vállalok.

Szólj hozzá!

A bejegyzés trackback címe:

https://electro.blog.hu/api/trackback/id/tr3313515633

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása