Kuczmann Miklós

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


IV.1.5.2. Fizikai paraméterek iteratív meghatározása.

A (IV.17) összefüggésekből látható, hogy a és állandók az ellenállás értékétől függenek.
A IV.2. ábra blokkvázlata a IV.10. ábrán látható módon két különálló részre bontható. A villamos oldal bemenete az feszültség és kimenete az áramjel. Az áramjel bemenete a mechanikai oldalnak, aminek az szögsebesség a kimenete. Ha tehát mérésekből rendelkezésre állnak a kérdéses bemenet-kimenet időfüggvények, akkor a blokkokban szereplő ismeretlen együtthatók nagyon pontosan meghatározhatók az armatúraellenállás jó megválasztását követően. Az armatúraág induktivitása és a tehetetlenségi nyomaték egymástól függetlenül identifikálható. Az identifikáció tehát az alábbi sorrendben hajtandó végre:
 
 
IV.10. ábra. A blokkdiagram villamos és mechanikai részei.
 
A Matlab függvényének segítségével az aranymetszésen alapuló iteratív eljárással a paraméterek a következőképp határozhatóak meg:
 
  1. keresése a intervallumon:
 
  • [x,fval] = fminbnd(@parameterek,0.1,10);
 
  • Az függvény egyes részeit a következő pontokban részletezzük (a , , , és változók egy-egy vektorban tartalmazzák a IV.1. táblázatban felsorakoztatott értékeket, de csak a 11. oszloptól, hogy a bizonytalan árammérés ne befolyásolja az identifikációt).
  1. A függvény első lépéseként a és paraméterek meghatározása történik (IV.17) szerint az ellenállás függvényében, átlagolva a mérési eredményekre:
 
  • K = sum((Ua-Ra*Ia)./w)/length(Ua);
  • k = sum(K*Ia./w)/length(Ua);
  •  
  1. Az induktivitás értékének meghatározása a intervallumon az függvény és a IV.10. ábrán látható villamos blokk segítségével:
     
  • [La,f1] = fminbnd(@motor_villamos_blokk,1e-5,1,...
  • optimset('TolX',1e-16,'Display','off'),...
  • Ua(11),t,ia,wt,K,Ra);
  •  
  • ahol , és egy-egy vektor a 250 értékű PWM-gerjesztésre adott válaszjelek időfüggvényeivel ( a 250 értékhez tartozik);
  1. A tehetetlenségi nyomaték értékének meghatározása a intervallumon az függvény és a IV.10. ábrán látható mechanikai blokk segítségével:
     
  • [th,f2] = fminbnd(@motor_mechanikai_blokk,1e-10,1,...
  • optimset('TolX',1e-16,'Display','off'),...
  • t,ia,wt,K,k);
  •  
  • a függvény kimenete az hibaérték;
  1. módosítása az aranymetszés szabályainak megfelelően, és visszalépés a 2. ponthoz, amíg az algoritmus nem konvergál.
 
A 3. és a 4. pontban egy-egy differenciálegyenletet kell megoldani (vö. (IV.6) és IV.10. ábra):
 
 
illetve
 
 
Előbbi esetben az áramjel időfüggvényét, utóbbinál a szögsebesség időbeli lefutását kapjuk. A számított időfüggvények összehasonlítandók a mért eredményekkel, s hibát kell számolni. Ehhez a motort például a 250 értékű PWM-jellel gerjesztjük és mérjük a szögsebesség és az áram időfüggvényét. Ezen időfüggvényeket néhány pontban a IV.2. táblázatban a reprodukálhatóság érdekében feltüntettük. Az idő mérésére a függvény első lépéseként a függvényt hívjuk meg. A mért adatok birtokában a villamos és mechanikai blokk bemenete külön-külön előállítható, és a differenciálegyenlet a Matlab utasításával numerikusan megoldható. Matlab környezetben mindez az alábbi két-két függvénnyel realizálható:
 
function f = motor_villamos_blokk(La,Ua,t,ia,w,K,Ra)
[T,Y] = ode45(@villamos_blokk_ode,[t(1) t(end)],0,[],Ua,t,w,La,K,Ra);
f = sum(abs(interp1(T,Y,t)-ia))/length(ia);
 
function dx = villamos_blokk_ode(t,x,Ua,T,w,La,K,Ra)
dx = -Ra/La*x + 1/La*(Ua-K*interp1(T,w,t)/60*2*pi);
 
illetve
 
function f = motor_mechanikai_blokk(theta,t,ia,w,K,k)
[T,Y] = ode45(@mechanikai_blokk_ode,[t(1) t(end)],0,[],t,ia,theta,K,k);
Y = Y/(2*pi)*60;
f = sum(abs(interp1(T,Y,t)-w))/length(w);
 
function dx = mechanikai_blokk_ode(t,x,T,ia,theta,K,k)
dx = -k/theta*x + 1/theta*(K*interp1(T,ia,t));
 
IV.2. táblázat. A 250 értékű PWM-gerjesztéshez tartozó időfüggvények.
0
0,0015
0,0032
0,021
0,052
0,088
0,123
0,160
0
0
0
1,23
1,30
1,23
1,23
1,08
0
0
0
0
356
844
1264
1621
0,199
0,237
0,276
0,314
0,353
0,391
0,429
0,468
0,86
0,78
0,78
0,56
0,63
0,63
0,48
0,41
1895
2156
2379
2539
2637
2767
2858
2892
0,507
0,545
0,584
0,622
0,661
0,699
0,738
0,776
0,48
0,48
0,41
0,41
0,48
0,41
0,34
0,48
2922
2945
2962
2982
3006
3017
3053
3056
0,815
0,853
0,891
0,929
0,968
1,000
 
 
0,41
0,34
0,48
0,41
0,26
0,41
 
 
3063
3073
3075
3079
3094
3082
 
 
 
A futtatás eredménye a következő:
 
 
A IV.9. ábrán az így számolt és értékeket jelöltük be szaggatott vonallal.
Az identifikáció eredményeképp kapott paramétereket SI-egységben behelyettesítve a (IV.6) állapotváltozós leírásba, a következő modellt kapjuk:
 
 
A (IV.9) és (IV.10) összefüggésekbe helyettesítve az így nyert fizikai paramétereket, kapjuk az alábbi átviteli függvényeket:
 
 
A fenti állapotváltozós leíráshoz, összehasonlításképp, a következő átviteli függvények tartoznak a Matlab utasítása szerint:
 
 
melyeket a következő Matlab utasításokkal lehet megkapni:
 
A = [-Ra/La -K/La;K/th -k/th];
b = [1/La;0];
c = [0 1]; % kimenet a szögsebesség
c = [1 0]; % kimenet az áram
D = 0;
[sz,n] = ss2tf(A,b,c,D)
 
Itt és jelöli az átviteli függvény számlálója és nevezője polinomjának együtthatóit csökkenő hatványkitevő szerint.
 

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