Documente Academic
Documente Profesional
Documente Cultură
de Reacțiune
Autor: Supervizori:
Valentin Preda Prof. univ. dr. ing. Dumitru Popescu
As. dr. ing. Valentin Tanasă
Teză de disertație
Iulie 2013
Cuprins
Cuprins.................................................................................................................................. 1
Introducere ............................................................................................................................ 3
1.1 Context și motivație ................................................................................................. 3
1.2 Organizarea tezei ..................................................................................................... 4
Problematica pendulului invers.............................................................................................. 5
2.1 Introducere .............................................................................................................. 5
2.2 Dinamica unui pendulul simplu ............................................................................... 5
2.3 Importanța pendulului simplu în teoria sistemelor automate ..................................... 8
2.4 Dispozitive experimentale pendulare ...................................................................... 10
Modelarea matematică ......................................................................................................... 12
3.1 Conversia unghiurilor ............................................................................................. 12
3.2 Ecuațiile lui Lagrange ............................................................................................. 13
3.3 Ecuațiile de mișcare ................................................................................................ 13
3.4 Simularea în Simulink a sistemului neliniar ............................................................ 16
3.5 Măsurarea cuplului constant ............................................................................ 17
3.6 Măsurarea momentului interțial al pendulului ....................................................... 17
3.7 Măsurarea momentului interțial al roții de reacțiune ........................................... 18
3.8 Relația dintre semnalul de ieșire PWM și tensiunea pe motor .................................18
3.9 Determinarea funcției de transfer a motorului ......................................................... 19
Stabilizarea pendulului invers ............................................................................................... 20
4.1 Analiză preliminară a sistemul de control ............................................................... 20
4.2 Controlabilitate ....................................................................................................... 21
4.3 Control cu reacție după stare ................................................................................... 22
4.4 Controller LQR ....................................................................................................... 22
4.5 Simulare Simulink a sistemului de stabilizare ......................................................... 23
Mecanismul de Swingup....................................................................................................... 25
5.1 Control neliniar....................................................................................................... 25
5.2 Puncte de echilibru și stabilitate .............................................................................. 25
2 Cuprins
Capitolul 1
Introducere
Motorul și greutatea atașată nu pot dezvoltata suficient cuplu pentru a ridica pendulul direct
în poziție verticală iar din acest motiv energia trebuie acumulată prin mai multe oscilații.
Un model matematic al acestui sistem a fost dedus pe baza legilor fizice și prin diverse teste
și măsurători. Modelul a fost verificat prin simularea unei referințe de tip treaptă și
compararea răspunsului cu instalația reala.
Un sistem de control hibrid a fost implementat ce comută între două stări în funcție de poziția
pendulului: o stare de swingup prin care se aduce pendulul până în poziția verticală și o stare
de stabilizare prin care se menține pendulul în această poziție.
Pentru faza de swingup a fost folosit un algoritm de control al energiei pentru a asigura că
pendulul ajunge în starea verticală cu o viteza unghiulară redusă atât a pendulului cât și a
rotorului.
Legea de control folosită pentru stabilizare este una de reglare după stare, calculată pe baza
modelului matematic în timp continuu. Aceast regulator functionează corect atâta timp cât
perioada de eșantionare este de cel puțin 15 ori mai mare decât frecvența naturală de oscilație
a sistemului.
4 Introducere
Cu excepția capitolului introductiv teza este organizată în patru capitole după cum urmează:
Capitolul 2
În acest capitol este descrisă problematica pendulului invers. O scurtă descriere matematica
precum și importanța practică sunt prezentate. Sunt ilustrate deasemenea și diversele tipuri de
echipamente de tip pendul invers ce au fost dezvoltate pe parcursul istoriei pentru a studia
această problemă.
Capitolul 3
Acest capitol este dedicat modelării matematice a pendulului invers cu roată de reacțiune.
Plecând de la ecuațiile lui Lagrange, este dedus un set de ecuații diferențiale nelinare ce
aproximează modelul real. Tot în acest capitol sunt prezentate diversele experimente și
măsurători utilizate pentru a determina parametrii acestui model matematic.
Capitolul 4
Capitolul 5
În acest capitol sunt ilustrate concepte de bază din teoria sistemelor neliniare precum: puncte
de echilibru, stabilitate, liniarizare sau pasivitate. Utilizând aceste concepte o lege de reglare
neliniară este proiectate pentru a aduce pendulul în poziție verticală.
Capitolul 6
Capitolul 2
Problematica pendulului invers
2.1 Introducere
Pendulul este unul dintre cele mai importante exemple din controlul sistemelor dinamice și a
fost studiat în profunzime încă din vremea lui Galileo. De fapt, experimentele efectuate de
Galileo, studiind mișcările pendulului au ridicat importante probleme în mecanică, ce au fost
rezolvate odată cu formularea legilor de mișcare ale lui Newton. Experimentele lui Galileo au
subliniat faptul că un pendul ce inițial se ridică la o înălțime aproximativ egală cu cea de la
care a fost eliberat, ajunge într-un final în stare de repaos. Un pendul de masă mai mică va
ajunge în starea de repaos mai repede decat unul de masă mai mare. Tot Galileo a descoperit
și faptul că perioada de oscilație este independentă de masa suspendată și aproape
independentă de amplitudine. Toate aceste proprietăți pot fi deduse din ecuațiile lui Newton
după cum urmează.
̈ in (2.2.1)
Se poate observa ca ecuația de mai sus este neliniară datorită termenului in . Dacă
aproximăm in cu , această aproximație fiind bună pentru valori mici ale unghiului ,
obținem următorul sistem liniar:
̈ (2.2.2)
6 Problematica pendulului invers
unde am definit prin . Ecuatia (2.2.2) este numita oscillator armonic simplu . Se
poate verifica prin ub tituție directă ca ecuația de mai u are următoarea oluție
generală:
( ) co ( ) in( ) (2.2.3)
̇( ) co ( ) in( ) (2.2.4)
( ) ̇ ( ) (2.2.5)
Pentru a înțelege mai bine acest portret al fazelor introducem urmatoarea funcție scalară
̇ ( co ( )) (2.2.6)
Funcția din relația (2.2.6) este defapt proportional cu energia totală a sistemului compusă
din energie cinetică și energie potential. Rata de modificare a funcției este dată de derivata
acesteia
8 Problematica pendulului invers
Funcția ̇ pt soluții ale ecuației de mișcare ale pendului simplu. Asta înseamnă ca funcția
este constantă pe traiectoriile soluțiilor. Cu alte cuvinte curbele de nivel ale funcției
corespund cu traiectoriile de mișcare.
În biomecanică, pendulul este adesea folosit pentru a modela mersul biped. În Fig. 2.3.2 este
ilustat robotul umanoid Asimo produs de Honda. În modelarea roboților bipezi, piciorul cu
greutate este adesea asemănat cu un pendul invers în timp ce piciorul liber se comportă ca un
pendul suspendat de șold. Din studiile efectuate asupra dinamicii posturuii și locomoției
umane s-au găsit numeroase asemănări cu dinamica unui pendul. Măsurători ale activității
musuclare în timpul mersului indică faptul ca mușchii piciorului sunt activi in principal la
începutul pasului după care se opresc pentru a permite piciorului să se comporte ca un
Problematica pendulului invers 9
pendul. Aceasta mișcare pendulară este exploată în mod natural pentru a crește eficiența
mersului biped.
Transportatorul uman Segway, afișat în Figura 2.3.3, reprezintă o invenție recentă ce s-a
bucurat de succes comercial. Segway-ul este de fapt un pendul invers controlat. Folosind
datele de la senzorii giroscopici montati la baza dispozitivului, un sistem de control
computerizat metinține starea de echilibru vertical în timp ce un om navighează cu aceasta. În
partea dreaptă a Figurii 2.3.3 este prezentat un robot autonom similar cu Segway ce se poate
echilibra și deplasa fara intervenție umană. Acest tip de robot a fost construit de numeroase
laboratoare de cercetare pentru a investiga divese probleme stiintifice din teoria sistemelor,
navigare autonomă, coordonare de grup, etc.
Alte probleme de inginerie în care problema pendulului invers este întălnită e cea de
stabilizare de nave, controlul mișcării lichidelor într-un rezervor.
Studiul acestei probleme reprezintă așadar un punct de start excelent în înțelegerea diverselor
particularități ale controlul dinamicii neliniare.
10 Problematica pendulului invers
Capitolul 3
Modelarea matematică
Primul pas în proiectarea oricarui sistem de control îl reprezintă dezvoltarea unui model
matematic al sistemului controlat. În această secțiune, sunt deduse modele matematice alte
Pendulului Invers cu Roată de Reacțiune pe baza principiilor fizice. Experimente ulterioare
sunt efectuate pentru a valida aceste modele și pentru a determina parametri. Un model
neliniar este dedus folosind o abordare Langrangiană. Acest model este apoi liniarizat iar
modelul liniar este folosit pentru dezvoltarea unei strategii de control. Modelul neliniar este
ulterior folosit pentru proiectarea unei comenzi nelinare avansate pentru problema de
swingup.
la zero la începutul oricărui experiment. Pendulul are atașat la mijloc unul dintre cei doi
encoderi. Acesta întoarce așadar o măsură a unghiului relativ dintre pendul și baza fixă.
Celălalt encoder este atașat printr-un sistem de roți dințate la axul motorului, furnizând astfel
informații despre unghiul relativ dintre pendul și masa inerțială rotită de motor.
Într-un sistem multi-corp, energia cinetică și cea potențială pot fi calculate pentru fiecare corp
separat iar ulterior adunate pentru a forma energia întregului sistem. Acesta este un important
avantaj al metodei lui Lagrange și funcționeaza deorecere energia este o funcție scalară și una
vectorială.
( ̇
) (3.2.1)
Variabila reprezintă forța generalizată (forță sau cuplu) în direcția . Aceste ecuații se
numesc Ecuațiile lui Lagrange. Pentru clasa de sisteme considerate în această lucrare,
ecuațiile lui Lagrange sunt echivalente cu cele deduse folosind legea a doua a lui Newton.
Pendulul cu roată de reacțiune are doua grade de libertate iar unghiurile și (Fig.3.3.1) ale
pendului pot fi considerate coordonate generalizate.
14 Modelarea matematică
= masa pendulului
= masa rotorului
masa totala a pendului și rotorului
momentul inerțial al pendulului în jurul centrului de masă
momentul inerțial al rotorului în jurul centrului de masă
distanța de la pivot la centrul de masă al pivotului
distanța de la pivot la centrul de masă al rotorului
distanța de la pivot la centrul de masă al pendului și rotorului
Energia cinetică T, a sistemului este suma dintre energia cinetică a pendulului și energia
cinetică a rotorului și poate fi scrisă în funcție de acești termeni sub următoarea formă:
̇ ̇ (3.3.1)
Considerăm că energia potențială, V, a sistemului este doar cea datorată gravitației. Efectele
elasticității axului motorului sunt neglijabile. Așadar, energia potențială este:
( co ) (3.3.2)
unde am ales să definim energia potențială ca fiind zero atunci când pendulul este in echilibru
stabil în poziția de jos. Este interesant de punctat faptul că energia potențială nu depinde de
poziția rotorului deorece masa este distribuită simetric față de axa de rotație.
̇ ̇ (co ) (3.3.3)
̇ in ̇
̇ ̇
În cazul pendulului invers, cuplul produs de motor rezultă rezultă într-un cuplu aplicat
rotorului și – aplicat pendulului. Acestea sunt doua forțe generalizate ce acționează în
direcțiile și .
Neglijând forțele de frecare, dinamica motorului de curent continuu este dată de urmatoarele
relații:
Modelarea matematică 15
{ ̇ (3.3.4)
tensiunea de pe motor
inductața motorului
̈ in ̇
̈ ̇
{
(3.3.5)
̇ (3.3.6)
g m m
Momentului inerțial poate fi calculat folosind ecuația pendului, fară forțe de frecare sau
cu motor activ, liniarizată în punctul de echilibru inferior.
̈ (3.6.1)
18 Modelarea matematică
(3.6.2)
( )
Unde este perioada de oscilație pentru amplitudini mici, măsurata a fi: 1.6s. După înlocuiri
numerice gasim urmatoarea valoare a momentului interțial:
gm
(3.7.1)
Interția rotorului din motorul de curent continuu trebuie adaugată pentru a deduce interția
totală.
(3.7.2)
g m gm
Rezultă astfel:
gm
Punctele din Fig. 3.8.1 reprezintă măsuratori ale tensiunii pe motor pentru diverse semnale
PWM [ ].
Modelarea matematică 19
150
100
50
-50
-100
-150
-10 -8 -6 -4 -2 0 2 4 6 8 10
250
200
K
150
100
50
0
320 340 360 380 400 420 440 460
T
(3.9.1)
Capitoul 4
Stabilizarea pendulului invers
În cazul de față, sistemul este în timp continuu iar controllerul implementat trebuie să fie în
timp discret deoarece este bazat pe eșantionari ale ieșirilor sistemului. Sistemul de control
poate fi reprezentat folosind diagrama din Figura … .
Semnalul de intrare este tensiunea v iar ieșirea sistemului este . Eșantionarile ieșirii y sunt
efectuate uniform cu frecvența ⁄ . În bulca de control, controllerul calculează un semnal de
comandă discret [ ] folosind ieșirea discretă până la [ ]. În final un semal continuu ( )
este generat folosind un bloc de tip zero-order-hold aplicat semnalului discret [ ].
Proces
( ) ̇ ( ) ( )
Zero-order
( ̇ ̇ ) Eșantionare
hold
Controller
[ ]
[ ]
După liniarizarea în poziția inversă ecuațiile de mișcare ale pendului sunt date de:
̈ ( )
{ (4.1.1)
̈ ( )
Acest model este unul în care dinamica motorului este negijată iar forța de frecare este F.
̇ ̇
Neglijând forțele de frecare și introducând această lege în ecuația (4.1) obținem următoarea
expresie pentru sistemul în buclă închisă:
̈ ̇ ( )
( )
̇ (4.1.2)
Acest controller nu poate totuși stabiliza pendulul în cazul unor perturbații d ce ar acționa ca
un cuplu auxiliar asupra pendulului în starea de echilibru. Regulatorul ar încerca compensarea
acestui cuplui printr-o accelerație constantă a motorului. Această accelerație nu este însă
sustenabilă în realitate iar motorul intra repede în saturație atingând turația maximă.
4.2 Controlabilitate
Pentru a evita saturația motorului, este necesar ca atât poziția unghiulară a pendulului cât și
turația rotorului să fie simulan controlate. O primă problemă este dacă acest lucru este posibil
folosind doar o singura variabilă de control. Pentru a răspunde la acestă întrebare,
controlabilitatea sistemului trebuie evaluată.
( ) ( ) (4.2.1)
22 Stabilizarea pendulului invers
[ ] * + (4.2.2)
Deorece acestă matrice are rangul trei, rezultă ca sistemul este controlabil iar acesta poate fi
adus în orice stare folosind o singură varibilă de intrare.
̇ ̇ ̇ ( ̇ ̇ ) (4.3.1)
Introducând această expresie în modelul dat de ecuațiile (4.1) obținem următorul sistem în
buclă închisă:
̈ ̇ ( ) ̇ ̇ ̇ ̇
{ (4.3.2)
( ̇ ) ̈ ̇ ̇ ̇ ̇
( ) ( ̇ ̇ ) ( ) ̇
( )( ) ( ) ( )
Prin egalarea coeficienților celor doua polinoame obținem următoarele valori ale
parametrilor:
( ) ( )
̇ ̇
( ) ( )
Prin identificare experimentală au fost deduse următoarele valori după înlocuiri numerice :
( ) ( )
O altă metodă prin care se pot afla coeficienții ( ̇ ̇ ) pentru o performață optimă este
de a folosi un controller de tip LQR. Această lege de control este obținută prin minimizarea
unei funcții de cost ponderate folosind matriciele Q, R și N:
( ) ∫ ( ) (4.4.1)
( )
Prin această dimensionare a matricei Q , o importanță mai mare este acordată variabilelor de
stare și ̇ . Coeficientul R reprezintă doar un factor de scalare și a fost setat cu valoarea 100
pentru a evita o tensiune de comanda u prea mare ce ar putea satura. Valoarea lui N a fost
setată pe zero deoarece corelația dintre x și u a fost neglijată.
cu (4.4.2)
̇ ̇
Capitoul 5
Mecanismul de Swingup
̇ ( ) ( )
(5.2.1)
( )
Definiția 5.2.1.
Un punct de echilbiru sau un punct fix al sistemului ̇ ( ) este un vector ̅ astfel încât
( ̅) .
Exemplu:
̈ in (5.2.2)
( ) ( ̇)
Sistemul de ordin doi este echivalent cu doua ecuații diferențiale de ordin întâi:
̇
in
Așadar, soluțiile de echilibru sunt cele pentru care viteza inițială este zero iar pendulul este
fie în poziția de jos (pentru n par) sau în poziția de sus, inversată (pentru n impar).
Problema de stabilitate constă în analiza soluțiilor sistemului pentru condiții inițiale departe
de echilibru. Intuitiv, un punct de echilibru este numit stabil dacă pentru condiții inițiale
aproape de echilibru, soluțiile rămân aproape de acest punct. Un astfel de punct de echilibru
stabil este și cel în care pendulul este în poziția de jos. Similar, un punct de echilibru este
instabil dacă traiectoriile sunt divergente în jurul punctului de echilibru, cum este cazul în
care pendulul este în poziția de sus.
Mecanismul de Swingup 27
Punctul de echilibru ̅ este stabil (în sens Lyapunov) la dacă pentru orice există
( ) astfel încât
‖ ( )‖ ‖ ( )‖ (5.2.3)
2. ‖ ( )‖ lim ‖ ( )‖
( ) ‖ ( )‖ ( )
(5.2.5)
Pentru sisteme neliniare, stabilitatea poate fi dedusă deobicei din aproximația liniară a
sistemului neliniar în jurul unui punct de echilibru. Cu alte cuvinte, examinând sistemul:
̇ ̅ unde ̅ și ̅ | (5.3.1)
̅
Teoremă 5.3.1.
1. Matricea ̅ are toate valorile proprii in semiplanul deschis stâng al planului complex
daca și numai dacă sistemul neliniar este stabil exponențial local.
2. Dacă matricea ̅ are una sau mai multe valori proprii cu partea reală pozitivă atunci
punctul de echilibru ̅ al sistemul neliniar este instabil
3. Dacă matricea ̅ nu are valori proprii cu partea reală pozitivă dar are una sau mai
multe valori proprii pe axa complexă , atunci stabilitatea punctului de echilibru nu
poate fi determinată printr-o aproximație liniară
În ultimul caz, nu putem decide dacă punctul de echilibru este stabil, stabil asimptotic sau
instabil. Acesta nu poate fi însă stabil exponențial.
* + * +
Matricea are valorile proprii confirmând intuiția că pendulul este într-un echilibru
instabil în configurația inversă. Deorece matricea are ambele valori proprii pe axa
imaginară în , stabilitatea pendului în punctul de echilibru din poziția de jos nu poate fi
concluzionată examinând numai aproximația liniară a ecuațiilor neliniare.
Definiția 5.3.1.
̇( ) ( ) ( ) ( ) (5.3.2)
30 Mecanismul de Swingup
Teorema 5.3.2.
Un punct de echilibru este stabil dacă există un cadidat de funcție Lyapunov V astfel încât ̇
este negativ semi-definită pe traiectoriile soluțiilor sistemului.
̇( ) ( ) . (5.3.3)
Teorema 5.3.3.
Un punct de echilibru este asimptotic stabil dacă există un cadidat de funcție Lyapunov V
astfel încât ̇ este negativ definită pe traiectoriile soluțiilor sistemului.
̇( ) ( ) . (5.3.4)
5.4 Pasivitate
Pentru o analiză intrare/ieșire a sistemul neliniar (5.2.1) este necesar introducerea noțiunii de
pasivitate.
Definiția 5.4.1.
Un sistem H descris de sistemul de ecuații neliniare (5.2.1) este pasiv dacă există (local) o
funcție scalară pozitiv definită S, numită Funcție de Stocare, astfel încât
̇ ( ) ( ) ∫ ( ) ( ) (5.4.1)
Spre exemplu, un circuit construit din elemente pasive (resitențe, condensatori, bobine),
variabila de intrare u o reprezintă intensitatea curentul prin circuit iar variabila de ieșire y este
tensiunea. Produsul reprezintă așadar puterea instantanee iar integrala din aceasta este
energia. Ecuația (5.4.1) descrie faptul că într-un sistem pasiv, schimbarea energiei existente
nu este mai mare decât cea furnizată la intrare.
̇ (5.4.2)
Indiferent de valoarea lui k. Asta înseamnă ca S va descrește continuu atâta timp cât ieșirea y
este diferită de zero. Această “margine de amplificare infinită” este o proprietate importantă a
sistemelor pasive ce poate fi folosită în proiectarea sistemelor de control împreună cu f aptul
ca interconexiunile paralele sau in bucla de reacție a sistemlor pasive sunt tot niște sisteme
pasive.
pentru ̇
pentru ̇ (5.5.1)
Acesta funcționează suficient de bine, dar viteza unghiulară a pendulului este adesea prea
mare c.
̇ ( co ) (5.6.1)
32 Mecanismul de Swingup
Obiectivul acestei strategii de control este de a aduce sistemul într-o stare în care energia
totală este egală cu cea din poziția de echilibru instabil:
Un controller de tip bang-bang poate fi apoi utilizat, accelerând pendulul când energia este
prea mică și decelerând când aceasta este prea mare.
̇
̇
0.8
Energie potentiala
0.7 Energie totala
Energie cinetica
0.6
0.5
0.4
0.3
0.2
0.1
0
0 500 1000 1500 2000 2500 3000 3500
Figura 5.6.1 – Energiile pendulului atunci când este eliberat din poziție verticală
̈ in
{ (5.7.1)
̈
Pentru a alege ieșirea astfel încât subsistemul să fie pasiv, trebuie revăzută ecuația de
energia a pendulului.
̇ ( co )
̇ ̇ ̈ in ̇ ̇( ̈ in )
̇ ̇ (5.7.2)
Deorece este de dorit să se manipuleze energia din sistem, funcția de stocare a acestui
subsistem va fi considerată de forma:
( ) (5.7.3)
34 Mecanismul de Swingup
̇ ( ) ̇ ̇( ) (5.7.4)
̇ ( ) (5.7.5)
̇ ( ̇ ( ) ̇) (5.7.6)
( ̇ ( ) ̇) (5.7.7)
̇ (5.7.8)
Sistemul este așadar stabil iar pentru orice condiție initială departe de punctul de echilibru :
și ̇ (5.7.9)
Controlul hibrid al pendulului 35
Capitoul 6
Controlul hibrid al pendulului
( ̇( ) ̇ ) (6.1.1)
unde ̇ ( co )
̇ ̇ ̇ ̇ (6.1.2)
Controllererul de energie aduce pendulul până aproape de configurația inversă, dar nu îl poate
menține acolo. Regulatorul LQR stabilizeaza pendulul menținând și turația rotorului aproape
de zero, dar acesta funcționeaza doar local. Este natural atunci, să se folosească regulatorul de
energie până ce pendulul ajunge în configurație inversă iar apoi să se producă o comutație pe
regulatorul cu reacție după stare pentru stabilizare.
36 Controlul hibrid al pendulului
Zona de stabilizare
Stabilizare
Swingup
Valoarea unghiului de prag s-a ajustat experimental pentru a minimiza pe cât posibil
șocurile de comutare între cele doua regulatoare.
7
4
theta (rad)
0
25 30 35 40 45 50 55
250 timp (sec)
200
150
100
comanda PWM
50
-50
-100
-150
-200
-250
25 30 35 40 45 50 55
timp (sec)
Capitolul 7
Implementarea fizică a pendulului invers
7.1 Introducere
In capitolele precedente am prezentat aparatul matematic necesar pentru a înțelege dinamica
sistemului format dintr-un pendul invers cu o roată de reacțiune. Acest capitol este dedicat
prezentării implementării fizice a unui algoritm de control pe un sistem real construit de
mine.
Encoderul din centrul pendulului este fixat in interiorul unei cutii de aluminiu galvanizat. O
gaura laterala in această cutie permite expunerea în exterior doar a axului encoderului.
Cutia de aluminiu împreună cu pendulul atașat este fixat pe un bloc patratic de aluminiu
avand latura de aproximativ 7cm. De acest bloc sunt fixate 2 cleme ce permit atașarea
sistemului pe diverse suprafețe. Tot pe acest bloc a fost atașată o bucată de plexiglass pe care
au fost montate componentele electronice. O altă bucată de plexiglass a fost fixată deasupra
acestor componentelor electronice pentru a le proteja.
38 Implementarea fizică a pendulului
invers
Motorul este controlat cu ajutorul unui modul ce conține un driver L298N. Acesta este un
driver folosit pentru a controla 2 motoare de curent continuu sau un motor pas cu pas.
Curentul maxim pe fiecare canal este de 2A. Modulul de acționare mai conține pe langa acest
integrat și niște condesatori de filtrare pe alimentare, diode de protecție împotriva curentului
generat de motor in regim de generator. Conectorii atașati de modul permit atașarea cu
ușurința a cablurilor de alimentare și de semnal.
pini de direcție permit setaria direcției de rotație a motorului sau punerea acestuia în regim de
franare.
7.4 Senzorii
Pentru a capta poziția unghiulara a pendului și cea a motorului au fost utilizați doi encoderi
rotaționali în cuadratură. Acești encoderi incrementali furnizează semnale ciclice la ieșire
doar atunci cand encoderul este rotit. Acesta este compus din doua piste colorate alternativ ce
au atașate cate o pereche LED – fototranzistor. Canalele de ieșire numite A și B sunt numite
și ieșiri în cudratură deoarece sunt defazate cu 90 de grade.
Faza A B Faza A B
1 0 0 1 1 0
2 0 1 2 1 1
3 1 1 3 0 1
4 1 0 4 1 0
Encoderul de pe axa principala de rotatie este un EP50S8-1024 5540 (Fig. 7.4.2 dreapta).
Datorită monturii acestuia, este posibil sa susțină greutatea întregului sistem.
7.5.1 Introducere
7.5.2 Întreruperi
Acest sistem de intreruperi permite o procesare eleganta a semnalelor furnizate de cele doua
encodere rotationale. În loc de a monitoriza într-o bucla în permanenta starea pinilor
corespunzători encoderilor (practică numită și polling) se atașează câte o întrerupere pe
momentele de tranziție a semnalelor pentru acei pini.
Placa Arduino este dotată cu doi pini de întrerupere, ce au fost folosiți pentru a capta
momentele de tranziție a impulsurilor generate de encoderi. Datorită limitarii la doi pini de
intreruperi, citirea encoderelor se face la jumătate din rezoluția disponibilă. Astfel, la
momentul unei tranziții pe canalul A al unui encoder, se declansează procedura de întrerupere
în care se citește starea celuilalt canal, utilizând un pin standard de intrare digitală. Odată
citită starea celor doup canale, se poate deduce sensul de rotație și se poate incrementa sau
decrementa un contor al poziției unghiulare.
Implementarea fizică a pendulului invers 41
Datorită caracterului discret al semnalelor, viteza unghiulară (sau derivata de ordin unu a
poziției unghiulare) se calculează ca o diferență între două valori unghiulare succesive
împarțite la o constanta de timp.
În cazul unei procesari complexe, datorită diverselor întârzieri ce pot apărea în fluxul de
procesare, acea constantă de timp necesară pentru un calcul corect al vitezei poate avea valori
diferite. Acest fapt se datorează eșantionării neuniforme efectuate asupra semnalului
corespunzător poziției unghiulare.
Deoarece vitezele unghiulare sunt informații vitale pentru algoritmul de calcul, este critic să
se mențină un timp de eșantionare cât mai aproape de o constantă. Acest fapt conduce la
necesatitatea optimizării la maxim a diverselor bucle de calcul precum și la necesitatea
filtrării semnalelor corespunzătoare vitezelor.
Filtre de ordin 1 au fost folosite pentru a filtra vitezele unghiulare. Un asemenea filtru poate
fi descris în timp continuu folosind ecuația:
( ) ( ) (7.5.5.1)
unde este constata filtrului. Folosind aproximația lui Euler pentru derivată conform:
(7.5.5.2)
unde este perioada de eșantionare. După calcule simple se poate arăta că:
( ) ( )
( ) (7.5.5.3)
Constatele de timp pentru filtre trebuie acum alese. Dacă constanta de timp a filtrului e prea
mică acesta nu v-a elimina foarte mult zgomot. Daca e setată prea mare, v-a distorsiona și
aplatiza semnalul. Exeperimental, valorile de și ̇ s-au dovedit a fi
suficiente pentru a atenua zgomotul într-o manieră bună. Constantele de timp ale sistemelor
corespunzătoare sunt de aproape 20 de ori mai mari, deci “adevăratele semnale” nu sunt
afectate.
O primă clasă de neliniarități sunte cele datorate forțelor de frecare. Datorită forței de frecare
din jurul axei de rotație, pendulul disipă din energia totală iar dinamica sistemului converge
catre punctul de echilibru stabil. Totodată, există frecare vâscoasă și la nivelul rotorului
motorului, aceasta contribuind la forma neliniară a caracteristicii statice. Angrenajul reductor
la care este conectat motorul, marește intervalul de comandă pentru care motorul nu se
învârte (deadzone în limba engleză).
Deoarece greutatea atașata de motor nu este una simetrică față de axa de rotație , momentul
interțial al sistemului este dependent de poziția unghiulară a rotorului. Această dependență
are influență asupra perioadei de oscilație naturale a sistemului.
Capitolul 8
Concluzii și perspective
Concluzii
Scopul acestei lucrări de disertație a fost de a prezenta un sistem complex de control
împreună cu o implementare fizică a acestuia. Sistemul ales a fost un pendul invers cu roată
de reacțiune.
Perpective
O îmbunătățire ce poate fi adusă sistemului este de a utiliza algoritmi de control mai
sofisticați pentru stabilizare de tipul MPC sau .
Performațe mai bune ar putea fi obținute si prin utilizarea unui sistem de procesare mai
puternic. Placa Arduino reduce rezoluția encoderilor incrementali la jumătate deoarece este
dotată doar cu doi pini de întrerupere.
Anexe
//#define SERIAL_DEBUG
// pini encoderi
#define ENCODER_0_PIN_A 2
#define ENCODER_0_PIN_B 4
#define ENCODER_1_PIN_A 3
#define ENCODER_1_PIN_B 5
// pini motor
#define MOTOR_PIN_A 9
#define MOTOR_PIN_B 8
#define MOTOR_PIN_PWM 10
// pini LED
#define RED_LED_PIN 12
#define YELLOW_LED_PIN 11
// comanda maxima
#define U_MAX 255
// energia de referinta
#define Eref 10800
// unghiul de prindere
#define CATCH_ANGLE 30
// turatie rotor
int w_r = 0;
int old_w_r = 0;
double w_r_f = 0.0;
void setup() {
// setari pini encoderi
pinMode(ENCODER_0_PIN_A, INPUT);
pinMode(ENCODER_0_PIN_B, INPUT);
digitalWrite(ENCODER_0_PIN_A, HIGH);
digitalWrite(ENCODER_0_PIN_B, HIGH);
pinMode(ENCODER_1_PIN_A, INPUT);
pinMode(ENCODER_1_PIN_B, INPUT);
digitalWrite(ENCODER_1_PIN_A, HIGH);
digitalWrite(ENCODER_1_PIN_B, HIGH);
// atasare intreruperi
attachInterrupt(0, irsPinAEn0, CHANGE);
attachInterrupt(1, irsPinAEn1, CHANGE);
#ifdef SERIAL_DEBUG
Serial.begin(115200);
#endif
setMotorSpeed(0);
}
int u_read = 0;
void loop() {
#ifdef SERIAL_DEBUG
/* citiri de date pe seriala
int nrIncomingBytes = Serial.available();
if (nrIncomingBytes > 0) {
u_read = 0;
int negative = 0;
for (int i = 0; i < nrIncomingBytes; i++) {
int val = Serial.read();
if (val == '-') {
negative = 1;
} else {
int digit = val - '0';
46 Anexe
/* W */
w = theta - old_theta;
if (theta > THETA_MAX) theta = theta - 2*THETA_MAX;
if (theta < -THETA_MAX) theta = theta + 2*THETA_MAX;
old_theta = theta;
/* W_R */
w_r = theta_r - old_theta_r;
w_r_f = 0.4444 * w_r_f + 0.5556 * w_r;
//if (theta_r > THETA_R_MAX) theta_r = theta_r - 2*THETA_R_MAX;
//if (theta_r < -THETA_R_MAX) theta_r = theta_r + 2*THETA_R_MAX;
old_theta_r = theta_r;
float u;
if (abs(theta) > CATCH_ANGLE) {
// Swingup
// setare LED
digitalWriteFast(RED_LED_PIN, HIGH);
digitalWriteFast(YELLOW_LED_PIN, LOW);
// energie cinetica
int E_c = w * w;
// energie potentiala
double cos_theta = cos(PI/400 * theta);
double E_p = E0 * (1 + cos_theta);
// energie totala
double E = E_c + E_p;
/* Swingup Bang-bang
if (E < E0) {
if (w >= 0)
u = -U_SWINGUP;
else
u = U_SWINGUP;
} else {
if (w > 0)
u = U_SWINGUP;
else
u = -U_SWINGUP;
}
*/
// comanda neliniara
u = 0.0015*(E-Eref)*w-0.001*w_r_f;
} else {
Anexe 47
// stabilizare
// control LQR
u = 14.5 * theta + 29 * w + 0.7 * w_r_f;
// intensitate LED
float led_power = abs(u);
if (led_power > 255) {
led_power = 255;
}
analogWrite(YELLOW_LED_PIN, led_power);
digitalWriteFast(RED_LED_PIN, LOW);
}
#ifdef SERIAL_DEBUG
Serial.println(theta);
Serial.println(w);
Serial.println(u);
Serial.println(w_r_f);
#endif
setMotorSpeed(u);
delay(100);
}
if (val == old_val) {
return;
} else {
old_val = val;
}
if (val > 0) {
digitalWriteFast(MOTOR_PIN_A, HIGH);
digitalWriteFast(MOTOR_PIN_B, LOW);
analogWrite(MOTOR_PIN_PWM, val);
} else {
digitalWriteFast(MOTOR_PIN_B, HIGH);
digitalWriteFast(MOTOR_PIN_A, LOW);
analogWrite(MOTOR_PIN_PWM, -val);
}
}
// actualizare pozitie
if (drA == HIGH) {
if (drB == LOW) {
theta++;
} else {
theta--;
}
} else {
if (drB == HIGH) {
theta++;
} else {
theta--;
}
}
}
// actualizare pozitie
if (drA == HIGH) {
if (drB == LOW) {
theta_r++;
} else {
theta_r--;
}
} else {
if (drB == HIGH) {
theta_r++;
} else {
theta_r--;
}
}
}
WINDOW_SIZE = 256;
set(s, 'InputBufferSize', 16);
set(s, 'OutputBufferSize', 8);
%set(s, 'FlowControl', 'hardware');
Anexe 49
fopen(s);
t=1;
disp('Running');
theta_buffer=zeros(1,WINDOW_SIZE);
w_buffer=zeros(1,WINDOW_SIZE);
wr_buffer=zeros(1,WINDOW_SIZE);
u_buffer=zeros(1,WINDOW_SIZE);
fig1 = figure;
fig2 = figure;
fig3 = figure;
fig4 = figure;
u = 0;
disp(u);
fprintf(s, '%d', u);
while(1)
set(0,'CurrentFigure',fig1)
tv = (t:t+WINDOW_SIZE-1)/10;
% theta
theta = fscanf(s,'%f');
theta_buffer=[theta_buffer(2:end) theta];
plot(tv,theta_buffer);
axis auto;
grid on;
title('theta');
% w
set(0,'CurrentFigure',fig2)
w = fscanf(s,'%f');
w_buffer=[w_buffer(2:end) w];
stairs(tv,w_buffer);
axis auto;
grid on;
title('w');
% u
set(0,'CurrentFigure',fig3)
u = fscanf(s,'%f');
u_buffer=[u_buffer(2:end) u];
stairs(tv,u_buffer);
axis auto;
grid on;
title('u');
% w_r
50 Anexe
set(0,'CurrentFigure',fig4)
w_r = fscanf(s,'%f');
wr_buffer=[wr_buffer(2:end) w_r];
plot(tv,wr_buffer,'r');
axis auto;
grid on;
title('w_r');
drawnow;
t=t+1;
end
fclose(s);
Listă de figuri 51
Listă de figuri
Bibliografie
[BAS01] Jerome Block, Karl Johan Åström, Mark W. Spong, The Reaction Wheel
Pendulum Morgan & Claypool Publishers, 2007
[JW01] Karl Henrik Johansson and Bo Wahlberg, Nonlinear Control - Lecture notes
[AF01] Karl Johan Åström, and Furuta, K., Swinging up a pendulum by energy
control, Automatica, vol. 36, pp. 278–285, 2000.
[CH01] Chung, C.C., and Hauser, J., Nonlinear control of a swinging pendulum
Automatica, vol. 31, pp. 851–862, 1995.
[SCL01] Spong, M.W., Corke, P., and Lozano, R., Nonlinear control of the inertia
wheel pendulum, Automatica, 1999