licenta

69
CONSTRUC ŢIA UNUI ROBOT MOBIL CU KIT  ARDUINO Capitolul 1: Introducere 1.1 In troduc er e în Mectronic ă Fig. 1.1 Conceptul de mecatronică Ter men ul "mecat ron ică " a fos t ut ili zat pen tru pri ma dat ă în anu l 1975 de căt re concernul japo nez Yas kawa Ele ctri c Cor pora tio n , fiin d o pres cu rt ar e 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 timpu l, noţ iunea de mec atr onică şi-a schimbat sensul şi şi- a extins aria de def in i ţ i e: 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. To tu ş i, me catronica nu es te acelaş i lucru cu automati ca sau cu auto mati zarea  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 nevoi le ingineriei şi ed ucaţiei. 1

Transcript of licenta

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

7/16/2019 licenta

http://slidepdf.com/reader/full/licenta-563384a4dcd9a 69/69