Minirobot Mobil Cu Senzori Pentru Detectare Obstacole

S-ar putea să vă placă și

Sunteți pe pagina 1din 137

Minirobot mobil cu senzori pentru detectare obstacole

Cuprins

Introducere Capitolul I- Studiu privind stadiul roboilor mobile 1.1 Roboi mobili 1.2 Clasificarea roboilor mobili 1.3 Utilizri ale roboilor mobili 1.4 Structura unui robot mobil 1.5 Acionarea roboilor mobili 1.6 Sistemul senzorial 1.7 Tipuri de roboti mobili Capitolul II- Studiul dinamicii robotului mobil cu roi 2.1 Model cinematic Capitolul III- Proiectarea elementelor constructive 3.1 Elemente componente ale minirobotului 3.2 Placa minirobotului 3.3 Motoarele de curent continuu 3.4 Senzorul Capitolul IV- Proiectarea interfeelor de comunicare 4.1 PX-400 Cutie Programat In-Sistem cu interfa serial 4.2 Interfaa SPI 4.3 Cabluri de transfer a datelor Capitolul V- Programarea robotului 5.1 Instalarea AVR Studio
3

Minirobot mobil cu senzori pentru detectare obstacole

5.2 Crearea programului C n AVR Studio Bibliografie

Introducere Unul din cele mai importante aspecte n evoluia fiinei umane este folosirea uneltelor care s simplifice munca fizic. n aceasta categorie se nscriu i roboii, ei ocupnd totui o poziie privilegiat datorit complexitii lor. Noiunea de robot dateaz de peste 4 mii de ani. Omul i-a imaginat dispozitive mecanizate inteligente care s preia o parte nsemnata din efortul fizic depus. Astfel a construit jucrii automate si mecanisme inteligente sau i-a imaginat roboii in desene, carti, filme "SF" etc. Revoluia informatic a marcat saltul de la societatea industrializat la societatea avansat informatizat genernd un val de nnoiri n tehnologie i n educaie.Acest lucru a dus i la apariia roboilor Termenul "robot" a fost folosit in 1920 de cehul Karel Capek ntr-o piesa numit "Robotul universal al lui Kossum". Ideea era simpl: omul face robotul dup care robotul ucide omul. Multe filme au continuat sa arate c roboii sunt mainrii duntoare si distrugtoare. Revoluia informatic a marcat saltul de la societatea industrializat la societatea avansat informatizat genernd un val de nnoiri n tehnologie i n educaie permind realizarea de roboi. Roboii ofer beneficii substantiale muncitorilor, industriilor si implicit rilor. In situatia folosirii n scopuri panice, roboii industriali pot influena pozitiv calitatea vieii oamenilor prin nlocuirea acestora in spaii periculoase, cu conditii de mediu daunatoare omului, cu conditii necunoscute de exploatare etc.

Minirobot mobil cu senzori pentru detectare obstacole

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. Lucrarea prezint modul de proiectare i realizare a unui minirobot echipat cu microcontroler ATmega8-16PI i diferii senzori aducnd o contribuie la dezvoltarea bazei teoretice i practice de studiu a microcontrollerelor Atmel i a posibilitilor nelimitate de dezvoltare de aplicaii n domeniul roboticii.

CAPITOLUL I STUDIU PRIVIND STADIUL ROBOILOR MOBILI

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

Minirobot mobil cu senzori pentru detectare obstacole

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 celorlalte. Evitare coliziunii cu obstacole fixe sau mobile (de exemplu ali roboi mobili) aflate n spaiul de lucru al robotului se poate face prin mai multe metode:realizarea unei aprtori mecanice care prin deformare oprete robotul, folosireasenzorilor care msoar distana pn la obstacolele de pe direcia dedeplasare, folosirea senzorilor de proximitate, folosirea informaiilor corelate de la mai multe tipuri de senzori. Localizarea obiectelor se poate realiza i prin contact fizic, dar acesta impune restricii asupra vitezei de micare a structurii manipulate. Contactul fizic dintre robot i obiectele din mediu genereaz fore de reaciune care modific starea robotului. Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate s fie riscante (pot duce la deteriorarea obiectelor sau a robotului). Navigarea robotului este posibil i fr o determinare a poziiei i orientrii fa de un sistem de coordonate fix, dar aceast informaie este util pentru sisteme de comand a micrii. Dintre metodele de navigaie mai des utilizate se pot meniona: msurarea numrului de rotaii fcute de roile motoare, folosirea de acceleratoare i giroscoape, geamanduri electromagnetice instalate n teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.

1.2 Clasificarea roboilor mobili Roboii mobili se clasific astfel n funcie de dimensiuni: macro, micro i nano-roboi.

Minirobot mobil cu senzori pentru detectare obstacole

n funcie de mediul n care acioneaz: roboi teretri se deplaseaz pe sol, roboi subacvatici n ap, roboi zburtori n aer, roboi extrateretri pe solul altor planete sau n spaiul cosmic; n funcie de sistemul care le permite deplasarea n mediul n care acioneaz exist de exemplu pentru deplasarea pe sol 1. 2. 3. roboi pe roi sau enile roboi pitori: bipezi, patrupezi, hexapozi, miriapozi; roboi trtori: care imit micarea unui arpe, care imit micarea unei

rme etc.; 4. 5. roboi sritori, care imit deplasarea broatelor, cangurilor etc.; roboi de form sferic (se deplaseaz prin rostogolire) etc.

Figura 1- Diferite tipuri de miniroboi.

1.3 Utilizri ale roboilor mobili.

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

Minirobot mobil cu senzori pentru detectare obstacole

n domeniul industrial, agricol, forestier: n domeniul industrial roboii mobili sunt reprezentai de AGV-uri (Automated-Guided Vehicles), vehicule pe roi, cu ghidare automat, care transport i manipuleaz piese, constituind o alternativ flexibil la benzile de montaj; n agricultur exist tractoare i maini agricole fr pilot, capabile s execute singure lucrrile pe suprafeele pentru care au fost programate; n domeniul forestier roboii mobili pot escalada copacii nali

n domeniul militar: este luat n considerare de ctre armata american perspective nlocuirii soldailor combatani cu roboi, pentru a reduce riscul pierderilor umane n lupt; roboi mobili de cele mai ingenioase i robuste configuraii sunt aruncai n cldi i incinte din zone de conflict, n scopuri de investigare i chiar anihilare a inamicului;

Figura 2-Sistem integrat telecomandat pentru deminare.

Minirobot mobil cu senzori pentru detectare obstacole

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

Roboii mobili au urmtoarele caracteristici comune: 1. structura mecanic este un lan cinematic serie sau paralel respectiv tip

master-slave; 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. 5. sistemul de comand este ierarhizat, de obicei multiprocesor; limbajele de programare utilizate sunt preluate de la roboii staionari.

Minirobot mobil cu senzori pentru detectare obstacole

1.4 Strucura unui robot mobil

Structura roboilor mobili (RM) corespunde arhitecturii generale a roboilor, avnd dou pri: Structura mecanic, respectiv manipulatorul, care determin performanele tehnice; Structura electronic, respectiv de comand-control, care condiioneaz calitatea performanelor. Indiferent de generaia robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate i cost reduse, la transmiterea micrii i adaptarea la structura mecanic a motoarelor electrice i hidraulice, la proiectarea minilor mecanice pentru a apuca obiecte de diferite forme. Referitor la structura electronic, posibilitile actuale permit folosirea a cte unui microprocesor pentru comanda fiecrui grad de mobilitate, precum i a altor microprocesoare specializate pentru tratarea semnalului senzorial. Robotul mobil interacioneaz cu mediul nconjurtor prin structura sa mecanic, asigurnd astfel deplasarea, poziionarea i orientarea organului de execuie.

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

Minirobot mobil cu senzori pentru detectare obstacole

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 fii:pe roi, cu jet de ap, cu aer etc; Roboii mobili pot fii dotai cu camera video sau ali senzori de percepere al mediului n care activeaz. Memoria robotului coninut in microcontroler nmagazineaz cunotinele necesare localizrii tuturor segmentelor de traseu posibile

Figura 3- Locomoia viermelui de pmnt.

Locomoia viermelui de pmnt este influenat de factori precum frecarea dintre module i suprafa, de tipul perilor artificiali dispui pe module i posibilitatea lor de penetrare a suprafeelor i fore ineriale. Prototipul n starea de pn acum are o deplasare neglijabil fapt pentru care la realizarea micrii au fost urmate dou metode: 1. Fabricarea de piciorue direcionale ce vor mima perii cheratinoi ai rmei, fapt ce duce la o avansare prin agare a acestora de suprafa 2.Propulsarea micro-robotului pe o suprafa direcional precum ar fi catifeaua.
11

Minirobot mobil cu senzori pentru detectare obstacole

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 Motoare electrice cu inerie redus utilizate: motoare de curent continuu cu pahar sau indus disc; motoare sincrone cu magnei permaneni; motoare pas cu pas cu reluctan variabil cu indus pahar i intrefier radial sau cu indus tip disc i intrefier radial; motoare sincrone cu magnei permaneni;

Analiza performanelor dinamice a acionrilor pe baza funciei de transfer Hd(s) presupune determinarea parametrilor: Precizia care se determin cu ajutorul funciei de transfer prin calculul erorii staionare:

(1)

Ui(s)= mrime de intrare. Promtitudinea, care se calculeaz cu ajutorul locului de transfer considernd un compromis optim precizie-stabilitate pentru o margine de faz M=25450. Stabilitatea care se determin cu ajutorul locului de transfer.
12

Minirobot mobil cu senzori pentru detectare obstacole

Capacitatea de urmrire se poate aprecia cu ajutorul caracteristicii Bode. Pentru a se ameliora performanele dinamice ale acionrilor n anumite domenii de frecven se utilizeaz elemente de corecie serie sau paralel avnd funcia de transfer

(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 dispozitive 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
13

Minirobot mobil cu senzori pentru detectare obstacole

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. Se prefer o prelucrare preliminar n care senzorii robotului elimin zgomotele care perturb semnalul util. 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:
14

Minirobot mobil cu senzori pentru detectare obstacole

a) senzorii pentru mediul extern; b) senzorii pentru funcia intern; dup distana la care sunt culese informaiile avem senzori de contact.

1.7 Tipuri de roboi mobili:

Figura 4-Minirobot AIRAT 2.

AIRAT 2 este un robot micromouse care folosete un procesor CPU 8051.AIRAT 2 folosete senzori pentru a o recepta cnd se ntoarce napoi. Placa CPU folosete o plac JS8051-A2. Placa JS8051-A2 este foarte bine construit.Folosete resurse externe de putere cum ar fii LCD, ADC, dou ceasuri externe, auto-Flash scriere i altele. AIRAT 2 utilizeaza ase senzori oferindu-i astfel posibilitatea de a se deaplasa pe diagonal.Un simulator PC este prevzut,oferindu-i posibilitatea utilizatorului de a ntelege mai bine nivelul inalt de cutare algoritmic a mouseului.Codul sursa C este implementat astfel ncat programatorul poate dezvolta mai usor altgoritmi care pot fi testati cu ajutorul unui simulator si apoi implementat mouseului.
15

Minirobot mobil cu senzori pentru detectare obstacole

n plus,LCD,comunicatie seriala,controlul mouse-ului precum si alte functii sunt furnizate sub forma de librarie si fisiere sursa.Pentru cei ce vor sa invete mouse-ul la un nivel inalt,AIRAT2 furnizeaza un mediu excelent de dezvoltare,teste algoritmice,precum si multe altele. AIRAT 2 a aparut pe coperta publicatiei franceze MICROS&ROBOTS . CARACTERISTICI AIRAT 2 - capabil de reglare proprie.Inva din mers. - Folosete 6 senzori dindu-i posibilitatea de a se deplasa pe diagonala - Uor de asamblat/dezasamblat - Port de rencarcare - Instructii de asamblare si manual al utilizatorului - Include un simulator PC pt. accelerarea dezvoltarii - Librarii,coduri sursa C - AIRAT2 baterie(NiMh-450) Descriere

Figura 5-Bateria AIRAT 2.

Baterie NiMh.Marime 35X35X16mm Putere 7.2 V(1.2X6), 450mAh

RCX 1.0
16

Minirobot mobil cu senzori pentru detectare obstacole

Figura 6-Minirobot RCX 1.0.

Una dintre principalele structuri de robot mobil, construit i utilizat n cadrul testelor, este prezentat n figura . Include dou roi active n partea din spate, acionat fiecare de cte un motor de curent continuu montat ntr-o pies LEGO, i o roat pasiv n partea din fa. n vrful construciei este amplasat unitatea de comand, RCX, conectat la cele dou motoare (A i C) n programele prezentate la senzorul de lumin din frunte (senzor 1 n programe). Acest senzor este constituit dintr-un LED (diod luminiscent), care genereaz un fascicul de lumin roie i un fotodetector care recepionez lumina reflectat de podea i genereaz la ieire o tensiune electric, proporional cu intensitatea luminii reflectate. Roile active sunt acionate prin intermediul a dou trepte de angrenaje cu roi dinate. Prima include un pinion cu 8 dini, montat pe axul motorului (pinionul de culoare deschis din fig) i o roat dinat cu 24 de dini, iar a doua, este realizat prin angrenarea roii intermediare de 24 de dini cu o roat de 40 de dini, care antreneaz axul roii active. Raportul de transmitere poate fi calculat cu formula: i = (24/8) * (40/24) = 5,
17

Minirobot mobil cu senzori pentru detectare obstacole

Asigur o reducere de 5 la 1 a vitezei unghiulare a motorului i o amplificare de 1 la 5 a momentului dezvoltat de motor. Direcia de deplasare a robotului este controlat,fie prin micarea roilor active n sensuri opuse, fie prin deplasarea acestora cu viteze unghiulare diferite. Epson a creat cel mai mic microrobot zburator din lume

Figura 7-Micro Flying Robot.

Tokio,Japonia,Noiembrie 17 Seiko Epson Corporation(Epson) au creat FR(Micro Flying Robot),cel mai mic prototip zburator microrobot. Epson au creat FR pentru a demonstra tehnologia micromecatronica care s-a dezvoltat in laboratoare in ultimii ani si pentru a explora posibititati pentru microroboti si dezvoltarea aplicatiilor pentru componentele tehnologice. Compania a prezentat ultimele oferte la Expozitia Internationala Robotica din 2003, care a avut loc la Tokyo Big Sight ntre 19 - 22, 2003. Bazndu-se pe propria tehnologie mecatronica,care este una din tehnologiile 100% apartinnd companiei, Epson a dezvoltat si a vndut o familie de roboti cunoscut sub numele de EMRoS,incepand cu Monsieur, care a fost pus in vanzare in 1993 i este prezent in cartea Recodrurilor ca fiind cel mai mic microrobot din lume.In Aprilie Epson a creat Monsieur II- P,un prototip de microrobot care opereaza pe un motor ultra-subtire si

18

Minirobot mobil cu senzori pentru detectare obstacole

ultrasonic si un modul Bluetooth de tipo reductor care permite multiplelor unitati sa fie comandate prin telecomanda simultan. Folosind acesti roboti, Epson deasemenea a realizat un robot tip teatru de balet..In acest sens Epson,a jucat un rol de pionerat in cercetarea si dezvoltarea microrobotilor precum i n aplicatiile componentelor tehnologice. FR prezentat la expozitie, a provoacat levitarea prin folosirea unor elice ce au o micare tip contra-rotaie propulsate de un motor foarte mic si ultrasonic care totodata are si ca mai mare proporie putere-greutate din lume si care este echilibrat la semi-naltime de primul mecanism stabilizator din lume ce folosete un actuator liniar.n plus,esenta micromecatronicii a fost asamblata intr-un montaj tehnologic foarte compact pentru minimizarea mrimii si a greutii unitii circuitului de control. Prin dezvoltarea FR, Epson a demonstrat posibilitatea de extindere a razei de activitate a roboilor din spaiul bi-dimensional (pmntul) n spaiul tridimensional(aer).

Caracteristici ale FR (Micro Flying Robot) - mic,usor,motor ultrasonic; tinand cont de cercetarile companiei, actuatorul FR are cea mai mare proporie greutate-putere din lume. - modul wireless cu consum mic; innd cont de carcetrile companiei, modulul wireless are cel mai mic consum din lume. - Tehnologie de control la semi-inaltime;

Concluzii:

n lumea zilei de azi,roboii au un rol important n mai toate domeniile vieii noastre. Domeniile de utilizare sunt foarte variate incepand de la mijloace de transport i terminnd cu explorarea spatiala.Odata cu dezvoltarea tehnologiei, cu att mai muli roboi
19

Minirobot mobil cu senzori pentru detectare obstacole

sofisticai i vor face apariia n aa fel inct i viaa uman va cunoate o imbuntaire semnificativ.

CAPITOLUL II STUDIUL DINAMICII ROBOTULUI MOBIL CU ROI

2.1 Model cinematic robot n cadrul acestei analize,considerm robotul ca un corp rigid cu roi,deplasndu-se pe un teren plat.Sunt necesari 3 parametri pentru a poziiona corpul robotului n planul respectiv: doi pentru a determina poziia acestuia n raport cu originea sistemului de axe ataat planului, iar al treilea pentru determinarea orientrii acestui corp n raport cu axa vertical, perpendicular pe plan.Exist micri suplimentare datorate rotaiei roilor n jurul axelor proprii, respective cuplelor cinematice de orientare.Prin corpul robotului ntelegem doar corpul rigid al acestuia, ignornd cuplele cinematice dintre acest corp i roi. Un vehicul aflat pe un teren plat are 3 grade de libertate: 2(x,z) ce descriu poziia i unul referitor la orentarea (rotaia n jurul axei verticale).n general roboii
20

Minirobot mobil cu senzori pentru detectare obstacole

mobili nu au control complet independent al celor 3 parametii ce definesc situaia lui i trebuie s efectueze manevre complexe pentru a atinge o anumit situare. Unele vehicule au roi suplimentare sau puncte de contact, cu rolul de suport dar fr a contribui la orientare sau propulsie.Cunoscute ca roi pasive(ex roi de tip castor), acestea sunt de obicei ignorate n modelarea cinematic a unui robot mobil. 2.1.1 Model cinematic robot acionare diferenial Pentru a specifica situarea instantanee a robotului n mediul n care se deplaseaz, stabilim o relaie de legtur ntre sistemul de referin f i sistemul de axe curent,ataat corpului robotului

Planului I se ataeaz sistemul de referin fix X000Y0.

Corpului robotului i se ataeaz sistemul de axe XRORYR, n punctul P

Corespunztor poziiei iniiale a robotului, se consider notaia XR0OR0YR0

Figura8-Model cinematic robot cu 2 roi

21

Minirobot mobil cu senzori pentru detectare obstacole

Coordonatele punctului P, determinate n raport cu originea O0 a sistemului de referin scrise sub form matriceal sunt:

(3)

x0,y0,0 sunt parametrii ce exprim poziia i orientarea corpului robotului n raport cu sistemul de referin; xR0,yR0,R0 sunt parametrii ce exprim poziia i orientarea corpului robotului n raport cu sistemul de axe ataat acestuia, sistemul corespunztor poziiei iniiale x,y, sunt parametrii ce exprim poziia i orientarea poziiei iniiale a corpului robotului(poziiei iniiale a sistemului de axe ataat corpului) n raport cu sistemul de axe de referin.

Robotul care face obiectul lucrrii este un robot cu acionare diferenial.Acest tip de acionare este una dintre cele mai simple soluii de roboi mobili cu roi. Robotul are 2 roi convenionale fixe,ataate pe asiu.Utilizarea de viteze unghiulare diferite pentru cele 2 roi conduce la schimbarea direciei de mers.

(4)

22

Minirobot mobil cu senzori pentru detectare obstacole

Figura 9- Deplasarea robotului.

Cunoscnd vitezele/poziiile roilor se cere viteza/poziia robotului.

Se cunosc : v1=1 r ; v2=2 r

23

Minirobot mobil cu senzori pentru detectare obstacole

Figura10-Reprezentarea vitezelor unghiulare a 2 roi. unde r=raza roilor i 1, 2= vitezele lor unghiulare Pentru efectuarea analizei, se va proceda n felul urmtor: 1. Se specific mrimile necesare efecturii calculului(dimensiuni ale

robotului, unghiul de orientare al robotului,) 2. Se determin punctul n jurul carua se rotete robotul( centrul

instantaneu de rotaie), respectiv raza traiectoriei descrise de robot. 3. 4. Se detrmin viteza unghiular a robotului. Se integreaz relaia obinut, pentru a obine poziia robotului.

2.1.2 Determinarea C.I.R.

1.Determinarea mrimilor necesare efecturii calculului(dimensiuni ale robotului; unghiul de orientare al robotului). 2 Se ataeaz robotului un sistem de axe i se msoar unghiul de rotaie al sistemului curent n raport cu sistemul iniial de referin. Centrul instantaneu de rotaie este la intersecia axelor roilor pentru cele 2 poziii.
24

Minirobot mobil cu senzori pentru detectare obstacole

Punctul de contact al fiecrei roi trebuie s se roteasc cu aceai vitez unghiular n jurul centrului instantaneu de rotaie.

Figura 11- Determinarea C.I.R

. 3.Determinarea vitezei unghiulare ,, a robotului v1=1r=(R+L/2)


25

Minirobot mobil cu senzori pentru detectare obstacole

v2=2R=(R-L/2) Rezult =(v1-v2)/L R=L(v1+v2)/(v1-v2) Pentru traiectoria rectilinie v1=v2 =0 i R=

Figura 12-Traiectoria rectilinie.

Pentru traiectorie circular cu raza R- relaiile sunt cele prezentate anterior. Se determin experimental c: L=10 cm v1=0.5m/s i v2=0.3 m/s =2 rad/s2 i R=16 cm

Pentru pivotarea n jurul roii v1=v2 R= =0

26

Minirobot mobil cu senzori pentru detectare obstacole

Figura13-Pivotarea n jurul roii 2.

Pentru pivotare( rotaie n jurul axei verticale centrale) v2=-v1=>=2v1/L=-2v2/L R=0 v1=1r=(R+L/2) v2=2r=(R-L/2) Rezult =(v1-v2)/L R=L(v1+v2)/(v1-v2) Viteza liniar a robotului este: v= R=(v1+v2)/2=0.4 m/s

27

Minirobot mobil cu senzori pentru detectare obstacole

Figura14-Pivotarea n jurul axei verticale.

Integrarea ultimei ecuaii pentru obinerea poziiei robotului dx=vx(t)dt; dy=vy(t)dt; d=(t)dt; vx(t)=v(t)cos((t));

28

Minirobot mobil cu senzori pentru detectare obstacole

Figura 15-Deplasarea robotului. vy(t)=v(t)sin((t)); Prin integrare se obine x(t)= y(t)= (t)= =(v1-v2)/L
29

dt+x0; dt+y0; dt+x0;

Minirobot mobil cu senzori pentru detectare obstacole

R=L(v1+v2)/(v1-v2) v=R=(v1+v2)/2 Ecuaiile cinematicii directe se scriu sub form matriceal n raport cu sistemul de referin:

(5)

(6)

Contribuia roii 1 la viteza robotului este: vx1=(1 r)/2=0.25 m/s vy1=0

30

Minirobot mobil cu senzori pentru detectare obstacole

Figura 16- Contribuia roii 1 la deplasarea robotului.

1=(1 r)/L=5 rad/s Contribuia roii 2 la viteza robotului vx2=(2 r)/2=0.15 m/s vy2=0 2= (2 r)/L=-1 rad/s

31

Minirobot mobil cu senzori pentru detectare obstacole

Figura 17- Contribuia roii 2 la deplasarea robotului.

Ecuaiile cinematicii directe scrise n raport cu sistemul de axe ataat robotului sunt: vx((t)=vx1+vx2=0.4 m/s vy((t)=vy1+vy2 (t)=1+2 Se face ipoteza c roile nu pot aluneca lateral=> componenta dup axa y este 0.Dac robotul descrie o traiectorie circular cu raza R, lungimea arcului descris de acesta este: AR=(A1-A2)/2 unde A1=(R+L/2) A2=(R L/2)
32

Minirobot mobil cu senzori pentru detectare obstacole

Figura 18- Traiectoria circular a robotului.

Lungimea cercului descris de punctul de contact al roii 1 este dat de relaia C1=2 )

=A1/(R+L/2) Similar pentru roata 2 C2=2 )

33

Minirobot mobil cu senzori pentru detectare obstacole

Figura 19-Reprezentare a 2 roi.

De unde rezult: R A2/

nlocuind aceast relaie n =A1/(R+L/2) Prin nlocuire se obine: =(A1 A2)/L De aici se deduce urmtoarele concluzii: orientarea a robotului este complet independent de raza traiectoriei descrise de acesta Dimensiunea L este o surs de erori din cauza uzurii i complianei pneurilor Lungimea traiectoriei descrise de punctul de contact al roii poate fi calculat cu relaia:

34

Minirobot mobil cu senzori pentru detectare obstacole

A1=(2 N1Ref 1)/T1 N1=impulsurile numrate de traductorul de poziie al roii 1 T1=numrul de impulsuri pe o rotaie a roii 1 Ref1=raza efectiv a roii 1 Similar pentru roata 2 A2=(2 N2Ref 2)/T2 Pentru a se deplasa dup o traiectorie rectilinie ,robotul va pstra N1=N2, dar dac cele 2 pneuri au presiuni diferite ,razele lor for fii diferite.

Figura 20- Deplasarea unei roi peste un obstacol.

Considerm o roat teoretic, rigid(necompliant),avnd raza R i presupunem c aceasta trebuie s treac peste un obstacol cu nlime h.
35

Minirobot mobil cu senzori pentru detectare obstacole

Roata se va deplasa pe suprafaa C pn cnd ntlnete obstacolul N1=N2 Distana perceput de traductor ca fiind parcurs de roat este Am Distana real parcurs este Ah. Eroarea de poziionare unghiular a robotului va fii: = 2 (Am-Ah)

Figura 21- Deplasarea unei roi rigide peste un obstacol

Atunci cnd roata traverseaz o groap aflat n terenul n care se deplaseaz,obstacolele i gropile n teren produc erori privind determinarea corect a poziiei robotului.Erorile sunt cauzate i de alunecarea roilor ca urmare a existenei unor pete de unsoare pe suprafaa respectiv, de impactul cu obstacole sau de accelerarea i decelerarea excesiv sau de impactul cu obstacole.

36

Minirobot mobil cu senzori pentru detectare obstacole

CAPITOLUL III PROIECTAREA ELEMENTELOR CONSTRUCTIVE

Tema tehnic a lucrrii S se proiecteze i s se realizeze platforma mobil a unui minirobot care s ndeplineasc urmtoarele condiii tehnice Parte mecanic Masa total:450 grame Vitez maxim:0.5 m/s Roi motoare: 2 cu acionare independent 2 sfere montate pe asiu cu rol de meninere echilibru Garda la sol(distana dintre cel mai jos element mecanic i sol):minim 5 mm Cadrul de susinere(asiu)

37

Minirobot mobil cu senzori pentru detectare obstacole

Parte electric Tip motor de acionare curent continuu( cu excitaie paralel) Baterii: 4 1.5V(curent continuu) 1 senzor infrarou Sharp 2 LED-uri 5 porturi analogice pentru conectarea senzorilor i un port de comunicaie serial 2 senzori de contact 2 reflectori infraroii 2 leduri semnalizare 1 telecomand cu emisie infrarou 1 receiver infrarou,1 afior cu cristale lichide,1 senzor de temperatur Parte informatic Comand motoare: programare microcontroler Dezvoltarea programelor respective

PROIECTAREA I REALIZAREA MINIROBOTULUI.

3.1 Elementele componente ale minirobotului


38

Minirobot mobil cu senzori pentru detectare obstacole

senzor infrarou sharp

senzor de temperatur

afior cu cristale lichide

Figura8-Elementele componente ale robotului


39

Minirobot mobil cu senzori pentru detectare obstacole

Componenta de baz a robotului o constituie placa microcontrolerului pe care este prezent microcontrolerul Atmel ATMEGA8-16PI mpreun cu diferite circuite auxiliare de interfa cu diferite medii printre care enumerm circuitul integrat L293D cu rol de punte H ce ndeplinete rolul de amplificare al semnalului de la pinii microcontrolerului i acionare de putere a motoarelor de curent continuu i circuitul integrat TL499 care are rol de stabilizator de tensiune. Pe lng aceasta mai avem dou motoare de curent continuu doi senzori de contact un senzor infrarou Sharp i alte componente mecanice care utilizeaz ca mediu de programare limbajul C.

Figura9-Vedere lateral minirobot

40

Minirobot mobil cu senzori pentru detectare obstacole

Robotul este conceput pe dou roi motrice din plastic cu membran de cauciuc iar pe asiu se mai gsete 2 sfere cu rol de echilbrare .Este alimentat cu 4 baterii de 1.5 voli tip AA. Pentru a nnobila partea electronic robotul a fost dotat cu senzori infraroii pentru urmrire o linie neagr, 2 contactori pentru atins obstacole si evitarea lor ,un senzor de temperatura pentru determinarea temperaturii obiectelor cu care vine in contact, un afior cU cristale lichide pentru scriere diferite mesaje si un senzor infrarosu Sharp care ocolete obstacole si care deasemenea poate determina distana pn la un anumit obiect. Robotul poate fii manipulat cu ajutorul unei telecomenzi IR prin intermediul unui receiver IR.

41

Minirobot mobil cu senzori pentru detectare obstacole

Figura 9- Planul general al plcii microcontrolerului.

3.2 Placa miniribotului. Principalul microcontrolor este de tip AVR pe 8 bii de la Atmel; ATmega8. Conine multe trsturi caractersitice microcontrolorului modern cum ar fii: Convertizorul Analog Digital(ADC) pe 10 biti, programul Flash de memorie 8Kb cu 10000 cilcluri tergere-scriere, Data EEPROM de 512 bytes si RAM 512 bytes. Frecvena intern a ceasului de 16MHz. 5 Porturi Intrare/Ieire pe 3 pini cu 5 canale programabile.Acestea se poate intrebuin a ca port digital de intrare, port digital de ieire i port analog de intrare.Alimentarea se face la o tensiune normal de 5V Conine un port pentru conectarea Receptorului Infrarou cu frecvena de 38KHz.Acesta este desemnat s participe cu Semnalul Serial de primire(RxD) ctre dispozitivul exterior de comunicare. Piezodifuzor pentru semnale sonore. 2 comutatoare pentru apasare(switch-uri). Comutator de restartare. 2 indicatoare LED active atunci cand logic este 1. 2 canale pentru motoare in curent continuu alimentate la o tensiune de 4.5 V i intensitate 600 mA cu indicatoare LED. Alimentarea se face cu 4 baterii tip AA.

42

Minirobot mobil cu senzori pentru detectare obstacole

Circuit integrat pentru a menine o tensiune constanta de 5 voli atunci cnd motoarele funcioneaz. Se mai gsesc de asemenea grafuri(rezistene care au rol de a limita trecerea curentului i condensatori care nmagazineaz curent i apoi l descarc)

43

Minirobot mobil cu senzori pentru detectare obstacole

Figura 10- Schema electric a plcii de baz a minirobotului

44

Minirobot mobil cu senzori pentru detectare obstacole

3.2.1 Descrierea funcionrii plcii de baza a minirobotului Piesa principal o constituie microcontrolorul ATmega8. Functioneaz la o frecven de 16MHz din crytal care este conectat la pinii PB6 i PB7. Toate porturile pot fii programabile pentru intrare/ieire analog sau digital.Semnalele analoge din porturile PC0 -PC4 trec prin Convertorul Analog Digital . Rezoluia conversiei este de 10 bii. Porturile PB3,PB4 i PB5 sunt porturi Programare In Sistem. Pinul PC6/Reset este conectat cu comutatorul RESET pentru restartarea operaiilor microcontrolorului de catre utilizator. Pinul PD0/RxD este receptor serial.Particip cu conectorul IRM(Senzorul Infrarou) i portul de comunicare pe 5 pini Serial. Pinul PD1/TxD transmite serial.Particip la activarea LED5(etichetat IND2) i a pinului TxD Pentru LED4(IND1) este conectat direct la PC5 cu rezistor de limitare a curentului Placa de baza a minirobotului conine i 2 comutatoare conectate la PD2 i PD3 activnd un rezistor de 4.7k care seteaza nivelul logicHigh ntr-o operaie normal i schimb la nivelul logic Low sau 0 cand este apsat comutatorul. Pinul PD4 este conectat la un Piezo difuzor de capacitate 10F. De asemenea pe plac se mai gsete dispozitivul DC circuit motor current continu.Dispzitivul IC este L2932D H-Punte. Un dispozitiv circuit motor curent continu necesit 3 pini semnal pentru funcionare.A( pinii PD6 i PD0) i B( pinii PD7 i PD5) sunt intrri pentru aplicarea semnalului i selectarea sensului de rotaie a motorului. E(pinii PB1 i PB2) sunt folosii pentru activarea i dezactivarea funcionrii circuitului dispozitiv.Prin aplicarea semnalului PWM la aceti pini se

45

Minirobot mobil cu senzori pentru detectare obstacole

poate controla i viteza motorului.Daca semnalul PWM(Pulse Width Modulation) are lrgime nseamna ca nivelulhigh a fost trimis ctre ieirea motorului. Circuitul de alimentare este de tip ntreruptor.TL499A are funcia de stabilizator pentru alimentarea circuitului microcontrolerului la o tensiune de +5V. La ieirea L2932D, un led bi-color este conectat pentru a indica polul voltajului.Culoarea verde nseamna nainte,culoarea rou nseamna napoi.

3.2.2 Microcontrolerele AVR Fa de microprocesor, microcontrolerul are integrat pe acelai chip oscilatorul, memoria program, o memorie RAM, numrtoare, interfee de comunicaie i porturi de intrare ieire. De asemenea n structura unor microcontrolere mai sunt integrate blocuri analogice cum ar fi : convertoare analog numerice de 8, 10 sau 12 bii, comparatoare analogice, modulatoare PWM, etc. Tipurile mai noi de microcontrolere au integrata n structura i o memorie EEPROM necesar pentru memorarea setrilor sau parametrilor aplicaiei la cderea tensiunii de alimentare. La fel ca i microprocesoarele, unele tipuri de microcontrolere pot adresa o memorie
46

Minirobot mobil cu senzori pentru detectare obstacole

program i o memorie RAM, externe. Datorita preului redus de cost i simplitii de utilizare, au cunoscut o dezvoltare spectaculoas microcontrolere cu memorie flash (memorie EEPROM). Memoria poate fi tears i nscris de mai mult de 1000 de ori, numr suficient de mare pentru punerea la punct a oricrei aplicaii. preul unui microcontroler cu memorie flash incorporat este de civa dolari, n funcie de caracteristici i de gradul de complexitate. Acelai microcontroler nscris cu un program de aplicaie, se poate vinde cu un pre de la 2 pn la 100 de ori mai mare. pe piaa de componente electronice exist o diversitate foarte mare de familii de microcontrolere. Firmele productoare de microcontrolere au n producie zeci de variante de microcontrolere cu o gam variat de caracteristici. Una din cele mai cunoscute familii de microcontrolere este seria 51 a firmei Intel. Aceast familie de microcontrolere este produs de mai multe firme (Intel, Siemens, Philips, Atmel, MHS etc.) care, pornind de la o structura de baza, au creat o varietate foarte mare de tipuri de microcontrolere. Primul tip de microcontroler din seria 51 aprut pe pia a fost microcontrolerul

47

Minirobot mobil cu senzori pentru detectare obstacole

I8048. Acest microcontroler este folosit pentru comunicaia cu tastatura n calculatoarele PC. O alt clas de familii de microcontrolere ce s-a impus pe pia n ultimul timp este cea a microcontrolerelor cu structura RISC (reduced instruction set computer). Spre deosebire de microcontrolerele cu un set complex de instruc iuni de tip CISC (complex instruction set computer), microcontrolerele cu arhitectura RISC au un set redus de instruciuni care, ns, n cele mai multe cazuri, se execut ntr-un singur ciclu de ceas. Pentru microcontrolerele RISC memoria program este organizat pe 12, 14 sau 16 bii. Codul de program este citit intr-un singur ciclu de ceas iar procesarea informaiilor se face paralel. Marea majoritate a microcontrolerelor RISC au posibilitatea de nscriere a programului de aplicaie direct n circuit. nscrierea n circuit ISP (n system programming) se face pe interfaa serie SPI. Dintre familiile de microcontrolere cu arhitectura RISC amintim seria demicrocontrolere PIC micro ale firmei Microchip (PIC 12C508, PIC 12C509, PIC 12CE519, PIC 12C672, PIC 12CE674 etc.) i seria AVR a firmei Atmel.(AT90S1200, AT90S2313, AT90S2343, AT90S4433, AT90S8515, AT90S8535, AT90C8534, ATTINY22, ATMEGA103 etc.). Microcontrolere AVR au o structura RISC nou, realizat n anii 90. Arhitectura
48

Minirobot mobil cu senzori pentru detectare obstacole

acestor microcontrolere a fost elaborat n colaborare cu experi n limbajul C, rezultnd un produs ce are un set eficient de instruc iuni, care permite scrierea unor programe de aplicaie performante, cu un cod optim. Majoritatea instruciunilor implementate n microcontrolerele AVR se execut ntr-o singur perioad de ceas. La aceeai frecven de lucru, microcontrolerele AVR au o vitez de lucru de peste 10 ori mai mare fa de microcontrolerele cu structura clasic din seria 51, la care o instruciune se execut n 12 perioade de ceas. Un alt avantaj al microcontrolerelor din seria AVR este acela c au implementat un set de 32 de regitrii de lucru cu funcie de acumulator, fa de unul singur n cazul celorlalte microcontrolere. Toate microcontrolerele din seria AVR au implementat un numrtor watchdog i majoritatea au funcia ISP pentru programare n circuit. 3.2.3 Microcontrolerul Atmel ATmega8 ATmega8 este un microcontroller CMOS low-power pe 8 biti, bazat pe arhitectura AVR RISC. Prin executarea unor instructiuni puternice ntr-un singur moment de tact, ATmega8 ajunge la performana de 1 MIPS pe MHz permindu-i desingnerului de sistem s optimizeze consumul de putere contra vitezei de procesare. ATmega8 are urmatoarele caracteristici : microcontroller low-power pe 8 bii, bazat pe arhitectura AVR RISC. 8K bii de Flash Programmable In-System cu capacitate citire in timpul scrierii.Este folosit pentru memorarea unui program scris. Pentru c memoria ce este
49

Minirobot mobil cu senzori pentru detectare obstacole

fcut n tehnologia FLASH poate fi programat i tears mai mult dect odat, aceasta face microcontrolerul potrivit pentru dezvoltarea de component 512 biti de EEPROM-memorie de date ce trebuie sa fie salvate cnd nu mai este alimentare.Este n mod uzual folosit pentru nmagazinarea de date importante ce nu trebuie pierdute dac sursa de alimentare se ntrerupe dintr-o dat.De exemplu o astfel de dat este o temperatur prestabilit n regulatoarele de temperatur.Dac n timpul ntreruperii alimentrii aceast dat se pierde, v-a trebui sa facem ajustarea nc o dat la revenirea alimentrii.Astfel componenta pierde n privina auto-meninerii; 1K bit de SRAM-memorie de date folosit de un program n timpul executrii sale.n SRAM sunt nmagazinate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la ntreruperea sursei de alimentare. 32 de registri cu scop general; 23 de linii generale I/O grupate n 3 porturi. PORTUL B , PORTUL C i portul D care sunt conexiuni fizice ntre microcontroler i lumea de afar.

50

Minirobot mobil cu senzori pentru detectare obstacole

Figura 11-Microcontrolerul ATmega8 2 Cronometre/Numaratoare pe 8 bii flexibile cu moduri de comparare, intreruperi interne si externe, Cronometru/numrtor pe 16 bii cu moduri comparare ,moduri capatare ntreruperi interne i externe; Cronometru timp real cu oscilator separat; 3 Canale PWM; 6 Canale ADC cu acuratee de 10 bii; USART serial-programabil, Interfata Seriala, AdC cu 6 canale ( 8 canale in TQFP si pachete MLF ) cu acuratee de 10 biti, Cronometru de supraveghere cu oscilator intern, un port serial SPI si 5 moduri software de economisire de putere. Modul Idle opreste unitatea centrala in timp ce permite SRAM-ului, cronometrelor/numaratoarelor, porturilor SPI i sitemului de ntrerupere s funcioneze. Modul Power-down salveaz coninutul registrelor dar inghea oscilatorul, fcnd incapabile orice alte functii ale cip-ului pna la urmatoarea ntrerupere sau resetare de hard. n modul Power-save numrtorul asincron continu s functioneze, fapt ce permite utilizatorului sa mentin o baz n timp ce restul dispozitivului este in repaus. Modul ADC Noise Reduction oprete Unitatea central si toate modulele de I/O cu exceptia numrtorului asincron si ADC-ul, pentru a minimaliza zgomotul de comutaie din timpul conversiei ADC.n modul Standby functioneaza doar oscilatorul in timp ce restul dispozitivului este in repaus.

51

Minirobot mobil cu senzori pentru detectare obstacole

Dispozitivul este fabricat folosind tehnologia de memorie volatile cu densitate mare Atmel. Memoria flash poate fi reprogramata folosind o interfata seriala SPI , printr-un program de memorie conventional nonvolatile.Programul boot poate folosii orice interfaa pentru a descarca programul de aplicatii din memoria de aplicaii flash. Softul din sectiunea de boot flash va continua sa ruleze in timp ce aplicatiile flash sunt updatate furniznd operaii reale de citire n timpul scrierii. Combinnd o unitate centrala RISC pe 8 biti cu flash self programmable in sistem, pe un cip monolithic , Atmel ATmega8 devine un microcontroler puternic care furnizeaza solutii extreme de flexibile si optime ca pre pentru multe aplicatii. ATmega8 AVR este dotat cu un set complet de programe si instructiuni ce includ compilatoare C, macro-asamblatoare si simulatoare/corectoare de programe, emulatoare de circuite si kituri de evaluare.

Figura12-Arhitecturile Harvard i von Newmann

Are o arhitectura RISC. Acest termen este adeseori gasit in literatura despre calculatoare, si are nevoie sa fie explicat aici mai in detaliu. Arhitectura Harvard este un concept mai nou decat von-Neumann. S-a nascut din nevoia de mrire a vitezei microcontrolerului. n arhitectura Harvard, bus-ul de date i bus-ul de adrese sunt separate. Astfel este posibil un mare debit de date prin unitatea de procesare central, si binenteles, o viteza mai mare de lucru. Separarea programului de memoria de date
52

Minirobot mobil cu senzori pentru detectare obstacole

face posibil ca mai departe instruciunile s nu trebuiasc sa fie cuvinte de 8 biti. ATmega8 foloseste 14 biti pentru instructiuni ceea ce permite ca toate instructiunile sa fie instructiuni dintr-un singur cuvant. Este de asemenea tipic pentru arhitectura Harvard sa aiba mai putine instructiuni decat von-Newmann si sa aiba instructiuni executate uzual ntr-un ciclu. Microcontrolerele cu arhitectura Harvard sunt de asemenea numite microcontrolere RISC. RISC inseamna Reduced Instruction Set Computer. Microcontrolerele cu arhitectura von-Newmann sunt numite microcontrolere CISC. Titlul CISC inseamna Complex Instruction Set Computer. Pentru ca ATmega8 este un microcontroler RISC, aceasta inseamna ca are un set redus de instructiuni, mai precis 35 de instructiuni (de ex. microcontrolerele INTEL si Motorola au peste 100 de instructiuni). Toate aceste instructiuni sunt executate intr-un ciclu cu exceptia instructiunilor jump si branch. Conform cu ceea ce spune constructorul, ATmega8 ajunge la rezultate de 2:1 in compresia cod si 4:1 in viteza in comparatie cu alte microcontrolere de 8 biti din clasa sa. Descrierea pinilor. Portul B este un port de iesire bidirectional pe 8 bii cu rezistoare interne, selectate pentru fiecare bit. Port C(PC5PC0) este un bidirectional I/O pe 7 bii cu rezistoare interne selectate pentru fiecare bit. Ieirea portului C are caracteristici simetrice . PC6/RESET Dac coninutul RSTDISBL este programat, PC6 este folosit ca pin de I/O. Caracteristicile electrice ale portului PC6 difera de cele ale altor pini ai portului C. Portul D este un port de I/O bidirectional pe 8 biti cu rezistoare interne selectate pentru fiecare bit. Dac coninutul RSTDISBL-ului este neprogaramat, PC6 este
53

Minirobot mobil cu senzori pentru detectare obstacole

folosit ca o resetare a ieirilor. Un nivel sczut pe acest pin pentru o lungime minim de puls va genera o resetare, chiar daca ceasul nu este funcionabil.Pulsuri mai mici nu garanteaz o resetare

54

Nume PB0

Numr pin 14

Tip Intrare/Ieire Intrare

Descriere Port Digital

Minirobot mobil cu senzori pentru detectare obstacole


PB0

ICP1

Intrare Captare 1 PB1 OC1A 15 Intrare/Ieire Ieire PB1 Ieire Comparare/PWM 1A PB2 OC1B SS Ieire Intrare 16 Intrare/Ieire PB0 Ieire Comparare/PWM 1B Intrare secundar pentru SPI i ISP PB3 OC2 MOSI Ieire Intrare/Ieire 17 Intrare/Ieire PB3 Ieire Comparare/PWM 2B Intrare date n mod Slave ntre busul SPI i ISP Ieire date n mod Slave ntre busul SPI i ISP PB4 MISO 18 Intrare/Ieire PB4 Intrare date n mod Master ntre
55

Port Digital

Port Digital

Port Digital

Port Digital

busul SPI i ISP Intrare/Ieire Ieire date n mod Slave ntre busul SPI i ISP

Minirobot mobil cu senzori pentru detectare obstacole

Nume

Numrul pinului

Tipul

Descriere

PC0 ADC0

23 e

Intrare/Ieir

Port PC0 Intrare analog canal 0

Intrare PC1 ADC1 24 e Intrare PC2 ADC0 25 e Intrare PC3 ADC3 26 e Intrare PC4 ADC4 SDA 27 e Intrare Intrare/Ieir Port PC4 Intrare analog canal 3 Interfa serial Intrare/Ieir Port PC3 Intrare analog canal 3 Intrare/Ieir Port PC2 Intrare analog canal 2 Intrare/Ieir Port PC1 Intrare analog canal 1

Intrare/Ieir bidirectional e

PC5 ADC3

28 e

Intrare/Ieir

Port PC5 Intrare analog canal 4

56

Minirobot mobil cu senzori pentru detectare obstacole

SCL

Intrare Ieire

Ieire serial pe 2 fire

PC6 RESE T

1 e

Intrare/Ieir

Port PC6 Resetare

Intrare

Nume

Numrul pinului

Tipul

Descriere

PD0 RxD

2 e

Intrare/Ieir

PD0 port digital USARTprimete

Intrare PD1 TxD 3 e Ieire PD2 INT0 4 e Intrare/Ieir Intrare/Ieir

intrare PD1 port digital USARTtransmite ieire PD2 port digital ntrerupe extern

57

Minirobot mobil cu senzori pentru detectare obstacole

Ieire PD3 INT1 5 e Ieire PD4 XCK T0 e Intrare PD5 11 e Intrare PD6 AIN0 12 e Intrare PD7 AIN1 13 e Intrare Intrare/Ieir Intrare/Ieir Intrare/Ieir 6 e Intrare/Ieir Intrare/Ieir Intrare/Ieir

canal 0 PD3 port digital ntrerupe extern canal 1 PD4 port digital Ceas extern USART Intrare extern Timer 0

PD5 port digital Intrare extern Timer 1 PD6 port digital Intrare canal 2 comparator analog PD6 port digital Intrare canal 1 comparator analog

Num e

Numru l pinului

Tipul

Descriere

58

Minirobot mobil cu senzori pentru detectare obstacole

Vcc

7 e

Intrar

Alimentare tensiune ntre 4.5 i 5.5 V

GND

8,22 e

Intrar

Masa

Avcc

20 e

Intrar

Alimentare tensiune 5Vpentru CAN

ARE F

21 e

Intrar

Tensiune intrare de referina pentru CAN

59

Minirobot mobil cu senzori pentru detectare obstacole

Figura 13-Diagrama bloc a microcontrolerului Oscilatorul

60

Minirobot mobil cu senzori pentru detectare obstacole

ATmega8 are ncorporat un oscilator intern, la care se conecteaz un rezonator ceramic modul de conectare este prezentat n figura de mai jos. Valoarea condensatoarelor ce se conecteaz la mas se alege n funcie de frecvena quarului (uzual 33-100pF). Pentru a fi utilizat la comanda altor blocuri electronice din sistem ieirea oscilatorului intern XTAL2 poate fi ncrcat cu maxim o sarcin HC. De asemenea, microcontrolerele pot avea ca semnal de ceas i un semnal extern aplicat la intrarea XTAL1 (Fig. 11).

Fig. 14- oscilatorul de ceas

Fig 15 folosire semnal extern

Numrtoarele Microcontrolerul ATmega8 are implementat n structura interna dou numrtoare de 8 i respectiv i unul de16 bii. Numrtoarele 0 i 1 de 8 bii genereaz ntrerupere la depire, iar numrtorul 1 de 16 bi i genereaz ntrerupere la depire,
61

Minirobot mobil cu senzori pentru detectare obstacole

pentru comparare i captur. Ambele numrtoare au cte un circuit de prescalare (divizare i multiplexare) prin care se alege sursa semnalului de intrare n numrtor. Circuitul de prescalare realizeaz divizarea ceasului sistemului cu 8, 64, 256 si1024. pentru fiecare numrtor se pot alege urmtoarele surse ca semnal de intrare: intrarea conectata la zero, semnalul de ceas, cele patru ieiri ale blocului de prescalare sau un semnal extern (front cresctor sau descresctor). Schema circuitului de prescalare a numrtoarelor este prezentata n figura 16.

Figura 16-Circuit de divizare pentru numrtoarele 0 i 1


62

Minirobot mobil cu senzori pentru detectare obstacole

Numrtorul watchdog Numrtorul watchdog este pilotat de un oscilator RC separat din structura interna amicrocontrolerului. Frecventa de oscilaie este de 1 MHz la tensiunea de alimentare de 5V i de 350 KHz la o tensiune de alimentare de 3 V. Frecventa semnalului de intrare n numrtorul watchdog se obine din oscilatorul RC prin divizare. Funcionarea numrtorului watchdog este controlata prin registrul de control WDTCR (watchdog timer control register) Interfaa USART Microcontrolerul ATmega8 are implementat n structura intern o interfa serial asincron de tip USART. Transmisia pentru aceast interfa se face cu urmtoarele caracteristici: - transmisie pe 8 sau 9 bii - filtrarea zgomotului, detector de suprarecep ie - bit de start fals sau lipsa bit de stop - generator pentru viteza de transmisie - 3 surse de ntreruperi Transmisia se realizeaz prin scrierea n registrul de date UDR a datei ce trebuie transmis. n funcie de setrile interfeei seriale USART datele se vor transmite cu anumite caracteristici. Pentru transmisia de date exista 2 surse de ntreruperi i anume ntreruperea pentru registrul de transmisie gol i ntreruperea pentru transmisie de date terminat. Pentru recepie avem o singur surs de ntrerupere i anume cea de recepie caracter. Recepia se face cu aceleai caracteristici ca i transmisia. Datele ce se transmit pe interfa au urmtoarea structur:
63

Minirobot mobil cu senzori pentru detectare obstacole

- bit de START - LSB - - MSB - (bit 9) - bit de STOP

Convertorul Analog-Digital folosit pe placa de baz este de 10 bii fiind conectat la un Multiplexor Analog pe 8 canale ceea ce permite 8 intrri de tensiune.Tensiunea de referin poate fii decuplat extern la pinul AREF printr-un capacitor pentru eliminare zgomot. Unitatea de procesare central are rolul unui element de conectivitate ntre celelalte blocuri ale microcontrolerului. Coordoneaz lucrul altor blocuri i execut programul utilizatorului. Clock-ul /ciclul instruciune Clock-ul sau ceasul este starter-ul principal al microcontrolerului, i este obinut dintr-o component de memorie extern numit "oscilator". Dac ar fi s comparm un microcontroler cu un ceas de timp, "clock-ul" nostru ar fi un ticit pe care l-am auzi de la ceasul de timp. n acest caz, oscilatorul ar putea fi comparat cu arcul ce este rsucit astfel ca ceasul de timp s mearg. De asemenea, fora folosit pentru a ntoarce ceasul poate fi comparat cu o surs electric. Aplicaii

64

Minirobot mobil cu senzori pentru detectare obstacole

Atmega8-16PI se potrivete perfect n multe folosine, de la industriile auto i aplicaiile de control casnice la instrumentele industriale, senzori la distan, mnere electrice de ui i dispozitivele de securitate. Este de asemenea ideal pentru cardurile smart ca i pentru aparatele alimentate de baterie din cauza consumului lui mic. Memoria EEPROM face mai uoar aplicarea microcontrolerelor la aparate unde se cere memorarea permanent a diferitor parametri (coduri pentru transmitoare, viteza motorului, frecvenele receptorului, etc.). Costul sczut, consumul sczut, mnuirea uoar i flexibilitatea fac Atmega8-16PI aplicabil chiar i n domenii unde microcontrolerele nu au fost prevzute nainte (exemple: funcii de timer, nlocuirea interfeei n sistemele mari, aplicaiile coprocesor, etc.). Programabilitatea sistemului acestui cip (mpreun cu folosirea a doar doi pini n transferul de date) face posibil flexibilitatea produsului, dup ce asamblarea i testarea au fost terminate. Aceast capabilitate poate fi folosit pentru a crea producie pe linie de asamblare, de a nmagazina date de calibrare disponibile doar dup testarea final, sau poate fi folosit pentru a mbunti programele la produsele finite.

3.2.4. Interfaa de comand a motoarelor de curent continuu. Partea de acionare a plcii microcontrolerului const n circuitul specializat L293D . Acesta este capabil sa controleze 2 motoare de c.c. n ambele sensuri de rotaie sau un motor pas cu pas. Capsula L293D conine dou puni H capabile s furnizeze n regim constant 600mA per canal, iar n regim puls aproximativ 1 A. In figura de mai jos se arata caracteristicile mecanice ale circuitului L293D,modul de conectare fiind reprezentat n figura

65

Minirobot mobil cu senzori pentru detectare obstacole

Figura 18 - Capsula DIP16 a L293D i dispunerea pinilor

Modul de control al circuitului L293D este relativ simplu. El necesita 6 linii de port de la microcontroler care sa fie conectate la intrrile input1, input2, input3 i input4 i la cele ou terminale chip enable pentru fiecare punte H.Exist i o alta metod mai economic din punct de vedere al numrului de pini I/O folosii de la microcontroler. Aceast metod se bazeaz pe conectarea intrrilor input1, input2, input3 i input4 pe un bus de 2 linii de comand, practic lucru ce se materializeaz prin conectarea input1 i input4 pe acelai pin al microcontrolerului i input2 cu input3 similar.

66

Minirobot mobil cu senzori pentru detectare obstacole

INTRRI Vm=H

FUNCIE C=H,D=L C=L,D=H Rotaie CW Rotaie CCW Frnare dinamic C=X, D=X Decuplare motor cu oprire

Vm=L

C=D

L=O LOGIC, H=1 LOGIC, X NU CONTEAZ C,D,Vm=intrrile input 1,2 i enable

Dezavantajele care decurg n urma acestei conexiuni sunt faptul c dubla punte H nu va fi la fel de flexibila n comanda motoarelor de c.c. i totodat pierzndu-i capacitatea de a aciona motoare pas cu pas. n tabelul este artat configuraia strilor logice pe intrrile punii H i starea motoarelor conectate la circuit.

Este de remarcat faptul c integratul L293D se alimenteaz cu dou tensiuni (de la dou surse). Partea logic a integratului folosete o alimentare compatibil TTL (+5V pe Vss) iar partea de for de alimentare de putere a motoarelor are intrare separat Vs. Scopul acestei separri o constituie minimizarea nclzirii capsulei i are avantajul ca motoarele pot fi alimentate cu o tensiune de pn la 36 de voli. Integratul este protejat termic si se oprete alimentarea n cazul unei nclziri excesive.

67

Minirobot mobil cu senzori pentru detectare obstacole

Figura19-Acionarea motoarelor bifazate

3.2.5 Circuitul integrat TL499A TL499A este un circuit integrat proiectat pentru a oferi o gama larga de reglaj reglementate tensiunii de alimentare. Reglementarea de iesire de tensiune poate fi variat de la 2,9 V la 30 V, printr-o ajustare a doua rezistente externe.In cazul n care ac-TL499A este cuplat la linia de putere, printr-un pas n jos transformator, el functioneaza ca o serie de tensiune cc de reglementare de a menine reglementate de iesire de tensiune. Cu adaos de o baterie de la 1,1 V la 10 V, un inductor, un condensator de filtrare, si doua rezistene, TL499A funcioneaza ca un pas de trecerea de reglementare n timpul ac-o linie de esec. Reglementate de iesire de tensiune reglabila face TL499A utile pentru o gama larga de aplicatii. Furnizarea de rezerva de putere n timpul ac-o linie de esec face ca TL499A microprocesor extrem de utile n aplicatii de memorie. Este caracterizata de TL499AC pentru exploatarea de la -20 C la 85 C

68

Minirobot mobil cu senzori pentru detectare obstacole

Figura 20- Schema circuitului TL499

3.3 Motoarele de curent continuu n general, sunt similare n construcie cu generatoarele de curent continuu. Ele pot, de fapt s fie descrise ca generatoare care funcioneaz invers. Cnd curentul trece prin rotorul unui motor, este generat un cmp magnetic care genereaz o for electromagnetic, i ca rezultat rotorul se rotete. Aciunea periilor colectoare i a
69

Minirobot mobil cu senzori pentru detectare obstacole

plcuelor colectoare este exact aceiai ca la generator. Rotaia rotorului induce un voltaj n bobinajul rotorului. Acest voltaj indus are sens opus voltajului exterior aplicat rotorului. n timp ce motorul se rotete mai rapid, voltajul rezultat este aproape egal cu cel indus. Curentul este mic, i viteza motorului va rmne constant att timp ct asupra motorului nu acioneaz nici o sarcin, sau motorul nu efectueaz alt lucru mecanic dect cel efectuat pentru nvrtirea rotorului. Cnd asupra rotorului se aplic o sarcin, voltajul va fi redus i un curent mai mare va putea s treac prin rotor. Astfel, motorul este capabil s primeasc mai mult curent de la sursa care l alimenteaz, i astfel s efectueze mai mult lucru mecanic. Deoarece viteza rotaiei controleaz trecerea curentului prin rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Cnd rotorul se afl n repaus, el, efectiv, nu are nici o rezisten, i dac voltajul normal este aplicat, va trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul. Mijloacele obinuite pentru prevenirea acestor accidente este folosirea n serie a unei rezistene, la nceput, mpreun cu rotorul, pentru a limita curentul pn cnd motorul ncepe s dezvolte un curent suficient. Pe parcurs ce motorul prinde vitez, rezistena este redus treptat, fie manual ori automat. Viteza cu care un motor cu curent continuu funcioneaz, depinde de puterea cmpului magnetic care acioneaz asupra rotorului, ct i de curentul rotorului. Cu ct este mai puternic cmpul magnetic, cu att este mai mic rata rotaiei necesare s creeze un curent secundar necesar pentru a contracara curentul aplicat. Din acest motiv viteza motoarelor cu curent continuu poate fi controlat prin variaia cmpului curentului. Motoarele folosite sunt de tip curent continuu de tip reductor cu raport de transmisie de 48:1 alimentate la o tensiune de 3V, 6V i o intensitate de 600 mA.Dezvolt un cuplu de 1,27mN*m la pornire i 0,39 mN*m n regim normal, dezvolt 2400 rot/min .Motorul are urmtoarele componente: Rotorul este format din tabl de siliciu cu bobinaj srm de cupru cu diametrul 0.1 mm
70

Minirobot mobil cu senzori pentru detectare obstacole

Statorul este format din tabl de siliciu i este bobinat cu srm de cupru cu diametrul 0.1 mm.Diametrul interior al statorului este de 15.2 mm iar cel exterior de 20mm 2 lagre realizate din bronz grafitat.Acestea au rol de sustinere, centrare i rostogolire a rotorului. Pinion din plastic fixat pe axa rotorului prin presare.Presarea este datorat elasticitaii plasticului.O a doua montare a pinionului nu mai are rezistena corespunztoare i se utilizeaz alt metod prin folosirea unor adezivi.

Figura 21-Motoare de curent continuu

3.4 Senzorul

Acesta a aprut odat cu dezvoltarea microelectronicii, mpreun cu alte noiuni de mare impact, cum ar fi cele de microprocesor, microcontroller, transputer, actuator etc., Astfel, o mare parte din elementele tehnice senzitive sunt ncadrate n categoria de traductor. Un traductor este un dispozitiv care convertete efecte fizice n semnale electrice, ce pot fi prelucrate de instrumente de msurat sau calculatoare. Prin senzor se va nelege dispozitivul tehnic destinat nzestrii mainilor cu simuri. Are rolul determinrii unei sau unor proprieti i n funcie de nivelul de
71

Minirobot mobil cu senzori pentru detectare obstacole

integrare, poate avea funcii mai simple sau mai complexe dup cum este artat n figura de mai jos

Figura 22-Principiul de funcionare al unui senzor

3.4.1 Structuri ale sistemelor senzoriale Senzorul cuprinde traductorul/traductoarele pentru transformarea mrimii de intrare ntr-un semnal electric util, dar i circuite pentru adaptarea i conversia semnalelor i eventual, pentru prelucrarea i evaluarea informaiilor. Senzorul care include i unitile micromecanice i microelectronice de prelucrare, realizate prin integrare pe scar larg (LSI) sau foarte larg (VLSI), se ntlnete n literatura de specialitate i sub denumirile de "sistem senzorial" sau "senzor inteligent" (smartsensor). Producerea senzorilor inteligeni este facilitat de dezvoltarea tehnicii microsistemelor, care permite integrarea n volume extrem de mici att a traductoarelor de diferite tipuri, ct i a micromecanicii i microelectronicii de prelucrare. Gruparea senzorilor dup aciunea robotului cu mediul nconjurtor : Senzorii interni ( intero-receptori), care servesc la obinerea unor informaii legate de funcionarea robotului, cum ar fi poziia relativ a elementelor cuplelor
72

Minirobot mobil cu senzori pentru detectare obstacole

cinematice, vitezele i acceleraiile liniare i unghiulare, deformaiile elementelor lanului cinematic .a.

Figura 23-Tipuri de senzori Senzori externi (denumii de unii autori i extero-receptori), utilizai pentru culegerea unor informaii asupra mediului nconjurtor i asupra interaciunii robot/mediu; servesc la identificarea prezene i stabilirea tipului, poziiei, orientrii, culorii sau a altor proprieti ale obiectelor din mediu, la identificarea unor obstacole, la determinarea forelor de interaciune robot/mediu. Un criteriu care poate permite clasificarea senzorilor externi este cel referitor la contactul cu obiectele din mediu . Un senzor care msoar poziiile/deplasrile n cuplele cinematice este un senzor intern, un senzor de investigare, care baleiaz mediul nconjurtor pe principiul radarului, este un senzor extern fr contact, un senzor tactil este un senzor extern cu contact direct, iar un senzor de for/moment este un senzor extern cu contact indirect, ntruct forele de interaciune cu mediul nu

73

Minirobot mobil cu senzori pentru detectare obstacole

sunt exercitate direct asupra senzorului, ci sunt resimite de acesta prin propagarea lor de-a lungul unor elemente intermediare.

Senzorii fr contact pot servi la recunoaterea obiectelor, a poziie i orientrii lor i la controlul calitii. Senzorii de proximitate sunt senzori de zon foarte apropiat; ei furnizeaz informaii despre existena obiectelor i sunt montai pe efectorul final sau n apropierea acestuia. Senzorii optici sunt senzori de zon apropiat, iar cei de investigare de zon ndeprtat.

3.4.2 Senzorii folosii n echiparea minirobotului 3.4.2.1 Senzorul infrarou Sharp GP2D120 Un senzor special folosit pentru evitarea obstacolelor este senzorul infrarou Sharp GP2D120 care prezint urmatoarele caracteristici tehnice: Folosete principiul de reflexie al luminii infraroii pentru msurarea distanei, Raza de aciune este intre 4 i 30 de cm. Alimentarea se face la o tensiune de 4,5 pna la 5 V i o intensitate de 33 mA. Tensiunea de ieire este cuprins n intervalul 0.4-2.4 V la o alimentare de 5 V. Interfata sa prezinta 3 fire: alimentarea(Vcc), masa(GND) i tensiunea de ieire(Vout) i necesit un conector JST de 3 pini. Modul de funcionare Principiul care st la baza acestei metode de masurare folosite de senzorul Sharp se bazeaz pe formarea unui triunghi ntre Emitorul de raz infraroie, punctul de reflexie i detectorul de infrarou. Astfel, emitatorul emite un puls de lumina infrarosie. Lumina strbate campul vizual i fie lovete un obstacol sau continu
74

Minirobot mobil cu senzori pentru detectare obstacole

deplasarea. n cazul inexistenei unui obstacol, lumina nu va fi reflectat i nu se va detecta nici un obiect. Dac lumina se reflect de pe un obiect, se va ntoarce la detector i va creea un triunghi ntre emitor, punctul de reflexie i eetector, ca n figura urmatoare:

Prin conexiunea senzorului infrarou cu convertizorul Analog/Digital rezult datele analogice care sunt convertite n distane corecte cu ajutorul softului de programare.Astfel pentru o valoare de 307 corespunde o distana de 8 cm. R = (2933 / (V + 20)) 1 R=distana in cm. V=datele anlogice din conversia analog/digital.Intervalul este intre 0 i 1,023

75

Minirobot mobil cu senzori pentru detectare obstacole

Figura25-Modul de funcionare al senzorului Sharp

76

Minirobot mobil cu senzori pentru detectare obstacole

Tabelul cu valori ale senzorului infrarosu

77

Minirobot mobil cu senzori pentru detectare obstacole

3.4.2.2 Reflectorul infrarou

Figura26-Reflectorul infrarou vedere i schem circuit

Inima acestui circuit este senzorul care detecteaz refleciille de la lumina infraroie.Este format dintr-un LED Infrarou ce emite lumin infraroie pe suprafa.Foto-tranzistorii vor primi lumina infraroie reflectat.Dac nu se reflect lumin infraroie, terminalul OUT are voltaj sczut la msurare.n cazul primirii de lumin infraroie trece curent prin fototranzistori n funcie de intensitatea luminii care variaz n funcie de distana de reflexie.Senzorul TCRT 5000 poate fii folosit pentru o distan de 0.1-1.5 cm.La o tensiune de ieire de 0.5-5V datele de ieire variaz ntre 30 i 1023.Este folosit pentru a detecta culoarea suprafeei(alb sau neagr).Astfel pentru suprafaa alb valoarea este ntre 600 i 950 iar pentru suprafaa neagr valoarea este ntre 100 i 300.
78

Minirobot mobil cu senzori pentru detectare obstacole

Valoarea de referin pentru a detecta linia este (600+100)/2= 350 3.4.2.3 Receiver infrarou ZX-IRM n transmiterea semnalelor prin lumin infraroie pentru distane de 5 10 m funcioneaz pe principiul telecomenzii de televizor.Frecvena de emitere este de 38 kHz, receiverul demoduleaz semnalul de frecvena i l trimite ca date seriale la microcontroler Dac senzorul nu detecteaz frecvena de 38 kHz cu lumin infraroie ieirea este logic 1,in caz contrar ieirea e logic 0.

Figura27-Receiver infrarou vedere i schema circuit

3.4.2.4 Telecomand cu emisie infrarou: Aceast telecomand funcioneaz cu comunicarea serial.Datele transmise manual de la butoane vor fii modulate la o frecven de 38kHz.Pentru aceasta trebuie instalat pe robot receiverul infrarou. Caracteristici ale telecomenzii: Distana de operare este ntre 4 i 8 metri n spaiu deschis
79

Minirobot mobil cu senzori pentru detectare obstacole

Are 4 butoane activate de 4 ntreruptoare Consum redus de putere.Trece n modul power-save odat ce datele au fost transmise Transmite date serial folosind standardul RS-232 cu o rat de transfer de 1200 bps i formatul datelor 8N1(8 bii de date nici un bit de paritate i un bit de stop.)

Figura 28- A-Poza. B-Vedere a planului telecomenzii C-Schema circuitului.

3.3.2.5 Afior de cristale lichide(32 caractere 2 linii 16) Este un senzor LCD care comunic cu microcontrolerul printr-o interfa serial. Accept date transmise serial la la o frecven de 2400 sau 9600 bps(bii pe secund) cu format data 8N1(8 bii de date nici un bit de paritate i un bit de oprire). Accept nivelul TTL sau RS-232 prin selectarea a 2 jumperi.Suport controlerul standard LCD HITACHI HD44780 sau SEIKO EPSON SED1278 compatibil.
80

Minirobot mobil cu senzori pentru detectare obstacole

Este operaional la o tensiune de alimentare de 5

12 voli.

Conectorul de interfa are :+5 V tensiune de alimentare(+), intrare serial a datelor(S) i masa(G). Majoritatea caracterelor LCD nu pot fii schimbate deoarece sunt nmagazinate n memoria ROM. Primele 8 simboluri care corespund ASCII 0..7 sunt nmagazinate n memoria RAM(CGRAM).Ele sunt afiate n mrimea 5 cu 8 puncte.

Figura 29-Detalii despre selectarea jumperilor

1 Modul de comand al jumperilor.SLCD are 2 moduri de comand.Unul este de tip Standard.Acesta este compatibil cu tipul Scott Edwardss iar cellalt este de tip Scott Edwardss.
81

Minirobot mobil cu senzori pentru detectare obstacole

2 Numrul de caractere pe linie.Se poate seta 8 caractere sau 16 caractere pe linie. 3 Rata de transfer a datelor.Se poate seta 9600 bii pe secund sau 2400 bii pe secund cu formatul datelor de tip 8N1(8 bii de date nici un bit de paritate i un bit de stop). 4 Semnalul de interfa. 2 selecii de tip Invert logic TTL/CMOS sau RS-232 i de tip Direct logic(DI). 3.3.2.6 Senzorul de temperatur. Detecteaz temperatura ambientului,lucreaz cu un thermistor ntc(coeficient negativ de temperatur) i acest traductor analog are 2 ieiri: reaciune pozitiv i negativ a tensiunii aplicate n funcie de temperatura ambientului.Temperatura sa normal de lucru e de 250C.

Figura 30-Senzorul de temperatur.

3.3.2.7.Contactorii Contactorii folosii la acest robot au urmtoarea schem electric:


82

Minirobot mobil cu senzori pentru detectare obstacole

Figura 31-Senzorul de contact vedere i schem circuit Cnd contactorul nu este apsat rezult 1 logic n iar cand este apsat arat 0 logic i se aprinde ledul. Aceti senzori sunt folosii pentru detectarea unor obstacole.

83

Minirobot mobil cu senzori pentru detectare obstacole

CAPITOLUL IV Proiectarea interfeelor de comunicare

Sistemele de calcul pot s comunice n dou moduri: paralel i serial. n modul paralel, de obicei se utilizeaz 8 sau mai multe linii (cabluri). Exemple de utilizare a comunicaiei paralele sunt imprimanta sau hard discul. Comunicaia paralel se utilizeaz doar pentru distane foarte scurte (civa metri). Motivul este de fapt c pentru cablurile lungi, semnalele sunt atenuate i pot apare distorsiuni. n plus nu este deloc de neglijat costul cablurilor i problemele ce pot apare la conexiuni. Avantajul comunicaiei paralele este viteza mare de transmisie. Comunicaia serial este utilizat pentru sisteme aflate la mare distan intre ele. Comunicaia serial utilizeaz un numr redus de cabluri. n comunicaia serial, datele transmise trebuie serializate la transmisie i deserializate la recepie. Pentru aceasta, la transmisie se utilizeaz un registru paralel-serie iar la recepie un registru serie-paralel. Registrul paralel-serie este utilizat pentru transformarea unei date de 8 bii intrun ir de bii. Registrul serie-paralel este utilizat pentru transformarea unui ir de 8 bii intr-un octet. Pentru distane lungi, comunicaia paralel poate utiliza linia telefonic. n acest caz semnalele logice 0 i 1 trebuie transformate n semnale sinusoidale. Aceast conversie este realizat de un dispozitiv numit modem (MODulator/DEModulator). Pentru distane scurte aceast conversie nu este necesar. De exemplu, tastatura i mouse-ul comunic serial
84

Minirobot mobil cu senzori pentru detectare obstacole

informaia ctre unitatea centrala a PC. Comunicaia serial utilizeaz dou metode: - sincron: se transfer blocuri de octei (caractere) - asincron : se transfer cte un octet Se pot realiza programe pentru realizarea comunicaiei seriale ns acestea pot fi lungi. Este indicat ca programatorul s se concentreze asupra problemelor specifice aplicaiei i nu asupra unei probleme extrem de generale precum comunicaia serial. Aici intervin i aspectele economice legate de productivitatea muncii. Din acest motiv productorii de circuite au realizat circuite ce rezolv problemele legate de comunicaia serial. Aceste circuite se numesc UART (Universal Asyncronus Receiver Transmitter).

Figura 31 - Metode de comunicaie

Microcontrolerul ATMega8 conine un asemenea modul (UART) nglobat. Din acest motiv n cele ce urmeaz ne vom referi doar la comunicaia asincron. Dac datele pot fi transmise i recepionate simultan, se spune ca avem comunicaie full duplex
85

Minirobot mobil cu senzori pentru detectare obstacole

Dac datele nu pot fi trimise i recepionate simultan, se spune ca avem comunicaie half duplex . Aici termenul simultan se refera la faptul ca ambele sisteme pot transmite date n acelai moment de timp. O alt situaie este cazul n care unul din sisteme este doar un transmitor celalalt este doar un receptor (comunicaie simplex ). Pentru comunicaia full duplex sunt necesare dou fire (plus firul de mas). a) Comunicaia asincron Cele dou sisteme, pentru a putea comunica intre ele, trebuie sa respecte o serie de reguli. Trebuie stabilite convenii referitoare la: - modul de mpachetare al datelor; - numrul de bii ai unui caracter; - cum se identifica nceputul unei date; - cum se identifica sfritul unei date; - care este durata unui bit. b) Formatul datelor Comunicaia asincron este frecvent utilizata pentru transmisia orientat pe caracter; comunicaia sincron este utilizata pentru transmisia orientat pe blocuri de date. n comunicaia asincron fiecare caracter este ncadrat intre bii de start i bii de stop. De fapt totdeauna se folosete un bit de start (0 logic) i de obicei un bit de stop (1 logic). n figura de mai jos este reprezentat modul de transmisie al caracterului ASCII A al crui cod binar este 0100 0001. Se observa ca transmisia biilor se face n ordinea: START(0) , D0(1), D1(0) D7(0), STOP(1).

86

Minirobot mobil cu senzori pentru detectare obstacole

Figura 32 - Transmisia caracterului ASCII A

Se transmite mai nti bitul cel mai puin semnificativ al octetului (LSB D0). Se observa c de fapt pentru transmisia unui caracter se utilizeaz 10 bii. Sunt i alte posibiliti de transmisie. De exemplu se poate prevede un bit suplimentar care sa reprezinte paritatea octetului. Scopul acestui bit suplimentar este verificarea pstrrii integritii datelor. De aceea, programatorul trebuie sa cunoasc datele de catalog ale portului serial i modul lui de programare. c) Rata de transfer Rata de transfer reprezint numrul maxim de bii ce pot fi transmii intr-o secund. Este dat n bps (bii per second). Alt termen des utilizat pentru bps este baud rate. Cei doi termeni nu sunt identici. Termenul baud rate este preluat din terminologia modemurilor unde este definit ca numrul de schimbri pe secund ale unui semnal. Sunt situaii cnd o singur modificare a semnalului conduce la transferul mai multor bii de date. Totui i dac nu se utilizeaz modemul se pot utiliza ambii termeni. Rata de transfer depinde de portul de comunicaie al sistemului. De exemplu, pentru PCurile mai vechi rata de transfer de date este 100 9600 bps. Noile PC-uri suporta o rata maxim de transfer de 115.2 Kbps. d) Standardul RS232 Pentru a permite compatibilitatea echipamentelor realizate de diferii productori, s-a adoptat standardul numit RS232 realizat de EIA (Electronics Industries
87

Minirobot mobil cu senzori pentru detectare obstacole

Association) n 1960, modificat apoi mai t rziu n mai multe rnduri. Standardul actual RS232C adoptat n 1969 este utilizat de PC-uri i de numeroase alte echipamente. Deoarece standardul a fost adoptat nainte de apariia familiei logice TTL, standardul nu este compatibil cu nivelele TTL. Nivelul 1 logic este reprezentat de o tensiune electric cuprinsa intre -3 i -25V iar nivelul logic 0 este reprezentat de o tensiune electrica cuprinsa intre +3 i +25V, zona situata intre -3V i 3V fiind nedefinit. e) Pinii interfeei seriale RS232 Tabelul 9

Figura33-conectorul DB-9

f) Semnalele de control (handshaking)

Pentru a se realiza rapid i sigur comunicaia intre dou echipamente, trebuie ca transferul de date s in cont de unele situaii specifice. De exemplu se poate ntmpla ca unul din echipamente s nu mai poat primi date datorit faptului c nu mai are unde s le depun. ntr-un asemenea caz el trebuie s informeze transmitorul c trebuie s atepte. Se definesc urmtoarele semnale de control mai des utilizate: - DTR (data terminal ready). Dup alimentarea terminalului i dup ce trece prin
88

Minirobot mobil cu senzori pentru detectare obstacole

rutinele de iniializare, el trimite semnalul DTR ce indic faptul ca este gata pentru comunicaie. Semnalul este de intrare pentru modem (DCE). - DSR (data set ready). Este un semnal emis de DCE (modem) ce indic c este gata s primeasc date de la DTE. - RTS (request to send). Este un semnal prin care DTE informeaz DCE ca poate s transmit o dat. - CTS (clear to send). Este un semnal de rspuns pentru semnalul RTS prin care DCE informeaz DTE c este gata s primeasc date. Acest semnal este utilizat de DTE pentru a ncepe transmisia datelor.

4.1 PX-400 Cutie Programator In-Sistem cu interfa serial Este folosit pentru programarea codului in memoria flash a microcontrolorului AVR. Conectarea cu calculatorul se face prin portul serial RS-232.Dac calculatorul are doar port USB,poate fii folosit un convertor USB la Serial.UCON-232S este recomandat in aceast situa ie. Programarea microcontrolorului se face prin cablu ISP.Suport citirea scrierea tergerea i protejarea datelor.

89

Minirobot mobil cu senzori pentru detectare obstacole

Figura 34-Cablul PX-400 Necesit o tensiune de alimentare de 5V de pe placa microcontrolorului. Este operabil cu softul AVR Prog. Acest soft este inclus in AVR Studio fiind compatibil deasemenea cu softul Avr-Osp II.

4.2 Interfaa SPI

Interfaa serie SPI (serial peripheral interface) este o interfa sincron, de mare vitez, pentru transferul datelor ntre un microcontroler AVR i un dispozitiv periferic sau ntre dou microcontrolere AVR. Transferul pe interfaa SPI se face cu urmtoarele caracteristici: transfer full duplex (pe trei fire), operare master slave, transfer cu primul bit LSB sau MSB, patru viteze de transfer, semnalizare sfrit de transmisie i activare din modul de consum redus. Scrierea datelor n registrul de date al dispozitivului master va genera activarea generatorului de ceas i data va fi transferata bit cu bit pe linia MOSI, prin intermediul registrului de deplasare.

4.3 Cabluri de transfer a datelor

Rolul cablurilor de semnal este de a conecta placa de baz cu diferii senzori i cu calculatorul.Cablul ISP este folosit pentru programarea microcontrolorului, cabluri PCB3AA-8 pentru interconectarea cu senzori i un cablu port serial pentru conexiunea dintre calculator si placa de baza la conectorul ISP.

90

Minirobot mobil cu senzori pentru detectare obstacole

4.3.1 Cablul ISP Este un cablu tip panglic cu 10 fire.Este folosit pentru conexiunea dintre cutia de programare ISP i placa microcontrolorului.Modul de distribuie al firelor este artat in schema de mai jos

Figura 35-Modul de conectare al cablului ISP

4.3.2 Cablul JST3AA-8

91

Minirobot mobil cu senzori pentru detectare obstacole

Este un cablul standard de la INEX cu lungimea de 20 cm folosit pentru conexiunea dintre senzori i placa microcontrolerului.Aezarea firelor este artat n figura de mai jos

Figura 36-Modul de conectare al cablului ISP

4.3.3 Cablul port serial CX-4

Figura 37-Modul de conectare al cablului port serial CX-4

N ume semnal R XD
92

Semnificatia/Functia

Receive Data - receptie date

Minirobot mobil cu senzori pentru detectare obstacole

T XD G ND D TR

Transmit Data transmisie date

Masa digital

Data Terminal Ready terminal pregtit pentru transmisie

Este folosit pentru conexiunea dintre portul serial al calculatorului RS-232 i dispozitivele externe cum ar fii placa microcontrolorului.Un capt de conector este de tipul DB-9 feminin iar celalalt de tip RJ-11 6P4C(6 pini i 4 contacte).Are o lungime de 1.5 metri iar schema lui este artat n figura de miai sus.

93

Minirobot mobil cu senzori pentru detectare obstacole

CAPITOLUL V PROGRAMAREA ROBOTULUI

Microcontrolerul care echipeaz robotul, ATMEL ATmega8-16PI face parte din generaiile recente ale productorului american i suport programarea pe o platform standardizat pentru microcontrolerele AVR RISC pe 8 bii, folosind limbajul de programare C. Ca soft enumerm AVR Studio pentru programarea microcontrolerului i un compilator CAVR 1 AVR Studio:program de simulare, soft dezvoltat de Corporaia Atmel.Acest soft ruleaza sub Microsoft Windows95 i Microsoft Windows NT.Windows XP SP2 este recomandat acum.Fiierul compilat este de tip HEX i este cobort n memoria plcii de baz cu ajutorul cutiei de programare PX-400. 2 CAVR este un compilator pentru C. Bibliotecile sunt fiiere suport care permit programatorului o mai uoar integrare in limbajul de programare C Softul programator:Acest soft este folosit pentru downloadarea fiierului compilat HEX.Acesta este AVRProg i este o component n AVR Studio 5.1 Instalarea AVR Studio

94

Minirobot mobil cu senzori pentru detectare obstacole

Primul program care se instaleaz este AVR Studio aplicaie livrat de ctre productor.Pentru a contiua instalarea trebuie acceptai termenii de licen impui de producator.

Figura38-Instalare AVR Studio Dup instalarea i deschiderea programului va apare fereastra principal AVR Studio care arat precum n figura de mai jos.n stnga sus se gsete fiierele i librriile care sunt apelate n programul construit n C. n fereastra principal este scris programul C, iar dedesubt se afl fereastra de execuie care arat starea proceselor care includ rezultatul compilat precum i erorile de compilaie a fiierului HEX precum i alte mesaje de avertizare.Deasupra se afl bara de meniuri. Paii de dezvoltare a unui program C n AVR Studio sunt Scrierea programului cu editorul text AVR Studio V4.0 Compilarea codului C n codul de asamblare pentru microcontroller
95

Minirobot mobil cu senzori pentru detectare obstacole

Convertirea codului de asamblare n fiier format HEX Downloadarea codului n memoria program a microcontrolerului Rularea programului de catre microcontroler. De asemenea este necesar ca dup instalarea softului fierele librrie s fie copiate separat ntr-un dosar pentru a fii apelate mai apoi de program.

Figura 39-Bara de meniuri a programului AVR Studio

5.2 Crearea programului C n AVR Studio

96

Minirobot mobil cu senzori pentru detectare obstacole

Din Project se selecteaz Configuration Options unde la iconul General se determin urmtoarele date astfel: dispozitiv atmega8 i frecvena de 16000000 Hz

Figura 40-Modificare n opiunile proiectului. Pentru apelarea librriilor se selecteaz iconul Include Directories i se acceseaz folderul n care sunt localizate.

97

Minirobot mobil cu senzori pentru detectare obstacole

Figura 41-Alegerea fiierelor header n csua Available Link Objects se selecteaz itemul lim.a care apare la fereastra Link with These Objects.Se apas butonul OK pentru terminare

98

Minirobot mobil cu senzori pentru detectare obstacole

Figura 42-Adugarea de librrii

Se scrie programul n fereastra principal i se compileaz la menu Build opiunea Build sau se apas tasta F7.Dac programul conine erori ne va aprea fereastra BUILD OUTPUT care conine numrul de erori i avertismente.Se repar erorile i mai apoi se compileaz prin comanda TOOL AVR Prog Este necesar ca pentru rularea programului robotul sa fie legat la pc prin cablul serial PX- 400 i comutatorul power s fie activ.

Figura 43-Modul de conectare la PC

99

Minirobot mobil cu senzori pentru detectare obstacole

Figura 44-Alegerea debug-ului Fiierul care iniial era format .gcc se compileaz n format hex.Acest fiier conine codul convertit din C n cel al robotului hex.Este introdus ulterior n memoria microcontroler-ului prin apsarea butonului Program

Figura 45-Programarea microcontrolerului.


100

Minirobot mobil cu senzori pentru detectare obstacole

Programarea microcontrolerului folosind limbajul de programare C Limbajul C este folosit n programarea roboilor alturi de alte limbaje precum Pascal,Basic,LISP etc. Comenzile n C sunt executate de ctre microcontroler pas cu pas de la nceputul programului pn la sfrit iar la sfritul fiecrei instruciunii se poziioneaz;. Cuvinte rezervate pentru limbaj: Auto t Brea k Goto Return Struct Do For r Void Char Registe Defaul Float Long f Static e Else e Short h Switc e Volatil Const m Enu Int Extern Continu Doubl While Sizeo Tabel 11 Case Typedef

Tipuri de date folosite n limbajul C pentru programarea robotului care se ncadreaz n urmtoarele valori: Tabel 13 Tabel 12 Tip Char unsigned Valori -128+127 0255
101

Minirobot mobil cu senzori pentru detectare obstacole

char Int unsigned int float long -32768+32767 0+4294967295 Orice numr real 2-31.231-1

102

Operator == != < > <=

Explicaie Comparaie pentru egalitate

Minirobot mobil cu senzori pentru detectare obstacole

Comparaie pentru diferit Comparaie pentru mai puin Comparaie pentru mai mult Comparaie pentru mai puin sau egal

Sistemul numeric n C 1 Numere zecimale 2 Numere binare de tip 0Bbbbbb. B ia valori de 0 sau 1 De exemplu numrul binar 0b10010010=146 Modul de calcul:( ( 21)+(0 20)=14610; 3 Numere hexazecimale de forma 0 FF=255 27)+ :( 26)+

>=

Comparaie pentru mai mult sau egal

! && ||

NU I SAU

25)+ (

24)+

23)+

22)+

Modul de calcul:(15 161)+ :(15 160)=25510 ; 0 FF=0b1111111 ca numr binar.

Set comenzi robot Ver 1.0

103

Minirobot mobil cu senzori pentru detectare obstacole

Figura 40-Fereastra Ctrl-robot

104

Minirobot mobil cu senzori pentru detectare obstacole

Elemente constituente Motor stnga, dreapta; Convertor analog digital (ADC); Buzzer; Comunicaie serial;

Comenzile implementate trebuie s: comande motoarele(ambele intr-o comand), trimite comanda buzzer( timpul programabil cat timp v-a fi activ), citeasca valorile ADC pentru 4 canale.

Comenzile vor avea o structura urmatoare: <cmd><camp0><camp1> . <campn><sum_ct_>

Semnificatia octeilor: parte; curent. sum_ct suma control, xor la toti octeii recepionati n comanda cmd identificator comanda ( intervalul 0:127 = 0x00:0x7F); camp0...campn date mesaj, particularizate pentru fiecare comanda n

Decalarea ntre mesaje se face n funcie de timpul dintre caractere. Astfel dac timp de 5 ms nu am primit nici un caracter nou consider transmisia terminat. Raspunsul trimis de placa v-a fi trimis la intervalul de 7 ms de la receptia ultimului caracter, (2ms) de la declararea receptiei.

Rspunsul la comand poate fi: comanda acceptat (sau date cerute), nici un raspuns (pentru comanda cu suma de control eronat, sau lungime mesaj invalid), comanda inexistenta ( daca comanda nu este implementeta), parametrii invalizi (datele
105

Minirobot mobil cu senzori pentru detectare obstacole

atasate comenzii sunt n afara domeniului de acoperire). Erorile se semnalizeaz prin codul comenzii creia i se face face sau (or) cu o masca 0x80. Astfel eroarea comenzii 0x01, va avea valoarea 0x01 | 0x80 = 0x81.

Forma raspunsului pentru comenzile respinse: <cmd | 0x80><reason>

Unde reason: 1 2 Comanda neimplementata Parametrii in afara limitelor

Comenzi terminal Seteaza directie/viteza motoare (0x01) Comanda: 0x0 1 1 byte t 1 byte sens_m 1 1 byte pwr_mt_ 2 1 byte pwr_mt_

sens_mt pwr_mt_ 1

Sensul de rotire al motorului 1 si 2 . indica puterea motorului 1 (factor de umplere PWM) valoarea cea mai semnificativa fiind trimisa prima (High).

pwr_mt_ 2

2 octeti ,indica puterea motorului 2 (factor de umplere PWM) valoarea cea mai semnificativa fiind trimisa prima (High).

Campul sens_mt:
106

Minirobot mobil cu senzori pentru detectare obstacole

mt_1 Bi t7 t6 Bi t5

mt_2 Bi t4 Bi t3

x Bi t2

x Bi t1

x Bi 0

x Bit

Semnificatie mt_1/ mt_2: bi t 1 0 0 1 1 b 2 0 1 0 1 Motor oprit Sens rotire fata Sens rotire inapoi Rezervat nefolosit b

Raspuns: Raspuns corect : 0x02 Comada buzzer (0x02) Comanda: 0x0 2 1 byte H 1 byte buzz_tm_ L 1 byte buzz_tm_

Comanda porneste buzzerul si trimite nr de mesaj ct timp buzzerul v-a funciona incepand de la momentul recepionarii comenzii. buzz_tm_H:buzz_tm_L reprezinta timpul de functionare buzzer exprimat in ms. Durata ia valori intre 1 si 2500ms

Raspuns:
107

Minirobot mobil cu senzori pentru detectare obstacole

Citire canale analogice (0x03) Comanda: 0x03 1 byte Comanda este format doar din codul comenzii , fr parametrii

Raspuns: Rspunsul cuprinde patru cmpuri de date cu valorile citite de la cele 4 canale ale ADC-ului. Cmpurile adc_0, adc_1, adc_2, adc_3 iau valori n intervalul 0:255, corespunztor tensiunilor masurate 0:Vref.

0x03 0 1 byte byte

adc_

adc_1

adc_2

adc_3

1 byte

1 byte

1 byte

Identificare dispozitiv (0x7F) Comanda: 0x7F 1 byte

Rspuns: 0x0 3 1 byte ID_dev identificator dispozitiv 0xAA. Versinea curent program controller Ver X.Y .
108

ID_de v 1 byte X

Ver_ Y 1 byte

Ver_

1 byte

Minirobot mobil cu senzori pentru detectare obstacole

Programul comand robotul de la tastaur prin cablul serial cu un conector RS232 la calculator i un conector pentru interfaa serial la cellalt capt.iar prin apsare switch 1se schimba comandarobotul citind datele digitale de la senzorul infrarou Sharp.Programul este construit n CAVR.

#include "mega8.h" #include "serial.h" #include "motor.h" #include "LCD_control.h" #include "timer.h" #include "analogic.h" #include "buzzer.h" #include "in_out.h" #include "compiller_specific.h"

#define GLOBAL_MAIN #include "main.h"

stop_watch_2Btime_main;

void main(void)
109

Minirobot mobil cu senzori pentru detectare obstacole

{ init_serial(); init_timer(); init_motor(); init_analogic(); init_buzz(); init_in_out();

#asm("sei");

stop_watch2B_set(&time_main, 1000); run_mode = RUN_WITH_PC;

start_buzz(100);

// sa bazie si el 100 ms la start

while(1) { analogic_task();

motor_task(); buzz_task(); in_out_task();

if(run_mode == RUN_WITH_PC) { if( input_up & 0x01 ) { input_up &= ~0x01; run_mode = RUN_ALONE; LED4_ON(); } else serial_task();
110

Minirobot mobil cu senzori pentru detectare obstacole

} else if(run_mode == RUN_ALONE) { if( input_up & 0x01 ) { input_up &= ~0x01; run_mode = RUN_WITH_PC; LED4_OFF(); clear_LCD(); } else { test_LCD(); } }

if(stop_watch2B_tst(&time_main) == TRUE) // periodic la 1 sec { stop_watch2B_set(&time_main, 1000);

} // end while(1)

#include "mega8.h" #include "compiller_specific.h"

#define GLOBAL_ANALOGIC #include "analogic.h"

111

Minirobot mobil cu senzori pentru detectare obstacole

void init_analogic(void) { // -------- hardware layer ----------ADMUX = 0x40; full ADCH-2biti, mux ADC0 // ADCSRA = 0x9D; // activez ADC, +(1<<ADIE) activez intreruperea,frecv ADC = Xtal/32 // MCUCR = 0x10; // DAC noise reduction // referinta externa cu condensator la Aref,ADCL-

ADCSRA = 0x97; MCUCR = 0x00;

// activez ADCS,frecv ADC = Xtal/32 // idle

ADCSRA |= 0x40;

// pornesc o conversie

// ------ application layer ---------adc_ch = 0x00; adc_val[0] = 0; adc_val[1] = 0; adc_val[2] = 0; adc_val[3] = 0; }

/* ************************************************************ * citesc pe rand canalele ADC de la 0 la (CH_NR_MAX-1) valorile obtinute sunt mediate pt fiecare canal si facute disponibile astfel programul citeste asincron val ADC-ului * ************************************************************ */
112

Minirobot mobil cu senzori pentru detectare obstacole

void analogic_task(void) { unsigned int adc_read_val; unsigned char sum_idx; // //

if(!(ADCSRA & 0x40)) timpul conversiei?? { // am un nou rezultat de la ADC w_low( adc_filter[adc_ch][adc_filter_idx] ) = ADCL; w_high( adc_filter[adc_ch][adc_filter_idx] ) = ADCH;

// sunt in

sum_idx = adc_filter_idx; citirilor pt canalul curent adc_read_val = 0;

// indexul folosit pentru a face suma

// aici fac suma pentru canalul curent

do { // insumez toate ultimele 16 citiri (fac mediere) sum_idx++; sum_idx &= CH_FILTER_NR_MSK; index modulo 16 adc_read_val += adc_filter[adc_ch][sum_idx]; }while(sum_idx != adc_filter_idx); //

adc_read_val /= CH_FILTER_NR*4;

// fac media cu 16,

// si mai impart la 4 pentru a aduce rezultatele pe 8 biti

adc_val[adc_ch] = w_low(adc_read_val);

113

Minirobot mobil cu senzori pentru detectare obstacole

adc_ch++; if(adc_ch == CH_NR_MAX) { // final ciclul, reiau ciclul de masurat canalele ADC adc_ch = 0; adc_filter_idx++; adc_filter_idx &= CH_FILTER_NR_MSK; index modulo 16 } //

ADMUX &= ~0x07; ADMUX |= adc_ch; ADCSRA |= 0x40; } } // schimb canalul ADC // pornesc o noua conversie

#include "timer.h" #include "compiller_specific.h"

#define INTERN_BUZZ #define GLOBAL_BUZZ #include "buzzer.h"

void init_buzz(void) { PORTD.4 = 0; DDRD.4 = 1; } // trec in zero portul // trec portul pe iesire

114

Minirobot mobil cu senzori pentru detectare obstacole

void start_buzz(unsigned int time) { stop_watch2B_set(&buzz_task_desc.time, time); buzz_task_desc.state = BZ_ON; } // timpul de start

/* ************************************************************ * testez valoarea receptionata pt buzzer ret: TRUE val corecta, FALSE val eronata * ************************************************************ */ unsigned char set_buzzer_str(unsigned char *buff) { unsigned int buzz_time;

w_high(buzz_time) = *(buff++); w_low(buzz_time) = *buff; // copiez datele din doi octeti intr-un intreg

if(buzz_time <=2500) {// start_buzz(buzz_time); stop_watch2B_set(&buzz_task_desc.time, buzz_time); buzz_task_desc.state = BZ_ON; return TRUE; } return FALSE; } // buzzer pornit cu succes // timpul de start

void buzz_task(void)
115

Minirobot mobil cu senzori pentru detectare obstacole

{ if( buzz_task_desc.state == BZ_ON) { if(stop_watch2B_tst(&buzz_task_desc.time) == TRUE) { } } else if( buzz_task_desc.state == BZ_OFF) { // ma asigut ca buzz nu este alimentat PORTD.4 = 0; curent } } #include "mega8.h" #include "compiller_specific.h" // chiar daca are condensator, in cazul buzz_task_desc.state = BZ_OFF;

#define GLOBAL_IN_OUT #include "in_out.h"

void init_in_out() { DDRD &= ~0x0C; DDRC |= 0x20; // trec portul D corespunzator tastelor pe intrare // trec ledul pe iesire

PORTD &= ~0x0C; PORTC &= ~0x20; }

// pull-up-urile sunt oprite // ma asigur ca ledul este stins, in prima faza

void in_out_task() { unsigned char input_temp;


116

Minirobot mobil cu senzori pentru detectare obstacole

input_old = input; input = ~((PIND & 0x06)>>2); // => tasta 2 apasata bitul b0 == 1 // tasta 3 apasata bitul b1 == 1

input_temp = input ^ input_old; si cea trecuta

// observ variatiile intre starea curenta

if(input_temp) { // daca au avut loc variatii input_up |= (input_temp & input); au avut loc variatii input_dn |= (input_temp & (~input)); au avut loc variatii } } // starea curenta a bitilor este 0, si // starea curenta a bitilor este 1, si

#include "serial.h" #include "timer.h" #include "analogic.h" #include "compiller_specific.h"

#define GLOBAL_CLD_CTRL #include "LCD_control.h"

unsigned char flash nibble_2_hex[] = "0123456789ABCDEF";

117

Minirobot mobil cu senzori pentru detectare obstacole

static stop_watch_2B time_send_msg; durata rularii programului

// static aloc variabila pe toata

void clear_LCD() { TX0_buff_count_end = 0;

TX0Buffer[TX0_buff_count_end++] = 254; TX0Buffer[TX0_buff_count_end++] = 0x01; // clear LCD

bTX0_send = bTRUE; bTX0_start = bTRUE; UCSRB |= 1<<5; // TX int (la TSR liber)

stop_watch2B_set(&time_send_msg, 300); // peste 300 ms o sa mai trimit mesaj pe seriala }

void test_LCD() { unsigned long analogic_val;

if(stop_watch2B_tst(&time_send_msg) == TRUE) la 1 sec { stop_watch2B_set(&time_send_msg, 300);

// periodic

TX0_buff_count_end = 0;

TX0Buffer[TX0_buff_count_end++] = 254;
118

Minirobot mobil cu senzori pentru detectare obstacole

TX0Buffer[TX0_buff_count_end++] = 0x80; TX0Buffer[TX0_buff_count_end++] = 'T'; TX0Buffer[TX0_buff_count_end++] = 'e'; TX0Buffer[TX0_buff_count_end++] = 's'; TX0Buffer[TX0_buff_count_end++] = 't'; TX0Buffer[TX0_buff_count_end++] = ' ';

TX0Buffer[TX0_buff_count_end++] = 'L'; TX0Buffer[TX0_buff_count_end++] = 'C'; TX0Buffer[TX0_buff_count_end++] = 'D';

TX0Buffer[TX0_buff_count_end++] = 254; TX0Buffer[TX0_buff_count_end++] = 0x80 | 0x39;

TX0Buffer[TX0_buff_count_end++] = 'A'; TX0Buffer[TX0_buff_count_end++] = 'D'; TX0Buffer[TX0_buff_count_end++] = 'C'; TX0Buffer[TX0_buff_count_end++] = '0'; TX0Buffer[TX0_buff_count_end++] = ' '; TX0Buffer[TX0_buff_count_end++] = '0'; TX0Buffer[TX0_buff_count_end++] = 'x'; TX0Buffer[TX0_buff_count_end++] = nibble_2_hex[ (adc_val[0]>>4 ) & 0x0F]; // nibblul cel mai semnificativ TX0Buffer[TX0_buff_count_end++] = nibble_2_hex[ adc_val[0] & 0x0F ]; // nibblul cel de jos

analogic_val = (unsigned long)((unsigned long)adc_val[0]*100); // vreau sa prind zecimale analogic_val *= 5;


119

Minirobot mobil cu senzori pentru detectare obstacole

analogic_val /= 256;

TX0Buffer[TX0_buff_count_end++] = ' '; TX0Buffer[TX0_buff_count_end++] = ' '; TX0Buffer[TX0_buff_count_end++] = (unsigned char)(analogic_val/100) + '0'; // 1V

TX0Buffer[TX0_buff_count_end++] = '.'; analogic_val %= 100; // calculez restul la impartirea cu 100

TX0Buffer[TX0_buff_count_end++] = (unsigned char)(analogic_val/10) + '0'; // 0.1V analogic_val %= 10; TX0Buffer[TX0_buff_count_end++] = (unsigned char)(analogic_val)+'0'; TX0Buffer[TX0_buff_count_end++] = 'V';

bTX0_send = bTRUE; bTX0_start = bTRUE; UCSRB |= 1<<5; } } #include "mega8.h" #include "platform_specific.h" // TX int (la TSR liber)

#define INTERN_MOTOR #define GLOBAL_MOTOR #include "motor.h"

#define MOTOR_INITIAL 100


120

Minirobot mobil cu senzori pentru detectare obstacole

/* ************************************************************ * initializare periferice driver motor * ************************************************************ */ void init_motor(void) { DDRB |= 0x07; out DDRD |= 0xE0; // setare sens PD5:PD7 trecute pe out // iesirile PWM si setare sens PB0 trecute pe

// WGM13:WGM10 = 0x05;

- Fast PWM, 8-bit - dezactivare

// COM1A1:COM1A0, COM1B1:COM1B0 = 0x00 canal pwm // pwm activ // CS12:CS10 = 0x05 // Fpwm = Fosc/(2*N*TOP) = 19.14Hz = 0x02

- canal

- prescaler 1024 => Tpwm = 0.0522s

TCCR1A = 0xA0 | 0x01; TCCR1B = 0x08 | 0x05; 1024

// COM1A1,COM1B1, WGM10 // WGM12, CS11, CS10 // prescaller

OCR1AL = MOTOR_INITIAL; OCR1BL = MOTOR_INITIAL; // sa nu fie zero

engine_control.pwm_val_left = MOTOR_INITIAL; engine_control.pwm_val_right = MOTOR_INITIAL;

TIFR |= 0x04; TIMSK |= 0x04;


121

// sterg fanion intrerupere TOV1 // activare int timer1 TOIE1

Minirobot mobil cu senzori pentru detectare obstacole

/* ************************************************************ * initializare periferice driver motor * ************************************************************ */ void motor_task(void) { if(engine_control.mode_left == MT_STOP) { TCCR1A &= ~0x80; }else if(engine_control.mode_left == MT_FRW) { TCCR1A |= 0x80; MT_CH1_FRW(); }else if(engine_control.mode_left == MT_REW) { TCCR1A |= 0x80; MT_CH1_REW(); }

//----------------- al doilea motor -------------if(engine_control.mode_right == MT_STOP) { TCCR1A &= ~0x20; }else if(engine_control.mode_right == MT_FRW)
122

Minirobot mobil cu senzori pentru detectare obstacole

{ TCCR1A |= 0x20; MT_CH2_FRW(); }else if(engine_control.mode_right == MT_REW) { TCCR1A |= 0x20; MT_CH2_REW(); } }

interrupt [TIM1_OVF] void pwm1_handle(void) // int 52.2 ms { OCR1AL = engine_control.pwm_val_left; OCR1BL = engine_control.pwm_val_right; }

/* ************************************************************ * incarc parametrii primiti pe seriala * ************************************************************ */ void set_motor_str( unsigned char *buff) { unsigned char temp_var;

temp_var = *(buff++);

123

Minirobot mobil cu senzori pentru detectare obstacole

TIMSK &= ~0x04; timp cat modific parametrii de functionare

// dezactivare int timer1 TOIE1, atata

engine_control.pwm_val_left

= *(buff++);

if(engine_control.pwm_val_left == 0) { // PWM receptionat este zero, opresc motorul engine_control.mode_left = MT_STOP; engine_control.pwm_val_left = 1; } else if( (temp_var & (0x03)<<6) == (0x01<<6) ) { // rotire fata engine_control.mode_left = MT_FRW; } else if( (temp_var & (0x03)<<6) == (0x02<<6) ) { // rotire spate engine_control.mode_left = MT_REW; } else { // motor oprit engine_control.mode_left = MT_STOP; }

engine_control.pwm_val_right

= *buff;

if(engine_control.pwm_val_right == 0) { // PWM receptionat este zero, opresc motorul engine_control.mode_right = MT_STOP; engine_control.pwm_val_right = 1; } else
124

Minirobot mobil cu senzori pentru detectare obstacole

if( (temp_var & (0x03)<<4) == (0x01<<4) ) { // rotire fata engine_control.mode_right = MT_FRW; } else if( (temp_var & (0x03)<<4) == (0x02<<4) ) { // rotire spate engine_control.mode_right = MT_REW; } else { // motor oprit engine_control.mode_right = MT_STOP; }

TIMSK |= 0x04;

// activare int timer1 TOIE1

} #include "mega8.h" #include "compiller_specific.h"

#define GLOBAL_SERIAL #include "serial.h"

#include "main.h"

// pt ID placa, versine program

#include "analogic.h" // pt a citi canalele ADC #include "buzzer.h" #include "motor.h"

#define XTAL 160000 #define BAUD 96


125

Minirobot mobil cu senzori pentru detectare obstacole

/* ************************************************************ * initializare comunicatie seriala * ************************************************************ */ void init_serial() { UBRRH = (unsigned char) ((XTAL/(16*BAUD)-1)>>8); UBRRL = (unsigned char) (XTAL/(16*BAUD)-1); UCSRA = 0x00; UCSRC = 0b10000110; 8 biti UCSRB = 0b10011000; // RX_int-en, RX-en, TX-en // nu prea are sens initializarea asta // asyncron, parity disable, 1 bit stop,

RX0_buff_count = 0; TX0_buff_count = 0;

RX_TX_time = SER_TIME_SEND_MSG; preluarea unui msg fals la initializare

// evit

bTX0_send = bFALSE; bRX0_done = bFALSE; bTX0_start = bFALSE; }

// -----------------------------------------------------------// intreruperi comunicatie seriala

// -----------------------------------------------------------interrupt [USART_RXC] void RX_handle(void)


126

// RX

Minirobot mobil cu senzori pentru detectare obstacole

RX0Buffer[RX0_buff_count] = UDR; if(RX0_buff_count < (BUFF_MAX-1)) { RX0_buff_count++; RX_TX_time = 0; }

interrupt [USART_DRE] void TX_handle_1(void) USART_TXC { UDR = TX0Buffer[TX0_buff_count]; TX0_buff_count++;

// TX

if(TX0_buff_count == TX0_buff_count_end) { UCSRB &= ~(1<<5); bTX0_send = bFALSE; TX0_buff_count = 0; } } // disable int, nu mai incarc cu date // pot sa compun un alt mesaj

/* ************************************************************ * task comunicatie seriala * ************************************************************ */ void serial_task() { if(bRX0_done == bTRUE) { bRX0_done = bFALSE; switch ( RX0Buffer[0] ) { case SET_MOTORS:
127

Minirobot mobil cu senzori pentru detectare obstacole

if(RX0_buff_count_end == SET_MOTORS_SZ ) { if(TRUE == sum_check_tst(RX0Buffer, RX0_buff_count_end)) { if( RX0Buffer[1] & 0x0F) { // am primit niste biti rataciti prin octetul de sens TX0_buff_count_end = 0; TX0Buffer[TX0_buff_count_end++] = SET_MOTORS | 0x80; // eroare TX0Buffer[TX0_buff_count_end++] = 0x02; } else { // mesaj corecet setez motorul si trimit raspunsul set_motor_str( &RX0Buffer[1]);

TX0Buffer[0] = SET_MOTORS; TX0_buff_count_end = 1; }

sum_check_add(TX0Buffer, TX0_buff_count_end); TX0_buff_count_end ++; bTX0_send = bTRUE; } } break;

case SET_BUZZ: if(RX0_buff_count_end == SET_BUZZ_SZ )


128

Minirobot mobil cu senzori pentru detectare obstacole

{ if(TRUE == sum_check_tst(RX0Buffer, RX0_buff_count_end)) { if( TRUE == set_buzzer_str(&RX0Buffer[1]) ) { // buzzer pornit, trimit comanda reusita TX0Buffer[0] = SET_BUZZ; TX0_buff_count_end = 1; } else { // timpul setat in afara domeniului asteptat TX0_buff_count_end = 0; TX0Buffer[TX0_buff_count_end++] = SET_BUZZ | 0x80; // eroare TX0Buffer[TX0_buff_count_end++] = 0x02; } sum_check_add(TX0Buffer, TX0_buff_count_end); TX0_buff_count_end ++; bTX0_send = bTRUE; } } break;

case GET_ADC: if(RX0_buff_count_end == GET_ADC_SZ ) { if(TRUE == sum_check_tst(RX0Buffer, RX0_buff_count_end)) { TX0_buff_count_end = 0; TX0Buffer[TX0_buff_count_end++] = GET_ADC;
129

Minirobot mobil cu senzori pentru detectare obstacole

TX0Buffer[TX0_buff_count_end++] = adc_val[0]; TX0Buffer[TX0_buff_count_end++] = adc_val[1]; TX0Buffer[TX0_buff_count_end++] = adc_val[2]; TX0Buffer[TX0_buff_count_end++] = adc_val[3]; sum_check_add(TX0Buffer, TX0_buff_count_end); TX0_buff_count_end ++; bTX0_send = bTRUE; } } break;

case GET_ID: if(RX0_buff_count_end == GET_ID_SZ ) { if(TRUE == sum_check_tst(RX0Buffer, RX0_buff_count_end)) { TX0_buff_count_end = 0; TX0Buffer[TX0_buff_count_end++] = GET_ID; TX0Buffer[TX0_buff_count_end++] = DEV_ID; TX0Buffer[TX0_buff_count_end++] = VER_X; TX0Buffer[TX0_buff_count_end++] = VER_Y; sum_check_add(TX0Buffer, TX0_buff_count_end); TX0_buff_count_end ++; bTX0_send = bTRUE; } } break;

130

Minirobot mobil cu senzori pentru detectare obstacole

default: if(TRUE == sum_check_tst(RX0Buffer, RX0_buff_count_end)) { // comanda necunoscuta dar cu suma control corecta TX0_buff_count_end = 0; TX0Buffer[TX0_buff_count_end++] = RX0Buffer[0] | 0x80; TX0Buffer[TX0_buff_count_end++] = 0x01; // comanda necunoscuta sum_check_add(TX0Buffer, TX0_buff_count_end); TX0_buff_count_end ++; bTX0_send = bTRUE; } } // end switch } // end

if( bTX0_send == bTRUE && bTX0_start == bTRUE) { // am mesaj de trimis, si sunt in fereastra de timp in care pot trimite bTX0_start = bFALSE;

UCSRB |= 1<<5; } }

// TX int (la TSR liber)

/* ************************************************************ * testez datele dintr-un buffer sa vad daca au suma control corecta ret: TRUE suma corecta, FALSE suma eronata * ************************************************************ */
131

Minirobot mobil cu senzori pentru detectare obstacole

unsigned char sum_check_tst(unsigned char *buff, unsigned char length) { unsigned char sum; sum = 0;

do { sum ^= *(buff++); length--; } while(length!=0);

if(sum == 0) return TRUE; return FALSE; }

/* ************************************************************ * adaug suma de control unui buffer lungimea pachetului de date trebuie sa fie de minimum 1 * ************************************************************ */ void sum_check_add(unsigned char *buff, unsigned char length) { unsigned char sum; sum = 0;

do { sum ^= *(buff++);
132

Minirobot mobil cu senzori pentru detectare obstacole

length--; } while(length!=0);

*buff = sum; }

// adug suma de control

#include "mega8.h" #include "compiller_specific.h"

#define GLOBAL_TIMER #include "timer.h"

#define INTERN_BUZZ #include "buzzer.h"

#include "serial.h"

static unsigned int timer_val; static unsigned int timer_val_bk;

/* ************************************************************ * initializare timer2 folosit pentru masurarea timpului intarzieri etc. * ************************************************************ */ void init_timer(void) { // XTAL = 16Mhz
133

Minirobot mobil cu senzori pentru detectare obstacole

TCCR2 = 0x0C; OCR2 = 250; TIMSK = 0x80; }

// CTC, no ports, prescaler 64 - WGM21, CS22 // XATL/64/250 = 1000 -> 1ms // intrerupere cand avem match regs

// -----------------------------------------------------------// intrerupere timer 2

// -----------------------------------------------------------interrupt [TIM2_COMP] void timer_2 (void) { timer_val ++; // 1 ms

if(buzz_task_desc.state == BZ_ON) { } PORTD.4 = ~PORTD.4;

// ---------- responsabil cu mng serialei --------------------if(RX_TX_time < SER_TIME_SEND_MSG) { RX_TX_time++; if(RX_TX_time == SER_TIME_END_MSG) { // am mesaj receptionat nou RX0_buff_count_end = RX0_buff_count; RX0_buff_count = 0; bRX0_done = bTRUE; } else if(RX_TX_time == SER_TIME_SEND_MSG) { // pot sa trimit raspunsul
134

Minirobot mobil cu senzori pentru detectare obstacole

bTX0_start = bTRUE; } } // ---------------- end seriala ------------------------------}

/* ************************************************************ * timpul de asteptat se seteaza la initializare timer * ************************************************************ */ /* ************************************************************ * incarc momentul de inceput cronometrare si timpul dorit pt cronometrare * ************************************************************ */ void stop_watch2B_set(stop_watch_2B *time_struct, unsigned int time) { time_struct->time_length = time; TMR1_INT_DIS(); // disable int

time_struct->time_start = timer_val; TMR1_INT_EN(); }

/* ************************************************************ * verific daca a trecut timpul asteptat intorc TRUE - perioada cronometrata a trecut FALSE - mai astept perioada nu a trecut * ************************************************************ */ unsigned char stop_watch2B_tst(stop_watch_2B *time_struct) { TMR1_INT_DIS();
135

Minirobot mobil cu senzori pentru detectare obstacole

timer_val_bk = timer_val; TMR1_INT_EN(); if(time_struct->time_length < (unsigned int)(timer_val_bk - time_struct>time_start)) return TRUE; return FALSE; }

Programul compilat n AVR Studio pentru detectarea i ocolirea obstacolelor folosind senzorul infrarou este artat mai jos.Robotul se deplaseaz iar dac senzorul infrarou detecteaz un obstacol la o distana de 8 cm se ntoarce la dreapta i continu drumul. Programul surs este urmatorul: include <stdlib.h> // *Pentru convertire tipuri de date *// #include <motor.h> // *Controlul motoarelor*// #include <sleep.h> //* Pentru ntrziere*// #include <sound.h> //*Pentru semnal sonor*// #include <analog.h> //* Convertor analog-digital*// void main() //*Program principal*// {
136

//

Minirobot mobil cu senzori pentru detectare obstacole

unsigned int sensor=0; unsigned char i=0; sleep(200); sound(4000,50);

//* inceput cu un beep*// while(1) { sensor=0; for (i=0;i<5;i++) { sensor=(sensor+analog(0)); } // *Citete datele de la GP2D12 de 5 ori*// sensor=(sensor/5); /*Se face media aritmetic a distanelor*// if (sensor>260) // * Condiie ca distana s nu fie mai mare de 10 cm ? { backward(50);sleep(800); // *Schimbarea direciei *// s_left(50);sleep(600); } else
137

Minirobot mobil cu senzori pentru detectare obstacole

{ forward(50); //* Merge nainte*// } } }

BIBLIOGRAFIE 1. Gheorghe I Gheorghe, Valentin Pau, Doru Dumitru Palade, Mecatronica, Editura Cefin, Bucureti, 2002. 2.Mircea Niulescu,[1998], Roboi mobili, Editura SITECH Craiova. 3. Philippe Coiffet, La robotique, Principes et aplicaions.Editura Hermes Paris,1986.
138

Minirobot mobil cu senzori pentru detectare obstacole

3. V. Valcovici, tefan Blan, R Voinea, Mecanica teoretic, Editura Tehnic Bucureti,1986. 4. Glmeanu, C., Contribuii la sinteza roboilor mobili cu 3 grade de mobilitate, Tez de doctorat, UPB, 2000. 5 .Mihi Ardeleanu, Roboi industriali mobili, Curs. 6.Valerica Cimpoca,Aparatura optoelectronic, Curs. 7.Catalog pentru componente optoelectronice,Bneasa SA,Bucuret 2000. 8.Iniiere n limbajul C, Damian Costea. 9.Vasile M. Catunenu, Tehnologie electronic, Editura Didactic i pedagogic, Bucureti 1981 10.Lucian Ciobanu,Elemente de proiectare a sistemelor flexibile de fabricaie i a roboilor industriali, Editura BIT,Iai 1997. 11 .www.microchip.com 12.www.atmega8.com 13.www. inex.co.th 14.www.inexglobal.com 15.www.maximum robotics 15.Numeroase alte site-uri aduse n faa ochilor mei de www.google.com 16 Note de curs i laboratoare.

139

S-ar putea să vă placă și