Realizarea Unui Robot de Mici Dimensiuni
Capitolul 1: Introducere
1.1. PREZENTAREA TEMEI
Scopul proiectului constă în realizarea unui robot de mici dimensiuni care să poată detecta și urmarii obiectele intalnite în calea sa fără intervenție umană.
Deși proiectul este un ansamblu mic acesta ilustrează posibilitatea folosirii mai multor senzori impreună cu un microcontroller pentru a crea un sistem ce poate lua decizi în funcție de ceea ce detectează în mediul înconjurător. Un astfel de sistem poate fi folosit atât in locurile inacesibile omului pentru deplasare autonomă cât și în automobilele pe care le conducem. In momentul actual se incearcă introducerea de diferiți senzori în interiorul sau exteriorul automobilelor care să avertizeze șoferul sau chiar să ia decizii in locul acestuia dacă detectează un posibil pericol.
Pentru realizarea sistemului, am avut în vedere atingerea următoarelor obiective generale:
• Controlarea modului de lucru al robotului;
• Detectarea obiectelor utilizând 3 senzori infraroșii;
• Achiziția semnalului de la senzori folosind un microcontroller;
• Obținerea unei decizii de direcție;
• Acționarea motoarașelor de curent continuu și cel servo;
1.2. CONTEXT
Sensul cuvântului robot s-a schimbat de-alungul timpului. Termenul (din cehă robot) a fost utilizat de Josef Čapek și Karel Čapek în lucrările lor de science fiction la începutul secolului 20. Cuvântul robot este de origine slavă și se poate traduce prin: muncă, clacă sau muncă silnică. Karel Čapek a descris în piesa sa R.U.R. din anul 1921 muncitori de asemănare umană, care sunt crescuți în rezervoare. Čapek folosește în lucrarea sa motivele clasice de golem. Denumirea de astăzi a creaturilor lui Čapek este de android. Înaintea apariției termenului de robot s-au utilizat de expemplu în uzinele lui Stanisław Lem termenii automat și semiautomat.
Bazele roboților de azi stau mult mai departe. Primele modele de mașini pot fi mai degrabă numite automate. Acestea nu puteau executa decât câte un singur obiectiv, fiind constrânse de construcție.
Matematicianul grec Archytas a construit, conform unor relatări, unul dintre aceste prime automate: un porumbel propulsat cu vapori, care putea zbura singur. Acest porumbel cavernos din lemn era umplut cu aer sub presiune. Acesta avea un ventil care permitea deschiderea și închiderea printr-o contragreutate.
Cu descoperirea ceasului mecanic din secolul XIV s-a deschis calea unor posibilități noi și complexe. Nu mult după aceea au apărut primele mașini, care semănau îndepărtat cu roboții de azi. Posibil era însă numai ca mișcările să urmeze una după alta, fără să fie nevoie de intervenția manuală în acel sistem.
Dezvoltarea electronici din secolul XX a adus cu sine și o dezvoltare a roboticii. Printre primii roboți mobili se numără sistemul Elmer și Elsie construit de William Grey Walter în anul 1948. Aceste triciclete se puteau îndrepta spre o sursă de lumină și puteau să recunoască coliziuni în împrejurimi.
Fig. 1.1 “Elmer și Elsie”
Roboții exploratori sunt roboți care operează în locații greu accesibile și periculoase teleghidați sau parțial autonom. Aceștia pot lucra de exemplu într-o regiune aflată în conflict militar, pe Lună sau Marte. O navigare teleghidată de pe pământ în ultimele două cazuri este imposibilă din cauza distanței. Semnalele de comunicatie ajung la destinatie in cateva ore , iar receptionarea lor dureaza la fel de mult. În astfel de situații roboții trebuie să fie programați cu mai multe tipuri de comportare, din care ei să aleagă pe cel mai adecvat și să-l execute.
Acest tip de robot dotat cu senzori a fost folosit și la cercetarea puțurilor din piramide. Mai mulți cryoboți au fost deja testați de NASA în Antarctica. Acest tip de robot poate pătrunde până la 3.600 de m prin gheață. Cryoboți pot fi astfel folosiți în cercetarea capelor polare pe Marte și Europa în speranța descoperirii de viață extraterestră.
La data de 17 noiembrie 1970 naveta sovietică Luna 17 a aterizat pe Lună primul robot controlat de la distanță . Cunoscut sub numele de Lunokhod 1, acesta cântărea sub 950 de kg și a fost proiectat să funcționeze timp de 90 de zile, ce era ghidat în timp real de o echipa de cinci persoane de la Deep Space Center lângă Moscova, URSS. Lunokhod a funcționat pe Lună in Marea Ploilor timp de 11 luni într-una dintre cele mai mari succese ale programului sovietic de explorare lunară.
Fig. 1.2 “Lunokhod 1”
Aproape jumătate din roboți de pe pământ se afla în Asia, 32% în Europa, 16 % în America de Nord și în procent de câte 1% în Australia și în Africa. Japonia deține 30% din roboții lumii fiind țara cu cel mai mare număr de roboți.
În Japonia ideile despre noi roboți au fost în general pozitive iar începutul societății pro-robotice a fost posibilă datorită faimosului robot "Astro Boy". Aceste țări asiatice considera roboții ca fiind aproape egali omenilor, lucru ce a dus la crearea de roboți care îngrijesc bătrânii, roboți care se joacă și învață copii sau roboți care înlocuiesc animalele de companie.
Pe de altă parte țările din vest sunt împotriva și chiar se tem de dezvoltarea robotici datorită filmelor și cărților ce prezintă roboți ce pot înlocui sau chiar extermina omenirea.
Multe aplicații cu roboți au fost evidente pentru omenire, deși erau peste posibilitățile roboților ce existau în momentul previziunilor. Încă din 1982 mulți oameni erau siguri că într-o zi roboții vor: vopsi automobile fără prezența umană, vor așeza produse în cuti, vor realiza cabluri electrice, vor încărca camioane cu cuti și vor asambla diferite componente în sisteme complexe.
Cu cât roboții devin mai avansați există posibilitatea dezvoltări unui sistem standard de operare specializat pentru roboți. Robot Operating System este un program open-source care este dezvoltat de Stanford University, Massachusetts Institute of Technology, Technical University of Munich cât și alte universități. ROS asigura modalități de programare a roboților indiferent de specificațiile hardware ale acestora. Când ROS ar rula pe un robot va obține date despre robot în ceea ce privește lungimea brațelor și mișcările posibile etc.
Lumina infraroșie este o radiație electromagnetică cu o lungime de undă mai mare decât cea a luminii vizibile, începând de la margine roșie a spectrului vizibil de 0.7 micrometri și extinzându-se până la 300 micrometri. Aceste lungimi de undă corespund unui spectru de frecvență de la 430 la 1 THz și includ aproape majoritatea radiațiilor termice emise de obiecte apropiate de temperatura camerei. Lumina soarelui care cade perpendicular pe pământ furnizează o radiație de aproape 1 kilowatt/m2 la nivelul mării. Din această energie aproximativ 527 watti sunt radiație infraroșie, 445 watti de lumină vizibilă și 32 de watti de radiație ultravioletă.
La nivel atomic energia infraroșie induce un mod vibraționale în molecule printr-o schimbare în momentul dipolului, producând o frecvență folositoare pentru studierea stărilor energiilor moleculelor cu simetrie bună. Stereoscopia prin infraroșu examinează absorbția și transmisia de fotoni din gama energiei infraroșie bazându-se pe frecvență și intensitatea acestora.
Comisia Internațională a Iluminării (CIE) recomandă divizarea radiației infraroșie în 3 benzi:
IR-A 700nm-1400nm – este definită de absorbția apei și este des folosită în telecomunicațiile prin fibră optică deoarece atenuare este scăzută în sticlă de SiO2. Intensificatoarele de imagine sunt sensibile la această zonă a spectrului. Exemple include vedere pe timp de noapte cu dispozitive cum ar fi binoclu cu infraroșu.
IR-B 1400nm-3000nm – absorbția apei crește semnificativ la 1450nm. Zona între 1530 și 1560 nm este dominantă pentru telecomunicațiile pe distanțe lungi.
IR-C 3000nm- 1mm
între 3000nm și 8000nm numite și infraroșii intermediare. în tehnologia rachetelor ghidate, porțiunea de 3000 – 5000nm este fereastra atmosferică în care sunt proiectate să funcționeze dispozitivele de ghidare bazate pe detecție căldurii a rachetelor.
între 8000 și 15000 nm. Aceasta este regiunea imaginilor termice, în care senzori pot obține poze din lumea externă bazate pe emisii și fără a necesita u lumina externă cum ar fi cea a soarelui sau a unui bec.
peste 15000nm sunt infraroșii îndepărtate
Un senzor infraroșu este un dispozitiv ce poate detecta lumina infraroșie ce este sub spectrul optic vizual. Majoritatea telecomenzilor de TV și alte echipamente folosesc razele infraroșu că mediu de transmisie pentru a transporta informația de la controler la echipamentul ce trebuie controlat. Senzori infraroșu au aplicații atât în domeniu științific cât și în cel militar, cel de securitate și cel de salvare deoarece acești senzori pot "vedea" energia radiată de căldură care este o radiație infraroșie.
Senzori PIR pot detecta mișcare și sunt des folosiți pentru a detecta dacă un obiect a intrat sau a ieșit din raza de operare a senzorului. Sunt de mici dimensiuni, nu foarte scumpi, ușor de folosit și au un consum de energie redus. Pentru aceste motive sunt folosiți în multiple aplicați și gadgeturi.
Senzori infraroșu sunt printre cei mai des senzori folosiți la măsurarea distanței. Ei se încadrează în 3 categorii:
Bazat pe reflexie : distanță mică nu mai mult de 3 cm. Acest tip folosește un LED infraroșu și o diodă infraroșu. Când obiectul este aproape de senzor reflectă lumina emisă de LED către diodă. Folosind lumina IR modulată și filtrare la intrarea semnalului provenit de la diodă se obțin rezultate mult mai bune.
Bazat pe triunghiulare : distanțe mari de la 10-15 cm până la 2 m Sharp deține o familie de senzori care funcționează pe acest principiu de măsurare a distanței. Senzorul este format dintr-un LED infraroșu și un CCD. Unghiul pe care îl formează raza reflectată pe CCD determina distanța față de obiect.
Senzor de linie: Folosește o tehnologie asemănătoare cu senzorul bazat pe reflexie, dar orientat către detectarea liniilor de pe pământ. Acest senzor utilizează diferența de reflexie dintre culorile alb și negru.
Capitolul 2: Implementarea sistemului
Fig. 2.1 – Schema bloc
2.1. Descrierea blocurilor funcționale
2.1.1. Senzorul Infrarosu
Fig. 2.1. – Senzorul IR
Senzorul emite un puls de raza infrarosie de lungime cu lungimea de unda de 850nm ± 70nm.
Daca un obiect este in raza de actiune si in calea razei IR, atunci, acesta va reflecta raza inapoi spre senzor; prin urmare senzorul face citirile si raporteaza datele sub forma de tensiune (marime analogica).
Caracteristicile tehnice pentru senzorul GP2D120XJ00F-SS sunt urmatoarele:
Influenta scazuta a culorilor obiectelor reflectate, datorita metodei triunghiulare de masurare a distantei;
Raza de actiune intre 3 si 40 cm;
Interfata sa prezinta 3 fire: alimentare, masa si tensiunea de iesire, astfel acesta necesita un conector JST de 3 pini.
Masurarea distantei prin metoda triunghiurilor:
Principiul care sta la baza acestei metode de masura folosite de senzorul Sharp se
bazeaza pe formarea unui triunghi intre emitatorul de raza infrarosie, punctul de reflexie si detectorul de infrarosu. Astfel, emitatorul emite un puls de lumina infrarosie. Lumina strabate campul vizual si fie loveste un obstacol sau continua deplasarea. In cazul inexsitentei unui obstacol, lumina nu va fi reflectata si nu se va detecta un obiect. Daca lumina se reflecta de pe un obiect aceasta se intoarce la detector si va crea un triunghi ca in figura urmatoare:
Unghiurile din acest triunghi variază în funcție de distanța până la obiect.
Receptorul este de fapt o lentilă de mare precizie care transmite lumina reflectatăpeste o rețea liniara de CCD (charge-coupled device) din interior. Rețeaua de CCD
poate determina sub ce unghi a intrat lumina reflectată și, astfel, poate calcula distanța până la obiect. Această nouă metodă de măsurare a distanței este aproape imună la interferențele cauzate de lumină ambientala și oferă o “indiferență” foarte mare față de culoarea obiectului detectat. Astfel este posibilă detectarea unui perete negru în lumina directă a soarelui.
Fig. 2.3. – Graficul preciziei unui sensor IR
Neliniaritatea ieșirii senzorului:
Senzorul Sharp folosit în acest proiect prezintă o caracteristică de ieșire
neliniară, datorată proprietăților trigonometrice din interiorul triunghiului format de
Emițător, punctul de reflexie și Receptor.
Din această diagramă care poate fi găsită în documentația oferită de producător se observă că în intervalul [5; 30] cm ieșirea detectorului nu este liniara ci mai degrabă logaritmică. Se observa de asemenea că pentru o distanță mai mică decât 5 cm, ieșirea scade rapid și începe să ia valori caracteristice măsurătorii unor distanțe mai mari. Acest lucru poate fi dezastros pentru echipamentele automate sau pentru roboții care pot folosi acest senzor, deoarece vor interpreta ca sunt la o distanță mare de obstacol.
2.1.2. Microcontroller-ul
Rolul microcontroller-ului este destul de complex, el asigură receptarea și compararea valorilor provenite de la senzorii de linie la momente cheie, luarea unei decizii în urma procesării datelor, generarea semnalelor controlului motoarelor de curent continuu și alegerea modului de lucru al robotului. Microcontroller-ul pe care l-am folosit este implementat pe o placă de dezvoltare care asigură funcția de programator eliminând necesitatea de a achiziționa un programator extern cât și posibilitatea de programare a controller-ului direct din montaj. De asemenea, componentele plăcii asigură și stabilizarea tensiunii de alimentare cât și un acces ușor la porturile microcontroller-ului prin conectoarele aflate la porturile microcontroller-ului prin conectoarele aflate la extremitățiile plăcii.
2.1.3. Puntea H
Puntea H câteodată numită și “full bridge” își are numele de la cele 4 elemente de comutare situate în colțurile literei H iar motorul formează linia din
mijlocul literei H.
Fig. 2.4. – Puntea H
Comutatoarele sunt deschise/închise în perechi, colțurile opuse și niciodată cele de pe aceeași parte. Dacă comutatoarele de pe aceeași parte a punți ar permite trecerea curentului ar crea un scurt circuit între plusul și minusul alimentării. Ceea ce ar rezulta fie într-o descărcare rapidă a bateriilor în cazul în care comutatoarele sunt suficient de rezistente sau cel mai uzual caz comutatoarele se vor topi.Pentru a alimenta motorașul cele două comutatoare de pe diagonală vor trebui să permit trecerea curentului. Astfel curentul trece prin motor și acesta se va roti într-un sens, pentru că acesta să se învârtă în sens opus comutatoarele de pe diagonal opusă trebuie să permită trecerea curentulu
2.1.4. Panoul de comandă și alimentarea
Fig. 2.5. – Panoul de comanda
Panoul de comandă conține un întrerupător pentru pornirea/ oprirea alimentării întregului sistem.
Cei patru acumulatori de tip AA asigură alimentarea întregului sistem cât și posibilitatea de deplasare liberă a robotului fără restricția impusă de cablul de alimentare.
2.1.5. Motoarele de current continuu
Fig. 2.6. – Motorul de current continuu
Motorul de curent continuu a fost inventat în 1873 de Zénobe Gramme prin conectarea unui generator de curent continuu la un generator asemănător. Astfel, a putut observa că mașina se rotește, realizând conversia energiei electrice absorbite de la generator. Astfel el a constatat, că generatorul "inițial" era de fapt o mașină electrică reversibilă, care putea lucra ca un convertizor de energie bidirectional.
Motorul de curent continuu are pe stator polii magnetici și bobinele polare concentrate care creează câmpul magnetic de excitație. Pe axul motorului este situat un colector ce schimbă sensul curentului prin înfășurarea rotorică astfel încât câmpul magnetic de excitație să exercite în permanență o forță față de rotor.
Turația motorului este proporțională cu tensiunea aplicată înfășurării rotorice și invers proporțională cu câmpul magnetic de excitație. Turația se reglează prin varierea tensiunii aplicată motorului până la valoarea nominală a tensiunii, iar turații mai mari se obțin prin slăbirea câmpului de excitație.
Cuplul dezvoltat de motor este direct proporțional cu curentul electric prin rotor și cu câmpul magnetic de excitație. Reglarea turației prin slăbire de câmp se face, așadar, cu diminuare a cuplului dezvoltat de motor.
În general servomotoarele de dimensiuni mici sunt folosite în modele controlate radio unde acționează diferite sisteme mecanice cum ar fi virarea unei mașini sau controlarea cârmei unui vaporaș. Deoarece sunt accesibile ca preț, siguranța funcționarii îndelungate și simplicitatea controlări cu microcontroler servomotoarele sunt des folosite în roboți de mici dimensiuni.
Servomotoarele sunt compuse dintr-un motor electric ce este conectat la un potențiometru. Un receptor radio standard trimite un semnal PWM către motor. Circuitul din carcasa servomotorului transforma semnalul PWM în poziție. Motorul este comandat să se rotească până când potențiometrul atinge valoarea corespunzătoare poziție comandate.
Fig. 2.7. – Ansamblul unui motor
2.2 Realizarea software
2.2.1. Mediul de dezvoltare Arduino IDE
Mediul de dezvoltare Arduino conține un editor de text pentru scrierea codului, o secțiune de mesaje, o serie de meniuri și un toolbar cu butoane cu funcții specifice. Se conectează la hardware-ul Arduino pentru a uploada codul și comunica cu acesta.
Fig. 2.8. – Arduino Software
Software-ul scris folosind mediul de dezvoltare este numit schiță. Toolbar-ul oferă o serie de butoane ce permit compilarea, verificarea, uploadarea, crearea, deschiderea și salvarea de schițe.
Comenzile adiționale se găsesc în cele 5 meniuri: File, Edit, Sketch, Tool și Help.
Fig. 2.9. Arduino IDE
Mediul de dezvoltare oferă și posibilitatea folosirii de mai multe taburi, fișiere și compilări. Se pot folosi mai multe tipuri de fisiere cum ar fi cele C sau C++ cât și fișierele "Header" și fișierele normale.
La prima conectare a plăcii la calculator este necesară instalarea unui driver ce va asigura funcționarea corectă a conexiunii și va rezerva un port serial cum ar fi COM1.
O dată ce această instalare a fost finalizată uploadarea codului se face printr-un simplu click pe butonul "Upload" din taskbar. Când are loc programarea se foloșeste Arduino bootloader, un program mic ce a fost încărcat în prealabil în memoria flash a microcontroler-ului.
Librăriile adaugă extrafuncționalitate schițelor. Pentru a folosi o librărie într-o schiță este necesară doar inserarea declarației #include la începutul schiței, aceasta compilându-se o dată cu schița. Există o listă de librării de referință, dar alte librării se pot descărca de pe forumul Arduino, acestea fiind puse la dispoziție tuturor utilizatorilor de plăci de dezvoltare Arduino.
O altă funcție a mediului de dezvoltare este aceea de monitor serial. Acesta permite trimiterea și recepționarea datelor, singura necesitate pentru o funcționare corectă fiind setarea aceluiași baud rate atât pe calculator cât și pe microcontroler.
Fig. 2.10. Arduino IDE-Serial Monitor
Pentru realizarea softului am folosit libraria PololuQTRSensors. Această librarie a fost folosită pentru citirea valorilor senzorilor de linie.
Pinii senzorilor folosiți sunt declarați prin următoarea linie de comandă:
PololuQTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR);
Citirea valorilor senzorilor se face la un interval de 50 de milisecunde pe fiecare sensor și se realizează cu ajutorul liniei de comandă:
“qtra.read(sensorValues);”
Librăria PololuQTRSensors returnează automat valorile 0, 1000, 2000, 3000 sau 4000 în funcție de pinii analogici aleși de pe placa Arduino Uno. Valorile sunt date atunci când senzorul detectează linia, adică valoarea analogică este mai mare de 500.
Exemplu:
– în cazul în care pinul analogic este 0, valoarea returnată automat este 0
– în cazul în care pinul analogic este 1, valoarea returnată automat este 1000
– în cazul în care pinul analogic este 2, valoarea returnată automat este 2000
– în cazul în care pinul analogic este 3, valoarea returnată automat este 3000
– în cazul în care pinul analogic este 4, valoarea returnată automat este 4000.
Cele două motoare se vor mișca independent în funcție de valoarea de comandă provenită de la regulatorul PID. Dacă această valoare este mai mare decât zero, atunci robotul se va roti către stânga, iar dacă este mai mică decât zero el se va roti către dreapta. Motoarele vor avea o turație diferită în funcție de valoarea de comandă returnată.
2.2.2 Mathworks Matlab și Simulink
Unul dintre cele mai folosite softuri pentru calculul numeric îl reprezintă programul corporației MathWorks, numit MATLAB (Matrix Laboratory).
Acest program permite, cu ajutorul unei interfețe prietenoase, unele operații matematice complexe. Menționăm aici implementarea de algoritmi, manipulare de funcții matriceale sau crearea de noi interfețe grafice. De asemenea, permite manipularea unor programe scrise în limbajele de programare C, C++, Java sau Fortran.
Chiar dacă inițial acest soft a fost creat pentru calculul numeric, astăzi găsim noi pachete opționale de simulări dinamice sau care oferă posibilitatea de a interacționa cu motoarele de calcul simbolic.
Mediul de dezvoltare Simulink
SIMULINK este un mediu de dezvoltare pentru modelarea, analiza și simularea unui mare număr de sisteme fizice și matematice.
Ca extensie opțională a pachetului de programe MATLAB, SIMULINK oferă o interfață grafică cu utilizatorul pentru realizarea modelelor sistemelor dinamice reprezentate în schema bloc. O bibliotecă vastă, cuprinzănd cele mai diferite blocuri stă la dispoziția utilizatorului. Aceasta permite modelarea rapidă și clară a sistemelor, făra a fi necesară scrierea măcar a unui rând de cod de simulare.
Modelele realizate sunt de natură grafică, iar pe lângă numeroase avantaje SIMULINK oferă și posibilitatea de documentare și de tipărire a rezultatelor la imprimantă. Rezultatele simulării unui sistem pot fi urmărite chiar în timp ce se desfășoară simularea, pe un osciloscop reprezentat într-o fereastră a ecranului.
SIMULINK dispune de algoritmi avansați de integrare și de funcții de analiză care furnizează rezultate rapide și precise ale simulării:
șapte metode de integrare
simulare interactivă cu afișare în timp real a rezultatelor
simulări de tip Monte-Carlo
calcul de stabilitate
Arhitectura deschisă a SIMULINK-ului permite extinderea mediului de simulare:
– construirea de blocuri speciale și de blocuri cu icoane proprii cu interfață cu utilizatorul pentru MATLAB, Fortran, C.
– combinarea programelor Fortran și C pentru preluarea modelelor deja validate
– generarea de cod C din modelele SMULINK cu generatorul opțional SIMULINK de
cod C.
Ghid rapid de utilizare Simulink
SIMULINK este o colecție de funcții MATLAB, organizate într-un așa numit toolbox al sistemului de programare menționat. SIMULINK aduce în plus funcționalități specifice analizei și sintezei sistemelor dinamice, păstrând în același timp toate caracteristicile și funcționalitățile sistemului MATLAB.
Există două faze logice de utilizare a toolbox-ului. Într-o primă fază, se definește sau se apelează un model de system existent. Analiza acestui model face obiectul fazei a doua.
În general, strategia de lucru este iterativă, utilizatorul revenind la pașii parcurși anterior și modificând modelul, pe măsură ce avansează în proiectare, în scopul obținerii indicilor de calitate doriți.
Toolbox-ul SIMULINK folosește o clasă de ferestre denumite “diagrame”. În astfel de ferestre este creat modelul sistemului, în principal prin folosirea mouse-ului.
Așa cum am menționat, definirea modelului este urmată de analiza acestuia. SIMULINK pune la dispoziție analistului opțiuni proprii de analiză.
În același timp utilizatorul este liber să opteze pentru comenzi MATLAB dedicate analizei sistemice. Tot SIMULINK face posibilă linearizarea modelelor și determinarea punctelor de echilibru.
Cerințe de sistem:
Toolbox-ul SIMULINK are aceleași cerințe hardware ca și mediul de programare MATLAB (versiunea 2012a) și anume:
Sistem de operare:
– Windows 8 and Windows 8.1 (Windows Blue)
– Windows 7 or Service Pack 1
– Windows Vista Service Pack 2
– Windows XP Service Pack 3
– Windows XP x64 Edition Service Pack 2
– Windows Server 2008 Service Pack 2 or R2
– Windows Server 2003 R2 Service Pack 2
b) Procesor: orice procesor Intel sau AMD ce suportă instrucțiuni SSE2.
c) Spațiu pe disk: 1 GB pentru MATLAB, 3-4 GB pentru o instalare tipică.
d) RAM: 1024 MB (cel puțin 2048 MB recomandat).
Sesiune de lucru pe scurt
Pentru a începe sesiunea de lucru pe SIMULINK efectuați următoarele:
– apelați biblioteca principală prin comanda SIMULINK.
Dacă nu apare automat un fișier cu numele „Untitled” selectați New. Din meniul File pentru a deschide o fereastra nouă în care veți construi modelul. Fereastra are deocamdată numele Untitled, nume care va fi schimbat în momentul salvării pe disc a modelului.
– apelați librăriile disponibile și aduceți elementele necesare construirii modelului prin tehnica binecunoscută drag and drop.
– realizați conexiunile dintre blocuri prin trasarea liniilor dinspre ieșirile spre intrările blocurilor.
– schimbați parametrii blocurilor printr-un dublu click cu mouse-ul pe blocul respectiv.
– salvați modelul, selectând opțiunea Start din meniul Simulation.
Puteți schimba parametrii simulării selectând Parameters din meniul Simulation.
Comportarea sistemului este vizualizată, folosind un bloc din biblioteca SINKS fie grafic (Scope), fie transmisă în mediul MATLAB folosind un bloc To Workspace, rezultatul putând fi prelucrat ulterior cu ajutorul funcțiilor MATLAB.
În continuare se vor prezenta noțiunile de bază necesare utilizării bibliotecii SIMULINK. Vor fi introduse și explicate tipurile de blocuri și posibilitățile de analiză ale sistemului studiat.
Construirea unui model simplu
Deschideți biblioteca SIMULINK prin comanda:
>> simulink
La prompterul mediului de dezvoltare MATLAB. Această comandă va deschide o fereastră care reprezintă biblioteca principală (Fig.2.12.). Ea conține o serie de „blocuri-subsistem”, subsisteme care grupează blocuri înrudite ca funcționalitate: Sources, Sinks, Discrete, Linear, Nonlinear, Connections.
Prin dublu click pe fiecare din aceste subsisteme, se deschide o bibliotecă corespunzătoare din care se extrag elementele necesare construirii modelului.
Fig. 2.11. – Simulink
Spre exemplu, în subsitemul Sources există blocurile cu ajutorul cărora se pot simula diferite tipuri de semnale de intrare (vezi Figura 2.13). Subsitemul SINK conține diferite blocuri cu ajutorul cărora se pot vizualiza rezultatele simulării. Subsistemele Linear (respectiv Discrete) conțin blocuri specifice trasării diagramelor cu funcții de transfer liniar (respectiv discrete). Subsitemul Connections grupează elementele ce realizează legăturile între subsisteme.
Fig. 2.12. – Simulink editor
Deschideți o diagramă nouă prin opțiunea „New” din meniul File. Vă apare o fereastră vidă, Untitled.
Apelați la bibleoteca Sources pentru a extrage de acolo un generator de semnal (în fereastra Simulink dublu click pe biblioteca Sources, selectarea blocului Signal Generator). Copierea blocului Signal Generator din bibliotecă, în diagrama pe care o construiți (fereastra untitled) se poate face fie prin tehnica specifică Windows, drag and drop, fie prin facilitățile de editare: Copy și Paste, din meniul Edit.
Blocul copiat are aceeași parametrii ca cel bibliotecă. Schimbarea acestor parametrii se face printr-un dublu click pe bloc și prin editarea câmpurilor din fereasta de dialog deschisă în urma acestei operațiuni.
În fereastră sunt reprezentate alternativele referitoare la tipul de semnal ce va fi generat ( sine – sinusoidal; square – rectangular; sawtooth – dinți de fierăstrău, random – aleator sau de zgomot) și la parametrii săi (frecvență, amplitudine). Unitatea de măsură pentru frecvență se alege în rad/sec.
Fig. 2.13. – Generatorul de semnal
Evoluția semnalului după simulare se urmărește cu blocul Scope. Copiați din biblioteca Sinks acest bloc, folosind una dintre tehnicile amintite mai sus. Printr-un dublu click, deschideți blocul Scope.
Fig. 2.14. – Scope
Realizați conexiunea dintre blocurile Signal Generator și Scope prin dreapta orientată dinspre sursă (Signal Generator) către ieșirea (Scope).
Fig. 2.15. Conexiuni
Faza de construire a modelului este încheiată.
Urmează etapa de simulare. Stabiliți parametrii simulării prin opțiunea Parameters din meniul Simulation. Fereastra corespunzătoare conține valorile implicite.
Fig. 2.16. – Parametrii
Printr-un dublu click pe blocul Scope, deschideți fereastra „osciloscopului”.
Porniți simularea (din meniul Simulation – comanda Start) și urmăriți rezultatul pe osciloscop. Pentru fixarea optimă a dimensiunilor axelor se poate selecta al 4-lea buton din stânga. Primul buton mărește zona din jurul punctului selectat pe grafic cu ajutorul mouse-ului, al doilea mărește intervalul selectat cu mouse-ul pe axa x, iar cel de al 3-lea buton mărește intervalul selectat cu mouse-ul pe axa y.
Fig. 2.17. – Grafic
Salvați pe disc modelul pe care l-ați construit. Folosiți pentru aceasta opțiunea Save din meniul File. Modelul va fi memorat, sub formă codificată în instructiuni MATLAB, într-un fișier cu extensia obligatorie „mdl”.
Închideți mediul MATLAB prin opțiunea Exit din meniul File al MATLAB-ului sau închideți numai toolbox-ul SIMULINK, alegând Close din meniul File al ferestrei numite SIMULINK.
De la prompterul MATLAB, deschideți modelul salvat în sesiunea de lucru anterioară. Pentru aceasta apelați biblioteca Simulink și folosiți opțiunea Open din meniul File.
Câteva cuvinte despre posibilitățile de editare a diagramelor. Cei deprinși cu programele Microsoft, mai ales cu editoarele de texte și de imagini, cunosc tehnica de selectare multiplă ce se bazează pe delimitarea unei zone din fereastră, zona ce selectează toate obiectele care sunt incluse, total sau parțial, în ea. Această tehnică funcționează și în SIMULINK.
Câteva cuvinte despre posibilitățile de editare a diagramelor. Cei deprinși cu programele Microsoft, mai ales cu editoarele de texte și de imagini, cunosc tehnica de selectare multiplă ce se bazează pe delimitarea unei zone din fereastră, zonă ce selectează toate obiectele care sunt incluse, total sau parțial, în ea. Această tehnică funcționează și în SIMULINK.
Există posibilitatea de selectare a tuturor obiectelor din diagramă prin opțiunea Select All din meniul Edit. Deselectarea blocurilor se realizează fie cu pierderea tuturor selecțiilor, fie cu conservarea lor. Tasta Shift apăsată în momentul în care se face click pe blocul ce se dorește a fi deselectat fac ca selecția să se păstreze.
Aduceți în fișierul salvat în sesiunea de lucru anterioară blocul Gain din biblioteca Linear. Acest bloc realizează amplificarea semnalului de intrare.
Printr-un dublu click pe blocul Gain se dechide dialogul care permite stabilirea factorului de amplificare. Fixați valoarea sa la 3. Observați că după închiderea dialogului, valoarea amplificarii este reprezentată în interiorul blocului.
Fig. 2.18. – Editare conexiuni
Faceți conexiunea dintre ieșirea blocului Signal Generator și intrarea în blocul Gain. Aceasta semnifică faptul că același semnal este aplicat și blocului Gain și blocului Scope. Creați un nou bloc Scope și vizualizați prin acesta semnalul amplificat.
Deschideți ambele ferestre de „osciloscop” și porniți simularea. Semnalele ce vor evolua în cele două ferestre vor avea aceeași frecvență și fază, dar amplitudini diferite.
Încercați să multiplexați semnalele inițial și amplificat. Pentru aceasta, folosiți blocul Mux din biblioteca Connections. Copiați-l în fișierul pe care îl construiți, schimbați numărul de intrări la două (dublu click pe blocul max). Ștergeți blocul Scope1 și conexiunea sa (selectați și apăsați tasta Del). Realizați conexiunile.
De această dată ambele semnale vor fi reprezentate pe o singură ieșire, deci printr-un singur bloc Scope. Prin dublu click pe blocul Scope deschideți fereastra de vizualizare și porniți o noua simulare. Urmăriți rezultatul și observați că semnalul multiplexat transmite mai multe valori la un moment dat (în acest caz două).
Fig. 2.19. – Grafice
În continuare vom încerca să „exportăm” valoarea ieșirii ( a acestui semnal multiplexat) într-o variabilă MATLAB. Extrageți din biblioteca SINKS blocul To Workspace. Acest bloc acceptă la intrare un vector de orice dimensiune și generează o variabilă MATLAB cu numărul de coloane egal cu numărul de componente ale vectorului din SIMULINK și cu numărul de linii specificat prin parametrii blocului. Liniile matricii reprezintă valoarea vectorului la un moment dat.
Variabila poate avea orice nume valid în mediul MATLAB, implicit simout.
Schimbați numele variabilei. Faceți conexiunile ca în figura de mai jos:
Fig. 2.20.
Porniți o nouă simulare și după un anumit timp opriți-o. Salvați modelul fie cu același nume, fie cu un nume schimbat (opțiunea Save As din meniul File) și închideți toolbox-ul SIMULINK.
Reveniți astfel în mediul MATLAB. Verificați existența variabilei M, prin comanda: who sau verificați valorile acesteia prin simpla tastare a numelui variabilei (M) la prompterul MATLAB.
Realizați schema din diagrama următoare deschizând un nou fișiker în SIMULINK:
Fig. 2.21.
Blocul Step Input se găsește în biblioteca Sources, blocul TransferFcn în biblioteca Linear din SIMULINK.
Prin dublu click pe blocul Step Input se deschide fereastra de dialog următoare în care se pot alege:
– timpul după care apare semnalul treaptă
– valoarea inițială a semnalului
– valoarea finală a treptei z
Se simulează sistemul de mai sus și se urmărește pe ecranul „osciloscopului”.
Prin dublu click pe blocul ce reprezintă funcția de transfer se poate modifica forma acesteia prin tastarea valorilor corespunzătoare coeficienților (în ordinea descrescătoare a puterilor) numitorului și numărătorului funcției de transfer.
Fig. 2.22.
Cu aceste modificări s-a obținut următoarea situație:
Fig. 2.23.
Fig. 2.23.
2.2.3 Bibliotecile de control ARDUINO pentru MATLAB și SIMULINK
Prin intermediul bibliotecilor dezvoltate în mod express pentru pentru SIMULINK, se poate face legătura între acest mediu de dezvoltare și placa de dezvoltare ARDUINO, realizându-se astfel un model de sistem PID ce poate controla temperatura din incinta respectivă.
Bibliotecile de control ARDUINO pentru MATLAB și SIMULINK.
Prin intermediul bibliotecilor dezvoltate în mod express pentru pentru SIMULINK, se poate face legătura între acest mediu de dezvoltare și placa de dezvoltare ARDUINO, realizându-se astfel un model de sistem PID ce poate controla temperatura din incinta respectivă.
Fig. 2.24. Aplicație Matlab
Capitolul 3: Regulatorul PID (Proporțional Integrativ Derivativ)
Un PID (proporțional-integral-derivativ) controller este un mecanism generic pentru feedback primit de la bucle de control, des folosit în sisteme de control industriale – PID-ul este cel mai des folosit controller de feedback. Un controller PID calculează o valoare de "eroare", ca fiind diferența între o variabilă de proces măsurată și o valoare de referință dorită. Controller-ul încearcă să minimizeze eroarea prin ajustarea parametrilor de control.
Algoritmul PID implică trei parametrii separați și mai e numit three-term control: parametrul proporțional, parametrul integral și valorile derivate (P, I, D). Din punct de vedere euristic, aceste valori pot fi interpretate în funcție de timp: P depinde de eroarea prezentă, I depinde de acumularea erorilor trecute și D depinde de o predicție a viitoarelor erori, bazat pe rata actuală de schimbare.
Suma acestor trei acțiuni e folosită să ajusteze procesul printr-un element de control, precum citirea liniei de către senzorul de linie.
În absența cunoștințelor despre procesele ce îl alcătuiesc, un controller PID a fost considerat de-a lungul timpului cel mai bun controller. Prin modificarea parametrilor din algoritmul PID, controller-ul poate aduce acțiuni de control dezvoltate special pentru necesitățile unor proiecte specifice.
Răspunsul controller-ului poate fi descris, în funcție de reacția la o eroare, în funcție de gradul cu care controller-ul sare peste valoarea de referință și în funcție de mărimea oscilării sistemului. A se nota faptul că utilizarea pentru control a algoritmului PID nu garantează un control optim al sistemului sau stabilitatea sistemului.
Unele aplicații necesită folosirea a doar una sau două acțiuni pentru a crea controlul necesar. Acest lucru se face prin setarea celorlalți parametri spre zero. Un controller PID se va numi un controller PI, PD, P sau I în absența respectivelor acțiuni de control.
Controalele PI se întâlnesc destul de des, deoarece acțiunile derivative sunt sensibile către zgomotul provenit de la măsurători, spre deosebire de absența unui termen integral, care poate opri sistemul din atingerea valorii țintă, din cauza acțiunii de control.
3.1 Istorie și aplicații
Controller-ele PID au fost create inițial în anii 1890. Acestea au fost dezvoltate în continuare în pilotul automat folosit pe nave.
Unul dintre primele exemple de controller tip PID a fost creat de către Elmer Sperry în anul 1911, în timp ce prima analiză teoretică a unui controller PID a fost creată de către un inginer Ruso-American numit Nicolas Minorski în 1922. Minorski dezvoltă un sistem automat de navigare pentru Marina Americană și și-a bazat analiza pe observațiile unui cârmaci, observând faptul că cârmaciul controla nava, nu numai după eroarea curentă, ci și după eroarea trecută și rata curentă de modificare. Aceste observații au fost transformate în ecuații de Minorsky. Scopul lui era stabilitatea, nu controlul general, care simplifica problema.
Pe când controlul proporțional aduce stabilitate la apariția unor mici perturbații, era insuficient pentru a lucra cu perturbații care apareau constant, cum ar fi cazul unui vânt puternic, care necesită adaugarea termenului integral. Într-un final, termenul derivat a fost adăugat pentru a îmbunătăți controlul.
Testele au fost executate pe USS New Mexico, cu controller-ul controlând viteza unghiulară a cârmei. Controlul PI a adus o eroare unghiulară de +/- 2 grade, pe când, adăugarea lui D a adus o eroare unghiulară de +/- 1/6 grade, ceea ce e un rezultat mult mai mult decât putea obține orice cârmaci.
Până la urmă, Marina nu a adoptat sistemul, din cauza reticențelor marinarilor. Lucrări similare au fost create și publicate de mai mulți autori în anii 1930.
La începutul controlului automat de procese, controller-ul PID a fost implementat ca un device mecanic. Aceste controller-e mecanice foloseau o pârghie, un arc și o masă, și erau de obicei propulsate de aer condiționat. Aceste controllere pneumatice au fost cândva standarde ale industriei.
Controllerele electronice analogice pot fi create folosind un amplificator cilindric sau în stare solida, un capacitor și o rezistenta. Controller-ele PID electronice analogice erau des folosite în sisteme electronice mai complexe, de exemplu, în pozitionarea capului de citire a unui disk, reglarea electricității primite de la o sursă și chiar în circuitele de detectare a mișcării în detectoarele de cutremure moderne.
În ziua de azi, controllerele electronice au fost înlocuite de controllere digitale implementate folosind micro-controllere sau FPGA-uri.
Majoritatea controller-elor PID moderne din industrie au fost implementate folosind controller-e de logică programabile sau folosind controllere digitale poziționate pe un panou. Implementările software sunt avantajoase pentru că sunt relativ ieftine și flexibile, în respect la implementarile algoritmului PID. Controllerele de temperatură PID sunt folosite în cuptoare industriale, mașini de injecție a materialelor plastice, mașini de formare la cald și în mașini de împachetare.
Voltajele variabile pot fi aplicate de forma de proporționare a timpului, a modularizării lațimii de puls – un ciclu de timp e fix, iar variația este obținută prin modificarea proporțiilor de timp în timpul ciclului în care controllerul întoarce + sau – 1 în loc de 0. Într-un sistem digital, proporțiile posibile sunt discrete – de exemplu, incrementări de 0,1 secunde într-un ciclu de 2 secunde aduce 20 pași posibili: incrementări procentuale de 5%.
Deci există o eroare de discretizare, dar pentru un timp destul de mare, aceasta aduce o performanță acceptabilă.
Fig. 3.1. – Regulatorul PID
3.2 Teoria de control PID
Această secțiune descrie forma paralelă sau cu care nu se interacționează, a unui controller PID.
Schema de control a PID este numită dupa cei trei termeni de corectare, a căror sumă constituie variabila manipulată. Variabilele proporțională, integrală si derivată sunt însumate pentru a calcula iesirea controller-ului PID.
Definind u(t) ca ieșirea controller-ului, forma finală a algoritmului PID este:
unde:
Kp : câștig proportional, un parametru de modificare
Ki : câștig integral, un parametru de modificare
Kd : câștig derivativ, un parametru de modificare
e : eroare = SP – PV
t : timp sau timp instant (prezent)
3.2.1 Termenul proportional
Termenul proporțional produce o valoare de ieșire care e proporțională valorii curente de eroare. Răspunsul proporțional poate fi ajustat prin multiplicarea erorii cu costantă Kp, numită constantă de câștig proporțional.
Termenul proporțional e dat de Pout = Kp × e(t).
O valoare mare pentru câștigul proporțional produce o schimbare mare în iesire pentru o schimbare dată în eroare. Dacă câștigul proportional este prea mare, sistemul poate deveni instabil. În contrast, un câștig mic produce un răspuns mic al ieșirii pentru o eroare mare și un controller mai puțin sensibil. Dacă câștigul proporțional este prea mic, acțiunea de control poate fi prea mică ca răspuns la perturbări din sistem. Teoria modificării și cerințele industriale indică faptul că termenul proporțional ar trebui să contribuie la majoritatea schimbărilor din ieșire.
Eroare steady-state (Droop)
Deoarece o eroare diferită de zero e necesară pentru a folosi controller-ul, un controller pur proporțional operează cu o eroare stabilă, cunoscută ca „droop”.
Droop este direct proporțională cu câștigul procesului și invers proporțională cu câștigul proporțional. Droop poate fi atenuată prin adăugarea unui termen de compensare între valoarea dorită și ieșire sau corectată prin adăugarea unui termen integral.
Fig. 3.2. – Termenul proportional
3.2.2 Termenul Integrativ
Contribuția de la termenul integrativ este direct proporțională cu magnitudinea erorii și durata acesteia. Integrala dintr-un controller PID este suma erorilor instantanee în functie de timp și întoarce, offset-ul acumulat care ar trebui să fie corectată mai devreme.
Eroarea acumulată este apoi înmulțită cu câștigul integral (Ki) și însumat ieșirii controller-ului. Termenul integrativ e dat de:
Iout = Ki ×
Termenul integral accelerează mișcarea procesului către valoarea dorită și elimină eroarea reziduală care apare folosind un controller pur proporțional. Totuși, deoarece termenul integral răspunde la erori acumulate din trecut, poate cauza valoarea prezentă să treacă peste valoarea dorită.
Fig. 3.3. – Termenul Integrativ
3.2.3 Termenul derivativ
Derivata erorii procesului este calculată de determinarea pantei erorii în funcție de timp și multiplică rata schimbării prin câștigul derivat Kd. Magnitudinea contribuției termenului derivat la acțiunea de control este numită câștigul derivat.
Câștigul derivat e dat de:
Termenul derivat încetinește rata schimbării ieșirii controller-ului. Controlul derivat se folosește pentru a reduce magnitudinea ratării produse de componenta integrală și îmbunătățește stabilitatea proceselor combinate ale controller-ului.
Totuși, termenul derivat încetinește răspunsul controller-ului. În plus, diferențierea unui semnal amplifică zgomotul și astfel, acest termen din controller este foarte sensibil la apariția zgomotului din eroare și poate face un proces să devină instabil dacă zgomotul și câștigul derivat sunt suficient de mari. Astfel, este folosită mai des o aproximare către un diferențiator cu o bandă de date limitată. Un astfel de circuit se numește compensator de fază.
Fig. 3.4. – Termenul Derivativ
3.3 Reglarea buclei
Modificarea unui ciclu de control este ajustarea parametrilor de control către valorile optime pentru răspunsul dorit. Stabilitatea este o cerință de bază, dar, pe lângă asta, sisteme diferite au comportamente diferite, diferite aplicații au diferite necesități și necesitățile pot fi incompatibile.
Modificarea PID este o problemă grea, chiar dacă există doar trei parametri și în principiu este simpul de descris, deoarece trebuie să satisfacă criterii complexe în limitările control-ului PID. Există diferite metode pentru modificare în ciclu și există tehnici mai sofisticate care au fost patentate. Această secțiune descrie niște metode manuale tradiționale pentru modificare în ciclu.
Crearea și modificarea unui controller PID e intuitivă din punct de vedere conceptual, dar poate fi destul de greu în practică, dacă e necesară împlinirea mai multor obiective. De obicei, design-uri inițiale trebuiesc ajustate repetat prin simulari pe calculator până când sistemul închis execută sau apar compromisuri.
Unele procese au un grad de neliniaritate și parametri care funcționează bine în condiții de execuție în full-load nu funcționează când procesul pornește fără full-load.
Acest lucru poate fi corectat prin setarea câștigului în funcție de necesități. Controllerii PID pot avea un control acceptabil folosind modificări standard, dar perforanța necesită de obicei modificări atente.
3.3.1 Stabilitate
Datele parametriilor controller-ului PID sunt alese incorect, variabilele de intrare pot fi instabile, de exemplu ieșirea deviază, cu sau fără oscilații și e limitat doar de saturație sau oprire mecanică. Instabilitatea este cauzată de câștig în exces, în mod particular în prezența întârzierilor cauzate de proces.
În general, stabilizarea răspunsului este necesară și procesul nu trebuie să oscileze pentru orice combinație de condiții și valori dorite, deși stabilitatea marginală este acceptată sau chiar dorită.
3.3.2 Comportamentul optim
Comportamentul optim al unei schimbări de proces sau a unei schimbări de variabilă dorită depinde de aplicație.
Două necesități de bază sunt reglarea și urmărirea comenzilor – acestea se referă la cât de bine, variabilele controlate, urmăresc valoarea dorită. Criterii specifice pentru urmărirea comenzilor includ timpul de mărire și timpul de micșorare. Unele procese nu trebuie să lase o trecere peste variabila de proces, dincolo de valoarea dorită, deoarece ar fi nesigur.
Alte procese trebuie să minimizeze energia folosită pentru a găsi o nouă valoare dorită.
3.3.3 Prezentarea generală a metodelor
Există mai multe metode pentru a modifica un ciclu PID. Cele mai eficiente metode implică dezvoltarea unui model de proces, apoi alegerea P, I, D bazate pe parametrii de model dinamic.
Metodele de modificare manuală pot fi ineficiente, în special dacă ciclurile au timpi de răspuns în ordinea minutelor sau mai mari.
Alegerea metodelor va depinde în mare dacă ciclul poate fi oprit pentru modificări și de timpul de răspuns al sistemului. Dacă sistemul poate fi oprit, cea mai bună metodă de modificare implică trecerea sistemului printr-o schimbare de pași în intrări, măsurarea ieșirii ca o funcție de timp și folosirea acestui răspuns pentru a determina parametrii de control.
3.3.4 Reglare manuală
Dacă sistemul nu se poate opri, o metodă de modificare este să setezi Ki și Kd la zero. Se mărește Kp până când ieșirea ciclului oscilează, apoi Kp ar trebui setat la aproximativ jumătate din valoare pentru un răspuns care se micșorează cu un sfert din amplitudine.
Apoi se mărește Ki până când orice offset este corectat într-un timp suficient de mic pentru a putea fi procesat. Totuși prea mult Ki va cauza instabilitate.
Într-un final, se mărește Kd, dacă este necesar, până când ciclul este destul de rapid pentru a ajunge la referințe după o modificare în load. Totuși prea mult Kd va cauza un răspuns prea mare și va trece peste valoarea dorită. Modificarea ciclurilor unui PID rapid de obicei sare puțin peste ceea ce necesită sistemul, care va necesita setarea lui Kp mult mai mic decât jumatate din Kp-ul care cauzează oscilații.
3.3.5 Metoda Ziegler-Nichols
O altă metodă de modificare euristică este formal cunoscută ca metoda Ziegler-Nichols, creată de John GZiegler și Nathaniel B. Nichols în anii 1940.
Ca în metoda precedentă, câștigurile Ki si Kd sunt întâi setate la zero. Câștigul P este mărit până ajunge la valoare de caștig maxim, Ku la care output-ul ciclului începe să oscileze. Ku și perioada de oscilare Pu sunt folosite pentru a seta câștigurile.
Aceste câștiguri se aplică formei ideale, paralele de controller PID. Când se aplică formei standard de PID, parametrii de timp integral și derivat Ti și Td sunt doar dependenți de perioada de oscilație Pu.
3.3.6 Software de modificare PID
Majoritatea facilităților industriale moderne nu mai folosesc modificări de ciclu folosind calcule manuale. În schimb, sunt folosite software-uri de modificare PID și optimizarea ciclurilor pentru a fi asigurate rezultate consistente. Aceste pachete de software vor strânge date, vor dezvolta modele de procese și sugerează modificări optime. Unele pachete de software pot dezvolta modificări prin colectarea datelor din modificări de referințe.
Modificarea matematică a ciclurilor PID induce un impuls în sistem și folosește frecvența sistemului controlat pentru designul valorilor ciclurilor PID. În cicluri cu timpi de răspuns de câteva minute, este recomandată modificarea matematică a ciclurilor, deoarece trial-and-error poate dura câteva zile până se ajunge la un set stabil de valori de ciclu.
Valori optime sunt mai greu de găsit. Unii controlori digitali de ciclu oferă o posibilitate de auto-modificare în care se trimit valori dorite foarte mici către proces, lăsând controller-ul să calculeze valorile optime.
Alte formule pot fi folosite pentru a modifica ciclul, în funcție de diferite criterii de performanță. Mai multe formule patentate sunt incluse în module software și hardware de modificare de PID.
Progrese în automatizarea software-ului PID Loop Tuning aduce algoritmi pentru modificare ciclurilor PID într-un scenariu dinamic sau Non-Steady State. Software-ul va modela dinamicile unui proces deși o perturbație se calculează cu parametrii de cotrol PID.
3.4 Modificare aduse algoritmul PID
Algoritmul PID de bază prezintă unele provocări în aplicații de control care au fost adresate de către modificări minore către forma PID.
3.4.1 Windup integrativ
O problemă comună venită din implementările ideale ale PID este integral windup, unde are loc o schimbare mare în valoarea dorită și termenul integral acumulează o eroare mai mare decât valoarea maximă pentru valorile de reglare, astfel, sistemul sare peste și continuă să se mărească, cum aceasta eroare este desfăcută.
Aceasta eroare poate fi evitată prin:
– inițializarea integralei controller-ului cu o valoare dorită
– mărirea valorii dorite
– eliminarea funcției integrale până când PV a intrat într-o regiune controlabilă
– limitarea perioadei de timp peste care se calculează eroarea integrală
– oprirea termenului integral de la acumularea peste sau sub valori predeterminate
3.4.2 Înlocuirea funcției integrale cu o parte bazată pe un model
Deseori, timpul de răspuns al sistemului este aproximativ cunoscut. Atunci, este un avantaj să se simuleze acest timp de răspuns cu un model și să se calculeze un parametru necunoscut de la răspunsul actual al sistemului.
Dacă, de exemplu, sistemul este un cuptor electric, răspunsul diferenței dintre temperatura cuptorului și temperatura ambientă la modificarea puterii electrice vor fi similare cu un filtru simplu low-pass multiplicat de un coeficient proporțional necunoscut. Puterea electrică actuală trimisă cuptorului este întârziată de un filtru low-pass petru a simula răspunsul temperaturii cuptorului, iar, apoi, temperatura actuală minus temperatura abientă este împărțită de către filtrul low-pass. Apoi, rezultatul este stabilizat de către un alt filtru low-pass care duce la o estimare a unui coeficient proporțional.
Cu această estimare, este posibil să se calculeze puterea necesară prin împărțirea valorii dorite a temperaturii minus temperatura ambientă cu acest coeficient. Rezultatul poate apoi fi folosit în funcția integrală. Acest lucru realizează o eroare de control de zero în steady-state, dar evită integral windup și poate da o acțiune de control îmbunătățită comparând cu un controller PID optimizat. Acest lucru e un avantaj dacă, de exemplu, încălzirea cuptorului trebuie redusă pentru o durată de timp din cauza pierderii unui element de încălzire, sau dacă controller-ul este folosit ca un sistem de sfaturi către un operator uman care poate să nu treacă la un sistem circuit închis. Poate fi util dacă controller-ul este într-o ramură a unui sistem complex de control care să fie temporar inactiv.
3.4.3 PI controller
Un controller PI este un caz special controller-ului PID în care derivata erorii nu se folosește.
Output-ul este dat de : Kp Δ + Ki
unde delta este eroarea sau deviația valorii actuale măsurate (PV) de la valoarea dorită (SP).
Δ = SP – PV
Un controller PI poate fi modelat ușor în software ca Simulink folosind un "flow cart" care conține operatori Laplace:
C = unde:
G = Kp = amplificare proporțională;
G / = Ki = amplificare integrativă
Setarea unei valori pentru G este de obicei un compromis între micșorarea valorii cu care se sare peste și mărirea timpului de oprire. Lipsa unei acțiuni de derivare poate face sistemul mai stabil în steady state, dacă se folosesc date zgomotoase.
3.4.4 Deadband
Mai multe cicluri PID controlează un mecanism. Întreținerea mecanică poate fi un cost major și uzarea duce la degradarea controlului, sub formă de frecare statică sau deadband în răspunsul mecanic către un semnal de input.
Rata de uz mecanic este o funcție legată de rata în care un dispozitiv este activat pentru a face o schimbare. Când uzarea este o îngrijorare, ciclul PID poate avea ca output deadband pentru a reduce frecvența de activare a output-ului. Acest lucru este realizat prin modificarea controllerelor pentru a ține output-ului stabil, daca schimbarea ar fi mică.
Output-ul calculat trebuie să plece din deadband înainte de schimbarea output-ului actual.
3.4.5 Schimbarea pasului valorii căutate
Termenii proporționali și dervativi pot produce mișcări excesive în output când un sistem este supus unei măriri instantanee de pas în eroare, precum o mărire de valoare dorită. În cazul valorii termenului derivativ, acest lucru este dat de derivata erorii, care este foarte mare în cazul modificării valorii dorite. C
Ca rezultat, unii algoritmi PID încorporează urmatoarele modificări:
a) Derivarea variabilei de proces
În acest caz controller-ul PID măsoară derivata variabilei de proces măsurate, în locul derivatei erorii. Această cantitate este mereu continuă.
Pentru ca această tehnica să fie eficientă, derivata PV trebuie să aibă semnul opus al derivatei erorii, în cazul controlului negativ de feedback.
b) Setpoint ramping
În această modificare, valoarea dorită este mutată treptat de la valoarea veche până la o valoare nouă folosind o funcție diferențială de prima speță. Acest lucru evită discontinuitatea prezentă în modificarea unui pas simplu.
c) Setpoint weighing
Setpoint weighing folosește multiplicatori diferiți pentru eroare, depinzând de care element îi folosește. Eroarea din termenul integral trebuie să fie adevarata eroare de control pentru a evita erori de control în steady-state. Acest lucru afectează valoarea dorită a controller-ului. Acești parametrii nu afectează răspunsul pentru perturbații și zgomot.
3.5 Limitări ale PID
În timp ce controllerii PID sunt aplicabili pentru o bună parte din problemele de control și de obicei, execută satisfacător, pot performa slab în unele aplicații și nu aduc un control optim.
Dificultatea fundamentală cu controlleri PID este că este un sistem de feedback, cu parametri constanțI și fără cunoștințe directe asupra proceselor, astfel, performanța poate fi obținută prin incoporarea unui model a procesului.
Cea mai mare îmbunătățire este să se incorporeze un control feed-forward cu cunoștințe asupra sistemului și folosind PID-ul doar pentru a controla eroarea. Alternativ, PID-urile pot fi modificate în moduri mai minore, precum schimbarea parametrilor, îmbunatățirea măsurătorilor sau folosirea mai multor controlleri PID în cascadă.
3.5.1 Liniaritate
O altă problemă care apare cu controlleri PID este că sunt liniari și simetrici. Astfel, performanța controller-ilor PID în sisteme non-liniare este variabilă.
De exemplu, în controlul temperaturii, un caz comun este încălzirea activă cu răcirea pasivă, astfel încât, trecerea peste valorea dorită să fie corectată încet – nu poate fi scăzută forțat. În acest caz, PID-ul trebuie să fie modificat petru supra-amortizare, pentru a preveni sau reduce valoarea cu care se sare peste, deși este redusă performanța.
3.5.2 Zgomot in derivate
O problemă care apare cu termenii derivați este că mici cantități de măsurători sau zgomot în proces, pot cauza mari schimbări în output.
Este util să filtrezi măsurătorile cu un low-pass filter pentru a elimina zgomotul cu frecvență mai mare. Totuși, filtrele low-pass și controlul derivatelor se pot elimina una pe alta, astfel, eliminarea zgomotului prin instrumentare este o alegere mult mai bună. Alternativ, poate fi folosit un filtru median nonlinear, care îmbunătățește eficiența de filtrare și performanța practică. În unele cazuri, diferențialele pot fi oprite în mai multe sisteme cu o foarte mică pierdere de control.
Acest lucru este echivalent cu folosirea controller-ului PID sau un controller PI.
3.6 Îmbunătățiri
3.6.1 Feed-forward
Performanța sistemului de control poate fi îmbunătățită prin combinarea feedback-ului unui controller PID cu un control feed-forward. Cunoștințele despre sistem pot fi trimise și combinate cu output-ul PID-ului pentru a îmbunătăți performanța sistemului.
Însăși valoarea obținută dupa feed-forward poate aduce o parte majoră a output-ului controller-ului. Controller-ul PID poate fi folosit în principal pentru a răspunde la orice diferență sau eroare între valoarea dorită și valoarea actuală a variabilei de proces.
Deoarece output-ul feed-forward nu e afectat de feedback-ul procesului, nu poate cauza oscilații în sistemul de control, astfel îmbunătățind timpul de răspuns și stabilitatea. De exemplu, în majoritatea sistemelor de control a mișcării, pentru a accelera o cantitate mecanică sub control, e necesară o forța mai mare de la motor.
Dacă se folosește un controller PID cu cicluri de viteză pentru a controla viteza încărcăturii și comanda forța aplicată, atunci este benefic să se ia accelerația instantanee dorită, scalarea valorii și adăugarea acesteia la controllerul PID. Acest lucru înseamnă că oricând încărcătura este accelerată sau încetinită, o cantitate proporțională de forta este comandată de la motor, indiferent de valoarea feedback-ului.
Ciclul PID din aceasta situație folosește feedback-ul pentru a schimba output-ul combinat pentru a reduce diferența rămasă între valoarea dorită și valoarea de feedback. Lucrând împreună, controller-ul combinat open-loop feed-forward și controller-ul PID closed-loop pot produce un sistem de control cu un raspuns mai rapid, mai stabil și mai sigur.
3.6.2 Alte îmbunătățiri
Pe lângă feed-forward, controllerii PID pot fi îmbunătățiți pentru metode precum PID gain-scheduling, fuzzy logic sau computational verb logic. Alte probleme de aplicare pot apărea din instrumente conectate la controller.
O rată de prelevare destul de mare, precizie de măsurare și acuratețe în măsurare sunt necesare pentru a obține o performanță de control adecvată. O altă nouă metoda pentru îmbunătățirea unui controller PID este mărirea gradului de libertate folosind ordini fracționale.
Ordinea integratorului și diferențiatorului adaugă o flexibilitate mărită controller-ului.
3.7 Control în cascadă
Un avantaj distinctiv asupra controller-ilor PID este că doi controlleri PID pot fi folosiți împreună pentru a obține o performanță dinamică mai bună. Aceasta se numește “cascade PID control”.
În cascade control, există două PID-uri aranjate astfel încât un PID controlează valoarea dorită de celălalt. Un controller PID acționează ca și controller al ciclului extern, care controlează parametrii fizici primari, precum nivelul de lichid sau viteză.
Celălalt controller acționează ca și controller de ciclu intern, care citește output-ul de la controller-ul de ciclu extern ca și valoare dorită, de obicei, controlând o modificare rapidă în parametri, viteză sau accelerație. Poate fi dovedit matematic că frecvența controllerului este mărită și de timp este redusă folosind “cascaded PID controller".
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: Realizarea Unui Robot de Mici Dimensiuni (ID: 163328)
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.
