Kuczmann Miklós

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


II.6.3. Kéttárolós RC-hálózat

Egyszerűen realizálható kéttárolós rendszer építhető fel két összekapcsolat RC-kör segítségével, ahogy az a II.28. ábrán látható. A rendszer gerjesztése az feszültség, kimenete pedig a kondenzátor feszültsége, . Az ábrán bejelöltük az állapotváltozók referenciairányát is: , és ().
 
II.28. ábra. Soros RC-körökből felépített kéttárolós rendszer.
 
A hálózati egyenletek például a csomóponti potenciálok módszerével írhatók fel. Az ábrán feltüntettük a használni kívánt potenciálokat. Az alsó csomópont a földpotenciál, . Ehhez képest a felső csomópontok potenciálja sorban: , és . Utóbbi két csomópontra az alábbi csomóponti egyenletek írhatók fel a jelzett referenciairányok mellett:
 
 
Rendezést követően az alábbi állapottérmodell írható fel:
 
(II.150)
 
ami mátrixos írásmódban az alábbi:
 
(II.151)
 
Az
 
 
felírásban
 
 
Az itt felépített villamos hálózati modell adatai az alábbiak: , .
A rendszer átviteli függvényének felírásához Laplace-transzformáljuk a (II.150) differenciálegyenleteket, de használjuk az és egyszerűsítő jelöléseket:
 
 
ahol , , jelöli a transzformált változókat. A rendszer bemenete , kimenete . Az egyenleteket rendezve kapjuk a átviteli függvényt:
 
(II.152)
 
Matlab környezetben SI-egységben definiálva írhatjuk, hogy:
 
R1 = 5100; R2 = 5100;
C1 = 100e-6; C2 = 100e-6;
 
Az általános rendszermodellt az alábbiak szerint kell definiálni:
 
A = [-(R1+R2)/(R1*R2*C1) 1/(R2*C1); 1/(R2*C2) -1/(R2*C2)];
b = [1/(R1*C1); 0];
c = [0 1];
D = 0;
 
[sz,n] = ss2tf(A,b,c,D);
WP = tf(sz,n);
 
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. Az átviteli függvényt jelöli, amely a függvény segítségével adható meg, konkrétan az alábbi:
 
 
A nevező polinomjának a gyökeit utasítással kaphatjuk meg, melynek eredménye a pólusokkal felírt szorzat alak (, ). Az időállandókat a függvénnyel tudjuk meghatározni: a lomhább, a gyorsabb időállandó. A függvény segítségével sorrend áll elő, ahogy .
Ezt a szakaszmodellt a következő fejezetben illusztráció céljából használni fogjuk, ezért emeljük ki a P index jelölést.
A rendszer mátrixának sajátértékei az utasítással számíthatók: , . Ezek megegyeznek a rendszer pólusaival, hiszen az átviteli függvény felírásakor nem történt pólus-zérus kiejtés.
A rendszer a II.29. ábrán látható ugrásválasz szerint meglehetősen lomha, a stacionárius állapot kb. után áll be (). A mérést Arduino környezetben végeztük el, a modell kimenetét pedig a Matlab utasítás adja.
Ugyanez az eredmény érhető el, ha a rendszer állapotváltozós leírását az függvénnyel definiáljuk:
 
Rendszer=ss(A,b,c,D);
step(Rendszer);
impulse(Rendszer);
 
Utóbbi függvény az impulzusválaszt rajzolja fel.
 
II.29. ábra. A szakasz számított és mért ugrásválasza.
 
Az impulzusválasz analitikusan a utasítás segítségével könnyen számítható:
 
[r,p,k]=residue(sz,n)
 
ahonnan és , azaz
 
 
az időfüggvény pedig
 
 
Az ugrásválasz analitikus, képletszerű alakja a következő módon határozható meg. Elsőként a utasítással részlettörtekre bontjuk az alábbi Laplace-transzformáltat:
 
 
Az adatok a következőképp adódnak:
 
[r,p,k]=residue(sz,conv([1 0],n))
 
ahonnan és . Az időfüggvény végül
 
 
Ez az időfüggvény látható a II.29. ábrán.
A mérést megvalósító program az alábbiak szerint egyszerű felépítésű. A kondenzátor feszültségét az idő függvényében a soros porton keresztül nyert adatok birtokában ( és ) rajzoltuk fel, a kiírás sebessége . A időpillanatot a függvényben mérjük, a a függvényben áll elő, a mérés megkezdése előtti pillanatban.
Az gerjesztőfeszültséget a 3-as jelű kimeneten adjuk a rendszerre, ami itt 1 V. Ez a feszültség PWM-jelként áll elő, melynek frekvenciáját maximális értékűre állítjuk be a változón keresztül. A függvényben a kimeneti feszültséget tíz másodpercig 0 V értékűre állítjuk be, mialatt mindkét kondenzátor biztosan energiamentes állapotba kerül. A program az alábbi:
 
unsigned long t0, t1;
 
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
TCCR2B = TCCR2B & 0b11111000 | 0x01;
analogWrite(3, 0.0);
delay(10000);
t0 = micros();
}
 
void loop() {
t1 = micros();
 
analogWrite(3, (int)(1.0/5.0*255));
 
float uc2 = (5.0/1024.0)*analogRead(A1);
Serial.print(t1-t0); Serial.print(',');
Serial.print(uc2); Serial.print('\n');
}
 
Itt is megjegyezzük, hogy a PWM-meghajtás helyett célszerű lehet olyan mikrovezérlőt választani, amely rendelkezik analóg kimenettel (például Due, Zero stb.), ha az alkalmazás úgy kívánja.
 

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