Implementarea Algoritmului de Control în Mediul Matlab

Introducere

Analiza conceptului Compliant Control

Controlul compliant este tipul de control care permite unui sistem să devieze de la propria poziție de echilibru în funcție de o anumită forță externă aplicată [7]. Un sistem compliant poate fi definit ca fiind opusul unui sistem rigid, acesta din urmă fiind capabil să se deplaseze la o anumită poziție sau să urmărească o anumită traiectorie. Odată ce poziția a fost atinsă, acesta va rămâne în acea poziție indiferent de forțele care acționează asupra sistemului (în limitele de forță ale sistemului).

Roboții sunt folosiți în general pentru a efectua diverse sarcini cum ar fi „pick and place”, asamblare, sudare, vopsire. etc., cu viteză și precizie mari, fără a împărți locul de muncă cu oamenii. Roboții industriali curenți sunt încă foarte departe de medii comune om-robot, deoarece controlul lor nu asigură condiții de siguranță conform normelor de protecție a muncii și din cauza rigidității și a structurilor mari. Pe lângă asta, normele industriale separă cele două spații ocupate de om și de robot prin intermediul unui gard sau zid. Totuși, viitoarele generații de roboți vor trebui să împartă spațiul lor de muncă cu oameni și să facă față unor sarcini care implică contact fizic cu oameni în condiții de incertitudine într-un mod stabil și sigur [7]. Bineînțeles, succesul interacțiunii fizice om-robot este bazat pe dezvoltarea capabilității robotului de a reuși interacțiunea dintre robot și om sau mediu într-un mod inteligent și sigur pentru a preveni eventuale accidente și daune.

Pentru a putea utiliza roboții în viețile noastre de zi cu zi, roboții trebuie să demonstreze în mod ideal același nivel de capacități înglobate în sistemele biologice cum ar fi oameni și/sau animale. Sarcinile care implică interacțiune om-robot implică colaborare directă a robotului cu omul, luând în considerare mișcări eficiente și sigure. Aceste sarcini necesită contact fizic cu oameni, prin urmare siguranța este esențială. O abilitate majoră care le lipsește roboților în comparație cu sistemele biologice este complianța adaptabilă sau rigiditate variabilă. Aceasta poate fi imitată prin folosirea unor actuatori complianți în locul tradiționalelor mecanisme cu actuatori rigizi. În plus, pentru a realiza sarcini care necesită interacțiune, mișcările robotului trebuie să se bazeze pe semnale de feedback. În general, aceste sarcini implică o combinație de diferite mișcări de la complet rigid la complet compliant. Aceste situații de contact pot varia în funcție de cerințe specifice fiecărei sarcini, dar în orice caz, robotul trebuie să execute trei tipuri de mișcări:

Mișcare rigidă:

Mișcarea rigidă se referă la desfășurarea acțiunii robotului în spațiu liber denumit spațiu de lucru fără restricții. În acest mod, atingerea poziției dorite, în interiorul spațiului de lucru al robotului, se realizează prin controlarea vitezei și a poziției. Exprimă zero complianță și prin urmare, doar acest mod nu este suficient pentru a realiza mișcări constrânse cu interacțiune fizica om-robot. [7]

Mișcare fină:

Mișcarea fină se referă la mișcarea robotului constrânsă de împrejurimi denumit spațiu de lucru constrâns. În situația în care o coliziune este inevitabilă, cum ar fi intrarea neașteptată și bruscă a unui obstacol în traiectoria robotului, acest mod este activat prin schimbarea comportamentului robotului de la complet rigid la complet compliant. [7]

Mișcare compliantă:

Mișcarea compliantă reprezintă toate tranzițiile dintre mișcarea rigidă și cea fină. Situațiile care apar adesea în sarcinile de interacțiune om-robot, în care omul vrea să suprapună mișcările sale peste mișcările specifice roboților. Aceste condiții alcătuiesc nevoia robotului de complianță variabilă, deci, realizarea se face prin acest mod. [7]

Robotii actuali sunt concepuți să lucreze lângă oameni și să împartă locul de muncă cu oamenii pentru a-i ajuta la sarcini care în mod normal implică interacțiune fizică om – robot. Numeroase noi tendințe și aplicații care implică interacțiune om – robot au apărut în domeniul roboticii, în care roboții operează în apropiata vecinătate a oamenilor și împart spații de lucru comune. Spre exemplu, dispozitive robotice de reabilitare și asistare, roboți autonomi pentru picioare și alte sisteme protetice [6] [4] [2]. Deși roboții diferă pe baza tipului lor specific de interacțiune și solicită diferite specificații ale designului, totuși trebuie să execute toate cele trei moduri de mișcare (rigid, fin și compliant).

Soluții de implementare hardware și software a conceptului

În timpul interacțiunii om – robot, mișcarea compliantă permite unui robot să se adapteze forțelor de interacțiune generate de om sau de un obiect aflat în vecinătatea sa. Astfel de mișcări sunt necesare pentru a reduce sau a înlătura nesiguranța față de obiectele aflate în contact și pentru a asigura o operațiune sigură a robotului desfășurată cu succes.

Prezentarea generală a construcțiilor robotice existente arată că acționarea articulațiilor poate fi implementată în trei moduri diferite, și anume: complianță activă, complianță pasivă și complianță semi-activă. Respectiv, putem spune că sunt trei dispozitive compliante diferite:

Dispozitive compliante active reprezintă o amenințare enormă pentru articulațiile robotice rigide, de asemenea, asigură o întârziere a răspunsului la contact datorită timpului necesar procesării datelor primite de la senzorii de forță/cuplu, respectiv de la sistemul de control. În plus, astfel de sistem este caracterizat prin costuri mari, este nesigur în timpul unei defecțiuni electrice și are nevoie de un algoritm de control complex. Pe lângă aceste limitări, controlul compliant activ este încă apreciat datorită programabilității și a acurateței precise a poziției. [7]

Dispozitive compliante pasive bazate pe mecanisme pasive cum ar fi arcuri, de obicei complianța crește odată cu costurile și complexitatea sistemului. Abordarea recent dezvoltată a acționării cu rigiditate variabilă realizată prin introducerea unui element elastic în articulații arată eficacitatea sa în control compliant în timp ce prezintă reducerea acurateței controlului poziției și a pierderii de energie datorită elasticității. Complianța mecanică realizată de amortizoare asigură protecție doar până la un anumit punct în timpul interacțiunii fizice om – robot. [7]

Dispozitive compliante semi – active acumulează beneficiile principale de la ambele mecanisme de acționare, active și pasive, prin faptul că oferă o precizie de funcționare ridicată, siguranță și lățime de bandă mare la impacturi. Spre exemplu, ele prezintă aceeași caracteristică de adaptabilitate ca și cele active fără a necesita surse de mare energie, astfel consumând o cantitate minimă de energie. Ca și dispozitivele pasive, oferă abilitatea imensă de a minimiza forțele mari și șocurile, interacționează în siguranță cu omul și prezintă manevrabilitate mare. [7]

Studiile recente despre complianță au fost în principal axate pe metode de design pentru precizie în realizarea de sarcini definite ale roboților și control avansat pentru siguranță. În condiții reale, această abordare duce, în general, la complexitate atât a sistemului de control cât și a structurii.

Soluții existente pentru implementarea gâtului în domeniul roboților antropomorfi

A. Gât robotic cu tendoane de oțel

Acest gât robotic are o similitudine deosebită cu gâtul uman, mecanica ți designul acestuia fiind inspirate de scheletul uman. În această platformă robotizată, osul gâtului a fost realizat dintr-un arc de oțel, iar mușchii din cabluri de oțel acționate de trei motoare. Oamenii execută o gamă largă și complexă de mișcări la nivelul gâtului, mult peste capacitățile motorii ale roboților moderni, astfel, pentru realizarea unui sistem artificial capabil să execute mai multe mișcări similare cu ale omului, este nevoie de o serie de îmbunătățiri tehnologice, mai ales dacă suntem interesați in a reproduce aspectele cinematice și dinamice. Această platformp se numește James, are 22 de grade de libertate, ochi, gât, un braț și o mână antropomorfă (Figura 1.3).

Figura 1.3 Robotul umanoid James [5]

Osul gâtului este realizat dintr-un arc de oțel care ține capul, oferind posibilitatea de înclina capul înainte și în lateral. Sistemul are două grade de libertate datorită celor trei motoare care acționează cele trei tendoane poziționate în jutul arcului la un unghi de 120°. Lungimea tendoanelor determină poziția arcului, iar aceasta este reglată cu ajutorul motoarelor fixate la baza gâtului (Fig. 1.4). Această structură permite gâtului să execute mișcări similare cu cele ale omului, gama medie de mișcare pentru tangaj la adulți este de aproximativ ± 45º iar la James mișcarea a fost limitată de soft în intervalul ± 40º pentru siguranță.

Figura 1.4 Sistemul de acționare și schița cinematică [5]

Oamenii au peste 20 de tipuri de mușchi în zona gâtului, având rol atât în orientarea capului cât și în stabilizarea coloanei vertebrale care suportă greutatea capului. În sistemul de față, arcul este suficient pentru a susține greutatea capului iar tendoanele au doar rol motor. Partea de sus a arcului este prinsă de o platformă, unde se află al patrulea motor independent care permite al treilea grad de libertate, gitația capului.

Figura 1.5 Similaritatea dintre robotul James și sistemul biologic dupa care a fost inspirat [5]

B. Gât umanoid realizat cu ajutorul unui mecanism patrulater

Acest robot are capacitatea de schimba șaisprezece expresii faciale, în funcție de temperatura din încăpere sau ca răspuns la atingerea utilizatorilor cu ajutorul senzorilor piezoelectrici fixați sub pielea feței. Ca elemente de acționare au fost utilizate servomotoare conectate la pielea feței prin intermediul unor fire, cu ajutorul cărora trag sau împing pielea pentru a genera expresii ale feței.

Gâtul conceput are două grade de libertate (balansare și rotire). Balansarea este bazată pe un mecanisma cu patru rotații (RRRR) iar mecanismul de rotație este bazat pe trei rotații și o translație (RTRR). Pentru a controla mișcarea gâtului a fost folosit un servomotor cu cuplu mare iar pentru a păstra echilibrul centrului de greutate în timp ce servomotoarele nu sunt acționate sau se află într-o poziție neutră, s-au folosit arcuri.

Sistemul are șaisprezece grade de libertate: fiecare ochi are două grade de libertate, gâtul are două grade de libertate iar expresiile faciale au zece grade de libertate. Actuatorii sunt controlați cu un controler Polulu care acționează șaisprezece servomotoare prin generare de PWM (Pulse Width Modulation) independent. Controlerul primește feedback-ul de poziție de la un potențiometru instalat în fiecare servomotor. Poate primi comenzi de la calculatorul principal și poate transmite date către computerul principal printr-o interfață RS232. Specificațiile controlerului sunt prezentate în Tabelul 1.1.

Tebel 1.1 Specificațiile controlerului [2]

În figura 1.6 este prezentat modelul CAD al craniului și ansamblul complet funcțional.

Figura 1.6 Dezvoltarea capul robotului (a) Modelul CAD, (b) Prototipul craniului, (c) Fața complet funcțională cu senzori încorporați în pielea artificială [2]

Mișcarea unghiulară necesară este de 60° stânga, 60° dreapta și 60° pentru înclinarea capului. În figura 1.7 este prezentată o diagramă schematică a mecanismului gâtului.

Figura 1.7 Schema mecanismului gâtului [2]

C. Gât umanoid realizat cu ajutorul unui mecanism paralel

Pentru realizarea acestui gât de robot umanoid s-a utilizat un mecanism paralel acționat de actuatori pneumatici. Mișcările acestui mecanism sunt liniare, astfel se generează o mișcare continuă, spre deosebire de mecanismele seriale. În general se folosesc mecanisme seriale pentru roboți, în ideea de a reduce dimensiunile. Astfel, un mecanism paralel de dimensiuni reduse este inovator și eficient.

Acest mecanism are două baze, una inferioară fixă și una superioară flexibilă. Forma geometrică a bazelor este triunghi, iar de fiecare dintre vârfurile triunghiurilor sunt prinse capetele actuatorilor.

Figura 1.8 Arhitectura mecanismului paralel [1]

Mecanismul poate avea doi sau trei actuatori. Mecanismul cu trei actuatori este prezentat în figura 1.9.

Figura 1.9 Modelul CAD al mecanismului paralel cu trei actuatori [1]

Acest mecanism este format dintr-o platformă fixă montată pe caroserie și platforma superioara pe care va fi montat capul între care se află cei trei actuatori și un cilindru rigid cu rol de susținere. Tija fiecărui cilindru este montată de platforma superioară cu o îmbinare care permite trei grade de libertate. Cilndrul rigid este montat în partea centrală a mecanismului. Actuatorii sunt montați sub platforma inferioară pentru reducerea înălțimii mecanismului. Acest mecanism realizează suficiente mișcări pentru a imita cu succes mișcările gâtului uman, iar volumul ocupat se încadrează în limitele dorite.

Figura 1.10 Mișcările mecanismului cu trei actuatori [1]

Mecanismul paralel cu doi actuatori are două baze similar cu cel cu trei actuatori. Pe baza de jos fiind fixat un element rigid prins de platforma superioară printr-o articulație sferică. În celelalte două puncte fiind montați actuatorii (Fig. 1.11).

Figura 1.11 Modelul CAD al mecanismului paralel cu doi actuatori [1]

Punctele moarte sunt poziții ale mecanismului în care nu există nicio transmitere a mișcării iar pentru a evita aceste puncte moarte cei doi actuatori sunt montați la un anumit unghi față de platforma superioară. Această vatiantă este mai puțin costisitoare, necesitând doar doi actuatori. În schimb, rotirea pe cele trei direcții este limitată și volumul ocupat este mai mare.

Figura 1.12 Mișcările mecanismului cu doi actuatori [1]

Exemple de roboți complianți

A. SoftMove

SoftMove este o opțiune software care permite robotului să se adapteze la forțele externe sau variații ale obiectelor de lucru. Acesta poate fi folosit spre exemplu la o mașină de turnare prin injecție (Fig. 1.1). Robotul este compliant pe o singură direcție carteziană ceea ce facilitează o precizie și o siguranță ridicată, fie în timpul mișcării, fie în timp ce stă pe loc. Robotul poate „pluti” (Floating mode), sau se poate purta ca un arc. Când robotul este în floating mode (mod plutire) el va pluti liber în acea direcție și poziția lui poate fi schimbată de forțe externe. În modul „arc”, robotul se va purta ca un arc pe acea direcție iar forța necesară pentru a îl mișca crește odată cu distanța de la punctul de pornire. Complianța micșorează timpul de programare și îmbunătățește productivitatea și calitatea în timpul producției.

Figura 1.1 Mașină de turnare prin injecție [xx]

B. SociBot

SociBot este un robot sociabil creat pentru a interacționa cu oamenii și care poate fi utilizat într-un ghișeu (SociBot Desktop) sau ca punct de informare în spații publice cum ar fi aeroport, parc de distracții, mall sau centre de informare pentru turiști (SociBot Kiosk). Puterea robotului SociBot constă în calitățile sale sociale. Acesta are abilitatea de a detecta fețe, caracteristici, emoții, vorbe și gesturi. Cu ajutorul proiectorului din interiorul capului, robotul poate avea orice față și exprima orice expresie facială. SociBot poate urmări poziția a mai mult de 12 persoane în același timp, chiar și într-un grup mai mare.

În figura 1.2 este prezentat mecanismului de orientare al robotului creat de compania Engineered Arts. Acest gât robotic are trei axe de complianță create de o serie de actuatori elastici, astfel poate fi condus de forțe aplicate din exterior și răspunde la atingeri. Acest robot sesizează atât forțele aplicate dar și intensitatea acestora, permițând variații ale poziției acestuia de la o poziție de referință prestabilită.

Figura 1.2 Cap robotic – Socibot [xx]

Obiective

Pornind de la analiza prezentată anterior, lucrarea de față își propune proiectarea și realizarea unui sistem ce va materializa gâtul unui robot antropomorf. Se are în vedere definirea și realizarea componentelor hard și soft ce formează sistemul.

Structura hard va fi proiectată în programul de modelare 3D SolidWorks, deoarece ulterior piesele modelate vor putea fi exportate ca fișiere de tip .STL și .STEP. Astfel se vor putea realiza cu ușurință piesele pe imprimanta 3D respectiv pe freza cu comandă numerică din departament.

Softul va fi realizat în programul Matlab utilizând modulul Simulink și biblioteca Waijung, programarea fiind una vizuală. De asemenea timpul de programare este diminuat nefiind nevoie să scriu linii de cod, acestea fiind generate automat de program în momentul scrierii lui pe microcontroler.

Proiectarea sistemului

În capitolul curent se prezintă etapele proiectării și a realizării sistemul mecanic. Am ales să realizez un sistem compliant semi-activ (figura 2.1) deoarece are în componența sa un element elastic. Componentele principale ale acestui sistem sunt controlerul, actuatorul, un element elastic și sistemul senzorial care preia date cu privire la variația de lungime sau unghi a elementului elastic (figura 2.1).

Figura 2.1 Schema de bază a unui sistem compliant semi-activ [6]

Module funcționale sistem

Spre deosebire de sistemele compliante active, aceste sisteme rămân compliante chiar și în cazul în care are loc o cadere a tensiunii, funcționarea necorespunzătoare sau în cazul în care este dezactivat. Aceste proprietăți sunt realizate datorită prezenței unui element elastic în compunența sistemului. În general, sistemele compliante semi-active ating o performanță ridicată a complianței, dar odată cu asta, crește complexitatea sistemului dar și costurile de producție.

Sistemul creat are în compunența sa următoarele module:

Sistemul de acționare

Driver pentru motorul de curent continuu

Sistemul senzorial

Structura mecanică

Sistemul de control

În figura 2.2 este reprezentat schematic, sistemul proiectat.

Figura 2.2 Schema funcțională a sistemului

Sistemul de acționare și sistemul senzorial sunt comandate prin intermediul unei platforme Discovery STM32F4. Aceasta comunică cu un PC printr-o interfață RS232, astfel putem citi informații referitoare la senzori și la procesele în curs de desfășurare, în timp real.

În continuare sunt prezentate caracteristicile generale ale acestor componente.

Sistemul de acționare

Pentru acționarea sistemului am utilizat un motor de curent continuu. Motorul ales este de 6V Digilent MT – Motor, cu reductor, cu seria IG220053*00006R.

Figura 2.3 Motor de curent continuu 6V cu reductor [xx]

Reductorul are un raport de 1:53.

Conține senzori pentru viteza de rotație și sens(encoder)

Tren de pulsuri generate pentru fiecare rotație

Viteza este proporțională cu viteza pulsurilor

Proiectarea Sistemul mecanic

În acest subcapitol se prezintă structura mecanică proiectată și realizată. Proiectarea sistemului s-a făcut utilizând mediul de modelare 3D SolidWorks. Pentru realizarea pieselor s-a utilizat Freza CNC și Imprimanta 3D Zortrax M200.

Analiza structurală a sistemului mecanic

Gradul de mobilitate al sistemului se obtine utilizand relatia:

(2.3)

unde: M – numărul gradelor de mobilitate

n – numărul de elemente

– numărul cuplelor cinematice de clasa a 5-a

Figura 2.4 Schema cinematică a sistemului

Sistemul are două elemente și două cuple cinematice de clasa a 5-a. Astfel, cu relația (2.3) am determinat gradul de mobilitate al sistemului:

Gradul de mobilitate al structurii este 2.

Dezvoltarea modelului CAD al structurii mecanice

Pentru realizarea modelului CAD am utilizat programul SolidWorks. Există o varietate largă de programe CAD cum ar fi CATIA (Dassault Systems – 1981), AutoCAD (Autodesk – 1982) sau Pro/ENGINEER – 1988.

Utilizarea unui program CAD pentru dezvoltarea unui model virtual aduce mai multe avantaje, cum ar fi simplitatea în construcția modelului, permite modificarea și optimizarea componentelor, analiza, simularea și verificarea rezistenței mecanice a pieselor virtuale și a întregului sistem iar costurile de producție scad considerabil, această etapă de modelare virtuală înlocuind realizarea unor prototipuri experimentale.

Structura mecanică este formată din trei părți, dintre care, o parte este fixă, din care face parte sistemul de acționare și două părți mobile. Între cele două părți mobile se află o cuplă de rotație realizată cu ajutorul unui rulment. Prima parte mobilă este antrenată de sistemul de acționare iar acestea se pot roti una față de cealaltă dacă se aplică o forță din exterior. Între cele două părți mobile este montat un senzor rezistiv (potențiometru) care sesizează rotația uneia față de cealaltă și două arcuri care țin aceste două părți aliniate când nu acționează nicio forță externă. Între aceste două părți mobile și cea fixă se află un senzor optic pentru determinarea capătului de cursă.

În figura 2.5 este prezentat modelul CAD al sistemului dezvoltat. Modelul include un număr de 10 repere.

Figura 2.5 Modelul CAD secționat

Piesele (1) și (2) au fost realizate cu ajutorul imprimantei 3D a departamentului. Aceste două piese au formă de pătrat cu latura de 80mm și sunt prinse una de cealaltă printr-un rulment 6810 (7) pentru ca rotirea să fie cu o frecare cât mai redusă.

Figura 2.6 Realizarea pieselor (2) și (3) la imprimanta 3D

Piesa (1) dispune de un suport pentru potențiometrul (9), un canal pentru firele potențiometrului, un alezaj pentru montarea rulmentului cu strângere și un perete de forma unui „V” laturile orientate la 25⁰ față de latura pătratului. Pe acești doi pereți se vor prinde două arcuri de compresiune cu ajutorul cărora piesa (1) va putea fi reglată față de piesa (2).

Figura 2.7 Piesa (1) Model CAD

Piesa (2) are un ax pe care este montat rulmentul (7). Are trei găuri de prindere prin care este fixată de piesa (3) și două ghidaje pentru arcurile amintite mai sus. Aceste două ghidaje au și rol de suport pentru sistemul de pretensionare a arcurilor format dintr-un șurub pe care este prinsă o șaibă între două piulițe.

Figura 2.8 Piesa (2) Model CAD

Deoarece ghidajul în care va fi poziționat arcul are pereții subțiri de 5,5 mm, 3 mm respectiv 2 mm, iar locul unde acționează forța este doar locul în care intră piulița sistemului de pretensionare a arcului, peretele în acel loc având grosimea de doar 3 mm, am decis să fac o analiză cu element finit pentru piesa (2).

Figura 2.9 Ghidaj arc

Am considerat că doar această piesă este predispusă la deformări mari și la riscul de a se rupe din cauza zonei ghidajului care are pereți subțiri și din cauza forței area acționează în acea zonă. Am luat în calcul o forță de aproximativ 10 [N] care acționează în locul în care intră piulița sistemului de pretensionare a arcului.

Figura 2.10 Deformații piesa (2)

Se poate observa în figura 2.10 cum se deformează piesa, însă această deformație este la o scara de aproximativ 1:600. Cele mai mari deformații apar în zona colorată cu roșu iar cea mai mare deformație este de [mm].

Am refăcut analiza cu o forță de 50 N care acționează în același loc. Și de această dată riscul ca piesa să se rupă a fost mic, cea mai mare deformație fiind de [mm] însă cuplul maxim al motorului fiind de 45 [Ncm], dacă acționează o forță de 50 [N] cuplul va fi de aproximativ 200 [Ncm] iar acesta depășește cu mult limitele de forță ale motorului. Astfel piesa nu se va rupe, ci motorul va fi forțat să se rotească în sensul în care acționează forța.

Piesele (3), (4) și (6) au fost realizate cu ajutorul unei freze cu comandă numerică computerizată. Deoarece freza de care am dispus are un sistem manual de fixare a materialului de prelucrat, pentru a nu pierde concentricitatea în timpul întoarcerii piesei am preferat să prelucrez materialul pe o singură față. Astfel am avut nevoie de 4 piese (2, 3, 4 și 6) în loc de două piese prelucrate pe ambele fețe.

Piesa (3) are o grosime de 10 mm, are un ax pe care este montat al doilea rulment (7) și trei găuri de prindere dispuse la 120⁰ cu care piesa 3 este prinsă de piesa (2). În centul axului are un alezaj în care este montat axul motorului.

Figura 2.11 Piesa (3) – Model CAD / Realizată pe freză

Piesa (6) dispune de un alezaj în care este montat al doilea rulment (7), o gaură de trecere prin care trece axul motorului și trei găuri de prindere prin care se montează pe piesa (4). Aceste trei găuri nu sunt dispuse la 120⁰ deoarece această dispunere a fost nefavorabilă pentru piesa (4) aceasta având două alezaje în care sunt montate două piulițe M8.

Figura 2.12 Piesa (6) – Model CAD / Realizată pe freză

Piesa (4) are un alezaj în care se montează motorul (5). Motorul se montează cu 4 șuruburi M2. Are trei găuri de prindere prin care se montează piesa (6) și două găuri de trecere cu cele două alezaje amintite mai sus. Cu ajutorul acestora avem posibilitatea de a montat întregul sistem pe un batiu cu canal „T”.

Figura 2.13 Piesa (4) Model CAD / Realizată pe freză

Proiectarea sistemului de comandă și control

Descrierea structurii hardware a plăcii de dezvoltare

Pentru controlul sistemului se utilizează placa de dezvoltare Discovery STM32F4. Această placă dispune de un microcontroler pe 32-bit ARM Cortex-M4, o memorie falsh de 1 MB și memorie RAM de 192 KB. Placa se alimentează la o tensiune de 5V printr-un port USB și are ieșiri de 3V și 5V. Are în componența sa un accelerometru digital pe 3 axe și microfon digital, ieșire audio, LEDuri și două butoane.

Figura 3.1 Placa de dezvoltare Discovery STM32F4 [xx]

Platforma Discovery STM32F4 este o platforă care permite dezvoltarea cu ușurință a aplicațiilor, de către un utilizatori experimentați dar chiar și de începători.

Driver pentru motorul de curent continuu

Pentru a amplifica semnalul de comanda provenit de la microcontroler pentru motorul de curent continuu am folosit un modul cu punte H, Pmod HB3. In figura 3.2 se prezintă modulul utilizat. Acesta este alimentat de la o sursă cu o tensiune de 6V, necesară motorului, la terminalele VM și GND. De la terminalele M+ și M- este alimentat motorul.

Figura 3.2 Modul cu punte H – Pmod HB3 [4]

La conectorul J5 se va conecta encoderul motorului. Prin conectorul J1 se va conecta modului la placa de control. Direcția de rotație a motorului este determinată de valoarea logică la pinul DIR. Curentul va trece prin punte când pinul Enable este la valoarea de 1 logic. Turația motorului este controlată printr-un PWM (pulse width modulation – semnal modulat în lățime) la pinul Enable (EN). Într-un circuit analogic, turația motorului este controlată prin variația tensiunii de intrare. La un circuit digital doar semnalele 1 logic și 0 logic pot fi aplicate motorului. Prin urmare, sunt doar două modalități de a controla turația digital: folosirea unui circuit cu rezistență variabilă sau alimentarea motorului prin impulsuri. Deoarece circuitele cu rezistență variabilă sunt costisitoare, complicate și risipește multă energie sub formă de căldură, cea mai bună soluție este PWM-ul. PWM este o metodă digitală de a transmite un semnal analogic. Figurile de mai jos ilustrează un sistem PWM cu o frecvență de intrare de 2 KHz. Turația motorului este controlată prin ajustarea timpului în care semnalul este 1 logic.

Figura 3.3 Schema electrica a moduluiui [4]

Prima parte a figurii 3.4 arată un ciclu de funcționare cu un factor de umplere de 10% în care semnalul este 1 logic doar pentru 1/10 din lungimea de undă. Acest vârf pozitiv de 10% este egal cu 10% din totalul de 3.3V aplicați la intrare, adică 0.33V. Partea a doua și a treia arată un factor de umplere de 50%, respectiv 75%.

Figura 3.4 Semnal PWM [4]

Puntea H este un circuit care amplifică tensiunea și controlează sensul de rotație. Este folosit pentru a asigura voltajul și polaritatea adecvată pentru ca motorul să se rotească. În timp ce tensiunea este aplicată, motorul se rotește datorită forțelor magnetice încărcate. Când tensiunea este oprită, motorul continuă să se mai rotească puțin. La o frecvență de 2kHz, acest proces de accelerare și decelerare permite motorului să atingă o rotație lină care poate fi ușor controlată digital. PWM are un efect important asupra motoarelor de curent continuu. Rezistența inerțială este depășită mai ușor la pornire deoarece creșterile scurte la tensiune maximă dezvoltă unu cuplu mai mare decât echivalentul tensiunii continue. Datorită acestui efect, PWM-ul este cel mai folosit în aplicații care necesită cuplu mare cum ar fi servomotoarele de la clapele de la aripile avioanelor și în robotică.

Sistemul senzorial

Pentru ca sistemul realizat să reacționeze la stimuli exterini (în cazul acesta la o forță aplicată care determină o deplasare a unghiului de orientare), am folosit un potențiometru pentru a determina rotația platformei superioare care este direct proporțională cu forța aplicată acesteia. Acest semnal se utilizează pentru a controla viteza de rotație a motorului. Pentru determinarea vitezei și unghiul de orientare am folosit encoderul integrat în motorul de curent continuu iar pentru a stabili o cursă limitată de rotire a sistemului și pentru ca encoderul este unu relativ, am folosi un senzor optic de tip barieră.

Potențiometru

Potențiometrul este un rezistor variabil cu trei terminale dintre care unul este de comandă. Rezistența la terminalul de comandă variază în funcție de pozița cursorului.

Figura 3.5 Potențiometru

La placa de control am conectat un potențiometru cu o valoare nominală de 10 KΩ. Potențiometrul va fi montat pe prima piesă (1) cu ajutorul piuliței (4) iar cursorul va fi montat cu strângere pe cea de a doua piesă (2), astfel vom putea monitoriza și corecta rotirea uneia față de cealaltă.

Figura 3.6 Modul de montare al potențiometrului

Encoder

Encoderul este un dispozitiv electromecanic care convertește poziția unghiulară sau mișcarea unui ax într-un semnal analogic sau într-un cod digital. Există două tipuri de encodere: absolut și relativ. Semnalul de ieșire al unui encoder absolut indică poziția actuală a axului ceea ce le face traductoare de unghi. Semnalul de ieșire al unui encoder relativ asigură informații cu privire la mișcarea axului. Astfel putem afla informații cum ar fi viteză, distanță și poziție [xx].

Encoderele de rotație sunt utile în multe aplicații care necesită o rotație precisă a unui ax, cum ar fi control industrial sau robotică.

Encoderul relativ înregistrează cu precizie modificările poziției dar nu există o legătură fixă între valoarea encoderului și poziția reală a axului. Dispozitivele controlate cu un encoder relativ au un punct fix de referință de la care încep măsurătorile.

Un encoder relativ asigură semnale de ieșire ciclice numai când acesta se rotește. Acesta are două semnale de ieșire numite senzor A și senzor B (sau A și B). Aceste semnale sunt sub formă de impulsuri logice defazate una față de cealaltă cu 90°. În figura 3.7 se poate observa forma de undă a acestor semnale și timpul în care acestea sunt 0 și 1 logic. Dacă parcurgem forma de undă de la stânga la dreapta (sensul acelor de ceas) în fiecare moment în care semnalul A trece din 0 în 1 logic semnalul B are valoarea 1 logic. Dacă parcurgem forma de undă invers, de fiecare dată când semnalul A își schimbă valoarea din 0 în 1 semnalul B are valoarea 0. În acest mod placa de control poate determina, pe baza semnalelor encoderiului, sensul și viteza de rotație a arborelui. Determinare vitezei de rotație sau a poziției se face prin numărarea impulsurilor prelevate de la senzor.

Figura 3.7 Semnale encoder [xx]

Senzor optic de tip barieră

Pentru a stabili capetele de cursă se utilizează un senzor optic de tip barieră GP1S51VJ000F (figura 3.8). Senzorul optic are în componența sa emițător și un receptor optic.

Figura 3.8 Fotoîntrerupător GP1S51VJ000F [xx]

Senzorul are un emitor infraroșu și un fototranzistor care sunt alimentați în permanență. În timp ce unda IR ajung la fototranzistor, acesta este închis, tensiunea de alimentare scurgându-se la împământare. În momentul în care un obiect întrerupe unda care merge de la emitor la receptor, tranzistorul se deschide și tensiunea de alimentare nu mai merge la impământare ci aceasta merge la microcontroler prin pinul de ieșire. Astfel știm cănd partea mobilă a gâtului s-a rotit la maximul setat.

În figura 3.9 este prezentată schema de conectare a senzorului și rezistențele pentru limitarea curentului, pentru diodă respectiv pentru fototranzistor. Valorile necesare pentru aceste rezistențe și au fost calculate în funcție de următoarele aspecte: Curentul necesar LED-ului () pentru ca intensitatea luminoasă să fie suficient de mare încât tranzistorul să se deschidă, . LED-ul este alimentat cu 5V iar caderea de tensiune pe LED este 1,25V.â

(2.1)

La o tensiune și un curent , curentul pe colector , .

(2.2)

Figura 3.9 Schema de conectare a senzorului [xx]

Conectarea modulelor sistemului la placa de dezvoltare

Conectarea sistemului de acționare la placa de control

În figura 3.10 este prezentată schema de conectare a sistemului de acționare la placa de control prin intermediului driverului Pmod HB3.

Figura 3.10 Schema de conectare a sistemului de acționare la placa de control

Motorul de curent continuu (1) este conectat la modulul cu punte H (2) la terminalele M- și M+. Driverul este alimentat cu o tensiune de 6V necesară motorului de la o sursă de tensiune, la terminalele VM și GND. Encoderul este conectat cu cele patru fire VCC, GND, SA (Senzor A) și SB (Senzor B) la cei patru pini cu aceeași denumire ai modulului cu punte H.

Modulul Pmod HB3 este conectat la placa de control Discovery STM32F4 (3) prin mufa J1. Se conectează alimentarea, cei doi senzori ai encoderului se montează pe pinii PA0 și PA1.

De la portul PA8 al plăcii de control este trimis un semnal de tip PWM la pinul EN (enable) cu ajutorul căruia se controlează turația motorului. Din portul PD2 prin pinul DIR (direcție) al modulului se transmite un semnal la puntea H pentru a schimba sensul de rotație al motorului.

Conectarea potentiometrului la placa de control

În figura 3.11 este prezentată schema de conectare a potențiometrului la placa de control. Potențiometrul (1) este conectat la placa de control (2) prin trei fire. Firul roșu pentru alimentarea de 5V, firul negru pentru împământare iar firul galben este firul pentru semnalul analogic care este conectat la portul ADC PA5 al microcontrolerului.

Figura 3.11 Schema de conectare a potențiometrului la placa de control

Conectarea senzorului optic la placa de control

În figura 3.12 este prezentată schema de conectare a senzorului optic la placa de control. Senzorul optic (1) se conectează la placa de control (2) prin trei fire, doi dintre pinii senzorului fiind conectați la același pin al plăcii de control, și anume, pinii de alimentare +3V, cei doi pini de ground sunt conectați prin firul negru, iar cu firul galben se face conexiunea de comandă și se conectează la portul PA1 al plăcii de control.

Figura 3.12 Schema de conectare a senzorului optic la placa de control

Implementarea algoritmului de control în mediul Matlab/Simulink

În acest capitol este prezentată implementarea controlului sistemului realizat prin intermediul unei platforme de dezvoltare Discovery Board. Aceasta placă este ușor de utilizat și de programat, programarea fiind una vizuală. Pentru programarea platformei Discovery s-a utilizat mediul Matlab/Simulink. Alegerea acestui mediu a fost facută datorită facilităților pe care acesta le oferă, în ceea ce privește resursele și simplitatea de dezvoltare a aplicațiilor. Un alt avantaj major al acestei platforme este generarea automată de cod pornind de la modelul Simulink. Astfel codul necesar plăcii de dezvoltare este generat automat, proiectantul concentrându-se pe dezvoltarea algoritmului de control și funcționarea sistemului.

Biblioteca Waijung

Biblioteca Waijung este un set de blocuri Simulink, care poate fi folosită cu ușurință pentru a genera automat cod C dintr-un model Matlab/Simulink pentru o varietate largă de microcontrolere. Cuvântul Waijung este un argou Tailandez pentru „so fast” („atât de rapid”). Această bibliotecă a fost creată special pentru a fi compatibilă cu familia de microcontrolere STM32F4 de la STMicroelectronics [xx]. Pe lângă numeroasele blocuri Simulink pe care le conține această bibliotecă, există posibilitatea de a crea propriile blocuri Simulink în care se poate scrie cod manual.

Figura 4.1 Biblioteca Waijung

Configurarea platformei Discovery utilizând biblioteca Waijung

Configurarea platformei Discovery se face cu ajutorul a două blocuri Simulink din biblioteca Waijung, Target Setup (Figura 4.2) și UART Setup (Figura 4.4).

Figura 4.2 Blocul Target Setup

În acest bloc se configurează microcontrolerul, frecvența semnalului de ceas, programatorul și ceea ce se va întâmpla cu datele de pe microcontroler în momentul în care încărcăm un program pe el (Figura 4.3).

Figura 4.3 Parametrii blocului Target Setup

UART Setup (Figura 4.4) este blocul cu care se configurează comunicarea pe portul serial, cu ajutorul căruia comunicăm prin intermediul calculatorului cu microcontrolerul. Prin portul serial se vor primi date de la microcontroler la PC pentru a le afișa într-o interfață grafică.

Figura 4.4 Blocul UART Setup

Parametrii setați în acest bloc sunt: modului UART, rata de transfer, numărul de biți și pinii plăcii de dezvoltare prin care se face transmiterea (Tx) și primirea (Rx) datelor (Figura 4.5).

Figura 4.5 Parametrii blocului UART Setup

Accesul perifericelor platformei Discovery utilizând biblioteca Waijung

Pentru citirea datelor de pe microcontroler se utilizează blocul UART Tx (Figura 4.6).

Figura 4.6 Blocul UART Tx

În acest bloc se configurează parametri, cum ar fi: Modulul UART, modul de transfer, limbajul, tipul de informații care trebuie citite și intervalul la care se face citirea.

Figura 4.7 Parametrii blocului UART Tx

Cu ajutorul blocului Encoder Read (Figura 4.8) se preiau informații de la encoder. Aceste informații ne pot ajuta să aflăm poziția, direcția și viteza de rotație.

Figura 4.8 Blocul Encoder Read

Parametrii care se setează în acest bloc sunt: timerul, pinii pentru canalele de intrare, numărul de pulsuri generate per revoluție și intervalul de timp dintre pulsuri.

Figura 4.9 Parametrii blocului Encoder Read

Deoarece potențiometrul furnizează un semnal analogic este nevoie de un convertor analog-numeric care să convertească acest semnal într-un semnal digital. Pentru acest lucru este nevoie de un bloc care să acceseze porturile ADC ale microcontrolerului.

Figura 4.10 Blocul Regular ADC

Acest bloc se numește Regular ADC (Figura 4.10) iar parametrii care vor fi setați sunt: Modulul ADC, tipul de date de ieșire, pinul plăcii de control la care va fi conectat senzorul și perioada la care se vor citi datele (Figura 4.11).

Figura 4.11 Parametrii blocului Regular ADC

Basic PWM (Figura 4.12) este un bloc cu ajutorul căruia furnizăm semnalul PWM de control al turației pentru motorul de curent continuu.

Figura 4.12 Blocul Basic PWM

Parametrii acestui bloc (Figura 4.13) sunt: Timerul, perioada semnalului, polaritatea, pinuii plăcii de control pentru canalele de ieșire și intervalul de timp la care vor fi trimise semnalele.

Figura 4.13 Parametrii blocului Basic PWM

Blocul Digital Output (Figura 4.14) este un bloc cu ajutorul căruia placa de control furnizează un semnal digital de ieșire. Cu acest bloc controlăm direcția de rotație a motorului de curent continuu.

Figura 4.14 Blocul Digital Output

Acest bloc are ca parametrii principali de configurat portul, pinul de ieșire, frecvența, tipul de semnal și intarvalul la care se furnizează semnalul (Figura 4.15).

Figura 4.15 Parametrii blocului Digital Output

Dezvoltarea algoritmilor de control în mediul Matlab/Simulink

O componentă importantă este diagrama Stateflow. Această diagramă este o reprezentare a sistemului cu un număr finit de stări. Stări ale sistemului care se schimbă pe baza unor condiții predefinite.

Exemple de sisteme și stările lor:

Cutie de viteze automatică

Prima, a doua, a treia și a patra treaptă

Un actuator în stare de detectare a unor defecțiuni, izolare sau sistem de redresare

Activ, în așteptare, inactiv, izolat

Un braț robotic

Inițializare, mod normal sau oprire

Stateflow este o extensie Simulink a mediului de programare Matlab, care este un mediu de proiectare pentru dezvoltarea sistemelor de stări și diagrame.

Simulink este folosit pentru a răspunde la schimbările continue ale sistemelor dinamice iar Stateflow este folosit pentru a răspunde la schimbările instantanee ale acestor sisteme. Sistemele din lumea reală trebuie să răspundă atât la schimbările continue cât și la cele instantanee, cum ar fi, dinamica suspensiilor, schimbarea treptelor de viteză, sisteme de propulsie, etapele lansării, cinematica roboțiilor sau modurile de operare ale acestora.

Figura 4.16 Exemple de sisteme din lumea reală [3]

Sistemul realizat va avea patru stări: starea de inițializare, starea de calibrare, starea de funcționare și starea de eroare. Aceste stări și tranzițiile dintre toate cele patru stări (figura 4.17) sunt prezentate în continuare.

Figura 4.17 Diagrama Stateflow a sistemului

Prima stare a sistemului este starea de inițializare, numiă „Start” (figura 4.18). Sistemul intră în această stare imediat ce placa de control este alimentată, și nu este nevoie ca vreo condiție să fie îndeplinită.

Partea de „entry” reprezintă tot ceea ce se inițializează în starea curentă. Variabilele inițializate reprezintă: starea curenta, led1 (portocaliu), led2 (verde), led3 (roșu), cmd (factor de umplere PWM) și sens (direcția motorului). Partea de „during„ reprezintă tot ceea ce se modifică în timpul funcționării.

Figura 4.18 Starea de inițializare

În momentul în care sistemul este alimentat, acesta intră în starea de inițializare în care LED-ul portocaliu este aprins și ledul verde se aprinde intermitent.

A doua stare a sistemului este starea de calibrare (figura 4.19).

Figura 4.19 Starea de calibrare

Sistemul face tranziția de la starea de inițializare la starea de calibrare în momentul în care este îndeplinită condiția [but==1], adică, atunci când este apăsat butonul albastru de pe placa de dezvoltare.

În această stare există patru substări: stânga, dreapta, centru și stop. În momentul în care sistemul este în starea de calibrare, ledul verde rămâne aprins, cel portocaliu este intermitent iar prima substare se activează. Substarea „stânga” comandă motorul să se rotească spre stânga cu o valoare PWM de 65%. În partea de „exit” se memorează numărul de impulsuri generate de encoder. Când limita cursei este atinsă, valoarea 1 logic a senzorului optic este condiția de trecere la urmatoarea substare. Substarea „dreapta” comandă motorul să se rotească cu aceeași viteză spre dreapta, memorând din nou numărul de impulsuri genetare de encoder. Când senzorul optic indică valoarea 1 logic și encoderul a generat mai mult de 1000 de impulsuri, condiția de trecere la următoarea substare este îndeplinită. În această substare „centru”, se calculează numărul de impulsuri generate de encoder pe întreaga cursă iar motorul se va roti spre stânga până ce acesta se află în centrul cursei. Când jumătate din cursă este parcursă este îndeplinită condiția de trecere în substarea „stop” în care motorul se oprește iar variabila „calibrare_ok” devine 1 logic, aceasta fiind condiția de trecere a sistemului la starea de funcționare (figura 4.20).

Figura 4.20 Starea de funcționare

În starea de funcționare sistemul este calibrat și funcționează în condiții normale, și se urmărește ca limitele cursei să nu fie încălcate. LED-ul portocaliu este aprins iar viteza și direcția de rotație a motorului sunt date de catre controlerul PID realizat. În momentul în care una dintre limitele cursei sunt depășite (ca răspuns 1 logic al senzorului optic), sistemul intră în starea de eroare (figura 4.21).

Figura 4.21 Starea de eroare

În momentul în care sistemul intra în această stare, motorul se oprește și nu mai funcționează. Ledul roșu aprins ne indică faptul că sistemul se afla în starea de eroare iar condițiile care trebuie îndeplinite pentru a reveni la starea de inițializare este ca poziția motorului să fie în limitele cursei stabilite și butonul să fie apăsat.

Această diagramă Stateflow (figura 4.22) este un bloc Simulink de care sunt legate toate celelalte blocuri în funcție de care se modifică starea sistemului sau care sunt comandate în funcție de starea sistemului.

Figura 4.22 Blocul Simulink Chart

Întregul software (figura 4.23) este dezvoltat în jurul acestui bloc Stateflow Chart.

Figura 4.23 Software dezvoltat

În etapa de inițializare (figura 4.24) se configurează microcontrolerul (Target) și comunicarea serială cu ajutorul blocurilor Target Setup și UART Setup. De asemenea se crează memorii pentru stocare a datelor provenite de la encoder, date care pot fi accesate mult mai ușor ulterior.

Figura 4.24 Blocurile de inițializare și de memorie de stocare a datelor

Partea de semnale de intrare o reprezintă semnalul butonului, generatorul de puls pentru variabila „imp” cu care se controlează LED-urile, semnalul senzorului optic, semnalul generat de encoder, semnalul de la potențiometru și semnalul dat de controlerul PID. Aceste semnale de intrare sunt preluate de la senzori, buton respectiv din partea de software, cu ajutorul blocurilor prezentate în figura 4.25.

Butonul este conectat la pinul intern al microcontrolerului PA0 iar acesta este configurat cu ajutorul unui bloc Digital Input. După ce acest bloc primește semnalul de la buton, acesta este introdus în diagrama Stateflow.

Senzorul optic pentru capătul de cursă este conectat la placa de control la pinul PA1. Acest semnal este primit de asemenea de un bloc Digital Input care este legat la diagrama Stateflow.

Encoder generează impulsuri prin două fire (Sensor A / Sensor B) conectate la porturile C6 respectiv C7. Aceste semnale sunt preluate de blocul Encoder Read și sut introduse ân diagrama Stateflow.

Potențiumetrul este conectat la portul ADC al microcontrolerului AN5. Acest semnal fiind unul analogic este convertit de convertorul analog-numeric al microcontrolerului într-un semnal digital, semnal care ve fi introdus în diagrama Stateflow.

Figura 4.25 Blocurile de intrare

Controlerul PID (figura 4.26) este un controler proporțional-integral-derivativ care calculează continuu valoarea erorii ca fiind diferența dintre o valoarea unei referințe dorite și valoarea măsurată. Controlerul încearcă se minimizeze eroarea în timp prin ajustarea variabilelor de control, la o nouă valoare determinată de suma:

(3.1)

Controlerul are trei coeficienți, întotdeauna pozitivi: (coeficientul proporțional), (coeficientul integrativ) și (coeficientul derivativ).

Figura 4.26 Schema bloc a unui controler PID

În cazul sistemului realizat controlerul PID (figura 4.27) are setat doar coeficientul proporțional , ceilalți doi coeficienți fiind și .

Figura 4.27 Controler PID

Acest controler a fost realizat cu ajutorul unor blocuri Simulink prezentate în continuare. Referința este setată în subsistemul „Referință” care are în componența sa un bloc Pulse Generator și o constantă. Aceste două semnale însumându-se, rezultă valoarea de referință dorită. Acest semnal este comparat cu valoarea măsurată cu ajutorul encoderului și este introdusă într-un bloc „Gain” care multiplică valoarea de intrare cu o valoare constantă. Acest bloc reprezintă coeficientul proporțional , în acest caz, egal cu 15. După ce semnalul de intrare este multiplicat acesta intră într-un bloc „Saturation” care impune semnalului o limită superioară și una inferioară. La ieșirea din acest bloc, semnalul se bifurcă. Pe de o parte este comparat cu 0 după care este introdus în diagrama Stateflow ca variabilă pentru sensul de rotație al motorului iar pe de altă parte acesta este introdus într-un bloc „Abs” care ne va da o valoare absolută a semnalului, după care semnalul este introdus în diagrama Stateflow.

Partea de semnale de ieșire (figura 4.28) o reprezintă semnalele de comandă a LED-urilor și semnalele de comandă a motorului, turația și direcția de rotație.

Figura 4.28 Blocurile de ieșire

Pentru comanda LED-urilor am utilizat un bloc „Digital Output” în care sunt configurați pinii de ieșire. Pinii de ieșire sunt pinii interni la care sunt conectate LED-urile de pe placa de control, adică PD12, PD13, PD14 și PD15.

Pentru controlul turației motorului am utilizat blocul Simulink „Basic PWM”. Acest bloc ne asigură pe pinul de ieșire A8 semnalul PWM configurat pentru controlul turației motorului de curent continuu.

Direcția de rotație a motorului este dată de un alt bloc „Digital Output” iar pinul de conectare este PD2. Semnalul fiind unul digital, valoarea semnalului de ieșire poate fi 0 logic (pentru rotirea spre dreapta) și 1 logic (pentru rotirea spre stânga).

Pentru ca toate valorile semnalelor de intrare dar și a celor de ieșire să poată fi citite și afișate într-o interfață grafică pe calculator, am utilizat blocul UART Tx (figura 4.29) care realizează comunicarea serială dintre placa de control și calculatorul printr-o interfață RS232.

Figura 4.29 Blocul UART Tx și semnalele transmise pe portul serial

Datele transmise prin interfața serială RS232 sunt informații referitoare la starea în care se află sistemul, valoarea encoderului, valoarea referinței, valoarea potențiometrului și valoarea factorului de umplere al PWM-ului. Aceste valori vor fi afișate într-o interfață grafică realizată în mediul Matlab GUIDE (Graphical user interface development environment).

Implementarea controlului compliant

Pentru implementarea controlului compliant am realizat un al doilea controler PID (figura 4.30). Referința acestui controler fiind valoarea de 0 a potențiometrului după ce acesta a fost calibrat. În momentul în care o forță din exterior este sesizată de potențiometru, valoarea transmisă de acesta este amplificată de coeficientul al controlerului iar diferența dintre controlerul de poziție inițial și al doilea controler va rezulta într-o altă comandă dată motorului, de data aceasta diferită de referința prestabilită. Motorul se va roti în sensul în care va acționa forța externă cu o turație proporțională cu acea forță, între cele două limite stabilite în blocul „Saturation” și anume, factorul de umplere al PWM-ului va fi maxim 80%. În momentul în care nu acționează nici o forță externă sistemul funcționează normal, urmărind valoarea de referință prestabilită.

Figura 4.30 Al doilea controler PID utilizat

Dezvoltare interfață grafică cu utilizatorul (GUI)

Mediul Matlab GUIDE

Mediul Matlab GUIDE (Graphical user interface development environment) este un mediu cu ajutorul căruia se pot crea interfețe grafice (GUI – Graphical user interface) pentru orice aplicație. Folosind editorul GUIDE, se poate proiecta interfața, după care generează automat cod Matlab care se poate modifica pentru a programa funcționalitatea aplicației. Aceste interfețe pot conține casete de text, grafice sau elemente de control, cum ar fi butoane sau slidere [xx].

Figura 5.1 Mediul Matlab GUIDE

Interfața grafică asigură controlul „point-and-click” a aplicațiilor software, nefiind necesar ca utilizatorul să învețe un limbaj de programare sau să scrie comenzi pentru a folosi aplicația. Crearea acestor interfețe se face ușor, adăugarea elementelor făcându-se cu „Drag-and-Drop” din meniul din stânga în spațiul de lucru.

Interfață realizată

În figura 5.2 este prezentată interfața realizată pentru acest sistem Interfața conține două butoane (Connect UART și Exit), cinci căsuțe de text în care se vor afișa informații precum starea actuală (Stare), poziția sistemului (Poz), factorul de umplere al PWM-ului (PWM), date de la potențiometru care ne informează cu privire la forța care acționează din exterior asupra sistemului și căsuța mare în care sunt afișate toate datele recepționate de calculator prin interfața RS232.

Figura 5.2 Interfața grafică realizată

De asemenea, interfața conține și trei grafice. În primul grafic este reprezentată prin linia roșie referința sistemului iar cu linia albastră răspunsul acestuia. În al doilea grafic este reprezentat cu linia albastră factorul de umplere PWM iar în al treile este reprezentară variația semnalului primit de la potențiometru în momentul în care o forță din exterior acționează asupra sistemului. Toate acestea sunt raportate în timp pe un interval de 60 de secunde.

Pentru a programa butonul „Connect UART” al interfeței create am introdus variabile globale pentru comunicarea serială, valorile citite, cursor, timp, referință, comanda motorului și semnalul potențiometrului.

% – Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

global s;

global valori;

global cursor;

global timp;

global referinta;

global comanda;

global s_rezist;

Aceste variabile au fost apoi inițializate.

cursor=0;

valori=zeros(600);

timp=zeros(600);

referinta=zeros(600);

comanda=zeros(600);

s_resizt=zeros(600);

delete(instrfind);

s = serial('COM5','BaudRate',115200,'DataBits', 8,'Terminator','CR');

s.BytesAvailableFcn={@mycallback,handles};

handles.serial=s;

fopen(s);

Răspunsul la apăsarea acestui buton au fost programate cu secvența următoare. Pentru afișarea datelor de pe serial am folosit sintaxa out=fscanf(s) după care s-au afișat în caseta de text edit1.

function mycallback(obj,event,handles)

global s;

global valori;

global cursor;

global timp;

global referinta;

global comanda;

global s_rezist;

out=fscanf(s);

set(handles.edit1,'String',out);

idx1= strfind(out, ' sz='); %valoare encode

idx2= strfind(out, ' pz='); %valoare pozitie

idx3= strfind(out, ' rf='); %referinta

idx4= strfind(out, ' cm='); %comanda

idx5= strfind(out, ' pt=');

stare=out(4:idx1-1);

pozitie=out(idx2+4:idx3-1);

val1=str2num(pozitie);

ref_s=out(idx3+4:idx4-1);

ref=str2num(ref_s);

cmd_s=out(idx4+4:idx5);

cmd=str2num(cmd_s);

pot_s=out(idx5+4:length(out));

pot=str2num(pot_s);

În caseta de text edit2 se afișează în cuvinte starea actuală a sistemului. Astfel, daca starea este 0, în caseta edit2 se va afișa „START”, dacă starea este 1 se va afișă „Initializare”, etc.

%set(handles.edit2,'String',stare);

if stare=='0'

set(handles.edit2,'String','START');

else

if stare=='2'

set(handles.edit2,'String','Functionare');

else

if stare=='3'

set(handles.edit2,'String','Eroare');

else

set(handles.edit2,'String','Initializare');

end;

end;

end;

set(handles.edit3,'String',pozitie);

set(handles.edit4,'String',ref_s);

set(handles.edit5,'String',pot);

Pentru a reprezenta grafic valorile citite prin interfața RS232 am inițializat cursorul și valorile care trebuie afișate. Cursorul se va muta de la stânga la dreapta cu o unitate la fiecare 0,5 secunde iar după 60 s acesta revine la valoarea 1. Valorile afișate pe cele trei grafice sunt referința, impulsurile generate de encoder, comanda motorului de curent continuu și semnalele potențiometrului.

cursor=cursor+1;

if cursor>600

cursor=1;

end

valori(cursor)=val1;

referinta(cursor)=ref;

comanda(cursor)=cmd;

s_rezist(cursor)=pot;

Toate aceste valori sunt reprezentate grafic în raport cu timpul, timpul fiind inițializat în continuare.

for i=2:cursor;

timp(i)=timp(i-1)+0.1;

end

Pentru reprezentarea grafică am setat intervalul axelor și ceea ce se va afișa pe fiecare axă cât și culorile cu care se vor reprezenta, astfel pe axa x a celor trei grafice va fi timpul, pe axa y a primului grafic se va afișa referința (roșu) și impulsurile generate de encoder (albastru), pe axa y a celui de al doilea grafic se va afișa comanda motorului (albastru) iar pe axa y a celui de al treilea grafic se va afișa semnalul potențiometrului (roșu).

if (mod(cursor,5)==0)

axes(handles.axes2);

axa_x=timp(1:cursor);

axa_y=valori(1:cursor);

axa_y2=referinta(1:cursor);

axa2_y=comanda(1:cursor);

axa3_y=s_rezist(1:cursor);

plot(axa_x,axa_y,axa_x,axa_y2,'r');

grid on;

axis([0 60 50 200]);

axes(handles.axes3);

plot(axa_x,axa2_y);

grid on;

axis([0 60 -100 100]);

axes(handles.axes4);

plot(axa_x,axa3_y,'r');

grid on;

axis([0 60 -150 150]);

end

La apăsare butonului „EXIT” se șterg din memorie datele memorate pentru afișarea graficelor și se închide interfața.

% – Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

delete(instrfind);

close(handles.figure1);

Rezultate experimentale

Pentru a testa algoritmul de control dezvoltat în capitolul anterior sau efectuat mai multe experimente. Raspunsul sistemului a fost urmărit utilizând interfața grafică realizată în Matlab GUIDE.

Prima aplicație a constat în testarea algoritmului utilizând un controler PID pentru controlul poziției sistemului și analizarea răspunsul sistemulul în momentul în care o forță externă acționează asupra lui. În figura 6.1 este prezentat un grafic în care linia roșie reprezintă referința poziției sistemului iar linia albastră reprezintă poziția reală a acestuia.

Figura 6.1 Referința sistemului și poziția reală a acestuia – Aplicația 1

Referința este un semnal dreptunghiular care variază de la 100 până la 175 impulsuri ale encoderului. Encoderul generează patru impulsuri per rotație însă deoarece motorul are un reductor de 1:53, encoderul va genera 636 impulsuri per rotație completă a efectorului final. Astfel fiecare impuls generat de encoder reprezintă 0,56 de grade, iar cele 75 de impulsuri setate ca referință înseamnă 42 de grade de rotație a efectorului final.

Se poate observa că între referință și poziția reală a sistemului există o mică eroare, iar în unele locuri această diferență este mai mare. În acele momente o forță externă a fost aplicată sistemului, acesta fiind deviat de la traiectoria sa. Aceste deviații sunt însă destul de mici, deviația maximă fiind de aproximativ 15 grade având în vedere forța care a fost aplicată.

În această aplicație sistemul a fost rigid, controlul compliant nefiind implementat.

În graficul din figura 6.2 este prezentat variația semnalului primit de la potențiometru în timp. Aceste variații sunt direct proporționale cu forța externă aplicată sistemului și sunt reprezentate în intervalul -150 : 150. Se poate observa că acest semnal trece de valoarea de 100 respectiv -100 de fiecare dată când o forță externă acționează asupra sistemului, iar deviațiile de poziție față de referință sunt destul de mici.

Figura 6.2 Forța externă aplicată – Aplicația 1

Graficul din figura 6.3 reprezintă variația factorului de umplere al PWM-ului în timp. Se pot observa creșteri și scăderi instantanee în momentul în care sistemul își schimbă poziția. În schimb, cănd o forță externă este aplicată acesta rămăne la o valoare mare, motorul opunând rezistență. Limita factorului de umplere dată cu ajutorului blocului Simulink „Saturation” este de 80% semnul reprezentând direcția de rotație.

Figura 6.3 Comandă motor – Aplicația 1

Cea de a doua aplicație a constat în testarea algoritmului și analizarea răspunsul sistemulul în momentul în care o forță externă acționează asupra lui după ce a fost implememtat controlul compliant. Controlul compliant a fost implementat prin adăugarea unui nou controler PID.

În graficul din figura 6.4 se poate observa aceeași referință a sistemului cu linia roșie, iar cu linia albastră este reprezentată poziția reală a acestuia. În acest caz eroarea staționară este mai mare decât în cazul în care controlul compliant nu a fost implementat deoarece sistemul nu mai este rigid. Acest lucru se poate observa și în deviațiile foarte mari de poziție ale sistemului față de referință în momentul în care o forță externă acționează asupra sistemului.

Figura 6.4 Referința sistemului și poziția reală a acestuia – Aplicația 2

În graficul din figura 6.5 se poate observa că forțele externe aplicate sunt mici în comparație cu cele aplicate în cadrul primei aplicații, toate fiind sub valoarea de aproximativ 80. În schimb, deviațiile sistemului de la poziția de referință sunt foarte mari în comparație cu deviațiile rezultate în prima aplicație, acestea fiind de aproximativ 55 de grade.

Figura 6.5 Forța externă aplicată – Aplicația 2

În graficul din figura 6.6 se poate observa cum factorul de umplere al PWM-ului crește în momentul în care o forță externă este aplicată sistemului. Acesta crește direct proporțional cu această forță, motorul rotindu-se în sensul de aplicare a forței. Controlul compliant permite modificarea ușoară a poziției sistemului fără a fi nevoie să aplicăm forțe foarte mari asupra lui, motorul fiind un ajutor. În momenul în care forța externă încetează să acționeze asupra sistemului, acesta revine la poziția de referință.

Figura 6.6 Comandă motor – Aplicația 2

Concluzii

Toate obiectivele prevăzute au fost îndeplinite în conformitate cu planificarea inițială. În urma studiilor efectuate asupra metodelor de implementare a controlului compliant al unui sistem am ajuns la concluzia că o complianță semi – activă este una ideală deoarece are în componența sa un element elastic care pe lângă faptul că este folosit ca un mecanism care stochează energie care contribuie la scăderea consumului de energie a întregului sistem, această energie poate fi, de asemenea, folosită pentru a crește viteza elementului dacă este necesar.

Componentele hardware ale structurii au fost proiectate în mediul de proiectare asistată de calculator Solidworks deoarece este un mediu complex în care se pot efectua analize cu element finit pentru a determina rezistența pieselor și acestea se pot optimiza. Ulterior, cu ajutorul acestui software, am putut exporta fișiere de tip .STL și .STEP pentru a realiza componentele cu ajutorul imprimantei 3D și a frezei cu comandă numerică computerizată din departament.

Mediul de programare Matlab/Simulink împreună cu biblioteca Waijung și celelalte biblioteci Simulink au fost un real ajutor în ceea ce privește software-ul realizat, deoarece este simplu de utilizat, codul generându-se automat. Timpul de programare a fost redus substanțial, astfel, m-am putut concentra pe funcționalitatea optimă a sistemului. De asemenea mediul Matlab GUIDE a facilitat crearea unei interfețe grafice (GUI) cu ajutorul căreia să se citească date prelevate de la seszori, trimise de microcontroler la calculator printr-o interfață RS232, și să se afișeze grafice cu răspunsuri ale sistemului în anumite condiții.

În ceea ce privesc dezvoltările ultoerioare, acestea vor veni pe partea estetică, prin crearea unei carcase (Capul robotului), și pe partea de optimizare a costului de producție, în vederea comercializării produsului. Acesta fiind un prototip, placa de control este una foarte performantă, iar capacitățile ei sunt cu mult peste cerințele sistemului. Astfel, pentru a reduce costurile, am creat o placă de control dedicată, care are capacitatea de a îndeplinii cu succes cerințele impuse de sistem. Ulterior va fi realizat un software similar cu cel creat pentru placa de dezvoltarea Discovery STM23F4.

Bibliografie

Ana Navarrete Ortiz de Lanzagorta, Design of a Humanoid Neck Movements and Eye-Expression Mechanisms, 2012, pag. 14-21

Constantinos Mavroidis, Charles Pfeiffer, Toms River, J. Kathryn, Michael Mosley, Prosthetic, Orthotic and Other Rehabilitative Robotic Assistive Devices Actuated by Smart Materials, Princeton, New Jersey, USA, 2002

Coorous Mohtadi, Introduction to Simulink & Stateflow, http://www.bath.ac.uk/learningandteaching/rdu/guides/matlab3.pdf

Daniel P. Ferris, Powered lower limb orthoses for gait rehabilitation, University of Michigan, Ann Arbor, MI, 2005

Francesco Nori, Lorenzo Jamone, Giorgio Metta, Giulio Sandini, Accurate Control of a Human-like Tendon-driven Neck, Italian Institute of Technology, Genoa, Italia

H. Kawasaki, Development of a Hand Motion Assist Robot for Rehabilitation Therapy by Patient Self-Motion Control, IEEE, Gifu University, Gifu, Japonia, 2007

Muhammad Rehan Ahmed, Compliance Control of Robot Manipulator for Safe Phisical Human Robot Interaction, Örebro University, Kållered, Suedia, 2011, pag. 1-34

Radu Dănescu, Proiectarea cu Microprocesoare Curs 9 Motoare și Senzori, 2015/2016

Yonas T. Tadesse, Creating Human-Like Facial Expressions Utilizing Artificial Muscles and Skin, pag. 20-90, 2009

SoftMove, http://new.abb.com/products/robotics/application-software/machine-tending/softmove

Robotul social SociBot, https://www.engineeredarts.co.uk/socibot/

Encoder, https://en.wikipedia.org/wiki/Rotary_encoder

Driver motor c.c., https://reference.digilentinc.com/_media/pmod:pmod:pmodHB5_rm.pdf

Platforma Discovery STM32F4, http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/stm32f4discovery.html

Fotoîntrerupător, http://html.alldatasheet.com/html-pdf/190691/SHARP/GP1S51VJ000F/316/2/GP1S51VJ000F.html

Robotul Walter II, https://www.youtube.com/watch?v=-n_jZG4fD_w

Motor c.c., https://reference.digilentinc.com/_media/motor_gearbox:290-008_ig220053x00085r_ds.pdf

Biblioteca Waijung, http://waijung.aimagin.com/

Matlab GUIDE, http://www.mathworks.com/discovery/matlab-gui.html

Similar Posts

  • Arestarea Inculpatului In Cursul Urmaririi Penale

    CUPRINS CAPITOLUL I. ASPECTE GENERALE PRIVIND MĂSURA ARESTĂRII PREVENTIVE Secțiunea I. Aspecte introductive §1. Considerații generale privind masurile de preventie §2. Considerații generale privind masura preventiva a arestarii Secțiunea a II-a. §1. Elemente de drept comparat §2. Concordanța reglementarilor naționale referitoare la măsura arestării preventive, cu reglementările internaționale CAPITOLUL AL II-LEA. ARESTAREA PREVENTIVĂ A INCULPATULUI…

  • R[spunderea Juridică a Funcționarului Public European

    === 874cb3fd1213a0cadf261a99f2676bf238a85ee0_689313_1 === RĂSPUNDEREA JURIDICĂ A FUNCȚIONARULUI PUBLIC EUROPEAN CUPRINS INTRODUCERE CAPITOLUL 1. GENERALITĂȚI PRIVIND FUNCȚIA PUBLICĂ ȘI FUNCȚIONARUL PUBLIC EUROPEAN 1. Funcția publică la nivel european…………………………………. 1.1 Accesul la funcția publică la nivel european…………………. 2 . Definirea conceptului de funcționar public european………… 2.1 Trăsăturile funcționarului public european…………….. 2.2 Clasificarea funcționarilor publici europeni…………………. 3. Locul…

  • Controlul Administrației Publice DIN România

    ȘCOALA NAȚIONALĂ DE STUDII POLITICE ȘI ADMINISTRATIVE FACULTATEA DE ADMINISTRAȚIE PUBLICĂ _____________________________________________________________________________ PROIECT DE CERCETARE LA DISCIPLINA METODE ȘI TEHNICI DE ELABORARE A LUCRĂRII DE ABSOLVIRE -CONTROLUL ADMINISTRAȚIEI PUBLICE DIN ROMâNIA- OPREA ELENA LORENA Facultatea de Administrație Publică, Anul III, grupa IV SNSPA București 11 Februarie 2016 CUPRINS INTRODUCERE…………………………………………………………………………………………………………….2 CADRUL METODOLOGIC……………………………………………………………………………………………3 CAPITOLUL I. Delimitări conceptuale……………………………………………………………………………4 Secțiunea 1. Statul și administrația publică…………………………………………………………………………4 §1. Conceptul de…

  • Contabilitatea Evenimentelor Si Tranzactiilor

    Cuprins Introducere Competențe Obiective urmărite Informații pentru profesori Sugestii metodologice Recomandări Fișă de progres școlar Fișele de rezumat FIȘĂ DE REZUMAT DE ACTIVITATE Cuvinte cheie/Glosar Informații pentru elevi ACTIVITĂȚI DE ÎNVĂȚARE COMPETENȚA 1 : COMPETENȚA 2 COMPETENȚA 3 Soluții Anexe BIBLIOGRAFIE Introducere Auxiliarul curricular este un material care cuprinde informații ce vin in sprijinul profesorului…

  • Evaluarea Si Satisf Nevoilor In Asist Sociala a Pers Varstnice Institutionalizate In Centrele Rezidentiale

    === 99d280383e511e30fe94d653dcc161a777f7357b_113346_1 === EVALUAREA ȘI SATISFACEREA NEVOILOR ÎN ASISTENȚĂ SOCIALĂ A PERSOANELOR VÂRSTNICE INSTITUȚIONALIZATE ÎN CENTRELE REZIDENȚIALE ANALIZA SITUAȚIEI În prezent România se confruntă cu un un număr insuficient de cămine pentru populația vârstnică, raportat la bătrânii care ar avea nevoie de servicii sociale. Centrul social integrat Toplița a fost inaugurat la sfârșitul anului 2013,…

  • Recenzie Dezinformare Arma de Razboi

    === 90a2182c2d18b2d22b4c4764231d7ae544bb99c5_597098_1 === Vladimir Volkoff – Dezinformarea, Armă de Război 1. Introducere “Schimbul de informație este specific omului” – declară autorul Volkoff în prefața cărții Dezinformarea.Armă de război. Orice comunicare are la baza ei informația. Emițătorul mesajului, transmite prin diverse canale, o informație care este preluată și decodificată de receptori. Informarea este o nevoie fundamentală…