PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ FORMA DE ÎNVĂȚĂMÂNT LA ZI Proiect de diplomă COORDONATOR ȘTIINȚIFIC Conf. dr. ing. Barabá s… [608425]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU AUTOMATICĂ ȘI
INFORMATICĂ APLICATĂ
FORMA DE ÎNVĂȚĂMÂNT LA ZI
Proiect de diplomă
COORDONATOR ȘTIINȚIFIC
Conf. dr. ing. Barabá s Tiberiu
ABSOL VENT
Boros Ferencz Sándor
ORADEA
2017
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU AUTOMATICĂ ȘI
INFORMATICĂ APLICATĂ
FORMA DE ÎNVĂȚĂMÂNT LA ZI
Comanda unui robot industrial
echipat cu motoare servo cu
microcontrol er AT mega328 PU
COORDONATOR ȘTIINȚIFIC
Conf. dr. ing. Barabá s Tiberiu
ABSOLVENT: [anonimizat]ándor
ORADEA
2017
Cuprins
Introducere ………………………….. ………………………….. ………………………….. ………………… 5
Capitolul 1. Introducere în lumea roboților industriali ………………………….. ……………… 6
1.1 Istoria roboților ………………………….. ………………………….. ………………………….. ….. 6
1.2 Clasifica rea roboților ………………………….. ………………………….. ………………………. 9
1.3 Structura roboților ………………………….. ………………………….. ………………………… 11
1.4 Comanda roboților ………………………….. ………………………….. ………………………… 11
Capitolul 2. Prezentarea robotului din cadrul proiectului ………………………….. ………… 12
2.1 Sistemul mecanic al robotului ………………………….. ………………………….. ………… 12
2.2 Schema electrică de comandă a robotului ………………………….. …………………….. 14
2.3 Placa de dezvoltare a robotului ………………………….. ………………………….. ………. 15
2.4 Motoarele servo ………………………….. ………………………….. ………………………….. .. 16
Capitolul 3. Proiectarea sistemului de comandă ………………………….. …………………….. 22
3.1 Noțiuni introductive privind microcontrolerele ………………………….. …………….. 22
3.2 Microcontro lerul ATmega328PU ………………………….. ………………………….. …… 24
3.3 Microcontrolerul ATtiny85 ………………………….. ………………………….. ……………. 27
3.4 Interfața de dezvoltare Visual Micro ………………………….. ………………………….. .. 28
3.4.1 Instalarea extensiei Visual Micro ………………………….. ………………………….. 30
3.4.2 Programarea microcontrolerului ATmega328P -PU ………………………….. …. 32
3.4.3 Programarea microcontrolerului ATtiny85 ………………………….. …………….. 36
3.5 Realizarea plăcii de dezvoltare pentru comanda robotului ………………………….. 39
Capitolul 4. Proiectarea programului de interfață PC ………………………….. ……………… 46
4.1 Mediul de dezvoltare Visual Studio – Windows Form ………………………….. …… 46
4.2 Instalarea programului ………………………….. ………………………….. …………………… 46
4.3 Conectare la placa de dezvoltare ………………………….. ………………………….. …….. 46
4.4. Setarea legăturilor de pe placă respectiv parametrilor de control ………………… 46
4.5 Comandarea articulațiilor ………………………….. ………………………….. ………………. 46
4
4.6 Programarea robotul ui ………………………….. ………………………….. …………………… 46
Bibliografie ………………………….. ………………………….. ………………………….. ………………. 47
Anexa 1. Diagrama bloc pentru microcontrolerul ATmega328p -PU …………………….. 49
Anexa 2. Diagrama pinilor pentru microcontrolerul ATmega328P -PU …………………. 50
Anexa 1. Diagrama bloc pentru microcontrolerul ATtiny85 ………………………….. ……. 51
Anexa 2. Diagrama pinilor pentru microcontrolerul ATtiny85 ………………………….. … 52
5
Introducere
Automatica este acea ramură a științei care studiază și realizează metode și mijloace
prin care se exclude participarea directă a factorului uman asupra unor procese.
Această știință a apărut atunci când omul a recunoscut observat că tehnologia este așa
de bine dispusă astfel încât unele procese repetitive pot fi efectuate de mașini.
Automatica s -a evoluat împreună cu electronica, ea fi ind suportul ei principal pe care se
bazează. În trecut am folosit circuite analogice complexe și uneori complicate pentru
conducerea proceselor, iar în zilele de azi apare o tendință tot mai mare de a lucra cu
microprocesoare sau cu microcontrolere, ele f iind ușor de implementat și de utilizat, oferind o
adaptabilitate mai sporită a sistemului și în unele cazuri reduc și costurile echipamentelor,
mașinilor.
În această lucrare voi prezenta automatica cu ajutorul roboților industriali, care sunt
folosite, în marea majoritate, la toate firmele de producție, funcția lor fiind de a mări
productivitatea cu deplasări mai rapide și mai precise.
Primul capitol vă prezintă evoluția roboților industriali , tehnici de comandă și control și
nu în ultimul rând unde sunt e i folosiți, în ce condiții.
În capitolul doi va fi vorba despre un robot industrial cu cinci grade de libertatea și se
prezintă și partea practică a acestei lucrări.
Capitolul trei conține descrierea sistemului de comandă responsabil pentru achiziție și
generare de semnale folosind circuitul ATmega 328 PU și ATtiny85 de la Atmel.
Următorul capitol prezintă mediul de dezvoltare Visual Micro pentru programarea
microcontrolelor utilizați.
În ultimul capitol este prezentat mediul de dezvoltare Visual Studio, un de s-a dezvoltat
programul de interfață a robotului pentru un calculator PC.
6
Figura 1.1.2 Ceasul lui Su Song[4]
Capitolul 1 . Introducere în lumea roboților industriali
1.1 Istoria roboților
Ideea „ automation / automata ” își are originile în mitologiile diferitelor culturi ale lumii.
Inven tatorii din civilizațiile antice au încercat să construiască mașini care să funcționeze
singure. Cele mai vechi descrieri se referă la păsările artificiale, la automaton care vorbește sau
care spală. Aristotel a fost primul care a speculat că acele ”automa tons” într -o zi va fi servi pe
om, fiind egal cu el, prin ce se înțelege că omul va fi stăpânul iar roboții scl avii lui, [1][2]
Figura 1.1 .1 „Automata” lui Yan Shji[3]
Pentru China antică s -au găsit descrieri ale „automata” din secolul III, când Yan Shji a
creat un automat în dimensiuni naturale , care a fost capabil să performez e mai multe funcții
impresionante. Automatizarea putea să se miște într-o manieră și putea cânta. Aceasta era
realizată din piele, lemn și organe artificiale. (figura 1.1 .1)
În fig ura 1. 1.2 este prezentat motorul cosmic al lui Su Song , care defapt un turn cu ceas
de 10 metri înalt, cu mecanism de ti p „manachin” care sun ă în fiecare oră cu un clopoțel.[4]
Este și o legendă egipteană despre Rocail, frat ele
cel tânăr a lui Seth, că a c onstruit un palat și un mormânt în
care erau statui autonome ce erau acționate astfel încât
duceau o viață asemănătoare cu cea a oamenilor. Statuile
erau atât de bine realizate, încât puteau fi confundate cu
niște ființe vii.[5]
O altă poveste de la Lokap annatti (un indian din
sec. XI –XII) despre Regel e Ajatashatru din Magadha, care
a luat relicvele lui Buddha și le -a ascuns într -o „stup ă” sub
pământ. Relicvele erau protejate de roboți mecanici
(„bhuta vahana yanta ” în limba lor ),
7
Cele prezentate de mai s us, confirmă adevărul despre istoria roboților , că ei au apărut și
au existat deja în lumea antică și dacă nu erau așa de performanți și de bine dispuși ca în zilele
de azi.
Deși istoria roboților întinde până la lumea antică, eu zic că roboții au apărut a tunci,
când omul și -a imaginat dispozitive mecanizate și inteligente, care să preia cât mai mult din
efortul fizic depus. În așa fel și -a imaginat roboții în cărți, desene, filme, după ce a construit
jucării automate și mecanisme inteligente.
Termenul „ro bot” a fost utilizat pentru prima dată de în piesa „ Rossum’s Universal
Robots ” al scriitorului ceh, Karel Čapek , în anul 1920, după care în 1941 Isaac Asimov a folosit
cuvântul "robotizare" pentru descrierea tehnologiei roboților și a prezis creșterea unei industrii
robotice puternice . Prin urmare conceptul modern al robotului a început să fie dezvoltat, într –
adevăr, în perioada Revoluției Industriale, când era posibil să utilizeze sisteme mecanice
complexe și a devenit cât mai accesibil și utilizarea elect ricității.
Primul robot industrial „The Iron Hand” a fost fabricat de către un inginer de la Erie
Engineering Company în 1938, iar poza ce se poate vedea in figura 1.1.3 era realizat undeva în
anii 1940 -1950, data aceasta fiind aproximat după mașina care apare dreapta spate pe poză.
Figura 1.1.3 The Iron Hand [6]
8
Arăta că o macarea și avea un singur motor pentru acționare. Trebuie remarcat faptul că
avea 5 grade de libertate. Acest robot nu putea fi utilizat pentru foarte multe acțiuni dar totuși
era capab il să așeze placi și bucăți de lemne în „blocuri” de forme bine definite.[6]
Primul robot programabil și operabil în sistem digital a fost inventat de Geroge Devol
în 1954, care ulterior a primit numele de „Unimate”. Acest robot a lucrat pe linia de asambl are
a General Motors assembly line la New Jersey. A fost utilizat de a lua și a ridica piesele turnate
din fontă și matrițe și apoi să le depoziteze. Brevetul lui Devol reprezintă fundamentul industriei
moderne de robotică. [7]
În anii 1970, compan ia germană KUKA, a construit primul robot industrial din lume,
cu 6 axe de mișcări comandate electromecanic, cunoscut sub denumirea FAMULUS.
Brațul robotic SCARA (Selective Compliance Articulated Robot Arm) a fost creat în
1978, ca braț robotic cu 4 axe. S -a dovedit a fi deosebit de eficient pentru apucarea reperelor și
mutarea lor în altă locație, fiind introdus pe linia de asamblare în 1981.
În anii 1980, companiile din industria automobilului au făcut investiții masive la
companiile din domeniul robotic ii, cu toate că, nu întotdeauna, acestea s -au dovedit a -și atinge
scopul . General Motors Corporation a cheltuit mai mult de 40 de b iliarde de dolari pe
tehnologii, dar, din păcate, o mare parte a investiției s-a dovedit a fi fost un eșec. În 1988, roboții
de la fabrica Hamtramck Michigan au căzut, adică au spart ge amurile și s-au vopsit unul pe
altul. [8]
Anul 2010 a indus o accelerare a cererii pentru roboții industriali, datorită dezvoltării
continue inovative și îmbunătățirii performanțelor roboților. Pâ nă în 2014 s -au înregistrat o
creștere cu 29% a vânzărilor la nivel mondial. Deoarece în ultimii ani roboții au devenit tot mai
Figura 1.1.4 Primul robot programabil [7]
9
performanți, s -a dezvoltat un sistem de operare pe computer pentru aceștia. Robot Operating
System (ROS ), reprezintă un set de p rograme „ open -source ” dezvoltat la Stanford University,
Massachusetts Institute of Technology și Technical University of Munich . Sistemul permite
variante avansate de software pentru programarea mișcărilor robotului, nivel ridicat de
comandă și control, pr ocesare cu acuratețe a imaginilor, evitarea obstacolelor etc. Atunci când
ROS realizează „boot” / conexiune pe computer, se obțin date des pre lungimea și mișcările
brațului robotic, date care sunt apoi procesate prin algoritmi complecși , de înalt nivel
(neutrosofic, logic, fuzzy etc.).
Baxter, este un robot industrial nou, construit de compania Rethink Robotic s, care a fost
utilizat din sfârșitul anului 2012. Era diferit de ceilalți roboți industriali în aceea că poate învăța .
Un operator / muncitor îl poat e învăța cum să desfășoare o activitate, mutând mâna cu mișcarea
respectivă și, punându -l pe Baxter să o memoreze. Nu este nevoie de programare pentru c a
robotul să execute operațiile.
A face parte din lume roboților este interesant, provoc ător și cu bene ficii din ce în ce
mai mari – în special pentru aplicațiile industriale – motiv p entru care am ales această cale
pentru studiile mele superioare.
1.2 Clasificarea roboților
Robotul prin definiție este un sistem automatizat de înalt nivel capabil sa îndepli nească
obiecte ș i scule î n scopul suplinirii unor activități umane. Realizarea ș i implementarea
aplicațiilor necesit ă cunoștințe din domenii diverse ( mecanică, hidraulică, electrotehnică ,
electronică, informatică ).[9]
Astfel robotul industrial, în prezen t este definit ca un manipulator tridimensional,
multifuncțional, reprogramabil și capabil să deplaseze materiale, piese, unelte sau aparate
speciale după traiectorii programate, în scopul efectuării unor operații diversificate de
fabricație.
Un robot industrial, pe lângă faptul că trebuie să îndeplinească cerințele mediului
industrial după cum trebuie să fie ș i foarte flexibil , ca să poate fi adaptat pentru orice serii de
fabricație într -un mod cât mai ușor, să aibă o productivitate cât mai crescută, să f ie fiabil, toate
aste cu un cost cât mai redus. Acești roboți sunt utilizați în aplicațiile ce sunt caracterizate prin
repetabilitate , cadență foarte mare, în medii nocive.
10
Roboții, după modul deplasării se disting în două mari categorii. Astfel există ro boți:
• Roboți ficși, cei care sunt imobili față de anumite componente ale mediului în
care evoluează
• Roboți mobili, utilizați din ce în ce mai mult în diverse aplicații pentru a
îndeplini sarcini complexe în spații sau în medii în care accesul omului este
dificil sau chiar imposibil. Deplasarea se face folosind roți, senile sau prin păsare
Clasificarea pe generalități, folosește drept criteriul de bază, capacitatea mașinii de
percepere și interpretare a semnalelor din mediul exterior, precum și de adaptare l a mediu în
timpul procesului de lucru.
Generațiile manipulatoarelor:
• Manuale (prima generație): este vorba de un sistem de manipulatoare
amplificatoare de efort cu cel puțin 3 grade de libertate care permite, prin
comenzi umane, efectuarea operațiilor în medii improprii sau nocive activități
umane
• Automate (generația a doua): acestea sunt mecanisme de manipulare cu cel puțin
două axe, care realizează deplasări după un ciclu bine prestabilit, într -un regim
automat. Ele nu au senzori și lucrează în buclă des chisă, de aceea sunt utilizați
la operații mai simple cum este de exemplu încărcare/descărcare.
• Inteligente (generația a treia): sunt mecanisme de manipulare, în care comanda
umană este îmbinată cu controlul de finețe as istat de senzori inteligenți. Scopul
acestei comenzi constă în depășirea limitelor senzoriale asupra organismului
uman.
Generațiile roboților industriali
• Manipulatoarele automate programabile construiesc prima generație, având
minim trei axe, dintre care măcar două sunt programabile fie prin tr-un limbaj
simbolic fie prin învățare. Acești roboți lucrează în buclă închisă, datorită unor
senzori de control a poziției, care se află pe fiecare axă. Comanda lor se poate
face de la un automat programabil sau de la un calculator.
• Generația a doua cup rinde manipulatoarele automate tot cu cel puțin 3 axe
programabile, dar sunt dotate cu mai multe senzori specializați, cum sunt senzori
11
de tip tactil, de forță, camere video și așa mai departe. Datorită acestor senzori
au o coordonare de tip ochi -mână, cee a ce înseamnă că pot identifica obiecte de
formă simplă așezate aleator. Sunt comandați de cel puțin un calculator și cu
ajutorul lui pot face deplasări pe traiectorie în funcție de modificările mediului
de lucru într -un mod interactiv, așa că pot executa operații indiferent de poziția
inițială a subcomponentelor.
• Roboții din generația a treia sunt dotați cu senzori mai performanți și inteligenți,
care prelucrează datele local, analizează datele și furnizează doar informația
necesară către sistemul de coman dă.
• Inteligenți pe care rulează programe în care este implementat o inteligență
artificială la care se mai adaugă și senzori de înalt nivel, așa că robotul fiind
foarte dotat, are capacitatea de autoinstruire, interpretând și folosind experiențe
dobândite din situații anterioare.
Majoritatea roboților industriali, care sunt mai des folosite în zilele de azi aparțin
generației 1 respectiv 2.
Bla bla bla bla
1.3 Structura roboților
1.4 Comanda roboților
12
Capitolul 2. Prezentarea robotului din cadrul proiectului
Robotu l prezentat în proiect este distribuit de firma L ynxmotion . Această firmă se ocupă
cu distribuirea mai multor tipuri de roboți cum sunt: dronele, brațele robotice, roboți
humanoide(bipeduri), quadropoduri, hexapod, mașini/rovere, roboți sumo, tancuri; respectiv
accesorii pentru asamblarea un robot anume din mici bucăți cum sunt motorașele, propellere,
roțile cu cauciucuri, cabluri, controllere și multe alte piese sau accesorii ce pot fi de folos pentru
a construi cu ușurință un robot care să n e place.
2.1 Sistemul mecanic al robotului
Acest robot este de tip SECSAC -KT Lynx SES Aluminum . Dispozitivul de ghidare este
alcătuit din cinci cuple cinematice, fiecare cuplă cinematică fiind de tip R, astfel robotul având
cinci grade de libertate de tip RRR RR. Pe lângă aceste, mai este adăugat , ca și efector final, un
gripper , pentru prinderea unor obiecte aflate în interiorul acel ei zone, unde robotul poate să
ajungă și să le prinde.
Figura 2.1.1 Robotul SECSAC -KT
Articula țiile robotului sunt puse în a plicare cu ajutorul motorașelor servo iar elementele
care se leagă articulațiile fiind legături din aluminiu. Comanda motoarelor, respectiv controlul
traiectoriei gripperului este realizat de microcontrolerului ATmega328PU, fabricat de Atmel.
13
Pentru calcul ele și sincronizarea motoarelor am folosit un alt microcontroler și anume ATtiny85
care are rolul de a apela o întrerupere din exteriorul ATmega328PU. Pentru un aspect mai bun,
am realizat o placă de dezvoltare, pentru a face conexiuni mai clare, fără mult e cabluri.
Echipamentele sunt alimentate de o sursă externă, cu mufa de ATX cu 24 de pini, care se poate
regăsi în orice calculator personal. Robotul în sine are o greutate de 1.5 KG și poate ridica o
greutate maximă de 250gr (10oz/inch) la înălțimea maxim ă de 38cm.
În ceea ce privește structura robotului, trebuie specificat următoarele caracteristici:
• Distanța dintre axe este de 15,5 cm
• Gripperul se poate deschide maxim la 3.5 cm
• Rotația motoarelor este de 192o
• Alimentarea motoarelor se face la 5V
• Consumu l motoarelor este de 450mA, iar la peak poate atinge și 2500mA
• Masa totală al robotului este de 1.5 KG
• Masa totală de ridicare este de 250gr
• Comanda se face cu programul „RobotArm” conectând partea de comandă la un
calculator prin cablu USB
Pe partea de co mandă a robot ului inițial, se află un contro ler servo tot de la firma
Lynxmotion, numit SSC -32. Acest controler are multe caracteristici. Are o rezoluție foarte mare
de 1uS pentru poziționare cât mai clară și pentru mișcări foarte mici. Intervalul pentru i mpulsuri
este de la 0.5 ms până la 2.5 ms pentru 180o . Mișcarea controlată cu acest controler poate să fie
executată imediat, se poate regla viteza de mișcare sau timpul în care să fie efectuat mișcarea,
sau combinat. De asemenea este posibil controlul ma i multor motoare în aceeași timp, se poate
controla astfel să se pornească motorașele împreună și să și termine mișcarea împreună. Acest
controler avea conectivitate serială folosind protocolul RS -232 pentru a comunica cu un
calculator.
Din mo tivul că pro tocolul RS -232 începe să fie învechit m -am gândit să realizez eu o
altă placă, cu un alt microcontroler cu conectivitate USB pentru a comanda robotul.
14
2.2 Schema electrică de comandă a robotului
Figura 2.2.1 Schema electrică de principiu
În figura 2.2.1 este prezentat schema electrică de conectare de principiu a robotului
realizată de mine. Placa pe lângă alte componente electrice cum sunt rezistențele,
condensatoarele și ledurile, mai conține și un oscilator cu cuarț, care furnizează un tact de ceas
pentru microcontrolerul ATmega328PU pe 16 MHz. Pe placă se regăsește încă un alt
microcontroler și este vorba despre ATtiny85, care ajută la sincronizarea motoarelor cu un tact
la pinul de întrerupere al ATmega328PU. Pentru a informa vizual utilizatorul sunt montate
leduri de informare despre alimentare respectiv de funcționare. Pentru alimentarea plăcii
utilizez un conector ATX, care se regăsește pe orice sursa de tensiune din orice calculator PC.
Cu ajutorul acestei surse sunt alimentate atât microcontrolere cât și motoarele.
15
Placa de dezvoltare dă posibilitatea ca motoarele servo să fie conectat la orice intrare al
microcontrolerului ATmega328PU care are dotarea de a genera semnale PWM. Astfel
motoarele pot fi conectate la pinii 3,5,6,9,10,11. In continuare , se regăsește încă doi pini liberi
de la ATtiny85 dintre care unu trebuie conectat la pini 1 și 2 la ATmega328PU pentru
întreruperea externă, iar celălalt pin la orice pin digital liber, care va da semnal de pornire/oprire
pentru generarea întreruperii. U ltimul pin care trebuie conectat este pinul de pornire sursă. El
poate fin conectat la orice pin digital liber și are rolul de a porni sursa de tensiune, care în
momentul conectării la priza de alimentare, nu pornește simultan, ci așteaptă după un semnal.
Acest semnal este controlată de microcontroler.
Trebuie menținut că după conectarea motoarelor respectiv tuturor semnalelor care ajută
funcționarea corectă a robotului, când pornim aplicația RobotArm, trebuie să specificăm la
setări, locul fiecărei semnal conectat la microcontroler.
Conectarea inițială este următoarea:
• ATtiny85 pinul P0 este conectat la ATmega85PU pinul digital D4
• ATtiny85 pinul P1 este conectat la ATmega85PU pinul digital D2
• Pinul 9 (PS_ON) din conectorul ATX la ATmega85PU pin digital D12
• La ATmega328PU pinul D3 este conectat motorul de la baza robotului
• La ATmega328PU pinul D5 este conectat motorul de la a doua articulație
• La ATmega328PU pinul D6 este conectat motorul de la a treia articulație
• La ATmega328PU pinul D9 este conectat motorul de la a patra articulație
• La ATmega328PU pinul D10 este conectat motorul de la a cincea articulație
• La ATmega328PU pinul D11 este conectat motorul de la gripper
Așa cum am specificat și mai sus, orice modificare la conectare, trebuie introdusă în
programu l de control al robotului, pentru funcționare corectă. Această corectură se poate face
conform ins trucțiunilor din capitolul 4.4 .
2.3 Placa de dezvoltare a robotului
Controlul unui astfel de robot nu este așa de simplă cum se pare la început. Necesită
multe gândiri, programare și multe atenție la conectarea legăturilor între componentele electrice
respectiv comunicarea între microprocesoare. Pentru a evita în viitor aceste greșeli, m -am
hotărât să realizez o placă de dezvoltare specific pentru controlul ace stei robot.
16
Din punct de vedere estetic, este vorba despre o placă foarte simplă, ce se poate realiza
acasă, așa cum am fă cut și eu. Realizarea unei astfel de plăci, nu necesită echipamente scumpe,
pe care le folosim rare ori și nu sunt echipamente greu d e folosit. Ne trebuie doar să folosim
capul în primul rând pentru a realiza trasee cât mai optimizate și clare între componente. După
ce am ajuns la o versiune finală, urmează să introducem desenul nostru într -un program, specific
pentru realizarea ș i dese narea astfel de circuite, pe care la sfârșit vom lista, și cu metoda fierului
de călcat vom realiza cablajul imprimat. Această metodă presupune listarea cablajului împrimat
cu o împrimantă laser. Foaia listată punem cu fața în jos pe partea cu cupru a plăc ii. După ce
am fixat, aplicăm fierul de călcat pe ei, ca să topim tonerul de pe foaie, pe placă. După pest 6 –
7 minute, luăm cu grijă placa, și punem în apa fierbinte, ca să eliminăm foaia de pe ea. Dacă
totul este în regulă și nu am stricat circuitul, pute m să placa într -o soluție chimică de corodare
și anume în clorură ferică. Așteptăm până când soluția scoate cuprul din înafara tonerului topit,
după care scoatem și ștergem placa cu acetonă, astfel obținând circuitul final. Metoda este mai
bine arătat și e xplicat în capitolul 3.4.
2.4 Motoare le servo
Motoarele servo sunt dispozitive ele ctro-mecanice, închise într -o cutie, care cuprinde
un motor de curent continu (DC), electronică pentru controlul motoarelor de la un semnal de
comandă, transmisie in termediară pentru a crește puterea de rotire și pentru a reduce turația
motorului și un potențiometru, care furnizează di spozitivului informație de spre poziția actuală
a motorului. [14]
Figura 2. 4.1 Structura servomotorului[10] electronică
pentru controlul
motorului transmisie
motor de
curent continu
potențiometru
17
Aceste motoare sunt fabrica te în trei mărimi: micro, normal și gigant , iar sunt cu același
sistem de bază constructiv. Se utilizează de obicei pentru poziționare, de exemplu pentru
reglarea direcției la o mașinuță, la mișcarea brațelor robotice, etc.
Figura 2. 4.2 Tipuri de motoare s ervo[11]
La comanda motoarelor servo, ele vin cu mai multe feluri de dispozitive , care pot fi
montate pe ei, depinde doar de noi care vom folosi, care se potrivește mai bine pentru proiect,
pentru aspectul (designul) robotului.
Figura 2.4 .3 Dispozitive a tașabile la servomotor[12]
18
Cele mai utilizați tipuri de motoare servo au conexiuni cu 3 pini cu același semnal de
control , care va face pe motoarele servo să fie
interschimbabili între ele în mod rezonabil.
Acești conectori sunt de tip mamă, cu cap de
0.1”. Ceea ce se poate confunda este culoarea,
care nu sunt consistente tot timpul și depinde de
producător. O faptă bună este că ordinea pinilor, în mare majoritate, este aceeași, așa că
diferența se găsește doar la culoare. Trebuie totuși menținut culorile negru și maro care este
împământarea ( ground ) și roșu care este alimentarea (vcc). Culoarea semnalului de comandă
poate să diferă de la un producător la altul, așa că dacă nu suntem siguri în ceea ce facem, atunci
mai bine ne uităm în documentație. De obi cei pentru comandă se utilizează culorile alb, galben
și portocaliu. [15]
A fost menționat mai sus, că semnalul de control este al treilea pin din conector, care
este utilizat pentru a zice motorului unde anume, în ce direcție să se întoarce. Acest semnal de
control este un șir de impulsuri. Impulsurile apar într -un interval de 20 de milisecunde (în 50Hz)
iar lungimea unui impuls variază între 1 -2 milisecunde. Unele sisteme cu rezoluție crescută ne
va permite comanda impulsurilor de la 0.5 ms până la 2.5 m s. Pentru generarea acestor semnale
PWM ( Pulse Width Modulation ) este ușor de a folosi un microcontroler, care să aibă pin i dotați
pentru generarea astfel de impulsuri.
Idea de protocol pentru
poziționare constă în faptul că la
o comandă de 1,5 ms motoru l se
rotește la poziția centrală, având
valoarea unghiulară de 90 de
grade. Atunci când comandăm un
impuls care tinde mai spre 1 ms
atunci motorul se va roti spre
stângă, iar în caz contrar când este
mai aproape de 2 ms se va roti
spre dreapta. Fiecare imp uls
măsurat va afla între 1 ms și 2 ms
după cum va fi decis rotire la stânga sau la dreapta a motorului. Comanda fiind analog, practic
orice poziție poate fii atinsă. Știind deja cum comandăm un servo motor, știm că metoda cea Figura 2.4.5 Comanda PWM [16]
Figura 2.4.4
Cablu de conectare servo[13]
19
mai simplă pentru generarea s emnalului PWM de comandă este utilizarea unui microcontroler,
rămâne de știut doar că pozițiile valabile sunt dependente de rezoluția ceasului (timer) al
microcontrolerului. De exemplu, este posibil ca un impuls să aibă numai 256 pași intre 1 ms și
2 ms ca re este destul de ajuns pentru orice aplicație. Trebuie menționat observația, că motorul
în sine nu poate să fie foarte precis din cauza rezoluției. [16]
În cadrul proiectului motoarele servo utilizați sunt motoare servo analogice, furnizate
de către firma HiTec cu seria de HS -475HB și HS -645MG. Cel din urmă este un servo motor
de cuplu ridicat , cu rulment dublu, cu un motor de curent continuu cu 3 poli și cu magneți
ferită, cu 3 angrenaje metalice și încă un angrenaj din metal rezinat , cu un potențiometru de
calitate înaltă de 5K ohmi și cu un circuit IC hibrid pentru controlul motorului.[19] Despre
celălalt motor nu avem așa de multe informații așa de detailate ceea ce privește structura
interioară. De știut este că în interior are un motor de curent cont inuu cu perii din metal
feromagnetic, cu angrenaj din metal rezinat, mă gândesc că are un potențiometru tot de 5K ohmi
și un circuit IC pentru control .[20]
Am vorbit despre circuit IC, care comandă motorul, dar să vedem ce este defapt. Un
microcontroler tr imite foarte mai multe impulsuri către servo, cu lărgimea impulsului între 1
ms și 2 ms. 50 de impulsuri ajung în într -o secundă, și acest IC, amplificator, verifică tot timpul,
dacă trebuie ca motorul să fie rotit sau nu. Dacă sesizează că trebuie rotit, trimite un semnal
scurt către motor, ca să se rotească. În cele mai multe aplicații funcționează bine, iar din cauza
că nu este în continuu alimentat (este rotit doar pentru un moment, când primește semnal de la
amplificator), nu se poate folosi cuplul și viteza maximă a motorului. [22]
Problema cu motoare servo analogice, cum avem și noi, este că nu lucrează cu aceeași
cuplu tot timpul. Valoarea cuplului depinde de diferența de poziție comandată și poziția actuală.
Cu cât această diferență este mai mică, c u atât și cuplul va fi mai mic. În realitate dacă diferența
este mică, cuplul motorului va fi foarte mică și din această cauză, nu va putea mișca brațul și
de aceea se mișcă doar foarte puțin și se aude un zgomot.
20
În figura 2.4.6 este ilustrat un amplif icator liniar cu tranzistori complementari.
Figura 2.4.6 Amplificator linear
Sensul de rotație în acest caz, va depinde de tranzistorul care comută. Dacă T1 comută
și T2 închide atunci motorul se va roti în sens invers față de cazul in care T1 se închide și T2
se deschide.
Figura 2.4.7 Amplificator diferențial
Figura de mai sus (figura 2.4.7) ilustrează un controler de comandă pentru servomotoare
cu un amplificator diferențial. Sensul de rotație a motorului va depinde care tranzistorii care se
comută, astf el va roti într -un sens, dacă este alimentat T1 și T4 și în sens invers în cazul în care
se comută perechea format din tranzistor ii T3 și T2.
Motorașele servo utilizate în cadrul proiectului, sunt comandate după principiul
prezentat în figura 2.4.7. Dacă s -ar demonta motorul, în interiorul său am putea găsi o placă de
circuit electric, care va conține atât tranzistoarele, cât și un circuit amplificator, montat separat.
T1
R2
R1
+U
M
+U
-U
R1
R2
R3
R4
T1
T2
T4
T3
M
21
Caracteristicile motorașelor servo, sunt cuprinse în tabelul de mai jos:
HS-475HB
HS-645MG
Sistemul de control PWM cu 1500usec la mijloc (45o)
Tensiunea de alimentare 4.8V – 6.0V
4.8V 6.0V 4.8V 6.0V
Avans de lucru 0.23sec/60o 0.18sec/60o 0.24sec/60o 0.2sec/60o
Cuplul motorului 4.4kg/cm 5.5kg/cm 7.7kg/cm 9.6kg/cm
Consum curent la
menținere 7.4mA 7.7mA 8.8mA 9.1mA
Consum curent normal 160mA 180mA 350mA 450mA
Consum curent
maxim( peak ) 900mA 1100mA N/A mA N/A mA
Lățimea de bandă moartă 5 usec 8 usec
Tabelul 2.4.7 Caracteristicile motoarelor servo utilizați[19][20]
În cazul robotu lui din proiect, este utilizat 5 motorașe de tip HS -645MG pentru rotirea
bazei robotului (articulația 1) , două pentru articulația 2 ( partea superioară a brațului ), unu pentru
articulația 3 (antebrațul) și unu pentru articulația 5, care ajută la rotirea grip perului în sens orar
sau anti orar (stânga și dreapta). Motorașele HS -475HB se regăsesc de două ori în structura
constructivă a robotului și sunt utilizați pentru mișcarea articulației 4 pe axă verticală, deci în
sus-jos, respectiv pentru închiderea și des chiderea gripperului.
22
Capitolul 3. Proiectarea s istemul ui de comandă
3.1 Noțiuni introductive privind microcontrolerele
Înainte de apariția microcontrolerelor existau controlere care erau sisteme utilizate
pentru a comanda și prelua stări de la un proc es sau elemente de execuție. Acestea erau
echipamente de dimensiuni mari, însă odată cu apariția microprocesoarelor au urmat și
îmbunătățiri ale controlerelor prin reducerea dimensiunilor acestora. Toate componentele
necesare unui controler au fost integra te pe același chip, astfel continuând procesul de
miniaturizare luând naștere calculatorul integrat pe un singur chip, adică microcontrolerul, fiind
specializat în implementarea operațiilor de control.
Numele acestui dispozitiv evidențiază caracterul său ș i anume cuvântul „micro” arată
că este vorba despre o mărime redusă a dispozitivului, iar cuvântul „controler” indică faptul că
microcontrolerul este capabil să controleze obiecte, procese, etc.
Un microcontroler este asemănător unui microprocesor, ambele conținând CPU
(Unitatea Centrală de Prelucrare) care execută instrucțiuni ce îndeplinesc operațiile de bază
logice, matematice și de transmitere a informației . Totuși microcontrolerul diferă de
microprocesor prin mai multe aspecte, cel mai mare aspect de diferențiere fiind legat de
funcționalitatea acestuia. Microprocesorul nu poate funcționa de unul singur, doar împreună cu
alte componente de memorie pentru stocarea informațiilor și a programelor, împreună cu
interfețe de intrare -ieșire (I/O) utile pentru conectarea dispozitivelor externe și împreună cu
dispozitivul cel mai necesar, generatorul de tact extern . În schimb un microcontroler este
proiectat să fie toate aceste componente într -unul singur, neavând nevoie de alte dispozitive
externe pentru că toa te perifericele sunt incluse în el, acest fapt fiind un avantaj datorită
economisirii timpului și spațiului necesar pentru construirea aparatelor electronice. Datorită
acestui fapt, aparatele care stochează, măsoară, comandă, afișează sau calculează date,
informații majoritatea au în componența lor un microcontroler.[23][24]
În general un microcontroler conține de obicei următoarele:
• CPU (u nitatea centrală de prelucrare)
• Dispozitive/ interfețe de intrare -ieșire (I/O) seriale ș i/sau paralele
• generat or de tact la care se adaugă din exterior un cristal de cuarț sau un circuit RC
în aplicații mai simple
23
• memorie volatilă RAM
• memorie nevolatilă ROM/PROM/ EPROM/EEPROM (depinde de model)
• controler de întreruperi
• controler DMA (pentru accesare directă memorie i)
• numărătoa re/temporizatoare
• convertoare A/D, D/A.
• și eventual alte periferice (depinde de model)
Cu toate cele enumerate de mai sus schema bloc dezvoltată al unui microcontroler în
caz general arată conform figurii de mai jos:
Figura 3.1.1 Schema bloc generalizată a unui microcontroler[23]
Se poate observa în figura 3. 1.1 că blocurile funcționale ale unui microcontroler sunt
conectate între ele printr -o magistrală internă numită „BUS” care transmite semnale de control,
de adresă ș i de date. Una dintre cele mai importante caracteristici ale unui microcontroler este
mărimea acestor magistrale. Unitatea centrală de prelucrare selectează o locație de memorie sau
24
un dispozitiv prin intermediul magistralei de adrese, iar prin magistrala de date se face schim bul
de date și informații între CPU ș i memorie sau dispozitivele I/O.
Unitatea centrală de prelucrare execută instrucțiunile pe care le primește prin
intermediul magistralei de date de la memoria program. Structura Harvard fiind foarte
răspândit, se poate regăsi în microcontrolerele, fapt după care știm că instrucțiunile sunt stocate
în memoria ROM iar datele în memoria RAM. Magistrala de date ș i cea de adrese p ot fi izolate
sau multiplexate.
Modulele I/O pot fi seriale sau paralele, fiecare modul fiind î n stare să schimbe date cu
mediul exterior prin intermediul registrului de date. Controlerul de întreruperi al
microcontrolerului pe rmite intrări din exterior cât ș i de la modulele externe. Configurarea
modulului se face de către unitatea centrală de prelu crare datorită registrului de comenzi iar
citirea stării modulului se face cu ajutorul registrului de stare . Prin acest registru se pot genera
și întreruperile către unitatea centrală.
3.2 Microcontrolerul ATmega328PU
Nucleul Atmel AVR® conține un set de i nstrucțiuni bogat cu 32 de registre de uz
general. Fiecare registru este conectat direct la unitatea aritmetică și logică ALU, care acceptă
să fie accesat de doi regiștri independenți sub o singură instrucție executat î ntr-un ciclu
program . Arhitectura ce rezultă din această structură este mult mai eficient din punct de vedere
a programării astfel rezultând un microcontroler CISC convențional de aproape 10 ori mai
rapid.
Atmega328 este un microcontroler ce face parte din familia CMOS , lucreaz ă cu 8 bi ți
bazat pe arhitectura AVR (conceput ă de corpora ția Atmel în 1996) RISC, la fel ca și modelele
ATmega48PA/88PA/168PA. AVR a fost una dintre familiile de microcontrolere care utiliza pe
chip, memorie flash pentru stocarea programelor spre deosebire de alte fami lii de
microcontrolere care de țineau memorii ce puteau fi programate doar o singura dat ă, la fabrica ție
cum ar fi memorii ROM, EPROM sau EEPROM.
Se poate spune c ă AVR este o modificare a arhitecturii Harvard în care programele și
datele sunt stocate pe me morii separate acestea figurând în spa ții de adrese diferite, dar având
posibilitatea citirii datelor din memorii utilizând instruc țiuni speciale. Microcontrolerul
ATmega328 de ține o unitate central ă de prelucrare AVR care combin ă un set bogat de
instruc țiuni cu 32 de registre de uz general de lucru .[25]
25
Figura 3.2.1 Microcontrolerul ATmega328P -PU 1
Termenul de RISC este frecvent întâlnit ă în literatura pentru calculatoare și se vor
explica câteva aspecte referitoare la acesta în rândurile urm ătoare. Arhit ectura Harvard este un
concept mai nou ce s -a născut din nevoia de m ărire a vitezei microcontrolerului, magistrala de
adrese și cea de date ale acestei arhitecturi fiind separate. În acest caz este posibil un mare debit
de date prin unitatea central ă de pr ocesare și totodat ă o vitez ă mai mare de lucru. Dac ă memoria
de date este separat ă de program este posibil ca mai departe instruc țiunile s ă nu trebuiasc ă să
fie cuvinte de 8 bi ți.
Deasemenea este ceva obi șnuit ca o arhitectur ă Harvard s ă aibă mai pu ține instruc țiuni
decât arhitectura von-Neumann și să aibă în general, instruc țiuni executate într-un ciclu.
Microcontrolerele cu arhitectur ă Harvard sunt numite și microcontrolere RISC ( Reduced
Instruction Set Computer) . Faptul c ă Atmega328 este un microcontrol er RISC ne arat ă că acesta
are un set redus de instruc țiuni.
Prin executarea unor instruc țiuni precise într-un singur ciclu de tact, Atmega328
realizeaz ă un transfer care se apropie de 1 MIPS per MHz, permi țând proiectantului sistemului
să optimizeze consu mul de energie raportat la viteza de procesare.
Toate cele 32 de registre sunt conectate direct la ALU (unitatea aritmetico -logic ă) care
permite ca dou ă registre independente s ă fie accesate printr -o singur ă instruc țiune executat ă
într-un ciclu de tact. Ar hitectura rezultat ă este mai eficient ă în codificare din moment ce rata de
transfer este de pân ă la 10 ori mai mare ca și la microcontrolerele CISC conven ționale .
1 http://ktechnics.com/shop/atmega328p -pu/
26
Microcontrolerul Atmega328P prezint ă următoarele caracteristici: 8/K octeți de
memorie In-System-Programmable Flash cu, capacit ăți Read -While -Write , 1K bytes memorie
EEPROM, 2K bytes memorie SRAM, 23 de linii I/O pentru scopuri generale, 32 de registre de
lucru, 3 Timer/Counter (temporizatoare/num ărătoare) cu capacitate de comparare, întreruperi
interne și externe, USART serial programabil, interfa ță serial ă, port serial SPI, ADC cu 6 canale
și 10 bi ți ( cu 8 canale în pachete TQFP și QFN/MLF), temporizator Watchdog programabil cu
oscilator intern și 5 moduri de econom isire selectabile a consumulu i de energie.
Func ționarea unității centrale de prelucrare poate fi oprit ă prin modul Idle, în timp ce
memoria SRAM, temporizatoarele/ counter -ele, USART, interfa ța serial ă, portul SPI și sistemul
de întreruperi pot func ționa normal.
Modul Power -down salvează conținutul registrelor, „ înghea ță” (oprește ) oscilatorul
dezactivând toate celelalte func ții ale c hip-ului pân ă la urm ătoarea întrerupere sau resetare
hardware.
În modul Power -save (economisire a energiei) temporizatorul asincron continu ă să
funcționeze, permi țând utilizatorului s ă mențină o eviden ță a timpului în timp ce alte dispozitive
sunt inactive .
Modul de reducere ADC al zgomotului oprește unitatea central ă de procesare și
modulele I/O cu excep ția temporizatorului asincron, pentru ca s ă minimiz eze zgomotul cât timp
dureaz ă conversia ADC. În modul standby, oscilatorul func ționeaz ă în timp ce alte dispozitive
sunt inactive, permi țând astfel o pornire rapid ă a microcontrolerului cu un consum de energie
scăzut.
Microcontrolerul este fabricat utilizâ nd tehnologia de memorie non -volatil ă Atmel de
nivel ridicat. Memoria On-chip ISP Flash permite ca memoria de programe s ă poată fi
reprogramat ă In-System prin interfa ța serial ă SPI de c ătre un programator de memorie
conven țional ă non-volatil ă (reprogramab ilă) sau de un program de „boo tare” (bootloader ) on-
chip rulat pe CPU. Acesta poate utiliza orice interfa ță pentru a desc ărca aplica ția-program în
Application Flash Memory .
Combinând o unitate central ă de procesare (CPU) RISC pe 8 bi ți cu un In-System
autoprogramabil Flash, ATmega328 poate fi descris ca un microcontroler puternic care ofer ă
soluții extrem de eficiente și flexibile pentru mai multe aplica ții de control ș i pentru aparatele
alimentate de la baterie din cauza consumului s ău mic.
Diagrama bloc a microcontrolerului este afișat în A nexa1 iar diagrama pinilor în Anexa2
27
3.3 Microcontrolerul ATtiny85
În capitolul anterior am ex plicat ce beneficii are un microcontroler AVR îmbunătățit cu
arhitectura RISC. Astfel putem spune că și microcontrolerul ATtin y85 beneficiază de acești
trăsături, fiind un microcontroler care face parte din familia CMOS , luc rând pe 8 biți și este
bazat pe arhitectura AVR RISC, la fel ca și modelele ATtiny25/45.
Faptul c ă ATtiny85 este un microcontroler RISC ne arat ă că acesta a re un set redus de
instruc țiuni dar foarte necesare și utile . Prin executarea unor instruc țiuni precise într-un singur
ciclu de tact, A Ttiny85 realizeaz ă un transfer care se apropie de 1 MIPS per MHz, permi țând
proiectantului sistemului s ă optimizeze consu mul de energie raportat la viteza de procesare.
Nucleul AVR combină un set de instrucțiuni bogat pe 32 de registre generale accesabile.
Toate cele 32 de registre sunt conectate direct la ALU (unitatea aritmetico -logic ă) care permite
ca dou ă registre indepe ndente s ă fie accesate printr -o singur ă instruc țiune executat ă într-un ciclu
de tact. Arhitectura rezultat ă este mai eficient ă în codificare din moment ce rata de transfer este
de pân ă la 10 ori mai mare ca și la microcontrolerele CISC conven ționale.
Micro controlerul ATtiny85 prezintă următoarele caracteristici: memorie de tip ” In-
System Programmable Flash ” de 8K bytes , memorie EEPROM de 512 bytes , 256 bytes
memorie SRAM, 6 linii de intrare -ieșire cu scopuri generale, 32 de regiștri pentru uz general,
un singur Timer/Counter (temporizator/numărător) pe 8 biți cu mod de comparare și încă unu,
tot pe 8 biți dar de mare viteză, interfață universală serială, întreruperi interne și externe,
convertor analog -numeric pe 10 biți în 4 canale, temporizator programabil Watchdog cu
oscilator intern și 3 moduri de econom isire selectabile a consumului de energie .
Modul Idle oprește pe CPU (unitatea centrală de prelucrare) lăsând pe SRAM,
temporizatoarele/numărătoarele, convertoarele analog -numerice, comparatoarele analogi ce și
sistemul de întreruperi să funcționeze în continuare.
Modul Power -down salvează conținutul registrelor, oprind funcționalitatea întregului
controlerului pân ă la următoarea întrerupere sau până la o resetare hardware.
Modul de reducere zgomot la ADC oprește Unitatea Centrală de Prelucrare și toate
modulele de intrare -ieșire pentru minimizarea zgomotelor respectiv perturbațiilor în timpul
conversiei analog -numeric. [26]
Microcontrolerul este echipat de memori a non-volatil ă Atmel de nivel ridicat. Memor ia
On-chip ISP Flash permite ca memoria de programe s ă poată fi reprogramat ă In-System prin
interfa ța serial ă SPI de c ătre un programator de memorie conven țional ă non-volatil ă
28
(reprogramabil ă) sau de un program de „boo tare” (bootloader ) on-chip rulat pe CPU . Acesta
poate utiliza orice interfa ță pentru a desc ărca aplica ția-program în Application Flash Memory .
Acest mic rocontroler din cauza că necesită resurse puține este de ajuns de a folosi în
cadrul proiectului cu rol ul de a genera semnalele de întrerupere către celălalt microcontroler în
fiecare 20 de milisecunde.
Diagrama bloc a microcontrolerului este afișat în Anexa3 iar diagrama pinilor în Anexa4
3.4 Interfața de dezvoltare Visual Micro
Visual Micro este un așa -numit extensie pentru Microsoft Visual St udio 2008 -2015 și
pentru Atmel Studio, care dă posibilitatea ca orice proiect Arduino să poate fi dezvoltat,
compilat și după aceasta încărcat pe orice Arduino în timp ce ia caracteristicile foarte
avantajoase de la Visual Studio sau Atmel Studio.
Această interfață de dezvoltare este compatibil total cu mediul de dezvoltare Arduino și
folosește aceeași librării, același cod sursă și același instrumente de dezvoltare.
Diferența între Arduino IDE și Visual Micro se află în interfață. Astfel cel din urmă
oferind un mediu de dezvoltare mai avansată și profesională și permite o dezvoltare mai
avansată și mai ușoară decât Arduino IDE actuală.
În descriere, până acuma, am folosit de mai multe ori termenul ”IDE”. Acesta este un
termen standardizat în industrie și c eea ce înseamnă este un Mediu de Dezvoltare Integrat
(Integrated Development Environment ). Aceasta este o aplicație software care încorporează un
editor de cod sursă și construiește uneltele, instrumentele ca și un compilator și un sistem de
depanare (debu gging system ). Această aplicație software IDE este folosit pentru a scrie, edita,
construi și testa aplicația scrisă. În timp ce IDE -ul lui Arduino oferă un IDE de nivel inițial de
bază, Visual Micro împreună cu Microsoft Visual Studio sau Atmel Studio (de pinde în care
mediu folosim extensia) oferă un IDE îmbunătățit și mai funcțional. [27]
Modulul de instrumente GCC constă în toate instrumentele care rulează în spate
(background) dacă selectăm comenzile ” build ” sau ” upload ”. Aceste instrumente sunt in
principal compilatorul GCC și linker -ul și in strumentul de încărcare (de obicei avrdude.exe).
Fiindcă lucrăm cu IDE, nu trebuie să lucrăm direct cu programele de unelte sau cu modulele
deoarece aceste sunt controlate de IDE în spate. Cu toate acestea modulul G CC este un set de
linii de comandă de programe independente (*.exe) care pot fi utilizați și fără IDE.
29
Driverul USB VCP ( Virtual Com Port ) este deasemenea furnizat de Arduino (în cazul
în care avem la dispoziție o placă Arduino) sau de producătorul plăcii și este responsabil pentru
comunicarea dintre placa utilizată și calculator PC.
În figura 3.4.a este prezentat cum arată mediul de dezvoltare fără Visual Studio / Atmel
Studio, deci ce ne oferă furnizorul de hardware Arduino. Astfel putem vedea, că avem un IDE
făcut de Arduino pentru compilare, modul care ajută la compilare și la încărcarea fișierului și
driverul care va ajuta pe calculatorul nostru să comunice cu microcontroler.
În figura 3.4.b se vede foarte bine, care este diferența între mediul de dezvoltare dintre
Arduino IDE și Visual Micro astfel putem aștepta multe diferențe și între interfața de
dezvoltare. Așa cum reiese de pe figură și cum este exprimat și mai sus, utilizând pe Visual
Micro, aceasta va înlocui IDE -ul nostru original, care nu va fi dezinstalat și vom putea folosi în
cazul în care o să mai avem nevoie de el. Visual Micro este numit ca și extensie pentru că se
integrează în Vis ual Studio sau Atmel Studio și adaugă funcții noi pentru acești medii de
programare, permițând astfel programarea altor plăci. În acest caz modulul GCC Toolchain și
driverul VCP va rămâne la fel și nemodificat, doar că în acest caz, va fi controlat de Visu al
Micro nu de IDE -ul original. [28]
Figura 3.4.a Mediul de dezvoltare Arduino
IDE[28]
Figura 3.4.b Mediul de dezvoltare Visual
Micro[28]
30
3.4.1 Instalarea extensiei Visual Micro
Pentru a putea folosi extensia Visual Micro, avem nevoie de un mediu de programare
Visual Studio sau Atmel Studio, care ne va oferi un IDE performant pentru compilarea codului.
Având mai multă experiență în programare, eu am avut instalat deja mediul Visual Studio
Community 2015, cu care am mai făcut aplicații, precum și aplicația pentru comandarea
robotului din cadrul proiectului. Acest mediu de programare este compatibil cu Visu al Micro și
la asta pot să adaug/instalez ex tensia respectivă.
Instalarea extensiei se va începe cu descărcarea lui de pe pagina
https://marketplace. visualstudio.com/items?itemName=VisualMicro.ArduinoIDEforVisualStu
dio. După ce am salvat fișierul, cu dublu click îl instalăm. Asta nu necesită pricepere, trebuie
să dăm click pe next și la sfârșit pe finish . Partea mai grea urmează doar după aceasta, cân d
trebuie configurat în Visual Studio.
Dacă am instalat pentru prima dată, fereastra ”Configuration Manager”, unde putem
configura sistemul nostru. Visual Micro trebuie să știe versiunea și locația, unde aplicația
Arduino IDE era instalat mai înainte., sa u alte aplicații care au IDE similare , cum sunt și
mpIDE, Energia sau Wiring .
Figura 3.4.1.1 Fereastra ” Configuration Manager ” [29]
31
În figura de mai sus este prezentat f ereastra Configuration Manager . Pe figură sunt
numerotate următoarele căsuțele în care trebuie specificat :
1. Tipul și versiune a IDE instalat.
2. Locația mapei (Folderului) unde IDE a fost instalat
3. Dacă până acuma nu am descărcat nici un IDE, extensia ne oferă soluția să îl
descărcăm și să -l instalăm acuma
4. Cele marcate cu acest număr sunt setări o pționale pentru cei mai avansați și nu
necesită să le completăm la instalarea inițială . Sketchbook location specifică locația unde Visual
Micro se va căuta după librăriile utilizatorului. Se recomandă să lăsăm liber, că atunci extensia
va utiliza locația I DE-ului original.
Dacă am trecut peste acești pași, înseamnă că am terminat instalarea și am configurat
setările, astfel sistemul nostru este pregătit pentru a fi utilizat. [29]
În cazul în care lucrăm cu plăci diferite, probabil vom fi obligați să lucrăm cu un alt
IDE, sau și în cazul în care avem mai de a folosi multe versiuni de Arduino IDE, suntem obligați
să le instalăm acești IDE. Cele instalate vor fi cuprinse într -o listă, ce vom putea găsi pe
toolboxul extensiei Visual Micro, de unde pe urmă putem selecta pe ori care dorim să folosim.
Figura 3.4.1.2 Lista cu IDE instalate
În dreapta acestei listă găsim o altă listă și anume lista acelei plăci, pentru care IDE -ul
nostru poate să compileze codul sursă scrisă de noi. De aici vom selecta iarăși placa noastră.
Figura 3.4.1.3 Lista cu plăcile de dezvoltare cunoscute de IDE selectat
32
3.4.2 Programarea microcontrolerului ATmega328P -PU
Pentru a programa un microcontroler suntem nevoiți să c onectăm cumva la un calculator
cu care să se comunice. Pentru aceasta avem nevoie de un port deschis de comunicare atât pe
calculatorul nostru cât și în microcontroler. Sunt microcontrolere care au deja implementat
aceea funcție în care el poate comunica cu calculator direct conectând cu USB. Sunt
microcontrolere care au do ar o interfață serială având pinii RX ( Receive ) și TX (Transmit)
pentru a comunicare cu exterior, ceilalți care sunt un pic mai deștepți cunoaște și protocolul
USART, care acceptă programarea serială. La fel este dotat și microcontrolerul nostru
ATmega328P -PU.
Legătura între calculator PC și între microcontroler am realizat folosind un adaptor USB
– TTL având pe placa integratul CP2102. Acest integrat este un controler USB -UART care
ajută adaptarea semnalului RS -232 la protocolul cel mai frecvent folosit în zilele de azi USB.
Acest integrat cuprinde un controler complet de USB 2.0 cu viteză crescută, un transmițător –
receptor USB, un oscilator, EEPROM și o magistrală serială asincronă de date (UART) totul
într-o cutiuță de tip MLP -28 de dimensiuni 5 x 5 mm. [30]
Figura 3.4.2.1 Adaptorul CP2102
Interfața asincronă UART al adaptorului CP2102 pe lângă semnalele de date TX
(transmit) și RX ( receive ) mai știe să folosească și semnalele de control RTS/CTS,
DSR,/DTR, DCD și RI (X -On/X -Off handshake ). Această inter față permite o gamă largă de
formate de date și rate de transfer (Baud Rate).
33
Programarea microcontrolerului se face folosind acest adaptor. Conexiunea se face
după figura următoare:
Figura 3.4.2.2 Conectare ATmega328 la UART
Conexiunile sunt făcute pe p laca de dezvoltare, noi trebuie doar să conectăm adaptorul
CP2102 la calculator, folosind un cablu micro USB – USB. După conectare trebuie să
instalăm driver -ul adaptorului de pe pagina de web a producătorului2. Descărcăm și conform
sistemului de operare p e care îl folosim instalăm fișierul CP210xVCPInstaller_x64 pentru
sisteme cu 64 de biți sau CP210xVCPInstaller_x86 pentru sisteme cu 32 de biți. Driverul este
compatibil sistemele de operații Windows XP/Server2003/7/8/8.1/10 sau și cu alte le cum sunt
Linux , Android sau Macintosh OSX .
După instalare reconectăm adaptorul și verificăm la Device Manager numărul portului
serial pe care noi vom putea folosi în cadrul programării microcontrolerului sau la
comunicarea cu microcontroler.
Figura 3.4.2.3 Port serial CP2102
2 http://www.silabs.c om/products/development -tools/software/usb -to-uart-bridge -vcp-drivers
34
În cazul meu, cum se vede și pe figura 3.4.2.3 portul serial se află la COM15, astfel
înainte de a programa sau a comunica cu microcontroler trebuie să fie selectat ca port de
comunicare portul COM15.
Figura 3.4.2.4 Pașii pentru deschiderea proie ctului nou
Primul pas pentru programare este să d eschidem programul Visual Studio . Din bara de
sus alegem meniul File -> New -> Project.. . Ne va deschide fereastra 2 unde trebuie să
căutăm pe Visual Micro în Installed -> Templates -> Visual C++. Din secți a din dreapta vom
alege opțiunea Arduino Project. Mai rămâne să dăm un nume proiectului și să selectăm unde
dorim să salvăm, după care apăsând butonul OK, se va deschide fișierul programului.
Dacă cineva a mai lucrat în interfața Arduino va știe cum se luc rează, structura
programului și instrucțiunile fiind la fel, nu va avea dificultăți. Pentru ceilalți ofer să studieze
un pic cum anume se poate programa în Arduino, că restul va fi la fel.
Visual Micro
Numele fișierului
Arduino Project
Dosarul salvat
35
Un program de exemplu pentru clipirea (blinking ) unui LED este u rmătoarea:
// funcția setup este rulat o singură dată când pornim microcontrolerul sau î l resetăm
void setup() {
// inițializează LED-ul ce se regăsește pe orice placa Arduino
// conectat la pinul D13
pinMode( LED_BUILTIN , OUTPUT);
}
// funcția loop va rula tot tim pul pană când microcontrolerul este alimentat
void loop() {
digitalWrite( LED_BUILTIN , HIGH); // aprinde becul
delay(1000); // așteaptă o secundă
digitalWrite( LED_BUILTIN , LOW); // stinge becul
delay(1000); // așteaptă o secundă
}
Figura 3.4.2.5 Încărcarea programului pe microcontroler
După ce am scris programul din toolBox -ul de sus trebuie să selectăm IDE -ul pe care
vom folosi, în cazul nostru Arduino 1.6/1.8 placa de dezvoltare pe care o ut ilizăm. Noi având
doar microcontrolerul, nu avem nici o placă iar prin documentație3 știu că placa Arduino Uno
folosește tot acest tip de microcontroler. Așa că în continuare voi alege placa Arduino /
Genui no Uno și portul serial COM 15. Ca să ne verificăm dacă codul sursă este corect scris și
nu avem greșeli de implementare apăsăm buton Compilare (Figura 3.4.2.5). Dacă totul este în
regulă și nu avem greșeli sau le -am corectat putem încărca programul în microcontroler
apăsând butonul de Încărcare (Figura 3. 4.2.5)
Astfel parcurgând acești pași, putem încărca orice program scris pe microcontrolerul
ATmega328P într -un limbaj foarte asemănător cu C++ în același mod cum am programa în
interfața Arduino. Motivul pentru care eu am ales totuși această interfață , Vis ual Micro, este
că programul rulează mai ușor, compilatorul fiind mai optimizat față de interfața Arduino.
3 https://www.arduino.cc/en/main/arduinoBoardUno
Compilare
Compilare și încărcare
36
3.4.3 Programarea microcontrolerului ATtiny85
Programarea microcontrolerului ATtiny85 seamănă cu programarea celuilalt
microcontroler , dar nu este l a fel. La acest microcontroler lipsesc pinii de date RX și TX așa că
nu putem folosi în mod direct adaptorul CP2102 pentru programarea lui, astfel vom avea nevoie
de un programator ISP care programează microcontrolerele prin pinii MISO, MOSI și SCK.
Acest tip de programator se numește USBI SP/USBISP .
Un programator USBASP se poate găsi de la 10 -20 lei în sus la noi , dar dacă nu vom
mai folosi, de ce să cheltuim și la asta, dacă putem să facem noi unu? În capitolul 3.4.2 am
prezentat cum anume se poate prog rama un microcontroler ATmega328P simplu printr -un
adaptor. Am căutat pe internet și am găsit un mod în care putem să convertim acest
microcontroler astfel încât să funcționeze ca un programator ISP. Dacă am avea pe asta am
putea să programez pe ATtiny85 c u ajutorului unui microcontroler ATmega328 pe care îl
cunoaștem deja.
Primul lucru este să modific atunci pe ATmega328 să funcționeze ca și un programator.
Pentru asta urmărim pașii de programare din capitolul 3.4.2, iar de data asta vom încărca
programul ArduinoISP , pe care se poate găsi pe următoarea pagină web:
https://github.com/rsbohn/ArduinoISP/blob/master/ArduinoISP/ArduinoISP.ino Copiem codul
sursă de aici și lipim în Visual Micr o și încărcăm programul pe microcontroler.
Cu ajutorul interfeței Arduino IDE trebuie să descărcăm modulul care compilează
programul realizat pe microcontrolerul ATtinyXX. Pentru asta deschidem interfața Arduino și
intrăm în File -> Preferences unde la lista „ Addition Boards Manager URLs ” adăugăm textul4
Figura 3.4.3.1 Adăugare site de sincronizare pentru plăci cunoscute
4https://raw.githubusercontent.com/damellis/attiny/ide -1.6.x -boards -manager/package_damellis_attiny_index.json
37
cu linkul care conține informații despre modul de descărcare a compilatorului. Dăm click pe
butonul OK și mergem la meniu Tools ->Board ->Boards manager… unde se va deschide o
fereastră cu plăcile deja cunoscute. Din lista Type alegem „ Contributed ”. Din lista filtrată
3.4.3.2 Lista cu plăci cunoscute
obținută alegem pe attiny by David A. Mellis și îl instalăm, după care cu Close închidem
fereastra . Până aici avem un microcontroler pregătit pentru programare și un alt microcontroler
care urmează a fi programat. Rămâne să le conectăm între ele și să programăm pe ATtiny85.
3.4.3.3 Schema de principiu a conectării ATtin y85 la ATmega328
Am realizat schema de mai sus conectând ATtiny85 la ATmega328 cu următoarele pini:
VCC – 5V; GND – GND; Pin 2 – Pin 13; Pin 1 – Pin 12; Pin 0 – Pin 11; RESET – Pin 10; și
un condensator la ATmega328P de 10uF între RESET și GND.
VCC
38
După ce am realizat conexiunile, deschidem interfața Arduino IDE, în care vom scrie
codul sursă. Un exemplu și aici este clipirea ( blinking ) a unui LED:
#define LED_BUILTIN 0 //pentru ATtiny85 ledul se află la pinul 0
// funcția setup este rulat o singură dată când pornim microcontrolerul sau î l resetăm
void setup() {
// inițializează LED-ul ce se regăsește pe orice placa Arduino
// conectat la pinul D13
pinMode( LED_BUILTIN , OUTPUT);
}
// funcția loop va rula tot tim pul pană când microcontrolerul este alimentat
void loop() {
digitalWrite( LED_BUILTIN , HIGH); // aprinde becul
delay(1000); // așteaptă o secundă
digitalWrite( LED_BUILTIN , LOW); // stinge becul
delay(1000); // așteaptă o secundă
}
După ce am scris co dul sursă alegem compilatorul (placa) conform figurii 3.4.3.4. Acest
meniu se găsește la Tools -> Board și alegem
ATtiny25/45/85 de pe listă. Așa vom avea alte opțiuni de
selectat și anume Procesorul . Aici vom selecta pe
ATtiny85 că pe asta dorim să -l programăm. Mai jos avem
un Clock , unde după cum dorim noi selectăm frecvența.
Atenție, să fie selectat Internal și nu External ! Ultimul
este folosit în cazul în care tacul va da un oscilator extern.
Selectăm portul COM15 și la Programmer selectăm pe
ArduinoIS P, astfel zicem compilatorului tipul
programatorului. Un sfat bun este ca înainte de a
programa să alegem și opțiunea Burn Bootloader , pentru
a modifica setările microcontrolerului referitor la
frecvența și modul de lucru. După ce am setat totul
urmează programarea în sine utilizând funcția Sketch -> Upload Using Programmer . Dacă totul
am făcut bine, la sfârșit primim mesajul de confirmare „ Done !”
3.4.3.4 Setările din meniul Tools
39
3.5 Realizarea plă cii de dezvoltare pentru comanda robotului
Desenul sau numit layoutul am realizat folosi nd programul Altium Designer 17 [17].
Acest program ne ajută să realizăm orice placă PCB. Pornind de la schema electrică putem să
ajungem rapid la vizualizarea în 3D a plăcii proiectat. Etapele de proiectare se încep cu
realizarea schemei electrice. Aici a dăugăm fiecare c omponent în parte și le conectăm, virtual,
trasând firele între ele . După ce am terminat, și am obținut schema electrică ce vom folosi în
continuare, trebuie actualizat aparițiile componentelor folosind comanda Annotate (Adnotare)
din meniu l Tools -> Annotation -> Annotate Schematics Quietly . Această funcție identifică
componentele într -un mod unic, atribuind referințe unice de componente la fiecare componentă
din proiect. Astfel fiecare element în parte primește un cod unic în proiect. Prog ramul va
identifica fiecare component, după acest cod pentru a evita confuzia între elemente.
Schema electrică fiind gata și adnotat, urmează să adăugăm componentele pe placa
virtuală. Aceasta se face utilizând funcția Update PCB Document, din meniul Desi gn -> Update
PCB Document <nume fișier>. După ce am dat click, va apărea o fereastră cu toate traseele
posibile respectiv toate componentele folosite. Pe această fereastră, jos, vom găsi două butoane:
Validate și Executate. Vom apăsa în această ordine, tim p în care programul își verifică toate
componentele și le trasează între ele cu o linie întreruptă pentru a ajuta munca noastră în
continuare. Se va deschide fereastra cu placa noastră, și lângă ea sunt puse toate componentele.
Urmează deci să facem puțină ordine și să le punem la loc, așa cum dorim să fie așezați. După
ce am făcut și această etapă, să desenăm traseele, așa cum vor ieși și pe placă. Pentru aceasta,
programul ni le oferă opțiunea de trasare automată, ceea ce este o opțiune foarte bună, dar n u
este garantat că reușește să le traseze mai ales la un proiect mai complicat. Așa că este mai bine
să le trasăm noi, manual, că va ieși mult mai clar pentru noi și e mai posibil că evităm unele
greșeli ce pot apărea în timpul trasării automate.
După ce a m realizat traseele și am salvat documentul, urmează să listăm schema.
Listarea se face pe orice foaie cu o imprimantă laser. Eu prefer să listez pe o foaie lucioasă
(cerată) și reglez imprimanta să listeze cât mai închis, ca să intră cât mai multă ”cernea lă” (toner
topit) pe foaie.
Observația este că partea cu traseele trebuie printat cu ”citire din dreapta” iar textul
trebuie printat oglindit (invers, verso).
40
Urmează să o curățăm partea de cupru a plăcii. Astfel luăm o bucățică de hârtie abrazivă
cu duri tatea de 400 -500 și se șlefuiește placa ușor, pe direcția diagonalelor pe sensuri opuse.
După aceea o curățăm cât mai bine posibil cu acetonă sau cu alcool pe un prosop de hârtie.
Trebuie să fim atenți la petele de grăsimi, care sunt contra noastră la rea lizare.
Placa fiind curățată, urmează să punem foaia listată cu fața în jos pe placă, deci partea
printată a foii să fie pe parte de cupru a plăcii, și îndoim foaia ca să nu se miște peste placă.
Între timp pregătim și fierul de călcat, pe care îl încălzi m aproape la maxim. Punem o foaie albă
curată între placă și fierul de calcat ca să îl protejăm, după care îl aplicăm apăsând puternic în
jos și încercăm să nu glisăm , pentru că stratul de suprafață din plastic al hârtiei lucioase se va
topi instantaneu, f ormând un strat temporar alunecos. După câteva minute putem mișca fierul
de călcat încet până când întreaga placă este acoperită. Timpul total de călcare este de
aproximativ 5 -10 minute .
Acuma punem placa imediat într -o tavă cu apă fierbinte timp de vreo 15 minute. O parte
din hârtie va începe să iasă imediat. Trebuie să înlăturăm orice hârtie rămasă de pe placă, având
grijă la trasee, deci să nu încercăm să depărtăm cu unghiile. Aproximativ peste 20 de minute
traseele vor fi clare. Cazul în care urmele su nt încurcate în orice fel, putem curăța tonerul topit
cu acetonă și începem de la început cu curățarea plăcii, sau dacă nu este așa de grav, putem
corecta cu un marker permanent.
Urmează partea riscantă în realizarea plăcii PCB, că trebuie să punem placa î ntr-un
container din plastic, umplut cu o soluție corozivă, în cazul nostru în clorură ferică. Să nu lăsăm
soluția să ajungă pe nici un obiect din metal sau pe corp omenesc. Lăsăm placa în clorură până
când iese cuprul nedorit de pe ea. În funcție de stare a clorurei, aceasta poate dura și 15 -20 de
minute, iar putem ajuta să iasă mai repede mișcând un pic în soluție. Trebuie să fiim atenți să
nu lăsăm prea mult timp în soluție, că în acest caz s -ar putea să scoate și ceea ce nu ar trebui.
Ștergem tonerul răm as de pe suprafața cu cupru cu acetonă și ne va rămâne doar partea lucioasă
a traseelor. După aceasta putem găuri locurile lăsate pentru componente cu burghiu de 0.5 mm
sau 0.7 mm sau la cât am fixat noi. După ce am găurit toate găurile, a rămas doar să li pim toate
componentele pe placă și să încercăm cu un test, dacă am proiectat corect sau dacă sunt undeva
greșeli. [18]
Urmărind instrucțiunile de mai sus am realizat și eu placa mea de dezvoltare pentru
acest proiect. Schema electrică a plăcii se regăsește în Anexa 5. Tabelul următor reprezintă
componentele electrice utilizate pe schema electrică.
41
Tabelul 3. 5.1 Tabelul componentelor
Codul
componentelor Tipul componentelor Semnificație Valoarea
C1 Condensator ceramic 22 pF
C2 Condensator ceramic 22 pF
C3 Condensator ceramic 100 nF
C4 Condensator ceramic 100 nF
C5 Condensator ceramic 100 nF
C6 Condensator ceramic 100 nF
D1 LED 5 mm Placă alimentată Roșu
D2 LED 5 mm Permite generare tact Roșu
D3 LED 5 mm Tact Galben
D4 Bridge –
P1 Șir pini mamă A0,A1,A2,A3,A4,A5 6 pini
P2 Șir pini mamă RX,TX,D2,D3,D4 5 pini
P3 Șir pini tată P0, P1 2 pini
P4 Șir pini tată Alimentare motor 5V 6 pini
P5 Șir pini tată GND motor 6 pini
P6 Șir pini mamă D9,D10,D11,D12,D13 5 pini
P7 Șir pini tată Comandă motor 6 pini
P8 Pin tată DTR 1 pini
P9 Pin tată Pornire sursă alimentare
P12 Șir pini tată GND, GND, 5V, 5V 4 pini
P13 Șir pini mamă D5, D6, D7, D8 4 pini
Power ATX Soclu conector MOLEX Sursă de alimentare 24 pini
R1 Rezistentă 1/4W 10 KΩ
R2 Rezistentă 1/4W 1 KΩ
R3 Rezistentă 1/4W 1 KΩ
R4 Rezistentă 1/4W 1 KΩ
R5 Rezistentă 1/4W 1 KΩ
R6 Rezistentă 1/4W 1 KΩ
S1 Buton Buton Reset On/Off
U1 Microprocesor ATtiny85 -20PU 16.5 MHz
U2 Microprocesor ATmega328P -PU 16 MHz
Y1 Cristal cu cuarț 16 MHz
42
Pentru schema electrică de mai sus am obținu t placa cu traseele din figura 3.5 .2.
Figura 3.5.2 Traseele plăcii de dezvoltare (2D și 3D)
După obținerea plăcii virtuale, am listat schema cu trasee cu imprimanta HP LaserJet
Pro MFP M26a pe o hârtie lucioasă .
Figura 3.5.3 Placa la început Figura 3.5.4 Placa după ce am curățat
43
Am curățat placa cu hârtie abrazivă de 400 după care am ș ters frumos cu acetonă
(figura 3 .5.4). Placa curățată fiind pregătită, am pus cu fața în jos pe partea din cupru al plăcii,
pe care după asta am pus fierul de calcat, încălzit la maxim, figura 3.5.5
Figura 3.5.5 Aplicarea fierului de călcat
După 7 -8 minute am scos placa de su b fierul de călcat și am pus într -o tavă umplută cu
apă fierbinte, unde am scos atent hârtia de pe placă fără să îl zgâriez, obținând astfel placa cu
traseele cu toner topit pe ea, care o să protejeze partea de cupru de la soluția de corodare (figura
3.5.6 -(1)). După asta , am pus placa în soluția numită clorură ferică, pentru a scoate cuprul de
pe dinafara traseului (2). Am legat cu o sârmă ca să pot să scot mai ușor și cu care în tim p ce
este băgat în soluție, pot să -l mișc. Mișcarea aceasta ajută cuprul să se dezlipească mai ușor .
Trebuie să fiim atenți să nu lăsăm prea mult timp în soluție -acid, că după un timp avem șansa
că se dezlipește și ce nu am dori. După ce am văzut că a rămas doar traseul (cel mult 16 minute),
am scos placa din soluție, având grijă să nu ating soluția cu mână , altfel lasă urme grave în
piele . L-am spălat la c hiuvetă, după care am curățat iarăși cu acetonă (3) ca să scap de tonerul
lipit și să văd doar cuprul rămas . Rezultatul se vede pe figura 3.5.6 , unde pe lângă pașii explicate
mai de sus, este afișat placa finală (4), care conține doar circuitele proiectate anterior.
44
Figura 3.5.6 Pașii de corodare a plăcii
Am obținut placa, urmează deci găurirea locurilor. Pentru aceasta avem nevoie de un
burghiu c u diagonală de 1 mm pentru fiecare component, cu excepția mufei ATX de alimentare,
unde avem nevoie de un burghiu de 1.5 mm. (figura 3.5.7 )
Figura 3.5.7 Găurirea circuitului
După ce toate găurile sunt disponibile, urmează lipirea componentelor pe p lacă. Este
ultimul pas pentru obținerea plăcii circuitului. După ce am terminat și cu asta, urmează să le
legăm firele fiecare la locul lui , care sunt necesare pentru controlarea robotului, respectiv
45
motorașele robotului . După ce suntem gata și cu asta (fi gura 2.3.7) va urma partea de test, când
în primul punem placa sub tensiune, conectând sursa exterioară la rețea, după care conectăm
placa la calculator, pornim aplicația RobotArm și după ce am făcut conexiunea cu placa
(capitolul 4.3) și am setat conexiun ile (capitolul 4.4) încercăm să dăm comenzi robotului. Dacă
am lucrat bine, robotul va executa cerințele noastre și va aștepta să îl comandăm.
Figura 2.3.7 Placa realizată sub tensiune și conectată la robot
46
Capitolul 4. Proiectarea p rogramul ui de interfață PC
4.1 Mediul de dezvoltare Visual Studio – Windows Form
4.2 Instalarea programului
4.3 Conectare la placa de dezvoltare
4.4. Se tarea legăturilor de pe placă respectiv parametrilor de control
4.5 Comandarea articulațiilor
4.6 Programarea ro botului
47
Bibliografie
[1] Mihaiela Iliescu , Istoria și Filosofia roboților industriali , 2016
[2] Needham, Joseph (1991). Science and Civilization in China: Volume 2, History of
Scientific Thought. Cambridge University Press. ISBN 0 –521-05800 –7
[3] http://blog.salvius.org/2014/01/a -history -of-robotics -yan-shi-artificer.html
[4] https://en.wikipedia.org/wiki/Su_Song
[5] William G odwin (1876). „Lives of the Necromancers”
[6] http://kerrykirsch.com/History -Iron_Hand.html
[7] http://spectrum.ieee.org/automaton/robotics/industrial -robots/george -devol -a-life-
devoted -to-invention -and-robots
[8] https://www.used -robots.com/education /the-history -of-industrial -robots
[9] http://yamaho.eu/files/roboti.pdf
[10] https://cdn.sparkfun.com/assets/learn_tutorials/5/2 /6/servo -guts_1.jpg
[11] https://cdn.sparkfun.com/assets/learn_tutorials/5/2/6/servo -samples.jpg
[12] http://i mg.dxcdn.com/productimages/sku_148051_4.jpg
[13] https://c2.staticflickr.com/6/5472/31084586086_90cf3e51e9_o.jpg
[14] https://a rduino -info.wikispaces.com/Servos
[15] https://learn.sparkfun.com/tutorials/hobby -servo -tutorial
[16] https://ebldc.com/?p=48
[17] http://www.altium.com
[18] http://www.apcc.tk/diy -projects/diy -pcb
[19] http://www.robotshop.com/media/files/pdf/hs645mg.pdf
[20] http://www.swarthmore.edu/NatSci/ceverba1/Class/e5/E5Lab2/Servo%20Hite
c%20HS -475hb%20spec.pdf
[21] zeus.nyf.hu/~elat/Elir1/Szervomotorok.doc
[22] http://kecskemetircmodell.blog.hu/2011/03/22/hogyan_mukodnek_a_szervok
[23] http://www.sc ritub.com/stiinta/informatica/Notiunea -de-microcontroller –
De95575.php
48
[24] Liviu Kreindler, Răducu Giuclea, „Bazele Microprocesoarelor”, 1998
București, MATRIX ROM
[25] http://www.atmel.com/Images/Atmel -42735 -8-bit-AVR -Microcontroller –
ATmega328 -328P_Datasheet.pdf
[26] http://www.atmel.com/imag es/atmel -2586 -avr-8-bit-microcontroller -attiny25 –
attiny45 -attiny85_datasheet.pdf
[27] http://www.visualmicro.com/page/User –
Guide.aspx?doc=what_is_visual_micro.html
[28] http://www.visualmicro.com/page/User -Guide.aspx?doc=How -The-Tools –
Play-Together.html
[29] http://www.visualmicro.com/page/User -Guide.aspx?doc=First -steps.html
[30] https://www.sparkfun.com/datasheets/IC/cp2102.pdf
49
Anexa 1. Diagrama bloc pentru microcontrolerul ATmega328p -PU
50
Anexa 2. Diagrama pinilor pentru microcontrolerul ATmega 328P -PU
51
Anexa 3. Diagrama bloc pentru microcontrolerul AT tiny85
52
Anexa 4 . Diagrama pinilor pentru microcontrolerul AT tiny85
53
Anexa 5 . Schema electrică a circuitului de control RobotArm
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: PROGRAMUL DE STUDIU AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ FORMA DE ÎNVĂȚĂMÂNT LA ZI Proiect de diplomă COORDONATOR ȘTIINȚIFIC Conf. dr. ing. Barabá s… [608425] (ID: 608425)
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.
