You are on page 1of 83

Cuprins

Cuprins.......................................................................................................................1 Capitolul I. Introducere...............................................................................................2 Capitolul II. Domeniul roboilor mobili........................................................................4 2.1 Generaliti legate de roboii mobili..................................................................4 2.1.1 Roboi mobili...............................................................................................4 2.1.2 Clasificarea roboilor mobili........................................................................6 2.1.3 Utilizri ale roboilor mobili.........................................................................7 2.1.4 Structura unui robot mobil..........................................................................9 2.1.5 Acionarea roboilor mobili.......................................................................10 2.1.6 Sistemul senzorial.....................................................................................13 2.2 Constrngeri cinematice privind mobilitatea roboilor pe roi.........................14 2.3 Structura roboilor pe roi...............................................................................19 2.4 Partea senzorial a roboilor mobili.................................................................21 2.4.1 Senzori de tip sonar..................................................................................21 2.4.2 Senzori infrarou (IR)................................................................................29 Capitolul III. Studiu de caz; Construcia i programarea unui robot mobil cu roi difereniale...............................................................................................................30 3.1 Elementele componente ale robotului???........................................................30 3.2 Realizarea structurii mecanice a robotului......................................................32 3.3 Realizarea structurii electrice i de control a robotului..................................36 3.4 Schema de control folosind microcontrolerul ATmega328..............................42 3.5 Senzorii de proximitate...................................................................................47 3.5.1 Senzorul cu utrasunete DYP-ME007..........................................................47 3.5.2 Senzorul cu infrarou QTR-1RC.................................................................50 3.6 Programarea robotului.....................................................................................52 3.7 Testarea robotului i a codului surs...............................................................60 Capitolul IV. Concluzii...............................................................................................62

Bibliografie............................................................................................................... 64 Anex........................................................................................................................65

Capitolul I. Introducere

Tema acestei lucrri este construirea si programarea unui robot mobil cu dou roi difereniale, echipat cu microcontroler ATmega328P-PV i avnd ca modaliti de detecie senzori cu infrarou i cu ultrasunete. Robotul trebuie s fie capabil s urmareasc n mod autonom un traseu realizat n prealabil i sa evite eventualele obstacole ce ar putea aprea n calea sa, revenind la traseul prestabilit.

Unul din cele mai importante aspecte n evoluia fiinei umane este folosirea uneltelor care s simplifice munca fizic. n aceast categorie se nscriu i roboii, ei ocupnd totui o poziie privilegiat datorit complexitii lor. n cultura popular, termenul robot denot n general unele caracteristici antopomorfe (asemanatoare omului). Tendina de a ne gndi la roboi c ar avea caracteristici umane poate fi cauzat de originile termenului robot. Acesta a fost fcut public pe 25 Ianuarie 1921, n Praga, odat cu prima ecranizare a piesei lui Karel Capek, Roboii Universali ai lui Rossum. n aceast pies, un inventator anonim, Rossum, creaz o ras de muncitori, construii din pri biologice, ndeajuns de inteligeni ca s nlocuiasc omul n orice sarcin (de aici i termenul de universal). Aceast viziune asupra roboilor a dus oamenii acelor timpuri cu gndul c aceste creaturi artificiale au unicul scop de a elibera oamenii de orice fel de munc [2]. Revoluia informatic a marcat saltul de la societatea industrializat la societatea avansat informatizat, genernd un val de nnoiri n tehnologie i n educaie, acest lucru permind realizarea de roboi. Odata cu trecerea timpului, s-a schimbat i percepia omului asupra roboilor: de la creaturi asemntoare omului la roboi ce iau orice form util ndeplinirii sarcinilor impuse. Nu mai exist nevoia ca roboii s aibe caracteristici antropo-morfe, nici mcar asemntoare cu ale animalelor. Devine clar c forma nu furnizeaz o definiie util a unui robot. Aadar, o definiie demn de luat n seam este urmatoarea: Un robot inteligent este o creatur mecanic ce poate funciona autonom [2]. Roboii ofer beneficii substaniale muncitorilor, industriilor i implicit rilor. n situaia folosirii n scopuri panice, roboii industriali pot influena pozitiv calitatea vieii oamenilor prin nlocuirea acestora n spaii periculoase, cu condiii de mediu duntoare omului, cu condiii necunoscute de exploatare etc. Domeniile de aplicare a tehnicii roboilor se lrgesc mereu, ei putnd fi utilizai n industrie, transporturi i agricultur, n sfera serviciilor, n cunoasterea oceanului i a spatiului cosmic, n cercetarea tiinific etc.
3

Principalele contribuii aduse de proiectul acesta sunt proiectarea i construcia robotului mobil, realizarea schemei electrice i de control, programarea robotului i testarea caracteristicilor i a performanelor acestuia. Proiectul este structurat pe patru capitole. Primul capitol este unul introductiv, n care sunt prezentate scopul lucrrii, cteva date despre roboi, precum i structurarea lucrrii. n capitolul doi este prezentat partea teoretic necesar realizarii robotului mobil, cuprinznd consideraii cinematice necesare micrii i orientrii robotului, tipuri de structuri ce caracterizeaz diferii roboi i metode de detecie folosind senzorii disponibili. n capitolul trei este prezentat construcia i programarea robotului, parcurgnd toate etapele necesare finalizrii prii practice a proiectului: realizarea structurii mecanice, a celei electrice i de control a robotului i programarea acestuia. n ultimul capitol se vor regsi concluziile trase ca urmare a realizrii acestui proiect. La sfritul lucrrii se va gsi o anex care va cuprinde codul surs pe care l utilzeaz robotul.

Capitolul II. Domeniul roboilor mobili

2.1 Generaliti legate de roboii mobili

2.1.1 Roboi mobili

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

efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate s fie riscante (pot duce la deteriorarea obiectelor sau a robotului). Navigarea robotului este posibil i fr o determinare a poziiei i orientrii fa de un sistem de coordonate fix, dar aceast informaie este util pentru sisteme de comand a micrii. Dintre metodele de navigaie mai des utilizate se pot meniona: msurarea numrului de rotaii fcute de roile motoare, folosirea de acceleratoare i giroscoape, geamanduri electromagnetice instalate n teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.

2.1.2 Clasificarea roboilor mobili


Roboii mobili pot fi clasificai dup mai multe criterii, dup cum urmeaz:
a) n funcie de dimensiuni:

- macro-roboi; - micro-roboi; - nano-roboi.


b) n funcie de mediul n care acioneaz:

- roboi teretri; - roboi acvatici i subacvatici; - roboi zburtori; - roboi care actioneaz n spaiul extraterestru.
c) n funcie de sistemul de locomoie: 6

- roboi pe roi (Fig. 2.3) sau enile; - roboi pitori (bipezi (Fig. 2.2), patrupezi, hezapozi (Fig. 2.1), miriapozi); - roboi care se deplaseaz prin salturi; - roboi care se deplaseaz prin rostogolire [1].

Fig. 2.1: Robot hexapod

Fig. 2.2: Robot biped

Fig. 2.3: Robot mobil pe dou roi

2.1.3 Utilizri ale roboilor mobili


Roboii mobili sunt concepui pentru a putea fi utilizai in cele mai diverse domenii. Muli roboi din zona micro i gsesc utilizarea n medicin, fiind capabili s se deplaseze de-a lungul vaselor i tuburilor corpului omenesc, n scopul investigaiilor, interveniilor chirurgicale, dozrii i distribuirii de medicamente, etc. n domeniul industrial, roboii mobili sunt reprezentai de AGV-uri (AutomatedGuided Vehicles), vehicule pe roi, cu ghidare automat, care transport i manipuleaz
7

piese, constituind o alternativ flexibil la benzile de montaj. n agricultur exist tractoare i maini agricole fr pilot, capabile s execute singure lucrrile pe suprafeele pentru care au fost programate. n domeniul forestier roboii mobili pot escalada copacii nali, sau efectua transportul lemnului pentru a elibera o zon defriat recent. n domeniul militar este luat n considerare de ctre armata american perspectiva nlocuirii soldailor combatani cu roboi, pentru a reduce riscul pierderilor umane n lupt. Roboi mobili de cele mai ingenioase i robuste configuraii sunt aruncai n cldiri i incinte din zone de conflict, n scopuri de investigare i chiar anihilare a inamicului; n domeniul utilitilor publice, una dintre cele mai utile i economice utilizri ale roboilor mobili o reprezint inspectarea conductelor de combustibili gazoi i lichizi i a canalizrilor. De exemplu, reeaua de canalizare a Germaniei nsumeaz 400.000 km, iar inspectarea i curirea acesteia presupune costuri de 3.6 Euro pe metru. Numai 20% din conducte sunt accesibile, iar utilizarea roboilor poate reduce costurile cu un 25%. n domeniul serviciilor publice exist posibiliti deosebit de largi de implementare. Sunt roboi pentru: deservirea bolnavilor n spitale, ajutorarea persoanelor btrne sau cu diferite handicapuri, ghidarea i informarea publicului n muzee, aspirarea i curirea ncperilor, splarea geamurilor i a pereilor cldirilor. n domeniul operaiilor de salvare, roboii salvatori (Rescue robots) sunt utilizai n operaiile de salvare a victimelor unor calamiti: cutremure, incendii, inundaii. n domeniul securitii multe operaii de inspectare i dezamorsare a unor obiecte i bagaje suspecte sunt executate de ctre roboi. Roboii mobili au urmtoarele caracteristici comune: 1. Structura mecanic este un lan cinematic serie sau paralel respectiv tip masterslave; 2. Sistemul de acionare utilizat este electric pentru sarcini mici i medii i hidraulic pentru sarcini mari;

3.Sistemul senzorial utilizeaz senzori interni (de turaie, poziie, efort) la nivelul articulaiilor, senzori externi(camere TV) pentru scanarea mediului i senzori de securitate( de proximitate, de prezen cu ultrasunete); 4. Sistemul de comand este ierarhizat, de obicei multiprocesor; 5.Limbajele de programare utilizate sunt preluate de la roboii staionari.

2.1.4 Structura unui robot mobil


Structura unui robot mobil este format din dou mari prti: - Structura mecanic, adic manuipulatorul, care determin performanele tehnice. Aceasta este format, la randul ei, din: - sistemul de locomoie, prin care se asigur deplasarea robotului n spaiul de lucru; - sistemul de manipulare, care asigur poziionarea si orientarea organului de lucru. n procesul de deplasare pe o anumit traiectorie, un robot mobil este caracterizat de urmtoarele funcii:
1. Funcia de locomoie; 2. Funcia de percepie-decizie; 3. Funcia de localizare.

Funcia de locomoie cuprinde sistemul de acionare electric (de propulsie) i sistemul de sprijinire (suspensie). Modalitile de propulsare sunt dintre cele mai diverse, cum ar fi: pe roi, cu jet de ap, cu aer etc. Roboii mobili pot fii dotai cu camer video sau ali senzori de percepere a mediului n care activeaz. Memoria robotului coninut n

microcontroler nmagazineaz cunotinele necesare localizrii tuturor segmentelor de traseu posibile. Indiferent de generaia robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate i cost reduse, la transmiterea micrii i adaptarea la structura mecanic a motoarelor electrice i hidraulice, la proiectarea minilor mecanice pentru a apuca obiecte de diferite forme. Robotul mobil interacioneaz cu mediul nconjurtor prin structura sa mecanic, asigurnd astfel deplasarea, poziionarea i orientarea organului de execuie.

- Structura electronic, respectiv de comand-control, care condiioneaz calitatea performanelor robotului mobil. Referitor la structura electronic, posibilitile actuale permit folosirea a cte unui microprocesor pentru comanda fiecrui grad de mobilitate, precum i a altor microprocesoare specializate pentru tratarea semnalului senzorial.

2.1.5 Acionarea roboilor mobili


Se face cu motoare electrice de putere mic, cu moment de inerie redus, cu capacitate de suprasarcin, cu reductoare de raport mare (i>100) i moment de inerie redus de tip procesional sau armonic. Se pot folosi i uniti integrate motor-reductor. Motoarele electrice utilizate pot fi de urmatoarele tipuri: - motoare de curent continuu; - servo-motoare; - motoare pas cu pas.

10

Motoarele de curent continuu Sunt des folosite n robotic datorit dimensiunilor reduse i energiei furnizate ridicate. Sunt excelente pentru acionarea roilor roboilor mobili, ct i a altor componente. Tensiunea de operare a majoritii motoarelor de curent continuu este de la 1.5 V i pn la 100 V. n robotic, cele mai folosite sunt de 6V, 12 V i 24 V. Viteza este specificat de obicei n rotaii pe minut (RPM) a motorului atunci cnd nu este n sarcin, sau la mersul n gol. Motoarele de curent continuu obinuite au viteze de la cateva sute pn la zece mii de rotaii [5]. Cuplul unui motor este fora de rotaie produs de axul su. Cnd motorul este blocat, acesta produce maximum de cuplu de care este capabil. Cuplul motor se msoar n kg*cm, ceea ce nseamn c motorul exercit o for tangenial de 1kg la o raz de 1cm de centrul axului. Acesta poate varia de la mai puin de 1 kg*cm la zeci de kg*cm n cazul motoarelor mari.
T = F d ,

(2.1)

unde T cuplul motor F fora aplicat d distana fa de centrul de rotaie Puterea unui motor este combinaia dintre vitez i cuplul su. Aceasta ia valoarea maxim undeva ntre strile de mers n gol (vitez maxim, cuplu 0, deci putere 0) i de blocare (vitez 0, cuplu maxim, deci putere tot 0).
P = T v,

(2.2)

unde P puterea T cuplul motor


11

v viteza, exprimat in RPM. De aceea se folosesc reductoare de turaie. Acestea sunt angrenaje de roi dinate, care reduc turaia motorului, dar pstreaz puterea, prin creterea cuplului.

Servo-motoarele Servo-motoarele ncorporeaz mai multe componente: -

un motor de curent continuu de dimensiuni mici; un reductor de turaie; un circuit de control al axului. Axul servo-motorului nu se rotete liber, ci este comandat s se deplaseze la

anumite poziii unghiulare. Circuitul de control al axului acioneaz motorul s mite axul la poziia comandat. Dac poziia se afl nafara razei de micare a axului, motorul va continua s nvrt axul spre poziia comandat. Motoarele pas cu pas Acestea au cteva bobine electromagnetice care trebuie alimentate secvenial pentru ca motorul s funcioneze. Prin inversarea ordinii n care bobinele sunt alimentate, motorul se rotete n direcia opus. Rata la care bobinele sunt alimentate determin viteza motorului pas cu pas. Motoarele pas cu pas obinuite au dou sau patru bobine. Axul motorului se mic de la o bobin la alta, n ordinea n care acestea au fost alimentate.

12

2.1.6 Sistemul senzorial

Robotul mobil este pus n situaia de a desfura aciuni similare cu cele ale operatorului uman. Acest lucru determin existena unor anumite dispositive prin care s se culeag informaii din mediul de lucru, care s realizeze interaciunea robot-mediu cu ajutorul unor caracteristici ale mediului sau ale obiectelor din mediu i o unitate central care s prelucreze n timp real informaia senzorial, s o transforme ntr-o form util pentru sistemul de comand. Sistemul senzorial mai este numit i sistem de msurare. El asigur msurarea unor mrimi fizice i eventual perceperea unor modificri semnificative a acestor mrimi. Datorit sistemului senzorial se pot pune n eviden i caracteristicile geometrice i chimice ale obiectelor din mediul de lucru. Senzorii, datorit caracteristicilor pe care le au, pot explora zona de lucru, zona de contact, cea apropiat, cea ndeprtat, iar senzorii foarte puternici chiar i zone foarte ndeprtate. Informaiile culese cu ajutorul sistemului senzorial servesc la construirea unui model al lumii n care evolueaz robotul, model funcie de care aceasta i va genera planurile de aciuni viitoare. n funcie de soluia constructiv, senzorii sunt pasivi sau activi. Senzorii activi folosesc caracteristicile intrinseci ale mediului, iar cei pasivi genereaz modificri n mediu pentru a msura unele caracteristici. Alte dou categorii de senzori cu care poate fi dotat un robot mobil sunt senzori de mrimi interne ai robotului (poziie, vitez sau acceleraia unor componente mecanice proprii) i senzori de mrimi externe (greutate, form, poziie, temperatur, culoare, etc ale obiectelor asupra crora acioneaz robotul). Caracteristicile senzoriale ale unui robot depind foarte mult de gradul su de autonomie, de aplicaiile pentru care a fost proiectat i de tipul mediului de lucru. n general percepia se realizeaz n dou etape: - conversia proprietilor fizice ntr-un semnal, de obicei electric; - prelucrarea acestui semnal n vederea extragerii informaiei care intereseaz.
13

Exist mai multe criterii de clasificare a senzorilor utilizai n sistemele de comand ale robotului industrial: 1. Dup cum vine sau nu n contact cu obiectul a crui proprietate fizic o msoar, distingem: - senzori cu contact ; - senzori fr contact; 2. Dup proprietile pe care le pun n eviden: - senzori pentru determinarea formelor i dimensiunilor (pentru evaluarea n mediu de lucru); - senzori pentru determinarea proprietilor fizice ale obiectelor (de for, de cuplu, de densitate i elastici); - senzori pentru proprieti chimice (de compoziie, de concentraie, analizatoare complexe); - dup mediul de culegere a informaiei (senzori pentru mediul extern sau senzori pentru funcia intern); - dup distana la care sunt culese informaiile (senzori de contact).

2.2 Constrngeri cinematice privind mobilitatea roboilor pe roi


Presupunem c robotul mobil supus studiului este format dintr-un asiu rigid, echipat cu roi nedeformabile i care se mic pe un plan orizontal. Poziia robotului pe acel plan este descris, n raport cu un reper de referin inerial arbitrar ales, de vectorul de poziie = ( x y )T , unde x i y sunt coordonatele punctului de referin P a asiului robotului, n timp ce descrie orientarea asiului robotului, n raport cu reperul de referin inerial (Fig. 2.4).
14

Fig. 2.4: Definirea poziiei unui robot mobil pe un plan

Presupunem c, n timpul micrii, planul fiecrei roi rmne vertical iar roata se nvrte n jurul axului orizontal, a crui orientare in raport cu asiul poate fi fixat sau variabil. Vom presupune c se reduce contactul dintre roat si suprafaa de deplasare la un singur punct. Constrngerile cinematice rezult din faptul c viteza punctului material al roii n contact cu solul este egal cu zero. Pentru o roat convenional, constrngerile cinematice implic faptul c viteza centrului roii este paralel cu planul roii (condiia de non-alunecare) i este proportional cu viteza de rotaie a roii (condiia de pur rostogolire). Pentru fiecare roat, constrngerile cinematice rezult, aadar, n dou condiii independente [4]. Exist cateva variaii in designul unei roi convenionale.

15

Fig. 2.5: a) Roat fix pasiv; b) Roat omnidirecional cu centrul deplasat; c) Roat directoare activ, fr deplasare a centrului

n primul rnd, ne concentrm asupra roii directoare din Fig. 2.5b. Centrul roii, B, este conectat la asiu prin intermediul unei tije rigide din punctul A (un punct fix de pe asiu) la punctual B, aliniat cu planul roii. Tija, a crei lungime este dat de mrimea d, se poate roti in jurul unui ax vertical n punctul A. Poziia punctului A este specificat cu ajutorul a dou coordinate polare constante, l i , n raport cu punctul de referin P. Rotaia tijei n raport cu asiul este reprezentat de unghiul . Raza roii este desemnat de r, iar unghiul su de rotaie n jurul axului ei orizontal este desemnat de . Aadar, descrierea implic patru parametri constani: , l, r i d, i dou variabile: (t) i (t). Cu ajutorul acestor notaii, constrngerile cinematice sunt derivate dup cum urmeaz n continuare. Pentru roti fixe sau directoare, trebuie s lum n considerare fie cazul n care d = 0 i constant (cazul roilor fixe), fie cazul n care d = 0 si variabil (cazul roilor directoare). Pentru nceput vom evalua viteza centrului roii, care rezult din urmatoarea expresie vectorial (vezi Fig. 2.5b):
d d d d OB = OP + PA + AB dt dt dt dt

(2.3)

unde O este originea reperului de referin inerial arbitrar ales. Cele dou componente ale vectorului sunt exprimate astfel:
& & ) & & x cos + y sin l sin + ( + & d cos( + )

(2.4)

& & x sin + y cos l& cos +& + d sin( + ( &) )


16

(2.5)

Proieciile acestui vector pe direcia planului roii, de exemplu pe vectorul

& (cos( + - /2), sin( + /2)) i vectorul axului roii (cos(+), sin(+)), sunt r
i 0, corespunznd condiiilor de pur rostogolire i non-alunecare. Dup cateva manipulri, aceste condiii pot fi rescrise sub urmtoarea form compact: Condiia de pur rostogolire:
( sin( + ) cos( + ) l cos R + r&= 0 ) ( )

(2.6)

Condiia de non-alunecare:
& ( cos( + ) sin(+ ) d + l cos ) R ( ) + d= 0

(2.7)

n aceste expresii, R() este matricea ortogonal de rotaie care exprim orientarea robotului n raport cu reperul de referin inerial.
cos R( ) = sin 0 sin cos 0 0 0 1

(2.8)

Aceste expresii generale pot fi simplificate pentru diferite tipuri de roi convenionale. Pentru roile fixe, centrul roii este fix n raport cu asiul iar orientarea roii este constant. Aceast situaie corespunde unei valori constante a lui si d=0. Ecuaia de non-alunecare se reduce la:

(cos( + ) sin ( + ) l cos ) ) R (


17

0=

(2.9)

Pentru roile directoare, centrul roii este deasemeni fix n raport cu asiul (d=0), cu variind n timp, astfel ecuaia de non-alunecare ia forma din ecuaia (2.7). Situaia descris de ecuaiile (2.6) i (2.7), cu lungimea tijei AB nenul i orientarea unghiului variabil n timp corespunde roilor pasive, care se pot mica n orice direcie din plan (omnidirecionale).

Cele cinci clase de roboi mobili pe roi Exist cinci clase de roboi, n funcie de tipurile de roi folosite i numrul lor: Tipul 1 de roboi Aceti roboi nu au roi fixe sau directoare, ci sunt echipai cu roi omnidirecionale. Aceti roboi sunt denumii omnimobili, deoarece au mobilitate maxim n plan, ceea ce nseamn c sunt capabili s se mite n orice direcie fr a avea nevoie de reorientare. Tipul 2 de roboi Aceti roboi nu au roi directoare, dar au fie una sau mai multe roi fixe cu un ax comun. Mobilitatea este redus, n sensul c sunt necesare mai multe corecii de curs pentru a atinge destinaia dorit. Un exemplu al acestui robot este scaunul cu rotile. Tipul 3 de roboi Aceti roboi nu au roti fixe i cel puin o roat directoare.

18

Tipul 4 de roboi Aceti roboi au una sau mai multe roti fixe pe un singur ax comun, i deasemeni una sau mai multe roi directoare, cu condiia ca centrele lor s nu fie pe axul comun al roilor fixe, iar orientrile lor sunt coordonate. Acestei clase aparin roboii mobili construii dup modelul automobilelor. Tipul 5 de roboi Aceti roboi nu au roi fixe, dar au cel puin dou roti directoare.

2.3 Structura roboilor pe roi


Exist multe tipuri de design pentru roboii mobili pe roi. Printre problemele de proiectare ale robotului mobil se numr selecia tipului potrivit de roi, plasamentul acestora i determinarea parametrilor cinematici. Obiectivele proiectrii trebuie specificate n conformitate cu mediul n care robotul va opera i n conformitate cu sarcinile pe care le va efectua, precum i innd cont de costul iniial i cel de funcionare al robotului. n continuare, ne vom axa pe designul roboilor cu dou roi, acesta fiind i cazul studiat n aceast lucrare [1]. Roboi cu dou roi n general, sunt dou tipuri de roboi pe dou roi. Figura 2.6a arat un robot de tip biciclet, la care roata din fa este folosit pentru virare si dirijare a roii din spate. Din moment ce stabilitatea dinamic a robotului de tip biciclet crete odat cu viteza sa, un mecanism de balansare nu este neaprat necesar. Avantajul acestui tip de construcie
19

este acela c limea robotului este redus. Totui, robotul de tip biciclet nu este des folosit deoarece nu-i poate menine poziia atunci cnd st nemicat. Figura 2.6b ilustreaz un robot cu roi difereniale, de tipul celui ce va fi realizat n cadrul acestui proiect.. Este posibil s atingem stabilitatea pe durata de timp n care robotul nu se mic dac plasm centrul de greutate al robotului pe axul roilor. Totui, este des ntlnit procedeul de aplicare a controlului dinamic de balansare, care este asemnator problemei controlului uzual pentru un robot cu roi difereniale. O aplicaie uzual a acestui tip de robot este proiectarea unei structuri asemntoare unui robot cu patru roti, care este format din doi roboi cu roi difereniale inter-conectai. Astfel, robotul poate urca trepte ridicndu-i roile din fa n timp ce ajunge la treapta urmtoare. Un dezavantaj major al acestui tip de design este acela c este nevoie permanent de control pentru balans dinamic [4].

Fig. 2.6: a) Robot de tip biciclet; b) Robot cu roi difereniale


20

2.4 Partea senzorial a roboilor mobili


Detecia este considerat transformarea entitilor fizice, cum ar fi fora, lumina, distana,intensitatea, ntr-o reprezentare intern a computer-ului. Percepia este extragerea componentelor cheie din datele furnizate de senzori i integrarea informaiilor senzoriale n timp. De obicei, percepia este o sarcin de compirmare a datelor, n sensul extragerii caracteristicilor care permit recunoaterea, urmrirea i descrierea proprietilor speciale din mediul nconjurtor, ce sunt necesare pentru ca robotul s-i execute sarcinile. Robotica se spune c este cuplarea inteligent a percepiei si a aciunilor intreprinse.

2.4.1 Senzori de tip sonar


Detecia cu ajutorul sonarelor sau a senzorilor cu ultrasunete utilizeaz propagarea energiei acustice la frecvene mai ridicate dect cele audibile, pentru a extrage informaii despre mediul nconjurtor. n continuare sunt prezentate fundamentele si proprietile deteciei cu ajutorul sonarelor pentru localizarea obiectelor, msurarea reperelor i clasificarea acestora n cadrul roboticii. Principiile sonarelor Sonarul este un senzor popular n robotic, ce folosete pulsuri acustice i ecourile acestora pentru a msura distana pan la un anumit obiect. Din moment ce
21

viteza sunetului este cunoscut, distana pn la obiect este proporional cu durata de deplasare a ecoului. La frecvene ultrasonice, energia sonarului este concentrat ntr-o und care furnizeaz informaii i despre direcie, pe lng cele despre distan. Popularitatea acestui tip de senzor se datoreaz costului sczut, masei reduse i consumului de energie sczut, n comparaie cu ali senzori de proximitate. n unele aplicaii, cum ar fi mediile subacvatice sau cele cu vizibilitate redus, sonarul este deseori singura opiune viabil [4]. n robotic, sonarele au trei scopuri diferite, dar aflate n legtur: 1. Evitarea obstacolelor: primul ecou detectat se presupune c msoar distana pn la cel mai apropiat obiect. Robotul utilizeaz aceast informaie pentru a planifica trasee ce ocolesc obstacolele si pentru a evita coliziunile. 2. Cartografierea: o colecie de ecouri recepionate prin efectuarea unei scanri prin rotirea unei reele de sonare este folosit pentru a crea o hart a mediului nconjurtor. Similar cu monitorizarea radar, un punct este plasat pe obiectul detectat, pe direcia pulsului de sondare. 3. Recunoaterea obiectelor: o secvena de ecouri sau hari este procesat pentru a clasifica structurile care produc ecouri, compuse din unul sau mai multe obiecte fizice. n caz de succes, aceast informaie este util navigaiei robotului.

22

Fig. 2.7: a) Principiul de funcionare a unui sonar; b) Unda ecou; c) Distana pan la obiect; d) Harta sonarului

Figura 2.7 ilustreaz un sonar simplificat, de la forma sa la harta care rezult n urma deteciei. Un traductor (T/R) se comport att ca transmitor (T), ce emite un puls acustic (P), ct i ca receptor (R) ce preia ecourile (E). Un obiect (O) ce se afl n raza undei sonarului va reflecta pulsul emis de sonar. O parte a semnalului reflectat afecteaz traductorul, aceasta fiind detectat ca ecou. Durata de deplasare a ecoului t0, care mai este denumit timp de propagare (din eng. time-of-flight TOF ), este msurat din timpul de transmisie al pulsului emis. n acest caz, forma de und a ecoului este o replic a pulsului emis, care de obicei const n nu mai puin de 16 cicluri la frecvena de rezonan a traductorului. Distana pn la obiect r0 este dedus din t0 folosind relaia:

r0 =

ct 0 , 2

(2.10)

unde c este viteza sunetului (343 m/s la temperatur i presiune standard). Valoarea 2 transform distana parcurs dus-ntors (P+E) n distana pn la obiect. Pierderile datorate rspndirii undei emise i absorbiile acustice limiteaz raza sonarului.
23

Modelul undei sonarului Pentru a obine o descriere calitativ a traductorului sonarului, vom aplica ipoteze acustice elementare unui model simplificat, obinnd o form analitic simpl (2.10). Emitorul unui sonar este adesea modelat ca suprafaa circular a unui piston de raz a, care vibreaz cu frecvena f ntr-o diagram plan infinit. Lungimea de und va fi:

c , f

(2.11)

unde c este viteza sunetului n aer (343 m/s la 25C). Atunci cnd a > , cmpul de presiune emis va forma o und ce const ntr-un lob principal ncadrat de lobi secundari (Fig. 2.8).

Fig. 2.8: Amplitudinea normalizat a ecoului produs de un obiect de dimensiuni reduse, precizat de modelul pistonului ca o funcie de unghi. a) Scala liniar; b) Scala n decibeli.

24

De exemplu, un traductor des utilizat are raza a = 1.8 cm i este acionat la o frecvena f = 49.4 kHz, avnd lungimea de und = 0.7 cm. Un obiect care este mic comparativ cu si este poziionat n cmpul de presiune emis, produce un ecou cu un front de und sferic, a crui amplitudine se degradeaz odat cu inversul distanei parcurse de und. ntr-un senzor de distan ce folosete un singur traductor puls-ecou (monostatic), doar o parte a frontului de und al ecoului afecteaz diafragma receptoare.

Tipuri de traductoare Traductoarele electrostatice si cele piezoelectrice sunt cele dou categorii majore disponibile, care opereaz n aer, i care pot funciona att ca transmitoare ct i ca receptoare. De obicei, dispozitivele electrostatice au sensibilitatea i limea de band mai ridicate, dar necesit o tensiune de polarizare de peste 100 V. Dispozitivele piezoelectrice opereaz la voltaje mai sczute, ins au un cristal de cuar rezonant, fapt ce implic un rspuns in frecven mai ngust decat la traductoarele electrostatice.

Fig. 2.9: Trei tipuri de traductoare: primul din stnga piezoelectric i celelalte dou electrostatice.
25

Traductoarele electrostatice Un exemplu de traductor electrostatic este cel produs de Polaroid (cel din mijloc din Figura 2.9), construit dintr-o membran de plastic acoperit cu aur, ntins peste o placa rotund, canelat, de aluminiu. Membrana conductoare este ncrcat cu o tensiune de polarizare de 150 V. Undele sonore fac membrana s vibreze astfel modificndu-se distana dintre membran si placa din spatele acesteia, astfel modificnd capacitana membranei. Presupunnd c sarcina q este constant, voltajul v(t) este generat proporional cu capacitana variabil C(t), astfel v(t)=qC(t). Ca transmitor, membrana traductorului oscileaz aplicnd capacitorului pulsuri cuprinse ntre 0-300 V folosind un transformaror de puls. Sarcina indus capacitorului de cei 300 V cauzeaz o for de atracie electrostatic ntre membran i placa de aluminiu. Canelurile de pe plac permit ntinderea membranei, i crend neregulariti n asprimea plcii se obine o rezonan mare n rspunsul n frecven. De exemplu, limea de band a seriei 7000 a traductoarelor Polaroid este de 20 kHz. Tradcutoarele piezoelectrice Traductoarele ceramice piezoelectrice pot fi filosite att ca transmitoare ct i ca receptoare, ns, unii productori vnd transmitoarele i receptoarele separat, pentru a optimiza puterea transmis respectiv sensibilitatea receptorului. Un cristal pizeoelectric oscileaz cnd i este aplicat un voltaj i reciproc, genereaz un voltaj atunci cnd oscileaz mecanic. Adeseori un con concav este montat peste cristal pentru a potrivi din punct de vedere acustic impedan acustic a cristalului cu cea a aerului. Un bun exemplu este emitorul/receptorul Murata MA40A5R/S, care opereaz la frecvena de 40 kHz. Dispozitivul are un diametru de 16 mm i un unghi al undei transmise de 60, pentru o pierdere de -20 dB comparat cu sensibilitatea maxim. Laimea de band efectiv a transmitorului si a receptorului este de numai civa kHz datorit naturii

26

rezonante a cristalului. Aceasta limiteaz timpul de propagare a semnalului modulator al pulsului la 0.5 ms. Un avantaj al acestui fapt este abilitatea de a folosi dispozitivele piezoelectrice la voltaje sczute, de exemplu conectnd fiecare terminal la iesiri logice complementare ale CMOS. Exist o gam larg de frecvene rezonante pentru traductoarele piezoelectrice, de la 20 kHz pna la ordinul MHz-lor. De asemenea mai este disponibil o pelicul piezoelectric denumit flouropolimer polarizat, florura de polivinilin (PVDF). Aceast pelicul flexibil poate fi decupat n diferite forme pentru a forma transmitoare i receptoare ultrasonice. Sensibilitatea dispozitivelor fcute din PVDF este de obicei mai sczut dect a traductoarelor cu cristal iar majoriatea aplicaiilor sunt de distan scurt, unde banda larg a PVDF permite formarea de pulsuri scurte, care permit detecia de tip puls-ecou pn la 30 mm.

Tipuri de ecouri recepionate Modelarea proceselor de reflexie ajut n interpretarea informaiilor primite din ecou. Vom considera trei modele simple: plane, coluri i muchii. Aceste modele se aplic atat traductoarelor simple ct i reelelor formate din acestea.

Fig. 2.10: Modele de reflexie: a) plan; b) col; c) muchie.


27

Un plan este o suprafa neted, care se comport ca o oglind acustic. Pereii netezi si uile se comport ca plane reflectoare. Planul trebuie s fie suficient de lat pentru a produce cele dou reflexii a cror traseu este marcat cu linie punctat (Fig. 2.10a). Planul reflector este aadar puin mai mare dect aria de intersecie a undei cu planul. Planele mai mici produc ecouri mai slabe datorit suprafeei reflectoare i interferene negative datorit ecourilor difractate de marginile planului. O oglind acustic permite o analiza folosind un traductor virtual, indicat de numerele prime din figur. Un col este unghiul drept concav format de intersecia dintre dou suprafee. Colurile formate prin intersecia pereilor, a dulapurilor si a glafurilor sunt cteva exemple de coluri reflectoare. O caracteristic a colurilor este aceea c undele se reflect n aceeai direcie de unde au plecat. Acest fenomen este cauzat de reflexiile planelor a fiecreia dintre suprafeele care definesc colul. Traductorul virtual este aadar obinut prin reflectarea undei dintr-un plan al colului apoi din cellalt plan. Acest fapt d natere la o reflexie prin punctul de intersecie a planelor ce formeaz colul (Fig. 2.10b). Analiza traductorului virtual indic faptul c, pentru un sonar monostatic, ecourile reflectate dintr-un plan si dintr-un col sunt identice, astfel planele i colurile genereaz harti sonare identice. Modul diferit de orientare a traductorului virtual ntre plane i coluri a fost exploatat utiliznd reele de traductoare, pentru a diferenia aceste tipuri de reflectoare. Muchia prezentat n Fig. 2.10c modeleaz obiecte fizice, cum ar fi coluri convexe i suprafee cu o curbur ridicat, unde punctul de reflexie este aproape independent de poziia traductorului. Pe cnd planele i colurile genereaz ecouri puternice, muchiile genereaz ecouri slabe, care sunt detectate numai de la distane mici, fcndu-le obiecte greu de detectat. Cercettorii timpurii din domeniul sonarelor au pus folii cu bule de mpachetat pe muchii pentru a le nlesni detectarea cu ajutorul sonarelor.

28

Multe obiecte din mediul nconjurtor pot fi considerate o colecie de plane, coluri si muchii. Modele ale ecourilor indic faptul c forma de und total a ecoului pT(t) este suma ecourilor individuale pi(t) la distana ri i direcie i , scalate de amplitudinea ai :
N 2ri pT (t ) = ai( i) pi t , c i =1

(2.12)

unde ai ( i) este un factor de amplitudine in raport cu direcia undei. Ecourile cu limea de band mare sunt mai complicate deoarece forma lor de und se modific ntr-o manier determinist datorit difraciei. Sonarele care analizeaz pT(t) necesit convertoare analog-digital pentru a obine exemple de und.

2.4.2 Senzori infrarou (IR)


Senzorii infrarou sunt un alt tip de senzori de proximitate. Acetia sunt formai dintr-un emitor de lumin n spectrul infrarou, de obicei un led, i un receptor, de obicei un foto-tranzistor sau o foto-diod, care detecteaz i msoar cantitatea de lumin reflectat de eventualele obiecte aflate n raza de aciune a senzorului. Senzorii infrarou au o raz de aciune de la civa milimetri la civa metri, n funcie de frecvena luminii folosite i a sensibilitii receptorului. Cei mai simpli senzori infrarou de proximitate sunt construii din led-uri i au o raz de aciune de 5-15 cm. Acetia nu sunt foarte practici, deoarece lumina emis este deseori afectat de lumina din mediul nconjurtor, fcnd astfel detecia imposibil, iar n alte cazuri, lumina emis este absorbit de materialele nchise la culoare din jur.
29

Senzorii mai sofisticai folosesc diferite benzi de lungime de und n infrarou, care pot fi selectate sau modulate pentru a schimba rapotrul dintre semnal i zgomot. Acest fapt asigur c un obiect din raza de aciune nu absoarbe lumina emis, astfel nct robotul sa nu detecteze acel obiect [6]

Capitolul III. Studiu de caz; Construcia i programarea unui robot mobil cu roi difereniale

3.1 Elementele componente ale robotului???


Pentru realizarea fizic a robotului vor fi utilizate urmtoarele componente mecanice si electronice:
-

dou buci dreptunghiulare de plexiglas cu dimensiunile 140x110x5 mm; dou motoare de curent continuu cu reductor de turaie;

un servomotor de tipul SG-90 Nano;


30

dou placue de oel folosite pentru suportul motoarelor pe asiu;

dou roi din material plastic, (7cm diametru), prevzute cu membran de cauciuc;

o sfer de plastic ncastrat ntr-o buc (ball-caster);

uruburi, piulie i aibe de diferite dimensiuni, utilizate pentru a prinde diferitele componente ale robotului de asiu i ntre ele; un kit cu microcontroler Arduino Duemilanove, pe care se afl microcontrolerul ATmega328;

un driver motor punte H dubl de tipul L298N, folosit pentru controlul motoarelor;
31

8 diode redresoare de tipul Zener; 2 foto-tranzistori de tipul NPN; 4 LED-uri emitoare de lumin infraroie; 4 rezistene de 220 i dou de 180 k; 2 condensatori de 100 nF; o plac suport pentru circuite electronice; conectori de tip pini mam i tat; un senzor cu ultrasunete de tipul DYP-ME007;

trei senzori cu infrarou de tipul QTR-1RC;

un suport de metal pentru cei cinci senzori IR; o baterie de 9V; patru baterii de 1.5V de tipul AA; un suport pentru cele patru baterii, cu comutator.

3.2 Realizarea structurii mecanice a robotului


32

Robotul va fi un robot mobil cu dou roi difereniale i o bil ncastrat ntr-o buc, situat n spatele celor dou roi, pentru sprijin, aceasta micndu-se liber n lagrul su. Cele dou roi vor fi antrenate de dou motoare prevzute cu reductoare de turaie, necesare pentru reducerea turaiei motoarelor i creterea cuplului n acelai timp, pentru a facilita deplasarea ct mai uoar a robotului. Cele dou motoare vor fi comandate de un circuit cu punte H dubl, asociat unui microcontroler. Robotul va avea, deasemeni, o reea compus din cinci senzori cu infrarou, folosii pentru a putea urmri traseul desemnat, i un senzor cu ultrasunete, utilizat pentru depistarea eventualelor obstacole ce ar putea s apar n calea sa, i s le evite. Toate piesele componente vor fi susinute de dou plci de plexiglas, situate una deasupra celeilalte, pentru a face robotul ct mai robust i mai mobil. Pentru nceput, vor fi tiate la dimensiunile dorite cele dou buci de plexiglas. Pentru a spori robusteea robotului, au fost aplicate urmtoarele constrngeri din punct de vedere constructiv:
-

lungimea maxim va fi de 22 cm;??? limea maxim va fi de 13 cm; garda la sol va fi cuprins ntre 3 i 5 mm (datorit distanei mici la care senzorii cu infrarou au performanele maxime). Ulterior vor fi alese motoarele. Am decis s folosesc 2 motoare de curent

continuu, fiecare din ele fiind prevzut cu cutie de viteze. Cutia de viteze const, de fapt, dintr-un ansamblu de roi dinate, folosit pentru reducerea turaiei concomitent cu creterea cuplului motor, dup cum se poate observa n Fig. 3.1. Raia utilizat de reductorul de turaie este de 120:1,??? furniznd att o vitez destul de ridicat, ct i un cuplu motor suficient de mare pentru a nu exista probleme n dinamica micrii robotului.

33

Fig. 3.1: Motorul i reductorul de turaie

Pe una din cele dou buci de plexiglas vor fi montate cele dou motoare mpreun cu roile aferente, innd cont de constrngerile cinematice care se aplic acestui tip de robot (distana dintre cele dou doi va fi de 11 cm, pentru a face posibil virarea robotului ntr-un spaiu cat mai mic), roile fiind de tipul celor din Fig. 2.5a, prezentate n Capitolul II, cu precizarea c nu sunt pasive, ci active.??? Apoi va fi montat bila omnidirecional, asemntoare din punct de vedere al cinematicii si proprietilor cu roata pasiv din Fig. 2.5b prezentat tot n Capitolul II, care va avea rol de punct de sprijin al platformei robotului, cele patru baterii de 1.5V instalate n suportul lor, bateria de 9V i cei cinci senzori cu infrarou, montai n prealabil pe un suport metalic, la distana de 1.5 cm unul de cellalt, fiind plasai la 4 mm deasupra solului pentru o detecie ct mai precis a traseului de urmat. Pe cealalt plac de plexiglas vor fi montate placa cu microcontrolerul, placa cu circuitul cu punte H dubl, necesar pentru comanda motoarelor i servo-motorul, de care va fi ataat senzorul cu ultrasunete. Apoi cele dou plci de plexiglas vor fi montate una deasupra celeilalte cu ajutorul a patru uruburi, robotul fiind unul pe dou nivele.

34

Fig. 3.2: Vedere lateral a robotului

35

3.3 Realizarea structurii electrice i de control a robotului

36

Fig. 3.3: Schema electric i de control a robotului

Partea electric a robotului va fi compus din placa cu microcontrolerul, circuitul de comand al motoarelor de tip punte H dubl, cei cinci senzori cu infrarou (dintre care trei sunt digitali, acetia fiind kituri preinstalate???, iar ceilali doi sunt analogici, fiind construii, dup cum va fi prezentat n continuare), senzorul cu ultrasunete, cele dou

37

motoare de curent continuu, servo-motorul i bateriile necesare alimentrii tuturor componentelor, dup cum apare in Fig. 3.3. Realizarea circuitului de comand al motoarelor de curent continuu Acest circuit are rolul de a furniza puterea necesar funcionrii celor dou motoare, astfel nct ele s poat fi controlate de microcontroler. Acest circuit, a crui structur este prezentat n Fig. 3.4, poate controla independent dou motoare de curent continuu bidirecionale. Voltajul recomandat pentru alimentarea celor dou motoare este de 3-9V. Se va folosi tensiunea de 6V, obinut prin legarea n serie a patru baterii de 1.5V. Pentru realizarea circuitului de comand, vor fi necesare urmtoarele 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 sisinerea componentelor. Nu este absolut necesar folosirea diodelor i a condensatorilor, ns este indicat

folosirea lor deoarece reguleaz tensiunea ce ajunge la motoare, fiind o protecie mpotriva curenilor autoindui de motoare.

38

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

Driverul motor L298N este un circuit integrat de mare voltaj (poate opera pn la 46V). Acesta se folosete la controlul releelor, solenoizilor, motoarelor de curent continuu i a motoarelor pas-cu-pas. Acesta integreaz dou faze de putere. O faz de putere este o punte a crei ieiri pot conduce diferite motoare n mod obinuit sau diferenial, n funcie de starea intrrii.???

Realizarea senzorilor analogici cu infrarou Aceti doi senzori cu infrarou vor completa reeaua de senzori deja existen, format din ceilali trei senzori digitali, pentru a mbuntai detecia i urmrirea traseului prestabilit. Senzorul este format dintr-un foto-tranzistor, cu rolul de receptor, dou led-uri emitoare de lumin infraroie, dou rezistene de 220 i una de 180 k, dup cum se vede n Fig. 3.5. Senzorii vor fi alimentai de la linia de +5V a microcontrolerului. Metoda de detecie const n compararea curentului care iese din foto-tranzistor cu cel de pe ieirea senzorului???. n cazul n care este detectat o suprafa de culoare neagr (reflectan minim), senzorul va furniza o

39

valoare numeric apropiat de 1000, iar n cazul n care este detectat o suprafa alb, senzorul va furniza o valoare numeric apropiat de 0.

Fig. 3.5: Schema electric a senzorului analogic cu infrarou

Conectarea prilor componente la microcontroler Circuitul de comand al motoarelor de curent continuu se conecteaz la microcontroler i la motoare astfel:
-

pinii 2, 3, 13 i 14, care sunt porturile de ieire, se conecteaz la bornele celor dou motoare; pinii 5,7,10 i 12, care sunt porturile de intrare, se conecteaz la patru porturi digitale ai microcontrolerului, ce pot fi configurate ca PWM-uri, i anume porturile nr. 3,5,6 i 11;

pinul 4 este folosit pentru alimentarea circuitului i implicit al motoarlor, astfel el va fi conectat la borna pozitiv a bateriilor de 1.5V; pinul 9 este folosit pentru alimentarea componentelor logice a driverului motor, fiind conectat la ieirea de +5V a microcontrolerului; pinii 6 i 11 sunt intreruptoarele celor dou puni, acetia fiind conectai tot la portul de +5V a microcontrolerului;

40

pinii 1 i 15 reprezint pinii de control ai curentului prin cele dou motoare, n sensul c se poate monta o rezisten ntre fiecare din cei doi pini i mpmntare; acetia nu vor fi folosii, deci vor fi legai direct la mpmntare;

pinul 8 reprezint mpmntarea, acesta fiind legat la pinul mpmntare al microcontrolerului. Servomotorul are trei porturi: unul pentru alimentare, unul este mpmntarea iar

unul pentru controlul voltajului prin servo-motor. Se conecteaz la microcontroler astfel:


-

pinul de alimentare se conecteaz la sursa de 6V; pinul de control al voltajului la portul digital nr. 7 al microcontrolerului. Senzorul cu ultrasunete are patru porturi: unul este pentru alimentare, unul este

mpmntarea, unul este pentru declanarea undei de detecie iar cellalt pentru a prelua informaiile furnizate de ecoul undei emise. Acetia se conecteaz la microcontroler astfel:
-

pinul de alimentare se conecteaz la portul de +5V al microcontrolerului; pinul de declanare a pulsului este conectat la portul digital 9 al microcontrolerului; pinul de preluare a informaiilor furnizate de ecoul pulsului se conecteaz la portul digital 10 al microcontrolerului. Fiecare din cei cinci senzori cu infrarou are cte trei pini: unul de alimentare,

unul este mpmntarea iar al treilea este ieirea senzorului. Reeaua format din cei cinci senzori se va conecta la placa microcontrolerului astfel:
-

alimentrile celor cinci senzori se vor conecta la portul de +5V al microcontrolerului; ieirile celor trei senzori digitali se vor conecta la pinii digitali 2, 8 i 12 ai microcontrolerului;

41

ieirile celor doi sensori analogici se vor conecta la pinii analogici 0 i 1 ai microcontrolerului.

3.4 Schema de control folosind microcontrolerul ATmega328


n rezolvarea structurii de control a robotului am folosit kit-ul Arduino Duemilanove, echipat cu microcontrolerul ATmega328. Deine 14 pini ce pot fi configurai ca intrri sau ieiri digitale (dintre care 6 pot fi utilizai ca ieiri PWM), 6 intrri analogice, un cristal oscilator cu frecvena de 16 MHz, o conexiune USB, o muf de alimentare, un conector folosit pentru programarea microcontrolerului prin portul serial (conector ICSP) i un buton de reset [7].

Fig. 3.6: Schema electric a kit-ului cu microcontroler


42

Alimentarea Kit-ul Arduino Duemilanove poate fi alimentat cu ajutorul conexiunii USB sau de la o surs extern de alimentare. Sursa de alimentare este selectat automat de ctre microcontroler. Sursa extern de alimentare (non-USB) poate fi un acumulator, un adaptor AC-DC sau baterii. Adaptorul poate fi conectat la plac cu ajutorul unui conector de 2.1 mm???. Alt modalitate de a conecta acumulatoare sau baterii la plac este prin conectarea celor dou borne prin fire la pinii Vin i Gnd ai conectorului de alimentare de pe plac???. Placa poate opera fiina alimentat la o surs extern de 6 pn la 20V. Dac este alimentat totui la mai puin de 7 V, pinul +5V este posibil s furnizeze mai puin de 5V, iar regimul de funcionare a plcii poate fi instabil. Dac placa este alimentat la mai mult de 12V, regulatorul de voltaj se poate inclzi, astfel existnd posibilitatea de a se deteriora placa. Gama de voltaj recomandat este de 7-12V???. Pinii de alimentare de pe plac sunt urmtorii:
-

Vin: pinul de alimentare al plcii atunci cnd se utilizeaz o surs extern de alimentare (nafar de conexiunea USB sau alte surse de alimentare regulate). n cazul nc are placa este alimentat de la o surs extern prin conectorul de 2.1 mm, aceast surs poate fi accesat prin pinul Vin.

5V: sursa de alimentare regulat care alimenteaz microcontrolerul ci celelalte componente de pe plac. Aceast tensiune poate proveni fie de la pinul Vin printrun regulator de pe plac, fie de la coneiunea USB sau alte surse regulate de 5V.

3.3V: sursa de alimentare de 3.3V generai de cipul FTDI. Consumul maxim de curent pe acest pin este de 50mA. GND: pinul mpmntare.

43

Memoria Microcontrolerul ATmega328 are 32 KB de memorie flash, folosit pentru stocarea codului (din care 2 KB sunt folosii pentru bootloader), 2 KB de memorie SRAM i 1 KB de memorie EEPROM???. Interfaarea microcontrolerului Fiecare dintre cei 14 pini digitali ai plcii pot fi utilizai att ca intrri, ct i ca ieiri, folosind funciile pinMode(), digitalWrite() i digitalRead(). Acetia opereaz la tensiunea de 5V. Fiecare dintre aceti pini poate primi sau furniza un curent de maximum 40mA i are rezisten cu ntreruptor intern (aceasta este deconectat implicit) de 2050 kOhmi???. n plus, aceti pini au utilizri specializate:
-

Serial: 0 (RX) i 1 (TX): sunt utilizai pentru a recepiona (RX) i transmite (TX) date prin portul serial. Aceti pini sunt conectai la pinii corespunztori ai cipului FTDI serial USB-TTL.

ntreruperi externe: 2 i 3: aceti pini pot fi configurai s declaneze o ntrerupere. Se poate executa o funcie (attachInterrupt() ) n cazul unei ntreruperi dictate de aceti pini.

PWM: 3, 5, 6, 9, 10, i 11: furnizeaz ieiri de tip PWM de 8 bii, cu ajutorul funciei analogWrite(). Interfa serial cu periferice: 10 (Slave select - SS), 11 (Master Out Slave In - MOSI), 12 (Master In Slave Out - MISO) i 13 (Serial Clock - SCK): aceti pini susin comunicaia serial utiliznd librria SPI.

Led: 13: un led este conectat la pinul digital 13. Cnd pinul respectiv are o valoare ridicat, led-ul este aprins, iar cnd valoarea este mic, led-ul este stins. Placa mai posed 6 intrri analogice, fiecare dintre aestea fiind capabile de o

rezoluie de 10 bii (pot lua 11024 de valori diferite). Implcicit, acetia sunt capabili s msoare la voltaje cuprinse ntre 0 i 5V, ns este posibil modificarea limitei
44

superioare, utiliznd pinul AREF i funcia analogReference(). n plus, unii pini au funcii specializate:
-

I2C (Inter-Integrated Circuit): pinii A4 (Serial Data SDA) i A5 (Serial Clock SCL): aceti pini susin comunicaia ntre plac i diferite periferice, folosind librria Wire. Pe lng pinii menionai mai sus, pe plac se mai afla i alte tipuri de pini:

AREF: acest pin poate modifica tensiunea maxim sub care opereaz pinii analogici, utiliznd funcia analogReference(). Reset: folosit pentru ntreruperea alimentrii n scopul resetrii microcontrolerului. De obicei, acest pin se folosete pentru adugarea unui buton de reset, care l anuleaz pe cel deja existent pe plac.

Sistemul de comunicaie Arduino Duemilanove deine o serie de faciliti pentru comunicaia cu un computer, cu alt plac Arduino, sau cu alte microcontrolere. Microcontrolerul ATmega328 furnizeaz comunicaia serial UART TTL (5V), care este disponibil utiliznd pinii digitali 0 (RX) i 1 (TX). Un chip FTDI FT232RL canalizeaz aceast comunicaie serial nspre portul USB, iar driverele chipului FDTI (incluse in softwareul furnizat de Arduino) furnizeaz un port COM virtual pe computer. Software-ul Arduino include un instrument de monitorizare a portului serial, care permite transmisia de date spre i de la plac. Led-urile RX i TX de pe plac vor clipi atunci cnd se transmit date prin cipul FDTI i portul USB ctre computer. O librrie SoftwareSerial permite comunicaia serial pe fiecare dintre pinii digitali ai plcii. Microcontrolerul ATmega328 suport deasemenea comunicaia de tipul SPI (Interfa serial cu periferice) i I2C (TWI). Software-ul Arduino include o librrie Wire pentru a simplifica utilizarea magistralei I2C i o librrie SPI pentru comunicaia SPI.

45

Programarea microcontrolerului Arduino Duemilanove poate fi programat cu ajutorul software-ului pus la dispoziie de ctre productor. Microcontrolerul ATmega328 conine un bootloader, care permite ncrcarea unui nou cod, fr a fi nevoie s utilizm un dispozitiv programator extern. Acesta comunic folosind protocolul STK500. De asemenea, se poate evita folosirea bootloaderului, prin programarea microcontrolerului utiliznd programarea prin portul serial, cu ajutorul conectorului ICSP.???

Resetarea automat (din software) nafar de a fi nevoie de apsarea butonului de reset de pe plac, Arduino Duemilanove este proiectat s permit resetarea sa din software-ul ce ruleaz pe un computer. Una dintre liniile de alimentare a cipului FT232RL este conectat la linia de reset a microcontrolerului, printr-un condensator de 100nF. Cnd aceast linie este ntrerupt, microcontrolerul este resetat. Software-ul Arduino utilizeaz aceast capabilitate pentru a permite ncrcarea unui nou cod prin simpla apsare a butonului Upload din mediul de programare, timp n care microcontrolerul este resetat iar codul este ncrcat. Placa conine o linie ce poate fi tiat, pentru a dezactiva funcia de autoreset???. Pinii de pe fiecare parte a liniei pot fi conectai pentru a reface acea linie. Acetia sunt etichetai pe plac cu RESET-EN. Funcia de auto-reset mai poate fi dezactivat prin conectarea unei rezistene de 110 ohmi la pinii +5V si RESET. Protecia de supracurent a portului USB Arduino Duemilanove conine o siguran resetabil care protejeaz porturile USB ale computerului de sepracurent i scurtcircuit. Cu toate c majoritatea computerelor dein protecii asemnatoare, aceast siguran sporete nivelul de protecie. Dac un curent mai mare de 500mA este aplicat portului USB, atunci

46

siguran intrerupe automat conexiunea, pn cnd supracurentul sau scurtcircuitul este ndeprtat.

3.5 Senzorii de proximitate

3.5.1 Senzorul cu utrasunete DYP-ME007


Senzorul cu ultrasunete este folosit pentru detecia i evitarea eventualelor obstacole ce ar putea s apar n calea robotului. Acesta are un dublu rol: de detecie a obstacolelor i de msurare a distanei pn la acestea. Acest senzor furnizeaz msurtori ale distanei precise, ncepnd de la 3 cm i pn la 3 m. Senzorul funcioneaz prin emiterea unui puls ultrasonic i msurarea timpului care trece ntre emiterea pulsului i captarea ecoului acestuia. Ieirea senzorului este de forma unui puls cu limea variabil, care corespunde distanei pn la obiectul detectat. DYP-ME007 detecteaz obiecte prin emiterea unui puls ultrasonic cu frecvena de 40kHz care clatorete prin aer cu viteza de 343 m/s (viteza sunetului), atinge un obiect i apoi se respinge napoi din acesta. Prin msurarea timpului scurs ntre emiterea pulsului i ntoarcerea ecoului, poate fi determinat distana pn la obiectul detectat (principiul este ilustrat n Fig. 3.7). Distana este calculat folosind urmtoarea formul (echivalent cu formula 2.15 prezentat n Capitolul II):

d = t Vs / 2 ,
unde d = distana pn la obiect

(3.1)

t = durata de deplasare a undei ultrasonice (dus-ntors) Vs = viteza sunetului

47

Fig. 3.7: Diagrama deteciei la senzorul DYP-ME007

Caracteristicile senzorului: -

Tensiunea de alimentare: 5V Curentul consumat: max 15 mA Frecvena: 40kHz Distana minim de detecie: 2 cm Distana maxim de detecie: 450 m Rezolutie: 1 cm Senzorul are un unghi de detecie de 15 (Fig. 3.8) Pulsul declanator al undei de detecie are durata de cel puin 10s

48

Fig. 3.8: Unghiul de detecie a sonarului DYP-ME007

Sonarul este construit astfel nct sa aib un cost ct mai mic. Utilizeaz un PIC12C508 pentu a efectua funciile de control??? i traductoare piezoelevtrice cu frecvena de 40kHz. Dac este alimentat la 5V (tensiunea standard de alimentare), sonarul va detacta cu succes obiectele mari aflate in raza sa, dar detecia obiectelor de dimensiuni reduse poate fi problematic. Astfel, tensiunea de alimentare se poate crete pn la limita maxim de 20V. Mai exist o problem, i anume aceea de a detecta obiecte mai apropiate de 3cm. Teoretic este posibil, ns n practic nu se va efectua o detecie corect, deoarece receptorul va prelua direct unda emis de transmitor, care se afla chiar lng el. Pentru a ngreuna i mai mult situaia, traductorul piezoelectric este un mecanism care continu s mai oscileze o perioad de timp dup ce pulsul ultrasonic a fost emis, de obicei pn la 1ms. astfel, este foarte dificil de fcut diferena dintre aceast citire fals i ecoul care ar putea proveni de la un obiect aflat aa de aproape.

49

3.5.2 Senzorul cu infrarou QTR-1RC


Senzorul QTR-1RC este un mod foarte practic de a aduga capabiliti de urmrire a liniei sau a marginii unui robot, datorit timpului su de rspuns foarte bun. Acesta este format dintr-un led care emite lumin n spectrul infrarou i un foto-tranzistor. Fototranzistorul utilizeaz un circuit cu condensator, care permite unei intrri/ieiri digitale a unui microcontroler s preia o citire analogic a reflexiei luminii infraroii prin msurarea timpului de descrcare a condensatorului. Timpul de descrcare mai mic este o indicaie a unei reflexii mai ridicate. Rezistena cu care este prevzut led-ul emitor este setat s livreze aproximativ 20-25mA ctre led, cnd tensiunea de alimentare este de 5V. Acest curent poate fi furnizat de ctre intrrile/ieirile unor microcontrolere, permind senzorului s fie alimentat pe aceast cale, pentru conservarea energiei. Distana optim de la care se realizeaz detecia este de 3mm, ns senzorul poate opera de la distana maxim de 9.5mm. Senzorul este prevzut cu trei pini: unul de alimentare, unul este mpmntarea iar al treilea este ieirea digital.

Fig. 3.10: Schema electric a senzorului QTR-1RC

50

Inrerfaa dintre senzor i microcontroler Senzorul QTR-1RC are ieiri ce necesit conexiunea cu un pin I/O digital de pe un microcontroler, capabil n primul rnd s ncarce condensatorul, apoi s msoare timpul necesar condensatorului s se descarce prin foto-tranzistor. Aceast metod de msurare are cteva avantaje, mai ales dac se folosesc mai muli senzori:
-

nu este necesar un convertor analog-digital; sensibilitate sporit fa desenzorii ce folosesc ieiri analogice cu poteniometru; citirea n paralel a datelor provenite de la mai muli senzori este posibil la majoritatea microcontrolerelor. Modul obinuit de citire a datelor de la senzor este urmtorul:

se seteaz linia I/O ca ieire i se aplic tensiune pe ea; se permite trecerea a cel puin 10s, timp necesar ca s se ncarce condensatorul de 10nF; se seteaz linia I/O ca intrare (avnd impedana ridicat); se msoar timpul necesar condensatorului s se descarce. Aceti pai pot fi efectuai n paralel asupra mai multor senzori. n cazul unei reflexii puternice, timpul de descrcare a condensatorului este de

cateva zeci de microsecunde. n cazul n care nu exist reflexie, timpul de descrcare este de cteva milisecunde, fiind mult mai mare, dup cum se poate vedea n Fig. 3.11. Timpul exact de descrcare a condensatorului depinde de caracteristicile liniilor I/O a microcontrolerului. Rezultate semnificative sunt obinute de obicei in perioada de 1ms (nu n cazul n care se ncarc msurarea diferenelor mici de culoare n mediile cu liminozitate sczut), permind o eantionare de 1kHz. a) b)

51

Fig.3.11: Semnalul de ieire al senzorului (galben) cnd acesta se afl deasupra unei linii albe (a) i negre (b) i cronometrarea timpului de descrcare a condensatorului (albastru)

3.6 Programarea robotului


Programarea robotului const, de fapt, n programarea microcontrolerului ATmega328. Pentru acest lucru, este necesar software-ul pus la dispoziie de productor. Mediul de programare i dezvoltare Arduino conine un editor de text pentru a scrie cod, o zon de mesaje, o consol, o bar de instrumente cu diferite butoane pentru funciile comune i o serie de meniuri. Acesta se conecteaz la echipamentele Arduino pentru a ncrca n memoria acestora diverse programe i pentru a comunica cu ele. Limbajul de programare folosit de microcontrolerul ATmega328 este limbajul C++. ncrcarea programelor n memoria microcontrolerului se face prn conexiunea USB a kit-ului cu microcontroler. n momentul apsrii butonului Upload din fereastra de editare, microcontrolerul se reseteaz, permind ncrcarea programului.

52

Fig. 3.12: Interfaa programului Arduino

Controlul motoarelor Scopul robotului este acela de a urmri un traseu predefinit i de a evita eventualele obstacole ce ar putea surveni n calea sa, urmnd a reveni la traseul iniial. Pentru a face acest lucru posibil, va fi programat microcontrolerul pentru a controla motoarele de curent continuu, senzorii cu infrarou, senzorul cu ultrasunete i servomotorul care susine i orienteaz n diferite direcii senzorul cu ultrasunete. Pentru a controla motoarele de curent continuu se folosete urmtoarea secven de cod:
int in1 = 3; int in2 = 5; int in3 = 6;
53

int in4 = 11; void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void loop() { delay(1000); analogWrite(in1,150); analogWrite(in2,0); analogWrite(in3,150); analogWrite(in4,0); }

Aceast secven de cod corespunde mersului nainte efectuat de ctre robot. Pentru nceput au fost declarate porturile digitale la care vor fi conectate motoarele, i anume 3, 5, 6 i 11. Apoi porturile au fost setate ca ieiri. Pentru deplasarea robotului nainte, napoi sau pentru a se roti n loc prin rotaia celor dou motoare n sens invers, se folosete funcia analogWrite(), care are ca parametri unul din cele patru porturi utilizate de motoare i o valoare cuprins ntre 0 i 255, ce exprim curentul transmis pe acel port motorului. Un motor care este conectat la porturile 3 i 5 se va mica ntr-un sens la vitez maxim daca pe un portul 3 se va aplica valoarea 255 iar pe cellalt valoarea 0, i n sens invers, dac pe portul 3 se va aplica valoarea 0 iar pe cellalt valoarea 255.

54

Programarea senzorilor cu infrarou Pentru direcionarea robotului astfel nct acesta sa urmreasc traseul impus, cei cinci senzori cu infrarou vor fi asezai unul lng altul, direcia urmat de robot fiind dictat de datele preluate de reeaua compus din cei cinci senzori. Datele furnizate de cei cinci senzori vor fi numere naturale cuprinse ntre 0 i 9 in cazul senzorilor digitali, i 0 i 1000 pentru senzorii analogici, unde 0 nseamn reflectan maxim, adic senzorul este situat deasupra unei poriuni albe, iar 9 (1000 pentru senzorii analogici) nseamn reflectan minim, adic senzorul este situat deasupra unei zone de culoare neagr. Cei trei senzori digitali vor fi ncadrai de cei doi analogici. Se va folosi urmtorul algoritm de direcionare:
-

dac senzorul din mijloc (digital) este deasupra liniei, robotul se va mica nainte, ct timp senzorul respectiv se afl deasupra liniei; dac senzorul digital din stnga se afl deasupra liniei, iar ceilali doi digitali nu vor detecta linia, robotul se va mica spre stnga, pn cnd senzorul din mijloc va detecta linia;

dac senzorul digital din dreapta se afl deasupra liniei, iar ceilali doi digitali nu vor detecta linia, robotul se va mica spre dreapta, pn cnd senzorul din mijloc o va detecta;

dac att senzorul digital din stnga ct i cel digital din mijloc vor detecta linia, robotul se va mica uor spre stnga, pn cnd senzorul digital stng nu va mai detecta linia;

dac att senzorul digital din dreapta ct i cel digital din mijloc vor detecta linia, robotul se va mica uor spre dreapta, pn cnd senzorul digital drept nu va mai detecta linia;

dac senzorul analog din stnga va detecta linia, robotul se va mica puternic spre stnga, pn cnd senzorul analog din stnga nu va mai detecta linia; dac senzorul analog din dreapta va detecta linia, robotul se va mica puternic spre dreapta, pn cnd senzorul analog din dreapta nu va mai detecta linia;
55

dac nici unul dintre senzori nu va detecta linia, atunci robotul se va opri. Citirea datelor obinute de la senzorii digitali se face folosind funcia

qtrrc.read( ), care are ca parametru vectorul sensorValues, care repezint valorile transmise de fiecare senzor, n funcie de ce detecteaz, acestea fiind cuprinse ntre 0 i 9. Citirea datelor furnizate de senzorii analogici se face folosind funcia analogRead(), care are ca parametru variabila atribuit pinului analogic la care este conectat senzorul respectiv.
if(sen[1]>5) //senzor central deasupra liniei negre { // robotul va merge nainte analogWrite(in1,150); analogWrite(in2,0); analogWrite(in3,150); analogWrite(in4,0); // afieaz pe portul serial valorile preluate de la // senzori Serial.println ("mijloc"); Serial.print(sen[0]); Serial.print(" Serial.print(" delay(5); } "); "); Serial.print(sen[1]); Serial.println(sen[2]); //ateapt 5ms

Exemplul de mai sus ilustreaz condiia de mers nainte, care se aplic n cazul n care senzorul din mijloc detecteaz linia ( sen[1] semnific senzorul din mijloc, iar valoarea atribuit mai mare dect cinci semnific faptul c se afl deasupra liniei negre).

56

//senzor { do {

stanga

analog

deasupra

liniei

negre

if(sen[0]<2&&sen[1]<2&&sen[2]<2&&sensA1>150&&sensA2<30)

if(sensA1<30) // senzorul nu mai este deasupra liniei { break; } // robotul va vira spre stanga analogWrite(in1,0); analogWrite(in2,200); analogWrite(in3,200); analogWrite(in4,0); qtrrc.read(sensorValues); //citirea senzorilor digitali for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } sensA1 = analogRead(analogInPin1); //citirea senzorilor analogici sensA2 = analogRead(analogInPin2); //afisarea pe portul serial a datelor preluate de la //senzori Serial.println("puternic stanga"); Serial.print(sensA1); Serial.print(" Serial.print(" "); ");
57

//se va termina executia buclei

Serial.print(sen[0]);

Serial.print(sen[1]); Serial.print(" Serial.print(" delay(5); } while(1); } "); "); Serial.print(sen[2]); Serial.println(sensA2);

Exemplul de mai sus ilsutreaz condiia de virare puternic spre stnga, manevr efectuat n cazul n care senzorul analog din stnga detecteaz linia.

Programarea sonarului Pentru ndeplinirea funciei de detecie i evitare a obstacolelor ce ar putea interveni pe traseul robotului, acesta va utiliza un senzor de proximitate cu ultrasunete, ataat pe un servo-motor, care va roti senzorul pe un arc de cerc de 180, astfel nct acesta s detecteze orice obstacol s-ar afla in faa, stnga respectiv dreapta sa. Pentru nceput, senzorul va fi orientat la 90, adic n faa robotului, detecia pe direcia celorlaltor unghiuri fcndu-se n cazul n care un obstacol este detectat la distana de 15 cm, pentru a avea alternative de schimbare a cursului. Dup ce robotul depete obstacolul respectiv, va trebui s revin la traseul iniial i s-i reia cursul stabilit. Detecia se face n felul urmtor:
-

se seteaz pinul de declanare a pulsului ca ieire i pinul de recepionare a ecoului ca intrare; pentru a declana pulsul, pinul corespunztor este setet HIGH (1 logic sau pragul maxim de tensiune) timp de 10 s i apoi setat LOW (0 logic sau tensiune 0);
58

n momentul declanrii pulsului, pinul corespunztor ecoului este setat HIGH iar la ntoarcerea ecoului este setat LOW, timpul scurs ntre activarea celor dou stari diferite fiind contorizat;

calcularea distanei se face prin njumtairea duratei de propagare a undei nregistrate de senzor i nmulirii acesteia cu viteza de deplasare a undei sonore. Timpul scurs dintre declanarea ecoului i momentul recepiei ecoului este

memorat cu ajutorul funciei pulseIn(inPin, HIGH) unde inPin reprezint pinul setat ca iesire iar HIGH este pragul de tensiune maxim aplicat portului respectiv.

long duration, cm; void setup() { pinMode(pingPin, OUTPUT); //se seteaz portul ca ieire pinMode(inPin, INPUT); //se seteaz portul ca intrare Serial.begin(9600); } void loop() { digitalWrite(pingPin, LOW); //ieirii i se aplic 0 logic delayMicroseconds(2); //asteapt 2s digitalWrite(pingPin, HIGH); //ieirii i se aplic 1 logic delayMicroseconds(10); digitalWrite(pingPin, LOW); duration = pulseIn(inPin, HIGH); //returneaz durata de //deplasare a pulsului cm = duration/29/2; //calculeaz distana n centimetri // afieaz pe portul serial distana pn la obiect Serial.print("Distance: [");
59

Serial.print(cm); Serial.print("]cm\n"); delay(500); }

Mai sus este prezentat procedura de detectare a prezenei unui obiect i calculare a distanei pn la acesta. Distana rezult din durata de deplasare a pulsului. Este tiut viteza sunetului (343 m/s n aer n condiii de temperatur i presiune standard), acesta parcurgnd 1 cm n 29s, de aceea distana este numrul de microsecunde mprit la 29 apoi mprit la 2, deoarece timpul respectiv este durata de propagare a undei dus-ntors.

3.7 Testarea robotului i a codului surs


Pentru testarea robotului au fost fcute o serie de experimente, printre care testarea motoarelor de curent continuu, a senzorilor cu infrarou, testarea sonarului i a servomotorului. Pentru nceput am testat comportarea motoarelor de curent continuu. Dup ce leam setat viteza maxim posibil, am ncrcat pe microcontroler o funcie care sa permit mersul nainte al robotului. Din observaiile fcute, am ajuns la concluzia c exist o
60

mic diferen de turaie ntre cele dou motoare, astfel c la aplicarea aceleiai tensiuni ambelor motoare, robotul nu ar fi fost capabil s mearg n linie dreapt. Aadar am decis s folosesc tensiuni diferite la cele dou motoare, pentru a echilibra turaiile. n stadiul al doilea am testat programul de urmrire a traseului. Pe o coala de carton format A1 am trasat cu band izolatoare de culoare neagr diverse tipuri de trasee de diferite forme i mrimi. Reeaua de senzori cu infrarou era la nceput compus doar din cei trei senzori digitali. Dup ncrcarea programului ce permite urmrirea traseului pe microcontroler, robotul urmrea traseul, ns, n cazul unor viraje mai strnse, acesta nu mai revenea la traseu. Prima msur luat a fost modificarea algoritmului, ns tot nu am ajuns la un rezultat satisfctor n privina comoportrii robotului. Astfel, am decis s mai adaug inc doi senzori analogici cu infrarou pentru a spori aria de detecie a reelei de senzori. Pentru urmrirea liniei cu ct mai puine corecii de curs, am setat motoarele s funcioneze la 60% din viteza maxim. Dup implementarea funciilor necesare, s-a constatat o mbuntaire a comportamentului robotului n sarcina de urmrire a traseului. O alt etap n cadrul experimentelor a constat n testarea sonarului. Pentru nceput sonarul a fost montat direct pe asiul robotului. Am schimbat aceast abordare structural, deoarece sonarul putea detecta obiecte situate numai n faa robotului, nu i pe cele situate n lateral, care ns s-ar fi putut interpune pe traiectoria robotului. De aceea am decis s montez sonarul pe un servo motor, pentru a spori aria de detecie. Experimentele au continuat prin punerea unor obiecte de diferite dimensiuni pe traiectoria robotului. Algoritmul aferent a fost modificat pn cnd robotul ocolea obiectul fr s l ating, ntr-un spaiu ct mai redus. Ultima etap n stadiul de experimentare a fost interconectarea celor dou funcii majore ale robotului, cea de urmrire a traseului i cea de detecie i evitare a obstacolelor. Partea mai dificil a fost ntoarcerea robotului la traseu, dup ce acesta detecta i ocolea obstacolul care i aprea n cale. Dup diferite modificri ale codului surs, am ajuns la un rezultat satisfctor n privina comportrii robotului.???

61

Capitolul IV. Concluzii

Pe parcurs ce naintm n era tehnologizat, tindem tot mai des s folosim roboii pentru efectuarea diferitelor sarcini care, n mod normal, erau efectuate de ctre om. Fie c vorbim despre roboi industriali, folosii n majoritatea industriilor, roboi militari care elimin factorul uman n diverse medii ostile, roboi folosii n cercetare i dezvoltare sau de roboi folosii n domeniul utilitilor publice, ne este imposibil s ne imaginm viaa fr ajutorul lor. Utilitatea acestui proiect const n faptul c, dei robotul realizat n cadrul acestei lucrri este unul de mici dimensiuni, plecnd de la acest proiect se pot dezvolta mai multe tipuri de roboi si masini care s execute diferite sarcini. O prim direcie ar putea fi crearea unui automobil dotat cu pilot automat, capabil s urmreasc traseul impus fr intervenia soferului i s reduc viteza de deplasare n cazul apropiirii de un alt autovehicul folosind radare, care funcioneaz dup principiul sonarului folosit n cadrul acestui proiect. Un alt domeniu de utilizare ar fi acela agricol, unde exist maini autonome capabile s execute singure lucrrile pe suprafeele de teren pentru care au fost programate, asemnatoare din punct de vedere al construciei cu robotul realizat. Principalele avantaje ale acestui robot sunt consumul redus de energie i faptul c funcioneaz folosind baterii, lucru tot mai des cerut n zilele noastre datorit costurilor tot mai ridicate n furnizarea energiei i al polurii datorate folosirii combustibililor fosili. Un alt avantaj este usurina deplasrii datorit utilizrii a doar dou roi difereniale i a unui punct de sprijin format dintr-o bila omni-direcional, nefiind nevoie de attea corectri de curs ca n cazul roboilor pe 4 sau 6 roi. Alt avantaj este programarea i ncrcarea codului sur pe microcontroler deosebit de facile. Costul redus este un alt aspect demn de luat n seam. Printre dezavantaje, se numr imposibilitatea utilizrii lui pe terenuri accidentate, datorit grzii la sol reduse, fapt datorat necesitii amplasrii senzorilor cu infrarou ct
62

mai aproape de nivelul sololui. Chiar dac mai sus a fost trecut ca un avantaj, faptul c robotul funcioneaz pe baterii poate constitui i un dezavantaj, deoarece acestea trebuie schimbate sau rencrcate periodic. Pentru experimentare i testarea performanelor robotului i a funciilor sale a fost construit un traseu, pe care robotul trebuie s-l urmreasc. Pe acest traseu s-au plasat o serie de obiecte, pe care robotul trebuie s le detecteze i apoi s le ocoleasc, folosind sonarul. Dup mai multe modificri are structurii robotului i ale codului surs folosit, robotul a ndeplinit cu succes sarcinile atribuite. O posibil cale de mbuntaire a robotului i a performanelor sale o constituie adugarea unor celule foto-voltaice, care se vor ncrca cu energie solar atat timp ct robotul este folosit n spatiu deschis, fapt ce ar crete considerabil autonomia robotului. Un alt aspect ar fi adugarea unei camere video i a unei interfee wireless, pentru comunicarea cu operatorul i comanda robotului de la distan, operatorul avnd i pozibilitatea urmririi robotului i a mediului nconjurtor, lucru ce nlesnete luarea deciziilor n privina direciei sau vitezei de deplasare a robotului.

63

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 NIULESCU, Roboi mobili, Editura SITECH Craiova, 1998 4. Bruno SICILIANO, Oussama KHATIB, Handbook of Robotics, Editura Springer, 2008 5. Fred MARTIN, Pankaj OBEROI, Randy SARGENT, Robot Builders Guide, Editura MIT Press, 1992 6. www.wikipedia.org 7. www.arduino.cc 8. www.alibaba.com 9. www.lulusoso.com

64

Anex
Codul surs al programului de navigare.

#include <PololuQTRSensors.h> #include <Servo.h> Servo myservo; #define NUM_SENSORS #define TIMEOUT descarcarea iesirilor #define EMITTER_PIN QTR_NO_EMITTER_PIN // emitatorul nu este controlat de nici un pin // senzorii 0, 1 si 2 sunt conectati la pinii digitali 12, 8 si 2 PololuQTRSensorsRC qtrrc((unsigned char[]) {12, 8, 2}, NUM_SENSORS, TIMEOUT, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; // atribuirea pinilor pentru valorile PWM int in1 = 6; int in2 = 11; int in3 = 3; int in4 = 5; // atribuirea pinilor pentru iesirea si intrarea senzorului cu ultrasunete int pingPin = 9; int inPin = 10;
65

3 2500

// numarul de senzori IR digitali // asteapta 2500 us pentru

int contor=0; long duration, cm; // atribuirea pinilor pentru iesirile senzorilor analogici const int analogInPin1 = A0; const int analogInPin2 = A1; int sensA1 = 0; int sensA2 = 0; int sen[3];

void setup() { myservo.attach(7); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(pingPin, OUTPUT); pinMode(inPin, INPUT); Serial.begin(9600); delay(500); int i; pinMode(13, OUTPUT);
66

digitalWrite(13, HIGH); for (i = 0; i < 400; i++) de 10 sec { qtrrc.calibrate(); } digitalWrite(13, LOW);

// se aprinde ledul pentru a indica // face calibrarea sa dureze in jur

faptul ca suntem inca in timpul calibrarii

// citeste toti senzorii de 10 ori

la 2500 us per citire (i.e. ~25 ms per call) // stinge ledul pentru a indica

faptul ca s-a sfarsit calibrarea // printeaza valorile minime ale calibrarii obtinute cand emitatoarele au fost pornite Serial.begin(9600); for (i = 0; i < NUM_SENSORS; i++) { Serial.print(qtrrc.calibratedMinimumOn[i]); Serial.print(' '); } Serial.println(); // printeaza valorile maxime ale calibrarii obtinute cand emitatoarele au fost pornite for (i = 0; i < NUM_SENSORS; i++) { Serial.print(qtrrc.calibratedMaximumOn[i]); Serial.print(' '); } Serial.println(); Serial.println(); delay(1000); }
67

void loop() // bucla programului principal { myservo.write(90); //cm=ultrasonicRead(cm); delay(5); qtrrc.read(sensorValues); sensA1 = analogRead(analogInPin1); sensA2 = analogRead(analogInPin2);

// scaleaza datele primite de la senzori ca numere de la 0 la 9, unde 0 inseamna reflectanta // maxima, iar 9 inseamna reflectanta minima unsigned char i; for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i]*10/1001; } delay(5); unsigned int sensors[3]; if(sen[1]>5) //senzor central deasupra liniei negre { //mers inainte analogWrite(in1,160); analogWrite(in2,0); analogWrite(in3,150); analogWrite(in4,0);
68

cm=ultrasonicRead(cm); delay(5); if(cm<7) evitare(); Serial.println ("mijloc"); Serial.print(sen[0]); Serial.print(" Serial.print(" delay(5); } if(sen[0]>5) //senzor stanga deasupra liniei negre { do { // virare stanga analogWrite(in1,0); analogWrite(in2,150); analogWrite(in3,150); analogWrite(in4,0); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } cm=ultrasonicRead(cm); delay(5); if(cm<7) //daca obiect in raza senzorului cu ultrasunete evitare(); // incep manevrele de evitare Serial.println("stanga");
69

"); ");

Serial.print(sen[1]); Serial.println(sen[2]);

Serial.print(sen[0]); Serial.print(" Serial.print(" delay(5); } while(sen[1]<2); } "); "); Serial.print(sen[1]); Serial.println(sen[2]);

if(sen[2]>5) //senzor dreapta deasupra liniei negre { do { analogWrite(in1,150); analogWrite(in2,0); analogWrite(in3,0); analogWrite(in4,150); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } cm=ultrasonicRead(cm); delay(5); if(cm<7) evitare(); Serial.println("dreapta"); Serial.print(sen[0]); Serial.print(" ");
70

Serial.print(sen[1]); Serial.print(" delay(5); } while(sen[1]<2); } "); Serial.println(sen[2]);

if(sen[0]>5 && sen[1]>5) //senzor stanga si central deasupra liniei negre { do { if(sen[0]<2) { break; } // virare usoara spre stanga analogWrite(in1,50); analogWrite(in2,0); analogWrite(in3,150); analogWrite(in4,0); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } cm=ultrasonicRead(cm); delay(5); if(cm<7)
71

evitare(); Serial.println("usor stanga"); Serial.print(sen[0]); Serial.print(" Serial.print(" delay(5); } while(1); } if(sen[2]>5 && sen[1]>5) //senzor dreapta si central deasupra liniei negre { do{ if(sen[2]<2) { break; } analogWrite(in1,150); analogWrite(in2,0); analogWrite(in3,50); analogWrite(in4,0); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } cm=ultrasonicRead(cm); delay(5); if(cm<7)
72

"); ");

Serial.print(sen[1]); Serial.println(sen[2]);

evitare(); Serial.println("usor dreapta"); Serial.print(sen[0]); Serial.print(" Serial.print(" delay(5); } while(1); } "); "); Serial.print(sen[1]); Serial.println(sen[2]);

if(sen[0]<2 && sen[1]<2 && sen[2]<2 && sensA1>400 && sensA2<30) //senzor stanga analog deasupra liniei negre { do { if(sensA1<30) { break; } // virare brusca spre stanga analogWrite(in1,0); analogWrite(in2,200); analogWrite(in3,200); analogWrite(in4,0); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) {
73

sen[i]=sensorValues[i] * 10 / 1001; } sensA1 = analogRead(analogInPin1); sensA2 = analogRead(analogInPin2); cm=ultrasonicRead(cm); delay(5); if(cm<7) evitare(); Serial.println("puternic stanga"); Serial.print(sensA1); Serial.print(" Serial.print(" Serial.print(" Serial.print(" delay(5); } while(1); } "); "); "); "); Serial.print(sen[0]); Serial.print(sen[1]); Serial.print(sen[2]); Serial.println(sensA2);

if(sen[0]<2 && sen[1]<2 && sen[2]<2 && sensA1<30 && sensA2>400) //senzor dreapta analog deasupra liniei negre { do{ if(sensA2<30) {
74

break; } analogWrite(in1,200); analogWrite(in2,0); analogWrite(in3,0); analogWrite(in4,200); qtrrc.read(sensorValues); for (i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } sensA1 = analogRead(analogInPin1); sensA2 = analogRead(analogInPin2); cm=ultrasonicRead(cm); delay(5); if(cm<7) evitare(); Serial.println("puternic dreapta"); Serial.print(sensA1); Serial.print(" Serial.print(" Serial.print(" Serial.print(" delay(5); } while(1); } "); "); "); "); Serial.print(sen[0]); Serial.print(sen[1]); Serial.print(sen[2]); Serial.println(sensA2);

75

cm=ultrasonicRead(cm); delay(5); if(cm<7) evitare(); delay(5);

//Functii predefinite folosite in bucla LOOP

long ultrasonicRead(long cm) //detectia si returnarea distantei de catre senzorul cu ultrasunete { digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(10); digitalWrite(pingPin, LOW); duration = pulseIn(inPin, HIGH); cm = microsecondsToCentimeters(duration); Serial.println(cm); return cm; delay(15);
76

void straight() //mers inainte { analogWrite(in1,162); analogWrite(in2,0); analogWrite(in3,150); analogWrite(in4,0); }

void turnLeft() //virare stanga { analogWrite(in1,0); analogWrite(in2,150); analogWrite(in3,150); analogWrite(in4,0); }

void turnRight() //virare dreapta { analogWrite(in1,150); analogWrite(in2,0); analogWrite(in3,0); analogWrite(in4,150); }

void Stop() //oprire {


77

analogWrite(in1,0); analogWrite(in2,0); analogWrite(in3,0); analogWrite(in4,0); }

long microsecondsToCentimeters(long microseconds) { // trasnformare din microsecunde in centimetri return microseconds / 29 / 2; }

void evitare() //functia de evitare a obstacolelor { do { do { turnRight(); cm=ultrasonicRead(cm); delay(10); } while(cm<50); Stop(); delay(1000); turnRight();
78

delay(750); Stop(); delay(200); myservo.write(180); delay(1000); cm=ultrasonicRead(cm); delay(10); cm=ultrasonicRead(cm); delay(10); if(ir()==1) break; do { straight(); if(ir()==1) break; cm=ultrasonicRead(cm); delay(10); } while(cm<50); contor=0; do { straight(); contor++; delay(20); if(ir()==1) break; }
79

while(contor<=30); contor=0; do { turnLeft(); contor++; delay(20); if(ir()==1) break; } while(contor<=25); do { straight(); if(ir()==1) break; cm=ultrasonicRead(cm); delay(10); } while(cm>15); do { straight(); if(ir()==1) break; cm=ultrasonicRead(cm); delay(10); } while(cm<50);
80

contor=0; do { straight(); contor++; delay(20); if(ir()==1) { straight(); delay(150); turnRight(); delay(250); break; } } while(contor<=40); contor=0; do { turnLeft(); contor++; delay(20); if(ir()==1) { straight(); delay(150); turnRight(); delay(250); break; }
81

} while(contor<=25); do { straight(); if(ir()==1) { straight(); delay(150); turnRight(); delay(250); break; } cm=ultrasonicRead(cm); delay(10); } while(cm>15); contor=0; do { straight(); contor++; delay(20); if(ir()==1) { straight(); delay(150); turnRight(); delay(250); break;
82

} } while(contor<=100); } while(sensA1<30 && sen[0]<2 && sen[1]<2 && sen[2]<2 && sensA2<30); }

int ir() // functia de verificare a detectiei traseului de catre orice senzor IR { qtrrc.read(sensorValues); for (int i = 0; i < NUM_SENSORS; i++) { sen[i]=sensorValues[i] * 10 / 1001; } sensA1 = analogRead(analogInPin1); sensA2 = analogRead(analogInPin2); delay(5); if(sensA1>400 || sen[0]>5 || sen[1]>5 || sen[2]>5 || sensA2>400) return 1; else return 0; }

83

You might also like