Kuczmann Miklós

Lineáris rendszerek és szabályozások Arduino UNO mikrovezérlővel


IV.1.8.2. Állapot-visszacsatolás tervezése pólusáthelyezéssel.

Az állapot-visszacsatolást megvalósító rendszer blokkvázlata a IV.25. ábrán látható. A motor bemenete az feszültség, ami a mikrovezérlő által előállított diszkrét idejű jelsorozat mintavételi periódusidővel, és a tartószerv által kerül a motor tényleges bemenetére, kimenete pedig az körfrekvencia, illetve az fordulatszám.
 
IV.25. ábra. DC motor irányítása integrátorral kiegészített állapot-visszacsatolással és állapotmegfigyelővel.
 
A PID-szabályozóknál már tárgyalt módon tervezéshez a körfrekvenciát, az implementáció során a fordulatszámot használjuk.
Az áramjelet közvetlenül az árammérő szenzorral nem mérjük, hanem a megfigyelővel állítjuk elő.
Ahhoz, hogy a fordulatszám egységugrás-típusú alapjelváltásra nulla stacionárius hibával reagáljon, integrátort építünk a rendszerbe. Az integrátort a bal oldali téglalapszabállyal közelítjük, amelynek bemenete itt , kimenetét pedig jelölje :
 
 
ekkor ugyanis felírható rekurzív formában:
 
 
Az integrátorral kibővített állapottérmodell együttes egyenletei az alábbiak szerint írhatók:
 
(IV.56)
 
amelyhez állapot-visszacsatoló szabályozó tervezhető az Ackermann-képlettel, és
 
(IV.57)
 
Jelölje a kibővített rendszer rendszermátrixát , bemeneti vektorát pedig .
A kibővített rendszert a következőképp lehet definiálni:
 
FIh = [FI zeros(2,1); c*Ts 1];
Gammah = [Gamma; 0];
 
A kibővített rendszer sajátértékei, azaz a kibővített rendszer pólusai az utasítással a következők: , és . Utóbbi értelemszerűen az integráló hatás miatt jelent meg, a másik kettő pólus a motor diszkrét idejű modelljéből származik.
A kibővített diszkrét idejű rendszer irányítható, a Matlab függvényének meghívásával az irányíthatósági mátrix számítható:
 
 
aminek rangja maximális: , azaz a rendszer irányítása állapot-visszacsatolással megvalósítható ().
A vektort Ackermann képletével határozzuk meg,
 
(IV.58)
 
ahol az irányíthatósági mátrix inverze szerepel, és a mátrixpolinom a polinomból írható át a zárt kör három tervezendő sajátértékével, azaz . A Matlab utasítását használva a szabályozó vektor tervezhető.
Két esetet mutatunk be részletesebben a diszkrét idejű modellből kiindulva.
Az első esetben és pólusokat nem mozdítjuk el, a pólust értékre módosítjuk, vagyis az integrátorhoz köthető pólust gyorsítjuk. Ezzel az alábbi erősítéseket kapjuk a
 
k = acker(FIh,Gammah,[p(1);p(2);p(3)/2])
 
Ackermann-formulával:
 
 
Az így nyert szabályozási kör viselkedését mutatja a IV.26. ábra.
A pólusáthelyezéssel történt kísérletezés eredményeképp elmondható, hogy további módosítása (például vagy helyre) praktikusan nincs hatással a zárt kör viselkedésére. A pólus módosítása szintén nincs hatással a szabályozott jellemzőre vagy a beavatkozó jelre. A pólus áthelyezése sokkal jelentősebb. Az alábbi értékek mellett a beavatkozó jel nem lépi túl a felső határértéket, ugyanakkor az előzőhöz képest gyorsabb beállás érhető el,
 
k = acker(FIh,Gammah,[p(1)/1.5;p(2);p(3)/2])
 
s így
 
 
A szabályozó viselkedését mutatja a IV.27. ábra. További gyorsítás azonban túllövést eredményez, illetve a beavatkozó szerv telítéséhez vezet.
 
IV.26. ábra. Ackermann-képlettel tervezett állapot-visszacsatolást tartalmazó szabályozási kör vizsgálata (1).
 
IV.27. ábra. Ackermann-képlettel tervezett állapot-visszacsatolást tartalmazó szabályozási kör vizsgálata (2).
 
A Matlab programban tervezett és az Arduino keretrendszerben tesztelt szabályozási kör a fentiek szerint lehetőséget ad az egyes paraméterek hatásának teljes körű vizsgálatára. A következő fejezetben a szabályozó hangolására egy másik módszert mutatunk be, amely a domináns póluspár fogalmával indít.
A megfigyelő paramétereit az Arduino kód elején a következőképp lehet definiálni:
 
float F[4] = {0.4520, -0.0116, 13.8997, -0.3520};
float G[2] = {0.0097, 1.3072};
float H[2] = {0.0846, 0.9606};
 
Ugyanitt a szabályozó paramétereit a következőképp:
 
float k[3] = {4.0835, 0.1610, 0.7598};
float xk[2] = {0.0, 0.0}, xk0, xk1;
 
Itt jelöli a becsült állapotvektort, aminek mindkét eleme nulláról indul.
A megfigyelőt a hibaszámítást követően kell meghívni, ami után a beavatkozó jel is számítható:
 
d = d + error*Ts;
xk0 = F[0]*xk[0] + F[1]*xk[1] + G[0]*y + H[0]*u;
xk1 = F[2]*xk[0] + F[3]*xk[1] + G[1]*y + H[1]*u;
xk[0] = xk0;
xk[1] = xk1;
u = -(k[0]*xk[0]+k[1]*xk[1])+k[2]*d;
 
Itt a mintavételi periódusidő típusú változó, ahogy a nulláról induló változó is. A megfigyelő változója a mért szögsebességet jelenti.
A fenti programrészletet a mintavételes PID-szabályozóknál tárgyalt megszakítással együtt kell realizálni.
 

Lineáris rendszerek és szabályozások Arduino UNO mikrovezérlővel

Tartalomjegyzék


Kiadó: Akadémiai Kiadó

Online megjelenés éve: 2026

ISBN: 978 963 664 238 9

A könyv a lineáris rendszerek és lineáris szabályozások témaköreit dolgozza fel azzal a céllal, hogy az elméleti ismereteket egyszerűen kivitelezhető gyakorlati problémák megoldásával támassza alá, különös hangsúlyt fektetve ezért az Arduino UNO mikrovezérlő használatára. Fontos célunk, hogy a bemutatott demonstrációs eszközök egyszerűen kivitelezhetőek legyenek, így az eredmények könnyen rekonstruálhatóak, ugyanakkor jó alapot biztosítanak a továbblépéshez, bonyolultabb berendezések építéséhez, és az elmélet helyes alkalmazásához.

Az első rész a felhasznált hardvereket és szoftvereket mutatja be. A Matlab alapvető jelentőségű rendszerek analízisében, szabályozások tervezésében, és a különféle szimulációkban. A könyvbeli példákat Matlab környezetben dolgoztuk ki. Ezek bemutatása nagyon részletes, a példák nagyban segítik az elmélet megértését. Az Arduino UNO mikrovezérlőre és a hozzá kapcsolható egyéb hardverekre egyszerűségük és kedvező áruk miatt esett a választás. A Matlab környezetben tervezett szabályozókat, illetve a méréseket ezzel a mikrovezérlővel valósítjuk meg.

Számos nagyon jó könyv létezik, amelyek a szükséges mélységben vezetik be az Olvasót a Jelek és rendszerek, illetve a Szabályozástechnika témakörökbe. Néhányat a könyv végén található irodalomjegyzékben megadunk. Szándékosan csak magyar nyelvű könyveket sorolunk itt fel, a témakör hazai és nemzetközi irodalma óriási.

A második részben a Jelek és rendszerek témakörét dolgozzuk fel, ahol az elméleti háttér mellett illusztratív példákat hozunk, melyek segítségével könnyebben érthetővé válnak a tárgyalt fogalmak és módszerek. A témában számos kiváló irodalom fellelhető, melyekre hivatkozva tömör összefoglalását adjuk a témakörnek.

A harmadik rész a Szabályozástechnika területét járja körbe, ismét csak nagyon tömören, a klasszikus PID szabályozóktól az állapottér alapú szabályozásokig mutatjuk be a módszereket. Az elméleti alapokat egy konkrét példa illusztrálja.

A negyedik rész két esettanulmányt tárgyal nagyon részletesen. Az első egy egyenáramú motor, melynek modellezését, paramétereinek méréseken alapuló identifikálását és fordulatszámának szabályozását mutatjuk be. A másik egy instabil rendszer, egy lejtőn guruló golyó stabilizálását valósítja meg. Elvégezzük a demonstrációs eszközök aprólékos matematikai modellezését, a szabályozási körök elméleti tervezését, majd gyakorlati megvalósítását.

Reményeink szerint a könyv az Olvasó segítségére lesz a lineáris rendszerek és szabályozások megismerésében, valamint gyakorlatban való alkalmazásukban. A könyv jól használható az egyetemi mérnöki és informatikus oktatásban, különösen a témakörbe vágó szakdolgozatok, diplomamunkák és a hallgatói kutatómunka területén.

A közölt mintaprogramok szabadon felhasználhatók, továbbfejleszthetők.

Hivatkozás: https://mersz.hu/kuczmann-linearis-rendszerek-es-szabalyozasok-arduino-uno-mikrovezerlovel//

BibTeXEndNoteMendeleyZotero

Kivonat
fullscreenclose
printsave