Sunteți pe pagina 1din 69

CONSTRUCIA UNUI ROBOT MOBIL CU KIT ARDUINO

Capitolul 1: Introducere 1.1 Introducere n Mectronic

Fig. 1.1 Conceptul de mecatronic

Termenul "mecatronic" a fost utilizat pentru prima dat n anul 1975 de ctre concernul japonez Yaskawa Electric Corporation , fiind o prescurtare a cuvintelor Mechanica-Electronica-Informatica. La nceput, mecatronica a fost ineleas ca o completare a componentelor mecanicii de precizie, aparatul de fotografiat cu bli fiind un exemplu clasic de aplicaie mecatronic. Cu timpul, noiunea de mecatronic i-a schimbat sensul i i-a extins aria de definiie: mecatronica a devenit tiina inginereasc bazat pe disciplinele clasice ale construciei de maini, electrotehnicii, electronicii i informaticii. Scopul acestei tiine este mbuntirea funcionalitii utilajelor i sistemelor tehnice prin unirea disciplinelor componente ntr-un tot unitar. Totui, mecatronica nu este acelai lucru cu automatica sau cu automatizarea produciei. Acetia sunt termeni care apar i n afara domeniului MECATRONIC, dar sunt i inclusi n el. Mecatronica poate fi definit ca o concepie inovatoare a tehnicii de automatizare pentru nevoile ingineriei i educaiei.
1

Mecatronica s-a nascut ca tehnologie i a devenit filosofie care s-a rspndit n ntreaga lume. n ultimi ani, mecatronica este definit simplu: tiina mainilor inteligente. Ca o concluzie, se poate spune c mecatronica este o sfer interdisciplinar a tiinei i tehnicii care se ocup n general de problemele mecanicii, electronicii i informaticii. Totui, 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 microprocesrii informaiei, tehnica reglrii i altele.

1.2

Introducere n Robotic

Fig. 1.2 Depozit automatizat

Unul din cele mai importante aspecte n evoluia fiinei umane este folosirea uneltelor care s simplifice munca fizic. n aceast categorie se nscriu i roboii, ei ocupnd totui o poziie privilegiat datorit complexitii lor. Noiunea 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 jucrii automate i mecanisme inteligente sau i-a imaginat roboii n desene, cri, filme "SF" etc. Revoluia informatic a marcat saltul de la societatea industrializat la societatea avansat informatizat genernd un val de nnoiri n tehnologie i n educaie. Acest lucru a dus i la apariia roboilor. 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

ucide omul. Multe filme au continuat s arate c roboii sunt mainrii duntoare i distrugtoare. Revoluia informatic a marcat saltul de la societatea industrializat la societatea avansat informatizat genernd un val de nnoiri n tehnologie i n educaie permind realizarea de roboi. Roboii ofer beneficii substaniale muncitorilor, industriilor si implicit rilor. n situaia folosirii n scopuri panice, roboii industriali pot influena pozitiv calitatea vieii oamenilor prin nlocuirea acestora n spaii periculoase, cu condiii de medii duntoare omului, cu condiii necunoscute de exploatare etc.

1.3

Introducere n microcontrolere

Circumstanele n care ne gsim astzi n domeniul microcontrolerelor i-au avut nceputurile n dezvoltarea tehnologiei circuitelor integrate. Aceast dezvoltare a fcut posibil nmagazinarea a sute de mii de tranzistoare ntr-un singur cip. Aceasta a fost o premiz pentru producia de microprocesoare, i primele calculatoare au fost fcute prin adugarea perifericelor ca memorie, linii intrare-ieire, timer-i i altele. Urmtoarea cretere a volumului capsulei a dus la crearea circuitelor integrate. Aceste circuite integrate conin atat procesorul ct i perifericele. Aa s-a ntamplat cum primul cip coninnd un microcalculator, sau ce va deveni cunoscut mai trziu 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 interaciuni caracteristice cu mediul exterior, fr s fie necesar intervenia 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 iniial pe baza logicii cablate (cu circuite integrate numerice standard SSI i MSI ) i a unei electronici analogice uneori complexe, motiv pentru care "strluceau" prin dimensiuni mari, consum energetic pe msur i, nu de puine ori, o fiabilitate care lsa de dorit. Apariia i utilizarea microprocesoarelor de uz general a dus la o reducere consistent a costurilor, dimensiunilor, consumului i o mbuntire a fiabilitii. Exist i la ora actual o
3

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 msur ce procesul de miniaturizare a continuat, a fost posibil ca majoritatea componentelor necesare realizrii 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 soluie (nu n sens exhaustiv !) a problemei controlului cu ajutorul a (aproape) unui singur circuit. Legat de denumiri i acronime utilizate, aa cum un microprocesor de uz general este desemnat prin MPU (MicroProcessor Unit), un microcontroler este, de regul, desemnat ca MCU, dei semnificaia iniial a acestui acronim este MicroComputer Unit. O definiie, 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 interaciunea cu mediul exterior. Resursele integrate la nivelul microcircuitului ar trebui s includ, cel puin, urmtoarele 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 - intrri/ieiri numerice (de tip port paralel) e. un port serial de tip asincron i/sau sincron, programabil f. un sistem de timere-temporizatoare/numrtoare programabile Este posibil ca la acestea s fie adugate, 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 ieiri PWM (cu modulare n durat) i. un comparator analogic j. o memorie de date nevolatil de tip EEPROM k. faciliti suplimentare pentru sistemul de temporizare/numrare (captare i comparare) l. un ceas de gard (timer de tip watchdog) m. faciliti pentru optimizarea consumului propriu
4

Un microcontroler tipic mai are, la nivelul unitii centrale, faciliti de prelucrare a informaiei la nivel de bit, de acces direct i uor la intrri/ieiri i un mecanism de prelucrare a ntreruperilor rapid i eficient. Utilizarea unui microcontroler constituie o soluie prin care se poate reduce dramatic numrul componentelor electronice precum i costul proiectrii i al dezvoltrii unui produs. OBSERVAIE Utilizarea unui microcontroler, orict de evoluat, nu elimin unele componente ale interfeei cu mediul exterior (atunci cnd ele sunt chiar necesare): subsisteme de prelucrare analogic (amplificare, redresare, filtrare, protecie-limitare), elemente pentru realizarea izolrii galvanice (optocuploare, transformatoare), elemente de comutaie de putere (tranzistoare de putere, relee electromecanice sau statice).

1.3.2 Unde sunt utilizate microcontrolerele?


Toate aplicaiile n care se utilizeaz microcontrolere fac parte din categoria aa ziselor sisteme ncapsulate-integrate (embedded systems), la care existena 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 fabricaie-producie este un alt mare beneficiar: CNC Computerised Numerical Controls- comenzi numerice pentru mainile unelte, automate programabile- PLC, linii flexibile de fabricaie, etc.). Indiferent de natura procesului automatizat sarcinile specifice pot fi eventual distribuite la un mare numr 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 meniona: n industria de automobile (controlul aprinderii/motorului, climatizare, diagnoz, sisteme de alarm, etc.), n aa zisa electronic de consum (sisteme audio, televizoare, camere video i videocasetofoane, telefonie mobil, GPS-uri, jocuri electronice, etc.), n aparatura electrocasnic (maini de splat, frigidere, cuptoare cu microunde, aspiratoare), n controlul mediului i climatizare (sere, locuine, hale industriale), n industria aerospaial, n mijloacele moderne de msurare instrumentaie (aparate de msur, senzori i traductoare inteligente), la realizarea de periferice pentru calculatoare, n medicin.
5

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 destinaie) dezvoltat la Universitatea din Freiburg utilizeaz, intr-o variant a sa, 11 microcontrolere conectate similar. Un numr foarte mare de microcontrolere sunt folosite i de aa zisele jucrii inteligente, din care capetele de serie cele mai cunoscute sunt cei doi roboi, unul canin i altul umanoid: AIBO (figura 1.4) i ASIMO (figura 1.5). ASIMO folosete 26 de microcontrolere numai pentru controlul individual al celor 26 de elemente de acionare inteligente (motoare). Tot n categoria roboilor umanoizi intra i QRIO sau HOAP-1. Roboii respectivi sunt produi 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 clasa S utiliza 63 de microcontrolere. Practic, dei am prezentat ca exemple concrete numai sisteme robotice i mecatronice, este foarte greu de gsit un domeniu de aplicaii n care s nu se utilizeze microcontrolerele.

Fig. 1.4 AIBO

Fig. 1.3 Johnnie

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 piaa de microcontrolere a fost modalitatea simpl de nscriere a programului (serial, necesit doar trei fire), memoria program coninut n aceeai capsul, noua tehnologie CMOS de realizare (deci consum redus) i preul relativ sczut. 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 aplicaii deoarece permit tergerea programului i renscrierea 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. Funcional i tehnologic sunt identice cu cele "windowed", doar c nu au prevazut fereastra de cuar, deci programul odata nscris nu mai poate fi ters. Deci o aplicaie gata dezvoltat i incercat cu o versiune "windowed" poate fi multiplicata pentru producie de serie n capsule "OTP" care sunt de cteva ori mai ieftine. Aceste dou versiuni, Windowed si OTP sint realizate in tehnologie CMOS EPROM.
7

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 bii de mic putere bazat pe arhitectura RISC AVR mbunatait. Dispune de un set de 131 instruciuni i 32 de regitri de uz general. Cele 32 de registre sunt direct adresabile de Unitatea Logica Aritmetica (ALU), permind accesarea a doua registre independente ntr-o singur instruciune. Se obine astfel o eficien sporit in execuie (de pn la zece ori mai rapide dect microcontrorelerele convenionale CISC). ATmega16 este un microcontroler RISC pe 8 bii realizat de firma Atmel. Caracteristicile principale ale acestuia sunt: -16KB de memorie Flash reinscripibil pentru stocarea programelor -1KB de memorie RAM -512B de memorie EEPROM -dou numrtoare/temporizatoare de 8 bii -un numrtor/temporizator de 16 bii
8

-conine un convertor analog digital de 10 bii, cu intrri multiple -conine un comparator analogic -conine un modul USART pentru comunicaie 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 construcia, descrierea, utilizarea i programarea unui robot mobil cu senzori infrarou, care poate evita orice coleziune cu vre-un obstacol. Robotul este dotat cu dou motoare de current continuu i cutie de viteza Tamya, senzor infrarou 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 direcia de deplasare.

Capitolul 2: Roboi mobili 2.1 Introducere n roboi mobili


Robotul mobil este un sistem complex care poate efectua diferite activiti ntr-o varietate de situaii specifice lumii reale. El este o combinaie de dispozitive echipate cu servomotoare i senzori (aflate sub controlul unui sistem ierarhic de calcul) ce opereaz ntrun spaiu real, marcat de o serie de proprieti fizice (de exemplu gravitaia care influeneaz micarea tuturor roboilor care funcioneaz pe pmnt) i care trebuie s planifice micrile astfel nct robotul s poat realiza o sarcin n funcie de starea iniial a sistemului i n funcie de informaia apriori existent, legat de mediul de lucru. Succesul n ndeplinirea acestor sarcini depinde att de cunotinele pe care robotul le are asupra configuraiei iniiale a spaiului de lucru, ct i de cele obinute pe parcursul evoluiei sale. Problemele specifice ce apar la roboii mobili ar fi urmtoarele: evitarea impactului cu obiectele staionare sau n micare, determinarea poziiei i orientrii robotului pe teren, planificarea unei traiectorii optime de micare. n cazul unui sistem robotic automat distribuit poziiile spaiale sunt de o extrem importan i de ele depinde ndeplinirea scopurilor dorite i funcionarea ntregului sistem. Cu alte cuvinte, robotul trebuie s fie capabil s-i planifice micrile, s decid automat ce micri s execute pentru a ndeplini o sarcin, n funcie de aranjamentul momentan al obiectelor din spaiul de lucru. Planificarea micrilor nu const dintr-o problem unic i bine determinat, ci dintrun ansamblu de probleme dintre care unele sunt mai mult sau mai puin variante ale celorlalte. Evitare coliziunii cu obstacole fixe sau mobile (de exemplu ali roboi mobili) aflate n spaiul de lucru al robotului se poate face prin mai multe metode: realizarea unei aprtori mecanice care prin deformare oprete robotul, folosireasenzorilor care msoar distana pn la obstacolele de pe direcia dedeplasare, folosirea senzorilor de proximitate, folosirea informaiilor corelate de la mai multe tipuri de senzori. Localizarea obiectelor se poate realiza i prin contact fizic, dar acesta impune restricii asupra vitezei de micare a structurii manipulate. Contactul fizic dintre robot i obiectele din mediu genereaz fore de reaciune care modific starea robotului. Vitezele mari de lucru fac
10

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 fr o determinare a poziiei i orientrii fa de un sistem de coordonate fix, dar aceast informaie este util pentru sisteme de comand a micrii. Dintre metodele de navigaie mai des utilizate se pot meniona: msurarea numrului de rotaii fcute de roile motoare, folosirea de acceleratoare i giroscoape, geamanduri electromagnetice instalate n teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.

2.2 Clasificarea roboilor mobili


Roboii mobili se clasific astfel: n funcie de dimensiuni: macro, micro i nano-roboi; n funcie de mediul n care acioneaz: roboi teretri se deplaseaz pe sol, roboi subacvatici n ap, roboi zburtori n aer, roboi extrateretri pe solul altor planete sau n spaiul cosmic; n funcie de sistemul care le permite deplasarea n mediul n care acioneaz exist de exemplu pentru deplasarea pe sol: 1. roboi pe roi sau enile 2. roboi pitori: bipezi, patrupezi, hexapozi, miriapozi; 3. roboi trtori: care imit micarea unui arpe, care imit micarea unei rme etc.; 4. roboi sritori, care imit deplasarea broatelor, cangurilor etc.; 5. roboi de form sferic (se deplaseaz prin rostogolire) etc.

Fig. 2.1 Exemple de roboi mobili

11

2.3 Utilizarea roboilor mobili


Utilizrile pentru care au fost, sunt i vor fi concepui roboii mobili sunt dintre cele mai diverse. Muli roboi din zona micro i gsesc utilizarea n medicin, fiind capabili s se deplaseze de-a lungul vaselor i tuburilor corpului omenesc, n scopul investigaiilor, interveniilor chirurgicale, dozrii i distribuirii de medicamente etc. La fel de spectaculoase sunt i multe utilizri ale macro-roboilor: n domeniul industrial, agricol, forestier: n domeniul industrial roboii mobili sunt

reprezentai de AGV-uri (Automated-Guided Vehicles), vehicule pe roi, cu ghidare automat, care transport i manipuleaz piese, constituind o alternativ flexibil la benzile de montaj; n agricultur exist tractoare i maini agricole fr pilot, capabile s execute singure lucrrile pe suprafeele pentru care au fost programate; n domeniul forestier roboii mobili pot escalada copacii nali; n domeniul militar: este luat n considerare de ctre armata american perspective nlocuirii soldailor combatani cu roboi, pentru a reduce riscul pierderilor umane n lupt; roboi mobili de cele mai ingenioase i robuste configuraii sunt aruncai n cldi i incinte din zone de conflict, n scopuri de investigare i chiar anihilare a inamicului;

12

Fig. 2.2 Sistem Integrat Telecomandat pentru Deminare

n domeniul utilitilor publice: una dintre cele mai utile i economice utilizri ale

roboilor mobili o reprezint inspectarea conductelor de combustibili gazoi i lichizi i a canalelor de canalizare. De exemplu reeaua de canalizare a Germaniei nsumeaz 400.000 km, iar inspectarea i curirea acesteia presupune costuri de 3,6 Euro pe metru. Numai 20% din conducte sunt accesibile, iar utilizarea roboilor poate reduce costurile cu un sfert. n domeniul distractiv i recreativ: sunt roboii-jucrii, roboii pentru competiii n domeniul serviciilor: Exist posibiliti deosebit de largi de implementare. Sunt roboi pentru: deservirea bolnavilor n spitale; ajutorarea persoanelor btrne sau cu diferite handicapuri; ghidarea i informarea publicului n muzee aspirarea i curirea ncperilor; splarea geamurilor i a pereilor cldirilor; n domeniul securitii: Multe operaii de inspectare i dezamorsare a unor obiecte i bagaje suspecte sunt executate de roboi; n domeniul operaiilor de salvare: Roboii salvatori (Rescue robots) sunt utilizai n

operaiile de salvare a victimelor unor calamiti: cutremure, incendii , inundaii.

2.4 Caracteristici comune roboilor mobili


Roboii mobili au urmtoarele caracteristici comune: 1. 2. 3. structura mecanic este un lan cinematic serie sau paralel respectiv tip master-slave; sistemul de acionare utilizat este electric pentru sarcini mici i medii i hidraulic sistemul senzorial utilizeaz senzori interni (de turaie, poziie, efort) la nivelul

pentru sarcini mari; articulaiilor, senzori externi(camere TV) pentru scanarea mediului i senzori de securitate( de proximitate, de prezen cu ultrasunete); 4. 5. sistemul de comand este ierarhizat, de obicei multiprocesor; limbajele de programare utilizate sunt preluate de la roboii staionari.

2.5 Structura roboilor mobili


Structura roboilor mobili (RM) corespunde arhitecturii generale a roboilor, avnd dou pri:

A. Structura mecanic, respectiv manipulatorul, care determin performanele tehnice;


13

Structura mecanic a roboilor mobili este format din: sistemul de locomoie (pe enile sau roi), prin care se asigur deplasarea robotului pe sistemul de manipulare, care asigur poziionarea i orientarea organului de lucru. Robotul mobil n procesul de deplasare pe o anumuit traiectorie este caracterizat prin 3 funci: 1. funcia de locomoie; 2. funcia de percepie-decizie; 3. funcia de localizare;

o suprafa de lucru (n cadrul unei autonomii sporite);

B. Structura electronic, respectiv de comand-control, care condiioneaz calitatea performanelor.


Roboii mobili pot fii dotai cu camera video sau ali senzori de percepere al mediului n care activeaz. Memoria robotului coninut in microcontroler nmagazineaz cunotinele necesare localizrii tuturor segmentelor de traseu posibile. Indiferent de generaia robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate i cost reduse, la transmiterea micrii i adaptarea la structura mecanic a motoarelor electrice i hidraulice, la proiectarea minilor mecanice pentru a apuca obiecte de diferite forme. Referitor la structura electronic, posibilitile actuale permit folosirea a cte unui microprocesor pentru comanda fiecrui grad de mobilitate, precum i a altor microprocesoare specializate pentru tratarea semnalului senzorial. Robotul mobil interacioneaz cu mediul nconjurtor prin structura sa mecanic, asigurnd astfel deplasarea, poziionarea i orientarea organului de execuie.

14

Capitolul 3: Tipuri de roboi mobili 3.1 Robotul AIRAT2

Fig. 3.1 Robotul AIRAT2

AIRAT 2 este un robot micromouse care folosete un procesor CPU 8051. AIRAT 2 folosete senzori pentru a o recepta cnd se ntoarce napoi. Placa CPU folosete o plac JS8051-A2. Placa JS8051-A2 este foarte bine construit. Folosete 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 prevzut,oferindu-i posibilitatea utilizatorului de a ntelege mai bine nivelul inalt de cutare algoritmic a mouseului. Codul sursa C este implementat astfel nct programatorul poate dezvolta mai uor altgoritmi care pot fi testai cu ajutorul unui simulator si apoi implementat mouseului. n plus, LCD, comunicaie serial, controlul mouse-ului precum i alte funcii sunt furnizate sub form de librarie i fiiere surs. Pentru cei ce vor sa invee mouse-ul la un nivel nalt, AIRAT2 furnizeaz un mediu excelent de dezvoltare, teste algoritmice, precum i multe altele.
15

AIRAT 2 a aparut pe coperta publicaiei franceze MICROS&ROBOTS. Caracteristici ale robotului AIRAT2: - capabil de reglare proprie; nva din mers; - folosete 6 senzori dndu-i posibilitatea de a se deplasa pe diagonala; - uor de asamblat/dezasamblat; - port de rencrcare; - instrucii de asamblare i manual al utilizatorului; - include un simulator PC pentru accelerarea dezvoltrii; - librrii, coduri sursa C; - AIRAT2 baterie (NiMh-450).

Fig. 3.2 Bateria robotului AIRAT2

16

3.2 Robotul Pololu 3pi

Fig. 3.3 Robotul Pololu 3pi

Robotul pololulu 3pi este o platform mobil de nalt performan care conine dou motoare cu cutie de viteze, 5 senzori de reflexie, un LCD 8x2, un buzzer i trei butoane, toate conectate la un microcontroler programabil Atmega328. Capabil de viteze pana la 1 m/s, 3 pi este un excelent prim, pentru nceptori curajoi i un perfect al doilea robot pentru cei care vor s avanseze de la roboi neprogramabili. Robotul 3 pi este proiectat pentru a excela n competiii precum urmrirea liniei sau rezolvarea labirintelor. Are dimensiuni mici (diametru: 9.5 cm, greutate 83 g fr baterii) i i trebuie dect 4 baterii de tip AAA, n timp ce un sistem de alimentare unic pune n funciune motoarele la o tensiune constant de 9.25 v, tensiune independent de cea a nivelului de ncrcare. Regulatorul de tensiune i permite lui 3pi sa ajung la viteze de pn 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 nvee robotica i este o distracie in orice momente pentru cei care vor s invee programare C. Inima robotului este un microcontroler Atmel ATmega328P care ruleaza la o
17

frecven de 20 MHz alturi de un program de 32 KB, 2 KB de memorie RAM si 1KB de memorie EEPROM. Popularul compilator GNU C/C++ funcioneaz perfect cu 3pi, Atmel AVR Studio ofera un spaiu de dezvoltare confortabil i un set de librrii interesante oferite de Pololu si realizeaz interfarii cu componentele se face foarte uor. 3pi este deasemenea compatibil cu plcile 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

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 direcia motoarelor se poate controla din software-ul robotului, deoarece sunt controlate de catre PWM (Pulse Width Module). Robotul conine 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 activitii microcontrolerului. Modulul LCD are nevoie dect de un pin de intrare/ieire, +5v i masa pentru a funciona. Pentru a comunica cu microcontrolerul, modulul LCD are nevoie dect de simple comenzi de ieire. Alte pri 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 infrarou GP2D120 Placa cu senzori de reflexie
19

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 direcia 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 enumerm circuitul integrat L298P cu rol de punte H ce ndeplinete rolul de amplificare al semnalului de la pinii microcontrolerului i acionare de putere a motoarelor de curent continuu i circuitul integrat TL499 care are rol de stabilizator de tensiune. Pe lng aceasta mai avem dou motoare de curent continuu un sensor infrarou de distanta Sharp GP2D120 i alte componente mecanice care utilizeaz ca mediu de programare limbajul C. Robotul este conceput pe dou roi motrice din plastic cu membran de cauciuc iar pe asiu se mai gsete o sfera cu rol de echilbrare. Pentru a nnobila partea electronic robotul a fost dotat cu un senzor infrarou Sharp care ocolete obstacole i care deasemenea poate determina distana pn la un anumit obiect. Pentru ca senzorul Sharp s se poat mica acesta este montat pe un servomotor.
20

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

-Servomotor

-roti

4.2 Placa de dezvoltare Arduino


Componenta 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 intlnit variant) construit n jurul unui procesor de semnal i este capabil de a prelua date din mediul nconjurtor printr-o serie de senzori i de a efectua aciuni 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 este foarte similar cu limbajul C++. Ce este cu adevrat interesant este ecosistemul dezvoltat in jurul Arduino. Vorbim aici att despre comunitatea care este foarte activa, ct i despre numrul impresionant de dispozitive create special pentru Arduino.

22

Cteva exemple de senzori disponibili senzori de distan (capabili s msoare de la civa centimetri pn la 7-9 metri), senzori de sunet, senzori de cmp electromagnetic, senzori de fum, senzori de tip GPS, senzori de tip giroscopic, senzori de flux lichid (ca cei folosii 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 msoare concentratia de alcool n aerul expirat. Pentru a efectua aciuni 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 reeaua Ethernet (Ethernet Shield), componente pentru reea wireless, componente capabile s realizeze conectare pe reeaua de date GSM / 3G, sau componente de tip XBEE utile pentru a realiza comunicaii de tip personalizat. Platforma Arduino este disponibil ntr-o serie de variante, fiecare cu diferite capabiliti i dimensiuni.

4.2.1 Exemple de plci 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 conine tot ceea ce ai nevoie pentru a programa i utiliza placa. Acestuia i se poate aduga o varietate de Shild-uri (plac cu caracteristici speciale, specifice unor tipuri de aplicaii). Este similar cu Duemilanove, dar are un chip diferit USB-to-serial ATMega8U2, i cu un design nou de etichetare pentru a identifica mai uor intrrile i ieirile.

Fig. 4.1 Placa de dezvoltare Arduino UNO

23

B. Mega 2560 versiune a modelului Mega lansat cu Uno, aceast versiune dispune de Atmega2560, care are de dou ori mai mult spaiu pentru memorie, i folosete 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 utiliznd 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 intrri/ieiri digitale.

24

LED: 13. Exist un LED ncorporat n plac, conectat la pinul 13. Cand valoarea pe pin este HIGH, LEDul este aprins, cnd valoare este LOW, LEDul este stins. Placa Arduino UNO are 6 intrri analogice, denumite dela A0 la A5, fiecare ofer o rezoluie de 10 bii. Implicit, ieirile msoar de la masa la 5v, dei este posibil ca limita superioar s fie schimbat cu ajutorul pinului AREF si funcia analogReference().

Fig. 4.5 Placa de dezvoltare Arduino Duemilanove

F. LilyPad Proiectat pentru aplicaii uor de implementat pe materiale textile, acest microcontroler poate fi cusut pe estur i are o culoare atrgtoare, mov.

25

Fig. 4.6 Placa de dezvoltare Arduino LilyPad

G. Fio Proiectat pentru aplicaii fr 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 ncrcare a bateriei.

Fig. 4.6 Placa de dezvoltare Arduino Fio

H. Pro Acest plac de dezvoltare este conceput pentru utilizatorii avansai care doresc s ncorporeze aceast plac ntr-un proiect: este mai ieftin dect un Diecimila i uor 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 avansai care au nevoie de un cost sczut, plci de dezvoltare mici i care sunt dispui s fac ceva lucru suplimentar pentru a o putea utiliza n proiecte.

26

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 uor de asamblat, chiar ca un exercitiu de nvare. (Inclusiv scheme i fiiere 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 mn. Este puin mai mare dect Duemilanove, dar este compatibil cu toate shield-urile Arduino.

27

Fig. 4.10 Placa de dezvoltare Arduino Serial Single Sided

28

4.2.2 Placa Arduino UNO

Fig. 4.11 Elementele componente ale plcii Arduino UNO

A. Prezentare general Arduino Uno este o plac de procesare bazat pe microcontrollerul ATmega328. Are 14 pini de intrri\ieiri digitale (din care 6 pot fi utilizate ca ieiri PWM), 6 intrri analogice, un cristal oscilator de 16 MHz, o conexiune USB, o muf de alimentare, un ICSP, i un buton de resetare. Aceasta conine tot ceea ce este necesar pentru a ajuta la funcionarea microcontrolerului; pur i simplu conectai la un computer cu un cablu USB sau alimentai la un adaptor AC-DC sau baterie pentru a ncepe. Uno difer de toate plcile precedente, n sensul c nu folosete 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 plci Arduino USB, i modelul de referin pentru platforma Arduino.

29

B. Caracteristici
Tabelul 4.1

Microcontroler Tensiunea de funcionare Tensiune de intrare (recomandat) Tensiune de intrare (limite) Digital I / O Pins Analog Input Pins DC curent pe I / O Pin Actuale pentru Pin 3.3V DC Flash Memory SRAM EEPROM Viteza de ceas C. Alimentare

ATmega328 5V 7-12V 6-20V 14 (din care 6 prevd PWM de ieire) 6 40 mA 50 mA 32 KB (ATmega328), din care 0.5 Kb utilizate de bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz

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 funciona cu o surs extern de 6-20 voli. Dac este alimentat cu mai puin 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 supranclzi i deteriora placa. Intervalul recomandat este de 7-12 voli.

Pinii de putere sunt dup cum urmeaz:

30

V-IN. Tensiunea de intrare la placa Arduino atunci cnd folosete o surs de alimentare extern (spre deosebire de 5 voli 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 ctre USB sau o alt surs de tensiune de 5v .

3V3. O tensiune de 3.3V generat de ctre 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. Intrri i ieiri Fiecare din cei 14 pini digitali pot fi utilizai ca intrare sau ieire, folosind funciile pinMode () , digitalWrite () , i digitalRead (). Acetia funcioneaz la 5 voli. 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 funcii particulare: Serial: 0 (RX) i 1 (TX). Folosit pentru a primi i transmite date seriale TTL. Aceti pini sunt conectai la pinii corespunztori ai cipului ATmega8U2 USB-TTL; ntreruperile externe: 2 i 3. Aceti pini pot fi configurai pentru a declana o ntrerupere pe o valoare sczut, o limit cresctoare sau descresctoare, sau o schimbare n valoare. PWM: 5, 6, 9, 10, i 11. Ofer o ieire PVM de 8 bii cu funcia analogWrite (). SPI:10 (SS), 11 (Mosi), 12 (MISO), 13 (SCK). Aceti pini suport comunicaia SPI folosind biblioteca SPI . LED: 13. Exist un LED ncorporat n plac, conectat la pinul 13. Cnd valoarea pe pin este HIGH, LEDul este aprins, cnd valoare este LOW, LEDul este stins. Placa Arduino UNO are 6 intrri analogice, denumite de la A0 la A5, fiecare ofer o rezoluie de 10 bii. Implicit, ieirile msoar de la masa la 5V, dei este posibil ca limita

31

superioar s fie schimbat cu ajutorul pinului AREF i funcia analogReference(). n plus, unii pini au funcionaliti specializate: I2C:A4 (SDA) i A5 (SCL). Suport comunicare I2C folosind librria Wire. Mai exist civa pini pe plac: AREF. Tensiune de referin (numai de la 0 la 5V) pentru intrrile analogice. Folosit cu funcia analogReference(). Reset. Aduce linia la zero pentru a reseta microcontrolerul. De obicei folosit pentru a adauga un buton de reset Shield-urilor care blocheaz aciunea celui de pe plac. F. Harta pinilor ATMega 328

Fig. 4.12 Descrierea pinilor microcontrolerului ATMega328

G. Comunicaia Arduino UNO are cteva posibiliti de comunicare cu un calculator, o alt plac Arduino sau un alt microcontroler. Microcontrolerul ATmega328 furnizeaz comunicaie serial UART TTL (5V) care este disponibil pe pinii digitali 0(RX) i 1(TX). Un microcontroler ATmega8U2 direcioneaz comunicaia serial ctre USB i apare ca un port serial virtual n software-ul de pe calculator. Firmware-ul microcontrolerului folosete driverele standard ale portului USB al calculatorului i nu este nevoie de un driver din exterior. Software-ul Arduino este prevzut cu o fereastr care permite preluarea i trimiterea de date de tip text de la placa Arduino. LEDurile corespunztoare semnalelor RX i TX de pe
32

plac vor plpi cnd informaia este trimis prin portul USB ctre cipul serial prin intermediul unei conexiuni USB cu calculatorul (dar nu pentru comunicaia serial de pe pinii 0 i 1). O bibliotec a programului (SoftwareSerial) permite comunicaia serial pentru oricare dintre pinii placii. Microcontrolerul ATmega328 suport, de asemenea comunicaie 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. Selectai "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 ncrcarea unui program nou fr 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 ncrcat 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 Atmels FLIP (windows) sau DFU (Mac si Linux) pentru a ncrca un nou firmware. I. Resetarea automat (Software) Pentru a nu fi nevoie de resetarea manual, nainte de ncrcarea unui program, Arduino Uno este proiectat astfel nct i permite sa fie resetat de ctre software, atunci cnd este conectat la calculator. Una dintre liniile de control a funcionrii hardware (DTR) a microcontrolerului ATmega8U2 este conectata la linia de reset al microcontrolerului ATmega328 printr-un condensator de 100 nanofarad. Atunci cnd aceast linie este activat, linia de reset este activ suficient de mult timp pentru a reseta microcontrolerul. Software-ul Arduino folosete aceast capacitate pentru a v permite s ncrcai un cod prin simpla apsare a butonului de ncrcare din mediul de programare Arduino. Acest lucru nseamn c bootloader-ul are o perioad scurt de pauz.

33

Aceast configurare are alte implicaii. Cnd 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 cnd o conexiune este realizat ntre ea i software (prin USB). Pentru urmtoarele jumti de secund sau aa ceva, aplicaia bootloaderul ruleaz pe Uno. Dei este programat s ignore date necorespunztoare (adic nimic n afar de o ncrcare a noului Cod), se vor intercepta primii bii din datele trimise ctre plac dup ce conexiunea este deschis. Uno conine 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. Protecia la suprasarcin a portului USB Arduino Uno are o siguran resetabil care protejeaz porturile USB ale computerului de scurtcircuit i suprasarcin. Dei majoritatea calculatoarelor au protecie intern proprie, sigurana ofer o protecie suplimentar. Dac un curent mai mare de 500 mA trece prin portul USB, sigurana va ntrerupe n mod automat conexiunea pn la ndeprtarea suprasarcini sau scurtcircuitului. K. Caracteristici fizice Lungimea i limea maxim a plcii este de 6.8 cm respective 5.3 cm, cu conectorul USB i conectorul de alimentare care ies din dimensiunile plcii. Patru orificii de urub care permite plcii s fie ataat la o suprafa sau carcas. Observai c distana dintre pinii 7 i 8 este de 160 mm.

Fig. 4.13 Dimensiunile plcii Arduino UNO

34

L. Schema electric

Fig. 4.14 Schema electric a plcii Arduino UNO

35

4.3 Motoare de curent continuu

Fig. 4. 15 Motor de curent continuu

36

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 diferene de principiu semnificative ntre cele dou tipuri de maini electrice, acelai dispozitiv putnd ndeplini ambele roluri n situaii diferite. Principiul de funcionare: Majoritatea motoarelor electrice funcioneaz pe baza forelor electromagnetice ce acioneaz asupra unui conductor parcurs de curent electric aflat n cmp magnetic. Exist ns i motoare electrostatice construite pe baza forei 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 inducie (asincron) Motor sincron Elemente constructive: indiferent de tipul motorului, acesta este construit din dou pri componente: stator i rotor. Statorul este partea fix a motorului, n general exterioar, ce include carcasa, bornele de alimentare, armtura feromagnetic statoric i nfurarea statoric. Rotorul este partea mobil a motorului, plasat de obicei n interior. Este format dintr-un ax i o armtur rotoric ce susine nfurarea rotoric. ntre stator i rotor exist o poriune de aer numit intrefier ce permite micarea rotorului fa de stator. Grosimea intrefierului este un indicator important al performanelor motorului.

37

Stator Ax Capac Buc Perii colectoare

Rotor Carcas

Fig. 4. 16 Elementele componente ale motorului de curent continuu

Motorul de curent continuu a fost inventat n 1873 de Znobe Gramme prin conectarea unui generator de curent continuu la un generator asemntor. Astfel, a putut observa c maina se rotete, realiznd conversia energiei electrice absorbite de la generator. Motorul de curent continuu are pe stator polii magnetici si bobinele polare concentrate care creeaz cmpul magnetic de excitaie. Pe axul motorului este situat un colector ce schimb sensul curentului prin infurarea rotoric astfel nct cmpul magnetic de excitaie s exercite n permanen o for fa de rotor. n funcie de modul de conectare a nfurrii de excitaie motoarele de curent continuu pot fi clasificate n: motor cu excitaie independent - unde nfurarea statoric i nfurarea rotoric sunt conectate la dou surse separate de tensiune; motor cu excitaie paralel - unde nfurarea statoric i nfurarea rotoric sunt legate n paralel la aceai surs de tensiune motor cu excitaie serie - unde nfurarea statoric i infurarea rotoric sunt legate n serie motor cu excitaie mixt - unde nfurarea statoric este divizat n dou nfurri, una conectat n paralel i una conectat n serie. nfurarea rotoric parcurs de curent va avea una sau mai multe perechi de poli magnetici echivaleni. Rotorul se deplaseaz n cmpul magnetic de excitaie pn cnd polii rotorici se aliniaz n dreptul polilor statorici opui. n acelai moment, colectorul schimb

38

sensul curenilor rotorici astfel ncat polaritatea rotorului se inverseaz i rotorul va continua deplasarea pn la urmtoarea aliniere a polilor magnetici. Pentru acionri electrice de puteri mici i medii, sau pentru acionri ce nu necesit cmp magnetic de excitaie variabil, n locul nfurrilor statorice se folosesc magnei permaneni. Turaia motorului este proporional cu tensiunea aplicat nfurrii rotorice i invers proporional cu cmpul magnetic de excitaie. Turaia se regleaz prin varierea tensiunii aplicat motorului pn la valoarea nominal a tensiunii, iar turaii mai mari se obin prin slbirea cmpului de excitaie. Ambele metode vizeaz o tensiune variabil ce poate fi obinut 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 proporional cu curentul electric prin rotor i cu cmpul magnetic de excitaie. Reglarea turaiei prin slbire de cmp se face, aadar, cu diminuarea cuplului dezvoltat de motor. La motoarele serie acelai curent strbate nfurarea de excitaie i nfurarea rotoric. Din aceast consideraie se pot deduce dou caracteristici ale motoarelor serie: pentru ncrcri reduse ale motorului, cuplul acestuia depinde de ptratul curentului electric absorbit; motorul nu trebuie lsat s funcioneze n gol pentru c n acest caz valoarea intensitii curentului electric absorbit este foarte redus i implicit cmpul de excitaie este redus, ceea ce duce la ambalarea mainii pn la autodistrugere. Motoarele de curent continuu cu excitaie serie se folosesc n traciunea electric urban i feroviar (tramvaie, locomotive). Schimbarea sensului de rotaie se face fie prin schimbarea polaritii tensiunii de alimentare, fie prin schimbarea sensului cmpului magnetic de excitaie. La motorul serie, prin schimbarea polaritii tensiunii de alimentare se realizeaza schimbarea sensului ambelor mrimi i sensul de rotaie rmne neschimbat. Aadar, 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 numete motor universal i se folosete n aplicaii casnice de puteri mici i viteze mari de rotaie (aspirator, mixer).

39

Fig. 4.17 Motor de curent continuu

4.4 Senzorul infrarou

Fig. 4. 18 Senzorul infrarou

Senzorii sunt dispozitive care pot msura diferite proprieti ale mediului precum: temperatura, distana, rezistena fizic, greutatea, mrimea, etc. Informaia primit de la acetia poate fi de cele mai multe ori contradictorie i imprecis. n cel mai general caz, senzorii pot fi mprii n dou categorii, i anume: Senzori de stare intern senzori care ofer informaii despre starea intern a robotului mobil, spre exemplu nivelul bateriei, poziia roilor etc;
40

Senzori de stare extern senzori care ofer informaii despre mediul ambiant n care

robotul funcioneaz. Senzorii de stare extern se mai pot mpri la rndul lor n dou categorii: senzori cu contact, mai precis acei senzori care culeg informaia din mediu prin atingere (exemplu: senzor bumper), respectiv senzori fr contact, care preiau informaia 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 informaia. La modul general, despre toate categoriile de senzori se pot enuna urmtoarele ipoteze: - Orice senzor este afectat de zgomot; - Orice senzor ofer o informaie incomplet a mediului n care efectueaz msurtorile; - Nici un senzor nu poate fi modelat complet. De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprieti, cele mai importante fiind: - Sensibilitatea: raportul dintre semnalul de ieire i semnalul de intrare; - Liniaritatea: exprim dac raportul dintre intrare i ieire este constant; - Intervalul de msurare: diferena ntre distana minim i maxim msurabil; -Timpul de rspuns: timpul necesar pentru ca informaia de la intrare s fie observabil la ieire; -Acurateea: diferena ntre semnalul msurat i semnalul real; -Repetabilitatea: diferenele ntre msurtori succesive ale aceleiai entiti; -Rezoluia: exprim cea mai mic unitate de incrementare a semnalului msurat; -Preul senzorului; -Puterea de calcul necesar pentru a interpreta rezultatele; -Tipul de semnal la ieire; -Greutatea, mrimea i cantitatea de energie consumat pentru a face o msurtoare. Relaia ntre proprietile fizice de interes e ale mediului i informaia primit de la un senzor r ar putea fi modelat prin ecuaia: f (e ) = r

41

n principiu, orice model al unui senzor ar trebui s includ i un model intern al zgomotului care poate afecta senzorul n momentul citirii informaiei. Problema de a recupera informaia din mediu din datele primite de la senzor poate fi destul de complex. Un senzor este considerat instabil dac pentru variaii mici ale intrrii, ieirea se schimb radical. n caz general, pentru un senzor cu ieirea 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 neprevzut asupra informaiei, ele provenind n cea mai mare parte de la msurtori efectuate greit. Erorile sistematice au o influen predictibil asupra acurateii informaiei, acestea provenind de la o interpretare greit a parametrilor n algoritmii de estimare, sau din cauza unor neconcordane (incertitudini) n modelare. n fine, erorile stohastice, au un caracter aleator, ele diferind de fiecare dat cnd robotul execut aceeai operaie. n lumea roboilor mobili se ntlnesc o mare varietate de tipuri de senzori. O clasificare de baz a acestora ar putea fi: - senzori de distan acei senzori care ofer informaii despre distana ntre senzor i obiectul de msurat din mediu; - senzori de poziie acei senzori care ofer informaii despre poziia robotului n termeni absolui; - senzori de mediu acei senzori care ofer informaii despre diverse proprieti i caracteristici ale mediului (exemplu: temperatur, culoare); - senzori ineriali acei senzori care msoar proprieti difereniale ale poziiei robotului (exemplu: acceleraia). O alt clasificare a senzorilor se poate face n funcie de tipul de semnal primit, precum i de rolul senzorului n sistemul robotului mobil, mbinnd deci cele dou clasificri de mai sus. n continuare, pentru descrierea diferitelor tipuri de senzori, se va folosi aceast abordare. Sistemul de msurare a distanei prin senzor n infrarou este un tip particular de sistem de achiziie de date, iar aplicaiile sale pot fi gsite n domenii foarte variate. De exemplu: 1) montarea unui senzor infrarou Sharp GP2 pe un robot cu funcia de a depista obstacolele;

42

2) confecionarea unui dispozitiv de mn compact i portabil pentru a msura rapid i uor o distan relativ mic, pentru distane mari folosindu-se ali senzori mai puternici. 3) Realizarea de diverse dispozitive automate care msoar distanta. 4.4.1 Mod de funcionare: Senzorul emite un puls de raz infraroie de lungime de und 850 nm 70nm. Daca un obiect este n raza de aciune 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 bii la nivelul CANului prezent pe microcontrolerul Atmega8. Mrimea analogic este convertit n Voli, iar apoi, printr-o funcie de liniarizare obinut din diagrama oferit de Sharp pentru acest senzor, vom obine rezultatul final exprimat n cm. 4.4.2 Prezentarea Hardware: Pentru acest proiect am utilizat un senzor n infrarou SHARP GP2Y0A02YK, care prezint urmatoarele caracteristici tehnice: influena sczut a culorilor obiectelor reflectate, datorat metodei triunghiulare de msur a distanei raza de aciune ntre 20 i 150 de cm Interfaa sa prezint 3 fire: alimentare, mas i tensiunea de ieire i necesit un connector JST de 3 pini. Msurarea distanei prin metoda triunghiurilor (triungiularizrii): Principiul care st la baza acestei metode de msur folosite de senzorul Sharp se bazeaz pe formarea unui triunghi ntre Emitatorul de raz Infraroie, punctul de reflexie i Detectorul de Infrarou. Astfel, emitatorul emite un puls de lumin infraroie. Lumina strbate cmpul vizual si fie lovete un obstacol sau continu deplasarea. n cazul inexistenei 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

Fig. 4. 19 Schema de funcionare a unui senzor infrarou

Unghiurile din acest triunghi variaz n funcie de distana pn la obiect. Receptorul este de fapt o lentil de mare precizie care transmite lumina reflectat ntr-o reea liniar de CCD din interior. Reeaua de CCD poate determina sub ce unghi a intrat lumina reflectat i, astfel, poate calcula distana pn la obiect. Aceast nou metod de msurare a distanei este apoape imun la interferenele 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 ieirii senzorului: Senzorul Sharp folosit in acest proiect prezint o caracteristica de ieire neliniar, datorat proprietilor trigonometrice din interiorul triunghiului format de Emitor, punctul de reflexie i Receptor.

Fig. 4. 20 Diagrama de neliniarizare

44

Din diagrama din figura 4. 20 care poate fi gsit n documentaia oferit de productor se observ c n intervalul [15; 150] cm ieirea detectorului nu este liniar ci mai degrab logaritmic. Se observ de asemenea c pentru o distan mai mic dect 15 cm, ieirea scade rapid i ncepe s ia valori caracteristice msurtorii unor distane mai mari. Acest lucru poate fi dezastruos pentru echipamentele automate sau pentru roboii care pot folosi acest senzor, deoarece vor interpreta c sunt la o distan mare de obstacol.

Fig. 4. 21 Schema conectrii senzorului cu microcontrolerul

45

Capitolul 5: Construcia robotului mobil cu kit Arduino 5.1 Asamblarea robotului mobil cu kit Arduino
A. Am folosit ca suport pentru piese un asiu confecionat din material plastic.

Fig. 5.1 asiu

B. Robotul mobil cu kit Arduino este acionat 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 Asambarea 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

D. Pe axul de transmitere al micrii de rotaie se monteaz dou roi din material plastic cu membrane din cauciuc.

Fig. 5.4 Montarea roitor

E. La cellalt capt al asiului am montat un ball-caster pentru meninerea echilibrului robotului.

Fig. 5.5 Montarea Ball-Caster-ului pe asiu

F.Senzorul infrarou Sharp se monteaz pe servomotor.

Fig. 5.6 Montarea senzorului pe servomotor

47

G. Senzorul infrarou 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 distaniere. Apoi am montat placa Arduino uno.

Fig. 5.8 Montarea plcii Arduino pe asiu

I. ntre servomotor i placa Arduino am montat suportul de baterii (4 baterii a cte 1.5V). Suportul de baterii este prins de asiu cu band dubl adeziv.

Fig 5.9 Montarea plcii Arduino

48

J. Se conecteaz placa Ardumoto la placa Arduino UNO.

Fig. 5.10 Montarea plcii Ardumoto

K. Ansamblul robotului cu kit Arduino

Fig. 5.11 Robotul mobil cu kit Arduino

49

5.2 Conectarea senzorului infrarou Sharp la placa Arduino UNO


Senzorul de distan Sharp este o component care poate fi utilizat mpreun cu Arduino pentru a msura distana pn la diverse obiecte nconjurtoare. Dispozitivul dispune de trei pini, doi dintre ei fiind pini de alimentare (GND i Vcc), iar cel de-al treilea fiind pinul care d indicaii asupra distanei, prin port-serialul prezentat pe acesta.

Fig.5.12 Aezarea pinilor senzorului Sharp

Fig. 5.13 Conectarea senzorului n circuit

50

5.2.1 Principiul de funcionare


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 CANului 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 funcionare

51

5.3 Conectarea motoarelor de curent continuu Robotul realizat este pus n micare de ctre 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 funcioneaz la o tensiune variabil ntre 3 i 6 Voli. Tensiunea de care are nevoie fiecare motor este furnizat de ctre 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 su de protectie. L298 primete 8 intrri de la Atmega32: 4 intrari 0/1 care comand sensul de rotaie al motoarelor (porturile C0-C3), 2 intrri de PWM pe pinii de ENABLE A, ENABLE de la OCR0 (PB3) i OCR2 (PD7) pentru a controla turaia motoarelor i VCC i GND de la extensia header a portului B. De obicei, este nevoie n aplicaiile practice s comandm 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 acioneaz cte dou odata pe diagonal, pentru a schimba sensul de rotaie al motorului. Aceste ntreruptoare sau comutatoare sunt realizate de obicei cu tranzistoare MOS-FET sau cu tranzistoare Darlington.

Fig. 5.15 Schema punii H simplificat

52

Schema unei puni H folosind dispozitive discrete este prezentat in figura 5.16. Astfel, tranzistoarele utilizate sunt de tip PNP i la fiecare sens de rotaie sunt n conducie dou din ele. Diodele au rol de protecie 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 punii 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 de curent continuu odat. Este alimentat la 6V i poate schimba i sensul de rotaie a celor dou motoare.

Fig. 5.17 Schema circuitului L298P

53

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 schimbm tensiunile prezente la intrrile 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. Asemntor, funcionarea motorului B este comandat n acelai 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 distanei de pe pinul A0, dup cum se poate observa i n figura 5.18.

Fig.5.14 Conectarea servomotorului la placa Arduino

Unde: -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

CAPITOLUL 6: Programarea robotului 6.1 Microcontrolerul ATmega 328


ATMega328 cu Arduino bootloader (Uno). Acest microcontroller v permite s utilizai programe Arduino n proiectul dumneavoastr fr s utilizai o plac arduino. Pentru a putea funciona 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 utilizai pentru bootloader). Ea are, de asemenea, 2 KB SRAM i 1 KB de EEPROM.

55

6.1.2 Specificaii tehnice


Tabelul 6.1 Microcontroler Familia de microcontrolere Tip interfa Dimensiune nucleu Voltajul de intrare (limitare) Pini digitali I/O Numr intrri ADC Oscilator de tip Numar de contoare Form capsule Temperatura de operare DC Curent pentru pinii de I/O DC Curent pentru pinul de 3.3V Memoria SRAM EEPROM Clock Speed Periferice Set de instruciuni ATmega328p-pu Atmega I2C, SPI USART 8 biti 1.8V-5.5V 23 (din care 6 pot fi folositi ca PWM) 6 intern, extern 3 PDIP -40 C la +85 C 40 mA 50 mA 32 KB din care 8 KB utilizati de bootloader 2 KB 1 KB 20 MHz ADC, Comparator, RTC, Timer, PWM Arhitectura RISC

6.2 Programarea placii


Aceast seciune va presupune c avei un PC pe care ruleaz Microsoft Windows sau un Mac OSX (10.3.9 sau ulterior). n cazul n care utilizai 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 rnd, luai placa ARDUINO i aezai-o pe mas n faa dumneavoastr. Luai cablul de USB i conectai-l cu mufa B (partea mai goas si dreptunghiular) n mufa de USB de la Arduino.

56

Fig. 6.1 Cablu USB

Dup aceasta etap NU se conecteaz ARDUINO la PC sau Mac nc.


B.

Descrcare Arduino IDE (Software pentru programare)

Descrcai Arduino IDE de la seciunea de download de pe www.arduino.cc. n momentul de fa, cea mai recent versiune de software Arduino IDE este 0022, urmnd ca actualizrile s se fac n momentul apariiilor unor versiuni noi. Fiierul este un fiier de tip ZIP astfel nct vei fi nevoii s-l dezarhivai (Un utilitar bun este WinRAR). Odat ce descarcrea s-a terminat, dezarhivai arhiva de tipul ZIP, asigurndu-v c s-a pstrat structura de foldere aa cum este i nu trebuie fcute nici un fel de schimbri n componenta softului. Dac facei dublu-clic pe dosarul creat, vei vedea cteva fiiere i sub-dosare n interiorul acestuia.
C.

Instalarea driverului pentru USB

Dac utilizai Windows, vei gsi driverele n directorul numit drivers/FTDI USB Drivers din Arduino. n etapa urmatoare (Conectarea plcii de dezvoltare Arduino), vei alege calea n fereastra Window`s Add New Hardware wizard ctre driverele indicate mai sus. Dac avei un calculator cu sistem de operare Mac, driverele pentru microcontroler sunt n directorul cu drivere. Dac avei un Mac mai vechi ca un PowerBook, iBook, G4 sau G5, trebuie s utilizati drivere PPC: FTDIUSBSerialDriver_v2_1_9.dmg. Dac avei un Mac mai nou, cu un cip Intel, avei nevoie de driverele de Intel: FTDIUSBSerial Driver_v2_2_9_Intel.dmg. Dublu-click pentru a monta imaginea de disc i alegei

57

FTDIUSBSerialDriver.pkg. Cea mai recent versiune a driverelor poate fi gasit pe siteul FTDI.

Fig. 6.2 Manualul electronic al software-ului

D. Conectai placa de dezvoltare Arduino


n primul rnd, asigurai-v c jumperul de selectare a alimentrii, ntre alimentare extern i mufa USB, este setat la USB i nu la alimentare extern (nu se aplic n cazul n care avei un microcontroler Arduino, care are o funcie Auto Power Select).

58

Fig. 6.3 Jumperul de selectare a alimentrii

Folosind acest jumper putei: fie alimenta microcontrolerul de la Portul USB (bun pentru cureni slabi, aplicaii cu LED-uri, etc) sau de la o alimentare externa (6-12V DC Curent Continu). Acum, conectai celalalt capt al cablului USB (A) n mufa de USB de pe PC sau Mac. Vei vedea acum LED-ul de putere mic (marcat PWR mai sus de comutatorul RESET) se va aprinde pentru a v arta alimentarea microcontrolerului. Dac avei un Mac, aceast etap a procesului este complet i putei trece la capitolul urmtor. n cazul n care suntei utilizator de Microsoft Windows, exist caiva pai 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 aprea fereastra Found New Hardware Wizard. Bifai NO, not this time (figura 6.4) pentru a nu se conecta la Windows Update (Selectai Nu, nu n acest moment) i apoi facei clic pe Next.

59

Fig. 6.4 Fereastra Found New Hardware a Windows-ului

n pagina urmtoare (figura 6.5) selectai Install from a list or specific location (Advanced) i apoi facei clic pe Next.

Fig. 6.5

Asigurai-v c Search for the best driver in these locations este verificat. Debifai Search removable media. Bifai Include this location in the search i apoi facei click pe Butonul Browse. Rsfoii la locaia de drivere pentru USB i apoi facei click pe Next. (Figura 6.6)

60

Fig. 6.6

Windows-ul va cuta acum pentru un driver potrivit, v va informa c un USB Serial Convertor a fost gsit i a constatat c expertul hardware este acum complet. Facei clic pe Finish. (Figura 6.7)

Fig. 6.6

Acum suntei pregtit pentru a ncarca primul Sketch pe microcontrolerul Arduino.

61

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 // // // // // // // // // // // // // // // // // Xtal Xtal M1A OC0B M2A OC0A M2B D5 D6 D7 D8 Reset Rx D0 Tx Int0 Int1 M1B D1 D2 D3 D4 Funct Arduino ATmega168 +-----\/----+ 1| PC6 2| PD0 3| PD1 4| PD2 5| PD3 6| PD4 7| VCC 8| GND 9| PB6 10| PB7 11| PD5 12| PD6 13| PD7 14| PB0 PC5 |28 PC4 |27 PC3 |26 PC2 |25 PC1 |24 PC0 |23 GND |22 AREF |21 AVCC |20 PB5 |19 PB4 |18 PB3 |17 PB2 |16 PB1 |15 D13 SCK LED D19 A5 D18 A4 D17 A3 D16 A2 D15 A1 D14 A0 SCL SDA Arduino Funct Shield

IR sensor

D12 MISO Pan servo D11 OC2A MOSI D10 OC1B D 9 OC1A

+-----------+

#include

//Inputs/outputs #define Motor_1_PWM #define Motor_1_Dir #define Motor_2_PWM #define Motor_2_Dir 5 // digital pin 5 4 // digital pin 4 6 // digital pin 6 7 // digital pin 7 // Left Motor // Right Motor

62

#define IR_Pin #define PanPin #define LedPin

14 12 13

// digital pin 14 (analog pin 0)

#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

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

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

} 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

// 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, different sensor 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); // forward digitalWrite(Motor_2_Dir, LOW); // forward analogWrite(Motor_1_PWM, speed1); // analogWrite(Motor_2_PWM, speed2); // return; }

67

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, digitalWrite(Motor_1_Dir, digitalWrite(Motor_2_PWM, digitalWrite(Motor_2_Dir, return; } LOW); LOW); LOW); LOW);

68

69