Kuczmann Miklós

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


III.4.3. Állapot-visszacsatolást alkalmazó mintavételes szabályozó tervezése

A folytonos idejű rendszer két sajátértéke szerint a rendszer aszimptotikusan stabil: , , azaz , .
A rendszer megfigyelhető és irányítható, megfigyelhetőségi mátrixának és irányíthatósági mátrixának rangja és szerint 2-2, ahol
 
 
A mikrovezérlővel történő megvalósítás miatt áttérünk a rendszer diszkrét idejű modelljére. Az egységugrás-ekvivalens mintavételes modell a Matlab utasításával számítható:
 
 
Legyen a mintavételi periódusidő , azaz a mintavételezés frekvenciája . Ekkor
 
Ts = 1/20;
FI_rendszer = ss(A,b,c,D);
DI_rendszer = c2d(FI_rendszer,Ts);
FI = DI_rendszer.a;
Gamma = DI_rendszer.b;
 
utasításokat használva kapjuk, hogy
 
 
A diszkrét idejű rendszer két sajátértéke: , . A diszkrét idejű rendszer is megfigyelhető és irányítható, megfigyelhetőségi és irányíthatósági mátrixának rangja és szerint 2-2, ahol
 
 
A megfigyelő a következőképp tervezhető meg a Matlab utasításaival:
 
q = exp(-Ts./(tau/2))
G = acker(FI',c',q)';
H = Gamma;
F = FI-G*c;
 
A megfigyelő két pólusát a folytonos idejű rendszer időállandóit tároló változó alapján számoljuk az összefüggés szerint, de a két pólust felgyorsítjuk példaképp a kétszeresére. A vektor Ackermann képlete szerint adódik, majd a vektor, illetve az mátrix:
 
 
Ez alapján a kondenzátorok feszültsége a következő képletekkel becsülhető:
 
 
Az integrátorral kiegészített rendszer állapotváltozós modelljének összeállítását követően Ackermann képlete használható a visszacsatoló konstansok és az integrátorhoz kapcsolódó előrecsatoló konstans meghatározásához. Ehhez pólusokat kell választani a vektorban, sorban az , az és az változókhoz. Mindez a következő sorokkal valósítható meg:
 
q = exp(-Ts./(-1./[-1 -1 -20]));
FIh = [FI zeros(2,1); c*Ts 1];
Gammah = [Gamma; 0];
k = acker(FIh,Gammah,q);
 
Az integrátorral kiegészített rendszer is irányítható, az
 
 
irányíthatósági mátrix rangja maximális, azaz 3 ().
A III.5. táblázatban összefoglaltuk néhány, folytonos időben megválasztott sajátértékhez tartozó sorvektor elemeit. A folytonos idejű rendszerhez tartozó sajátértékeket az összefüggéssel át kell számítani a diszkrét idejű rendszerre, s csak azután lehet az Ackermann-képletet használni.
 
III.5. táblázat. Az erősítések alakulása a pólusok áthelyezésének függvényében.
-1
-1
-1
-1,3699
1,2202
0,2788
-1
-1
-2
-0,8504
1,2376
0,5441
-1
-1
-5
0,5608
1,2851
1,2647
-1
-1
-20
5,1617
1,4397
3,6141
-2
-2
-1
-0,3440
1,5201
1,0616
-2
-2
-2
0,1499
2,0610
2,0715
-2
-2
-5
1,4915
3,5304
4,8150
-2
-2
-20
5,8655
8,3213
13,7598
-5
-5
-1
2,3122
5,0110
5,7360
-5
-5
-2
2,7397
6,9071
11,1922
-5
-5
-5
3,9011
12,0583
26,0154
-5
-5
-20
7,6877
28,8529
74,3443
A III.28. ábrán a választás mellett az integrátorhoz kapcsolódó sajátérték hatása látható. A sajátérték távolodása az origótól egyre gyorsabb tranzienst eredményez a kimeneti jelben, hiszen a beavatkozó jel pillanatértéke növekszik. Ennek oka természetesen az, hogy az erősítések értéke is egyre nagyobb. Érdekességképp felrajzoltuk a szakasz ugrásválaszát is. Ebben a sorozatban az látható, hogy a szabályozott rendszer ugrásválaszának tranziense lassúbb, mint a szakasz ugrásválasza. Ezen javítani pólusáthelyezéssel lehetséges.
A III.29. ábrán a szimulációs és mérési eredmények összehasonlítása látható a értékre. Itt mindkét állapotváltozó viselkedése látható.
 
III.28. ábra. A szabályozási kör kimeneti jele és irányítójele mellett, függvényében.
 
III.29. ábra. A mérési és szimulációs eredmények összehasonlítása és esetén.
 
A III.30. ábrán a választás mellett az integrátorhoz kapcsolódó sajátérték hatása látható. A sajátérték negatív irányban történő növelése itt is egyre gyorsabb tranzienseket eredményez a kimeneti jelben, a beavatkozó jel pillanatértéke erőteljesebben növekszik az előző sorozathoz képest, az erősítésértékek növekedése itt is tapasztalható. A beavatkozó jelben túllövés is megfigyelhető, ami erőteljesebb gyorsítást eredményez. A tranziens nagyjából 6 s után eltűnik, míg az előző sorozatban ehhez nagyjából 10 s-ra volt szükség. Megfigyelhető, hogy a szabályozott rendszer ugrásválaszának tranziense alkalmasan választott mellett gyorsabb, mint a szakasz ugrásválasza.
A III.31. ábrán a szimulációs és mérési eredmények összehasonlítása látható a értékre.
 
III.30. ábra. A szabályozási kör kimeneti jele és irányítójele mellett, függvényében.
 
III.31. ábra. A mérési és szimulációs eredmények összehasonlítása és esetén.
 
A III.32. ábrán a választás mellett az integrátorhoz kapcsolódó sajátérték hatása látható. Itt egyértelmű, hogy a szabályozott rendszer ugrásválaszának tranziense gyorsabb, mint a szakasz ugrásválasza. A sajátérték negatív irányban történő növelése itt is javít a tranziens viselkedésen, gyorsítja azt, a beavatkozó jelben azonban erőteljesebb túllövés tapasztalható, de a maximális érték minden esetben a maximális 5 V alatt van. A tranziens a leggyorsabb felfutás mellett nagyjából 1,5 s után eltűnik, ami jelentős javulás a fentiekhez képest.
A III.33. ábrán a szimulációs és mérési eredmények összehasonlítása látható a értékre.
 
III.32. ábra. A szabályozási kör kimeneti jele és irányítójele mellett, függvényében.
 
III.33. ábra. A mérési és szimulációs eredmények összehasonlítása és esetén.
 
A szimulációs eredményeket 200 mintapontban és nulla kezdeti értékekkel az alábbi egyszerű Matlab programmal számolhatjuk ki:
 
for i = 1:200,
e = 1-y; % hibaszámítás
d = d + e*Ts; % a hiba integrálja
xh = F*xh+G*y+H*u; % a megfigyelő generálta állapotvektor
u = -k(1:2)*xh+k(3)*d; % beavatkozó jel a szabályozó által
y = c*x; % a modell kimeneti jele
x = FI*x+Gamma*u; % a modell állapotvektora
end
 
Arduino UNO környezetben a futtatás elvégzésére a diszkrét idejű PID-szabályozóknál bemutatott programot kismértékben kell csak módosítani. A változók deklarálása a fenti szabályozóhangolásoknak megfelel:
 
unsigned long t0, t1;
float ref=1.0, u=0, d=0, Ts=0.05;
bool meres=false;
 
float F[4] = {0.8260, 0.2732, 0.0848, 0.7003};
float G[2] = {-0.1884, 0.2105};
float H[2] = {0.0892, 0.0044};
float xk[2] = {0.0, 0.0}, xk0, xk1;
float k[3] = {7.6877, 28.8529, 74.3443};
 
A függvényen nem kell változtatni. A függvényben a beavatkozó jel számítását kell értelemszerűen megváltoztatni. A két állapotváltozó ( és ) itt mérhető, amelyekkel a megfigyelő viselkedése vizsgálható. Az hibajel előállítása után a fentiek ismeretében lefuttatjuk a megfigyelő algoritmusát, majd a becsült értékekkel előállítjuk a szabályozó algoritmus beavatkozó jelét, amely 0 V és 5 V között limitált. A kódrészlet az alábbi:
 
float error = ref - uc2;
 
d = d + error*Ts;
xk0 = F[0]*xk[0] + F[1]*xk[1] + G[0]*uc2 + H[0]*u;
xk1 = F[2]*xk[0] + F[3]*xk[1] + G[1]*uc2 + H[1]*u;
xk[0] = xk0;
xk[1] = xk1;
 
u = -(k[0]*xk[0]+k[1]*xk[1])+k[2]*d;
 

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