Proiectarea Unui Robot Mobil cu Senzor Infrarosu, Capabil Sa Evite Orice Obstacol

LUCRARE DE LICENȚĂ

Proiectarea unui robot mobil cu senzor infraroșu, capabil să evite orice obstacol

Cuprins

Introducere

Capitolul 1. Considerații teoretice privind roboții mobili

1.1 Introducere în roboți mobili

1.2 Clasificarea roboților mobili

1.3.Domeniile de utilizare ale roboților

1.3.1.Caracteristici comune ale roboților mobili

1.3.2.Structura roboților mobili

1.4.Tipuri de roboți mobili. Exemple ce coincid cu modelul studiat

Capitolul 2. Proiectarea elementelor componente

2.1.Elemente componente

2.2 Placa de dezvoltare Arduino

2.2.1 Exemple de plăci Arduino

Capitolul 3. Realizarea structurii electrice și de control a robotului

3.1. Caracteristici

3.2. Alimentarea

3.3. Memoria

3.4. Intrări și ieșiri

3.5. Harta pinilor – ATMega 328

3.6. Schema electrică

3.7. Realizarea circuitului de comandă al motoarelor de curent continuu

3.8. Senzorul infraroșu

Capitolul 4: Construcția robotului mobil cu kit Arduino

4.1. Asamblarea robotului mobil cu kit Arduino

4.2. Conectarea senzorului infraroșu Sharp la placa Arduino UNO

4.3. Conectarea motoarelor de curent continuu

Capitolul 5. Programarea robotului

5.1 Microcontrolerul ATmega 328

5.1.1. Memoria

5.1.2 Specificații tehnice

5.2 Programarea placii

5.3. Programul robotului

Concluzii

Bibliografie

Introducere

Revoluția informatică a marcat saltul de la societatea industrializată la societatea avansată informatizată generând un val de înnoiri în tehnologie și în educație permițând realizarea de roboți. Unul din cele mai importante aspecte în evoluția ființei umane este folosirea uneltelor care să simplifice munca fizică. În această categorie se înscriu și roboții, ei ocupând totuși o poziție privilegiată datorită complexității lor.

Revoluția informatică a marcat saltul de la societatea industrializată la societatea avansată informatizată generând un val de înnoiri în tehnologie și în educație. Acest lucru a dus și la apariția roboților.

Termenul "robot" a fost folosit in 1920 de cehul Karel Capek într-o piesă numită "Robotul universal al lui Kossum". Ideea era simplă: omul face robotul după care robotul ucide omul. Multe filme au continuat să arate că roboții sunt mașinării dăunătoare și distrugătoare.

Noțiunea de robot datează de peste 4 mii de ani. Omul și-a imaginat dispozitive mecanizate, inteligente care să preia o parte însemnata din efortul fizic depus. Roboții oferă beneficii substanțiale muncitorilor, industriilor si implicit țărilor. În situația folosirii în scopuri pașnice, roboții industriali pot influența pozitiv calitatea vieții oamenilor prin înlocuirea acestora în spații periculoase, cu condiții de medii dăunătoare omului, cu condiții necunoscute de exploatare etc.

Această lucrare se concentrează pe construcția, descrierea, utilizarea și programarea unui robot mobil cu senzori infraroșu, care poate evita orice coleziune cu vre-un obstacol.

Robotul este dotat cu două motoare de current continuu și cutie de viteza Tamya, senzor infraroșu de distanță SHARP, placă de programare Arduino UNO, Shield Ardumoto pentru controlul motoarelor de current continuu.

Robotul mobil cu kit Arduino are abilitatea de a evita orice obstacol. În momentul în care sesizează un obstacol acesta își schimbă direcția de deplasare.

Domeniile de aplicare a tehnicii roboților se lărgesc mereu, ei putând fi utilizați în industrie, transporturi și agricultură, în sfera serviciilor, în cunoasterea oceanului și a spatiului cosmic, în cercetarea științifică etc.

Principalele contribuții aduse de proiectul acesta sunt proiectarea și construcția robotului mobil, realizarea schemei electrice și de control, programarea robotului și testarea caracteristicilor și a performanțelor acestuia.

Proiectul este structurat pe patru capitole. Primul capitol este unul introductiv, în care sunt prezentate scopul lucrării, câteva date despre roboți, precum și structurarea lucrării.

În capitolul doi este prezentată partea teoretică necesară realizarii robotului mobil, cuprinzând considerații cinematice necesare mișcării și orientării robotului, tipuri de structuri ce caracterizează diferiți roboți și metode de detecție folosind senzorii disponibili.

În capitolul trei este prezentată construcția și programarea robotului, parcurgând toate etapele necesare finalizării părții practice a proiectului: realizarea structurii mecanice, a celei electrice și de control a robotului și programarea acestuia. În ultimul capitol se vor regăsi concluziile trase ca urmare a realizării acestui proiect.

Capitolul 1. Considerații teoretice privind roboții mobili

1.1 Introducere în roboți mobili

Robotul mobil este un sistem complex care poate efectua diferite activități într-o varietate de situații specifice lumii reale.

El este o combinație de dispozitive echipate cu servomotoare și senzori (aflate sub controlul unui sistem ierarhic de calcul) ce operează într-un spațiu real, marcat de o serie de proprietăți fizice (de exemplu gravitația care influențează mișcarea tuturor roboților care funcționează pe pământ) și care trebuie să planifice mișcările astfel încât robotul să poată realiza o sarcină în funcție de starea inițială a sistemului și în funcție de informația apriori existentă, legată de mediul de lucru.

Problemele specifice ce apar la roboții mobili ar fi următoarele: evitarea impactului cu obiectele staționare sau în mișcare, determinarea poziției și orientării robotului pe teren, planificarea unei traiectorii optime de mișcare.

Succesul în îndeplinirea acestor sarcini depinde atât de cunoștințele pe care robotul le are asupra configurației inițiale a spațiului de lucru, cât și de cele obținute pe parcursul evoluției sale.

Localizarea obiectelor se poate realiza și prin contact fizic, dar acesta impune restricții asupra vitezei de mișcare a structurii manipulate. Contactul fizic dintre robot și obiectele din mediu generează forțe de reacțiune care modifică starea robotului. Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate să fie riscante (pot duce la deteriorarea obiectelor sau a robotului).

Evitare coliziunii cu obstacole fixe sau mobile (de exemplu alți roboți mobili) aflate în spațiul de lucru al robotului se poate face prin mai multe metode: realizarea unei apărători mecanice care prin deformare oprește robotul, folosireasenzorilor care măsoară distanța până la obstacolele de pe direcția dedeplasare, folosirea senzorilor de proximitate, folosirea informațiilor corelate de la mai multe tipuri de senzori.

În cazul unui sistem robotic automat distribuit pozițiile spațiale sunt de o extremă importanță și de ele depinde îndeplinirea scopurilor dorite și funcționarea întregului sistem. Cu alte cuvinte, robotul trebuie să fie capabil să-și planifice mișcările, să decidă automat ce mișcări să execute pentru a îndeplini o sarcină, în funcție de aranjamentul momentan al obiectelor din spațiul de lucru.

Planificarea mișcărilor nu constă dintr-o problemă unică și bine determinată, ci dintr-un ansamblu de probleme dintre care unele sunt mai mult sau mai puțin variante ale celorlalte.

Navigarea robotului este posibilă și fără o determinare a poziției și orientării față de un sistem de coordonate fix, dar această informație este utilă pentru sisteme de comandă a mișcării. Dintre metodele de navigație mai des utilizate se pot menționa: măsurarea numărului de rotații făcute de roțile motoare, folosirea de acceleratoare și giroscoape, geamanduri electromagnetice instalate în teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.

1.2 Clasificarea roboților mobili

Roboții mobili se clasifică astfel:

În funcție de dimensiuni: macro, micro și nano-roboți;

În funcție de mediul în care acționează: roboți tereștri – se deplasează pe sol, roboți subacvatici – în apă, roboți zburători – în aer, roboți extratereștri – pe solul altor planete sau în spațiul cosmic;

În funcție de sistemul care le permite deplasarea în mediul în care acționează există de exemplu pentru deplasarea pe sol:

roboți pe roți sau șenile

roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi;

roboți târâtori: care imită mișcarea unui șarpe, care imită mișcarea unei

râme etc.;

roboți săritori, care imită deplasarea broaștelor, cangurilor

roboți de formă sferică (se deplasează prin rostogolire)

Fig. 1.1 Exemple de roboți mobili

Fig. 1.2: Robot hexapod Fig. 1.3: Robot biped Fig. 1.4: Robot mobil pe

două roți

(cazul de studiu)

1.3.Domeniile de utilizare ale roboților

În medicina : sisteme robotizate pentru diagnoza prin ecografie(fig 2.5), sisteme robotizate pentru intervenții neurochirurgicale; vehicule ghidate automat pentru transportul medicamentelor, alimentelor telemanipulatoare pentru chirurgie laporoscopica; sisteme robotizate pentru pregătirea prin simulare, etc.

Fig. 1.5. Sisteme folosite pentru diferite operatii medicale

Pentru reabilitare se pot identifica următoarele aplicații: scaun cu rotile pliant, imbarcabil in autoturisme; manipulator pentru deservirea persoanelor paralizate, vehicul pentru conducerea nevazatorilor etc.

În construcții (Fig. 1.6.): vehicul ghidat automat pentru asfaltarea șoselelor, sistem robotizat pentru stropirea betonului in construcția tunelurilor; robot mobil pentru cofraje glisante; excavatoare autonome, sistem robotizat pentru compactarea si nivelarea suprafețelor turnate din beton; sistem robotizat pentru inspectarea fațadelor clădirilor etc.

Fig. 1.6. Vehicul folosit pentru diferite comenzi in constructie

În administrația locala(Fig 1.7) : robot folosit pentru inspectia in caz de atentat vehicul autonom pentru curățirea zăpezii de pe autostrăzi; vehicul autonom pentru menținerea curățeniei pe străzi; sistem robotizat pentru inspecția si intretinerea automata a canalelor etc.

În agricultura (Fig 1.8.) , dintre aplicațiile posibile amintim: vehicul comandat folosit pentru stropirea pomilor fructiferi, sistem robotizat de plantare a răsadurilor; sistem robotizat de culegere a fructelor; sistem robotizat de culegere a florilor; sistem robotizat de tundere a oilor etc.

.

Hotelurile si restaurantele pot fi prevăzute cu: sisteme robotizate pentru pregătirea automata a sălilor de restaurant, de conferințe; sistem de manipulare automata a veselei; minibar mobil pentru transportul băuturilor, ziarelor etc.

Pentru siguranța si pază robot mobil de pază pe timpul nopții in muzee(Fig. 1.9.); robot mobil pentru paza clădirilor și șantierelor; vehicul autonom pentru stingerea incendiilor; robot mobil pentru detectarea și dezamorsarea minelor; sistem robotizat pentru intervenții in spatii periculoase etc.

În gospodărie, pentru hobby si petrecerea timpului liber(Fig. 1.10) se pot identifica următoarele aplicații: robot de supraveghere copii pentru diverse intervale de vârsta; robot de. gestionare și supraveghere generala a locuinței, robot mobil pentru pentru tunderea automata a gazonului; instalație robotizata pentru curățirea bărcilor de agrement si sport etc.

În cercetarea spațială Încă din anii 60 institutele de cercetare spațială au cercetat posibilitatea aplicării tehnologiei de teleoperare a unor roboți mobili în cadrul cercetării spațiale.

Aspectele prezentate vin să sprijine intențiile de a demara activități in domeniul roboticii, unele din acestea putând deveni chiar activități de succes, care pot constitui adevărate provocări pentru specialiștii in robotica sau in domeniile apropiate.

Este adevărat ca roboții prin calitățile lor pot cauza reduceri masive de personal acolo unde sunt implementați, dar creează si meserii alternative: tehnicieni in industria roborizarii; ingineri; vânzători; programatori; supervizori etc.

Beneficiile introducerii roboților in industrie includ managementul controlului și al productivității și creștereatem robotizat pentru intervenții in spatii periculoase etc.

În gospodărie, pentru hobby si petrecerea timpului liber(Fig. 1.10) se pot identifica următoarele aplicații: robot de supraveghere copii pentru diverse intervale de vârsta; robot de. gestionare și supraveghere generala a locuinței, robot mobil pentru pentru tunderea automata a gazonului; instalație robotizata pentru curățirea bărcilor de agrement si sport etc.

În cercetarea spațială Încă din anii 60 institutele de cercetare spațială au cercetat posibilitatea aplicării tehnologiei de teleoperare a unor roboți mobili în cadrul cercetării spațiale.

Aspectele prezentate vin să sprijine intențiile de a demara activități in domeniul roboticii, unele din acestea putând deveni chiar activități de succes, care pot constitui adevărate provocări pentru specialiștii in robotica sau in domeniile apropiate.

Este adevărat ca roboții prin calitățile lor pot cauza reduceri masive de personal acolo unde sunt implementați, dar creează si meserii alternative: tehnicieni in industria roborizarii; ingineri; vânzători; programatori; supervizori etc.

Beneficiile introducerii roboților in industrie includ managementul controlului și al productivității și creșterea evidenta a calității produselor. Roboții pot lucra zi si noapte fara a obosi sau a-si reduce performanta.

Consecvent realizează reduceri substanțiale ale prețului de cost in primul rând prin reducerea consumurilor de materii prime și al prelucrării automate a acestora. De asemenea utilizarea roboților aduce avantaje pe piața concurențiala. Prin dezvoltarea rapida a industriei si a tehnicii de calcul, putem observa evoluția roboților către generațiile inteligente ce le oferă caracteristica de a "intelege" mediul in care lucrează.

1.3.1.Caracteristici comune ale roboților mobili

Roboții mobili au următoarele caracteristici comune:

structura mecanică este un lanț cinematic serie sau paralel respectiv tip “master-slave”;

sistemul de acționare utilizat este electric pentru sarcini mici și medii și hidraulic pentru sarcini mari;

sistemul senzorial utilizează senzori interni (de turație, poziție, efort) la nivelul articulațiilor, senzori externi(camere TV) pentru scanarea mediului și senzori de securitate( de proximitate, de prezență cu ultrasunete);

sistemul de comandă este ierarhizat, de obicei multiprocesor;

limbajele de programare utilizate sunt preluate de la roboții staționari.

1.3.2.Structura roboților mobili

Structura roboților mobili (RM) corespunde arhitecturii generale a roboților, având două părți:

A. Structura mecanică, respectiv manipulatorul, care determină performanțele tehnice;

Structura mecanică a roboților mobili este formată din:

sistemul de locomoție (pe șenile sau roți), prin care se asigură deplasarea robotului pe o suprafață de lucru (în cadrul unei autonomii sporite);

sistemul de manipulare, care asigură poziționarea și orientarea organului de lucru.

Robotul mobil în procesul de deplasare pe o anumuită traiectorie este caracterizat prin 3 funcți:

1. funcția de locomoție;

2. funcția de percepție-decizie;

3. funcția de localizare;

B. Structura electronică, respectiv de comandă-control, care condiționează calitatea performanțelor.

Roboții mobili pot fii dotați cu camera video sau alți senzori de percepere al mediului în care activează. Memoria robotului conținută in microcontroler înmagazinează cunoștințele necesare localizării tuturor segmentelor de traseu posibile.

Indiferent de generația robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate și cost reduse, la transmiterea mișcării și adaptarea la structura mecanică a motoarelor electrice și hidraulice, la proiectarea mâinilor mecanice pentru a apuca obiecte de diferite forme. Referitor la structura electronică, posibilitățile actuale permit folosirea a câte unui microprocesor pentru comanda fiecărui grad de mobilitate, precum și a altor microprocesoare specializate pentru tratarea semnalului senzorial. Robotul mobil interacționează cu mediul înconjurător prin structura sa mecanică, asigurând astfel deplasarea, poziționarea și orientarea organului de execuție.

1.4.Tipuri de roboți mobili. Exemple ce coincid cu modelul studiat

Robotul AIRAT 2

Fig. 1.12. Robotul AIRAT 2

AIRAT 2 este un robot micromouse care folosește un procesor CPU 8051. AIRAT 2 folosește senzori pentru a o recepta când se întoarce înapoi. Placa CPU folosete o placă JS8051-A2. Placa JS8051-A2 este foarte bine construită. Folosește resurse externe de putere cum ar fii LCD, ADC, douǎ ceasuri externe, auto-Flash scriere și altele.

AIRAT 2 utilizeaza șase senzori oferindu-i astfel posibilitatea de a se deaplasa pe diagonală. Un simulator PC este prevăzut,oferindu-i posibilitatea utilizatorului de a întelege mai bine nivelul inalt de căutare algoritmică a mouseului. Codul sursa C este implementat astfel încât programatorul poate dezvolta mai ușor altgoritmi care pot fi testați cu ajutorul unui simulator si apoi implementat mouseului.

În plus, LCD, comunicație serială, controlul mouse-ului precum și alte funcții sunt furnizate sub formă de librarie și fișiere sursă. Pentru cei ce vor sa invețe mouse-ul la un nivel înalt, AIRAT2 furnizează un mediu excelent de dezvoltare, teste algoritmice, precum și multe altele.

AIRAT 2 a aparut pe coperta publicației franceze „MICROS&ROBOTS”.

Caracteristici ale robotului AIRAT2:

capabil de reglare proprie; învață din mers;

folosește 6 senzori dându-i posibilitatea de a se deplasa pe diagonala;

ușor de asamblat/dezasamblat;

port de reîncărcare;

instrucții de asamblare și manual al utilizatorului;

include un simulator PC pentru accelerarea dezvoltării;

librării, coduri sursa C;

AIRAT2 baterie (NiMh-450).

Fig. 1.13. Bateria robotului AIRAT2

Robotul Pololu 3pi

Fig. 1.14. Robotul Pololu 3pi

Robotul pololulu 3pi este o platformă mobilă de înaltă performanță care conține două motoare cu cutie de viteze, 5 senzori de reflexie, un LCD 8×2, 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 începători curajoși și un perfect al doilea robot pentru cei care vor să avanseze de la roboți neprogramabili.

Robotul 3 pi este proiectat pentru a excela în competiții precum urmărirea liniei sau rezolvarea labirintelor. Are dimensiuni mici (diametru: 9.5 cm, greutate 83 g fără baterii) și îi trebuie decât 4 baterii de tip AAA, în timp ce un sistem de alimentare unic pune în funcțiune motoarele la o tensiune constantă de 9.25 v, tensiune independentă de cea a nivelului de încărcare. Regulatorul de tensiune îi permite lui 3pi sa ajungă la viteze de până la 1 m/sec, în timp ce face viraje și întoarceri precise, care nu variaza cu tensiunea bateriei.

Robotul 3pi este o platforma excelentă pentru persoane cu experiență în programare C care vor să învețe robotica și este o distracție in orice momente pentru cei care vor să invețe programare C.

Inima robotului este un microcontroler Atmel ATmega328P care ruleaza la o frecvență de 20 MHz alături de un program de 32 KB, 2 KB de memorie RAM si 1KB de memorie EEPROM. Popularul compilator GNU C/C++ funcționează perfect cu 3pi, Atmel AVR Studio ofera un spațiu de dezvoltare confortabil și un set de librării interesante oferite de Pololu si realizează interfațării cu componentele se face foarte ușor. 3pi este deasemenea compatibil cu plăcile de dezvoltare Arduino.

Imaginile de mai jos identifică componentele cele mai importante ale robotului.

Fig. 1.15 Vedere de sus a robotului Pololu 3pi

Fig. 1.16 Vedere de jos a robotului Pololu 3pi

Robotul Inex POP-Bot Standard

Fig. 1.17 Robotul Inex POP-Bot Standard

POP-BOT are un driver pentru două motoare de curent continuu. Viteza și direcția motoarelor se poate controla din software-ul robotului, deoarece sunt controlate de catre PWM (Pulse Width Module).

Robotul conține și un modul microcontroler POP-168. POP-168 este o placă flexibilă care nu are componente ascunse și permite dezvoltare completă a caracteristicilor cu ajutorul uneltelor standard AVR, cum ar fi IAR C/C++,MikroElektronikaMikro BASIC/ MikroPascal pentru AVR si deasemenea uneltele open-source WINAVR: AVRGCC pentru Windows.

Un display LCD permite vizualizarea activității microcontrolerului. Modulul LCD are nevoie decât de un pin de intrare/ieșire, +5v și masa pentru a funcționa. Pentru a comunica cu microcontrolerul, modulul LCD are nevoie decât de simple comenzi de ieșire.

Alte părți componente ale robotului:

Placa de control a robotului RBX-168 cu suport de 4 baterii AA

Modul de butoane cu cablu JST

Senzor de distanță infraroșu GP2D120

Placa cu senzori de reflexie

Roti de cauciuc

Ball-caser

Placa de plastic de 80×60 cm

Robotul construit cu kit Arduino (studiu de caz)

Fig. 1.18 Robotul construit cu kit Arduino

Robotul are abilitatea de a evita orice obstacol. În momentul în care sesizează un obstacol acesta își schimbă direcția de deplasare.

Componenta de bază a robotului o constituie placa Arduino UNO pe care este prezent microcontrolerul Atmel ATMEGA328 împreună cu diferite circuite auxiliare de interfață cu diferite medii printre care enumerăm circuitul integrat L298P cu rol de punteH ce îndeplinește rolul de amplificare al semnalului de la pinii microcontrolerului și acționare de putere a motoarelor de curent continuu și circuitul integrat TL499 care are rol de stabilizator de tensiune.

Pe lângă aceasta mai avem două motoare de curent continuu un sensor infraroșu de distanta Sharp GP2D120 și alte componente mecanice care utilizează ca mediu de programare limbajul C.

Robotul este conceput pe două roți motrice din plastic cu membrană de cauciuc iar pe șasiu se mai găsește o sfera cu rol de echilbrare.

Pentru a înnobila partea electronică robotul a fost dotat cu un senzor infraroșu Sharp care ocolește obstacole și care deasemenea poate determina distanța până la un anumit obiect. Pentru ca senzorul Sharp să se poată mișca acesta este montat pe un servomotor.

Capitolul 2. Proiectarea elementelor componente

Fig. 2.1. Componentele aflate in structura robotului

2.1.Elemente componente

Fig. 2.2. Sasiu Fig. 2.3. Doua motoare de current continuu

Fig. 2.4.Placa Arduino UNO Fig. 2.5. Placa driver motoare

Fig. 2.6. Senzor inflarosu de distanta Sharp

Fig. 2.7. Roti

2.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 intâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze un cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

Ce este cu adevărat interesant este ecosistemul dezvoltat in jurul Arduino. Vorbim aici atât despre comunitatea care este foarte activa, cât și despre numărul impresionant de dispozitive create special pentru Arduino.

Câteva exemple de senzori disponibili – senzori de distanță (capabili să măsoare de la câțiva centimetri până la 7-9 metri), senzori de sunet, senzori de câmp electromagnetic, senzori de fum, senzori de tip GPS, senzori de tip giroscopic, senzori de flux lichid (ca cei folosiți la pompele de benzină), senzori de temperatură, senzori de monoxid de carbon, senzori de lumină, senzori capabili să detecteze doar o anumită culoare, senzori de prezență, senzori de umiditate, senzori de nivel pentru lichid, senzori capabili sa măsoare concentratia de alcool în aerul expirat. Pentru a efectua acțiuni asupra mediului înconjurator, există o largă varietate de motoare, servomotoare, motoare pas cu pas, led-uri, actuatoare.  Ca și conectivitate, există disponibile componente capabile sa conecteze Arduino la rețeaua Ethernet (“Ethernet Shield”), componente pentru rețea wireless, componente capabile să realizeze conectare pe rețeaua de date GSM / 3G, sau componente de tip XBEE utile pentru a realiza comunicații de tip personalizat.

Platforma Arduino este disponibilă într-o serie de variante, fiecare cu diferite capabilități și dimensiuni.

2.2.1 Exemple de plăci Arduino

A. Arduino Uno – Aceasta este cea mai recenta placă de dezvoltare de la Arduino. Se conectează la computer prin intermediul cablului USB standard A-B și conține tot ceea ce ai nevoie pentru a programa și utiliza placa. Acestuia i se poate adăuga o varietate de Shild-uri (placă cu caracteristici speciale, specifice unor tipuri de aplicații). Este similar cu Duemilanove, dar are un chip diferit USB-to-serial – ATMega8U2, și cu un design nou de etichetare pentru a identifica mai ușor intrările și ieșirile.

Fig. 2.8. Placa de dezvoltare Arduino UNO

B. Mega 2560 – versiune a modelului Mega lansat cu Uno, această versiune dispune de Atmega2560, care are de două ori mai mult spațiu pentru memorie, și folosește 8U2 ATMega pentru comunicare USB-to-serial.

Fig. 2.9. 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. 2.10. Placa de dezvoltare Arduino Mini

D. Nano – O placă de dezvoltare compactă proiectată pentru utilizarea pe un breadboard. Nano se conectează la computer utilizând un cablu USB Mini-B.

Fig. 2.11. Placa de dezvoltare Arduino Nano

E. Duemilanove – Arduino Demilanove este o platformă de procesare bazată pe microcontrolerul ATmega168 sau ATmega328. Are 14 pini de intrări/ieșiri digitale.

LED: 13. Există un LED încorporat în placă, conectat la pinul 13. Cand valoarea pe pin este HIGH, LEDul este aprins, când valoare este LOW, LEDul este stins.

Placa Arduino UNO are 6 intrări analogice, denumite dela A0 la A5, fiecare oferă o rezoluție de 10 biți. Implicit, ieșirile măsoară de la masa la 5v, deși este posibil ca limita superioară să fie schimbată cu ajutorul pinului AREF si funcția analogReference().

Fig. 2.12. Placa de dezvoltare Arduino Duemilanove

F. LilyPad – Proiectat pentru aplicații ușor de implementat pe materiale textile, acest microcontroler poate fi cusut pe țesătură și are o culoare atrăgătoare, mov.

Fig. 2.13. Placa de dezvoltare Arduino LilyPad

G. Fio – Proiectată pentru aplicații fără fir. Acesta are inclusă o priză dedicată pentru un modul radio Wi-Fi XBee, un conector pentru o baterie Li Polymer și circuite integrate de încărcare a bateriei.

Fig. 2.14. Placa de dezvoltare Arduino Fio

H. Pro – Acestă placă de dezvoltare este concepută pentru utilizatorii avansați care doresc să încorporeze această placă într-un proiect: este mai ieftin decât un Diecimila și ușor de alimentat la o baterie, dar necesită componente suplimentare și asamblare.

Fig. 2.15. Placa de dezvoltare Arduino Pro

I. Pro Mini – Ca Pro, Pro Mini este conceput pentru utilizatorii avansați care au nevoie de un cost scăzut, plăci de dezvoltare mici și care sunt dispuși să facă ceva lucru suplimentar pentru a o putea utiliza în proiecte.

Fig. 2.16. Place de dezvoltare Arduino Pro Mini

J. Serial – Este o placă de dezvoltare, care utilizează ca interfață un RS232 (COM) la un calculator pentru programare sau de comunicare. Acestă placă este ușor de asamblat, chiar ca un exercitiu de învățare. (Inclusiv scheme și fișiere CAD)

Fig. 2.17. Placa de dezvoltare Arduino Serial

Capitolul 3. Realizarea structurii electrice și de control a robotului

Placa Arduino UNO

Fig. 3.1 Elementele componente ale plăcii Arduino UNO

Prezentare generală

Arduino Uno este o placă de procesare bazată pe microcontrollerul ATmega328. Are 14 pini de intrări\ieșiri digitale (din care 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, un cristal oscilator de 16 MHz, o conexiune USB, o mufă de alimentare, un ICSP, și un buton de resetare. Aceasta conține tot ceea ce este necesar pentru a ajuta la funcționarea microcontrolerului; pur și simplu conectați la un computer cu un cablu USB sau alimentați la un adaptor AC-DC sau baterie pentru a începe.

Uno diferă de toate plăcile precedente, în sensul că nu folosește chip driver FTDI USB la un serial. În schimb, este dotat cu Atmega8U2 programat ca și convertor USB.

"Uno" înseamnă unu în limba italiană și este numită pentru a marca lansarea viitoare a Arduino 1.0. Uno și versiunea 1.0 vor fi versiunile de referință Arduino, pentru a avansa. Uno este ultima dintr-o serie de plăci Arduino USB, și modelul de referință pentru platforma Arduino.

3.1. Caracteristici

Tabel 3.1 Caracteristicile placii Arduino UNO

3.2. Alimentarea

Arduino Uno poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de alimentare externă. Sursa de alimentare este selectată automat.

Sursele externe de alimentare (non-USB) pot fi, fie un adaptor AC-DC sau baterie. Adaptorul poate fi conectat printr-un conector de 2.1mm cu centru-pozitiv în mufa de alimentare de pe placă. Traseele de la baterie pot fi introduse în pinii GND și V-in ai conectorului de alimentare.

Placa poate funcționa cu o sursă externă de 6-20 volți. Dacă este alimentată cu mai puțin de 7V, atunci pinul de 5V scoate o tensiune mai mica de 5V și placa poate deveni instabilă. Dacă se utilizează mai mult de 12V, regulatorul de tensiune se poate supraîncălzi și deteriora placa. Intervalul recomandat este de 7-12 volți.

Pinii de putere sunt după cum urmează:

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ă.

3.3. 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 ).

3.4. 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ă.

3.5. Harta pinilor – ATMega 328

Fig. 3.2. Descrierea pinilor microcontrolerului ATMega328

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. LEDurile 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 si 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.

Caracteristici fizice

Lungimea și lățimea maximă a plăcii este de 6.8 cm respective 5.3 cm, cu conectorul USB și conectorul de alimentare care ies din dimensiunile plăcii. Patru orificii de șurub care permite plăcii să fie atașată la o suprafață sau carcasă. Observați că distanța dintre pinii 7 și 8 este de 160 mm.

Fig. 3.3 Dimensiunile plăcii Arduino UNO

3.6. Schema electrică

Fig. 3.4 Schema electrică a plăcii Arduino UNO

3.7. Realizarea circuitului de comandă al motoarelor de curent continuu

Un motor electric (sau electromotor) este un dispozitiv ce transformă energia electrică în energie mecanică. Transformarea inversă, a energiei mecanice în energie electrică, este realizată de un generator electric. Nu există diferențe de principiu semnificative între cele două tipuri de mașini electrice, același dispozitiv putând îndeplini ambele roluri în situații diferite.

Principiul de funcționare: Majoritatea motoarelor electrice funcționează pe baza forțelor electromagnetice ce acționează asupra unui conductor parcurs de curent electric aflat în câmp magnetic. Există însă și motoare electrostatice construite pe baza forței Coulomb și motoare piezoelectrice.

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.

Fig. 3.5. Elementele componente ale motorului de curent continuu

Motorul de curent continuu a fost inventat în 1873 de Zénobe Gramme prin conectarea unui generator de curent continuu la un generator asemănător. Astfel, a putut observa că mașina se rotește, realizând conversia energiei electrice absorbite de la generator.

Motorul de curent continuu are pe stator polii magnetici si bobinele polare concentrate care creează câmpul magnetic de excitație. Pe axul motorului este situat un colector ce schimbă sensul curentului prin infășurarea rotorică astfel încât câmpul magnetic de excitație să exercite în permanență o forță față de rotor.

În funcție de modul de conectare a înfășurării de excitație motoarele de curent continuu pot fi clasificate în:

motor cu excitație independentă – unde înfășurarea statorică și înfășurarea rotorică sunt conectate la două surse separate de tensiune;

motor cu excitație paralelă – unde înfășurarea statorică și înfășurarea rotorică sunt legate în paralel la aceași sursă de tensiune

motor cu excitație serie – unde înfășurarea statorică și infășurarea rotorică sunt legate în serie

motor cu excitație mixtă – unde înfășurarea statorică este divizată în două înfășurări, una conectată în paralel și una conectată în serie.

Înfășurarea rotorică parcursă de curent va avea una sau mai multe perechi de poli magnetici echivalenți. Rotorul se deplasează în câmpul magnetic de excitație până când polii rotorici se aliniază în dreptul polilor statorici opuși. În același moment, colectorul schimbă sensul curenților rotorici astfel încat polaritatea rotorului se inversează și rotorul va continua deplasarea până la următoarea aliniere a polilor magnetici.

Pentru acționări electrice de puteri mici și medii, sau pentru acționări ce nu necesită câmp magnetic de excitație variabil, în locul înfășurărilor statorice se folosesc magneți permanenți.

Turația motorului este proporțională cu tensiunea aplicată înfășurării rotorice și invers proporțională cu câmpul magnetic de excitație. Turația se reglează prin varierea tensiunii aplicată motorului până la valoarea nominală a tensiunii, iar turații mai mari se obțin prin slăbirea câmpului de excitație. Ambele metode vizează o tensiune variabilă ce poate fi obținută folosind un generator de curent continuu (grup Ward-Leonard), prin înserierea unor rezistoare în circuit sau cu ajutorul electronicii de putere (redresoare comandate, choppere).

Cuplul dezvoltat de motor este direct proporțional cu curentul electric prin rotor și cu câmpul magnetic de excitație. Reglarea turației prin slăbire de câmp se face, așadar, cu diminuarea cuplului dezvoltat de motor. La motoarele serie același curent străbate înfășurarea de excitație și înfășurarea rotorică. Din această considerație se pot deduce două caracteristici ale motoarelor serie: pentru încărcări reduse ale motorului, cuplul acestuia depinde de pătratul curentului electric absorbit; motorul nu trebuie lăsat să funcționeze în gol pentru că în acest caz valoarea intensității curentului electric absorbit este foarte redusă și implicit câmpul de excitație este redus, ceea ce duce la ambalarea mașinii până la autodistrugere.

Motoarele de curent continuu cu excitație serie se folosesc în tracțiunea electrică și feroviară (tramvaie, locomotive).

Schimbarea sensului de rotație se face fie prin schimbarea polarității tensiunii de alimentare, fie prin schimbarea sensului câmpului magnetic de excitație. La motorul serie, prin schimbarea polarității tensiunii de alimentare se realizeaza schimbarea sensului ambelor mărimi și sensul de rotație rămâne neschimbat. Așadar, motorul serie poate fi folosit și la tensiune alternativă, unde polaritatea tensiunii se inversează o dată în decursul unei perioade. Un astfel de motor se numește motor universal și se folosește în aplicații casnice de puteri mici și viteze mari de rotație (aspirator, mixer).

Fig. 3.6 Motor de curent continuu

Acest circuit are rolul de a furniza puterea necesară funcționării celor două motoare, astfel încât ele să poată fi controlate de microcontroler. Acest circuit, a cărui structură este prezentată în Fig. 3.4, poate controla independent două motoare de curent continuu bidirecționale. Voltajul recomandat pentru alimentarea celor două motoare este de 3-9V. Se va folosi tensiunea de 6V, obținută prin legarea în serie a patru baterii de 1.5V.

Pentru realizarea circuitului de comandă, vor fi necesare următoarele componente:

un driver motor punte H dublă de tipul L298N;

8 diode Zener ce suportă un curent maxim de 2 A;???

2 condensatori cu capacitatea de 100nF;

o placă pentru sisținerea componentelor.

Nu este absolut necesară folosirea diodelor și a condensatorilor, însă este indicată folosirea lor deoarece regulează tensiunea ce ajunge la motoare, fiind o protecție împotriva curenților autoinduși de motoare.

Fig. 3.7: Schema electrică a circuitului de control al motoarelor de curent continuu

3.8. Senzorul infraroșu

Fig. 3.8 Senzorul infraroșu

Senzorii sunt dispozitive care pot măsura diferite proprietăți ale mediului precum: temperatura, distanța, rezistența fizică, greutatea, mărimea, etc. Informația primită de la aceștia poate fi de cele mai multe ori contradictorie și imprecisă.

În cel mai general caz, senzorii pot fi împărțiți în două categorii, și anume:

Senzori de stare internă – senzori care oferă informații despre starea internă a robotului mobil, spre exemplu nivelul bateriei, poziția roților etc;

Senzori de stare externă – senzori care oferă informații despre mediul ambiant în care robotul funcționează. Senzorii de stare externă se mai pot împărți la rândul lor în două categorii: senzori cu contact, mai precis acei senzori care culeg informația din mediu prin atingere (exemplu: senzor „bumper”), respectiv senzori fără contact, care preiau informația din mediu de la distanță (exemplu: cameră video, senzor ultrasonic, etc).

Un senzor poate fi activ sau pasiv. Senzorii activi sunt acei senzori care emit energie în mediu pentru a putea observa anumite caracteristici ale acestuia, spre deosebire de senzorii pasivi care primesc energie din mediu pentru a putea prelua informația.

La modul general, despre toate categoriile de senzori se pot enunța următoarele ipoteze:

– Orice senzor este afectat de zgomot;

– Orice senzor oferă o informație incompletă a mediului în care efectuează măsurătorile;

– Nici un senzor nu poate fi modelat complet.

De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprietăți,

cele mai importante fiind:

– Sensibilitatea: raportul dintre semnalul de ieșire și semnalul de intrare;

– Liniaritatea: exprimă dacă raportul dintre intrare și ieșire este constant;

– Intervalul de măsurare: diferența între distanța minimă și maximă măsurabilă;

-Timpul de răspuns: timpul necesar pentru ca informația de la intrare să fie observabilă 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.

Relația între proprietățile fizice de interes e ale mediului și informația primită de la un senzor r ar putea fi modelată prin ecuația:

f (e) = r

În principiu, orice model al unui senzor ar trebui să includă și un model intern al zgomotului care poate afecta senzorul în momentul citirii informației. Problema de a recupera informația din mediu din datele primite de la senzor poate fi destul de complexă.

Un senzor este considerat instabil dacă pentru variații mici ale intrării, ieșirea se schimbă radical. În caz general, pentru un senzor cu ieșirea f(e), instabilitatea se referă la: în principiu orice tip de senzor poate fi afectat de mai multe tipuri de erori.

Dintre acestea, cele mai importante sunt erorile incidentale, erorile sistematice și erorile stohastice. Erorile incidentale apar ocazional și pot avea un efect neprevăzut asupra informației, ele provenind în cea mai mare parte de la măsurători efectuate greșit. Erorile sistematice au o influență predictibilă asupra acurateții informației, acestea provenind de la o interpretare greșită a parametrilor în algoritmii de estimare, sau din cauza unor neconcordanțe (incertitudini) în modelare. În fine, erorile stohastice, au un caracter aleator, ele diferind de fiecare dată când robotul execută aceeași operație.

În lumea roboților mobili se întâlnesc o mare varietate de tipuri de senzori. O clasificare de bază a acestora ar putea fi:

– senzori de distanță – acei senzori care oferă informații despre distanța între senzor și obiectul de măsurat din mediu;

– senzori de poziție – acei senzori care oferă informații despre poziția robotului în termeni absoluți;

– senzori de mediu – acei senzori care oferă informații despre diverse proprietăți și caracteristici ale mediului (exemplu: temperatură, culoare);

– senzori inerțiali – acei senzori care măsoară proprietăți diferențiale ale poziției

robotului (exemplu: accelerația).

O altă clasificare a senzorilor se poate face în funcție de tipul de semnal primit, precum și de rolul senzorului în sistemul robotului mobil, îmbinând deci cele două clasificări de mai sus. În continuare, pentru descrierea diferitelor tipuri de senzori, se va folosi această abordare.

Sistemul de măsurare a distanței prin senzor în infraroșu este un tip particular de sistem de achiziție de date, iar aplicațiile sale pot fi găsite în domenii foarte variate. De exemplu:

montarea unui senzor infraroșu Sharp GP2 pe un robot cu funcția de a depista obstacolele;

confecționarea unui dispozitiv de mână compact și portabil pentru a măsura rapid și ușor o distanță relativ mică, pentru distanțe mari folosindu-se alți senzori mai puternici.

Realizarea de diverse dispozitive automate care măsoară distanta.

Mod de funcționare:

Senzorul emite un puls de rază infraroșie de lungime de undă 850 nm ± 70nm. Daca un obiect este în raza de acțiune și în calea razei IR, acesta va reflecta raza înnapoi spre senzor. Senzorul face citirile cu o frecvență de aproximativ 24 Hz și raportează datele sub formă de tensiune (marime analogica). Această tensiune va suferi o conversie pe 8 biți la nivelul CAN-ului prezent pe microcontrolerul Atmega8. Mărimea analogică este convertită în Volți, iar apoi, printr-o funcție de liniarizare obținută din diagrama oferită de Sharp pentru acest senzor, vom obține rezultatul final exprimat în cm.

Prezentarea Hardware:

Pentru pentru proiectare robotului se poate folosi un senzor în infraroșu SHARP GP2Y0A02YK, care prezintă urmatoarele caracteristici tehnice:

– influența scăzută a culorilor obiectelor reflectate, datorată metodei triunghiulare de măsură a distanței

– raza de acțiune între 20 și 150 de cm

Interfața sa prezintă 3 fire: alimentare, masă și tensiunea de ieșire și necesită un connector JST de 3 pini.

Măsurarea distanței prin metoda triunghiurilor (triungiularizării):

Principiul care stă la baza acestei metode de măsură folosite de senzorul Sharp se bazează pe formarea unui triunghi între Emitatorul de rază Infraroșie, punctul de reflexie și Detectorul de Infraroșu. Astfel, emitatorul emite un puls de lumină infraroșie. Lumina străbate câmpul vizual si fie lovește un obstacol sau continuă deplasarea. În cazul inexistenței unui obstacol, lumina nu va fi reflectată și nu se va detecta nici un obiect. Dacă lumina se reflectă de pe un obiect, se va intoarce la Detector și va creea un triunghi între Emitator, punctul de reflexie și Detector, ca în figura 3.9.

Fig. 3.9. Schema de funcționare a unui senzor infraroșu

Unghiurile din acest triunghi variază în funcție de distanța până la obiect.
Receptorul este de fapt o lentilă de mare precizie care transmite lumina reflectată într-o rețea liniară de CCD din interior. Rețeaua de CCD poate determina sub ce unghi a intrat lumina reflectată și, astfel, poate calcula distanța până la obiect.

Această nouă metodă de măsurare a distanței este apoape imună la interferențele cauzate de lumina ambientală și oferă o “indiferență” foarte mare față de culoarea obiectului detectat. Astfel este posibilă detectarea unui perete negru în lumină directă a soarelui.

Neliniaritatea ieșirii senzorului:

Senzorul Sharp folosit in acest proiect prezintă o caracteristica de ieșire neliniară, datorată proprietăților trigonometrice din interiorul triunghiului format de Emițător, punctul de reflexie și Receptor.

Fig 3.10 Diagrama distantei pana la obiect

Din această diagrama care poate fi găsită în documentația oferită de producător se observă că în intervalul cm ieșirea detectorului nu este liniară ci mai degrabă logaritmică.

Se observă de asemenea că pentru o distanță mai mică decât 15 cm, ieșirea scade rapid și începe să ia valori caracteristice măsurătorii unor distante mai mari. Acest lucru poate fi dezastros pentru echipamentele automate sau pentru roboții care pot folosi acest senzor, deoarece vor interpretă că sunt la o distanță mare de obstacol.

O modalitate de a liniariza caracteristica acestui senzor este de a face un grafic al tensiunii V in functie de 1/(D+0.42), si se observa ca vom obtine o linie dreapta. Operatia de impartire are rolul de a liniariza functia initiala.

Fig. 3.11 Grafic al tensiunii

Aceste observatii sunt foarte utile pentru a afla o functie simpla de aproximatie pentru dispozitivul nostru.

Pentru liniarizare vom porni de la relatia 1 / (D + k) = m * V + b (ecuatia unei drepte)

Va rezulta D = (1 / (m * V + b)) – k

D = (m1 / (V + b1)) – k , unde m1 = 1/m si b1 = b/m

Aplicarea calculelor de liniarizare pentru datele proiectului nostru:

Valorile obtinute prin calcule:

Fig. 3.12 Comparatie intre CAN si 1 / (R+k) pentru senzorul Sharp

Fig 3.13 Rezultatele obtinute

Fig. 3.14 Schema conectării senzorului cu microcontrolerul

Microcontrolerul:

Vom folosi microcontrollerul ATMEL Atmega8 care are urmatoarele caracteristici:

arhitectura RISK

131 de instructiuni

32 x 8 registre accesate direct

Multiplicator hardware

Frecventa de 16 Mhz

64 de registre de I-O

8 KB de memorie flash programabila care retine valorile si dupa restartare

Flashul poate fi rescris de 10000 de ori

Zona a memoriei flash in care se poate incarca un cod de Boot ( incarcare a programului)

512 B EEPROM cu posibilitatea de rescriere de 100000 de ori ( adica nelimitata in realitatea sistemelor de zi cu zi )

1 KB de SRAM intern

Posibilitatea de asigurare a sigurantei softului

Periferice:

doua timere/numaratoare de 8-biti

un timer/numarator de 16 biti

CAN cu 8 canale in TQFP si MLF: – 6 canale pe 10 biti

– 2 canale pe 8 biti

– CAN cu 6 canale in PDIP: 4 canale pe 10 biti si 2 canale pe 8 biti

– Interfata seriala bit-cu-bit , cu doua fire

– USART serial programabil

Fig 3.15 Diagrama bloc a microcontrollerului

Capitolul 4: Construcția robotului mobil cu kit Arduino

4.1. Asamblarea robotului mobil cu kit Arduino

A. Se poate folosi ca suport pentru piese un șasiu confecționat din material plastic.

Fig. 4.1 Șasiu

B. Robotul mobil cu kit Arduino este acționat de două motoare de curent continuu de 3V fiecare și oferă un raport de transmisie 58:1. Ambele motoare functioneaza prin intermediul driverului de motoare.

Motoarele de current continuu sunt montate la unul din captele sasiului si fixate prin intermediul unor suruburi. Dupa cum se vede si in fig 4.2 acestea actioneaza mecanic cele 2 roti din fata sasiului.

Fig. 4.2. Motoarele asamblate pe șasiu

C. Pe axul de transmitere al mișcării de rotație se montează două roți din material plastic cu membrane din cauciuc prezentate mai sus in fig 4.2.

D. La celălalt capăt al șasiului am montat o roata cu support mobil pentru controlul si menținerea echilibrului robotului.

Fig. 4.3. Montarea suportului cu roata mobila

E. Senzorul infraroșu Sharp se monteaza pe șasiu prin intermediul unui support mobil de prindere din plastic. Acest support nu este fixat prin suruburi putand fi indepartat cu usurinta pentru programarea robotului ( acesta are nevoie de acces usb prin intermediul placii Arduino)

Fig. 4.4 Montarea senzorului infrarosu pe șasiu

F. Pentru ca placa Arduino UNO să nu vină montată direct pe șasiu am folosit două distanțiere lipite una peste alta folosind banda dubla . Apoi se monteaza placa Arduino uno.

In fig 4.5. s-a montat de asemenea si driverul prin intermediul caruia se realizeaza miscarea celor doua moatare. Tot aici este prezenta si sursa de alimentare a robotului, aceasta foloseste patru baterii, fiecare de cate 1.5 volti alimentand atat motoarele cat si placa de baza.

Fig. 4.5. Montarea plăcii Arduino, a driverului de motoare si a sursei de alimentare

G. Ansamblul robotului cu kit Arduino

Fig. 4.6. Robotul mobil cu kit Arduino

4.2. Conectarea senzorului infraroșu Sharp la placa Arduino UNO

Senzorul de distanță Sharp este o componentă care poate fi utilizată împreună cu Arduino pentru a măsura distanța până la diverse obiecte înconjurătoare.

Dispozitivul dispune de trei pini, doi dintre ei fiind pini de alimentare (GND și Vcc), iar cel de-al treilea fiind pinul care dă indicații asupra distanței, prin port-serialul prezentat pe acesta.

Fig. 4.7. Așezarea pinilor senzorului Sharp

Fig. 4.8. Conectarea senzorului în circuit

4.2.1 Principiul de funcționare

Senzorul emite un puls de rază infraroșie de lungime de undă 850 nm A± 70nm. Dacă un obiect este în rază de acțiune și în calea razei IR, acesta va reflectă rază înapoi spre senzor. Senzorul face citirile cu o frecvență de aproximativ 24 Hz și raportează datele sub formă de tensiune (mărime analogică). Această tensiune va suferi o conversie pe 8 biți la nivelul CAN-ului prezent pe microcontrollerul Atmega8. Mărimea analogică este convertită în Volți, iar apoi, printr-o funcție de liniarizare obținută din diagrama oferită de Sharp pentru acest senzorvom obține rezultatul final.

Fig. 4.9. Schema principiului de funcționare

4.3. Conectarea motoarelor de curent continuu

Robotul realizat este pus în mișcare de către două motoare de curent continuu. Fiecare motor este actionat independent.

Motoarele funcționează la o tensiune variabilă între 3 și 6 Volți. Tensiunea de care are nevoie fiecare motor este furnizată de către placa de dezvoltare Ardumoto care este conectată cu placa Arduino.

Microcontrolerul ATMega328 de pe placa Arduino realizează controlul motoarelor.

4.3.1. Realizarea controlului motoarelor de curent continuu

Motoarele sunt controlate prin intermediul unui Dual FULL-BRIDGE DRIVER L298.

A fost construit un PCB special (Ardumoto) pentru controlul acestui driver de motoare și a circuitului său de protectie. L298 primește 8 intrări de la Atmega32: 4 intrari 0/1 care comandă sensul de rotație al motoarelor (porturile C0-C3), 2 intrări de PWM pe pinii de ENABLE A, ENABLE de la OCR0 (PB3) și OCR2 (PD7) pentru a controla turația motoarelor și VCC și GND de la extensia header a portului B.

De obicei, este nevoie în aplicațiile practice să comandăm un motor în ambele sensuri. Acest lucru se poate realiza folosind o punte H pe post de amplificator (driver).

Puntea H este în principiu un circuit cu patru întreruptoare, ce acționează câte două odata pe diagonală, pentru a schimba sensul de rotație al motorului.

Aceste întreruptoare sau comutatoare sunt realizate de obicei cu tranzistoare MOS-FET sau cu tranzistoare .

Fig. 4.10. Schema punții H simplificată

Schema unei punți H folosind dispozitive discrete este prezentată in figura 5.10. Astfel, tranzistoarele utilizate sunt de tip PNP și la fiecare sens de rotație sunt în conducție două din ele. Diodele au rol de protecție sau de blocare a celorlalte două tranzistoare. Montajul este alimentat la 12V și comandă pe baza tranzistoarelor tip NPN este de 5V și vine de la microcontroler.

Fig. 4.11 Schema de principiu a punții H

Un astfel de circuit integrat amplificator sau driver pentru comanda motorului de curent continuu este și L298P. Cu acest circuit integrat putem comanda două motoare de curent continuu odată. Este alimentat la 6V și poate schimba și sensul de rotație a celor două motoare. 

Fig. 4.12 Schema circuitului L298P

Astfel, dacă la pinul 4 vom avea o tensiune de 5V și la pinul 5 vom trimite o tensiune de 0V, atunci motorul A din stanga circuitului integrat se va roti într-un sens. Dacă schimbăm tensiunile prezente la intrările de comandă, adică la pinul 4 să trimitem o tensiune de 0V și la pinul 5 o tensiune de 5V, atunci motorul A se va roti în sensul opus. Asemănător, funcționarea motorului B este comandată în același mod, doar că aceste comenzi se dau pe pinii 6 și 7 ai circuitului integrat. 

Capitolul 5. Programarea robotului

5.1 Microcontrolerul ATmega 328

ATMega328 cu Arduino bootloader (Uno). Acest microcontroller vă permite să utilizați programe Arduino în proiectul dumneavoastră fără să utilizați o placă arduino.  Pentru a putea funcționa cu Arduino IDE acest microcontroller are nevoie de un cristal extern de 16 Mhz sau de un rezonator, de o sursa de alimentare de 5V  si de o conexiune serială.

Fig. 5.1 Microcontrolerul ATMega328

5.1.1. Memoria

ATmega328 are 32 KB (cu 0,5 KB utilizați pentru bootloader). Ea are, de asemenea, 2 KB SRAM și 1 KB de EEPROM.

5.1.2 Specificații tehnice

Tabelul 5.1. Specificatiile tehnice ale microcontrolerului

5.2 Programarea placii

Această secțiune va presupune că aveți un PC pe care rulează Microsoft Windows sau un Mac OSX (10.3.9 sau ulterior). În cazul în care utilizați Linux ca sistem de operare, atunci se va referi la ” Getting Started instructions on the ARDUINO” de pe site-ul Arduino.

Luati Arduino și cablul USB A-B

În primul rând, luați placa ARDUINO și așezați-o pe masă în fața dumneavoastră. Luați cablul de USB și conectați-l cu mufa B (partea mai goasă si dreptunghiulară) în mufa de USB de la Arduino.

Fig. 5.2 Cablu USB

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

Descărcare Arduino IDE (Software pentru programare)

Descărcați Arduino IDE de la secțiunea de download de pe www.arduino.cc. În momentul de față, cea mai recentă versiune de software Arduino IDE este 0022, urmând ca actualizările să se facă în momentul aparițiilor unor versiuni noi. Fișierul este un fișier de tip ZIP astfel încât veți fi nevoiți să-l dezarhivați (Un utilitar bun este WinRAR). Odată ce descarcărea s-a terminat, dezarhivați arhiva de tipul ZIP, asigurându-vă că s-a păstrat structura de foldere așa cum este și nu trebuie făcute nici un fel de schimbări în componenta softului.

Dacă faceți dublu-clic pe dosarul creat, veți vedea câteva fișiere și sub-dosare în interiorul acestuia.

Instalarea driverului pentru USB

Dacă utilizați Windows, veți găsi driverele în directorul numit “drivers/FTDI USB Drivers” din Arduino. În etapa urmatoare (“Conectarea plăcii de dezvoltare Arduino“), veți alege calea în fereastra “Window`s Add New Hardware wizard” către driverele indicate mai sus.

Dacă aveți un calculator cu sistem de operare Mac, driverele pentru microcontroler sunt în directorul cu drivere. Dacă aveți un Mac mai vechi ca un PowerBook, iBook, G4 sau G5, trebuie să utilizati drivere PPC: FTDIUSBSerialDriver_v2_1_9.dmg. Dacă aveți un Mac mai nou, cu un cip Intel, aveți nevoie de driverele de Intel: FTDIUSBSerial Driver_v2_2_9_Intel.dmg. Dublu-click pentru a monta imaginea de disc și alegeți FTDIUSBSerialDriver.pkg. Cea mai recentă versiune a driverelor poate fi gasită pe site-ul FTDI.

Fig. 5.3. Manualul electronic al software-ului

D. Conectați placa de dezvoltare Arduino

În primul rând, asigurați-vă că jumperul de selectare a alimentării, între alimentare externă și mufa USB, este setat la USB și nu la alimentare externă (nu se aplică în cazul în care aveți un microcontroler Arduino, care are o funcție Auto Power Select).

Fig. 5.4. Jumperul de selectare a alimentării

Folosind acest jumper puteți: fie alimenta microcontrolerul de la Portul USB (bun pentru curenți slabi, aplicații cu LED-uri, etc) sau de la o alimentare externa (6-12V DC – Curent Continu). Acum, conectați celalalt capăt al cablului USB (A) în mufa de USB de pe PC sau Mac. Veți vedea acum LED-ul de putere mică (marcat PWR mai sus de comutatorul RESET) se va aprinde pentru a vă arăta alimentarea microcontrolerului.

Dacă aveți un Mac, această etapă a procesului este completă și puteți trece la capitolul următor. În cazul în care sunteți utilizator de Microsoft Windows, există cațiva pași în plus pentru a completa instalarea.

În timp ce sistemul de operare Microsoft Windows va detecta că s-a conectat o nouă placă hardware (microcontrolerul Arduino) la PC, va apărea fereastra Found New Hardware Wizard. Bifați “NO, not this time” (figura 5.4) pentru a nu se conecta la Windows Update (Selectați Nu, nu în acest moment) și apoi faceți clic pe Next.

Fig. 5.5. Fereastra „Found New Hardware” a Windows-ului

În pagina următoare (figura 5.6) selectați “Install from a list or specific location (Advanced)” și apoi faceți clic pe Next.

Fig. 5.6. Instalarea dintr-o locatie specifica

Asigurați-vă că “Search for the best driver in these locations” este verificat.
Debifați “Search removable media”. Bifați “Include this location in the search” și apoi faceți click pe Butonul Browse. Răsfoiți la locația de drivere pentru USB și apoi faceți click pe Next. (Figura 5.7)

Fig. 5.7. Instalarea driverului in folderul arduino

Windows-ul va căuta acum pentru un driver potrivit, vă va informa că un “USB Serial Convertor” a fost găsit și a constatat că expertul hardware este acum complet. Faceți clic pe Finish. (Figura 5.8)

Fig. 5.8 Identificarea placii arduino

Acum sunteți pregătit pentru a încarca primul “Sketch” pe microcontrolerul Arduino.

5.3. Programul robotului

#include <Servo.h> //includes the servo library

int motor_pin1 = 4;

int motor_pin2 = 5;

int motor_pin3 = 6;

int motor_pin4 = 7;

int servopin = 8;

int sensorpin = 0;

int dist = 0;

int leftdist = 0;

int rightdist = 0;

int object = 500; //distance at which the robot should look for another route

Servo myservo;

void setup ()

{

  pinMode(motor_pin1,OUTPUT);

  pinMode(motor_pin2,OUTPUT);

  pinMode(motor_pin3,OUTPUT);

  pinMode(motor_pin4,OUTPUT);

  myservo.attach(servopin);

  myservo.write(90);

  delay(700);

}

void loop()

{

  dist = analogRead(sensorpin); //reads the sensor

  if(dist < object) { //if distance is less than 550

   forward();                                  //then move forward

  }

  if(dist >= object) { //if distance is greater than or equal to 550

    findroute();

  }

}

void forward() { // use combination which works for you

   digitalWrite(motor_pin1,HIGH);

   digitalWrite(motor_pin2,LOW);

   digitalWrite(motor_pin3,HIGH);

   digitalWrite(motor_pin4,LOW);

   return;

 }

void findroute() {

  halt();                                             // stop

  backward();                                       //go backwards

  lookleft();                                      //go to subroutine lookleft

  lookright();                                   //go to subroutine lookright

  if ( leftdist < rightdist )

  {

    turnleft();

  }

 else

 {

   turnright ();

 }

}

void backward() {

  digitalWrite(motor_pin1,LOW);

  digitalWrite(motor_pin2,HIGH);

  digitalWrite(motor_pin3,LOW);

  digitalWrite(motor_pin4,HIGH);

  delay(500);

  halt();

  return;

}

void halt () {

  digitalWrite(motor_pin1,LOW);

  digitalWrite(motor_pin2,LOW);

  digitalWrite(motor_pin3,LOW);

  digitalWrite(motor_pin4,LOW);

  delay(500); //wait after stopping

return;

}

void lookleft() {

  myservo.write(150);

  delay(700); //wait for the servo to get there

  leftdist = analogRead(sensorpin);

  myservo.write(90);

  delay(700); //wait for the servo to get there

  return;

}

void lookright () {

  myservo.write(30);

  delay(700); //wait for the servo to get there

  rightdist = analogRead(sensorpin);

  myservo.write(90);

  delay(700); //wait for the servo to get there

  return;

}

void turnleft () {

  digitalWrite(motor_pin1,HIGH); //use the combination which works for you

  digitalWrite(motor_pin2,LOW); //right motor rotates forward and left motor backward

  digitalWrite(motor_pin3,LOW);

  digitalWrite(motor_pin4,HIGH);

  delay(1000); // wait for the robot to make the turn

  halt();

  return;

}

void turnright () {

  digitalWrite(motor_pin1,LOW); //use the combination which works for you

  digitalWrite(motor_pin2,HIGH); //left motor rotates forward and right motor backward

  digitalWrite(motor_pin3,HIGH);

  digitalWrite(motor_pin4,LOW);

  delay(1000); // wait for the robot to make the turn

  halt();

  return;

}

Concluzii

Pe parcurs ce înaintăm în era tehnologizată, tindem tot mai des să folosim roboții pentru efectuarea diferitelor sarcini care, în mod normal, erau efectuate de către om. Fie că vorbim despre roboți industriali, folosiți în majoritatea industriilor, roboți militari care elimină factorul uman în diverse medii ostile, roboți folosiți în cercetare și dezvoltare sau de roboți folosiți în domeniul utilităților publice, ne este imposibil să ne imaginăm viața fără ajutorul lor.

Utilitatea acestui proiect constă în faptul că, deși robotul realizat în cadrul acestei lucrări este unul de mici dimensiuni, plecând de la acest proiect se pot dezvolta mai multe tipuri de roboți si masini care să execute diferite sarcini. O primă direcție ar putea fi crearea unui automobil dotat cu pilot automat, capabil să urmărească traseul impus fără intervenția soferului și să reducă viteza de deplasare în cazul apropiirii de un alt autovehicul folosind radare, care funcționează după principiul sonarului folosit în cadrul acestui proiect. Un alt domeniu de utilizare ar fi acela agricol, unde există mașini autonome capabile să execute singure lucrările pe suprafețele de teren pentru care au fost programate, asemănatoare din punct de vedere al construcției cu robotul realizat.

Principalele avantaje ale acestui robot sunt consumul redus de energie și faptul că funcționează folosind baterii, lucru tot mai des cerut în zilele noastre datorită costurilor tot mai ridicate în furnizarea energiei și al poluării datorate folosirii combustibililor fosili. Un alt avantaj este usurința deplasării datorită utilizării a doar două roți diferențiale și a unui punct de sprijin format dintr-o bila omni-direcțională, nefiind nevoie de atâtea corectări de curs ca în cazul roboților pe 4 sau 6 roți. Alt avantaj este programarea și încărcarea codului sură pe microcontroler deosebit de facile. Costul redus este un alt aspect demn de luat în seamă.

Printre dezavantaje, se numără imposibilitatea utilizării lui pe terenuri accidentate, datorită gărzii la sol reduse, fapt datorat necesității amplasării senzorilor cu infraroșu cât mai aproape de nivelul sololui. Chiar dacă mai sus a fost trecut ca un avantaj, faptul că robotul funcționează pe baterii poate constitui și un dezavantaj, deoarece acestea trebuie schimbate sau reîncărcate periodic.

Bibliografie

1. Frank KREITH , ”Mechanical Engineering Handbook”, Editura “CRC Press”, 1999

2. Robin R. MURPHY, “Introduction to AI Robotics”, Editura “MIT Press”, 2000

3. Mircea NIȚULESCU, “Roboți mobili”, Editura “SITECH Craiova”, 1998

4. Bruno SICILIANO, Oussama KHATIB, “Handbook of Robotics”, Editura “Springer”, 2008

5. Fred MARTIN, Pankaj OBEROI, Randy SARGENT, “Robot Builder’s Guide”, Editura “MIT Press”, 1992

6. www.wikipedia.org

7. www.arduino.cc

8. www.alibaba.com

9. www.lulusoso.com

Bibliografie

1. Frank KREITH , ”Mechanical Engineering Handbook”, Editura “CRC Press”, 1999

2. Robin R. MURPHY, “Introduction to AI Robotics”, Editura “MIT Press”, 2000

3. Mircea NIȚULESCU, “Roboți mobili”, Editura “SITECH Craiova”, 1998

4. Bruno SICILIANO, Oussama KHATIB, “Handbook of Robotics”, Editura “Springer”, 2008

5. Fred MARTIN, Pankaj OBEROI, Randy SARGENT, “Robot Builder’s Guide”, Editura “MIT Press”, 1992

6. www.wikipedia.org

7. www.arduino.cc

8. www.alibaba.com

9. www.lulusoso.com

Similar Posts