licenta
Post on 30-Oct-2015
1.189 Views
Preview:
TRANSCRIPT
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 1/69
CONSTRUCŢIA UNUI ROBOT MOBIL CU KIT
ARDUINO
Capitolul 1: Introducere1.1 Introducere în Mectronică
Fig. 1.1 Conceptul de mecatronică
Termenul "mecatronică" a fost utilizat pentru prima dată în anul 1975 de către
concernul japonez Yaskawa Electric Corporation , fiind o prescurtare a cuvintelor Mechanica-Electronica-Informatica.
La început, mecatronica a fost inţeleasă ca o completare a componentelor mecanicii de
precizie, aparatul de fotografiat cu bliţ fiind un exemplu clasic de aplicaţie mecatronică. Cu
timpul, noţiunea de mecatronică şi-a schimbat sensul şi şi-a extins aria de definiţie:
mecatronica a devenit ştiinţa inginerească bazată pe disciplinele clasice ale construcţiei de
maşini, electrotehnicii, electronicii şi informaticii. Scopul acestei ştiinţe este îmbunătăţirea
funcţionalităţii utilajelor şi sistemelor tehnice prin unirea disciplinelor componente într-un tot
unitar.
Totuşi, mecatronica nu este acelaşi lucru cu automatica sau cu automatizarea
producţiei. Aceştia sunt termeni care apar şi în afara domeniului MECATRONIC, dar sunt şi
inclusi în el. Mecatronica poate fi definită ca o concepţie inovatoare a tehnicii de automatizare
pentru nevoile ingineriei şi educaţiei.
1
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 2/69
Mecatronica s-a nascut ca tehnologie şi a devenit filosofie care s-a răspândit în întreaga
lume. În ultimi ani, mecatronica este definită simplu: ştiinţa maşinilor inteligente.
Ca o concluzie, se poate spune că mecatronica este o sferă interdisciplinară a ştiinţei şi
tehnicii care se ocupă în general de problemele mecanicii, electronicii şi informaticii. Totuşi,
în ea sunt incluse mai multe domenii, care formează baza mecatronicii, şi care acoperă multe
discipline cunoscute, cum ar fi: electrotehnica, energetica, tehnica de cifrare, tehnica
microprocesării informaţiei, tehnica reglării şi altele.
1.2 Introducere în Robotică
Fig. 1.2 Depozit automatizat
Unul din cele mai importante aspecte în evoluţia fiinţei umane este folosirea uneltelor
care să simplifice munca fizică. În această categorie se înscriu şi roboţii, ei ocupând totuşi o
poziţie privilegiată datorită complexităţii lor.
Noţiunea de robot datează de peste 4 mii de ani. Omul şi-a imaginat dispozitive
mecanizate, inteligente care să preia o parte însemnata din efortul fizic depus. Astfel a
construit jucării automate şi mecanisme inteligente sau şi-a imaginat roboţii în desene, cărţi,
filme "SF" etc.Revoluţia informatică a marcat saltul de la societatea industrializată la societatea
avansată informatizată generând un val de înnoiri în tehnologie şi în educaţie. Acest lucru a
dus şi la apariţia roboţilor.
Termenul "robot" a fost folosit in 1920 de cehul Karel Capek într-o piesă numită
"Robotul universal al lui Kossum". Ideea era simplă: omul face robotul după care robotul
2
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 3/69
ucide omul. Multe filme au continuat să arate că roboţii sunt maşinării dăunătoare şi
distrugătoare.
Revoluţia informatică a marcat saltul de la societatea industrializată la societatea
avansată informatizată generând un val de înnoiri în tehnologie şi în educaţie permiţând
realizarea de roboţi.
Roboţii oferă beneficii substanţiale muncitorilor, industriilor si implicit ţărilor. În
situaţia folosirii în scopuri paşnice, roboţii industriali pot influenţa pozitiv calitatea vieţii
oamenilor prin înlocuirea acestora în spaţii periculoase, cu condiţii de medii dăunătoare
omului, cu condiţii necunoscute de exploatare etc.
1.3 Introducere în microcontrolere
Circumstanţele în care ne găsim astăzi în domeniul microcontrolerelor şi-au avut
începuturile în dezvoltarea tehnologiei circuitelor integrate. Această dezvoltare a făcut posibilă
înmagazinarea a sute de mii de tranzistoare într-un singur cip. Aceasta a fost o premiză pentru
producţia de microprocesoare, şi primele calculatoare au fost făcute prin adăugarea
perifericelor ca memorie, linii intrare-ieşire, timer-i şi altele. Următoarea creştere a volumului
capsulei a dus la crearea circuitelor integrate. Aceste circuite integrate conţin atat procesorul
cât şi perifericele. Aşa s-a întamplat cum primul cip conţinând un microcalculator, sau ce va
deveni cunoscut mai târziu ca microcontroler a luat fiinţă.
1.3.1 Ce este un microcontroler?La modul general un controler ("controller" - un termen de origine anglo-saxonă, cu un
domeniu de cuprindere foarte larg) este, actualmente, o structură electronică destinată
controlului (destul de evident!) unui proces sau, mai general, unei interacţiuni caracteristice cu
mediul exterior, fără să fie necesară intervenţia operatorului uman. Primele controlere au fost
realizate în tehnologii pur analogice, folosind componente electronice discrete şi/sau
componente electromecanice (de exemplu relee). Cele care fac apel la tehnica numerică
modernă au fost realizate iniţial pe baza logicii cablate (cu circuite integrate numerice standard
SSI şi MSI ) şi a unei electronici analogice uneori complexe, motiv pentru care "străluceau"
prin dimensiuni mari, consum energetic pe măsură şi, nu de puţine ori, o fiabilitate care lăsa de
dorit.
Apariţia şi utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a
costurilor, dimensiunilor, consumului şi o îmbunătăţire a fiabilităţii. Există şi la ora actuală o
3
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 4/69
serie de astfel de controlere de calitate, realizate în jurul unor microprocesoare de uz general
cum ar fi Z80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.
Pe măsură ce procesul de miniaturizare a continuat, a fost posibil ca majoritatea
componentelor necesare realizării unei astfel de structuri să fie încorporate (integrate) la
nivelul unui singur microcircuit (cip). Astfel că un microcontroler ar putea fi descris ca fiind şi
o soluţie (nu în sens exhaustiv !) a problemei controlului cu ajutorul a (aproape) unui singur
circuit.
Legat de denumiri şi acronime utilizate, aşa cum un microprocesor de uz general este
desemnat prin MPU (MicroProcessor Unit), un microcontroler este, de regulă, desemnat ca
MCU, deşi semnificaţia iniţială a acestui acronim este MicroComputer Unit.
O definiţie, cu un sens foarte larg de cuprindere, ar fi aceea că un microcontroler
este un microcircuit care incorporează o unitate centrală (CPU) şi o memorie împreunăcu resurse care-i permit interacţiunea cu mediul exterior .
Resursele integrate la nivelul microcircuitului ar trebui să includă, cel puţin,
următoarele componente:
a. o unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem
b. o memorie locală tip ROM/PROM/EPROM/FLASH şi eventual una de tip RAM
c. un sistem de întreruperi
d. I/O - intrări/ieşiri numerice (de tip port paralel)
e. un port serial de tip asincron şi/sau sincron, programabil
f. un sistem de timere-temporizatoare/numărătoare programabile
Este posibil ca la acestea să fie adăugate, la un preţ de cost avantajos, caracteristici
specifice sarcinii de control care trebuie îndeplinite:
g. un sistem de conversie analog numerică (una sau mai multe intrari analogice)
h. un sistem de conversie numeric analogic şi/sau ieşiri PWM (cu modulare în durată)
i. un comparator analogic
j. o memorie de date nevolatilă de tip EEPROM
k. facilităţi suplimentare pentru sistemul de temporizare/numărare (captare şi
comparare)
l. un ceas de gardă (timer de tip watchdog)
m. facilităţi pentru optimizarea consumului propriu
4
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 5/69
Un microcontroler tipic mai are, la nivelul unităţii centrale, facilităţi de prelucrare a
informaţiei la nivel de bit, de acces direct şi uşor la intrări/ieşiri şi un mecanism de prelucrare
a întreruperilor rapid şi eficient.
Utilizarea unui microcontroler constituie o soluţie prin care se poate reduce
dramatic numărul componentelor electronice precum şi costul proiectării şi al
dezvoltării unui produs.
OBSERVAŢIE Utilizarea unui microcontroler, oricât de evoluat, nu elimină unele
componente ale interfeţei cu mediul exterior (atunci când ele sunt chiar necesare): subsisteme
de prelucrare analogică (amplificare, redresare, filtrare, protecţie-limitare), elemente pentru
realizarea izolării galvanice (optocuploare, transformatoare), elemente de comutaţie de putere
(tranzistoare de putere, relee electromecanice sau statice).
1.3.2 Unde sunt utilizate microcontrolerele?Toate aplicaţiile în care se utilizează microcontrolere fac parte din categoria aşa ziselor
sisteme încapsulate-integrate (“embedded systems”), la care existenţa unui sistem de calcul
incorporat este (aproape) transparentă pentru utilizator.
Pentru ca utilizarea lor este de foarte ori sinonimă cu ideea de control
microcontrolerele sunt utilizate masiv în robotică şi mecatronică. Conceptul de mecatronică
este pană la urmă indisolubil legat de utilizarea microcontrolerelor.
Automatizarea procesului de fabricaţie-producţie este un alt mare beneficiar: CNCComputerised Numerical Controls- comenzi numerice pentru maşinile unelte, automate
programabile- PLC, linii flexibile de fabricaţie, etc.). Indiferent de natura procesului
automatizat sarcinile specifice pot fi eventual distribuite la un mare număr de microcontrolere
integrate într-un sistem unic prin intermediul uneia sau mai multor magistrale. Printre multele
domenii unde utilizarea lor este practic un standard industrial se pot menţiona: în industria de
automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.), în
aşa zisa electronică de consum (sisteme audio, televizoare, camere video şi videocasetofoane,
telefonie mobilă, GPS-uri, jocuri electronice, etc.), în aparatura electrocasnică (maşini de
spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului şi climatizare
(sere, locuinţe, hale industriale), în industria aerospaţială, în mijloacele moderne de măsurare -
instrumentaţie (aparate de măsură, senzori şi traductoare inteligente), la realizarea de
periferice pentru calculatoare, în medicină.
5
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 6/69
„Johnnie” (figura 1.3) un robot umanoid destul de simplu, construit la Universitatea
Tehnică din Munchen în 1998, utilizează 5 microcontrolere, conectate prin intermediul unei
magistrale CAN la un calculator PC. „Alpha” un alt robot umanoid (fotbalist ca destinaţie)
dezvoltat la Universitatea din Freiburg utilizează, intr-o variantă a sa, 11 microcontrolere
conectate similar. Un număr foarte mare de microcontrolere sunt folosite şi de aşa zisele
jucării inteligente, din care „capetele de serie” cele mai cunoscute sunt cei doi roboţi, unul
canin şi altul umanoid: AIBO (figura 1.4) şi ASIMO (figura 1.5). ASIMO foloseşte 26 de
microcontrolere numai pentru controlul individual al celor 26 de elemente de acţionare
inteligente (motoare). Tot în categoria roboţilor umanoizi intra şi QRIO sau HOAP-1. Roboţii
respectivi sunt produşi în serie, unii dintre ei chiar la un preţ „accesibil”.
Ca un exemplu din industria de automobile (automotive industry), unde numai la
nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasaS utiliza 63 de microcontrolere.
Practic, deşi am prezentat ca exemple concrete numai sisteme robotice şi mecatronice,
este foarte greu de găsit un domeniu de aplicaţii în care să nu se utilizeze microcontrolerele.
Fig. 1.4 AIBO
Fig. 1.3 Johnnie
6
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 7/69
Fig. 1.5 ASIMO
1.3.3 Modele de microcontrolere
A. Microcontrolerul PIC
Microcontrolerele PIC au fost dezvoltate de firma americană Microchip, la începutul
anilor `90. Faptul remarcabil pentru care a putut cuceri un important segment din piaţa de
microcontrolere a fost modalitatea simplă de înscriere a programului (serială, necesită doar trei
fire), memoria program conţinută în aceeaşi capsulă, noua tehnologie CMOS de realizare (deci
consum redus) şi preţul relativ scăzut.
Aproape toate microcontrolerele PIC există în două versiuni, şi anume:
- "Windowed", marcate cu sufixul "JW" pe capsulă (Ex. 12C509-04/JW). Aceste chip-uri se
folosesc la dezvoltarea de aplicaţii deoarece permit ştergerea programului şi reînscrierea lui,
de mai multe ori. Ştergerea programului se face prin expunerea chip-ului la raze ultraviolete.
Capsula are prevazută pe partea de sus o fereastra din sticla de cuart prin care pot patrunde
razele ultraviolete.
- "OTP" (One Time Programable), cele programabile o singura dată. Funcţional şi tehnologic
sunt identice cu cele "windowed", doar că nu au prevazută fereastra de cuarţ, deci programulodata înscris nu mai poate fi şters. Deci o aplicaţie gata dezvoltată şi incercată cu o versiune
"windowed" poate fi multiplicata pentru producţie de serie în capsule "OTP" care sunt de
câteva ori mai ieftine.
Aceste două versiuni, Windowed si OTP sint realizate in tehnologie CMOS EPROM.
7
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 8/69
Fig. 1.6 Denumirea pinilor unui microcontroler PIC 12F675
Fig. 1.7 Numerotarea pinilor unui microcontroler PIC 16F675
B. ATMega 16
ATmega 16 este un microcontroler CMOS de 8 – biţi de mică putere bazat pe
arhitectura RISC AVR îmbunataţită.
Dispune de un set de 131 instrucţiuni şi 32 de regiştri de uz general. Cele 32 de registre
sunt direct adresabile de Unitatea Logica Aritmetica (ALU), permiţând accesarea a doua
registre independente într-o singură instrucţiune. Se obţine astfel o eficienţă sporită in execuţie
(de până la zece ori mai rapide decât microcontrorelerele convenţionale CISC).
ATmega16 este un microcontroler RISC pe 8 biţi realizat de firma Atmel.
Caracteristicile principale ale acestuia sunt:-16KB de memorie Flash reinscripţibilă pentru stocarea programelor
-1KB de memorie RAM
-512B de memorie EEPROM
-două numărătoare/temporizatoare de 8 biţi
-un numărător/temporizator de 16 biţi
8
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 9/69
-conţine un convertor analog – digital de 10 biţi, cu intrări multiple
-conţine un comparator analogic
-conţine un modul USART pentru comunicaţie serială (port serial)
-dispune de un cronometru cu oscilator intern
-oferă 32 de linii I/O organizate în patru porturi (PA, PB, PC, PD).
Fig. 1.8 Descrierea pinilor microcontrolerului ATMega16
1.4 Tema proiectului
Această lucrare se concentrează pe construcţia, descrierea, utilizarea şi programarea
unui robot mobil cu senzori infraroşu, care poate evita orice coleziune cu vre-un obstacol.Robotul este dotat cu două motoare de current continuu şi cutie de viteza Tamya,
senzor infraroşu de distanţă SHARP, placă de programare Arduino UNO, Shield Ardumoto
pentru controlul motoarelor de current continuu.
Robotul mobil cu kit Arduino are abilitatea de a evita orice obstacol. În momentul în
care sesizează un obstacol acesta îşi schimbă direcţia de deplasare.
9
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 10/69
Capitolul 2: Roboţi mobili
2.1 Introducere în roboţi mobili
Robotul mobil este un sistem complex care poate efectua diferite activităţi într-ovarietate de situaţii specifice lumii reale. El este o combinaţie de dispozitive echipate cu
servomotoare şi senzori (aflate sub controlul unui sistem ierarhic de calcul) ce operează într-
un spaţiu real, marcat de o serie de proprietăţi fizice (de exemplu gravitaţia care influenţează
mişcarea tuturor roboţilor care funcţionează pe pământ) şi care trebuie să planifice mişcările
astfel încât robotul să poată realiza o sarcină în funcţie de starea iniţială a sistemului şi în
funcţie de informaţia apriori existentă, legată de mediul de lucru.
Succesul în îndeplinirea acestor sarcini depinde atât de cunoştinţele pe care robotul le
are asupra configuraţiei iniţiale a spaţiului de lucru, cât şi de cele obţinute pe parcursul
evoluţiei sale.
Problemele specifice ce apar la roboţii mobili ar fi următoarele: evitarea impactului cu
obiectele staţionare sau în mişcare, determinarea poziţiei şi orientării robotului pe teren,
planificarea unei traiectorii optime de mişcare.
În cazul unui sistem robotic automat distribuit poziţiile spaţiale sunt de o extremă
importanţă şi de ele depinde îndeplinirea scopurilor dorite şi funcţionarea întregului sistem. Cu
alte cuvinte, robotul trebuie să fie capabil să-şi planifice mişcările, să decidă automat ce
mişcări să execute pentru a îndeplini o sarcină, în funcţie de aranjamentul momentan al
obiectelor din spaţiul de lucru.
Planificarea mişcărilor nu constă dintr-o problemă unică şi bine determinată, ci dintr-
un ansamblu de probleme dintre care unele sunt mai mult sau mai puţin variante ale celorlalte.
Evitare coliziunii cu obstacole fixe sau mobile (de exemplu alţi roboţi mobili) aflate în
spaţiul de lucru al robotului se poate face prin mai multe metode: realizarea unei apărători
mecanice care prin deformare opreşte robotul, folosireasenzorilor care măsoară distanţa pânăla obstacolele de pe direcţia dedeplasare, folosirea senzorilor de proximitate, folosirea
informaţiilor corelate de la mai multe tipuri de senzori.
Localizarea obiectelor se poate realiza şi prin contact fizic, dar acesta impune restricţii
asupra vitezei de mişcare a structurii manipulate. Contactul fizic dintre robot şi obiectele din
mediu generează forţe de reacţiune care modifică starea robotului. Vitezele mari de lucru fac
10
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 11/69
ca efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate să fie riscante
(pot duce la deteriorarea obiectelor sau a robotului).
Navigarea robotului este posibilă şi fără o determinare a poziţiei şi orientării faţă de un
sistem de coordonate fix, dar această informaţie este utilă pentru sisteme de comandă a
mişcării. Dintre metodele de navigaţie mai des utilizate se pot menţiona: măsurarea numărului
de rotaţii făcute de roţile motoare, folosirea de acceleratoare şi giroscoape, geamanduri
electromagnetice instalate în teren, semnalizatoare pasive sau semipasive de tip optic sau
magnetic.
2.2 Clasificarea roboţilor mobili
Roboţii mobili se clasifică astfel:
• În funcţie de dimensiuni: macro, micro şi nano-roboţi;
• În funcţie de mediul în care acţionează: roboţi tereştri – se deplasează pe sol,
roboţi subacvatici – în apă, roboţi zburători – în aer, roboţi extratereştri – pe
solul altor planete sau în spaţiul cosmic;
• În funcţie de sistemul care le permite deplasarea în mediul în care acţionează
există de exemplu pentru deplasarea pe sol:
1. roboţi pe roţi sau şenile
2. roboţi păşitori: bipezi, patrupezi, hexapozi, miriapozi;
3. roboţi târâtori: care imită mişcarea unui şarpe, care imită mişcarea uneirâme etc.;
4. roboţi săritori, care imită deplasarea broaştelor, cangurilor etc.;
5. roboţi de formă sferică (se deplasează prin rostogolire) etc.
Fig. 2.1 Exemple de roboţi mobili
11
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 12/69
2.3 Utilizarea roboţilor mobili
Utilizările pentru care au fost, sunt şi vor fi concepuţi roboţii mobili sunt dintre cele
mai diverse. Mulţi roboţi din zona micro îşi găsesc utilizarea în medicină, fiind capabili să sedeplaseze de-a lungul vaselor şi tuburilor corpului omenesc, în scopul investigaţiilor,
intervenţiilor chirurgicale, dozării şi distribuirii de medicamente etc. La fel de spectaculoase
sunt şi multe utilizări ale macro-roboţilor:
• În domeniul industrial, agricol, forestier: în domeniul industrial roboţii mobili sunt
reprezentaţi de AGV-uri (Automated-Guided Vehicles), vehicule pe roţi, cu ghidare automată,
care transportă şi manipulează piese, constituind o alternativă flexibilă la benzile de montaj; în
agricultură există tractoare şi maşini agricole fără pilot, capabile să execute singure lucrările
pe suprafeţele pentru care au fost programate; în domeniul forestier roboţii mobili pot escalada
copacii înalţi;
• În domeniul militar: este luată în considerare de către armata americană perspective
înlocuirii soldaţilor combatanţi cu roboţi, pentru a reduce riscul pierderilor umane în luptă;
roboţi mobili de cele mai ingenioase şi robuste configuraţii sunt aruncaţi în clădi şi incinte din
zone de conflict, în scopuri de investigare şi chiar anihilare a inamicului;
12
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 13/69
Fig. 2.2 Sistem Integrat Telecomandat pentru Deminare
• În domeniul utilităţilor publice: una dintre cele mai utile şi economice utilizări ale
roboţilor mobili o reprezintă inspectarea conductelor de combustibili gazoşi şi lichizi şi a
canalelor de canalizare. De exemplu reţeaua de canalizare a Germaniei însumează 400.000
km, iar inspectarea şi curăţirea acesteia presupune costuri de 3,6 Euro pe metru. Numai 20%
din conducte sunt accesibile, iar utilizarea roboţilor poate reduce costurile cu un sfert.
• În domeniul distractiv şi recreativ: sunt roboţii-jucării, roboţii pentru competiţii
• În domeniul serviciilor: Există posibilităţi deosebit de largi de implementare.
Sunt roboţi pentru: deservirea bolnavilor în spitale; ajutorarea persoanelor bătrâne sau
cu diferite handicapuri; ghidarea şi informarea publicului în muzee aspirarea şi curăţirea
încăperilor; spălarea geamurilor şi a pereţilor clădirilor;• În domeniul securităţii: Multe operaţii de inspectare şi dezamorsare a unor obiecte şi
bagaje suspecte sunt executate de roboţi;
• În domeniul operaţiilor de salvare: Roboţii salvatori (Rescue robots) sunt utilizaţi în
operaţiile de salvare a victimelor unor calamităţi: cutremure, incendii , inundaţii.
2.4 Caracteristici comune roboţilor mobili
Roboţii mobili au următoarele caracteristici comune:
1. structura mecanică este un lanţ cinematic serie sau paralel respectiv tip “master-slave”;2. sistemul de acţionare utilizat este electric pentru sarcini mici şi medii şi hidraulic
pentru sarcini mari;
3. sistemul senzorial utilizează senzori interni (de turaţie, poziţie, efort) la nivelul
articulaţiilor, senzori externi(camere TV) pentru scanarea mediului şi senzori de securitate( de
proximitate, de prezenţă cu ultrasunete);
4. sistemul de comandă este ierarhizat, de obicei multiprocesor;
5. limbajele de programare utilizate sunt preluate de la roboţii staţionari.
2.5 Structura roboţilor mobili
Structura roboţilor mobili (RM) corespunde arhitecturii generale a roboţilor, având două părţi:
A. Structura mecanică, respectiv manipulatorul, care determină
performanţele tehnice;
13
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 14/69
Structura mecanică a roboţilor mobili este formată din:
• sistemul de locomoţie (pe şenile sau roţi), prin care se asigură deplasarea robotului pe
o suprafaţă de lucru (în cadrul unei autonomii sporite);
• sistemul de manipulare, care asigură poziţionarea şi orientarea organului de lucru.
Robotul mobil în procesul de deplasare pe o anumuită traiectorie este caracterizat prin
3 funcţi:
1. funcţia de locomoţie;
2. funcţia de percepţie-decizie;
3. funcţia de localizare;
B. Structura electronică, respectiv de comandă-control, care
condiţionează calitatea performanţelor.
Roboţii mobili pot fii dotaţi cu camera video sau alţi senzori de percepere al mediului
în care activează. Memoria robotului conţinută in microcontroler înmagazinează cunoştinţele
necesare localizării tuturor segmentelor de traseu posibile.
Indiferent de generaţia robotului, probleme complexe apar la realizarea structurii
mecanice de volum, greutate şi cost reduse, la transmiterea mişcării şi adaptarea la structura
mecanică a motoarelor electrice şi hidraulice, la proiectarea mâinilor mecanice pentru a apuca
obiecte de diferite forme. Referitor la structura electronică, posibilităţile actuale permit
folosirea a câte unui microprocesor pentru comanda fiecărui grad de mobilitate, precum şi a
altor microprocesoare specializate pentru tratarea semnalului senzorial. Robotul mobil
interacţionează cu mediul înconjurător prin structura sa mecanică, asigurând astfel deplasarea,
poziţionarea şi orientarea organului de execuţie.
14
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 15/69
Capitolul 3: Tipuri de roboţi mobili
3.1 Robotul AIRAT2
Fig. 3.1 Robotul AIRAT2
AIRAT 2 este un robot micromouse care foloseşte un procesor CPU 8051. AIRAT 2
foloseşte senzori pentru a o recepta când se întoarce înapoi. Placa CPU folosete o placă
JS8051-A2. Placa JS8051-A2 este foarte bine construită. Foloseşte resurse externe de putere
cum ar fii LCD, ADC, douǎ ceasuri externe, auto-Flash scriere şi altele.
AIRAT 2 utilizeaza şase senzori oferindu-i astfel posibilitatea de a se deaplasa pe
diagonală. Un simulator PC este prevăzut,oferindu-i posibilitatea utilizatorului de a întelege
mai bine nivelul inalt de căutare algoritmică a mouseului. Codul sursa C este implementat
astfel încât programatorul poate dezvolta mai uşor altgoritmi care pot fi testaţi cu ajutorul unuisimulator si apoi implementat mouseului.
În plus, LCD, comunicaţie serială, controlul mouse-ului precum şi alte funcţii sunt
furnizate sub formă de librarie şi fişiere sursă. Pentru cei ce vor sa inveţe mouse-ul la un nivel
înalt, AIRAT2 furnizează un mediu excelent de dezvoltare, teste algoritmice, precum şi multe
altele.
15
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 16/69
AIRAT 2 a aparut pe coperta publicaţiei franceze „MICROS&ROBOTS”.
Caracteristici ale robotului AIRAT2:
- capabil de reglare proprie; învaţă din mers;
- foloseşte 6 senzori dându-i posibilitatea de a se deplasa pe diagonala;
- uşor de asamblat/dezasamblat;
- port de reîncărcare;
- instrucţii de asamblare şi manual al utilizatorului;
- include un simulator PC pentru accelerarea dezvoltării;
- librării, coduri sursa C;
- AIRAT2 baterie (NiMh-450).
Fig. 3.2 Bateria robotului AIRAT2
16
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 17/69
3.2 Robotul Pololu 3pi
Fig. 3.3 Robotul Pololu 3pi
Robotul pololulu 3pi este o platformă mobilă de înaltă performanţă care conţine două
motoare cu cutie de viteze, 5 senzori de reflexie, un LCD 8x2, un buzzer şi trei butoane, toateconectate la un microcontroler programabil Atmega328. Capabil de viteze pana la 1 m/s, 3 pi
este un excelent prim, pentru începători curajoşi şi un perfect al doilea robot pentru cei care
vor să avanseze de la roboţi neprogramabili.
Robotul 3 pi este proiectat pentru a excela în competiţii precum urmărirea liniei sau
rezolvarea labirintelor. Are dimensiuni mici (diametru: 9.5 cm, greutate 83 g fără baterii) şi îi
trebuie decât 4 baterii de tip AAA, în timp ce un sistem de alimentare unic pune în funcţiune
motoarele la o tensiune constantă de 9.25 v, tensiune independentă de cea a nivelului de
încărcare. Regulatorul de tensiune îi permite lui 3pi sa ajungă la viteze de până la 1 m/sec, în
timp ce face viraje şi întoarceri precise, care nu variaza cu tensiunea bateriei.
Robotul 3pi este o platforma excelentă pentru persoane cu experienţă în programare C
care vor să înveţe robotica şi este o distracţie in orice momente pentru cei care vor să inveţe
programare C. Inima robotului este un microcontroler Atmel ATmega328P care ruleaza la o
17
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 18/69
frecvenţă de 20 MHz alături de un program de 32 KB, 2 KB de memorie RAM si 1KB de
memorie EEPROM. Popularul compilator GNU C/C++ funcţionează perfect cu 3pi, Atmel
AVR Studio ofera un spaţiu de dezvoltare confortabil şi un set de librării interesante oferite de
Pololu si realizează interfaţării cu componentele se face foarte uşor. 3pi este deasemenea
compatibil cu plăcile de dezvoltare Arduino.
Imaginile de mai jos identifică componentele cele mai importante ale robotului.
Fig. 3.4 Vedere de sus a robotului Pololu 3pi
18
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 19/69
Fig. 3.5 Vedere de jos a robotului Pololu 3pi
3.3 Robotul Inex POP-Bot Standard
Fig. 3.6 Robotul Inex POP-Bot Standard
POP-BOT are un driver pentru două motoare de curent continuu. Viteza şi direcţia
motoarelor se poate controla din software-ul robotului, deoarece sunt controlate de catre PWM
(Pulse Width Module).Robotul conţine şi un modul microcontroler POP-168. POP-168 este o placă flexibilă
care nu are componente ascunse şi permite dezvoltare completă a caracteristicilor cu ajutorul
uneltelor standard AVR, cum ar fi IAR C/C++,MikroElektronikaMikro BASIC/ MikroPascal
pentru AVR si deasemenea uneltele open-source WINAVR: AVRGCC pentru Windows.
Un display LCD permite vizualizarea activităţii microcontrolerului. Modulul LCD are
nevoie decât de un pin de intrare/ieşire, +5v şi masa pentru a funcţiona. Pentru a comunica cu
microcontrolerul, modulul LCD are nevoie decât de simple comenzi de ieşire.
Alte părţi componente ale robotului:
• Placa de control a robotului RBX-168 cu suport de 4 baterii AA
• Modul de butoane cu cablu JST
• Senzor de distanţă infraroşu GP2D120
• Placa cu senzori de reflexie
19
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 20/69
• Roti de cauciuc
• Ball-caser
• Placa de plastic de 80x60 cm
3.4 Robotul construit cu kit Arduino
Fig. 3.7 Robotul construit cu kit Arduino
Robotul are abilitatea de a evita orice obstacol. În momentul în care sesizează un
obstacol acesta îşi schimbă direcţia de deplasare.
Componenta de bază a robotului o constituie placa Arduino UNO pe care este prezent
microcontrolerul Atmel ATMEGA328 împreună cu diferite circuite auxiliare de interfaţă cu
diferite medii printre care enumerăm circuitul integrat L298P cu rol de punte H ce îndeplineşte
rolul de amplificare al semnalului de la pinii microcontrolerului şi acţionare de putere a
motoarelor de curent continuu şi circuitul integrat TL499 care are rol de stabilizator de
tensiune. Pe lângă aceasta mai avem două motoare de curent continuu un sensor infraroşu de
distanta Sharp GP2D120 şi alte componente mecanice care utilizează ca mediu de programare
limbajul C.
Robotul este conceput pe două roţi motrice din plastic cu membrană de cauciuc iar pe
şasiu se mai găseşte o sfera cu rol de echilbrare. Pentru a înnobila partea electronică robotul a
fost dotat cu un senzor infraroşu Sharp care ocoleşte obstacole şi care deasemenea poate
determina distanţa până la un anumit obiect. Pentru ca senzorul Sharp să se poată mişca acesta
este montat pe un servomotor.
20
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 21/69
Capitolul 4: Proiectarea elementelor componente
4.1 Elemente componente:
-Sasiu -2 motoare de current continuu
-placa Arduino UNO -placa ardumoto
-Ball caster -Senzor inflarosu de distanta Sharp
21
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 22/69
-Servomotor -roti
4.2 Placa de dezvoltare ArduinoComponenta de bază a robotului o constituie placa Arduino UNO.
Arduino este o platformă de procesare open-source, bazată pe software şi hardware
flexibil şi simplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în
cea mai des intâlnită variantă) construită în jurul unui procesor de semnal şi este capabilă de a
prelua date din mediul înconjurător printr-o serie de senzori şi de a efectua acţiuni asupra
mediului prin intermediul luminilor, motoarelor, servomotoare, şi alte tipuri de dispozitive
mecanice. Procesorul este capabil să ruleze un cod scris într-un limbaj de programare care estefoarte similar cu limbajul C++.
Ce este cu adevărat interesant este ecosistemul dezvoltat in jurul Arduino. Vorbim aici
atât despre comunitatea care este foarte activa, cât şi despre numărul impresionant de
dispozitive create special pentru Arduino.
22
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 23/69
Câteva exemple de senzori disponibili – senzori de distanţă (capabili să măsoare de la
câţiva centimetri până la 7-9 metri), senzori de sunet, senzori de câmp electromagnetic,
senzori de fum, senzori de tip GPS, senzori de tip giroscopic, senzori de flux lichid (ca cei
folosiţi la pompele de benzină), senzori de temperatură, senzori de monoxid de carbon, senzori
de lumină, senzori capabili să detecteze doar o anumită culoare, senzori de prezenţă, senzori
de umiditate, senzori de nivel pentru lichid, senzori capabili sa măsoare concentratia de alcool
în aerul expirat. Pentru a efectua acţiuni asupra mediului înconjurator, există o largă varietate
de motoare, servomotoare, motoare pas cu pas, led-uri, actuatoare. Ca şi conectivitate, există
disponibile componente capabile sa conecteze Arduino la reţeaua Ethernet (“Ethernet
Shield”), componente pentru reţea wireless, componente capabile să realizeze conectare pe
reţeaua de date GSM / 3G, sau componente de tip XBEE utile pentru a realiza comunicaţii de
tip personalizat.Platforma Arduino este disponibilă într-o serie de variante, fiecare cu diferite
capabilităţi şi dimensiuni.
4.2.1 Exemple de plăci Arduino
A. Arduino Uno – Aceasta este cea mai recenta placă de dezvoltare de la
Arduino. Se conectează la computer prin intermediul cablului USB standard A-B şi
conţine tot ceea ce ai nevoie pentru a programa şi utiliza placa. Acestuia i se poate
adăuga o varietate de Shild-uri (placă cu caracteristici speciale, specifice unor tipuride aplicaţii). Este similar cu Duemilanove, dar are un chip diferit USB-to-serial –
ATMega8U2, şi cu un design nou de etichetare pentru a identifica mai uşor intrările şi
ieşirile.
Fig. 4.1 Placa de dezvoltare Arduino UNO
23
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 24/69
B. Mega 2560 – versiune a modelului Mega lansat cu Uno, această versiune dispune
de Atmega2560, care are de două ori mai mult spaţiu pentru memorie, şi foloseşte 8U2
ATMega pentru comunicare USB-to-serial.
Fig. 4.2 Placa de dezvoltare Arduino Mega2560
C. Mini – Aceasta este cea mai mica placa de dezvoltare de la Arduino. Aceasta
functioneaza bine intr-un breadboard sau pentru aplicatii in care spatiul este limitat. Se
conecteaza la calculator prin intermediul unui cablu mini USB Adapter.
Fig. 4.3 Placa de dezvoltare Arduino Mini
D. Nano – O placă de dezvoltare compactă proiectată pentru utilizarea pe un
breadboard. Nano se conectează la computer utilizând un cablu USB Mini-B.
Fig. 4.4 Placa de dezvoltare Arduino Nano
E. Duemilanove - Arduino Demilanove este o platformă de procesare bazată pe
microcontrolerul ATmega168 sau ATmega328. Are 14 pini de intrări/ieşiri digitale.
24
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 25/69
LED: 13. Există un LED încorporat în placă, conectat la pinul 13. Cand valoarea pe pin
este HIGH, LEDul este aprins, când valoare este LOW, LEDul este stins.
Placa Arduino UNO are 6 intrări analogice, denumite dela A0 la A5, fiecare oferă o
rezoluţie de 10 biţi. Implicit, ieşirile măsoară de la masa la 5v, deşi este posibil ca limita
superioară să fie schimbată cu ajutorul pinului AREF si funcţia analogReference().
Fig. 4.5 Placa de dezvoltare Arduino Duemilanove
F. LilyPad – Proiectat pentru aplicaţii uşor de implementat pe materiale textile, acest
microcontroler poate fi cusut pe ţesătură şi are o culoare atrăgătoare, mov.
25
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 26/69
Fig. 4.6 Placa de dezvoltare Arduino LilyPad
G. Fio – Proiectată pentru aplicaţii fără fir. Acesta are inclusă o priză dedicată pentru
un modul radio Wi-Fi XBee, un conector pentru o baterie Li Polymer şi circuite integrate de
încărcare a bateriei.
Fig. 4.6 Placa de dezvoltare Arduino Fio
H. Pro – Acestă placă de dezvoltare este concepută pentru utilizatorii avansaţi care
doresc să încorporeze această placă într-un proiect: este mai ieftin decât un Diecimila şi uşor
de alimentat la o baterie, dar necesită componente suplimentare şi asamblare.
Fig. 4.7 Placa de dezvoltare Arduino Pro
I. Pro Mini – Ca Pro, Pro Mini este conceput pentru utilizatorii avansaţi care au
nevoie de un cost scăzut, plăci de dezvoltare mici şi care sunt dispuşi să facă ceva lucru
suplimentar pentru a o putea utiliza în proiecte.
26
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 27/69
Fig. 4.8 Place de dezvoltare Arduino Pro Mini
J. Serial – Este o placă de dezvoltare, care utilizează ca interfaţă un RS232 (COM) la
un calculator pentru programare sau de comunicare. Acestă placă este uşor de asamblat, chiar
ca un exercitiu de învăţare. (Inclusiv scheme şi fişiere CAD)
Fig. 4.9 Placa de dezvoltare Arduino Serial
K. Serial Single Sided – Acestă placă de dezvoltare este concepută pentru a fi gravată
şi asamblată de mână. Este puţin mai mare decât Duemilanove, dar este compatibilă cu toate
shield-urile Arduino.
27
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 28/69
Fig. 4.10 Placa de dezvoltare Arduino Serial Single Sided
28
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 29/69
4.2.2 Placa Arduino UNO
Fig. 4.11 Elementele componente ale plăcii Arduino UNO
A. Prezentare generală
Arduino Uno este o placă de procesare bazată pe microcontrollerul ATmega328. Are
14 pini de intrări\ieşiri digitale (din care 6 pot fi utilizate ca ieşiri PWM), 6 intrări analogice,
un cristal oscilator de 16 MHz, o conexiune USB, o mufă de alimentare, un ICSP, şi un buton
de resetare. Aceasta conţine tot ceea ce este necesar pentru a ajuta la funcţionarea
microcontrolerului; pur şi simplu conectaţi la un computer cu un cablu USB sau alimentaţi la
un adaptor AC-DC sau baterie pentru a începe.
Uno diferă de toate plăcile precedente, în sensul că nu foloseşte chip driver FTDI USB
la un serial. În schimb, este dotat cu Atmega8U2 programat ca şi convertor USB.
"Uno" înseamnă unu în limba italiană şi este numită pentru a marca lansarea viitoare a
Arduino 1.0. Uno şi versiunea 1.0 vor fi versiunile de referinţă Arduino, pentru a avansa. Uno
este ultima dintr-o serie de plăci Arduino USB, şi modelul de referinţă pentru platforma
Arduino.
29
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 30/69
B. Caracteristici
Tabelul 4.1
Microcontroler ATmega328Tensiunea de funcţionare 5VTensiune de intrare
(recomandat)
7-12V
Tensiune de intrare (limite) 6-20VDigital I / O Pins 14 (din care 6 prevăd PWM de ieşire)Analog Input Pins 6DC curent pe I / O Pin 40 mAActuale pentru Pin 3.3V DC 50 mAFlash Memory 32 KB (ATmega328), din care 0.5 Kb utilizate de
bootloader SRAM 2 KB (ATmega328)EEPROM 1 KB (ATmega328)Viteza de ceas 16 MHz
C. Alimentare
Arduino Uno poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de
alimentare externă. Sursa de alimentare este selectată automat.
Sursele externe de alimentare (non-USB) pot fi, fie un adaptor AC-DC sau baterie. Adaptorul poate fi conectat printr-un conector de 2.1mm cu centru-pozitiv în mufa de
alimentare de pe placă. Traseele de la baterie pot fi introduse în pinii GND şi V-in ai
conectorului de alimentare.
Placa poate funcţiona cu o sursă externă de 6-20 volţi. Dacă este alimentată cu mai
puţin de 7V, atunci pinul de 5V scoate o tensiune mai mica de 5V şi placa poate deveni
instabilă. Dacă se utilizează mai mult de 12V, regulatorul de tensiune se poate supraîncălzi şi
deteriora placa. Intervalul recomandat este de 7-12 volţi.
Pinii de putere sunt după cum urmează:
30
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 31/69
• V-IN. Tensiunea de intrare la placa Arduino atunci când foloseşte o sursă de
alimentare externă (spre deosebire de 5 volţi de conexiune USB sau o altă sursă de
energie regulată). Se poate alimenta prin acest pin sau dacă este folosită alimentarea
prin conectorul de alimentare atunci tensiunea poate fi accesată din acel pin.
• 5V. Tensiunea de alimentare folosită pentru microcontroler şi alte componente de pe
placă. Aceasta poate veni fie din pinul V-IN printr-un regulator de tensiune încorporat,
sau să fie furnizată de către USB sau o altă sursă de tensiune de 5v .
• 3V3. O tensiune de 3.3V generată de către regulatorul de pe placă.
• GND. Pinii de masă.
D. Memoria
ATmega328 are 32 KB (cu 0,5 KB utilizate pentru bootloader). Ea are, de asemenea,
2 KB de SRAM şi 1 KB de EEPROM (care poate fi citit şi scris cu biblioteca EEPROM ).
E. Intrări şi ieşiri
Fiecare din cei 14 pini digitali pot fi utilizaţi ca intrare sau ieşire, folosind
funcţiile pinMode () , digitalWrite () , şi digitalRead (). Aceştia funcţionează la 5 volţi. Fiecare
pin poate oferi sau primi un maxim de 40 mA şi are un rezistor de siguranţă (deconectat
implicit) de 20-50 kOhms. În plus, unii pini au funcţii particulare:
• Serial: 0 (RX) şi 1 (TX). Folosit pentru a primi şi transmite date seriale TTL. Aceşti
pini sunt conectaţi la pinii corespunzători ai cipului ATmega8U2 USB-TTL;
• Întreruperile externe: 2 şi 3. Aceşti pini pot fi configuraţi pentru a declanşa o
întrerupere pe o valoare scăzută, o limită crescătoare sau descrescătoare, sau o
schimbare în valoare.
• PWM: 5, 6, 9, 10, şi 11. Oferă o ieşire PVM de 8 biţi cu funcţia analogWrite ().
• SPI:10 (SS), 11 (Mosi), 12 (MISO), 13 (SCK). Aceşti pini suportă comunicaţia SPI
folosind biblioteca SPI .
• LED: 13. Există un LED încorporat în placă, conectat la pinul 13. Când valoarea pe
pin este HIGH, LEDul este aprins, când valoare este LOW, LEDul este stins.
Placa Arduino UNO are 6 intrări analogice, denumite de la A0 la A5, fiecare oferă o
rezoluţie de 10 biţi. Implicit, ieşirile măsoară de la masa la 5V, deşi este posibil ca limita
31
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 32/69
superioară să fie schimbată cu ajutorul pinului AREF şi funcţia analogReference(). În plus,
unii pini au funcţionalităţi specializate:
• I2C:A4 (SDA) şi A5 (SCL). Suportă comunicare I2C folosind librăria Wire.
Mai există câţiva pini pe placă:
• AREF. Tensiune de referinţă (numai de la 0 la 5V) pentru intrările analogice. Folosit
cu funcţia analogReference().
• Reset. Aduce linia la zero pentru a reseta microcontrolerul. De obicei folosit pentru a
adauga un buton de reset Shield-urilor care blochează acţiunea celui de pe placă.
F. Harta pinilor – ATMega 328
Fig. 4.12 Descrierea pinilor microcontrolerului ATMega328
G. Comunicaţia
Arduino UNO are câteva posibilităţi de comunicare cu un calculator, o altă placă
Arduino sau un alt microcontroler. Microcontrolerul ATmega328 furnizează comunicaţie
serială UART TTL (5V) care este disponibilă pe pinii digitali 0(RX) şi 1(TX). Unmicrocontroler ATmega8U2 direcţionează comunicaţia serială către USB şi apare ca un port
serial virtual în software-ul de pe calculator. Firmware-ul microcontrolerului foloseşte
driverele standard ale portului USB al calculatorului şi nu este nevoie de un driver din
exterior. Software-ul Arduino este prevăzut cu o fereastră care permite preluarea şi trimiterea
de date de tip text de la placa Arduino. LEDurile corespunzătoare semnalelor RX şi TX de pe
32
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 33/69
placă vor pâlpâi când informaţia este trimisă prin portul USB către cipul serial prin
intermediul unei conexiuni USB cu calculatorul (dar nu pentru comunicaţia serială de pe pinii
0 şi 1).
O bibliotecă a programului (SoftwareSerial) permite comunicaţia serială pentru oricare
dintre pinii placii.
Microcontrolerul ATmega328 suportă, de asemenea comunicaţie I2C (DST) şi
SPI. Software-ul Arduino include o bibliotecă de conexiuni (wire library) pentru a simplifica
utilizarea portului I2C .
H. Programare
Arduino uno poate fi programată cu software-ul Arduino. Selectaţi "Arduino
Uno din meniul Tools Board (în conformitate cu microcontrolerul de pe placă).
Microcontrolerul ATmega328 de pe placa Arduino Uno vine cu un program de butare( bootloader ) care vă permite încărcarea unui program nou fără a utiliza un compilator
extern. Acesta comunică folosind protocolul STK500 original.
Se poate evita, de asemenea, bootloader –ul şi, microcontrolerul se poate programa
prin ICSP (In-Circuit Serial Programming).
Codul sursă al Firmware –ul microcontrolerului ATmega8U2 este disponibil, el este
încărcat cu un program de butare DFU care poate fi activat cu ajutorul unui jumper de pe
spatele placii, ATmega8U2 fiind resetat. Apoi se pot folosi programele Atmel’s FLIP
(windows) sau DFU (Mac si Linux) pentru a încărca un nou firmware.
I. Resetarea automată (Software)
Pentru a nu fi nevoie de resetarea manuală, înainte de încărcarea unui program,
Arduino Uno este proiectată astfel încât îi permite sa fie resetată de către software, atunci când
este conectată la calculator. Una dintre liniile de control a funcţionării hardware (DTR) a
microcontrolerului ATmega8U2 este conectata la linia de reset al microcontrolerului
ATmega328 printr-un condensator de 100 nanofarad. Atunci când această linie este activată,
linia de reset este activă suficient de mult timp pentru a reseta microcontrolerul. Software-ul
Arduino foloseşte această capacitate pentru a vă permite să încărcaţi un cod prin simpla
apăsare a butonului de încărcare din mediul de programare Arduino. Acest lucru înseamnă că
bootloader-ul are o perioadă scurtă de pauză.
33
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 34/69
Această configurare are alte implicaţii. Când Uno este conectată fie la un computer pe
care rulează fie un sistem de operare Mac OS X sau Linux, aceasta se resetează de fiecare
dată când o conexiune este realizată între ea şi software (prin USB). Pentru următoarele
jumătăţi de secundă sau aşa ceva, aplicaţia bootloaderul rulează pe Uno. Deşi este programat
să ignore date necorespunzătoare (adică nimic în afară de o încărcare a noului Cod), se vor
intercepta primii biţi din datele trimise către placă după ce conexiunea este deschisă.
Uno conţine un traseu care poate fi înterupt pentru a dezactiva resetarea automată.
Zonele de pe fiecare parte a traseului înterupt pot fi lipite pentru a activa din nou resetarea
automată. Traseul este denumit ”RESET_EN”. O altă modalitate de a dezactiva resetarea
automată este prin a conecta un resistor de 110 ohm între linia de 5V şi linia de reset.
J. Protecţia la suprasarcină a portului USB
Arduino Uno are o siguranţă resetabilă care protejează porturile USB ale computeruluide scurtcircuit şi suprasarcină. Deşi majoritatea calculatoarelor au protecţie internă proprie,
siguranţa oferă o protecţie suplimentară. Dacă un curent mai mare de 500 mA trece prin portul
USB, siguranţa va întrerupe în mod automat conexiunea până la îndepărtarea suprasarcini sau
scurtcircuitului.
K. Caracteristici fizice
Lungimea şi lăţimea maximă a plăcii este de 6.8 cm respective 5.3 cm, cu conectorul
USB şi conectorul de alimentare care ies din dimensiunile plăcii. Patru orificii de şurub care
permite plăcii să fie ataşată la o suprafaţă sau carcasă. Observaţi că distanţa dintre pinii 7 şi 8
este de 160 mm.
Fig. 4.13 Dimensiunile plăcii Arduino UNO
34
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 35/69
L. Schema electrică
Fig. 4.14 Schema electrică a plăcii Arduino UNO
35
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 36/69
4.3 Motoare de curent continuu
Fig. 4. 15 Motor de curent continuu
36
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 37/69
Un motor electric (sau electromotor) este un dispozitiv ce transformă energia electrică în
energie mecanică. Transformarea inversă, a energiei mecanice în energie electrică, este
realizată de un generator electric. Nu există diferenţe de principiu semnificative între cele
două tipuri de maşini electrice, acelaşi dispozitiv putând îndeplini ambele roluri în situaţii
diferite.
Principiul de funcţionare: Majoritatea motoarelor electrice funcţionează pe baza
forţelor electromagnetice ce acţionează asupra unui conductor parcurs de curent electric aflat
în câmp magnetic. Există însă şi motoare electrostatice construite pe baza forţei Coulomb şi
motoare piezoelectrice.
Motoarele electrice pot fi clasificate după tipul curentului electric ce le parcurge:
• Motor de curent continuu
• Motor de curent alternativ
• Motor de inducţie (asincron)
• Motor sincron
Elemente constructive: indiferent de tipul motorului, acesta este construit din două
părţi componente: stator şi rotor. Statorul este partea fixă a motorului, în general exterioară, ce
include carcasa, bornele de alimentare, armătura feromagnetică statoric şi înfăşurarea
statorică. Rotorul este partea mobilă a motorului, plasată de obicei în interior. Este format
dintr-un ax şi o armătură rotorică ce susţine înfăşurarea rotorică. Între stator şi rotor există o
porţiune de aer numită intrefier ce permite mişcarea rotorului faţă de stator. Grosimea
intrefierului este un indicator important al performanţelor motorului.
37
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 38/69
Fig. 4. 16 Elementele componente ale motorului de curent continuu
Motorul de curent continuu a fost inventat în 1873 de Zénobe Gramme prin conectarea
unui generator de curent continuu la un generator asemănător. Astfel, a putut observa cămaşina se roteşte, realizând conversia energiei electrice absorbite de la generator.
Motorul de curent continuu are pe stator polii magnetici si bobinele polare concentrate
care creează câmpul magnetic de excitaţie. Pe axul motorului este situat un colector ce
schimbă sensul curentului prin infăşurarea rotorică astfel încât câmpul magnetic de excitaţie să
exercite în permanenţă o forţă faţă de rotor.
În funcţie de modul de conectare a înfăşurării de excitaţie motoarele de curent continuu
pot fi clasificate în:
• motor cu excitaţie independentă - unde înfăşurarea statorică şi înfăşurarea
rotorică sunt conectate la două surse separate de tensiune;
• motor cu excitaţie paralelă - unde înfăşurarea statorică şi înfăşurarea rotorică sunt
legate în paralel la aceaşi sursă de tensiune
• motor cu excitaţie serie - unde înfăşurarea statorică şi infăşurarea rotorică sunt
legate în serie
• motor cu excitaţie mixtă - unde înfăşurarea statorică este divizată în două înfăşurări,
una conectată în paralel şi una conectată în serie.
Înfăşurarea rotorică parcursă de curent va avea una sau mai multe perechi de poli
magnetici echivalenţi. Rotorul se deplasează în câmpul magnetic de excitaţie până când polii
rotorici se aliniază în dreptul polilor statorici opuşi. În acelaşi moment, colectorul schimbă
38
Capac
Perii colectoare
Rotor
Carcasă
Stator
Ax
Bucşă
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 39/69
sensul curenţilor rotorici astfel încat polaritatea rotorului se inversează şi rotorul va continua
deplasarea până la următoarea aliniere a polilor magnetici.
Pentru acţionări electrice de puteri mici şi medii, sau pentru acţionări ce nu necesită
câmp magnetic de excitaţie variabil, în locul înfăşurărilor statorice se folosesc magneţi
permanenţi.
Turaţia motorului este proporţională cu tensiunea aplicată înfăşurării rotorice şi invers
proporţională cu câmpul magnetic de excitaţie. Turaţia se reglează prin varierea tensiunii
aplicată motorului până la valoarea nominală a tensiunii, iar turaţii mai mari se obţin prin
slăbirea câmpului de excitaţie. Ambele metode vizează o tensiune variabilă ce poate fi
obţinută folosind un generator de curent continuu (grup Ward-Leonard), prin înserierea unor
rezistoare în circuit sau cu ajutorul electronicii de putere (redresoare comandate, choppere).
Cuplul dezvoltat de motor este direct proporţional cu curentul electric prin rotor şi cucâmpul magnetic de excitaţie. Reglarea turaţiei prin slăbire de câmp se face, aşadar, cu
diminuarea cuplului dezvoltat de motor. La motoarele serie acelaşi curent străbate înfăşurarea
de excitaţie şi înfăşurarea rotorică. Din această consideraţie se pot deduce două caracteristici
ale motoarelor serie: pentru încărcări reduse ale motorului, cuplul acestuia depinde de pătratul
curentului electric absorbit; motorul nu trebuie lăsat să funcţioneze în gol pentru că în acest
caz valoarea intensităţii curentului electric absorbit este foarte redusă şi implicit câmpul de
excitaţie este redus, ceea ce duce la ambalarea maşinii până la autodistrugere.
Motoarele de curent continuu cu excitaţie serie se folosesc în tracţiunea electrică
urbană şi feroviară (tramvaie, locomotive).
Schimbarea sensului de rotaţie se face fie prin schimbarea polarităţii tensiunii de
alimentare, fie prin schimbarea sensului câmpului magnetic de excitaţie. La motorul serie, prin
schimbarea polarităţii tensiunii de alimentare se realizeaza schimbarea sensului ambelor
mărimi şi sensul de rotaţie rămâne neschimbat. Aşadar, motorul serie poate fi folosit şi la
tensiune alternativă, unde polaritatea tensiunii se inversează o dată în decursul unei perioade.
Un astfel de motor se numeşte motor universal şi se foloseşte în aplicaţii casnice de puteri mici
şi viteze mari de rotaţie (aspirator, mixer).
39
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 40/69
Fig. 4.17 Motor de curent continuu
4.4 Senzorul infraroşu
Fig. 4. 18 Senzorul infraroşu
Senzorii sunt dispozitive care pot măsura diferite proprietăţi ale mediului precum:
temperatura, distanţa, rezistenţa fizică, greutatea, mărimea, etc. Informaţia primită de la
aceştia poate fi de cele mai multe ori contradictorie şi imprecisă.
În cel mai general caz, senzorii pot fi împărţiţi în două categorii, şi anume:
• Senzori de stare internă – senzori care oferă informaţii despre starea internă a
robotului mobil, spre exemplu nivelul bateriei, poziţia roţilor etc;
40
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 41/69
• Senzori de stare externă – senzori care oferă informaţii despre mediul ambiant în care
robotul funcţionează. Senzorii de stare externă se mai pot împărţi la rândul lor în două
categorii: senzori cu contact , mai precis acei senzori care culeg informaţia din mediu prin
atingere (exemplu: senzor „bumper”), respectiv senzori fără contact, care preiau informaţia
din mediu de la distanţă (exemplu: cameră video, senzor ultrasonic, etc).
Un senzor poate fi activ sau pasiv. Senzorii activi sunt acei senzori care emit energie în
mediu pentru a putea observa anumite caracteristici ale acestuia, spre deosebire de senzorii
pasivi care primesc energie din mediu pentru a putea prelua informaţia.
La modul general, despre toate categoriile de senzori se pot enunţa următoarele
ipoteze:
- Orice senzor este afectat de zgomot;
- Orice senzor oferă o informaţie incompletă a mediului în care efectuează măsurătorile;- Nici un senzor nu poate fi modelat complet.
De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprietăţi,
cele mai importante fiind:
- Sensibilitatea: raportul dintre semnalul de ieşire şi semnalul de intrare;
- Liniaritatea: exprimă dacă raportul dintre intrare şi ieşire este constant;
- Intervalul de măsurare: diferenţa între distanţa minimă şi maximă măsurabilă;
-Timpul de răspuns: timpul necesar pentru ca informaţia de la intrare să fie observabilă laieşire;
-Acurateţea: diferenţa între semnalul măsurat şi semnalul real;
-Repetabilitatea: diferenţele între măsurători succesive ale aceleiaşi entităţi;
-Rezoluţia: exprimă cea mai mică unitate de incrementare a semnalului măsurat;
-Preţul senzorului;
-Puterea de calcul necesară pentru a interpreta rezultatele;
-Tipul de semnal la ieşire;
-Greutatea, mărimea şi cantitatea de energie consumată pentru a face o măsurătoare.
Relaţia între proprietăţile fizice de interes e ale mediului şi informaţia primită de la un
senzor r ar putea fi modelată prin ecuaţia:
f (e) = r
41
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 42/69
În principiu, orice model al unui senzor ar trebui să includă şi un model intern al
zgomotului care poate afecta senzorul în momentul citirii informaţiei. Problema de a recupera
informaţia din mediu din datele primite de la senzor poate fi destul de complexă.
Un senzor este considerat instabil dacă pentru variaţii mici ale intrării, ieşirea se
schimbă radical. În caz general, pentru un senzor cu ieşirea f(e), instabilitatea se referă la: în
principiu orice tip de senzor poate fi afectat de mai multe tipuri de erori.
Dintre acestea, cele mai importante sunt erorile incidentale, erorile sistematice şi
erorile stohastice. Erorile incidentale apar ocazional şi pot avea un efect neprevăzut asupra
informaţiei, ele provenind în cea mai mare parte de la măsurători efectuate greşit. Erorile
sistematice au o influenţă predictibilă asupra acurateţii informaţiei, acestea provenind de la o
interpretare greşită a parametrilor în algoritmii de estimare, sau din cauza unor neconcordanţe
(incertitudini) în modelare. În fine, erorile stohastice, au un caracter aleator, ele diferind defiecare dată când robotul execută aceeaşi operaţie.
În lumea roboţilor mobili se întâlnesc o mare varietate de tipuri de senzori. O
clasificare de bază a acestora ar putea fi:
- senzori de distanţă – acei senzori care oferă informaţii despre distanţa între senzor şi
obiectul de măsurat din mediu;
- senzori de poziţie – acei senzori care oferă informaţii despre poziţia robotului în termeni
absoluţi;
- senzori de mediu – acei senzori care oferă informaţii despre diverse proprietăţi şi
caracteristici ale mediului (exemplu: temperatură, culoare);
- senzori inerţiali – acei senzori care măsoară proprietăţi diferenţiale ale poziţiei
robotului (exemplu: acceleraţia).
O altă clasificare a senzorilor se poate face în funcţie de tipul de semnal primit, precum
şi de rolul senzorului în sistemul robotului mobil, îmbinând deci cele două clasificări de mai
sus. În continuare, pentru descrierea diferitelor tipuri de senzori, se va folosi această abordare.
Sistemul de măsurare a distanţei prin senzor în infraroşu este un tip particular de sistem
de achiziţie de date, iar aplicaţiile sale pot fi găsite în domenii foarte variate. De exemplu:
1) montarea unui senzor infraroşu Sharp GP2 pe un robot cu funcţia de a depista
obstacolele;
42
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 43/69
2) confecţionarea unui dispozitiv de mână compact şi portabil pentru a măsura rapid şi
uşor o distanţă relativ mică, pentru distanţe mari folosindu-se alţi senzori mai puternici.
3) Realizarea de diverse dispozitive automate care măsoară distanta.
4.4.1 Mod de funcţionare:
Senzorul emite un puls de rază infraroşie de lungime de undă 850 nm ± 70nm. Daca un
obiect este în raza de acţiune şi în calea razei IR, acesta va reflecta raza înnapoi spre senzor.
Senzorul face citirile cu o frecvenţă de aproximativ 24 Hz şi raportează datele sub formă de
tensiune (marime analogica). Această tensiune va suferi o conversie pe 8 biţi la nivelul CAN-
ului prezent pe microcontrolerul Atmega8. Mărimea analogică este convertită în Volţi, iar
apoi, printr-o funcţie de liniarizare obţinută din diagrama oferită de Sharp pentru acest senzor,
vom obţine rezultatul final exprimat în cm.
4.4.2 Prezentarea Hardware:Pentru acest proiect am utilizat un senzor în infraroşu SHARP GP2Y0A02YK, care
prezintă urmatoarele caracteristici tehnice:
- influenţa scăzută a culorilor obiectelor reflectate, datorată metodei triunghiulare de
măsură a distanţei
- raza de acţiune între 20 şi 150 de cm
Interfaţa sa prezintă 3 fire: alimentare, masă şi tensiunea de ieşire şi necesită un
connector JST de 3 pini.
Măsurarea distanţei prin metoda triunghiurilor (triungiularizării):
Principiul care stă la baza acestei metode de măsură folosite de senzorul Sharp se
bazează pe formarea unui triunghi între Emitatorul de rază Infraroşie, punctul de reflexie şi
Detectorul de Infraroşu. Astfel, emitatorul emite un puls de lumină infraroşie. Lumina străbate
câmpul vizual si fie loveşte un obstacol sau continuă deplasarea. În cazul inexistenţei unui
obstacol, lumina nu va fi reflectată şi nu se va detecta nici un obiect. Dacă lumina se reflectă
de pe un obiect, se va intoarce la Detector şi va creea un triunghi între Emitator, punctul de
reflexie şi Detector, ca în figura 4. 19.
43
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 44/69
Fig. 4. 19 Schema de funcţionare a unui senzor infraroşu
Unghiurile din acest triunghi variază în funcţie de distanţa până la obiect.
Receptorul este de fapt o lentilă de mare precizie care transmite lumina reflectată într-o reţea
liniară de CCD din interior. Reţeaua de CCD poate determina sub ce unghi a intrat lumina
reflectată şi, astfel, poate calcula distanţa până la obiect.
Această nouă metodă de măsurare a distanţei este apoape imună la interferenţele
cauzate de lumina ambientală şi oferă o “indiferenţă” foarte mare faţă de culoarea obiectului
detectat. Astfel este posibilă detectarea unui perete negru în lumină directă a soarelui.
Neliniaritatea ieşirii senzorului:
Senzorul Sharp folosit in acest proiect prezintă o caracteristica de ieşire neliniară,
datorată proprietăţilor trigonometrice din interiorul triunghiului format de Emiţător, punctul de
reflexie şi Receptor.
Fig. 4. 20 Diagrama de neliniarizare
44
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 45/69
Din diagrama din figura 4. 20 care poate fi găsită în documentaţia oferită de producător
se observă că în intervalul [15; 150] cm ieşirea detectorului nu este liniară ci mai degrabă
logaritmică.
Se observă de asemenea că pentru o distanţă mai mică decât 15 cm, ieşirea scade rapid
şi începe să ia valori caracteristice măsurătorii unor distanţe mai mari. Acest lucru poate fi
dezastruos pentru echipamentele automate sau pentru roboţii care pot folosi acest senzor,
deoarece vor interpreta că sunt la o distanţă mare de obstacol.
Fig. 4. 21 Schema conectării senzorului cu microcontrolerul
45
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 46/69
Capitolul 5: Construcţia robotului mobil cu kit Arduino
5.1 Asamblarea robotului mobil cu kit Arduino
A. Am folosit ca suport pentru piese un şasiu confecţionat din material plastic.
Fig. 5.1 Şasiu
B. Robotul mobil cu kit Arduino este acţionat de o cutie de viteze cu două motoare de
curent continuu de 3V fiecare şi oferă un raport de transmisie 58:1. Ambele motoare de curent
continuu sunt cuplate la cutia de viteze.
Fig. 5.2 Asambşarea motoarelor pe cutia de viteze
C. Cutia de vitze cu motoarele de current continuu sunt montate la unul din captele
sasiului.
Fig. 5.3 Cutia de viteze cu motoarele asamblată pe şasiu
46
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 47/69
D. Pe axul de transmitere al mişcării de rotaţie se montează două roţi din material
plastic cu membrane din cauciuc.
Fig. 5.4 Montarea roţitor
E. La celălalt capăt al şasiului am montat un ball-caster pentru menţinerea echilibrului
robotului.
Fig. 5.5 Montarea Ball-Caster-ului pe şasiu
F.Senzorul infraroşu Sharp se montează pe servomotor.
Fig. 5.6 Montarea senzorului pe servomotor
47
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 48/69
G. Senzorul infraroşu Sharp şi servomotorul se montează pe şasiu.
Fig. 5.7 Montarea servomotorului pe şasiu
H. Pentru ca placa Arduino UNO să nu vină montată direct pe şasiu am folosit două
distanţiere. Apoi am montat placa Arduino uno.
Fig. 5.8 Montarea plăcii Arduino pe şasiu
I. Între servomotor şi placa Arduino am montat suportul de baterii (4 baterii a câte
1.5V). Suportul de baterii este prins de şasiu cu bandă dublă adezivă.
Fig 5.9 Montarea plăcii Arduino
48
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 49/69
J. Se conectează placa Ardumoto la placa Arduino UNO.
Fig. 5.10 Montarea plăcii Ardumoto
K . Ansamblul robotului cu kit Arduino
Fig. 5.11 Robotul mobil cu kit Arduino
49
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 50/69
5.2 Conectarea senzorului infraroşu Sharp la placa Arduino UNO
Senzorul de distanţă Sharp este o componentă care poate fi utilizată împreună cu
Arduino pentru a măsura distanţa până la diverse obiecte înconjurătoare.
Dispozitivul dispune de trei pini, doi dintre ei fiind pini de alimentare (GND şi Vcc),
iar cel de-al treilea fiind pinul care dă indicaţii asupra distanţei, prin port-serialul prezentat pe
acesta.
Fig.5.12 Aşezarea pinilor senzorului Sharp
Fig. 5.13 Conectarea senzorului în circuit
50
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 51/69
5.2.1 Principiul de funcţionare
Senzorul emite un puls de raza infrarosie de lungime de unda 850 nm ± 70nm. Daca un
obiect este in raza de actiune si in calea razei IR, acesta va reflecta raza inapoi spre senzor.
Senzorul face citirile cu o frecventa de aproximativ 24 Hz si raporteaza datele sub forma de
tensiune (marime analogica). Aceasta tensiune va suferi o conversie pe 8 biti la nivelul CAN-
ului prezent pe microcontrollerul Atmega8. Marimea analogica este convertita in Volti, iar
apoi, printr-o functie de liniarizare obtinuta din diagrama oferita de Sharp pentru acest senzor,
vom obtine rezultatul final.
Fig. 5.14 Schema principiului de funcţionare
51
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 52/69
5.3 Conectarea motoarelor de curent continuu
Robotul realizat este pus în mişcare de către două motoare de curent continuu.
Motoarele sunt montate la o cutie de viteze Tamya care oferă un raport de transmisie 58:1.
Fiecare motor este actionat independent.
Motoarele funcţionează la o tensiune variabilă între 3 şi 6 Volţi. Tensiunea de care are
nevoie fiecare motor este furnizată de către placa de dezvoltare Ardumoto care este conectată
cu placa Arduino.
Microcontrolerul ATMega328 de pe placa Arduino realizează controlul motoarelor.
5.3.1Realizarea controlului motoarelor de curent continuu
Motoarele sunt controlate prin intermediul unui Dual FULL-BRIDGE DRIVER L298.
A fost construit un PCB special (Ardumoto) pentru controlul acestui driver de motoare şi a
circuitului său de protectie. L298 primeşte 8 intrări de la Atmega32: 4 intrari 0/1 care comandăsensul de rotaţie al motoarelor (porturile C0-C3), 2 intrări de PWM pe pinii de ENABLE A,
ENABLE de la OCR0 (PB3) şi OCR2 (PD7) pentru a controla turaţia motoarelor şi VCC şi
GND de la extensia header a portului B.
De obicei, este nevoie în aplicaţiile practice să comandăm un motor în ambele sensuri.
Acest lucru se poate realiza folosind o punte H pe post de amplificator (driver).
Puntea H este în principiu un circuit cu patru întreruptoare, ce acţionează câte două
odata pe diagonală, pentru a schimba sensul de rotaţie al motorului. Aceste întreruptoare sau
comutatoare sunt realizate de obicei cu tranzistoare MOS-FET sau cu tranzistoare Darlington.
Fig. 5.15 Schema punţii H simplificată
52
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 53/69
Schema unei punţi H folosind dispozitive discrete este prezentată in figura 5.16. Astfel,
tranzistoarele utilizate sunt de tip PNP şi la fiecare sens de rotaţie sunt în conducţie două din
ele. Diodele au rol de protecţie sau de blocare a celorlalte două tranzistoare. Montajul este
alimentat la 12V şi comandă pe baza tranzistoarelor tip NPN este de 5V şi vine de la
microcontroler.
Fig. 5.16 Schema de principiu a punţii H
Un astfel de circuit integrat amplificator sau driver pentru comanda motorului de
curent continuu este şi L298P. Cu acest circuit integrat putem comanda două motoare decurent continuu odată. Este alimentat la 6V şi poate schimba şi sensul de rotaţie a celor două
motoare.
Fig. 5.17 Schema circuitului L298P
53
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 54/69
Astfel, dacă la pinul 4 vom avea o tensiune de 5V şi la pinul 5 vom trimite o tensiune
de 0V, atunci motorul A din stanga circuitului integrat se va roti într-un sens. Dacă schimbăm
tensiunile prezente la intrările de comandă, adică la pinul 4 să trimitem o tensiune de 0V şi la
pinul 5 o tensiune de 5V, atunci motorul A se va roti în sensul opus. Asemănător, funcţionarea
motorului B este comandată în acelaşi mod, doar că aceste comenzi se dau pe pinii 6 şi 7 ai
circuitului integrat.
5.4 Conectarea servomotorului la placa Arduino
Comanda servomotorului se realizează de pe pinul 9 iar citirea distanţei de pe pinul
A0, după cum se poate observa şi în figura 5.18.
Fig.5.14 Conectarea servomotorului la placa ArduinoUnde:
-firul rosu este comanda servomotorului;
-firul negru e pentru a uni masele sursei de alimentare cu a lui Arduino;
-firul alb este pentru citirea datelor de la senzor;
54
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 55/69
CAPITOLUL 6: Programarea robotului
6.1 Microcontrolerul ATmega 328
ATMega328 cu Arduino bootloader (Uno). Acest microcontroller vă permite să
utilizaţi programe Arduino în proiectul dumneavoastră fără să utilizaţi o placă arduino. Pentrua putea funcţiona cu Arduino IDE acest microcontroller are nevoie de un cristal extern de 16
Mhz sau de un rezonator, de o sursa de alimentare de 5V si de o conexiune serială.
Fig. 6.1 Microcontrolerul ATMega328
6.1.1 Memoria
ATmega328 are 32 KB (cu 0,5 KB utilizaţi pentru bootloader). Ea are, de asemenea, 2
KB SRAM şi 1 KB de EEPROM.
55
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 56/69
6.1.2 Specificaţii tehnice
Tabelul 6.1
Microcontroler ATmega328p-puFamilia de microcontrolere AtmegaTip interfaţă I2C, SPI USARTDimensiune nucleu 8 bitiVoltajul de intrare (limitare) 1.8V-5.5VPini digitali I/O 23 (din care 6 pot fi folositi ca PWM)Număr intrări ADC 6Oscilator de tip intern, externNumar de contoare 3Formă capsule PDIPTemperatura de operare -40 ° C la +85 ° CDC Curent pentru pinii de I/O 40 mADC Curent pentru pinul de 3.3V 50 mAMemoria 32 KB din care 8 KB utilizati de bootloader SRAM 2 KBEEPROM 1 KBClock Speed 20 MHzPeriferice ADC, Comparator, RTC, Timer, PWMSet de instrucţiuni Arhitectura RISC
6.2 Programarea placiiAceastă secţiune va presupune că aveţi un PC pe care rulează Microsoft Windows sau
un Mac OSX (10.3.9 sau ulterior). În cazul în care utilizaţi Linux ca sistem de operare, atunci
se va referi la ” Getting Started instructions on the ARDUINO” de pe site-ul Arduino.
A. Luati Arduino şi cablul USB A-B
În primul rând, luaţi placa ARDUINO şi aşezaţi-o pe masă în faţa dumneavoastră.
Luaţi cablul de USB şi conectaţi-l cu mufa B (partea mai goasă si dreptunghiulară) în mufa de
USB de la Arduino.
56
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 57/69
Fig. 6.1 Cablu USB
După aceasta etapă NU se conectează ARDUINO la PC sau Mac încă.
B. Descărcare Arduino IDE (Software pentru programare)Descărcaţi Arduino IDE de la secţiunea de download de pe www.arduino.cc. În
momentul de faţă, cea mai recentă versiune de software Arduino IDE este 0022, urmând ca
actualizările să se facă în momentul apariţiilor unor versiuni noi. Fişierul este un fişier de tip
ZIP astfel încât veţi fi nevoiţi să-l dezarhivaţi (Un utilitar bun este WinRAR ). Odată ce
descarcărea s-a terminat, dezarhivaţi arhiva de tipul ZIP, asigurându-vă că s-a păstrat structura
de foldere aşa cum este şi nu trebuie făcute nici un fel de schimbări în componenta softului.
Dacă faceţi dublu-clic pe dosarul creat, veţi vedea câteva fişiere şi sub-dosare în
interiorul acestuia.
C. Instalarea driverului pentru USB
Dacă utilizaţi Windows, veţi găsi driverele în directorul numit “drivers/FTDI USB
Drivers” din Arduino. În etapa urmatoare (“Conectarea plăcii de dezvoltare Arduino“), veţi
alege calea în fereastra “Window`s Add New Hardware wizard” către driverele indicate mai
sus.
Dacă aveţi un calculator cu sistem de operare Mac, driverele pentru microcontroler
sunt în directorul cu drivere. Dacă aveţi un Mac mai vechi ca un PowerBook, iBook, G4 sau
G5, trebuie să utilizati drivere PPC: FTDIUSBSerialDriver_v2_1_9.dmg. Dacă aveţi un Mac
mai nou, cu un cip Intel, aveţi nevoie de driverele de Intel: FTDIUSBSerial
Driver_v2_2_9_Intel.dmg. Dublu-click pentru a monta imaginea de disc şi alegeţi
57
A B
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 58/69
FTDIUSBSerialDriver.pkg. Cea mai recentă versiune a driverelor poate fi gasită pe site-
ul FTDI.
Fig. 6.2 Manualul electronic al software-ului
D. Conectaţi placa de dezvoltare Arduino
În primul rând, asiguraţi-vă că jumperul de selectare a alimentării, între alimentare
externă şi mufa USB, este setat la USB şi nu la alimentare externă (nu se aplică în cazul în
care aveţi un microcontroler Arduino, care are o funcţie Auto Power Select).
58
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 59/69
Fig. 6.3 Jumperul de selectare a alimentăriiFolosind acest jumper puteţi: fie alimenta microcontrolerul de la Portul USB (bun
pentru curenţi slabi, aplicaţii cu LED-uri, etc) sau de la o alimentare externa (6-12V DC –
Curent Continu). Acum, conectaţi celalalt capăt al cablului USB (A) în mufa de USB de pe PC
sau Mac. Veţi vedea acum LED-ul de putere mică (marcat PWR mai sus de comutatorul
RESET) se va aprinde pentru a vă arăta alimentarea microcontrolerului.
Dacă aveţi un Mac, această etapă a procesului este completă şi puteţi trece la capitolul
următor. În cazul în care sunteţi utilizator de Microsoft Windows, există caţiva paşi în plus
pentru a completa instalarea.
În timp ce sistemul de operare Microsoft Windows va detecta că s-a conectat o nouă
placă hardware (microcontrolerul Arduino) la PC, va apărea fereastra Found New Hardware
Wizard. Bifaţi “NO, not this time” (figura 6.4) pentru a nu se conecta la Windows Update
(Selectaţi Nu, nu în acest moment) şi apoi faceţi clic pe Next.
59
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 60/69
Fig. 6.4 Fereastra „Found New Hardware” a Windows-uluiÎn pagina următoare (figura 6.5) selectaţi “Install from a list or specific location
(Advanced)” şi apoi faceţi clic pe Next.
Fig. 6.5
Asiguraţi-vă că “Search for the best driver in these locations” este verificat.
Debifaţi “Search removable media”. Bifaţi “Include this location in the search” şi apoi faceţi
click pe Butonul Browse. Răsfoiţi la locaţia de drivere pentru USB şi apoi faceţi click pe Next.
(Figura 6.6)
60
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 61/69
Fig. 6.6
Windows-ul va căuta acum pentru un driver potrivit, vă va informa că un “USB Serial
Convertor” a fost găsit şi a constatat că expertul hardware este acum complet. Faceţi clic pe
Finish. (Figura 6.7)
Fig. 6.6
Acum sunteţi pregătit pentru a încarca primul “Sketch” pe microcontrolerul Arduino.
61
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 62/69
6.3 Programul robotului
// Compact, a small Arduino (UNO) robot
// 2 Pololu micro motors 100:1 and small wheels,
// one HXT900 micro servo, one Sharp IR sensor,
// 2 AAA battery holders, the Robot Builder's Shield
//
// Arduino pinout:
//
// Shield Funct Arduino ATmega168 Arduino Funct Shield
// +-----\/----+
// Reset 1| PC6 PC5 |28 D19 A5 SCL
// Rx D0 2| PD0 PC4 |27 D18 A4 SDA
// Tx D1 3| PD1 PC3 |26 D17 A3
// Int0 D2 4| PD2 PC2 |25 D16 A2
// Int1 D3 5| PD3 PC1 |24 D15 A1
// M1B D4 6| PD4 PC0 |23 D14 A0 IR sensor
// 7| VCC GND |22
// 8| GND AREF |21
// Xtal 9| PB6 AVCC |20
// Xtal 10| PB7 PB5 |19 D13 SCK LED
// M1A OC0B D5 11| PD5 PB4 |18 D12 MISO Pan servo
// M2A OC0A D6 12| PD6 PB3 |17 D11 OC2A MOSI
// M2B D7 13| PD7 PB2 |16 D10 OC1B
// D8 14| PB0 PB1 |15 D 9 OC1A
// +-----------+
//
#include
//Inputs/outputs
#define Motor_1_PWM 5 // digital pin 5 // Right Motor
#define Motor_1_Dir 4 // digital pin 4
#define Motor_2_PWM 6 // digital pin 6 // Left Motor
#define Motor_2_Dir 7 // digital pin 7
62
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 63/69
#define IR_Pin 14 // digital pin 14 (analog pin 0)
#define PanPin 12
#define LedPin 13
#define SR 1 //Sharp Short Range sensor
#define MR 2 //Sharp Medium Range sensor
#define LR 3 //Sharp Long Range sensor
#define center 90
//Variables
byte dir=0;
byte speed1=250;byte speed2=255;int turn90=110;
int turn45=55;
int straight=500;int stopTime=200;
int IRdistance=0;
int treshold=20; //20cm min distance
Servo Pan;//-----------------------------------------------------------------------------
void setup() {
// set motor pins as output and LOW so the motors are breaked
pinMode(Motor_1_PWM, OUTPUT);
pinMode(Motor_1_Dir, OUTPUT);
pinMode(Motor_2_PWM, OUTPUT);pinMode(Motor_2_Dir, OUTPUT);
Stop();
Pan.attach(PanPin);
Pan.write(center); //90
63
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 64/69
StepDelay();
pinMode(LedPin, OUTPUT);
digitalWrite(LedPin, LOW);
Serial.begin (19200);
Serial.println("start");
Forward();
}
void loop(){
Drive();
//square();
}
void square(){
Forward();
delay(straight);
Stop();
delay(stopTime);
Right();
delay(turn90);
Stop();
delay(stopTime);
Forward();
delay(straight);
Stop();
delay(stopTime);
Right();
delay(turn90);
Stop();
delay(stopTime);
Forward();
64
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 65/69
delay(straight);
Stop();
delay(stopTime);
Right();
delay(turn90);
Stop();
delay(stopTime);
Forward();
delay(straight);
Stop();
delay(stopTime);
Right();
delay(turn90);Stop();
delay(stopTime);
}
//--------------------------
void Drive(){
IRdistance=Read_Sharp_Sensor(MR, IR_Pin);
Serial.print("IRdistance ");
Serial.println(IRdistance);
if (IRdistance<10){
Stop();
StepDelay();
TurnAround();
}
if (IRdistance<5; i++){
Pan.write(i*45);
StepDelay();StepDelay();
IRdistance=Read_Sharp_Sensor(MR, IR_Pin);
if (IRdistance>prev){
dir=i;
prev=IRdistance;
}
65
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 66/69
}
Pan.write(center);
StepDelay();
switch (dir){
case 0:
Right();
delay(turn90);
Stop();
StepDelay();
break;
case 1:
Right();
delay(turn90); //turn45
Stop();
StepDelay();
break;
case 2:
Forward();
break;
case 3:
Left();
delay(turn90); //turn45
Stop();
StepDelay();
break;
case 4:
Left();
delay(turn90);
Stop();
StepDelay();
break;
}
delay(500);
}
66
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 67/69
// Read Sensors
int Read_Sharp_Sensor(byte model, byte pin) {
int value = 0;
value = analogRead(pin);
switch (model) {
case SR: //short range, aka GP2D120 (4-30cm)return (2914/(value+5))-1;
break;
case MR: //medium range, aka GP2D12 (10-80cm)
return 5*1384.4*pow(value,-.9988); //I had to multiply by 5, differentsensor
break;
case LR: //long range, aka GP2Y0A02YK (20-150cm)return 11441*pow(value,-.9792);
break;
}
}
void StepDelay() {for (byte t=0; t<10; t++){
delay(20);
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void Forward(){
digitalWrite(Motor_1_Dir, LOW); // forwarddigitalWrite(Motor_2_Dir, LOW); // forward
analogWrite(Motor_1_PWM, speed1); //
analogWrite(Motor_2_PWM, speed2); //
return;
}
67
7/16/2019 licenta
http://slidepdf.com/reader/full/licenta-563384a4dcd9a 68/69
void Reverse(){
digitalWrite(Motor_1_Dir, HIGH); // reverse
digitalWrite(Motor_2_Dir, HIGH); // reverse
analogWrite(Motor_1_PWM, 255-speed1); //
analogWrite(Motor_2_PWM, 255-speed2); //
return;
}
void Right(){
digitalWrite(Motor_1_Dir, HIGH); // reverse
digitalWrite(Motor_2_Dir, LOW); // forward
analogWrite(Motor_1_PWM, 255-speed1); //
analogWrite(Motor_2_PWM, speed2); //
return;
}
void Left(){
digitalWrite(Motor_1_Dir, LOW); // forward
digitalWrite(Motor_2_Dir, HIGH); // reverse
analogWrite(Motor_1_PWM, speed1); //analogWrite(Motor_2_PWM, 255-speed2); //
return;
}
void Stop()
{
digitalWrite(Motor_1_PWM, LOW);
digitalWrite(Motor_1_Dir, LOW);
digitalWrite(Motor_2_PWM, LOW);digitalWrite(Motor_2_Dir, LOW);
return;
}
68
top related