Kuczmann Miklós

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


IV.2.3. A vizsgálatokat vezérlő program kerete

A méréseket a következő keretprogram segítségével végeztük el, amelynek részleteit a későbbiekben adjuk meg lépésről lépésre.
A függvényben megadjuk a soros adatátvitel sebességét, inicializáljuk a távolságmérő szenzort és vízszintes helyzetbe állítjuk a rudat. A szervomotort a 9-edik digitális kimenethez csatlakoztatjuk, amely egyben a motor PWM-gerjesztésére is alkalmas (PWM – pulse width modulation, impulzusszélesség-moduláció). A vízszintes helyzet a szervomotoron, annak behelyezése miatt, itt -nak felel meg. A -os mozgatás segítségével a pingponglabda előbb a szenzorhoz gurul, ami a labda kiindulási állapota.
A függvényben valósul meg a rendszer vizsgálata és a szabályozási hurok is. Itt a távolságmérést követően hibát számolunk, majd a szabályozási algoritmus segítségével meghatározzuk a típusú beavatkozó jelet, amit a függvény segítségével a motorra adunk. Bizonyos, később részletezett változókat ezután felül kell írni, a szabályozás szempontjából érdekes változókat pedig el kell menteni a soros porton keresztül.
 
#include "Adafruit_VL53L0X.h"
#include <Servo.h>
 
// 0.) Szükséges változók definiálása
Servo myservo;
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
float u = 0;
 
void setup() {
Serial.begin(115200);
 
if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1);}
 
myservo.attach(9);
myservo.write(65); delay(1000);
myservo.write(83); delay(2000);
}
 
void loop() {
VL53L0X_RangingMeasurementData_t measure;
 
lox.rangingTest(&measure, false);
 
if (measure.RangeStatus != 4) {
// 1.) Mérés
// 2.) Hibaszámítás
// 3.) Beavatkozó jel számítása
 
// 4.) Beavatkozás
myservo.write((int)(83.0-u*180.0/3.1415));
 
// 5.) Változók felülírása és soros porton történő továbbítása
} else {
Serial.println(" out of range ");
}
}
 
A távolságmérés, a mért érték korrekciója és a hibaszámítás a következő programrészlettel történik:
 
r1 = measure.RangeMilliMeter+20.00; // a labda sugara 20mm
if (r1>100) {r1=r1-(p1*pow(r1,3) + p2*pow(r1,2) + p3*r1 + p4);}
r = (r1+r1_old)/2.0;
r1_old = r1;
 
float error = Ref - r/1000.0;
 
A labda távolsága alatt a labda középpontjának szenzortól mért távolságát értjük (IV.28. ábra). A szenzor azonban a labda felületének távolságát méri, emiatt a mért távolságértékhez hozzá kell adni a labda sugarát. A mért értéket jelöli. A korrekciót követő átlagoló művelet egy egyszerű zajszűrés, el is hagyható a kódban. Az hiba aztán a referencia és az mért érték különbsége. A bevezetett változók és paraméterek ként definiálhatók a program elején.
Az szabályozójel számítását a későbbiekben részletezzük. Azt viszont kiemeljük, hogy a szabályozó kimenete, azaz a szakasz bemenete radiánban értendő. A megvalósítás során fokban, egész értékre kerekített szögelfordulást kell megadni.
A szükséges változók értéke soros porton keresztül elérhető. Az alábbi programrészlet például a referenciajel és a mért távolság értékét küldi a soros portra:
 
Serial.print(Ref*1000); Serial.print(",");
Serial.print(r); Serial.print("\n");
 

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