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
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.
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).
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.
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).
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.
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.
11
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
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
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.
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;
14
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).
16
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.
18
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
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
-placa ardumoto
-Ball caster
21
-Servomotor
-roti
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.
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.
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.
D. Nano O plac de dezvoltare compact proiectat pentru utilizarea pe un breadboard. Nano se conecteaz la computer utiliznd un cablu USB Mini-B.
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().
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
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.
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.
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
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)
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
28
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.
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
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.
34
L. Schema electric
35
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
Rotor Carcas
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
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
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.
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.
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.
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.
C. Cutia de vitze cu motoarele de current continuu sunt montate la unul din captele sasiului.
46
D. Pe axul de transmitere al micrii de rotaie se monteaz dou roi din material plastic cu membrane din cauciuc.
47
H. Pentru ca placa Arduino UNO s nu vin montat direct pe asiu am folosit dou distaniere. Apoi am montat placa Arduino uno.
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.
48
49
50
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.
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.
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.
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.
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
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
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
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.
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.
58
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
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
61
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
14 12 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
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();
63
StepDelay();
Forward(); }
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 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