1. INTRODUCERE……………………………………………………………………………………………………….2 1.1 Aspecte… [310697]
CUPRINS
1. INTRODUCERE……………………………………………………………………………………………………….2
1.1 Aspecte generale robotica…………………………………………………………………………………………2
1.2 Tema proiectului de diploma…………………………………………………………………………………….3
1.3 Structura proiect………………………………………………………………………………………………………3
2. STRUCTURA LA NIVELUL BLOC A ROBOTULUI………………………………………………..4
2.1 Robotii mobili…………………………………………………………………………………………………………..4
2.2 Schema bloc a robotului……………………………………………………………………………………………5
3. SUBANSABLELE ROBOTULUI PROIECTAT…………………………………………………………6
3.1Structura unui robot mobil………………………………………………………………………………………..6
3.2 Elementele componente…………………………………………………………………………………………….7
3.3 Placa de dezvoltare Arduino UNO…………………………………………………………………………….8
3.4 Elemente de comanda ale motoarelor……………………………………………………………………….14
3.5 Senzor telecomanda infrarosul Brick………………………………………………………………………..15
3.6 Elemente de mobilitate…………………………………………………………………………………………….18
3.6 Cutia cu 4 baterii……………………………………………………………………………………………………..21
3.7 Telecomanda IR………………………………………………………………………………………………………21
4. PROGRAMAREA ROBOTULUI……………………………………………………………………………..22
4.1 Programarea plăcii de dezvoltare Arduino……………………………………………………………….22
4.2 Descărcare și instalare software program Arduino IDE……………………………………………23
4.3 Conectarea plăcii de dezvoltare Arduino………………………………………………………………….24
4.4 Programul robotului……………………………………………………………………………………………….30
5. CONCLUZII…………………………………………………………………………………………………………….33
6. BIBLIOGRAFIE………………………………………………………………………………………………………34
Introducere
1.1 Aspecte generale robotică
Domeniul roboticii a început să fie cercetat mai în amănunt la începutul anilor '60. După o dezvoltare rapidă a [anonimizat], la începutul anilor '90 au început să apară și diferite aplicații și pentru alte domenii neindustriale. Astfel, în timpurile pe care le trăim descoperim în jurul nostru semne ale dezvoltării robotici și rolul important pe care acest domeniu îl joacă în noul mileniu dezvoltânduse odată cu civilizația și atingând domenii extrem de vaste.
Pentru a demonstra impactul și totodată viteza de dezvoltare al domeniului roboticii se pot aduce câteva date statistice din rapoartele IFR (International Federation of Robotics). În 2015, vânzările globale în industria robotică au crescut cu 8% la aproape 240000 unități, cel mai înalt nivel pentru al treilea an la rând. Industria de automotive și industria de produse electronice continuă să investească în automatizarea liniilor de producție din fabrici. În zona Asiei, dar mai ales în China, se înregistrează cele mai mari creșteri în investiții de automatizări. America de Nord (USA) de asemenea este una din principalele concurente în cursa globală a automatizării. Vânzările în domeniul roboților în America de Nord au crescut cu până la 11% iar în Europa cu 8%. Previziunile pentru anii următori sunt foarte promițătoare.[15]
Evoluția din domeniul informatici a accentuat saltul de la o societate bazată doar pe industrie la o societatea informatizată, determinând astfel apariția și formarea unui val continuu de noi tehnologii cu aplicații atât în zona industriilor cât și zona societății civile.
În agricultură întâlnim sisteme robotizate de irigație și sisteme automate de plantare sau culegere, etc. Sunt dezvoltate sisteme de securitate și de supraveghere pe baza roboticii și astfel se poate crește nivelul de siguranță și protecție atât civil cât și militar: robot mobil pentru detectarea si dezamorsarea minelor, robot de supraveghere și sisteme robotizate de gestionare/supraveghere a locuinței. Inclusiv când ajungem acasă putem descoperi mici sisteme robotizate cu diferite aplicații ce ne fac viața mai ușoară și/sau mai frumoasă: sisteme robotizate pentru întreținerea locuinței, tunderea gazonului.
Există o multitudine de domenii în care roboții sunt deja utilizați cu succes. Medicina este unul dintre principalele domenii unde robotica s-a dezvoltat și încă continuă să se dezvolte necontenit.În jurul nostru putem observa o multitudine de direcții în care domeniul roboticii se poate dezvolta sau deja și-a pus amprenta. Totodată putem adăuga transportul sau construcțiile cu vehicule ghidate automat pentru asfaltarea șoselelor, sisteme robotizate în construcția tunelurilor, roboți mobili pentru montarea/îmbinarea diferitelor elemente în costrucția de infrastructură (poduri), excavatoare autonome, vehicule ghidate automat pentru întreținerea drumurilor etc.
Există sisteme robotizate pentru diagnoză, sisteme robotizate pentru intervenții neurochirurgicale, sisteme robotizate (proteze) pentru înlocuirea membrelor amputate, vehicule/sisteme ghidate automat de transport pacienți, manipulatoare robotizate pentru pacienți imobilizați.
1. 2 Tema proiectului de diplomă
Proiectul prezentat se axează pe partea de descriere, construcție, programare și utilizare a unui robot mobil conceput pe baza plăcii de dezvoltare Arduino, ce este comandat printr-o telecomandă obișnuită cu infraroșu.
Robotul este dotat cu două motoare cu cutie de transmisie și două roți mari, senzor infraroșu de distanță, o placă de dezvoltare Arduino UNO și un driver de motoare L298 pentru controlul motoarelor.
Robotul mobil cu kit Arduino este comandat/manevrat prin telecomanda în orice direcție se dorește.
Am ales această temă dorind să ating partea de hobby/fun a roboticii.
1.3 Structură proiect
Trecând peste capitolul unu care este de introducere, în capitolul doi al acestui proiect voi enunța câteva idei generale despre roboți și voi prezenta structura la nivel bloc a robotului mobil.
În capitolul trei am să descriu subansamblele robotului proiectat și elementele folosite în construcția acestuia și totodată etapele ce au dus la asamblarea robotului.
La capitolul patru voi prezenta partea de instalare și programare a robotului.
În încheierea acestui proiect se poate găsi bineînteles și bibliografia utilizată.
2. Structura la nivel bloc a robotului
2.1 Roboți mobili
Când ne referim la un robot trebuie să luăm în considerare faptul că acesta reprezintă un sistem complex ce poate executa diferite acțiuni sau activități într-un spectru foarte larg de situații corespunzătoare activitățiilor din viața reală.
Elementele care pot influența performanțele unui robot mai sunt reprezentate totodată și de configurația spațiului de lucru. Îndeplinirea sarcinilor va depinde atât de informațiile predefinite robotului despre alcătuirea câmpului de lucru, cât și de informațiile primite și procesate în timp real în timpul îndeplinirii activitățiilor sale.
Astel pot fi identificate câteva probleme care trebuiesc luate în calcul la construcția unui robot mobil, cum ar fi: determinarea poziției și orientarea robotului într-un mediu necunoscut; evitarea impactului cu posibile obstacole, fie aflate în mișcare fie staționare; viteza de procesare a datelor primite și planificarea unei noi traiectorii de mișcare.
Robotul mobil reprezintă până la urmă rezultatul mai multor sisteme, atât mecanice cât și senzoriale care conlucrează între ele, fiind comandate de o structură centrală de comandă. Partea mecanică va fi reprezentată prin însăși structura fizica a robotului: formă, dimensiuni, greutate; dar și prin elemente de mișcare ale acestuia: brațe, roți/șenile, picioare. Sistemele senzoriale vor fi folosite pentru interacțiunea cu mediul de lucru: preluare date, captare informații. Structura centrală de comandă va avea rolul de a gestiona întregul sistem/robot, atât pe baza comenzilor prestabilite cât și pe baza procesării informațiilor primite de la sistemele senzoriale (planificarea traiectoriei), punând în mișcare părțile mecanice ale robotului (ex.: controlul motoarelor).
Este extrem de important pentru un robot mobil să se determine orientarea și poziționarea acestuia într-un mediu necunoscut, deoarece aceste elemente vor duce la neîndeplinirea sarcinilor, inclusiv în unele cazuri la costuri suplimentare de întreținere (în cazul deteriorării). Pentru a îmbunătății capacitățile robotului se pot folosi senzori pentru detectarea obstacolelor în vederea creșterii “factorului de decizie”, permiterea deciziilor automate de mișcare pentru a îndeplini o sarcină.
Această capacitate a roboților de a procesa semnalele primite și de a reacționa în funție de mediul înconjurător face atât de atractivă utilizarea acestora în foarte multe domenii cât și implicarea ingineriilor în dezvoltarea de noi sisteme roboți.
2.2 Schema bloc a robotului
3. Subansamblele robotului proiectat
3.1Structura unui robot mobil
Robotul mobil este alcatuit următoarele elemente:
a) Elementele de asamblare, dimensiunea, forma, greutatea alcătuiesc structura mecanică și totodată acestea pot determina performanțele tehnice ale robotului;
De asemenea partea mecanică se poate diviza în două subsisteme:
sistemul ce asigură deplasarea robotului pe anumite tipuri de suprafețe de lucru, unde putem avea roți, șenile sau chiar sisteme de deplasare ce simulează mișcarea umană;
sistemul de manipulare ce asigură atât poziționarea cât și orientarea robotului.
b) Elementele de electronică și de comandă și/sau control, care determină performanțele robotului.
Sistemul robot este pus în mișcare de două motoare dispuse la două roți și un sensor de distanta cu infraroșu –Brick. Pentru punerea în funcțiune a robotului se va utiliza și mediu de programare al limbajului C[6].
Structura mobilă a robotului este proiectată pe un șasiu din plexiglas (subțire și ușor) ghidat pe două roți mari din plastic cu membrană de cauciuc pentru o mai bună aderență la suprafața de lucru, iar pe șasiu se mai găsește o rotiță cu rol de echilibrare.
Elementul cheie al robotului este reprezentat de placa de dezvoltare Arduino, ce are încorporat un microcontrolerul Atmel ATMEGA328 ce înobilează placa împreună cu celelalte circuite auxiliare cât și circuitul integrat L298 ce îndeplinește funcția de amplificare a semnalului primit de la microcontroler și de comandă/acționare a motoarelor cu cutie de viteze și un circuit integrat TL499 cu funcție de stabilizator de tensiune.
3.2 Elemente componente:
Sasiu (cu elemente de prindere) – 2 motoare cu cutie de viteze
Placa Arduino UNO (plus cablu date) – Driver-ul de motoare L298
Senzor telecomanda IR Brick(plus fire) – Cutie 4 baterii AA (plus fire)
Roti – Telecomanda
3.3 Placa de dezvoltare Arduino UNO
Prezentare
Arduino este una dintre cele mai deschise și mai prietenoase platforme de dezvoltare “open-source”, ce se bazează pe software și hardware flexibil și simplu de folosit. Constă într-o platformă dimensiuni reduse de 6,8 cm / 5,3 cm – în cea mai des întâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este similar cu mediul de limbaj C++ [3].
Inima acestei plăci este un microcontroler ATmega328P. Acest microcontroler are 14 pini de intrare/ieșire digitală (din care 6 pot fi folosiți ca ieșiri PWM), 6 intrări analogice, un cristal de cuarț 20 MHz și un program de 32 KB, ce are 2 KB de memorie RAM și 1KB pentru memoria EEPROM. O conexiune USB, un conector de alimentare, un conector pentru ieșire ICSP și un buton de resetare.
Specificatii:
Microcontroler: ATmega328
Tensiune de lucru: 5V
Tensiune de intrare (recomandat): 7-12V
Tensiune de intrare (limita): 6-20V
Pini digitali: 14 (6 PWM output)
Pini analogici: 6
Intensitate de iesire: 40 mA
Intensitate de iesirepe 3.3V: 50 mA
Flash Memory: 32 KB (ATmega328) 0.5 KB pentru bootloader
SRAM: 2 KB (ATmega328)
EEPROM: 1 KB (ATmega328)
Clock Speed: 16 MHz
Alimentare
Arduino UNO se poate alimenta prin sursa de alimentare externă sau prin intermediul conexiunii USB, selecția fiind automată. Ca sursă externăde alimentare se poate folosi atât un adaptor de curent continuu cât și o baterie. Adaptorul poate fi conectat printr-un conector de 2.1mm cu centru-pozitiv în mufa de alimentare de pe placă. Traseele de la baterie pot fi introduse în pinii GND și V-in ai conectorului de alimentare.
Placa poate funcționa cu o sursă externă de 6-20 volți. Dacă este alimentată cu mai puțin de 7V, atunci pinul de 5V scoate o tensiune mai mică de 5V și placa poate deveni instabilă. Dacă se utilizează mai mult de 12V, regulatorul de tensiune se poate supraîncălzi și deteriora placa. Intervalul recomandat este de 7-12 volți.
Pinii de putere sunt după cum urmează:
V-IN Tensiunea de intrare la placa Arduino atunci când folosește o sursă de alimentare externă (spre deosebire de 5 volți de conexiune USB sau o altă sursă de energie regulată). Se poate alimenta prin acest pin sau dacă este folosită alimentarea prin conectorul de alimentare atunci tensiunea poate fi accesată din acel pin.
5V Tensiunea de alimentare folosită pentru microcontroler și alte componente de pe placă. Aceasta poate veni fie din pinul V-IN printr-un regulator de tensiune încorporat, sau să fie furnizată de către USB sau o altă sursă de tensiune de 5v .
3V3 O tensiune de 3.3V generată de către regulatorul de pe placă.
GND Pinii de masă.
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 ).
Intrări și ieșiri
Fiecare din cei 14 pini digitali pot fi utilizați ca intrare sau ieșire, folosind funcțiile pinMode () , digitalWrite () , și digitalRead (). Aceștia funcționează la 5 volți. Fiecare pin poate oferi sau primi un maxim de 40 mA și are un rezistor de siguranță (deconectat implicit) de 20-50 kOhms. În plus, unii pini au funcții particulare:
Serial: 0 (RX) și 1 (TX). Folosit pentru a primi și transmite date seriale TTL. Acești pini sunt conectați la pinii corespunzători ai cipului ATmega8U2 USB-TTL;
Întreruperile externe: 2 și 3. Acești pini pot fi configurați pentru a declanșa o întrerupere pe o valoare scăzută, o limită crescătoare sau descrescătoare, sau o schimbare în valoare.
PWM: 5, 6, 9, 10, și 11. Oferă o ieșire PVM de 8 biți cu funcția analogWrite ().
SPI:10 (SS), 11 (Mosi), 12 (MISO), 13 (SCK). Acești pini suportă comunicația SPI folosind biblioteca SPI .
LED: 13. Există un LED încorporat în placă, conectat la pinul 13. Când valoarea pe pin este HIGH, LEDul este aprins, când valoare este LOW, LEDul este stins.
Placa Arduino UNO are 6 intrări analogice, denumite de la A0 la A5, fiecare oferă o rezoluție de 10 biți. Implicit, ieșirile măsoară de la masa la 5V, deși este posibil ca limita superioară să fie schimbată cu ajutorul pinului AREF și funcția analogReference(). În plus, unii pini au funcționalități specializate:
I2C:A4 (SDA) și A5 (SCL). Suportă comunicare I2C folosind librăria Wire.
Mai există câțiva pini pe placă:
AREF. Tensiune de referință (numai de la 0 la 5V) pentru intrările analogice. Folosit cu funcția analogReference().
Reset. Aduce linia la zero pentru a reseta microcontrolerul. De obicei folosit pentru a adauga un buton de reset Shield-urilor care blochează acțiunea celui de pe placă.
Harta pinilor – ATMega 328
Comunicația
Arduino UNO are câteva posibilități de comunicare cu un calculator, o altă placă Arduino sau un alt microcontroler. Microcontrolerul ATmega328 furnizează comunicație serială UART TTL (5V) care este disponibilă pe pinii digitali 0(RX) și 1(TX). Un microcontroler ATmega8U2 direcționează comunicația serială către USB și apare ca un port serial virtual în software-ul de pe calculator. Firmware-ul microcontrolerului folosește driverele standard ale portului USB al calculatorului și nu este nevoie de un driver din exterior. Software-ul Arduino este prevăzut cu o fereastră care permite preluarea și trimiterea de date de tip text de la placa Arduino[4]. LED-urile corespunzătoare semnalelor RX și TX de pe placă vor pâlpâi când informația este trimisă prin portul USB către cipul serial prin intermediul unei conexiuni USB cu calculatorul (dar nu pentru comunicația serială de pe pinii 0 și 1).
O bibliotecă a programului (SoftwareSerial) permite comunicația serială pentru oricare dintre pinii placii.
Microcontrolerul ATmega328 suportă, de asemenea comunicație I2C (DST) și SPI. Software-ul Arduino include o bibliotecă de conexiuni (wire library) pentru a simplifica utilizarea portului I2C .
Programare
Arduino uno poate fi programată cu software-ul Arduino. Selectați "Arduino Uno din meniul Tools Board (în conformitate cu microcontrolerul de pe placă).
Microcontrolerul ATmega328 de pe placa Arduino Uno vine cu un program de butare (bootloader) care vă permite încărcarea unui program nou fără a utiliza un compilator extern. Acesta comunică folosind protocolul STK500 original.
Se poate evita, de asemenea, bootloader –ul și, microcontrolerul se poate programa prin ICSP (In-Circuit Serial Programming).
Codul sursă al Firmware –ul microcontrolerului ATmega8U2 este disponibil, el este încărcat cu un program de butare DFU care poate fi activat cu ajutorul unui jumper de pe spatele placii, ATmega8U2 fiind resetat. Apoi se pot folosi programele Atmel’s FLIP (windows) sau DFU (Mac și Linux) pentru a încărca un nou firmware.
Resetarea automată (Software)
Pentru a nu fi nevoie de resetarea manuală, înainte de încărcarea unui program, Arduino Uno este proiectată astfel încât îi permite sa fie resetată de către software, atunci când este conectată la calculator. Una dintre liniile de control a funcționării hardware (DTR) a microcontrolerului ATmega8U2 este conectata la linia de reset al microcontrolerului ATmega328 printr-un condensator de 100 nanofarad. Atunci când această linie este activată, linia de reset este activă suficient de mult timp pentru a reseta microcontrolerul. Software-ul Arduino folosește această capacitate pentru a vă permite să încărcați un cod prin simpla apăsare a butonului de încărcare din mediul de programare Arduino. Acest lucru înseamnă că bootloader-ul are o perioadă scurtă de pauză.
Această configurare are alte implicații. Când Uno este conectată fie la un computer pe care rulează fie un sistem de operare Mac OS X sau Linux, aceasta se resetează de fiecare dată când o conexiune este realizată între ea și software (prin USB). Pentru următoarele jumătăți de secundă sau așa ceva, aplicația bootloaderul rulează pe Uno. Deși este programat să ignore date necorespunzătoare (adică nimic în afară de o încărcare a noului Cod), se vor intercepta primii biți din datele trimise către placă după ce conexiunea este deschisă.
Uno conține un traseu care poate fi înterupt pentru a dezactiva resetarea automată. Zonele de pe fiecare parte a traseului înterupt pot fi lipite pentru a activa din nou resetarea automată. Traseul este denumit ”RESET_EN”. O altă modalitate de a dezactiva resetarea automată este prin a conecta un resistor de 110 ohm între linia de 5V și linia de reset.
Protecția la suprasarcină a portului USB
Arduino Uno are o siguranță resetabilă care protejează porturile USB ale computerului de scurtcircuit și suprasarcină. Deși majoritatea calculatoarelor au protecție internă proprie, siguranța oferă o protecție suplimentară. Dacă un curent mai mare de 500 mA trece prin portul USB, siguranța va întrerupe în mod automat conexiunea până la îndepărtarea suprasarcini sau scurtcircuitului.
Schema electrica
Dimensiunile fizice
Lungimea și lățimea maximă a plăcii este de 6.8 cm respective 5.3 cm, cu conectorul USB și conectorul de alimentare care ies din dimensiunile plăcii. Patru orificii de șurub care permite plăcii să fie atașată la o suprafață sau carcasă. Observați că distanța dintre pinii 7 și 8 este de 160 mm.
3.4 Elemente de comanda ale motoarelor
Driver-ul de motoare L298 este utilizat pentru controlul motoarelor de curent continuu folosind Arduino.
Arduino este capabil sa scoata pe porturile lui o putere foarte mica, total insuficienta pentru a invarti un motor. Daca vom conecta un motor electric direct la un port Arduino, cel mai probabil vom obtine arderea procesorului din placa Arduino.
Ca sa nu se intample acest lucru, avem nevoie de un amplificator de putere, care sa ia putere din sursa de alimentare (baterie, de exemplu), si sa o transmita motoarelor asa cum ii comanda Arduino. Acest amplificator poarta numele generic de "driver de motoare".
Driver-ul din aceasta sectiune este bazat pe circuitul integrat L298, fiind un driver de nivel mediu din punct de vedere al puterii conduse. Poate controla motoare care necesita cel mult 2 Amperi.
Driver-ul se conecteaza la platforma Arduino folosind 4 pini digitali (3, 5, 6 si 9) prin infigere directa in pinii placii Arduino.
Schema circuitului integrat L298
Funcționare:
Funcționare tensiune de alimentare până la 46 V.
Total DC curent de până la 4 A.
Tensiune joasa de saturație.
Protecție la suprasarcină.
Logică "0" tensiune de intrare de până la 1,5 V
3.5 Senzor Telecomanda Infrarosu Brick
Generalități
Senzorii sunt dispozitive care pot măsura diferite proprietăți ale mediului precum: temperatura, distanța, rezistența fizică, greutatea, mărimea, etc. Informația primită de la aceștia poate fi de cele mai multe ori contradictorie și imprecisă.
În cel mai general caz, senzorii pot fi împărțiți în două categorii, și anume:
Senzori de stare internă – senzori care oferă informații despre starea internă a robotului mobil, spre exemplu nivelul bateriei, poziția roților etc;
Senzori de stare externă – senzori care oferă informații despre mediul ambiant în care robotul funcționează. Senzorii de stare externă se mai pot împărți la rândul lor în două categorii: senzori cu contact, mai precis acei senzori care culeg informația din mediu prin atingere (exemplu: senzor „bumper”), respectiv senzori fără contact, care preiau informația din mediu de la distanță (exemplu: cameră video, senzor ultrasonic, etc).
Un senzor poate fi activ sau pasiv. Senzorii activi sunt acei senzori care emit energie în mediu pentru a putea observa anumite caracteristici ale acestuia, spre deosebire de senzorii pasivi care primesc energie din mediu pentru a putea prelua informația.
De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprietăți, cele mai importante fiind:
– Sensibilitatea: raportul dintre semnalul de ieșire și semnalul de intrare;
– Liniaritatea: exprimă dacă raportul dintre intrare și ieșire este constant;
– Intervalul de măsurare: diferența între distanța minimă și maximă măsurabilă;
-Timpul de răspuns: timpul necesar pentru ca informația de la intrare să fie observabilă la ieșire;
-Acuratețea: diferența între semnalul măsurat și semnalul real;
-Repetabilitatea: diferențele între măsurători succesive ale aceleiași entități;
-Rezoluția: exprimă cea mai mică unitate de incrementare a semnalului măsurat;
-Prețul senzorului;
-Puterea de calcul necesară pentru a interpreta rezultatele;
-Tipul de semnal la ieșire;
-Greutatea, mărimea și cantitatea de energie consumată pentru a face o măsurătoare[9].
Există o mare varietate de tipuri de senzori. O clasificare de bază a acestora ar putea fi:
– senzori de distanță – acei senzori care oferă informații despre distanța între senzor și obiectul de măsurat din mediu;
– senzori de poziție – acei senzori care oferă informații despre poziția robotului în termeni absoluți;
– senzori de mediu – acei senzori care oferă informații despre diverse proprietăți și caracteristici ale mediului (exemplu: temperatură, culoare);
– senzori inerțiali – acei senzori care măsoară proprietăți diferențiale ale poziției robotului (exemplu: accelerația).
Senzorul Brick
Senzorul infraroșu Brick este o componentă care detectează codurile emise de o telecomandă obisnuită în infraroșu.
Senzorul se infige direct in driver-ul de motoare. Schema de conectare este cea de mai jos (vezi fig.19) .
Specificații [17]:
Dimensiuni : patrat 7mm, zona de detectare 8mm
Pinul de semnal (OUT) se cupleaza la pinul digital 11 al plăcii Arduino.
Pinul de alimentare (VCC) se cupleaza la pinul VCC al placii Arduino.
Pinul de masa (GND) se cupleaza la pinul GND al placii Arduino.
Ieșire: 0V (scăzut) pe detectarea transportatorului 38KHz, 5V (ridicat) altfel
Gama Sensibilitate: 800 nm până la 1100nm cu un răspuns de vârf la 940nm. Gama de frecvență este 35kHz 41KHz cu detecție de vârf la 38KHz
Alimentare: 3-5V DC 3mA
Senzorii IR sunt microcipuri ce au încorporat o fotocelulă ce captează lumina infraroșie. Sunt aproape întotdeauna folosiți pentru detectarea și control de la distanță – fiecare televizor și DVD player au un astfel de senzor, în partea din față pentru a capta semnalul IR de la comanda. In interiorul telecomenzii este un LED IR de potrivire, care emite impulsuri IR pentru a comanda televizorul laa porni, oprit sau schimba canalele. Lumina infraroșie nu este vizibilă pentru ochiul uman, ceea ce înseamnă că este nevoie de un pic mai multă muncă pentru a testa/verifica o configurare.
3.6 Elemente de mobilitate
Doua motoare cu cutie de viteze
Motor electric cu cutie de viteza cu raport de transmisie 120:1, fabricat de Pololu.
Specificații:
Dimensiuni : 54.5 × 20 × 13.8 mm
Tensiunea de alimentare : 3 – 6 V
Curent : 80 mA ( fara sarcina ) 0.8A (blocat)
Cuplu : 1.4Kg/cm
RPM:120
Elemente constructive: indiferent de tipul motorului, acesta este construit din două părți componente: stator și rotor. Statorul este partea fixă a motorului, în general exterioară, ce include carcasa, bornele de alimentare, armătura feromagnetică statoric și înfășurarea statorică. Rotorul este partea mobilă a motorului, plasată de obicei în interior. Este format dintr-un ax și o armătură rotorică ce susține înfășurarea rotorică. Între stator și rotor există o porțiune de aer numită intrefier ce permite mișcarea rotorului față de stator. Grosimea intrefierului este un indicator important al performanțelor motorului.
Principiul de funcționare: majoritatea motoarelor electrice funcționează pe baza forțelor electromagnetice ce acționează asupra unui conductor parcurs de curent electric aflat în câmp magnetic. Există însă și motoare electrostatice construite pe baza forței Coulomb și motoare piezoelectrice.
Motorul de curent continuu are pe stator polii magnetici si bobinele polare concentrate care creează câmpul magnetic de excitație. Pe axul motorului este situat un colector ce schimbă sensul curentului prin infășurarea rotorică astfel încât câmpul magnetic de excitație să exercite în permanență o forță față de rotor.
Cuplul dezvoltat de motor este direct proporțional cu curentul electric prin rotor și cu câmpul magnetic de excitație. Reglarea turației prin slăbire de câmp se face cu diminuarea cuplului dezvoltat de motor. La motoarele serie același curent străbate înfășurarea de excitație și înfășurarea rotorică. Din această considerație se pot deduce două caracteristici ale motoarelor serie: pentru încărcări reduse ale motorului, cuplul acestuia depinde de pătratul curentului electric absorbit; motorul nu trebuie lăsat să funcționeze în gol pentru că în acest caz valoarea intensității curentului electric absorbit este foarte redusă și implicit câmpul de excitație este redus, ceea ce duce la ambalarea mașinii până la autodistrugere.
Robotul realizat este pus în mișcare de către două motoare de curent continuu. Motoarele sunt montate la o cutie de viteze care oferă un raport de transmisie 120:1. Fiecare motor este acționat independent și sunt montate pe driver-ul L298 (vezi fig.21).
Motoarele funcționează la o tensiune variabilă între 3 și 6 Volți. Tensiunea de care are nevoie fiecare motor este furnizată de către driver-ul de motoare L298 care este conectată cu placa Arduino.
Controlul motoarelor se face cu ajutorul microcontrolerul ATMega328 de pe placa Arduino.
Șasiu din plexiglas
Pe șasiul din plexiglas se montează cu ajutorul elementelor de prindere motorașele cu cutie de viteze, la care se vor monta roțile de mobilitate (vezi fig. 22 și fig. 23).
Roțile sunt din cauciuc și au dimensiunile: 7cm / 2,6cm.
În partea din față a șasiului se va monta cu ajutorul câtorva șuruburi și distanțiere o rotiță pentru direcție și stabilitate.
3.6 Cutie cu 4 baterii (4 baterii AA)
Pentru autonomia robotului se vafolosi o singură sursă de alimentare constând într-o cutie cu patru baterii de tip AA (vezi fig. 25).
Pentru a folosi o singură sursă de tensiune, se va cupla un jumper pe placa driver-ului L298. În acest fel, tensiunea aplicată pe pinul cu șurub VIN ajunge direct prin jumper pe pinul VIN (mama) din placa Arduino (vezi fig. 26).
Conectarea firelor bateriei la driver-ul L298 se poate vedea la figura 26.
3.7Telecomanda IR
Se utilizează în controlul de la distanță cu infraroșu. Aceasta generează impulsuri de ieșire, în conformitate cu protocolul RC5, atunci când este apăsată o tastă. Telecomanda nu conține un procesor programabil software. Cu toate acestea, ea conține un ROM în care codurile ce trebuie să fie transmise sunt stocate.
Atunci când o cheie în cheiea matricei este apăsată o linie de acționare va fi conectat la o linie de sens. Acesta cauzează pornirea oscilatorului și un cod corespunzător se va genera în conformitate cu protocolul RC5.
Atunci când două sau mai multe taste sunt activate simultan transmisia nu va avea loc.
4. Programarea robotului
4.1 Programarea plăcii de dezvoltare Arduino
Este necesar cel puțin un PC pe care rulează Microsoft Windows si se descarcă Arduino IDE. [6,10,11].
Se ia placa de dezvoltare Aduino UNO împreună cu cablul de conectare USB și se conectează după cum urmează: mufa mică A-1 se conectează la Arduino A-2 (vezi fig.27) și mufa mare B se va conecta la PC mai târziu după instalarea soft-ului.
4.2 Descărcare și instalare software program Arduino IDE.
Se cauta pe Internet www.arduino.cc/en/main/softwear (vezi fig. 28) și se descarcă Arduino IDE cu versiunea cea mai recentă. Se descarcă fișierul de tip ZIP și după aceea se deschide și se dezarhivează arhiva cu ajutorul utilitarului WinRAR și se sccesează fișierele dorite (vezi fig.29).
Pentru Windows, se instalează driverele din directorul “drivers/FTDI USB Drivers”.
4.3Conectarea plăcii de dezvoltare Arduino
Conexiunea USB cu PC-ul este necesară pentru putea programa placa dar și pentru alimentarea cu tensiune. Arduino Uno va recunoaște automat sursa de alimentare, fie prin USB sau o sursă de alimentare externă. Se conectează placa la computer utilizând cablul USB.
Alimentarea microcontroler-ului se poate verifica cu ajutorul LED-ului verde aprins/stins.
În momentul conectării cablului USB la PC sistemul de operare Microsoft Windows va detecta conectarea unei noi plăci hardware (microcontrolerul Arduino) la PC. Putem trece la instalarea driver-ului. Se accesează “Start” și la “Computer” selectăm “Manage” (vezi fig.32).
În fereastra nou deschisă, la “Device Manager” căutăm “Other device” și pe “Unknown device” cu ajutorul mouse-ului (clic dreapta) selectăm “Update Driver Softwear” (vezi fig.33).
În fereastra deschisă selectăm “Update Driver” (vezi fig. 34).
Se selectează opțiunea “Browse…” (vezi fig.35)
Se selectează calea pentru driver (vezi fig.36) și apăsăm “Next”.
Confirmăm instalarea softwear-ului (vezi fig. 37) și după instalare închidem ferestrele Windows.
Se deschide Sketch-ul la finalizarea pașilor de instalare (vezi fig. 38).
4.4 Programul robotului
//Infrared remote library for Arduino: send and receive infrared signals with multiple protocols
#include <IRremote.h>
//macro used for the analogWrite function 255 being the maximum speed (PWM)
#define SPEED 255
// set the pins used for the PWM motor control
int MOTOR2_PIN1 = 3;
int MOTOR2_PIN2 = 5;
int MOTOR1_PIN1 = 6;
int MOTOR1_PIN2 = 9;
//set the infrared receive pin
int IR_RECV_PIN = 4;
//create an IRrecv instance and initilialize it with the previous set pin value
IRrecv irrecv(IR_RECV_PIN);
//create decode_results instance used for different remote types
decode_results results;
//infrared remote key initialization
long key = 0;
void setup()
{
//set baudrate for the serial port
Serial.begin(9600);
//set the pin to output for the motor pins
pinMode(MOTOR1_PIN1, OUTPUT);
pinMode(MOTOR1_PIN2, OUTPUT);
pinMode(MOTOR2_PIN1, OUTPUT);
pinMode(MOTOR2_PIN2, OUTPUT);
irrecv.enableIRIn(); // Start the receiver
}
//debug function on the serial port used for determining type of remote, and retrieving the ir code
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");
}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
else if (results->decode_type == PANASONIC) {
Serial.print("Decoded PANASONIC – Address: ");
Serial.print(results->panasonicAddress, HEX);
Serial.print(" Value: ");
}
else if (results->decode_type == JVC) {
Serial.print("Decoded JVC: ");
}
// save the infrared code from the remote to the key variable
key = results->value;
}
//the main loop
void loop() {
//reverse direction key
if (key == 0x10EF10EF) {
go(-SPEED, SPEED);
}
//reverse direction key
if (key == 0x10EF807F) {
go(SPEED, -SPEED);
}
//speed increase key
if (key == 0x10EFA05F) {
go(SPEED, SPEED);
}
//speed decrease key
if (key == 0x10EF00FF) {
go(-SPEED, -SPEED);
}
//stop key
if (key == 0x10EF20DF) {
go(0, 0);
}
//OFF key
if (key == 0x10EFD827) {
go(0, 0);
}
//reinitialize the key variable to not cause endless loop
key = 0;
//if data exists on the infrared port
if (irrecv.decode(&results)) {
//retrieve the infrared code and remote type
dump(&results);
// Receive the next value
irrecv.resume();
//print the key as a hexadecimal value
Serial.println(key, HEX);
//print blank line
Serial.println();
}
}
//function for control of the direction of movement of the robot, using the two motors
void go(int speedLeft, int speedRight) {
if (speedLeft > 0) {
//MOTOR1_PIN1 used for positive values, MOTOR1_PIN2 is deactivated
analogWrite(MOTOR1_PIN1, speedLeft);
analogWrite(MOTOR1_PIN2, 0);
}
else {
//MOTOR1_PIN2 is used for negative values, MOTOR1_PIN1 is deactivated
analogWrite(MOTOR1_PIN1, 0);
analogWrite(MOTOR1_PIN2, -speedLeft);
}
if (speedRight > 0) {
//MOTOR2_PIN1 used for positive values, MOTOR2_PIN2 is deactivated
analogWrite(MOTOR2_PIN1, speedRight);
analogWrite(MOTOR2_PIN2, 0);
}else {
//MOTOR2_PIN2 is used for negative values, MOTOR2_PIN1 is deactivated
analogWrite(MOTOR2_PIN1, 0);
analogWrite(MOTOR2_PIN2, -speedRight);
}
}
5. Concluzii
Proiectul a urmărit familiarizare cu placa de dezvoltare Arduino, utilizată în construcția unui robot.
Pe parcursul lucrării s-a urmărit proiectarea elementele de proiectare a motoarelor, utilizând senzor cu infraroșu.
De asemenea, am pus accentul pe programarea robotului utilizând facilitățile plăci de dezvoltare Arduino.
Lucrarea este funțională, traversând cu ea toate specificațiile tehnice, până la funcționalitatea robotului.
Bibliografie
[1] http://www.robofun.ro/arduino/arduino_uno_v3
[2] http://www.capisci.ro/articole/Arduino
[3] Rick Anderson, Dan Cervo: “Pro Arduino”, Apress, 2013
[4] Andrew K. Dennis: “Arduino” Packt Publishing, 2013
[5] Gordon McComb: “Arduino Robot Bonanza”, McGraw-Hill, 2013
[6] Harold Timmis: “Practical Arduino Engineering”, Apress, 2011
[7] Rick Andreson, Dan Cervo: “CHAPTER 9:Android Sensor Networks”, Apress, 2013
[8] Timothy L. Warner: “Introducing the Arduino”, Que, 2013
[9] Charless Bell: “Beginning Sensor Networks with Arduino and Raspberry Pi”, Apress, 2013
[10] D. Zmaranda: “Elemente de programare orientată pe obiecte în limbajul C#”, Editura Universității din Oradea, 2008
[11] B. Eckel: “Thinking in C++ (2nd edition)”,“Volume 1: Introduction to Standard C++”, Prentice Hall, 2000
[12] Vari K. Ștefan: “Microprocesoare și microcalculatoare”, Editura Universității din Oradea, 2002
[13] Andreas Goransson, David Cuartielles Ruiz: “Professional Android Open Accessory Programming with Arduino”, Wrox, 2013
[14] http://www.arduino.cc
[15] http://www.ifr.org/news/ifr-press-release/president-s-report-807/
[16] http://www.tutorialeonline.net
[17] https://learn.adafruit.com/ir-sensor
[18] https://www.cplusplus.com
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: 1. INTRODUCERE……………………………………………………………………………………………………….2 1.1 Aspecte… [310697] (ID: 310697)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
