Kuczmann Miklós

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


II.5.4.2. Frekvenciatartománybeli analízis.

Az elsőfokú rendszer átviteli karakterisztikája az alábbi:
 
 
ahol és a bemeneti szinuszos feszültség és a kimeneti szinuszos feszültség komplex csúcsértéke. A soros RC-kör a komplex számítási módszer szerint az rezisztencia és az impedancia soros kapcsolása, ami egy frekvenciafüggő feszültségosztó kapcsolás. A kimeneti feszültség komplex csúcsértéke a feszültségosztás szerint
 
 
ahonnan a átviteli karakterisztika átrendezés után kiadódik.
Az elsőfokú rendszert vagy egytárolós tagot az törésponti körfrekvenciával is jellemezhetjük. Az átviteli karakterisztikát átrendezve írható, hogy
 
 
ahol . A törésponti frekvencia az összefüggéssel számítható.
Az átviteli karakterisztika felírható a
 
(II.135)
 
formában is, ahol és a rendszer amplitúdókarakterisztikája és fáziskarakterisztikája. Méréssel ezen két függvényt lehet felvenni néhány pontban, melyek segítségével a rendszer Nyquist-diagramja és Bode-diagramja felvázolható. A mérési eredmények birtokában a rendszer átviteli karakterisztikája pedig identifikálható.
A hálózat adatai ebben a vizsgálatban az alábbiak: , , azaz a töréspponti körfrekvencia, illetve törésponti frekvencia értéke , , s így a konkrét átviteli karakterisztika az alábbi:
 
 
A mérési összeállítást a II.18. ábra illusztrálja, ahol a bemeneti jel és a kisebb amplitúdójú kimeneti jel oszcilloszkóppal történő ellenőrzése is látható.
 
II.18. ábra. Az RC-kör mérése mikrovezérlővel, valamint a be- és kimeneti feszültségek időfüggvénye az oszcilloszkóp képernyőjén ().
 
II.19. ábra. A gerjesztőjel mintavételes előállítása.
 
A szinuszos gerjesztőjelet mintavételes formában állítjuk elő. A részletek megértését a II.19. ábra segíti. Itt a jel periódusideje , azaz a frekvencia . A jelet mintából építjük fel, amelyek időközönként követik egymást, ahol a mintavételi frekvenciát jelöli. Az ábrán látható, hogy a periódusidő és így a gerjesztőjel frekvenciája megadható az alábbiak szerint:
 
(II.136)
 
A gerjesztőjel frekvenciája tehát két adattal is befolyásolható, amely segíti a mikrovezérlő megszakításának paraméterezését (l. II.4. táblázat). A mintaprogramban ezt a megszakítás végzi.
A mérést megvalósító programhoz szükséges változók az alábbiak:
 
#define PWM 11 // PWM-jel a 11. digitális IO-n (Timer 2)
#define n 8 // a gerjesztőjel 8 bites (itt: szinuszos)
#define N 125 // Ngen (f=10Hz, fgen=1250Hz)
#define N1 50 // Nmér (fmér=500Hz)
#define p 2 // p periódus mentése
 
int u1[N]; // A szinuszos gerjesztőjel tárolása
float U1[N1*p]; // Mért bemenőfeszültség tárolása
float U2[N1*p]; // Mért kimenőfeszültség tárolása
 
unsigned int szamlalo, i;
 
A közölt programrészletek a II.4. táblázat utolsó sorának felelnek meg.
 
II.4. táblázat. A megszakítások beállításai az egyes mérésekhez.
[Hz]
presc.
OCR0A
presc.
OCR1A
0
,25
500
125
1024
124
40
10
64
24999
0
,5
250
125
1024
124
50
25
64
9999
1
125
125
1024
124
50
50
64
4999
2
125
250
256
249
50
100
64
2499
10
125
1250
256
49
50
500
64
499
 
Az Arduino UNO mikrovezérlő nem rendelkezik analóg kimenettel. Ebben a környezetben analóg jelet impulzusszélesség-modulációval (PWM) lehet előállítani. A példaprogramban a PWM-jel generálását a megszakítás felügyeli. A időközökben a gerjesztőjel kvantált értéke ismert. Ennek az értéknek megfelelő PWM-jel generálható a 11 jelű digitális kimeneten. A kimenet és a földpotenciál közé egy nagy kapacitású elektrolitkondenzátort kapcsolva kísérleteinkhez elég jól használható egyszerű jelgenerátor adódik (ez a kondenzátor itt kapacitású). Megjegyezzük, hogy a PWM-meghajtás helyett szükség esetén célszerű olyan mikrovezérlőt választani, amely rendelkezik analóg kimenettel (például Due, Zero stb.).
A bemenőjelet és a válaszjelet, azaz az és feszültségeket mintavételes formában mérjük, amit a megszakítás vezérel. Periódusonként számú mintát véve az mintavételezési frekvencia kiadódik, hiszen ha az frekvenciájú jelből mintát veszünk, akkor a mintavételezést
 
(II.137)
 
frekvenciával kell megvalósítani.
A fenti három inicializálása a függvényben történik:
 
// PWM-jel frekvenciájának beállítása maximális értékűre
TCCR2B = TCCR2B & 0b11111000 | 0x01;
 
cli();
// Jelgenerálás megszakításának beállítása
TCCR0A = 0;
TCCR0B = 0;
TCNT0 = 0;
OCR0A = 49;
TCCR0A |= (1 << WGM01);
TCCR0B |= (1 << CS02);
TIMSK0 |= (1 << OCIE0A);
 
// Mérés mintavételezésének beállítása
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 499;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS11) | (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
sei();
 
A szinuszos gerjesztőjel biten történő kvantálása az alábbi programsorokkal megvalósítható:
 
float q=1/(pow(2,n)-1);
for(int i=0;i<N;i++){
u1[i] = (int)round((0.5+0.5*sin(2*PI*(float)i/(float)N))/q);
}
 
A II.20. ábrán példaképp mutatjuk meg az így előálló, időben mintavételezett, értékében kvantált jelet. A kvantálás itt biten történt, azaz a PWM-csatornát meghajtó értékek a diszkrét értékeket vehetik csak fel. A jel egy lépcsős jel, az egyes lépcsőfokoknak megfelelő értékek ideig jelennek meg a kimeneten.
 
II.20. ábra. A kvantálással előállított szinuszos jel.
 
Felhívjuk a figyelmet, hogy a szinuszos jelet egy amplitúdónyi értékkel pozitív irányba eltoltuk. Így a jel csak pozitív értékeket vehet fel, amit az elektrolitkondenzátor alkalmazása mellett az is indokol, hogy a kimenet és között változhat. A jel középértéke és csúcsértéke tehát 2,5 V.
A kapcsolás által reprezentált rendszer azonban lineáris, így a kimenet is egy konstans érték és egy rászuperponálódó szinuszos jel összegeként áll elő. A konstans értéket itt egyszerűen figyelmen kívül hagyjuk. Megjegyezzük, hogy a válaszjel is csak pozitív értékeket vehet fel, ami a mérőcsatorna szempontjából lényeges, hiszen az is csak és közötti értékeket mér.
A kimenet definiálása és nullára való beállítása szintén a függvényben valósul meg: és , ahogy a következő változók inicializálása is: és . A soros port beállítása biztosítja a mérési adatok elérését.
A megszakítás vezényelte jelgenerálás függvénye a következő:
 
ISR (TIMER0_COMPA_vect){
analogWrite(PWM,u1[szamlalo]);
szamlalo++;
if (szamlalo==N){szamlalo=0;}
}
 
Ez a függvény az frekvenciának megfelelően a 11. kimenetre írja ki a II.20. ábrán látható jelsorozat mintáit. Az tömb csak egy periódusnyi értéket tárol, emiatt szükséges a változót nullázni, miután az eléri az értéket.
A megszakítás végzi a bemenőjel és a kimenőjel mérését. A mérés az periódusokban történik meg, hogy az esetleges tranziensek ne kerüljenek be a mérésekbe. Itt két periódus mérése valósul meg:
 
ISR (TIMER1_COMPA_vect){
if ((i>=5*N1) && (i<(5+p)*N1)){
U1[i-5*N1] = 5.0/1024.0*analogRead(A0)-2.5;
U2[i-5*N1] = 5.0/1024.0*analogRead(A1)-2.5;
}
i++;
}
 
A mérést követően a mért adatokat soros porton keresztül továbbítjuk a számítógép felé:
 
void loop(){
if (i==(5+p)*N1){
for (int j=0;j<N1*p;j++){
Serial.print(U1[j]); Serial.print(",");
Serial.print(U2[j]); Serial.print("\n");
}
}
}
 
A II.21. ábrán a átviteli karakterisztika Bode-féle ábrázolása látható, azaz külön a amplitúdókarakterisztika és külön a fáziskarakterisztika.
Megjegyezzük, hogy a 10 Hz-es gerjesztésnél mért jelek már használhatatlanok, a kisebb frekvencián történt vizsgálatok viszont megfelelőek. A nagyobb frekvencián történő mérésekhez nagyobb teljesítményű mikrovezérlő szükséges.
 
II.21. ábra. A számított átviteli karakterisztika Bode-diagramjának összehasonlítása a négy mérési eredménnyel.
 
Az amplitúdódiagram ábrázolásához szükség van a kimenőjel és a bemenőjel csúcsértékeinek a hányadosára, illetve ezen hányados logaritmusára:
 
(II.138)
 
A fázisdiagram ábrázolásához pedig a kimenőjel fázisának és a bemenőjel fázisának a különbségére van szükség:
 
(II.139)
 
Ezen műveleteket az elmondottaknak megfelelően a gerjesztőjel frekvenciájának változtatása mellett több frekvencián el kell végezni, s megkapjuk a diagramokat.
A csúcsértékek és a fázisok legegyszerűbben a Matlab függvényének meghívásával számíthatók:
 
U1 = fft(u1);
U2 = fft(u2);
[m1,i1] = max(abs(U1));
[m2,i2] = max(abs(U2));
K = 20*log10(m2/m1);
Fi = 180/pi*(phase(U2(i2))-phase(U1(i1)));
 
Az függvény a jel spektrumát állítja elő. Ideális esetben a vonalas spektrumban csak a gerjesztőjel frekvenciájának megfelelő érték lehet nullától különböző. A mérés azonban mindig tartalmaz zajt, emiatt célszerű az abszolút érték maximumát megkeresni, és abból a csúcsértékeket meghatározni, majd a hozzá tartozó fázisinformációt használni. A mérési eredményeket a II.5. táblázatban soroljuk fel, ezek az eredmények a II.21. ábrán is megtalálhatók. Az utolsó oszlopban a jelölésben a kiemeli, hogy mérési adatról van szó, ezt a következőkben használni fogjuk.
 
II.5. táblázat. A méréssel kapott értékek.
f [Hz]
[rad/s]
K() [dB]
K() [-]
() [fok]
0,25
1,57
-0,59
0,93
-19
0,8854 - j0,2969
0,5
3,14
-1,74
0,82
-34
0,6805 - j0,4545
1
6,28
-4,62
0,59
-53
0,3567 - j0,4672
2
12,57
-9,41
0,34
-68
0,1247 - j0,3148
 
 
Az átviteli karakterisztika fizikai értelmezését világítja meg a II.22. ábra, ahol három szinuszos jel látható. Ezek a jelek az RC-kör számított kimenőjelei három különböző frekvencián (, , ), miközben a gerjesztőjel amplitúdója mindhárom esetben egységnyi, kezdőfázisa pedig nulla. A periódusidő természetesen csökken, ahogy a frekvencia nő. A kimenőjel amplitúdója és kezdőfázisa frekvenciáról frekvenciára más és más értéket vesz fel. Ezt a frekvenciafüggést írja le a rendszert jellemző átviteli karakterisztika. Az 1 Hz és a 2 Hz gerjesztéshez tartozó bemeneti jelet és kimeneti jelet külön felrajzoljuk a II.23. ábrán, ahol a bemenőjel és a kimenőjel viszonya jól látható. Ezek a mérési eredményekből adódnak. A mért és az átviteli karakterisztikából számított eredmények összevetése a II.5. táblázatban látható. Az adatok birtokában a II.22. ábrán az alábbi időfüggvények láthatók:
 
 
A számításokat a követkető Matlab utasításokkal lehet végrehajtani, például esetében:
 
w = 2*pi*0.5;
W = 1/(1+j*w*10e3*22e-6)
abs(W)
phase(W)*180/pi
 
II.23. ábra. A bemenőjel és a kimenőjel alakulása 1 Hz és 2 Hz gerjesztőjel mellett.
 

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