Kuczmann Miklós

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


IV.1.7.2. A folytonos idejű PID-szabályozók mintavételes realizálása.

A PID-szabályozók mintavételes realizálása különböző közelítésekkel történhet. Az egységugrás-ekvivalens átalakítás mellett itt csak a feltétel nélkül stabil hátratartó differenciasémát, a jobb oldali téglalapszabályt, illetve a Tustin-képletet használjuk. Két minta közt eltelt időt jelöli, amelynek mérése a függvény elején történik:
 
unsigned long t1 = micros();
float dt = (t1-tk)/1e6;
tk = t1;
 
és a inicializálása a függvényben történik: .
A P-szabályozó konstans erősítése mintavételes megvalósítás esetén természetesen megegyezik a folytonos idejű szabályozó erősítésével. Az Arduino programban egyszerűen:
 
float KP=0.175;
u = KP*error;
 
A PI-szabályozó átviteli függvényében az változót -re cserélve,
 
 
rövid átalakítást követően a következő differenciaegyenletet kapjuk:
 
(IV.32)
 
A mikrovezérlőben ez a következőképp néz ki:
 
float KPI=0.084, TI=0.159;
u = u_old+KPI*(1+dt/TI)*error-KPI*error_old;
 
Az és típusú változók frissítését számítása után kell megtenni:
 
error_old = error;
u_old = u;
 
Az Tustin-képlettel a következő differenciaegyenlet nyerhető:
 
(IV.33)
 
míg az egységugrás-ekvivalens átalakítás a következő differenciaegyenletet adja:
 
(IV.34)
 
A fenti két beavatkozó jel meghatározása Arduino kódban a következőképp alakul:
 
u = u_old+KPI*(1+dt/2.0/TI)*error-KPI*(1-dt/2.0/TI)*error_old;
u = u_old+KPI*error-KPI*(1-dt/TI)*error_old;
 
Összefoglalva, mindhárom felírásban az beavatkozó jel -adik ütembeli értéke az hibajel -adik, illetve a hibajel és a beavatkozó jel -edik ütembeli értéke ismeretében iteratíve számítható. A megvalósító program, ahogy láttuk, mindhárom esetben azonos, de az egyes értékeket más súlyokkal kell figyelembe venni.
 
A PI-szabályozó az
 
 
definíciós összefüggés alábbi egyszerű közelítése szerint is realizálható:
 
(IV.35)
 
azaz
 
interror = interror + error*dt;
u = KPI*error+KPI/TI*interror;
 
természetesen a típusú változó értéke nulláról indul.
A PD-szabályozó kimenete az , az helyettesítésekkel, valamint az egységugrás-ekvivalens átalakítással rendre a következő összefüggésekkel közelíthető:
(IV.36)
 
(IV.37)
 
s végül helyettesítéssel
 
(IV.38)
 
Ezekben a felírásokban is az beavatkozó jel -adik ütembeli értéke az hibajel -adik, illetve a hibajel és a beavatkozó jel -edik ütembeli értéke ismeretében iteratíve számítható.
A PD-szabályozó az
 
 
definíciós összefüggés alábbi egyszerű közelítése szerint is realizálható:
 
(IV.39)
 
A fenti négy közelítés implementálása sorrendben az alábbiak szerint történhet:
 
float KPD=0.261, TD=0.038, TDv=TD/2;
u = TDv/(dt+TDv)*u_old+KPD*(dt+TD)/(dt+TDv)*error-
KPD*TD/(dt+TDv)*error_old;
u = -(dt-2*TDv)/(dt+2*TDv)*u_old+KPD*(dt+2*TD)/(dt+2*TDv)*error+
KPD*(dt-2*TD)/(dt+2*TDv)*error_old;
float q = exp(-dt/TDv);
u = q*u_old+KPD*TD/TDv*error+KPD*(1-q-TD/TDv)*error_old;
u = KPD*error+KPD*TD*(error-error_old)/dt;
 
A PID-szabályozó közelítő beavatkozó jele a differenciaséma és Tustin-képlettel az alábbi:
 
(IV.40)
 
illetve
 
(IV.41)
 
amiket a következőképp lehet implementálni:
 
u = (dt+2*TDv)/(dt+TDv)*u_old-TDv/(dt+TDv)*u_old2+
KPID*((dt+TD)*(dt+TI)/TI/(dt+TDv)*error-
(dt*(TD+TI)+2*TI*TD)/TI/(dt+TDv)*error_old+
TD/(dt+TDv)*error_old2);
u = 4*TDv/(dt+2*TDv)*u_old+
(dt-2*TDv)/(dt+2*TDv)*u_old2+
KPID*((dt+2*TD)*(dt+2*TI)/2/TI/(dt+2*TDv)*error+
(dt*dt-4*TI*TD)/TI/(dt+2*TDv)*error_old+
(dt-2*TD)*(dt-2*TI)/2/TI/(dt+2*TDv)*error_old2);
 
Itt , továbbá
 
error_old2 = error_old;
u_old2 = u_old;
error_old = error;
u_old = u;
 
adja a változók frissítését.
A PID-szabályozót más közelítő formulával itt nem vizsgáljuk.
Hangsúlyozzuk, hogy a közölt közelítő képletek ennél a feladatnál praktikusan egyező eredményeket szolgáltatnak.
Vizsgáljuk meg most a fentiek alapján tervezett és mikrovezérlőben implementált szabályozók viselkedését.
Az alábbi referenciajel három ugrás jellegű alapjelváltozást és egy lineárisan változó alapjelszakaszt tartalmaz, amivel a zárt szabályozási körök viselkedése jól tanulmányozható:
 
 
A P-szabályozó alapjelkövetése és fázistartalék mellett a IV.18. ábrán látható. A mért jel zajjal terhelt, így könnyen felismerhető a szimulált, zaj nélküli görbék mellett. A mérési és a szimulációs eredmények kiváló egyezést mutatnak. A nagyobb fázistartalék esetében a szabályozó erősítése , a kisebb esetben pedig , azaz a körerősítés szerint és . Ebből a statikus hiba számítható szerint, ami , illetve . A mért és számított statikus hibák három tizedesre egyeznek. Jól látható, hogy a körerősítés növelésével, vagyis a fázistartalék csökkentésével a statikus hiba csökken, de a tranziensben a túllövés nő. A túllövés a körerősítés csökkentésével csökkenthető, de ekkor a statikus hiba nő. Jól érzékelhető, hogy a statikus hiba és a túllövés csökkentése egymásnak ellentmondó igények. A lineárisan csökkenő szakaszon a két görbe nem párhuzamos, a hiba minden határon túl nő, hiszen a kör típusszáma , habár a körerősítés növelésével a hiba látszólag kisebb (a vizsgált időintervallumon). Megállapítható, hogy tisztán proporcionális szabályozóval a feladat nem oldható meg kielégítően.
 
IV.18. ábra. A P-szabályozóval felépített szabályozási kör alapjelkövetése és fázistartalék mellett.
 
IV.19. ábra. A PI-szabályozóval felépített szabályozási kör alapjelkövetése fázistartalék mellett.
 
IV.20. ábra. A PD-szabályozóval felépített szabályozási kör alapjelkövetése fázistartalék mellett.
 
A PI-szabályozó alapjelkövetése fázistartalék mellett a IV.19. ábrán látható. A mért és a szimulált eredmények itt is kiváló egyezést mutatnak. Tranziensben kis túllövés tapasztalható, ami a erősítés csökkentésével, vagyis a fázistartalék növelésével csökkenthető, ebben a feladatban a túllövés fázistartalék mellett gyakorlatilag eltűnik (ekkor ). Stacionárius állapotban a hiba zérus, az integráló tag ugyanis -re növeli a típusszámot, a lineárisan csökkenő szakaszon pedig a fordulatszám konstans hibával követi az alapjelet. Elmondható, hogy a PI-szabályozó jó választás a feladat megoldására.
A PD-szabályozó alapjelkövetése fázistartalék mellett a IV.20. ábrán látható, a mért és a szimulált eredmények jó egyezést mutatnak. A szabályozási kör stacionárius állapotbeli viselkedése jellegben megegyezik a P-szabályozó viselkedésével. A rendszer a beavatkozó szerv telítése miatt számottevően nem gyorsítható, a tervezett szabályozó beavatkozó jele esetenként sokszorosa a PWM-gerjesztőjel 250 értékű felső határának, miáltal a valós rendszeren a gyorsítás nem következik be. Mindez jól megfigyelhető a és a időpillanatbeli ugrásoknál. A szimulált fordulatszámnak itt túllövése van, a mért fordulatszám viszont túllövés nélkül áll be, és a felfutás elmarad az elméleti eredménytől. A differenciáló ág hatására a beavatkozó jel a hibajel változására széles tartományban, előnytelenül, hirtelen változással reagál, rángatja az erősítő bemenetét. A PD-szabályozót a fentiek miatt ebben az alkalmazásban nem célszerű alkalmazni.
A PID-szabályozó eredményét külön nem tárgyaljuk, a PI-szabályozó eredményéhez nagyon hasonlót kapunk.
A mintavételi periódusidő beállítására az alábbi ökölszabály áll rendelkezésünkre: , ahol a fázistöbbletromlás értéke legyen maximálisan . A IV.3. táblázat alapján kiadódó mintavételi periódusidő , , , és az egyes szabályozókra.
A mikrovezérlő függvényét egyszerűen futtatva az előálló mintavételi periódusidő (pontosabban itt ) ennél az implementációnál átlagosan 10–20 ms körüli, ami nagyjából 100 Hz-es, 50 Hz-es mintavételi frekvenciának felel meg, attól függően, hogy a soros porton mennyi adatot továbbítunk. Láthattuk azonban, hogy a szabályozók kielégítően működnek, az elméleti eredményekhez nagyon közel. Legnagyobb eltérés a számított és a mért tranziensben a PD-szabályozónál volt tapasztalható. A soros porton történő adatáramlás jelentősen lassítja a ciklust.
 

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