Controlul Unui Sistem de Tip Bila Rampa
Controlul unui sistem de tip bila-rampa
LUCRARE DE LICENȚĂ
CUPRINS
Scopul lucrării
Obiectivele proiectului
Structura lucrării
1 Introducere
1.1 Noțiuni generale despre sistemele de tip bilă-rampă
1.2 Utilitatea sistemelor tip bilă-rampă
2 Modelarea și simularea procesului
2.1 Modelarea procesului utilizând legile lui Newton
2.2 Analiza procesului utilizând unelte Matlab
2.3 Determinarea legii de reglare cu ajutorul pidtool
2.4 Analiza eficienței reglării
3 Proiectarea și implementarea sistemului
3.2 Arhitectura generală a sistemului
3.3 Componentele sistemului și rolul acestora
3.4 Proiectarea și implementarea componentei Hardware
3.4.1 Senzorul de poziție a bilei
3.4.2 Senzorul de poziție a axului motorului
3.4.3 Reducerea zgomotului datorat funcționării motorului
3.5 Proiectarea și implementarea componentei Software
3.5.1 Funcția pentru citirea datelor de la senzori
3.5.2 Implementarea regulatorului. Funcția pid_control
3.5.3 Controlul direcției motorului. Funcțiile left și right.
3.5.4 Aplicația de urmărire a sistemului
4 Testarea sistemului
4.1 Testarea senzorului de poziție a axului motorului
4.2 Testarea senzorului de poziție a bilei
4.3 Comanda dată de regulator
5 Concluzii
5.1 Realizări
5.2 Probleme întâlnite
5.3 Direcții de dezvoltare
6 Bibliografie
Anexa A: Fotografie a sistemului de tip bilă-rampă
Anexa B: Schema explodată a sistemului de tip bilă-rampă
Scopul lucrării
Lucrarea de față, cu titlul “Controlul unui sistem de tip bilă-rampă” propune studiul și realizarea fizică a unui plan înclinat al cărui unghi se modifică cu ajutorul unui motor de curent comtinuu, cu scopul de a menține în echilibru o bilă care rulează liber. Acest sistem permite studiul a diferiți algoritmi de reglare, precum și alegerea și acordarea unui regulator de tip PID care să permită stabilizarea bilei.
Obiectivele proiectului
În scopul dezvoltării proiectului, s-au avut în vedere următoarele obiective:
Proiectarea și realizarea unei platforme fizice pentru experiment, cât mai simplu și cu costuri cât mai reduse
Obținerea unui model matematic al sistemului și simularea acestuia cu ajutorul MATLAB
Proiectarea și acordarea unui regulator de tip PID care sa permită stabilizarea bilei
Scrierea unei aplicații pentru microcontroller cu ajutorul MPIDE pentru controlul poziției bilei
Dezvoltarea unei aplicații de urmărire folosind mediul MATLAB
Structura lucrării
Lucrarea cu titlul “Controlul unui sistem de tip bilă-rampă” este împărțită în cinci capitole;
În capitolul 1 este prezentată o scurtă introducere teoretică privind sistemele de tip bilă-rampă. Sunt discutate, de asemenea, diverse implementări fizice ale acestor sisteme și utilitatea lor.
Capitolul 2 se referă la modelarea și simularea sistemului. În acesta sunt prezentate ecuațiile de funcționare ale sistemului, modelul matematic al acestuia, descrierea parametrilor, legile de reglare folosite, modelele MATLAB, scheme ale procesului și analiza acestuia în buclă închisă și în buclă deschisă, cu și fără regulator, folosind diagrame Nyquist, Bode, marginea de amplitudine, marginea de fază și răspunsul la intrare treaptă al sistemului.
Capitolul 3 prezintă proiectarea și realizarea sistemului în detaliu. Astfel, sunt aduse în discuție structura fizică a sistemului, echipamentele folosite și rolurile pe care acestea le îndeplinesc, arhitectura sistemului și funcționarea senzorilor și a motorului folosit.
După prezentarea componentei hardware, se detaliază realizarea componentei software, care include diagrame de activitate, implementarea funcțiilor de reglare, de citire a datelor de la senzori, alegerea ratei de eșantionare și protocolul de comunicație serială, necesar pentru aplicatia PC de urmărire dezvoltată.
Capitolul 4 face referire la testarea sistemului realizat în diferite situații (la intrare treaptă, cu regulator P, PI, PD, PID).
În capitolul 5 sunt enumerate concluziile și sunt trasate unele direcții de dezvoltare ulterioară.
1 Introducere
Noțiuni generale despre sistemele de tip bilă-rampă
Sistemele de tip bilă-rampă sunt constituite, așa cum sugerează și numele, dintr-o rampă care poate fi înclinată într-o parte și în cealaltă cu ajutorul unui motor și pe care se rostogolește liber o bilă.
Poziția motorului și poziția bilei sunt identificate cu ajutorul senzorilor; pentru sistemul prezentat în lucrarea de față, se foloseste un senzor de proximitate cu lumină infraroșie pentru detecția poziției bilei și un potențiometru logaritmic pentru detecția poziției motorului.
Astfel de sisteme constituie un exemplu popular în studiul sistemelor de reglare automată deoarece dinamica lor este neliniară și sunt instabile in buclă deschisă, motiv pentru care ridică o problemă de reglare destul de complexă [1]. De asemenea, acest tip de sisteme permite studiul și implementarea mai multor algoritmi de reglare, cum ar fi reglarea clasică, reglarea adaptivă, reglarea după stare sau reglarea fuzzy.
Sistemele tip bilă-rampă fac parte din categoria sistemelor „under-actuated”. Acest tip de sisteme au un număr de elemente de execuție mai mic decât numărul gradelor de libertate – în acest caz sistemul are două grade de libertate și un singur element de execuție. Astfel, în sistemul prezentat în această lucrare, doi parametri (poziția bilei și unghiul de înclinare al rampei, deci și poziția axului motorului) sunt controlate cu ajutorul unui singur actuator (motorul de curent continuu).
Variante constructive ale sistemelor de tip bilă-rampă
Există diverse implementări fizice ale sistemelor de tip bilă-rampă, acestea fiind diferite în primul rând prin poziția motorului, in capătul rampei (figura 1.1) sau in mijlocul acesteia (figura 1.2).
Figura 1.1. Exemplu de sistem bilă-rampă cu motorul poziționat în capătul rampei
Implementarea prezentată în figura 1.1 are avantajul de a fi mai stabilă, rampa fiind susținută la ambele capete cu ajutorul punctelor de sprijin, însă punctul slab al acesteia reprezintă mecanismul necesar pentru a transmite mișcarea de la motor la rampă (roți dințate, curea sau lanț de transmisie sau braț metalic prins cu șuruburi). Această variantă este mai puțin rezistentă la șocuri mecanice și la uzură, iar componentele care s-ar putea strica nu sunt ușor de înlocuit. De asemenea, implementarea cu motorul la un capăt al rampei presupune puncte de sprijin identice ca înălțime și greutate, pentru a preveni alunecarea sistemului și eventualele oscilații ale bilei. Din punct de vedere al algoritmului de reglare, acesta presupune pe lângă compensarea inerției rampei, a bilei și a motorului, și compensarea inerției mecanismului de transmisie.
Figura 1.2. Exemplu de sistem bilă-rampă cu motorul poziționat în centrul rampei
In figura 1.2 este exemplificat un al doilea tip de implementare, în care elementul de execuție (motorul) este montat în centrul rampei, astfel încât aceasta se rotește deodată cu axul motorului. Acest lucru presupune însă utilizarea unui motor cu reducție și a unui punct de sprijin suficient de înalt incât să permită înclinarea rampei astfel încât poziția bilei să se poată modifica suficient de mult pentru ca aceasta să fie adusă în punctul în care trebuie stabilizată. De asemenea, ca și în cazul anterior, poate fi nevoie de un mecanism care să facă legătura între axul motorului și rampă.
Față de implementarea exemplificată in figura 1.1, în varianta din figura 1.2 dispare necesitatea compensării inerției mecanismului de transmisie.
Sistemul prezentat în lucrarea de față foloseste o implementare ca și cea din figura 1.2, iar ca mecanism de transmisie, este folosit un cilindru de aluminiu prins cu șuruburi, componentă destul de rezistentă la șocuri și uzură și ușor de înlocuit.
Implementările sistemelor de tip bilă-rampă mai diferă din punct de vedere fizic al echipamentelor utilizate pentru determinarea poziției bilei pe rampă, prin echipamentele utilizate ca element de execuție si a traductoarelor folosite pentru acestea, dar și prin algoritmul de reglare folosit pentru stabilizarea bilei.
Sistemele de tip bilă-rampă permit implementarea oricărui algoritm de reglare (clasic, adaptiv, după stare, în cascadă, fuzzy, etc) și de aceea sunt folosite ca stand experimental în universități din întreaga lume.
Câteva dintre sistemele bilă-rampă utilizate ca standuri experimentale în laboratoare din cadrul unor universități din lume sunt prezentate în figurile 1.3 (Stand experimental utilizat la universitatea din Hawaii, Statele Unite), 1.4 (Institutul Tehnic de la Lund, Suedia), și 1.5 (Universitatea din Utah, Statele Unite).
Figura 1.3 Sistem tip bilă-rampă comercializat de Quanser, utilizat la universitatea din Hawaii[2]
Figura 1.4 Sistem de tip bilă-rampă utilizat în cadrul institutului de la Lund[3]
Figura 1.5 Sistem de tip bilă-rampă utilizat la Universitatea din Utah[4]
Utilitatea sistemelor tip bilă-rampă
Sistemele de tip bilă-rampă sunt utile pentru studiul în laborator, deoarece sunt portabile, simplu de înteles, sigure și permit studiul și compararea mai multor tipuri de algoritmi de reglare (reglare clasică, reglare adaptivă, reglare dupa stare, reglare fuzzy, reglare în cascadă, etc), deoarece nu există o singură soluție pentru rezolvarea problemei de reglare pe care o ridică. De asemenea, un model matematic simplificat care să permită studiul acestui tip de sisteme poate fi dedus cu relativă ușurință. Atât modelul matematic cât și algoritmul de reglare utilizat vor fi detaliate în cadrul capitolele 2, Modelarea și Simularea Procesului, și 3, Proiectarea și Implementarea Sistemului.
Acest tip de sisteme permit simularea unor sisteme din viața reală, cum ar fi controlul reacțiilor exoterme din industria chimică sau stabilizarea avioanelor și a rachetelor în timpul decolării sau aterizării verticale [1], sisteme care nu pot fi aduse in laboratoare pentru a fi studiate, dar care ocupa un rol important in societatea de azi și pentru care lipsa studiului aprofundat și deci a unei reglări optime poate duce la consecințe dezastruoase și chiar la pierderi de vieți omenești.
Modelarea și simularea procesului
Principalele metode cu ajutorul cărora procesele și fenomenele din lumea reală sunt analizate și studiate indirect folosind tehnica de calcul sunt modelarea și simularea [5].
Modelul este reprezentarea matematică a dependenței dintre mai multe mărimi. Dacă modelul corespunde unui proces fizic realizabil, acesta se numește sistem. În acest caz, există trei tipuri de mărimi care pot afecta sistemul:
Mărimi de intrare, care influențează din exterior comportarea sistemului;
Mărimi de stare, interioare sistemului;
Mărimi de ieșire, care permit interpretarea comportării sistemului; [6]
Există trei abordări folosite pentru deducerea unui model:
Analitic, folosind legile fizice care descriu modul în care se desfășoară procesul modelat
Experimental, folosind date obținute din măsurători
Implementarea modelului matematic obținut pe un sistem de calcul pentru ca proprietățile sale să poată fi studiate se numește modelare. [5]
În lucrarea de față, este folosită tehnica modelării analitice, deoarece legile lui Newton, descriu comportarea sistemului suficient de bine incât să permită deducerea unui regulator și deci controlul procesului. Modul în care este dedus modelul matematic pentru sistemul de tip bilă-rampă este discutat detaliat în acest capitol, în cadrul secțiunii 2.1 Modelarea procesului utilizând legile lui Newton.
Deși modelele matematice sunt foarte utilizate pentru studiul sistemelor de reglare automată, există câteva observații care trebuie avute în vedere pe parcursul efectuării studiului:
Modelele matematice reprezintă aproximări ale sistemelor reale, ceea ce înseamnă ca nu toți factorii care ar putea influența sistemul sunt luați în calcul; modelul sistemului nu poate ajunge la complexitatea sistemului real
Modelele matematice simplificate neglijează sau idealizează anumitee influențează din exterior comportarea sistemului;
Mărimi de stare, interioare sistemului;
Mărimi de ieșire, care permit interpretarea comportării sistemului; [6]
Există trei abordări folosite pentru deducerea unui model:
Analitic, folosind legile fizice care descriu modul în care se desfășoară procesul modelat
Experimental, folosind date obținute din măsurători
Implementarea modelului matematic obținut pe un sistem de calcul pentru ca proprietățile sale să poată fi studiate se numește modelare. [5]
În lucrarea de față, este folosită tehnica modelării analitice, deoarece legile lui Newton, descriu comportarea sistemului suficient de bine incât să permită deducerea unui regulator și deci controlul procesului. Modul în care este dedus modelul matematic pentru sistemul de tip bilă-rampă este discutat detaliat în acest capitol, în cadrul secțiunii 2.1 Modelarea procesului utilizând legile lui Newton.
Deși modelele matematice sunt foarte utilizate pentru studiul sistemelor de reglare automată, există câteva observații care trebuie avute în vedere pe parcursul efectuării studiului:
Modelele matematice reprezintă aproximări ale sistemelor reale, ceea ce înseamnă ca nu toți factorii care ar putea influența sistemul sunt luați în calcul; modelul sistemului nu poate ajunge la complexitatea sistemului real
Modelele matematice simplificate neglijează sau idealizează anumite aspecte ale comportării sistemelor
Modelele trebuie sa fie utilizabile [5]
Odată obținut un model matematic pentru sistemul studiat, acesta se poate simula. Simularea are ca scop obținerea de informații cu privire la comportarea sistemului în diferite condiții, și este utilă în special atunci când sistemul nu poate fi studiat direct de către un observator (de exemplu sistemul este fragil sau periculos) [5]. Un bun exemplu în acest sens reprezintă sistemul de stabilizare a unei nave spațiale.
Deoarece pentru simularea unui sistem se folosește modelul matematic dedus în prealabil, iar acesta reprezintă o aproximare a sistemului studiat, acuratețea rezultatelor obținute în urma simulării este strâns legată de complexitatea modelului matematic. Sunt, de asemenea, important de luat în calcul și erorile care mai pot interveni, atât în deducerea unui model cât și în simularea acestuia, cum ar fi erori de prelucrare, zgomot de măsură, anumite condiții de simulare care nu pot fi reproduse (exemplu temperatura 0 absolut), erori în precizarea parametrilor, eroarea umană.
În cele ce urmează, se vor discuta atât modelarea procesului cu ajutorul legilor lui Newton, cât și simularea acestuia cu ajutorul programului Matlab. Datele obținute au fost luate în considerare în cazul alegerii și acordării unui regulator care să permit stabilizarea bilei.
Modelarea procesului utilizând legile lui Newton
Pentru studiul comportării sistemului bilă-rampă cu ajutorul programului MATLAB, a fost dedus un model matematic simplificat. Pentru a ajunge de la sistemul fizic la acesta, s-a pornit de la următoarele premise:
Rampa a fost considerată un plan înclinat
Nu s-a luat în considerare motorul ca și element de execuție (inerția acestuia, 0.0045 kg*m2 nu a fost luată în considerare)
Frecarea bilă-aer, frecarea bilă-rampă și frecarea aer-rampă sunt considerate neglijabile
Se presupune că rezistența adaugată de fire este nulă
Ținând cont de cele spuse anterior, sistemul se reduce la o problemă clasică cu plan înclinat, în care factorul care trebuie aflat este accelerația bilei. Problema se poate reprezenta grafic cu ajutorul diagramei din figura 2.1.
Figura 2.1 Diagrama de mișcare a bilei pe planul înclinat
Unde avem următorii parametri:
Pentru a modela sistemul este nevoie de legile lui Newton (denumite și legile mecanicii clasice) [7]:
Legea 1: Orice corp își menține starea de repaus sau de mișcare rectilinie uniformă atât timp cât asupra sa nu acționează alte forțe sau suma forțelor care acționează asupra sa este nulă.
Variația mișcării este proporțională cu forța și are loc pe direcția și în sensul de acțiune a forței.
Dacă un corp acționează asupra unui alt corp cu o forță, acesta din urmă acționează la rândul său asupra primului corp cu o forță egală și de sens contrar.
Forțele care acționează asupra bilei în figura 2.1 sunt urmatoarele:
Forța gravitaționala G, care are componenta Fgx pe axa x și component Fgy pe axa y
Forța datorată mișcării de translație executată de bilă, Ftx și care este 0, deoarece bila nu execută mișcare de translație:
Forța datorată mișcării de rotație executată de bilă, Frx, și care depinde de cuplul mecanic de rotație al bilei:
Ecuația (7) se poate rescrie astfel:
Unde J este momentul de inerție al unei sfere pline, și se exprimă astfel:
Înlocuind ecuația (10) în ecuația (9), rezultă forța datorată mișcării de rotație executată de bilă:
După determinarea tuturor forțelor care acționează asupra bilei, se poate scrie ecuația de echilibru:
Substituind ecuațiile (4), (6), (11) în ecuația (12), se obține:
Simplificând ecuația (13), se obține
Se consideră , deoarece unghiurile la care se înclină rampa sunt relativ mici, deci se poate realiza o liniarizare în jurul punctului de funcționare (considerat atunci când planul e perfect orizontal, iar bila e în echilibru). Înlocuind în relația (14), se obține modelul matematic simplificat intrare-ieșire al sistemului de tip bilă-rampă:
De asemenea, prin înlocuirea , are loc și o liniarizare a modelului matematic al sistemului.
2.2 Analiza procesului utilizând unelte Matlab
Pentru simularea sistemului modelat în subcapitolul 2.1 Modelarea procesului folosind legile lui Newton, s-a folosit mediul MATLAB deoarece acesta dispune de toolbox-uri specializate care permit analiza sistemelor și sunt ușor de utilizat.
Pentru a putea începe analiza sistemului de tip bilă-rampă, este în primul rând nevoie ca modelul matematic al acestuia să fie transformat într-o funcție de transfer. Pentru studiul sistemului de tip bilă-rampă prezentat în această lucrare, intrarea este poziția a rampei, iar ieșirea poziția bilei.
Dacă ecuației (2.15) i se aplică transformata Laplace, se obține funcția de transfer a sistemului (relația 2.16):
În MATLAB, datele sunt introduse ca numărător și numitor al funcției, iar apoi, cu ajutorul comenzii tf, este create funcția de transfer. În rândurile următoare, acest lucru este evidențiat cu ajutorul unui extras din cod:
%modelul bilei
num_bll=[(5/7)*g];
den_bll=[1 0 0];
disp('functia de transfer a bilei:');
h_bll=tf(num_bll,den_bll)
Luându-se în calcul faptul că accelerația gravitațională este 9.81 m/s2 , funcția de transfer devine:
Plecând de la forma continuă a funcției de transfer, se poate obține foarte ușor, utiliând comanda c2d (continuous to discrete) din mediul MATLAB echivalentul discret al funcției de transfer Hbb. Codul folosit pentru această operație este următorul:
hb1=c2d(h_bll,0.01, 'zoh')
În linia de cod de mai sus, hb1 este numele dat formei discrete a funcției de transfer a sistemului bilă-rampă, 0.01 este pasul de eșantionare, iar metoda folosită este ‘zoh’ (zero order hold sau element de reținere de ordinul zero).
Funcția de transfer discretă a sistemului, rezultată în urma discretizării este urmatoarea:
Schema bloc a sistemului în buclă deschisă fără regulator este reprezentată în figura 2.2.
Figura 2.2: Schema bloc a sistemului în buclă deschisă fără regulator
Răspunsul la intrare treaptă al sistemului prezentat în cadrul lucrării de față, în buclă deschisă, fără regulator, are alura reprezentată în figura 2.3.
Figura 2.3: Răspunsul sistemului la intrare treaptă, fără regulator, în buclă deschisă
După cum se observă din graficul din figura 2.3, sistemul nu este stabil și nu prezintă tendințe de stabilizare, ceea ce înseamnă ca timpul tranzitoriu și eroarea staționară tind la infinit.
O altă metodă de analiză a sistemelor de reglare automate este cea frecvențială și presupune utilizarea caracteristicilor Nyquist si Bode ale sistemelor.
Studiul sistemelor cu ajutorul diagramelor Nyquist și Bode oferă informații despre stabilitatea acestora în buclă închisă și sunt trasate pentru bucla deschisă reprezentată în figura 2.2.
Pentru sistemul prezentat în lucrarea de față, diagramele Nyquist și Bode sunt reprezentate în figurile 2.4, respectiv 2.5.
Figura 2.4: Diagrama Nyquist a sistemului de tip bilă-rampă fără regulator
Varianta simplificată a criteriului Nyquist stipulează faptul că pentru ca un sistem Hd(s), care nu are poli în semiplanul stâng al planului complex și nici pe axa imaginară admite ca și condiție necesară și suficientă de stabilitate ca locul de transfer al sistemului automat deschis, parcurs în sens orar pentru pulsații crescătoare pe intervalul (0, ∞), să lase punctul critic (-1, j0) în partea stângă.[11]
În cazul sistemului prezentat în lucrarea de față, se poate observa că punctul critic (-1, 0j) nu rămâne în partea stângă a locului de transfer, sistemul fiind, deci, instabil.
Figura 2.5: Diagrama Bode a sistemului de tip bilă-rampă fără regulator
Criteriul de stabilitate Bode clasifică un sistem ca fiind stabil dacă funcția de transfer în buclă deschisă este ireductibilă, condiție îndeplinită de sistemul bilă-rampă (fără regulator), iar caracteristica de amplitudine este monoton descrescătoare cu pulsația ω și are panta asimptotică la joasă frecvență egala cu 0 sau -20dB[11].
Deși în cazul sistemului bilă-rampă, prima condiție a criteriului Bode este îndeplinită, caracteristica de amplitudine a sistemului nu este monoton descrescătoare cu pulsația. Ca și analiza răspunsului indicial și analiza cu ajutorul diagramei Nyquist, analiza cu ajutorul diagramei Bode indică faptul că sistemul este instabil.
Concluzia în acest caz este aceea că este neapărat necesar ca un regulator să fie introdus în sistem pentru ca acesta să poată fi stabilizat.
2.3 Determinarea legii de reglare cu ajutorul pidtool
Regulatoarele sunt mecanisme de control ale sistemelor automate care monitorizează și alterează condițiile de operare ale sistemelor.În implementările mai vechi ale acestora erau folosite elemente pneumatice, hidraulice și electrice (de exemplu valve, pistoane sau amplificatoare operaționale), singure sau în diverse combinații. În implementările mai moderne, sunt folosite în general regulatoare numerice, implementate cu ajutorul microsistemelor sau chiar al calculatoarelor.
Sistemele de reglare sunt împărțite în trei categorii principale: Sisteme în buclă deschisă, sisteme feedforward și sisteme feedback.[8]
În cazul sistemelor în buclă deschisă, nu există conexiuni cu reacție; altfel spus, în aceste sisteme sunt formate din elemente cuplate funcțional astfel încât mărimea de intrare a oricărui element nu este determinată, direct sau indirect, de mărimea de ieșire a aceluiași element.[9] Schema unui astfel de sistem este prezentată în figura 2.6.
Figura 2.6: Reprezentarea unui sistem de reglare în buclă deschisă
Sistemele în buclă feedback, sau buclă închisă, sunt formate din elemente cuplate funcțional astfel încât cel puțin în privința uneia dintre componentele sistemului, mărimea de intrare este determinată, direct sau indirect, de mărimea de ieșire a acesteia[9]. Schema unui astfel de sistem este prezentată în figura 2.7
Figura 2.7: Reprezentarea unui sistem de reglare cu buclă de reacție (reacție negativă)
În scopul reglării automate a sistemului bilă-rampă s-a folosit un regulator de tip Propoțional-Integrativ-Derivativ (PID). După cum sugerează și numele, regulatoarele de tip PID sunt caracterizate de 3 componente:
Componenta proporțională P, caracterizată de factorul de proporționalitate kp
Componenta integrativă I, caracterizată de timpul de integrare Ti
Componenta derivativă D, caracterizată de timpul de derivare Td
Forma general a regulatorului de tip PID se poate deduce ușor, însumând cele trei componente ale acestuia, redate în relațiile (2.19),(2.20),(2.21). Forma continuă în timp a regulatorului este, așadar, cea din relația (2.22):
Funcția de transfer continuă a unui regulator PID se obține prin aplicarea transformatei Laplace relației (2.22), obținându-se astfel relația (2.23).
Pentru a obține forma discretă a regulatorului PID, sunt necesare următoarele aproximări:
Aproximările din relațiile (2.24) și (2.25) sunt necesare pentru a adduce componentele integrativă și derivativă la o formă care să poată fi implementată pe un sistem de calcul. Înlocuind relațiile (2.24) și (2.25) în relația (2.22), se obține forma discretă a algoritmului de reglare PID (relația (2.26)):
Deși există mai multe posibilități de a regla sistemul, în lucrarea de față este prezentat un regulator de tip PID.
Pentru determinarea unor parametri orientativi care să fie folosiți mai apoi în partea practică a experimentului s-a folosit comanda pidtool din matlab. Aceasta permite acordarea manuală a unui regulator pentru sistemul de tip bilă-rampă, alegerea timpului de răspuns, a tipului de grafic afișat (treaptă sau diagramă Bode), două moduri de proiectarea a regulatoarelor (basic, care permite doar alegerea timpului de răspuns, sau extins, care permite alegerea marginii de amplitudine și a marginii de fază). Formele regulatoarelor permise de acest tool sunt forma standard și forma paralelă.
Figura 2.8 ilustrează răspunsul sistemului la intrare treaptă folosind pidtool. La pornirea acestuia, un regulator specificat de utilizator este ales și acordat. În continuare, utilizatorul poate sa reacordeze sau sa aleagă un alt tip de regulator folosindu-se de submeniul type. In figura 2.8, singurul parametru modificat este timpul de răspuns, acesta fiind si singurul parametru pe care modul de acordare basic îl pune la dispoziție pentru modificare. Accesul la funcția matlab pidtool se face cu ajutorul comenzii:
pidtool(h_bll,'PID');
Figura 2.8: Răspunsul sistemului cu regulatorul determinat de pidtool
În figura 2.9, au fost modificate marginea de fază și marginea de amplitudine.
Figura 2.9: Răspunsul sistemului după ce marginea de amplitudine și marginea de fază au fost modificate
După cum se poate observa, răspunsul sistemului s-a îmbunătățit, suprareglajul s-a redus de la 24,9% la 3,05%, iar timpul tranzitoriu a scăzut de la 3.86 la 2,67 secunde. S-a determinat experimental că în cazul sistemului prezentat în lucrarea de față, este preferabil un timp tranzitoriu mai mare în locul unui suprareglaj mare, atât pentru a proteja sistemul fizic, cât și pentru a asigura o bună comportare a acestuia.
2.4 Analiza eficienței reglării
După determinarea parametrilor regulatorului, aceștia se pot exporta în spațiul de lucru din Matlab, folosind comanda export (în partea stângă de sus a ferestrei pidtool) iar apoi folosi pentru în continuarea dezvoltării aplicației.
După cum se poate observa din Diagrama Nyquist din figura 2.10, locul de transfer al sistemului automat, parcurs în sens orar pentru pulsații crescătoare în intervalul (0,∞), lasă punctul critic (-1,0) în partea stîngă, ceea ce înseamnă că sistemul este stabil în buclă închisă.
Figura 2.9: Diagrama Nyquist a sistemului de tip bilă-rampă după determinarea regulatorului
Cu ajutorul comenzii margin din Matlab, se poate studia rezerva de stabilitate a sistemului, formată din marginea de amplitudine, marginea de fază, pulsația de tăiere ωt, (punctul unde hodograful sistemului se intersectează cu cercul de rază unitate centrat în origine și pulsația de tăiere ωπ care reprezintă intersecția caracteristicii φ(ω) cu orizontala dusă prin faza φ=-π. [11]Comanda margin se apelează astfel:
[Ma,Mf,Wt,Wpi] = margin(hds)
Ea returnează marginea de amplitudine, marginea de fază și cele două pulsații de tăiere ωπ și ωp. Îm cazul sistemului de tip bilă-rampă prezentat în lucrarea de față, rezultatele sunt următoarele:
Ma = 0.0116
Mf = 87.0181
Wt = 0.2052
Wpi = 8.3453
Stabilitatea unui sistem se poate determina prin analiza caracteristicilor de frecvență prin compararea pulsațiilor . [11]
Pe baza rezultatelor obținute în urma apelării comenzii margin in Matlab și a relațiilor (2.28), (2.29) și (2.30), se poate scrie:
De asemenea, stabilitate unui sistem este reflectată și de pozițiile marginilor de amplitudine și de fază pe axa numerelor reale; astfel, marginea de amplitudine, astfel, conform criteriului Bode, un sistem în buclă închisă este stabil dacă rezerva de fază corespunzătoare sistemului în buclă deschisă este pozitivă [6], condiție care în cazul sistemului prezentat țn lucrarea de față este îndeplinită.
Din analiza eficienței reglării rezultă că sistemul este stabil, deci regulatorul determinat cu ajutorul pidtool rezolvă problema.
Răspunsul la intrare treaptă al sistemului este reprezentat în figura 2.10.
Figura 2.10: Răspunsul la intrare treaptă al sistemului reglat
Suprareglajul sistemului este de 4,35%, iar timpul tranzitoriu este de 2,97 secunde. Sistemul este stabil în buclă închisă, deci regulatorul determinat cu ajutorul pidtool rezolvă problema.
Proiectarea și implementarea sistemului
Elementele principale ale sistemului sunt bila, rampa, senzorii (senzorul infraroșu si senzorul pentru detecția pozitiei axului motorului), elementul de execuție (motorul de curent continuu) și sistemul de reglare. Restul elementelor, cum ar fi stâlpii de susținere pentru rampă, platforma de la baza sistemului, comunicația serială care asigură funcționarea aplicației de urmărire pot fi considerate elemente ajutătoare, care îndeplinesc exclusiv rolul de a facilita studiul și posibilitatea testării mai multor algoritmi de reglare cu ajutorul sistemului de tip bilă-rampă. Utilitatea sistemelor de tip bilă-rampă în studiul sistemelor de reglare automată a fost evidențiată în subcapitolul 1.2, Utilitatea sistemelor tip bilă-rampă. Ca urmare, atât componenta hardware cât și componenta software au fost proiectate și implementate astfel încât să facă sistemul cât mai ușor de utilizat.
Obiectivul studiului realizat pe sistemul de tip bilă-rampă prezentat în lucrarea de față este alegerea și acordarea unui regulator care să permită stabilizarea bilei iar apoi implementarea acestuia cu ajutorul microcontrollerului. Controlul poziției bilei se face prin intermediul înclinării rampei astfel încât mișcarea bilei să fie compensată. Este important de notat faptul că funcția de transfer a procesului (relația 2.17) are doi poli în origine, ceea ce înseamnă că ridică o problemă de reglare destul de dificilă, iar criteriul modulului (varianta Kessler), utilizat pentru reglarea proceselor rapide având ca referință semnal de tip treaptă nu poate rezolva problema de reglare. În acest caz, criteriile de acordare experimentale sunt mai potrivite pentru un astfel de sistem. În practică, pentru acordarea regulatorului s-a folosit criteriul experimental Ziegler-Nichols, care presupune aducerea sistemului la oscilație crescând treptat parametrul Kp, apoi ajustarea parametrului Kd, până când răspunsul sistemului devine foarte lent, iar în final ajustarea parametrului Ki, până când răspunsul sistemului este potrivit pentru aplicația în care acesta este utilizat. Mai multe detalii legate de aceste aspecte, sunt prezentate în subcapitolul Proiectarea și implementarea componentei Software.
3.2 Arhitectura generală a sistemului
Figura 3.1: Arhitectura generală a sistemului de tip bilă-rampă
În figura 3.1 este reprezentată arhitectura generala a sistemului. Conform acesteia, poziția bilei este citită cu ajutorul senzorului Infraroșu, iar poziția axului motorului și implicit a rampei este citită cu ajutorul unui potențiometru logaritmic. Acestea sunt transmise microcontrollerului la pinii analogici A0 și A1. Deoarece ambii senzori sunt analogici, este necesară folosirea convertorului analog-digital cu care este dotat microcontrollerul pentru ca semnalele primite să poată fi prelucrate.
Este calculată eroarea, iar apoi datele sunt prelucrate cu ajutorul unei funcții care implementează un regulator de tip PID. Această funcție returnează, în funcție de datele primite, o valoare a semnalului PWM care se transmite la motor permițând înclinarea rampei și deci controlul poziției bilei.
Valoarea rezultată după rularea funcției care implementează regulatorul, poziția curentă a bilei și referința sunt apoi transmise aplicației de urmărire de pe PC, și afișate sub forma unui grafic. Pentru afișarea numerică a valorilor se poate folosi și displayul LCD.
Calculatorul poate fi folosit și pentru debugging în sensul că în funcție de graficele afișate se poate face o evaluare intuitivă a algoritmului de reglare utilizat.
Pe figura 3.2, regulatorul este reprezentat separat în cadrul microcontrollerului, ca fiind un bloc cu 4 intrări, pentru a se pune în evidență faptul că folosește parametri ai sistemului și că are cele trei componente proprii unui regulator de tip PID: proporțională, integrativă și derivativă.
Mai multe detalii despre structura fizică a sistemului, despre componenta software și despre algoritmul de reglare vor fi discutate în subcapitolele care urmează.
3.3 Componentele sistemului și rolul acestora
Pentru realizarea sistemului de tip bilă-rampă s-au folosit următoarele componente:
Componente Hardware:
Unelte Software folosite:
3.4 Proiectarea și implementarea componentei Hardware
Componenta Hardware a sistemului joacă un rol important în în buna funcționare a acestuia deoarece ea trebuie să asigure o oarecare robustețe sistemului, precum și ușurință în înlocuirea pieselor deteriorate. Un sistem mecanic bine gândit poate ușura munca de reglare în sensul eliminării unor anumite constante sau mai precis prin faptul că este permisă neglijarea acestora (exemple referitoare la sistemul de tip bilă-rampă ar fi frecarea dintre motor și sistemul de transmisie, lungimea mică a firelor nu adaugă rezistență, etc.)
Atât puntea H, cât și displayul și LCD-ul sunt montate pe o placă de plexiglas, separată de platforma experimentală.
În figura 3.2 este prezentată arhitectura fizică a sistemului.
Figura 3.2 Arhitectura generală a sistemului de tip bilă-rampă
Pentru simplificarea schemei, semnalele transmise între componente au fost simbolizate cu culoarea albastră, iar alimentarea componentelor a fost simbolizată cu culoarea roșie. În schema din figura 3.2 nu s-a făcut distincția între semnalele analogice și cele digitale, deoarece aceste aspecte vor fi discutate ulterior.
Sistemul este compus dintr-o bază constituită dintr-o placă din fier care acționează ca suport pentru întregul sistem. Rampa pe care se rostogolește bila are mijlocul gol. Ea este susținută la o înălțime care să permită balansarea acesteia în partea stânga și în partea dreapta cu ajutorul a doi suporți din fier montați de o parte și de alta a acesteia și de care este prinsă o plăcuță de aluminiu care ajută la transmiterea mișcării de la motor la potențiometrul folosit ca senzor pentru poziția axului motorului.
Rampa mai are montate la capete doua plăcuțe de aluminiu, dintre care una servște ca suport pentru senzorul cu Infraroșu, iar cealaltă ca și capăt de cursă pentru bila de cauciuc, care constituie elementul reglat al sistemului.
Microcontrollerul (uC) primește informații de la senzorul Infraroșu și de la senzorul de poziție al motorului, pe care le prelucrează, iar în funcție de acestea este calculat semnalul cu care este comandat, cu ajutorul punții H, motorul care înclină rampa. Asfel, mișcarea bilei este controlată cu ajutorul microcontrollerului.
Displayul poate fi utilizat pentru afișarea unor informații utile despre sistem, cum ar fi poziția curentă a bilei, referința sau comanda dată motorului. Comunicația între acesta și microcontroller se poate realiza cu ajutorul protocolului UART.
Calculatorul (PC) este folosit pentru a rula o aplicație de urmărire a sistemului care citește poziția curentă a bilei, referința, comanda dată motorului și eroarea de la portul serial și le afișează dinamic pe un grafic. Aplicația este scrisă în Matlab.
Displayul și motorul sunt alimentate prin intermediul unor acumulatori universali, iar microcontrollerul este alimentat de la portul USB, care este folosit și pentru trimiterea datelor spre aplicația de urmărire.
O schemă detaliată a construcției mecanice a platformei experimentale este reprezentată în figura 3.3.
Figura 3.3: Structura fizică detaliată a platformei experimentale
Bila din cauciuc se rostogolește liber pe rampa din oțel inoxidabil. Rampa este sprijinită la mijloc de o placa de aluminiu de care este prinsă în 4 șuruburi. Acest lucru permite rampei să se încline în concordanță cu rotația axului motorului. Funcționarea senzorului de poziție al axului motorului este discutată detaliat în subcapitolul 3.4.2 Sezorul de poziție a axului motorului.
Placa de aluminiu este conectată la axul motorului respectiv la senzorul de poziție al axului motorului cu ajutorul a doi cilindri de aluminiu prinși cu șuruburi, a doi rulmenți și a doua inele de siguranță care previn alunecarea acestora. Rampa are centrul gol, exceptând mijlocul, unde se sprijină pe placa de aluminiu. Este important de menționat că bila nu atinge placa de aluminiu atunci cand se rostogolește pe deasupra acesteia. Dacă acest lucru s-ar întâmpla, rezultatele experimentului ar fi neconcludente, deoarece acest fapt ar încetini bila, simulând astfel o falsă tendință de stabilizare. O secțiune prin centrul rampei este prezentată în figura 3.4.
Figura 3.4: Secțiune transversală prin centrul bilei și al rampei
Senzorul infraroșu folosit pentru detectarea poziției bilei este prins pe o placă de aluminiu aflată la unul dintre capetele rampei. Placa de aluminiu din celălalt capăt al rampei servește ca și capăt de cursă prevenind alunecarea bilei de pe rampă. Mai multe detalii despre senzorul de poziție a bilei vor fi discutate în cadrul subcapitolului 3.4.1 Senzorul de poziție a bilei.
Punctele de sprijin montate cu șuruburi de o parte și de alta a rampei asigură faptul că aceasta este susținută la o înălțime care permite înclinarea atât la stânga cât și la dreapta fără ca rampa să lovească suprafața pe care este așezat sistemul. De asemenea, punctele de sprijin sunt folosite si ca suport pentru motor astfel încât să nu fie nevoie de un mecanism de transmisie cu curea sau lanț. Înălțimea la care se află motorul și distanța față de placa de aluminiu pot fi reglate, astfel încât cilidrul de aluminiu care face legătura între placa de aluminiu și axul motorului să poată fi înlocuit cu ușurință în caz de deteriorare.
Pe fața inferioară a bazei platformei experimentale este lipit un covor de cauciuc care să prevină alunecarea sistemului în timpul funcționării.
3.4.1 Senzorul de poziție a bilei
Un senzor infraroșu este o componentă electronică utilizată pentru detecția anumitor caracteristici ale mediului înconjurător prin emisia și/sau detecția de radiații infraroșii. Senzorii cu radiație infraroșie conțin un emițător și un receptor. În general, aceștia sunt încapsulați în aceeași carcasă dar pot fi achiziționați și separat.
Emițătorul produce radiație infraroșie care se reflectă de pe suprafața obiectelor aflate la o anumită distanță, dependentă de raza de acțiune a senzorului. Unda reflectată este detectată de către receptor, iar distanța este proporțională cu timpul care a trecut între emisia și recepția radiațiilor. La ieșire se poate citi o tensiune proporțională cu această distanță. [13]
În urma conversiei analog-digitale, rezultă valori între 0 și 1024.
Principiul de funcționare al unui senzor cu radiații infraroșii este exemplificat grafic în figura 3.5.
Figura 3.5: Principiul de funcționare al senzorului de proximitate cu radiații infraroșii
Pentru detectarea poziției bilei pe rampă s-a folosit un senzor infraroșu de proximitate SHARP GP2D120X00JF, reprezentat în figura 3.6. Acesta a fost montat cu ajutorul a două șuruburi pe unul dintre capetele rampei.
Figura 3.6: Senzorul de proximitate SHARP GP2D120X00JF
Modelul reprezentat în figura 3.6 este un senzor analogic. Acesta poate detecta obiecte aflate la distațe între 30 și 400 de milimetri. Pentru a asigura funcționarea corectă a senzorului, acesta trebuie să fie alimentat cu 5 V. De asemenea, pentru conectarea la microcontroller, este necesar un cablu cu 3 pini; prin intermediul unuia se face alimentarea, iar de la cel de-al 3lea se citește o tensiune proporțională cu distanța la care se află obiectul detectat. [12]
Prima citire a datelor de la senzor se poate face după aproximativ 40ms, iar citirile ulterioare se pot face din 5 în 5 milisecunde. [12]
Tensiunea citiă atunci când obiectul până la care se află distanța este la 400 de milimetri de senzor este de 0.4 volți, aceasta corespunzând valorii 0 citite de la senzor iar tensiunea citită atunci când obiectul este la 30 de milimetri de senzor este de aproximativ 5 volți, aceasta corespunzând valorii 1024 citite de microcontroller de la senzor. Altfel spus, când bila se deplasează 1 centimetru, tensiunea citită de la senzor variază cu 0,13 volți.
3.4.2 Senzorul de poziție a axului motorului
Un potențiometru este un rezistor cu 3 terminale și cu cursor care formează un divisor de tensiune variabil.[14]
Pentru detectarea poziției axului motorului și implicit a poziției rampei s-a folosit un potențiometru logaritmic cu rezistența de 1kΩ. Acesta este conectat la axul motorului prin intermediul unui cilindru de aluminiu și al unui șurub, conectate la rândul lor cu placa de aluminiu care servește drept suport pentru mijlocul rampei. Modul în care este conectat potențiometrul cu placa de aluminiu este reprezentat în figura 3.7.
Figura 3.7: Conexiunea dintre potențiometru și placa de aluminiu
Atunci când axul motorului se rotește, rampa și placa de aluminiu se înclină și ele iar configurația din figura 3.7 permite ca axul potențiometrului să se invârtă odată cu acestea, astfel tensiunea citită la pinul analogic fiind proporțională cu poziția axului motorului. În urma conversiei analog-digitale, rezultă valori între 0 și 1024.
Potențiometrul este alimentat la unul dintre terminale cu 5V, celălalt este legat la masă, iar de pe cel de-al treilea se culege o tensiune proporțională cu rezistența[15]. Modul în care este legat potențiometrul în circuit este reprezentat în figura 3.8.
Figura 3.7: Modul de folosire al potențiometrului pentru măsurarea poziției axului motorului
Având în vedere faptul că la fel ca și senzorul pentru detectarea poziției bilei, de la senzorul pentru detectarea poziției motorului este citită o tensiune proporțională cu poziția rampei între 0 și 5 volți, putem spune ca tensiunea citită de la senzor variază cu aproximativ 0,0138 volți pe grad sau 0,138 volți pentru un unghi de 10 grade.
3.4.3 Reducerea zgomotului datorat funcționării motorului
Motoarele de curent continuu sunt folosite la scară largă atât în aplicații industriale cât și în proiecte de tip hobby. O problemă care intervine în utilizarea acestora este zgomotul electric pe care îl produc la funcționare și care poate afecta precizia celorlalți senzori din sistem.
Această problemă se poate rezolva însă ușor și cu costuri reduse, lipind condensatori ceramici de 0,1F între bornele motorului sau între bornele motorului și carcasa acestuia. [16] Există trei configurații utilizate:
Lipirea unui singur condensator între cele două borne ale motorului
Lipirea a două condensatoare, de la fiecare bornă a motorului la carcasa acestuia
Lipirea a trei condensatoare, de la fiecare bornă a motorului la carcasa acestuia și între cele două borne
Prima dintre configurații prezintă cea mai mica eficiență dintre cele trei, iar cea de-a treia este cea mai eficientă. Cu toate acestea, cea de-a doua este cea mai utilizată. [16]
Pentru sistemul prezentat în lucrarea de față, s-a folosit cea de-a doua configurație, fiind lipit câte un condensator de la fiecare bornă a motorului la carcasa motorului.
Este de asemenea important de reținut faptul că în cazul aplicațiilor care implică control bidirecțional a motorului, ca și cea de față, trebuie folosiți condensatori nepolarizați. [16]
3.5 Proiectarea și implementarea componentei Software
Pe durata dezvoltării componentei software pentru acest proiect, s-au avut în vedere două criterii:
Simplitate
Claritate
S-a urmărit implementarea într-un mod cât mai simplu a tuturor funcțiilor pentru microcontroller, astfel încât studiul și dezvoltarea ulterioară a ideii să poată fi făcute cu cât mai multă ușurință. Pentru a face codul scris cât mai clar și mai ușor de înțeles, acesta a fost comentat în intregime.
După pornirea programului (START), are loc o etapă de configurare a plăcii de dezvoltare, în care sunt definite numerele pinilor, precum și modul acestora (input/output). Tot în această etapă, este inițializată comunicația serial la 9600 baud. Sunt, de asemenea, inițializate variabilele globale ale programului.
În următoarea etapă a programului, are loc citirea datelor de la senzori, necesare pentru calculul erorii și al semnalului de comandă al motorului.Dacă referința și poziția bilei sunt diferite (error!=0), este calculat un semnal de comandă cu ajutorul regulatorului, care este transmis mai apoi la motor, rampa se înclină spre stânga sau spre dreapta (depinzând de semnul erorii), iar poziția bilei este corectată. Dacă eroarea este 0, funcția care calculează comanda către trebuie trimisă la motor este totuși apelată, însă valoarea de la ieșirea acesteia este 0, iar rampa nu se înclină.
În faza de comunicție serială, poziția curentă a bilei, eroarea, comanda și referința sunt trimise la portul serial al calculatorului, preluate de aplicația de urmărire scrisă în Matlab și afișate pe monitor sub formă grafică.
Rata de eșantionare este de 100 de milisecunde, ceea ce înseamnă ca o nouă comandă este calculată și trimisă motorului o dată la 100 de milisecunde.
În programul scris pentru controlul sistemului, temporizarea a fost implementată cu ajutorul funcției delay, apelată astfel:
Delay(time);
În cele ce urmează, vor fi detaliate funcțiile implementate pentru citirea datelor de la senzori și pentru determinarea comenzii, sau, altfel spus, funcția care implementează un regulator pentru sistem. De asemenea, sunt discutate și funcțiile implementate pentru rotirea la dreapta, respectiv la stânga a axului motorului.
Diagrama de activitate software pentru sistemul de tip bilă-rampă este reprezentată în figura 3.8.
Figura 3.8: Diagrama de activitate software
3.5.1 Funcția pentru citirea datelor de la senzori
Citirea datelor de la senzori se face cu ajutorul funcției read_sens. Aceasta a fost scrisă pentru a permite citirea datelor de la un senzor conectat la un pin analogic. Pinul de la care se citeste valoarea este transmis funcției din bucla principal, sub formă de argument. După ce se face citirea, valoarea este returnată în bucla principală a programului, pentru a fi prelucrată și folosită la calculul comenzii.
Pentru a crește precizia datelor citite de la senzori, este folosit procedeul numit supraeșantionare. Acest lucru presupune ca în cadrul unei bucle while inclusă în funcție se face un anumit număr de citiri consecutive a senzorului, cu ajutorul cărora se face o medie.
Funcția read_sens este reprezentată prin următorul extras din cod:
//functie pentru citirea valorilor de la senzori
int read_sens(int pin)
{
//local variables
int val=0; //valoare citita de la senzor
int val1=0; //suma valorilor
int ret_val=0;//valoarea returnata
while (i<=10)
{
val = analogRead(pin); //citeste valoarea de la senzor
val1+=val; i++; //contor+
delay(5); //pregatire pentru urmatoarea citire
}
ret_val=(int)val1/10; //media valorilor
return ret_val; //returneaza valoarea
}
3.5.2 Implementarea regulatorului. Funcția pid_control
Scopul funcțeiei pid_control este acela de a calcula valoarea potrivită a semnalului PWM. Acest lucru s-a realizat prin implementarea unui regulator PID.
Pentru implementarea mai facilă în limbajul de programare C, s-a folosit un regulator PID viteză. Forma discretă a regulatorului PID evidențiată în formula (2.27) se mai numește si forma PID poziție a regulatorului. Având la dispoziție forma pozițională, forma viteză se poate deduce astfel[17]:
Se scrie forma pozițională a regulatorului PID (relația 2.27):
Se întârzie cu un eșantion forma PID poziție:
Se scade din relația 3.1 forma pozițională a algoritmului PID, adică cea din relația (2.27), obținându-se astfel forma PID viteză, folosită pentru implementarea regulatorului în programul scris pentru microcontroller:
Regulatorul implementat va avea, astfel, 3 blocuri:
Blocul proportional:
Blocul integrativ:
Blocul derivativ:
Deși problema de reglare se poate rezolva teoretic cu ajutorul regulatorului determinat cu pidtool în Matlab, procedeu detaliat în subcapitolul 2.2.3 Analiza sistemului. Determinarea legii de reglare cu ajutorul pidtool, în practică mai există unii parametric care trebuie luați în seamă, cum ar fi inerția rampei, materialul din care e făcută bila, faptul că motorul are un raport de transmisie de 29:1. S-a recurs așadar la alegerea și acordarea unui regulator cu ajutorul criteriului experimental Ziegler-Nichols. Pentru o acordare reușită a regulatorului folosind acest criteriu, trebuie urmați următorii pași:
Componenta proporțională, componenta integrativă și componenta derivativă se aduc la zero;
Se modifică în sens crescător componenta proporțională până câns sistemul intră în oscilație;
Se modifică în sens crescător componenta derivativă până când sistemul răspunde foarte lent;
Se modifică în sens crescător componenta integrativă până cănd raspunsul sistemului este acceptabil
În urma acordării regulatorului cu ajutorul criteriului Ziegler-Nichols, au rezultat următorii parametri:
kp=0.1; //constanta proportionala
kd=1.97; //constanta derivativa
ki=0.000093; //constanta integrativa
După determinarea acestor parametrii, funcția pid_control a fost implementată după cum urmează:
//functie care calculează valoarea comenzii
int pid_control(int err, int err1, int err2, int pid1)
{
//variabile locale
float ts=0.1; //timp de esantionare
float kp=0.1; //constanta proportionala
float kd=1.97; //constanta derivativa
float ki=0.000093; //constanta integrativa
float proportional; //blocul proportional
float integrative; //blocul integrativ
float derivative; //blocul derivativ
float pid; //pid float
int pido; //pid care va fi returnat
// pid viteza
proportional=kp*(err-err1);
integrative=((kp*ts)/ki)*err;
if (integrative>0.03)
{
integrative=0; // limita integrator, prevenire saturatie
}
derivative=((kp*kd)/ts)*(err-2*err1+err2);
pid=pid1+proportional+integrative+derivative;
pido=(int)pid*0.34; //constanta motorului 29:1
pido=abs(pido);
if (pido>=90) //limitare
{
pido=90;
}
if (pido<0);
{
pido=abs(pido); //directia e schimbata dupa semnul erorii, nu al comenzii
if (pido>90)
{
pido=90;
}
}
return pido; //valoare returnata in bucla principala
}
Variabila returnată în bucla principală, pido, este de fapt valoarea semnalului PWM cu care este comandat motorul. Valoarea 0.34 reprezintă raportul de transmisie al motorului, iar valoarea maximă a semnalului PWM (90) a fost determinată experimental.
3.5.3 Controlul direcției motorului. Funcțiile left și right.
În controlul sistemului de tip bilă-rampă este nevoie de controlul bidirectional al motorului, fiind nevoie ca acesta să poată sa incline rampa atât la dreapta cât și la stânga. Direcția în care trebuie să se rotească axul motorului se poate deduce cu ușurință din semnul erorii. Dacă eroarea este negativă, rampa trebuie să se încline la dreapta, iar dacă eroarea este pozitivă rampa trebuie să se încline la stânga. Modul în care au fost determinați parametrii care defines dreapta și stânga va fi discutat mai detaliat în capitolul 4, Testarea Sistemului, Subcapitolul
Controlul direcției de rotație a axului motorului se face cu ajutorul pinului digital de direcție al punții H PMOD HB3. Dacă pinul are starea logică 0, axul motorului se va învârti la stânga. Dacă are starea logică 1, axul motorului se va învârti la dreapta. Pentru a nu distruge puntea H, schimbarea direcției motorului trebuie făcută doar atunci când semnalul PWM (comanda) are valoarea 0.
Pentru a realiza schimbarea de direcție în siguranță și pentru a face codul mai ușor de înteles și studiat, au fost implementate următoarele funcții:
//motor stanga
void left(int com)
{
analogWrite(enable, 0); //directia se schimba doar cand PWM=0
digitalWrite(dir,LOW); //schimba directia
analogWrite(enable, com);//comanda motor
delay(10);
}
//motor dreapta
void right (int com)
{
analogWrite(enable,0); //directia se schimba doar cand PWM=0
digitalWrite(dir,HIGH); //schimba directia
analogWrite (enable, com);//comanda motor
delay(10);
}
Funcțiile left și right primesc ca argument comanda calculate ca fiind necesară pentru controlul poziției bilei, adică variabila pido (sub numele de com). Ele sunt apelate în funcție de semnul erorii.
3.5.4 Aplicația de urmărire a sistemului
Pentru o mai bună înțelegere a funcționării sistemului prezentat în lucrarea de față, precum și pentru a permite o evaluare rapidă, intuitivă a eficienței algoritmului de reglare, a fost scrisă o aplicație de urmărire a evoluției sistemului. Aplicația primește date la portul serial, le prelucrează și le afișează în mod dinamic sub forma a două grafice; pe unul dintre ele sunt reprezentate comanda și eroarea în funcție de timp, iar pe celălalt sunt reprezentate poziția curentă a bilei și referința.
Datele sunt transmise de la microcontroller la calculator cu ajutorul unui cablu USB; microcontrollerul este însă dotat cu un chip FTDI (abrevierea vine de la Future Technology Device International), care permite conversia RS232-USB, astfel înât datele pot fi transmise cu ajutorul unui cablu USB, simulând totuși un port serial, fapt care permite calculatoarelor mai noi, care nu sunt dotate cu port serial să comunice cu dispozitive mai vechi. Microcontrollerul Chipkit uC32 este dotat cu un astfel de chip.
Pentru a efectua transmisia datelor de la microcontroller la portul USB este necesar ca parametrii comunicației sa fie setați din program în primă fază. În programul scris pentru sistemul de tip bilă-rampă prezentat în lucrarea de față, acest lucru se face cu ajutorul instrucțiunii Serial.begin(9600), unde 9600 este viteza de transmisie a datelor în simboluri pe secundă [20]. Această instrucțiune este apelată o singură dată, în faza de configurare a microcontrollerului, unde sunt inițializate și variabilele globale și pinii.
Trimiterea datelor la portul serial se face cu ajutorul instrucțiunii Serial.print(date), unde date poate fi o valoare numerică sau un șir de caractere. În cazul aplicației de urmărire pentru sistemul de tip bilă-rampă, sunt trimise patru valori numerice:
Poziția curentă a bilei
Referința
Comanda
Eroarea
Pentru a putea fi prelucrate, datele trebuie preluate de la portul serial de către mediul Matlab. Datele pot fi citite cu destulă ușurință, dat fiind faptul că mediul Matlab are implementate funcții de citire și scriere la portul serial. Singura condiție pentru ca acestea să poată fi folosite este crearea unui obiect de tip serial, iar apoi deschiderea portului, astfel:
serialPort = 'COM6';
s = serial(serialPort);
fopen(s);
Citirea datelor se face cu ajutorul instrucțiunii dat = fscanf(s,'%f'). În cazul aplicației de urmărire dezvoltate pentru sistemul prezentat în lucrarea de față, dat este un vector cu o coloană și patru linii în care se păstrează pe prima poziție poziția curentă a bilei, pe cea de-a doua eroarea, pe ce de-a treia comanda iar pe cea de-a patra referința.
Aplicația în stare de funcționare este reprezentată în figura 3.9.
Figura 3.9. Aplicația de urmărire a sistemului de tip bilă-rampă
Pe axele x ale celor doua grafice este redat timpul care s-a scurs de când sistemul a fost pus în funcțiune. Pe axele y ale graficelor sunt redate comanda și eroarea, respective poziția și referința.
Pentru afișarea dinamică a axelor x s-au folosit instrucțiunile tic și toc. Instrucțiunea tic are rolul de a porni un cronometru, iar cu ajutorul instrucțiunii toc se poate extrage timpul scurs de la pornirea cronometrului. Timpul scurs a fost salvat într-un vector la fiecare citire a datelor, iar apoi folosit pentru afișare.
Pentru a da senzația de dinamism figurii, graficele sunt redesenate după fiecare citire a datelor de la portul serial.
Aplicația funcționează doar atât timp cât figura este deschisă, ea fiin oprită a închiderea figurii cu ajutorul butonului x din dreapta sus. Acest lucru s-a realizat folosind ca și condiție de execuție a buclei principale a programului existența identificatorului figurii deschise. Acesta se poate obține astfel:
h=gcf;
Condiția ca bucla principală să se execute cât timp acest identificator există a fost pusă astfel:
while ishandle(h)
%citire si afisare date
End
Testarea sistemului
Pentru o mai bună înțelegere atât a modului în care funcționează sistemul, cât și a modului în care funcționează fiecare componentă în parte și a datelor citite de la senzori, se poate realiza o testare pe componente a sistemului. Acest lucru permite nu numai înțelegerea funcționării globale a sistemului, ci și descoperirea unor eventuale probleme în programul scris pentru microcontroller, iar apoi rezolvarea lor.
Testarea componentelor sistemului s-a făcut începând cu senzorul pentru detectarea poziției axului motorului, apoi s-a trecut la senzorul cu infraroșu folosit pentru detectarea poziției bilei, ambele cu ajutorul funcției read_sens, iar în cele din urmă a fost testată funcția pid_control, care implementează regulatorul PID în program.
Aplicația de urmărire scrisă în Matlab permite, de asemenea, o evaluare intuitivă a eficienței agoritmului de reglare.
Testarea senzorului de poziție a axului motorului
Senzorul de poziție a axului motorului este constituit, așa cum s-a discutat în cadrul capitolului 3, subcapitolul 3.4.2 Sezorul de poziție a axului motorului, dintr-un potențiometru logaritmic cu rezistența de 1 kΩ conectat la mecanismul de transmisie al motorului cu ajutorul unui cilindru de aluminiu și al unui șurub.
Folosind funcția read_sens, au fost trimise la portul serial valori citite de la sensor, iar apoi acestea au fost reprezentate grafic cu ajutorul mediului Matlab. Rezultatele obținute sunt reprezentate în figura 4.1.
Figura 4.1 Reprezentarea grafică a mișcării axului motorului, respectiv a rampei
După cum se poate observa în figura 4.1, înclinând rampa la stânga și la dreapta s-au obținut valori între 530 și 1024. Media acestor valori, deci referința pentru poziția motorului, reiese din calculul mediei aritmetice ca fiind 777. După rularea scriptului Matlab folosit pentru reprezentarea grafică însă, media valorilor citite a reieșit ca fiind 776,06.
Testarea senzorului pentru detectarea poziției axului motorului a fost importană în special în dezvoltarea funcțiilor left și right, deoarece acestea conferă secțiunii de cod care se ocupă de controlul motorului mai multă inteligibilitate.
În cazul aplicației de control scrise pentru sistemul de tip bilă-rampă prezentat în lucrarea de față, valorile mai mari decât 776 au fost considerate ca însemnând rotirea axului la dreapta, iar valorile mai mici decât 776 au fost considerate ca semnificând rotirea axului, și deci înclinarea rampei la stânga.
Testarea senzorului de poziție a bilei
Pentru detectarea poziției bilei pe rampă s-a folosit un senzor de proximitate cu radiații infraroșii, și anume SHARP GP2D120X00JF. Atât modul în care acesta a fost montat pe unul dintre capetele rampei cât și principiul de funcționare al senzorilor cu radiații infraroșii au fost discutate în cadrul capitolului 3, subcapitolul 3.4.1 Senzorul de poziție a bilei.
Testarea senzorului s-a realizat, ca și în cazul senzorului folosit pentru detectarea poziției axului motorului, cu ajutorul funcției read_sens. La fel ca și în cazul anterior, datele citite de la senzor au fost trimise la portul serial iar apoi preluate și reprezentate grafic cu ajutorul mediului Matlab. Rezultatele obținute sunt reprezentate în figura 4.2
Figura 4.2: Reprezentarea grafică a mișcării bilei pe rampă
Din figura 4.2 se poate observa că valorile obținute atunci când bila se rostogolește liber pe rampă, de la dreapta la stânga variază între 130 și 970. Din calculul mediei aritmetice, precum și din reprezentarea grafică din figura 4.2 reiese faptul că mijlocul rampei, adică poziția de referință pentru bilă, se află la valoarea 550.
Testarea senzorului pentru detectarea poziției bilei a fost importantă, de asemenea, în controlul direcției de rotație a axului motorului deoarece, așa cum s-a discutat în capitolul 3, subcapitolul 3.5.3 Controlul direcției motorului. Funcțiile left și right., direcția de rotație a axului motorului este dependentă de semnul erorii. Astfel, dacă eroarea este negativă rampa se va înclina în partea dreaptă, iar dacă eroarea este pozitivă, rampa se va înclina în partea stângă.
Comanda dată de regulator
După implementarea funcției pid_control, ulterior testării senzorilor, obținute după calcului regulatorului, au fost, ca și în cazurile anterioare, trimise la portul serial, apoi citite și reprezentate sub formă de grafic cu ajutorul mediului Matlab.
Modul de implementare al regulatorului, precum și parametrul cu care acesta a fost scalat (raportul de transmisie al motorului, egal cu 0.34), au fost discutate în cadrul capitolului 3, subcapitolul 3.5.2 Implementarea regulatorului. Funcția pid_control.
Rezultatele obținute în urma rulării programului sunt reprezentate în figura 4.3.
Figura 4.3: Reprezentarea grafică a comenzii la ieșirea regulatorului PID
Rezultatele din figura 4.3 au fost obținute pentru mișcări aleatoare ale bilei, pe întreaga lungime a rampei, mișcări reprezentate în figura 4.2.
Este important de notat faptul că în etapa de testare accentul a căzut nu atît pe rezolvarea problemei de reglare cât pe implementarea algoritmului în sine.
Concluzii
Realizări
Obiectivele proiectului au fost îndeplinite.
S-a construit o platformă fizică pentru efectuarea experimentelor simplă, ușor de montat și demontat și cu costuri reduse, marea majoritate a pieselor fiind rebuturi achiziționate de la o firmă care se ocupă cu prelucrarea metalelor.
Sistemul a fost modelat cu ajutorul legilor lui Newton, iar modelul matematic obținut a fost simulat la diferite scenarii cu ajutorul mediului Matlab.
A fost implementat și acordat un regulator care permite stabilizarea bilei, cu ajutorul criteriului experimental Ziegler-Nichols.
Microcontrollerul a fost programat cu ajutorul mediului MPIDE.
A fost dezvoltată o aplicație de urmărire pentru sistem în mediul Matlab.
Probleme întâlnite
Cea mai importantă problemă, care a fost rezolvată printr-o schimbare de design, a fost întâmpinantă în faza de testare a sistemului. Inițial, rampa era făcută din Plexiglas, iar senzorul folosit pentru detectarea poziției bilei era constituit din nichelină și trebuia să se comporte ca un divisor de tensiune. Acesta a fost lipit de rampă cu ajutorul unui adeziv. Cu toate că excesul de adeziv fusese îndepărtat, contactul dintre bilă și senzor era foarte slab, atât datorită faptului ca diametrul firului rezistiv era relativ mic (0,5 mm) cât și faptului că pentru un contact bun, bila trebuia menținută perfect curată, lucru imposibil deoarece aceasta trebuia manevrată în timpul fazei de testare a sistemului. Astfel, datele citite de la senzorul pentru detectarea poziției bilei erau neconcludente.
Problema a fost rezolvată schimbând rampa făcută din Plexiglas cu una din oțel inoxidabil, bila de metal cu o bilă de cauciuc, iar senzorul cu fir rezistiv cu un senzor cu radiații infraroșii.
Direcții de dezvoltare
Pe viitor, sistemul poate fi îmbunătățit prin implementarea, pe lângă reglarea clasică, și a altor algoritmi de reglare, cum ar fi reglarea adaptivă, reglarea în cascadă sau reglarea după stare, eventual adaugând un modul de selecție între acesști algoritmi cu ajutorul butoanelor.
De asemenea, designul se poate extinde la un sistem de tip bilă-plan, care presupune reglarea poziției bilei pe două axe.
6 Bibliografie
[1] Wellstead P. Ball and Beam 1: Basics. 1st ed. Available at: http://www.control-systems-principles.co.uk/whitepapers/ball-and-beam1.pdf.
[2] SRV02 Ball and Beam, 1st ed. Quanser Available at: http://www2.hawaii.edu/~gurdal/EE351L/bb.pdf
[3] Virseda M., Modeling and Control of the Ball and Beam Process, 1st ed., ; 2004. Available at http://control.lth.se/documents/2004/5736.pdf
[4]elen.utah.edu/~bodson/fun/index.html
[5]Dulău M, Oltean S.E., Modelare și simulare Curs, Editura UPM, 2008
[6] Oltean S.E., Teoria Sistemelor I Curs, Editura UPM, 2009
[7]Wikipedia. Legile lui Newton, httpȘ//ro.wikipedia.org/Legile_lui_Newton
[8]http://en.wikipedia.org/wiki/Controller_(control_theory)
[9]Voicu, M. Introducere în automatică, Editura Polirom, 2002
[10] http://en.wikipedia.org/wiki/Feed_forward_(control)
[11]Dulău, M. Ingineria Sistemelor Automate I, Îndrumător de laborator
[12] http://www.robofun.ro/docs/GP2D120XJ00F_SS.pdf
[13] http://en.wikipedia.org/wiki/Proximity_sensor
[14] http://en.wikipedia.org/wiki/Potentiometer
[15] http://sound.westhost.com/pots.htm
[16]http://www.pololu.com/docs/0J15/9
[17]http://lorien.ncl.ac.uk/ming/digicont/digimath/dpid1.htm
[18]Wescott, T. PID Without a PhD Available at http://cms.edn.com/contenteetimes/documents/embedded.com/2000/f-wescot.pdf
[19]http://en.wikipedia.org/wiki/FTDI
[20] http://en.wikipedia.org/wiki/Baud
Anexa A: Fotografie a sistemului de tip bilă-rampă
Anexa B: Schema explodată a sistemului de tip bilă-rampă
Cod?
6 Bibliografie
[1] Wellstead P. Ball and Beam 1: Basics. 1st ed. Available at: http://www.control-systems-principles.co.uk/whitepapers/ball-and-beam1.pdf.
[2] SRV02 Ball and Beam, 1st ed. Quanser Available at: http://www2.hawaii.edu/~gurdal/EE351L/bb.pdf
[3] Virseda M., Modeling and Control of the Ball and Beam Process, 1st ed., ; 2004. Available at http://control.lth.se/documents/2004/5736.pdf
[4]elen.utah.edu/~bodson/fun/index.html
[5]Dulău M, Oltean S.E., Modelare și simulare Curs, Editura UPM, 2008
[6] Oltean S.E., Teoria Sistemelor I Curs, Editura UPM, 2009
[7]Wikipedia. Legile lui Newton, httpȘ//ro.wikipedia.org/Legile_lui_Newton
[8]http://en.wikipedia.org/wiki/Controller_(control_theory)
[9]Voicu, M. Introducere în automatică, Editura Polirom, 2002
[10] http://en.wikipedia.org/wiki/Feed_forward_(control)
[11]Dulău, M. Ingineria Sistemelor Automate I, Îndrumător de laborator
[12] http://www.robofun.ro/docs/GP2D120XJ00F_SS.pdf
[13] http://en.wikipedia.org/wiki/Proximity_sensor
[14] http://en.wikipedia.org/wiki/Potentiometer
[15] http://sound.westhost.com/pots.htm
[16]http://www.pololu.com/docs/0J15/9
[17]http://lorien.ncl.ac.uk/ming/digicont/digimath/dpid1.htm
[18]Wescott, T. PID Without a PhD Available at http://cms.edn.com/contenteetimes/documents/embedded.com/2000/f-wescot.pdf
[19]http://en.wikipedia.org/wiki/FTDI
[20] http://en.wikipedia.org/wiki/Baud
Anexa A: Fotografie a sistemului de tip bilă-rampă
Anexa B: Schema explodată a sistemului de tip bilă-rampă
Cod?
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Controlul Unui Sistem de Tip Bila Rampa (ID: 162252)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
