Proiectul prezent îsi propune retehnologizarea modulului de comandă al unui braț robotic articulat vertical cu 5 grade de l ibertate, deoarece cel… [626578]
Universitatea Politehnica București
Facultatea de Automatică ș i Calculatoare
Departamentul de Automatică și Ingineria Sistemelor
LUCRARE DE LICEN ȚĂ
Controlul unui braț robotic
cu 5 grade de libertate
Student: [anonimizat], 2019
3
4
Rezumat
Proiectul prezent îsi propune retehnologizarea modulului de comandă al unui braț robotic
articulat vertical cu 5 grade de l ibertate, deoarece cel vechi func ționeaz ă pe un s istem de operare
destul de îmbătrânit, iar din cauza erorilor de func ționare, operarea echipamentului este destul de
dificil ă. În plus, depanarea unei eventuale erori necesita suport din partea celor care l -au produs.
Noul modul de comandă folose ște o plac ă de dezvoltare Arduino și o interfa ță grafic ă
realizat ă în Java FX din care s ă poată fi acționat brațul robotic . Aplica ția software oferit ă poate
rula pe majoritatea sistemelor de operare și oferă pozibilitatea dezvolt ării ulterioare a unor noi
funcționali tați. Depanarea erorilor (dac ă este cazul) se poate face foarte u șor fie prin comentarea
porțiunilor din codul surs ă, fie cu aplica ții dedicate.
Din interfața grafic ă pot fi mi șcate individual articua țiile robotului, în ambele sensuri de
rotație , poate fi setat ă viteza de operare a robotului, pot fi memorate poziții le punctelor în care se
dorește mi șcarea acestuia și se poate rula algoritmul de poziționare între cele 2 puncte construit pe
baza unei legi de reglare de tip PID, ai c ărei parametrii au fost determina ți pe cale experimental ă.
1
2
Cuprins
1.Introducere ………………………….. ………………………….. ………………………….. ………………………….. …………… 2
1.1.Obiective ………………………….. ………………………….. ………………………….. ………………………….. …………. 2
1.2. Formularea prob lemei ………………………….. ………………………….. ………………………….. …………………… 2
2. Motivație ………………………….. ………………………….. ………………………….. ………………………….. ……………… 3
3.Abordări similare ………………………….. ………………………….. ………………………….. ………………………….. ….. 4
3.1. Parametri i Denavit -Hartemberg ………………………….. ………………………….. ………………………….. ……… 4
3.2.Regulatoare PID ………………………….. ………………………….. ………………………….. ………………………….. .. 6
4.Descrierea infrastructurii disponibile ………………………….. ………………………….. ………………………….. …. 7
4.1.Descrierea brațului robotic ………………………….. ………………………….. ………………………….. ……………… 7
4.2.Arhitectura de control ………………………….. ………………………….. ………………………….. ………………….. 13
5.Impl ementare ………………………….. ………………………….. ………………………….. ………………………….. ……… 20
5.1.Efectuarea conexiunilor dintre brațul robotic și Arduino ………………………….. ………………………….. . 20
5.2.Efectuarea conexiunilor dintre Arduino și PC ………………………….. ………………………….. ……………… 24
5.3.Discretizarea și implementarea legii de reglare ………………………….. ………………………….. ……………. 26
5.4.Interfața grafică de comandă a brațului ………………………….. ………………………….. ……………………….. 28
6.Rezultate ob ținute și analiza lor ………………………….. ………………………….. ………………………….. ……….. 33
7.Concluzii și îmbunătățiri ………………………….. ………………………….. ………………………….. ………………….. 36
8.Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …………. 37
3
2
1.Introducere
1.1.Obiective
SCORBOT -ER VII este un braț robotic articulat vertical, controlat prin intermediul a 6
motoare de curent continuu. Pentru fiecare motor avem encoder incremental și un întrerupator
pentru poziț ia de referință , pentru a servi drept feedback la localizarea brațului în spațiu.
Controllerul original al robotului , dotat cu un CPU Motorola 68020 , din cauza vechimii, este foarte
greu de operat , returneaz ă foarte multe erori de func ționare și necesit ă un PC cu sistem de operare
destul de în vechit pentru programare. [1]
Proiectul are ca obiectiv realizarea unui modul de comandă al brațul ui robotic , scrierea
unui algoritm de poziționare a acestuia dintr -un punct surs ă într-un punct destina ție și construirea
unei interfe țe grafice pentru PC intuitive oric ărui tip de utilizator , care s ă poata rula pe majoritatea
sistemelor de operare folosite în prezent.
Modulul de comandă va con ține 12 relee comanda te la 5V, 6 comutatoare PWM de putere
pentru controlul motoarelor și o plă cuță de dezvoltare Arduino Mega 2560 care folose ște un
microcontroller ATmega 2560 [3]. Rolurile microcontrollerului sunt: comand area releelor și
comutatoarelor PWM , comunica ția serial ă prin UART cu interfa ța de pe PC, rularea algoritmului
de poziționare și citirea informa țiilor de la encodere.
Algoritmul de poziționare presupune calcularea comenzilor pentru fiecare motor al brațului
cu ajutorul unei legi de reglare de tip PID discretizate și impementate în cod, p ână când valorile
encoderelor din punctul curent al brațului sunt apropiate de valorile memorate pentru punctul
destina ție. Algoritmul va rula c ât timp valoarea curent ă a encoderelor minus valoare destina ție este
mai mare sau egal ă cu o valoare de toleran ță impus ă.
Interfața grafic ă va fi realizată în Java FX și va fi responsabilă pentru realizarea conexiunii
seriale cu placa de dezvoltare, pentru acționarea manuală a fiec ărei încheieturi (motor) a robotului,
pentru memorarea poziții lor punctelor dorite, și pentru executarea algoritmul de poziționare .
1.2. Formularea problemei
Realizarea modului de comandă și a interfeței grafice au scopul de a permite brațului
robotic să execute operații de tipul pick and place. Acest tip de operație , combinat cu alegerea unei
unelte potrivite , poate efectua o mulțime de sarcini, în funcție de nevoile existente pe piață . Unealta
brațului este plasat ă în mod manual în poziții le de start și stop, sunt memorate valorile encoderelor
din fiecare articulație , apoi în mod automat se va realiza poziționare a brațului robotic dintr -un
punct în altul.
Unealta cu care este dotat brațul robotic din acest proiect este un gripper mecanic cu 2
comenzi , închidere și deschidere . Acesta poate fi de folos, spre exemplu, într-o fabrică pentru a
muta p iese de pe o bandă transportoare pe o alta bandă . Pentru acest ansamblu vom avea nevoie
de încă un senzor care să ne spună când să porneasc ă robotul. Acesta va fi conectat ca și intrare la
modulul de comandă al robotului.
3
2. Motivație
În ziua de azi, tot mai mulți roboți au î nlocuit activitatea omului. Din ce în ce mai multe
fabrici sunt mecanizat e pentru ca randamentul acestora să fie sporit. Cele mai importante avantaje
ale unui robot sunt forța , precizia și viteza cu care acesta executa anumite sarcini. Dezavantajele
majore ale unui robot sunt spa țiul relat iv mare pe care acesta îl ocup ă și faptul c ă sunt destul de
scumpi comparativ cu alte utilaje folo site.
Cercetarea din robotic ă se regaseste într-un loc aflat la intersec ția dintre teoria sistemelor
automate (TSA) , geometrie și geometrie diferen țială, inteligen ța artifi cială, algoritmi ca și
statistic ă. În funcție de tipul proiectului pentru care se dezvolt ă robotul și de aplica țiile acestuia,
domeniile de interes s e pot extinde până la medicin ă sau fizică.
Dupa ce un braț robotic a fost configurat să realizeze o anumita operație , pe m ăsură ce
tehnologia avanseaz ă, îmbun ătățirile care îi pot fi aduse sunt din ce în ce mai multe, începand de
la comunicarea acestuia cu un sistem de vedere artificial ă care să diferen țieze mai multe tipuri de
piese, și în funcție de acestea să fie luate decizii diferite, și continu ând cu aplica ții ale acestora
care să permit ă colaborarea sa cu personalul uman în scopul atingerii unui obiectiv.
Cea mai captivant ă parte a folo sirii unui echipament de tipul brațului robotic este cea în
care se realizeaz ă trimiterea comenzilor c ătre acest a de la distan ță. Retehnologizarea modulului
de comandă folosind componente moderne oferă flexibilitate sporit ă când vine vorba de ad ăugarea
unei noi func ționalit ăți acestuia, precum un modul GSM sau un modul Wi -Fi pentru conectarea
acestuia la internet. Ata șarea unui astfel de modul poate ajuta fie pentru a comunica cu alte
dispo zitive din jurul s ău, conectate la aceea și rețea, fie pentru a raporta o anumit ă acțiune unui
utilizator uman care nu se afl ă în acel moment l ângă echipament.
4
3.Abordă ri similar e
3.1. Parametrii Denavit -Hartemberg
Metoda Denavit -Hartemberg reprezint ă o metod ă sistemic ă matricial ă de stabilire a unui
sistem de coord onate atașat fiec ărui segment al unui lan ț cinematic articulat . Reprezentarea
Denavit -Hartemberg va fi o matrice armonic ă de transformare ( matrice 4 x 4 ce aplic ă un vector
de pozi ție expri mat în coordonate omogene dintr -un sistem de coordonate în alt sistem de
coordo nate) . Se descrie , astfel , fiecare sistem de coordonate/segment în articulație în raport cu
sistemul de coordonate ata șat segmentului anterior (mai aproape de baz ă).[11]
Cinematic a direct ă are ca scop determinarea pozi ției și orient ării efectorului terminal în
funție de variabilele articulațiilor . Cinematica invers ă const ă în determinarea variabilelor
articulațiilor pe baza unei poziții și orient ări ale efectorului terminal date. [11]
Figura 3.1. Alocarea sistemelor de coordonate SCORBOT -ER VII
Pentru stabilirea sistem elor de coord onate ale segmentelor, trebuie să fie avut în vedere c a
axa 𝑍𝑖 să se afle de -a lungul axei de mi șcare a articulație i i. Axa 𝑋𝑖 se alege cu sensul de la
articula ția i la i+1, de -a lungul normalei commune la axele 𝑍𝑖 și 𝑍𝑖−1. Axa 𝑌𝑖 completeaz ă sistemul
ortonormal cu ajutorul regulii m âinii drepte.
Conform figurii 3.1 se pot deduce parametrii Denavit -Hartemberg particulariza ți brațului
robotic SCORBOT -ER VII din tabelul 3.1, iar semnifica ția nota țiilor este urmatoarea:
𝒂𝒊 – distan ța de la intersec ția axei 𝑍𝑖−1 cu axa 𝑋𝑖 la originea 𝑂𝑖, masurat ă de-a lungul
axei 𝑋𝑖 (distan ța minim ă dintre axele 𝑍𝑖 cu 𝑍𝑖−1);
∝𝒊 – unghiul de la axa 𝑍𝑖−1 la 𝑍𝑖, măsurat în jurul axei 𝑋𝑖 (cu regula m âinii drepte);
𝒅𝒊 – distan ța de la 𝑂𝑖−1 la intersec ția axei 𝑍𝑖−1 cu axa 𝑋𝑖, măsurat ă de-a lungul axei 𝑍𝑖−1;
5
𝜽𝒊 – unghiul articulație i de la axa 𝑋𝑖−1 la 𝑋𝑖 măsurat în jurul lui 𝑍𝑖−1 (cu regula m âinii
drepte). [11]
Tip articulație 𝒂𝒊 ∝𝒊 𝒅𝒊 𝜽𝒊
1 – rotație 5 cm −𝜋2⁄ 35.8 cm 𝜃1
2 – rotație 30 cm 0 10 cm 𝜃2
3 – rotație 35 cm 0 0 𝜃3
4 – rotație 0 𝜋2⁄ 0 𝜃4
5 – rotație 0 0 0 𝜃5
Tabel 3.1 Parametrii Denavit -Hartemberg aplica ți pe SCORBOT -ER VII
Dupa ce parametrii Denavit -Hartemberg au fost calcula ți, se pot calcula transform ările de
la sistemul de coord onate i la sistemul de coordonate i -1 cu formula 3.1:
𝐴𝑖𝑖−1 = 𝑇𝑥𝑖,∝𝑖 * 𝑇𝑥𝑖,𝑎𝑖 * 𝑇𝑥𝑖,𝜃𝑖 * 𝑇𝑥𝑖,𝑑𝑖 (3.1)
în care 𝑇𝑥𝑖,∝𝑖 și 𝑇𝑥𝑖,𝜃𝑖 sunt matrici omogene de rotație , iar 𝑇𝑥𝑖,𝑎𝑖 și 𝑇𝑥𝑖,𝑑𝑖 sunt matrici omogene
de transla ție.
𝑇𝑥𝑖,∝𝑖 = [1 0
0cos ∝0 0
−sin∝ 0
0sin∝
0 0 cos ∝ 0
0 1]
𝑇𝑥𝑖,∝𝑖 reprezint ă transformarea de rotație cu unghiul αi în jurul axei xi .
𝑇𝑦𝑖,𝛽𝑖 = [ cos𝛽0
0 1sin𝛽0
0 0
−sin𝛽0
0 0cos𝛽0
0 1]
𝑇𝑦𝑖,𝛽𝑖 reprezint ă transformarea de rotație cu unghiul βi în jurul axei yi .
𝑇𝑧𝑖,𝛾𝑖 = [1 −sin∝
sin∝ cos ∝0 0
0 0
0 0
0 01 0
0 1]
𝑇𝑧𝑖,𝛾𝑖 reprezint ă transformarea de rotație cu unghiul 𝛾i în jurul axei zi .
𝑇𝑡𝑟𝑎𝑛𝑠𝑙𝑎𝑡𝑖𝑒 = [10
010𝑑𝑥
0𝑑𝑦
00
001𝑑𝑧
1 1]
𝑇𝑡𝑟𝑎𝑛𝑠𝑙𝑎𝑡𝑖𝑒 reprezint ă transformarea de transla ție cu dx pe axa Ox, dy pe axa Oy și dz pe axa Oz .
6
3.2.Regulatoare PID
PID-urile sunt cele mai cunoscute și utilizate tipuri de regulatoare din industrie. Acest tip
de regulatoare pot calcula comenzi pe baza unei erori din sistem cu ajutorul a 3 parametrii:
propor țional, integrator și derivativ. Referin ța (r(t)) este modulul m ărimii care se dore ște să apară
la ieșirea sistemul ui (y(t)). Eroarea (e(t)) se define ște ca diferen ța dintre o referin ță impus ă și
ieșirea procesului , r(t) – y(t). Comanda este valoarea calculat ă de regulator pe baza legii de reglare
impuse care este transmis ă mai departe ca intrare pr ocesului.
Parametrul propor țional (notat Kp în figura 3.2) contribuie la calcularea comenzii direct
propor țional cu eroarea sistemul ui (Kp * e(t)) . Acesta este folo sit impreun ă cu parametrul
integrator și/sau derivativ pentru regulatoare de tip PI, PD sa u PID , deoarece o lege de comandă
care folose ște doar parametrul propor țional induce sistemul ui un regim oscilant.
Parametrul integrator (notat Ki în figura 3.2) influen țează comand a generat ă de regulator
în funcție de aria graficului erorii p ână în momentul în care este calculat ă acesta (Ki * ∫𝑒(𝑡)𝑑𝑡𝑡
0).
Parametrul integrator a sigură urmarirea referin ței, dar poate induce sistemul ui suprareglaj.
Apari ția suprareglajului se traduce și într-un timp tranzitoriu mai scurt.
Parametrul derivativ (nota t Kd în figura 3.2) modific ă valoarea returnat ă de regulator în
funție de derivata erorii (Kd * 𝑑𝑒(𝑡)𝑑𝑡⁄). Comand a dată de regulator este calculat ă cu formula 3.1:
𝑢(𝑡)=𝐾𝑝∗𝑒(𝑡)+𝐾𝑖∗∫𝑒(𝑡)𝑑𝑡𝑡
0+𝐾𝑑∗𝑑𝑒(𝑡)
𝑑𝑡 (3.1)
Figura 3.2. Structura de reglare automat ă
Referin ța va fi dat ă de utilizator ca o anumit ă valoare a encoderului pentru o articulație .
Algoritmul PID ruleaz ă pe placu ța Arduino sub forma sa discretizat ă (detalii în secțiunea 5.3).
Arduino cite ște valoarea pozi ției curente de la encoder pe care o compar ă apoi cu valoarea dat ă
pentru referin ță. Encoderul este pozi ționat pe reac ția sistemul ui de reglare. S e calculeaz ă apoi o
comandă pe baza algoritmului de reglare și este trimis ă sub form ă de semnal PWM către un
comutator care modif ică tensiunea de alimentare de la bornele motorului aferent p ână când se
ajunge la valoarea dorita.
7
4.Descrierea infrastructurii disponibile
4.1.Descrierea braț ului robotic
Scorbot ER -VII este un robot articulat v ertical cu 5 grade de libertate acționat cu ajutorul
moto arelor de curent continuu de 12V cu encodere . Brațul robotic are o sarcin ă maxim ă de 2 kg
și este alcătuit din urmatoarele componente legate prin articula ții de rotație :
– baza fix ă (aceasta poate să fie pozitonat ă fie într-un punct stabilit, fie pe un cadru mobil
pentru a m ări spatiul de lucru al robotului );
– corpul brațului , partea mobil ă aflată peste baz ă, pe care este fixat brațul ;
– 2 segmente adiacente conectate la corpul brațului (corespunzatoare brațului și
antebrațului );
– unealta. [1]
In dreptul fiecarei articula ții avem un motor care a sigură conducerea întregului bra ț, astfel
avem urmatoarea împartire:
Numarul Motorului
(cursa maxima ) Mișcarea efectuat ă Numele articulație i
1. (250°) Rotirea bazei Bază
2. (170°) Ridicare și cobor âre bra ț Umăr
3. (225°) Ridicare și cobor âre antebra ț Cot
4. (180°) Ridicare și cobor âre efector terminal Inclina ție încheietur ă
5. (360°) Rotire efector terminal Rotire încheietur ă
Tabel 4.1. Motoarele din articula ții și domeniul lor maxim
Domeniul maxim de func ționare
Figura 4.1. Lungimea segmentelor brațului robotic și spatiu l acestuia de lucru [1]
8
Figura 4.2. Articula țiile brațului robotic [1]
Sistemul de acționare
Componentele principale ale sistemul ui de acționare sunt motorul, transmi sia armonic ă
(reductor) , fuliile și cureaua de transmi sie. Din punct de vedere al pozition ării sistemul ui de
conducere, pentru articula ția i, motorul este fixat pe segmentul i -1, iar transmi sia armon ică este
fixată pe segmentul i.
Figura 4.3. Transmiterea mi șcării de la motor c ătre segmentul robotului [1]
Encoder
Axul motorului prezint ă la un c ăpat o fulie peste care este a șezată cureaua de transmi sie
pentru punerea în miscare a reductorului, iar la capatul opus avem un encoder incremental optic.
În momentul în care un segment al brațului se deplaseaz ă în raport cu un segment adiacent,
encoderul genereaz ă o serie de semnale digitale alternante (de 0V și 5V), care pot fi interpretate
de contoler. Controlerul cite ște aceste semnale și determin ă poziția și sensul de deplasare al
segmentului .
9
Figura 4.4 . Ansamblul Motor -Encoder
Encoderul folosit pe SCORBOT -ER VII conține un LED , un disc rotativ perforat, și un
circuit integrat pentru generarea semnalelor alternante pe baza informa țiilor de la fotodi ode.
Figura 4.5 . Componente encoder și semnale returnate
Un dis c rotativ perforat cu 96 de sloturi (vezi Figura 4.5 ) este situat între emita tor (LED)
și detector (fotodiod ă). În timp ce discul se rote ște, fasciculul de lumin ă proiectat de LED este
întrerupt de modelul "barelor" și "ferestre lor" de pe disc, rezult ând o serie de impulsuri captate
de către detectoare.
10
Cele dou ă fotodiode sunt fixate astfel încat semnalele provenite de la acestea să fie defazate
cu 90° (vezi Figura 4.5 ), astfel, când discul s e rote ște în sensul acelor de ceasornic, semnalul de
pe canalul A ajunge primul la controller, urmat de acela și semnal și pe canalul B, dar defazat cu
90°. Dacă discul se roteste în sensul trigonometric, semnalul de pe canalul B ajunge primul la
controller, urmat de acela și semnal și pe canalul A, dar defazat cu 90°. [12]
Limitator pentru cap ăt de curs ă și pozitia de referin ță (‘home’ )
Limitator ul pentru cap ăt de curs ă împiedic ă mișcarea articulațiilor dincolo de limitele lor
funcționale. În momentul în care aplica ția software de control nu reu șește să oprească axa la
sfârșitul domeniului său de lucru, comutatorul de limitare serve ște la oprirea forța tă a acestuia.
Figura 4.6 . Pozi ția limitatoarelor pentru ca păt de curs ă și pozitia de referin ță[1]
Fiecare dintre axele 1 p ână la 4, au trei limitatoare – unul la fiecare cap ăt al domeniului de
lucru al axei, și încă un întrerup ător pentru pozi ția de referin ță. Aceste comutatoare sunt montate
pe un disc ata șat cadrului robotului și în mod normal sunt deschise (NO). În momentul în care
șurubul ajunge în dreptul unui întrerup ător pentru limitare de curs ă, motorului i se întrerupe
alimentarea pentru acest sens de rotație , însa îi este permis ă acționarea în sens invers.
Întrerup ătorul pentru pozi ția de referin ță conecteaz ă pinul 4 (vezi figura 4.8 ) la masa encoderului.
Motorul 5 este particular deoarece acesta se poate roti 3600, de mai multe ori, singura
limitare a num ărului de rota ții complete fiind lungimea cablului ce alimenteaz ă unealta. Pentru
acest motor avem la dispozi ție doar un întrerup ător de referin ță care re turneaz ă “1” logic pe pinul
4 (vezi figura 4.8 ) pentru jumatate din o curs ă complet ă (pentru 1800) și “0” logic pentru a doua
jumatate. În acest sens limitarea va trebui implementat ă în aplica ția software.
11
Asignarea cablurilor și pinilor brațului
Cablul robotului con ține 6 cabluri cu conectori DB9 -tată (pentru interfața rea cu modulul
de comandă ) aferente celor 5 axe de mi șcare și comandă rii uneltei.
Axa #
(Cablul #) Pinul mufei
DB9 Culoarea
firului Tipul
conductorului Func ția
1 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 1 +
1 Negru Motor 1 –
2 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 2 +
1 Negru Motor 2 –
3 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 3 +
1 Negru Motor 3 –
4 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 4 +
1 Negru Motor 4 –
5 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 5 +
1 Negru Motor 5 –
6 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 6 +
1 Negru Motor 6 –
Tabel 4.2. Asignarea cablurilor și pinilor brațului [1]
12
Figura 4.7 . Cablaj intern al robotului și legăturile c ătre modulul de comandă [1]
Figura 4.8 . Detalierea pinilor pentru controlul unui motor
13
4.2.Arhitectura de control
Pentru punerea în mișcare a brațului robotic, trebuiesc ac ționate cele 5 motoare din
articula ții, plus gripperul. Motoarele folo site pentru SCORBOT -ER VII trebuiesc alimentate la o
tensiune de 12V DC și au un consum de curent de maxim 3000mA. Trebuie avut în vedere
urmatoarele aspecte:
-fiecare segment al brațului trebuie să se poat ă roti în ambele sensur i;
-pentru poziționare a precis ă a gripperului vom avea nevoie de un circuit care să imi poat ă
varia ten siunea de alimentare la bornele fiecărui motor pentru a ob ține o mi șcare mai rapid ă sau
mai lent ă;,
-decizia de ac ționare a motoarelor (sens și viteza de deplasare) este realizată prin
intermediul unui microcontroller.
Astfel, pentru fiecare motor este nevoie de un circuit pentru schimbarea sensului de rota ție,
și de un circuit integrat de PWM (pulse width modulation) pentru controlul tura ției. Pentru
schimbarea sensului de rota ție al motorului vor fi folo site 2 relee cu bobina la 5V și un comutator
PWM de putere pentru modificarea turației .
Comutatorul PWM de putere folosește 2 tranzistori N -MOSFET AOD4184A și este folo sit
pentru modificarea ten siunii de alimentare de la bornele motorului, iar acest lucru se traduce în
modificarea vitezei de rotație a acestuia. Driverul din figura 4.9 poate fi folo sit pentru tensiun i
cuprinse între 5 și 35 de VDC și un curent maxim de 15 A. Motoarele folo site de SCORBOT -ER
VII sunt de 12 VDC și au un consum de 3A. [10]
Figura 4.9 . Comutator PWM de putere
Pentru schimbarea sensului de rota ție al unui motor vor fi folo site 2 relee comand ate la 5V
care pot închide/deschide circuite cu tensiun e de p ână la 35 VDC și curent de maxim 10A. Releele
sunt controlate cu ajutorul a 3 pini: VCC, GND și IN. Cu ajutorul pinilor de control pot fi
modificate conexiunile dintre bornele CO M (Comun), NO(Normal Deschis), NC(Normal Închis )
ale releului. Acest tip de relee pot fi controlate cu ajutorul microcontrollerelor. [4]
Pinii VCC și GND vor fi conecta ți la pinii microcontrol lerului de 5V și 0V. Pinul de
COMANDĂ realizeaz ă închiderea/deschiderea circuitului de comandă , astfel: conectat la 5V
bobina releului r ămâne nealimentat ă și borna de COM va fi conetat ă la borna de Normal Închis ;
conectat la 0V bobina releului este alimentat ă și va produce conecta rea bornei de COM la born a
de Normal Deschis .[4]
14
Figura 4.10 . Releu comand at la 5V DC .
Pentru schimbarea sensului de rota ție al motoarelor vor fi folosit e 2 relee conf orm schemei
electrice de figura 4.11. Pinii de control ai releelor vor fi conecta ți la microcontroller. Bornele de
Comun (COM) vor fi conectate la bornele de alimentare ale motorului. Bornele de Normal Închis
ale releelor vor fi conectate la borna de minus (0V) a sursei de alimentare, astfel în conditii ini țiale,
bornele de Comun (COM), respectiv bornele motorului vor fi conectate la Vout-(0V) . Bornele de
Normal Deschis (NO) vor fi conectate la borna de Vout+(0 -12V) a comutatorului PWM .
Figura 4.11 . Schema electric ă pentru schimbarea sensului de rotație .
Având în vedere schema electric ă din Figura 4.11 , vor exista 4 cazuri de alimentare a
motorului detaliate în tabelul 4.3 :
IN1 IN2 Releu 1 Releu 2 Motor – Motor + Rotire
5 V 5 V COM = NC
-neac ționat – COM = NC
-neac ționat – Vout – Vout – Motor blocat
5 V 0 V COM = NC
-neac ționat – COM = NO
-acționat – Vout – Vout + Sens trigonometric
0 V 5 V COM = NO
-acționat – COM = NC
-neac ționat – Vout + Vout – Sens orar
0 V 0 V COM = NO
-acționat – COM = NO
-acționat – Vout + Vout + Motor blocat
Tabel 4.3. Combina ții pentru alimentarea motorului prin relee .
15
Sursa de aliment are folosită este o surs ă de calculator ce poate genera pentru o tensiun e de
12V DC un curent maxim de 14 A, suficient pentru alimentarea brațului robotic . Pentru a putea
porni sursa de alimentare, trebuie f ăcut contact între ca blul verde și un cablu negru ( vezi figura
4.12), contact care în interiorul unui calculator este realizat de placa de baz ă ca o confirmare a
faptului c ă toate componentele sunt preg ătite de alimentare.
Figura 4.12 . Conectarea cablului verde la masa sursei de alimen tare
Pentru controlul fiecarui motor avem la dis pozitie 7 pini conform Tabel 4.4 :
1 3 Roșu
Telefon +5V
4 Albastru Poziția de Home
5 Negru GND
6 Verde Ch A (encoder)
8 Alb Ch B (encoder)
9 Roșu Molex Motor 1 +
1 Negru Motor 1 –
Tabel 4.4. Pinii mufei DB9 de la motorul 1 (baza) [1]
Pinii 1 și 9 vor fi lega ți la bornele de Comun (COM) de la 2 relee pentru a putea schimba sensul
de rotație al motorului. Pinii 4, 6 și 8 vor fi lega ți direct la microcontroller ca și intrări pentru
stabilirea pozi ției curente, detectarea sensului de rotație , și aducerea articulație i în pozitia de
‘home’ (pozitie de referin ță).
Pinii 3 și 5 vor fi lega ți la bornele de 5V, respectiv GND ai sursei de alimentare , și sunt
responsabili de alimen tarea encoderului. În plus, între pinul 3 și borna de 5V va fi inseriat ă o
rezisten ță de 60 Ohmi pentru limitarea curentului care trece prin LED (pentru a nu arde LED -ul
encoderului).
Din microcontroller vom avea ne voie de 3 pini de ie șire pentru comanda rea fiec ărui motor, 2
pini pentru stabilirea sensului de rotație (conform figura 4.11 și tabel 4.3 ) și un pin pentru
modificarea vitezei de rotație folos ind comutatorul de putere (figura 4.9 ). În tabelul 4.5 avem
calculat num ărul de pini necesar control ării celor 5 motoare cu care brațul robotic este manipulat
plus un motor care ac ționeaz ă efectorul terminal , iar în funcție de acesta vom stabili ce tip de
microcontroller este potrivit acestei aplica ții.
16
Pin Tipul
pinului Num ăr pini Descriere
intrare
digital 6 Ch A encoder
6 Ch B encoder
6 Pozitia de referinta
ieșire digital 6 Sens orar
6 Sens trigonometric
analogic 6 PWM turatie
PWM 6 pini
Intreruperi 6 pini
TOTAL 36 pini
Tabel 4 .5. Num ărul și tipul pinilor necesari aplica ției de control .
În tabelul 4.5 observ ăm că avem nevoie de 6 pini pentru întreruperi (semnal de la un
dispozitiv periferic ce semnalizeaz ă apariția unui eveniment care trebuie tratat de către processor) .
În momentul în care este detectat ă o întrerupere, programul principal (void loop) se opre ște din
execu ție, sunt rulate comenzile din func ția aferent ă întreruperii, iar apoi este reluat ă execu ția
programului principal din starea r ămasă.
În cazul nostru, programul principal este un algoritm de poziționare a brațului robotic dintr –
un punct în altul, iar daca unul dintre pinii de întrerupere își modific ă starea, poziția brațului poate
fi actualizat ă în metoda de tratarea a întreruperii . Astfel, pentru fiecare motor voi alege c âte un
canal din cele dou ă ale e ncoderului ca și pin de întrerupere și voi folo si o funcție de tratare a
acesteia.
O alegere de microcontroller care să satisfac ă cerin ța de 36 de pini, din care 6 de tip PWM
și 6 pini pentru întreruperi, poate fi placu ța Arduino Mega 2560 (vezi figura 4.13) care folose ște
un microcontroller ATmega 2560 și un convertor USB – TTL seriala Atmega 8U2. Placu ța poate
fi programat ă cu aplicatia software “Arduino”. Aici, codul scris de utilizator este în limbajul C
(C++) și abordeaz ă două funcții de bază, initializare a (void init() ) și bucla infinit ă unde este
executat programul principal (void loop() ).
Micorocontrollerul funcționeaza la o tensiun e de 5V și la o frecventa de 16 MHz, dispune
de 54 de intr ări/ieșiri digitale, din care 14 pot fi folosit e ca ie șiri analogice de tip PWM cu o
rezolu ție de 8 biti și are o memorie flash de 256 Kb, din care 8 Kb sunt ocupa ți de bootloader.
Pinii digitali care pot fi folosi ți pentru intreruperi sunt 2, 3, 18, 19, 20, 21. [3]
Figura 4.13. Placa de dezvoltare Arduino Mega 2560 [3]
17
Asignarea pinilor placutei Ar duino se va face conform Tabel 4.6:
Pin Arduino
# Simbol Tipul(I/O) Analogic/Digital Descriere
2 Ch1A
Intrare
(funcție de tratare a
intreruperii)
Digital Encoder Motor -1 Ch A
3 Ch2A Encoder Motor -2 Ch A
18 Ch3A Encoder Motor -3 Ch A
19 Ch4A Encoder Motor -4 Ch A
20 Ch5A Encoder Motor -5 Ch A
21 Ch6A Encoder Motor -6 Ch A
5 PWM1
Ieșire
Analogic
(rezolutie pe 8
biti ) PWM tura ție Motor -1
6 PWM2 PWM turație Motor -2
7 PWM3 PWM turație Motor -3
8 PWM4 PWM turație Motor -4
9 PWM5 PWM turație Motor -5
10 PWM6 PWM turație Motor -6
22 Ch1B
Intrare
Digital Encoder Motor -1 Ch B
23 Ch2B Encoder Motor -2 Ch B
24 Ch3B Encoder Motor -3 Ch B
25 Ch4B Encoder Motor -4 Ch B
26 Ch5B Encoder Motor -5 Ch B
27 Ch6B Encoder Motor -6 Ch B
30 M1Home
Intrare
Digital
Pozitie ‘Home’ Motor -1
31 M2Home Pozitie ‘Home’ Motor -2
32 M3Home Pozitie ‘Home’ Motor -3
33 M4Home Pozitie ‘Home’ Motor -4
34 M5Home Pozitie ‘Home’ Motor -5
35 M6Home Pozitie ‘Home’ Motor -6
40 M1Poz
Ieșire
Digital
Sens + Motor -1
41 M1Neg Sens – Motor -1
42 M2Poz Sens + Motor -2
43 M2Neg Sens – Motor -2
44 M3Poz Sens + Motor -3
45 M3Neg Sens – Motor -3
46 M4Poz Sens + Motor -4
47 M4Neg Sens – Motor -4
48 M5Poz Sens + Motor -5
49 M5Neg Sens – Motor -5
50 M6Poz Sens + Motor -6
51 M6Neg Sens – Motor -6
Tabel 4.6. Asignarea pinilor placu ței Arduino
Având în vedere aspectele prezenta te mai sus, se poate concepe o arhitectura de control
pentru brațul robotic. Robotul va inv ăța punctele între care să realizeze mi șcarea cu ajutorul unei
aplica ții software care să ruleze pe un PC. Aceasta va comunica prin interfața serial ă cu plac uța
Arduino. Mai departe, microcontrollerul ruleaz ă algoritmul de poziționare și va comand a releele
și comutatoarele PWM de putere în funție de informa ția primit ă de la aplica ție și în funcție de
informa țiile de la encodere.
18
Figura 4.14. Arhitectura de control
Figura 4.15. Legenda conexiunilor din Figura 14
Observa ții:
1.Cablul albastru con ține 2 fire (GND și PWM) pentru controlul comutatorului PWM de
putere (modificarea tensiun ii de ie șire) și fac leg ătura dintre Arduino și comutator.
2.Cablul verde conți ne 4 fire (GND, 5V, ChA,ChB) pentru alimentarea encoderului și
pentru citirea semnalelor generate. Pe firul de 5V avem înseriat ă o rezisten ță de 60 Ohmi pentru
limitarea curentului care trece prin LED.
3.Cablul mov con ține 12 fire și așigura comand area releelor de către Arduino.
4.Cablurile maro și gri fac coneziunea între ie șirea comutatorului de putere și bornele de
normal deschis și normal închis ale releelor.
5.Cablurile rosu și negru (cele subtiri) fac leg ătura dintre bornele motorului și bornele de
comun ale releelor.
6.Cablurile ro șu și negru (cele groase) fac leg ătura dintre sursa de alimentare de 12V DC
și intrările comutatoarelor PWM de putere.
19
Arhitectura de conducere de mai sus poate fi organizat ă într-o cutie de forma
paralelipipedic ă, iar aceasta va reprez enta modulul de comandă al brațului robotic . Avantajele
acestui modul de comandă sunt :
1.releele, comutatoarele PWM de putere, placa de dezvoltare și conexiunile dintre acestea
sunt fixate și capsulate, astfel încât modulul poate fi deplasa t dintr -un loc în altul cu usurin ță, iar
riscul ca aceste cablaje să fie deranjate din exterior este redus ;
2.modulul poate fi v ăzut ca o cutie de tip black -box despre care se știe ce intr ări și ce ieșiri
îi sunt necesare , se știe ce trebuie să execute , asadar poate fi folosit fără să se cunoască cum
funcționeaz ă acesta în interior .
Pe o fa ță lateral ă a acestui mod ul vor fi prinse 6 mufe DB9 -mama, în care se vor conecta
cele 6 cabluri care vin de la brațul robotic. Pe o alta fa ță lateral ă vom avea mufa USB tip B de la
placa Arduino din care va pleca cablul de comunicare serial ă catre PC, și încă un conector de tip
mam ă la care se vor conecta firele de la o surs ă exterioar ă de tensiun e de 12V.
Figura 4.16. Modulul de comandă (vedere din fa ță și din lateral).
Figura 4.17. Modulul de comandă – schema bloc intern ă văzută din lateral
20
5.Implementare
5.1.Efectuarea conexiunilor dintre brațul robotic și Arduino
Brațul robotic este controlat prin intermediul a 5 motoare de curent continuu, plus unealta
(gripper). Pentru a putea roti o articulație în ambele sensuri trebuie realizat un circuit de comandă
care poate a sigura schimbarea de sens a motorului respectiv. Alimen tarea motorului de curent
continuu se face prin 2 fire, unul pentru masă (0V) și un fir pentru 12 V. Prin alimentarea direct ă
a motorului, acesta se rote ște într-un sens, iar prin polarizarea invers ă a bornelor de alimentare
obținem rotirea în sens opus. Schimbarea sensului de rotație cu ajutorul a 2 relee este detaliat ă în
sectiunea 4.2.
Un comutator este folosit pentru modificarea vitezei de rotație a unui motor. Pentru
schimbarea sensului de rotație a 6 motoare, vor fi folosit e 12 relee comand ate la 5V. Circuitul de
comandă este compus din placu ța de dezvoltare Arduino, 6 comutatoare PWM de putere, un modul
cu 8 relee și un modul cu 4 relee, 6 rezisten țe de 60 Ohm lipite pe firele de alimentare ale
encoderelor.
Figura 5.1. Schema circuitului d e comandă
Firele albastre fac leg ătura între pinii de PWM de la Arduino și pinii de PWM/Trigger ai
comutatoarelor PWM de putere. Firele negre sunt pentru mas ă (GND). Firele verzi fac leg ătura
între Arduino și pinii de control ai modulului de 8 relee. Firele galbene fac leg ătura intre Arduino
și pinii de control ai modulului de 4 relee. În afara pinilor de control, modulele de 8 relee și 4 relee
mai au nevoie de alimentare cu 5V, iar aceasta se face din Arduino de la bornele de mas ă și 5V.
21
Figura 5.2 . Alimentarea și citirea encod erului
Pentru citirea encoderului se va ini țializa doar Canalul A al fiec ărui encoder ( ChA) ca pin
de întrerupere pentru a ob ține o rezolu ție X2 (vezi figura 5.3) a valorii acestuia. La fiecare
schimbare a starii pinului ChA (pe front cresc ător sau descresc ător) va fi executat ă funcția de
tratare a întreruperii (NewEncoder).
Figura 5.3. Rezolu ții X1, X2, X4 pentru encoder pe baza semnalelor Ch1A și Ch1B
Pentru s tabilirea sensului de rotație al motorului (vezi figura 5.4), se vor folo și ambele
semnale date de encoder,Canalul A și Canalul B . Daca Ch1A este 1 și Ch1B este 0, sau Ch1A este
0 și Ch1B este 1, atunci motorul se rote ște în sens pozitiv. Daca Ch1A este 1 și Ch1B este 1, sau
Ch1A este 0 și Ch1B este 0, atunci motorul se roteste în sens negativ. Aceste 4 combina ții vor fi
implementate în codul Arduino (figura 5.5) .[12]
Figura 5.4. Stabilirea sensului de rotație pe baza celor 2 semnale de la encoder
22
Figura 5.5. Codul Arduino folosit pentru citirea encoderului 1
Variabila Encoder va fi declarat ă ca “volatile” pentru ca valoarea acestuia să fie actualizat ă
în permanen ță în toate func țiile în care este folosit ă. Fără acest tip de declare, procesorul va încerca
să facă optimiz ări din punct de vedere al timpului de execu ție și nu va modifica valoarea acesteia
de fiecare dat ă când se schimb ă.
În afara celor 2 canale pe care encoderul genereaz ă semnale pentru calcularea pozitiei,
fiecare articulație are un întrerupator care pune pe pinul 4 0V (GND) în momentul în care acesta
atinge o pozi ție de referin ță. Pentru a putea capta acest semnal, în codul Arduino aceste intr ări sunt
configurate ca intr ări de tip pull -up (INPUT_PULLUP) , adic ă sunt conectate intern în
microcontr oller prin o rezisten ță la tensiun ea de 5V.
Figura 5.6. Schema circuitului de putere
23
În figura 5.3, cablurile negru și roșu (îngroșate) vin de la sursa de alimentare de 12 V și
sunt legate la comutatoarele PWM de putere. Din fiecare comutator iese c âte un fir negru (cel
subțire) c ătre bornele de Normal Închis (NC) de la 2 relee. Similar, din fiecare comutator iese c âte
un fir ro șu (cel sub țire) c ătre bornele de Normal Deschis (NO) de la acelea și 2 relee. Astfel, în
condi ții inițiale în care releele nu sunt ac ționate, motorul va avea la ambele borne 0V. Mai departe,
din cele 2 relee vor ie și pe bornele de comun (COM) 2 fire, albastru și maro, care vor fi conectate
la bornele de alimentare ale unui motor. Circuitul descris mai sus este realizat de 6 ori pentru toate
cele 6 motoare care antreneaza brațul .
Figura 5.7. Codul Arduino pentru schimbarea sensului de rotație și oprirea unui motor
Codul folosit pentru schimbarea sensului de rotație și pentru oprirea motoarelor este
prezentat în figura 5.7. Toate cele 3 func ții primesc ca parametrii pinii folosit i pentru comand area
releelor. Pentru ca motorul să fie oprit trebuie ca pe ambele borne de alimentare să avem aceea și
tensiun e, 0V. În sectiunea 4.2 a fost stabilit c ă un releu nu este acționat dac ă pe pinul s ău de
comandă este aplicat ă tensiun e de 5V. Dac ă releul nu este ac ționat, atunci bornele motoarelor vor
fi conectate la borna de Normal Închis a releului, care mai departe este conectata la Vout – a
comutatorului (0V). Astfel prin p unerea celor 2 pini de la relee pe valoarea de “1” logic (HIGH),
este a sigurat ă oprirea motorului. Prin modificarea valorii logice a oric ărui din cei doi pini ai
releelor din “1” logic în “0” logic (LOW) se ob ține alimentarea motorului într-un sens sau în altul.
Figura 5.8. Principiul de func ționare al semnalului PWM
24
Semnalul PWM (Pulse Width Modulation) este un semnal generat de microcontroller pe
baza a 2 regi ștrii. În primul registru va fi memorat ă perioada sau frecven ța la care se va genera
semnalul , iar în al doilea registru este memorat factoul de umplere al semnalului. Acest factor de
umplere reprezint ă intervalul de timp din perioada în care semnalul returnat are valoarea de “1”
logic, iar restul de timp semnalul returnat va fi “0” logic (vezi fi gura 5.8) . Factorul de umplere
trebuie să fie mai mic dec ât periada impus ă. [10]
Perioada de generare a semnalului PWM va fi mult prea mic ă pentru ca motorul să
detecteze timpul în care semnalul genera t este de “0” logic. Ceea ce motorul detecteaz ă este o
tensiun e a cărei valoare este integarala în timp a semnalului generat înmul țită cu valoarea tensiun ii
de alimentare a comutatorului PWM. Astfel, pentru modificarea tensiun ii de alimentare a
motorului trebuie modificat factorul de umplere al semnalului PWM aferent acestuia.
In Arduino, modificarea factorului de umplere se face cu cea de a doua instruc țiune din
figura 5.9. Registrul aferent factorului de umplere este pe 8 bi ți, ceea ce inseamn ă că pentru o
valoare de 100% a acestuia trebuie setat ă valoarea de 255. În figura 5.9 de exemplu, pentru
valoarea setat ă pentru PWM1 la 180, rezult ă un factor de umplere de 70%, iar inmultit cu tensiun ea
de alimentare de 12V conduce la o tensiun e ajuns ă la bornele motorului 1 de 8.4V.
Figura 5.9. Declarare a și inițializarea pinului pentru factorul de umplere PWM 1
5.2.Efectuarea conexiunilor dintre Arduino și PC
Arduino are rolul de a interpreta informa țiile primite pe conexiunea serial ă de la aplica ția
de pe PC și de a le transmite circuitului de comandă , și apoi mai departe brațului robotic.
Informa ția dintre PC și Arduino este transmis ă printr -un cablu USB 2.0 (convertor USB -USB tip
B) sub forma de 1 și 0 (binar) prin UART (Universal Asynchronous Receiver/Transmitter).
Figura 5. 10. Conexiunea serial ă dintre Arduino și PC
Cablarea implicată în configurarea comunicației UART este foarte șimplă: o linie pentru
transmiterea datelor (TX) și o linie pentru primirea datelor (RX). Împreună , liniile RX și TX ale
unui dispozitiv care utilizează comunicația se rială formează un port serial prin care se poate
comunica. Pinul pentru transmiterea datelor (TX) a unui dispozitiv este conectat la pinul pentru
primirea datelor a celui de al doile a dispozitiv (RX), și invers.
25
Figura 5. 11. Cablarea comunica ției UART
UART este proiectat ă pentru a comunica între două dispozitive . Deoarece protocolul
trimite numai biți care indică începutul unui mesaj (tranzitia din 1 logic în 0 logic, front
descrescator) , conținutul mesajului (8 biti, plus bitul de paritate) și sfârșitul unui mesaj (valoare
de 1 logic pe al 11 -lea tic generat de ceas), ca în figura 5.6 , nu există nicio metodă de diferențiere
a mai multor dispozitive de transmi sie și recepționare pe aceeași linie. În cazul în care mai multe
dispozitive încearcă să tr ansmită date pe aceeași linie, dispozitivele receptoare vor primi, cel mai
probabil, date inutile. [6]
Figura 5. 12. Transmitere prin UART
În plus, UART este semi -duplex, ceea ce înseamnă că, deși comunicarea poate avea loc
bidirecțional, nu pot transmite ambele dispozitive date reciproc în acela și timp. Aceast lucru
însemn ă că la un moment dat, doar Arduino poate transmite informa ții către PC, sau doar PC -ul
poate transmite informa ții către Arduino.
Comunica ția serial ă pentru Arduino este pornit ă prin instruc țiunea Serial.begin(baudrate),
în care a fost setat ă o valoare pentru baudrate de 9600 , adic ă sunt generate 9600 de pulsuri de ceas
pe secund ă pentru transferul datelor, iar apoi este selectat portul pe care se va realiza comunica ția
(COM7) . Acelea și setări se vor face și în aplica ția Java (figura 5.13).
Figura 5.13. Stabilirea conexiunii seriale în aplica ția Java
26
5.3.Discretizarea și implementarea legii de reglare
Comand a pe care regulatorul o calculeaz ă, așa cum a fost stabilit în sectiune a 3.2, este dat ă
de rela ția 𝑢(𝑡)=𝐾𝑝∗𝑒(𝑡)+𝐾𝑖∗∫𝑒(𝑡)𝑑𝑡𝑡
0+𝐾𝑑∗𝑑𝑒(𝑡)
𝑑𝑡. Regulatorul folosit pentru aceast ă
aplica ție este implementat pe Arduino , așadar trebuie f ăcută trecerea comenzii din continuu în
discret pentru a înlocui calculul integralei în timp a erorii cu o sum ă și înlocuirea derivatei cu o
diferen ță. Algoritmul va rula și va calcula o comandă la o anumit ă perioad ă de timp , Te. Comand a
va fi men ținută pe ie șire până când o nou ă valoare este calculat ă și o va înlocui , cu ajutor ul unui
extrapolator de ordin zero, pentru completarea perioadelor de e șantionare . [13]
Figura 5.14. Completarea perioadelor de e șantionare .[13]
Pentru discretizare se va folo si transformata Z. Formulele folosit e sunt: 𝑍{𝑥[𝑘]}=𝑋[𝑧]
și 𝑍{𝑥[𝑘−𝑛]}=𝑧−𝑛𝑋[𝑧]. Calculul derivatei erorii va fi inlocuit de o diferen ță.
Nota ție : f(k) = e(k) și 𝑦(𝑘)= 𝑑𝑒(𝑡)
𝑑𝑡. Rezult ă:
𝑦(𝑘)≅𝑓(𝑘)−𝑓(𝑘−1)
𝑇𝑒 .
Se aplic ă transformata Z fomulei de mai sus și se obtine func ția de transfer a
componentei derivative :
𝑌[𝑧]≅𝐹[𝑧]−𝑧−1𝐹[𝑧]
𝑇𝑒,𝑟𝑒𝑧𝑢𝑙𝑡𝑎 𝑌[𝑧]
𝐹[𝑧]= 𝑧−1
𝑧∗𝑇𝑒
Calculul integralei erorii va fi înlocuit de o sum ă. Nota ție : f(k) = e(k) și 𝑦(𝑘)= ∫𝑒(𝑡)𝑑𝑡𝑡
0.
Rezult ă:
𝑦(𝑘)≅𝑦(𝑘−1)+ 𝑓(𝑘)+𝑓(𝑘−1)
2∗𝑇𝑒 .
Se aplic ă transformata Z fomulei de mai sus și se ob ține func ția de transfer a
componentei integrale:
𝑌[𝑧](1−𝑧−1)≅𝑇𝑒
2∗𝐹[𝑧](1+−𝑧−1),𝑟𝑒𝑧𝑢𝑙𝑡𝑎 𝑌[𝑧]
𝐹[𝑧]=𝑇𝑒
2∗𝑧+1
𝑧−1
Astfel, func ția de transfer discretizat ă va avea forma:
𝑈[𝑧]
𝐸[𝑧]=𝐾𝑝+𝐾𝑖∗𝑇𝑒
2∗𝑧+1
𝑧−1+𝐾𝑑∗𝑧−1
𝑧∗𝑇𝑒
După aducerea la acel ași numitor și rearanjarea termenilor dupa ordinu l lui z:
𝑈[𝑍]
𝐸[𝑧]=(𝐾𝑝+𝐾𝑖𝑇𝑒
2 + 𝐾𝑑
𝑇𝑒)+(−𝐾𝑝+𝐾𝑖𝑇𝑒
2−2𝐾𝑑
𝑇𝑒)𝑧−1+𝐾𝑑
𝑇𝑒𝑧−2
1−𝑧−1
27
Se noteaz ă cu “a” prima parantez ă, cu “b” a doua parantez ă și cu “c” termenul lui 𝑧−2:
𝑈[𝑧]=𝑧−1𝑈[𝑧]+𝑎𝐸[𝑧]+𝑏𝑧−1𝐸[𝑧]+𝑐𝑧−2𝐸[𝑧]
Aplic ând inversa tranformatei Z, se ob ține:
𝑢[𝑘]=𝑢[𝑘−1]+𝑎𝑒[𝑘]+𝑏𝑒[𝑘−1]+𝑐𝑒[𝑘−2].
Formula de mai sus este implementat ă în cod pentru Arduino, iar în plus au fost introduse
limit ări ale comenzii calculate, astfel: valoarea maxim ă care trebuie scris ă pe registrul aferent
factorului de umplere nu trebuie să depa șească 255, iar valoarea minim ă este particuarizat ă pentru
fiecare motor. Pentru Motor1 aceast ă valoare este de 100.
Figura 5.15. Algoritm PID implementat pentru Arduino
Algoritmul ruleaz ă cât timp modulul erorii este mai mic sau egal cu o valoare de toleran ță
impus ă. În funție de semnul comenzii calculate, se decide acționarea motorului în sens pozitiv sau
în sens negativ . Parametrii regulatorului sunt stabili ți pe cale experimental ă pentru fiecare motor.
Figura 5.16. Parametrii pentru algoritumul PID aferent motorului 1
28
5.4.Interfața grafică de comandă a brațului
Interfața grafic ă a fost construit ă cu scopul de a putea fi folosit ă cu ușurință de orice tip de
utilizator care dore ște să opereze brațul robotic. Primul pas dup ă deschiderea aplica ției este
apăsarea butonului “Conectare” pentru începerea comunica ției seriale dintre aceasta și placu ța
Arduino (vezi figura 5.17) .
Figura 5.17. Codu l Java rulat la ap ăsarea butonului “Conectare”.
Următorul pas dupa stabilirea comunica ției este calibrarea robotului. Aceast ă opera țiune
se relizeaz ă prin ap ăsarea butonului “Calibrare”, urmat ă de mi șcarea individual ă a fiecarui motor
până când acesta atinge o pozi ție de referin ță. Când aceasta pozi ție este atins ă, acționarea
motorului este oprit ă automat, valoarea encoderului aferent acelei articula ții este resetat, iar apoi
se trece la urmatoare articulație .
Figura 5.18. Cod Arduino pentru butonul “B+”
29
În figura 5.18 se observ ă că aplica ția Java trimite pe serial ă către Arduino caracterul ‘q’
cât timp butonul de “B+” (rotire baz ă cu plus) este ținut ap ăsat. La eliberarea acestuia, aplica ția
trimite c ătre Arduino caracterul ‘a’, moment în care mot orul respectiv este oprit. Prin ap ăsarea
butonului “Calibrare”, variabila “calibrare” din codul Arduino ia valoarea 1. Dac ă motorul bazei
este ac ționat, variabila calibrare are valoarea 1 și valoarea citit ă de la pinul de referin ță este 0,
înseamn ă că această poziție (de referin ță) a fost atins ă, prin urmare se opre ște forța t motorul și
valoarea encoderului 1 este pus ă pe 0. În mod similar sunt tratate toate celelate butoane de
acționare ale brațului robotic. Dup ă ce toate articula țiile ating pozi ția de referin ță, variabila
“calibrare” din Arduino este pus ă pe valoarea 0, adic ă procedura de calibrare s -a realizat cu
success.
La pornirea aplica ției, programul software este po sibil să nu știe ultima comandă dată
gripperului, a șadar este nevoie de aten ție din partea utilizatorului, iar acesta trebuie să dea
comandă de închidere a uneltei dac ă aceasta este deschis ă și invers, pentru ca apoi programul să
împiedice comand a de deschidere dac ă gripperul este deschis și invers. Se observ ă în figura 5.19
că pentru deschiderea/ închiderea gripperului trebuie ca aplica ția Java să trimit ă pe serial ă
caracterul ‘o’/’p’. Du pă primirea comenzii, este ac ționat gripperul într-un sens sau altul, iar apoi
este marcat ă aceast ă acțiune în variabila “deschis”. Aceast ă variabilă este ini țializat ă la începutul
programului cu o valoare diferit ă de 0 și 1. După ce toate cele 5 motoare + gripperul au fost
calibrate, se poate incepe operarea robotului.
Figura 5.19. Cod Arduino pentru acționarea uneltei
Până să se inceap ă operarea robotului, utilizatorul poate stabili viteza de lucru a acestuia
în casuța din dreapta -sus. Viteza introdus ă este interpretat ă apoi ca și procent din viteza maxima
de operare a echipamentului. După introducerea procentajului dorit, se apas ă pe bu tonul “Trimite”,
iar apoi toate articula țiile se vor mi șca cu acest ă vitez ă.
Pentru mi șcarea brațului robotic se apas ă pe butoanele din jurul articulație i care se dore ște
a fi actionat ă, în funcție de sensul de rotație . Mișcarea articulație i este men ținută cât timp butonul
este țiunut ap ăsat, iar la eliberarea acestuia robotul se opre ște. Sunt ac ționate astfel toate cele 5
articula ții + gripperul p ână când brațul robotic atinge poziții le pentru prindere și plasare dorite.
Prin ap ăsarea butoanelor “Pct. Plasare” și “Pct.Prindere” sunt memorate valorile encoderelor din
fiecare articulație pentru respectivele puncte .
30
Figura 5.20. Cod Arduino pentru citirea vitezei de operare trimis ă din aplica ție.
La ap ăsarea butonului “Trimite”, aplica ția Java trimite pe serial ă caracterul ‘0’, dup ă care
începe și trimite caracter cu caracter valoarea introdus ă pentru procentul vitezei de operare al
brațului robotic. Caracterele trimise de aplicatia Java sunt memorate în stringul serInString din
Arduino. Este parcurs apoi întreg stringul, iar în momentul în care un caracter este cuprins între
‘0’ și ‘9’, atunci acesta este transformat în cifră prin sc ăderea caracterului ‘0’ (conform codului
ASCII) și construit num ărul “vit eza”. Este convertit ă apoi variabila “vitez ă” din procentaj în factor
de umplere, iar apoi pinii PWM aferen ți celor 5 motoare ale brațului sunt actualiza ți la acesat ă
valoare.
Figura 5.21. Cod Java pentru trimiterea vitezei de operare pe serial ă.
31
După ce toti pa șii de mai sus au fost respecta ți, se poate începe poziționare a în regim
automat a brațului robotic din pozi ția memorat ă de prindere în poziția de plasare, prin ap ăsarea
butonului “Executa” din dreapta jos. Dup ă atingerea punctului de plasare , brațul robotic se va opri.
Codurile trimise pe conexiunea serial ă de către aplica ția Java c ătre placu ța Arduino sunt descrise
în tabelul 5.1.
Buton Acțiune Buton Caracter trimis Funcție
B+ apăsat q Start rotire baz ă +
eliberat a Stop rotire baz ă +
B- apăsat w Start rotire baz ă –
eliberat s Stop rotire baz ă –
U+ apăsat e Start rotire um ăr +
eliberat d Stop rotire umă r +
U- apăsat r Start rotire um ăr –
eliberat f Stop rotire um ăr –
C+ apăsat t Start rotire cot +
eliberat g Stop rotire cot +
C- apăsat y Start rotire cot –
eliberat h Stop rotire cot –
P+ apăsat u Start inclinare incheietur ă.+
eliberat j Start inclinare incheietur ă.+
P- apăsat i Start inclinare incheietur ă.-
eliberat k Start inclinare incheietur ă.-
R+ apăsat z Start rotire incheietur ă +
eliberat x Start rotire incheietur ă +
R- apăsat c Start rotire incheietur ă –
eliberat v Stop rotire incheietur ă –
Deschide apăsat o Deschidere gripper
eliberat – –
Inchide apăsat p Inchidere gripper
eliberat – –
Trimite apăsat 0 Trimitere vitez ă
eliberat – –
Calibrare apăsat l Start calibrare
eliberat – –
Pct. Plasare apăsat m Memorare pct. plasare
eliberat – –
Pct. Prindere apăsat n Memorare pct. prindere
eliberat – –
Executa apăsat b Executare alg. poziționare
eliberat – –
Referinta apăsat 9 Poziționare în pct. Referință
eliberat – –
Tabelul 5.1. Coduri trimise de c ătre aplica ția Java c ătre Arduino
32
Figura 5.2 2. Interfața grafic ă de comandă a brațului robotic
In col țul din dreapta sus este pusă o bar ă de status în care apar informaț ii cu privire la
conexiunea cu Arduino și acțiunile luate de c ătre utilizator sau de c ătre Arduino.
Ca și măsură de precau ție a utiliz ării aplica ției Java pentru controlul brațului robotic de
către persoanele străine, la deschidera acesteia apare o fereastr ă de logare în care sunt c erute
un utilizator și o parol ă (vezi figura 5.23).
Figura 5.23. Fereastra de logare în aplica ție
33
6.Rezultate ob ținute și analiza lor
Figura 6.1.Modulul de comandă
Prin parcurgerea pa șilor prezenta ți în sectiunea 4.2, modulul de comandă a luat forma din
figura 6.1. Lungimea și volumul cablurilor nu au fost foarte bine evaluate, prin urmare nu s -a putut
realiza închiderea modulului de comandă în partea de sus. Trecând mai departe de acest aspect,
toate componentele folosit e au fost fixate foarte bine pe foi de plexiglas de 2.5mm gro sime cu
suruburi de 3*80 mm (2*60mm pentru comutatoarele PWM de putere de pe cel de al doilea etaj)
ca în figura 6.3 . Pentru supraetajarea foilor de plexiglas au fost folosit e distan țiere hexagonale de
tip filet -șurub (3mm) cu înăltimea de 30mm (vezi figura 6.2).
Figura 6.2. Cele 3 etaje ale modulului de comandă văzute din lateral .
34
Ca și măsură de protec ție a modulului de comandă împotriva scurtcircuit ului, pe firul de
12V care vine de la sursa de alimentare a fost înseriat ă o siguran ță de 5A , similara celor folosit e
pentru automobile. Ca și rezerv ă, trebuie men ționat faptul c ă și sursa de alimentare prezint ă o
protec ție pentru suprasarcin ă.
Figura 6.3. Prezentarea etajului 1 în stanga (modul relee și rezisten țele) și
etajului 2 în dreapta (comutatoarele PWM de putere).
Pentru fixarea mufelor DB9 -mam ă au fost folosit e distan țiere hexagonale de tip surub -filet
de 3*5mm ca în figura 6.4. Firele lipite pe aceste mufe respect ă codul culorilor din tabelul 4.4 ,
pentru depanarea u șoară e eventualelor erori. Partea cu șurub a fost folosit ă pentru prinderea cu
piuliță pe interor a mufelor de peretele modulului de comandă , iar partea cu filet este folosit ă
pentru prinderea mufelor DB9 -tată ale robotului cu scopul de a evita eventuala decuplare
accidental ă a unuia dintre motoare.
Figura 6.4. Prinderea mufelor DB9 -mam ă
Toate elementele componente ale modulului de comandă s-au încercat a fi încapsulate în
carcasa unei surse de calculator care nu mai func ționa, în care toate componentele sunt bine fixate,
iar cablarea din exterior cu brațul robotic, PC -ul pe care ruleaza aplicatia Java și sursa de
35
alimentare să se facă prin mufe speciale prinse pe peretii laterali ai acesteia. Totodat ă, acest lucru
ajută la ușurința cu care întreg echipamentrul poate fi mutat în caz de nevoie d intr-o locație în alta.
După scrierea codului pentru Arduino, construirea interfeței grafice și realizarea
comunica ției dintre acestea, scopul proiectului a fost atins. Din interfața grafic ă se pot da comenzi
către modulul de comandă , iar acesta mai departe poate trimite și recep ționa informa ții de la brațul
robotic. În aceast ă etapă a proiectului, brațul robotic poate efectua o mi șcare de tipul ”pick and
place”. În timpul testului , s-a încercat mutarea unei cutii de markere de pe un scaun pe podea, a șa
cum poate fi v ăzut în figura 6.5.
În timpul operație i de ”pick and place”, un singur motor este ac ționat la un moment dat,
așadar secven ța în care articula țiile sunt puse în miscare este aleas ă cu aten ție astfel încat brațul
robotic să nu loveasc ă obiectele din jurul s ău sau acestea să il mentin ă blocat . De asemenea,
secven ța de mi șcare trebuie să țină cont și de faptul c ă brațul robotului, pentru anumite poziții , nu
ramâne blocat dup ă oprirea motorului, acesta fiind tras de forța de greutate spre baz ă.
Figura 6.5. Opera ția de tip “pick and place” realizată în mod automat de brațul robotic.
În timp ce fiecare articulație a fost verificat ă, a fost observat c ă în cazul articulație i 4,
responsabilă de înclinarea uneltei, limitatoarele de curs ă nu func ționeaz ă, însă întrerup ătorul
pentru pozi ția de referin țăă iși face treaba. Ace st aspect poate conduce la arderea motorului, dac ă
acesta este ac ționat și articula ția se afl ă la cap ăt de curs ă mai mult timp.
Astfel, cum nu s -a putut rezolva aceast ă problema din punct de vedere mecanic, s -a incercat
rezolvarea acesteia din codul Arduino. Dup ă procesul de calibrare, motorul a fost ac ționat în
ambele sensuri p ână la atingerea capetelor de curs ă, și s-au memorat valorile encoderelor pentru
acestea. În acest sens, în codul Arduino ac țiunea de pornire a motorului în sens negativ nu mai
este permis ă când valoarea encoderului a atins valoarea pentru limit ă la stânga. Similar, ac țiunea
de pornire a motorului în sens pozitiv nu mai este permis ă când valoarea encoderului a atins
valoarea pentru limit ă la dreapta.
Encoderul aferent gripperului nu este func țional, a șadar ac țiunile de deschidere/ închidere
ale acestuia sunt executate un anumit interval de timp în codul Arduino. Prin urmare, corpurile
prinse nu tre buiesc să fie fragile pentru a evita distrugerea acestora.
36
7.Concluzii și îmbunătățiri
Principalele obiective ale acestui proiect au fost atinse. Modulul de comandă construit
comunic ă foarte bine cu brațul robotic și cu interfața grafic ă de pe PC, iar opera ția de “pick and
place” func ționeaz ă conform a șteptărilor. Mai mult, valorile primite de la encoder folo sind o
rezolutie X2 pot a sigura o precizie de ordin ul milimetrilor din punct de vedere teoretic. Pentru
scopuri pur didactice, brațul robotic își face treaba foarte bine. Modulul de comandă este modular,
lăsând po sibilitatea extinderii ulterioare.
Din punct de vedere al punctelor slabe, poate fi men ționat ă sarcina pe care brațul robotic
o poate ridica de doar 2 kg, în condi țiile în care întreg echipamentul are o masa de 32 kg , adic ă
sub 7%. Un alt aspect negativ este legat de raportul reductorului folosit pentru mi șcarea articulație i
2 (cea de la um ăr), care este prea mic. Domeniul factorului de umplere pentru acest motor este
cuprins intre 240 și 255, fapt ce nu este foarte flexibil când se aduce în discutie acordarea
parametrilor pentru legea de reglare. Sub factorul de umplere de 240, adic ă o tensiun e pusa la
bornele motorului de 11.3 V, motorul nu poate ridica brațul . În acela și timp, dup ă oprirea
motorului aferent brațului în anumite poziții , articula ția 2 continu ă să se mi ște datorit ă forței de
greutate, iar aceast ă problem ă este datorat ă tot raportului mic al reductorului.
Ca și îmbun ătățiri, în interiorul modulului de comandă , trebuiesc puse 2 mufe, tat ă-mam ă,
între conexiunile dintre bornele releelor și comutatoarele de putere, ca în cazul în care se desface
un fir, sau se dore ște o modificare, etajele de deasupra să se poat ă inlătura cu u șurință, iar apoi
montarea să se facă în siguran ța (fțrț a i se da po sibilitatea celui care intervine să greșească). În
plus, termina țiile cablurilor de tip Molex din modul ar trebui mufate cu termina ții special e, pentru
a se fixa mai bine în bornele releelor și comutatoarelor de putere.
Din punct de vedere al programului care ruleaz ă pe Arduino, se pot implementa mai
departe mi șcarea brațului robotic în plan cartezian și acordarea parametrilor PID pe baza unui
model matematic pentru o miscare mai precisa. Totodata se poate schimba legea de reglare în
scopul mentinerii unei anumite viteze de deplasare. Astfel, viteza de deplasare a unei articula ții se
poate g ăsi în 3 cazuri: accelerare, men ținerea unei viteze de croazier ă și decelerare. În aceste
condi ții, indiferent de sarcina cu care es te încărcat brațul robotic, viteza cu care acesta este deplasat
dintr -un punct în altul va fi mereu aceea și, diferind doar tensiun ea livrat ă la bornele motoarelor și
curentul consumat.
Din punct de vedere al interfeței grafice , îmbun ătațirile care ar putea fi aduse ar fi
introducerea unor anima ții în funcție de comenzile care sunt date și de răspunsul venit pe reac ție
de la encodere. De exemplu, colorarea cu ro șu a articulație i care este pus ă în miscare, doar în
momentul în care v aloarea de la encoderu l aferent confirm ă modificarea pozi ției în acest sens.
Acest lucru ajut ă foarte mult în cazul dep ănarii unei erori, dar și pentru confirmarea faptului c ă
brațul robotic execut ă strict comenzile care i -au fost date.
37
8.Bibliografie
[1] Scorbot_ER_VII User’s Manual, 2nd Edition, 1996 , by Eshed Robotec
[2]https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=
8&ved=2ahUKEwjEoJrHsoDjAhVBI1AKHbx5CkQFjAAegQIABAC&url=http%3A%2F%2
Fwww.aosmd.com%2Fpdfs%2Fdatasheet%2FAOD4184A.pdf&usg=AOv Vaw3Z7b2u6d1nQ
PJQBu1E80Wg
[3] https://www.robotshop.com/media/files/pdf/arduinomega2560datasheet.pdf
[4] https://components101.com/5v -relay -pinout -working -datasheet
[5] https://www.arduino.cc/
[6] http://www.circuitbasics.com/basics -uart-communication/
[7] https://www.geeksforgeeks.org/java/
[8] https://www.elprocus.com/the -working -of-a-pid-controller/
[9] https://www.vecs.org/Support/Tutorials/relays.php
[10] https://www.analogictips.com/pulse -width -modulation -pwm/
[11] “Sisteme de Conducere a Fabrica ției”, Curs, Silviu Răileanu
[12] https://www.sciencedirect.com/topics/engineering/incremental -encoder
[13] “Ingineria reglarii automate”, Laborator “Discretizare”, Monica Patrascu
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: Proiectul prezent îsi propune retehnologizarea modulului de comandă al unui braț robotic articulat vertical cu 5 grade de l ibertate, deoarece cel… [626578] (ID: 626578)
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.
