Minirobot mobil cu senzori pentru detectare obstaco le [619900]
Minirobot mobil cu senzori pentru detectare obstaco le
3
Cuprins
Introducere
Capitolul I – Studiu privind stadiul roboților mobile
1.1 Roboți mobili
1.2 Clasificarea roboților mobili
1.3 Utilizări ale roboților mobili
1.4 Structura unui robot mobil
1.5 Acționarea roboților mobili
1.6 Sistemul senzorial
1.7 Tipuri de roboti mobili
Capitolul II – Studiul dinamicii robotului mobil cu roți
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 interfețelor de comunicare
4.1 PX-400 Cutie Programată In-Sistem cu interfață serială
4.2 Interfața SPI
4.3 Cabluri de transfer a datelor
Capitolul V- Programarea robotului
5.1 Instalarea AVR Studio
Minirobot mobil cu senzori pentru detectare obstaco le
4
5.2 Crearea programului C în AVR Studio
Bibliografie
Introducere
Unul din cele mai importante aspecte în evoluția ființei umane este folosi rea
uneltelor care să simplifice munca fizică. În aceasta categorie se însc riu și roboții, ei
ocupând totuși o poziție privilegiată datorită complexității lor.
Noțiunea de robot datează de peste 4 mii de ani. Omul și-a imaginat
dispozitive mecanizate inteligente care să preia o parte însemnat a din efortul fizic
depus. Astfel a construit jucării automate si mecanisme inteligente sau și-a imaginat
roboții in desene, carti, filme "SF" etc.
Revoluția informatică a marcat saltul de la societatea industriali zată la
societatea avansat informatizată generând un val de înnoiri în tehnologie și î n
educație.Acest lucru a dus și la apariția roboților
Termenul "robot" a fost folosit in 1920 de cehul Karel Capek într-o piesa
numită "Robotul universal al lui Kossum". Ideea era simplă: omul face ro botul după
care robotul ucide omul. Multe filme au continuat sa arate că roboții s unt mașinării
dăunătoare si distrugătoare.
Revoluția informatică a marcat saltul de la societatea industriali zată la
societatea avansat informatizată generând un val de înnoiri în tehnologie și î n educație
permițând realizarea de roboți.
Roboții oferă beneficii substantiale muncitorilor, industriilor si implicit
țărilor. In situatia folosirii în scopuri pașnice, roboții industriali pot influența pozitiv
calitatea vieții oamenilor prin înlocuirea acestora in spații per iculoase, cu conditii de
mediu daunatoare omului, cu conditii necunoscute de exploatare etc.
Minirobot mobil cu senzori pentru detectare obstaco le
5
Domeniile de aplicare a tehnicii roboților se lărgesc mereu, ei putând fi utilizați
în industrie, transporturi și agricultură, în sfera serviciilor, în cunoastere a oceanului și
a spatiului cosmic, în cercetarea științifică etc.
Lucrarea prezintă modul de proiectare și realizare a unui miniro bot echipat cu
microcontroler ATmega8-16PI și diferiți senzori aducând o contribuție la de zvoltarea
bazei teoretice și practice
de studiu a microcontrollerelor Atmel și a posibilităților nelimita te de dezvoltare
de aplicații în domeniul roboticii.
CAPITOLUL I
STUDIU PRIVIND STADIUL ROBOȚILOR MOBILI
1.1 Roboți mobili
Robotul mobil este un sistem complex care poate efectua diferite activități într-o
varietate de situații specifice lumii reale. El este o combinați e de dispozitive echipate
cu servomotoare și senzori (aflate sub controlul unui sistem ierarhic de calcul) ce
operează într-un spațiu real, marcat de o serie de proprietăți f izice (de exemplu
gravitația care influențează mișcarea tuturor roboților care funcți onează pe pământ) și
care trebuie să planifice mișcările astfel încât robotul să poa tă realiza o sarcină în
funcție de starea inițială a sistemului și în funcție de informația apri ori existentă,
legată de mediul de lucru.
Succesul în îndeplinirea acestor sarcini depinde atât de cunoștințele pe care
robotul le are asupra configurației inițiale a spațiului de lucru, cât ș i de cele obținute
pe parcursul evoluției sale.
Problemele specifice ce apar la roboții mobili ar fi următoa rele: evitarea
impactului cu obiectele staționare sau în mișcare, determinarea poz iției și orientării
robotului pe teren, planificarea unei traiectorii optime de mișc are.
Minirobot mobil cu senzori pentru detectare obstaco le
6
În cazul unui sistem robotic automat distribuit pozițiile spația le sunt de o
extremă importanță și de ele depinde îndeplinirea scopurilor dorite și funcționarea
întregului sistem. Cu alte cuvinte, robotul trebuie să fie capabil să- și planifice
mișcările, să decidă automat ce mișcări să execute pentru a îndeplini o s arcină, în
funcție de aranjamentul momentan al obiectelor din spațiul de lucru.
Planificarea mișcărilor nu constă dintr-o problemă unică și bine d eterminată, ci
dintr-un ansamblu de probleme dintre care unele sunt mai mult sau ma i puțin variante
ale celorlalte.
Evitare coliziunii cu obstacole fixe sau mobile (de exemplu alți roboț i mobili)
aflate în spațiul de lucru al robotului se poate face prin mai multe m etode:realizarea
unei apărători mecanice care prin deformare oprește robotul, folosir easenzorilor care
măsoară distanța până la obstacolele de pe direcția dedeplasare, f olosirea senzorilor de
proximitate, folosirea informațiilor corelate de la mai multe tipur i de senzori.
Localizarea obiectelor se poate realiza și prin contact fiz ic, dar acesta impune
restricții asupra vitezei de mișcare a structurii manipulate . Contactul fizic dintre robot
și obiectele din mediu generează forțe de reacțiune care modifică st area robotului.
Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizi c cu obstacole sau
obiecte manipulate să fie riscante (pot duce la deteriorarea obi ectelor sau a robotului).
Navigarea robotului este posibilă și fără o determinare a poziție i și orientării față
de un sistem de coordonate fix, dar această informație este utilă pentru sist eme de
comandă a mișcării. Dintre metodele de navigație mai des utilizate se pot menționa:
măsurarea numărului de rotații făcute de roțile motoare, folosirea de ac celeratoare și
giroscoape, geamanduri electromagnetice instalate în teren, semnali zatoare pasive sau
semipasive de tip optic sau magnetic.
1.2 Clasificarea roboților mobili
Roboții mobili se clasifică astfel
• În funcție de dimensiuni: macro, micro și nano-roboți.
Minirobot mobil cu senzori pentru detectare obstaco le
7
• În funcție de mediul în care acționează: roboți tereștri – se deplas ează pe sol,
roboți subacvatici – în apă, roboți zburători – în aer, roboți extrater eștri – pe solul altor
planete sau în spațiul cosmic;
• În funcție de sistemul care le permite deplasarea în mediul în care ac ționează
există de exemplu pentru deplasarea pe sol
1. roboți pe roți sau șenile
2. roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi;
3. roboți târâtori: care imită mișcarea unui șarpe, care imită mi șcarea unei
râme etc.;
4. roboți săritori, care imită deplasarea broaștelor, cangurilor etc.;
5. roboți de formă sferică (se deplasează prin rostogolire) etc.
Figura 1- Diferite tipuri de miniroboți.
1.3 Utilizări ale roboților mobili.
Utilizările pentru care au fost, sunt și vor fi concepuți roboții mobi li sunt
dintre cele mai diverse . Mulți roboți din zona micro își găsesc utiliza rea în medicină,
fiind capabili să se deplaseze de-a lungul vaselor și tuburilor corpului om enesc, în
scopul investigațiilor, intervențiilor chirurgicale, dozării și distribui rii de medicamente
etc. La fel de spectaculoase sunt și multe utilizări ale macro-r oboților:
Minirobot mobil cu senzori pentru detectare obstaco le
8
• În domeniul industrial, agricol, forestier: în domeniul industrial roboții mobili
sunt reprezentați de AGV-uri (Automated-Guided Vehicles), vehicule pe roți, cu
ghidare automată, care transportă și manipulează piese, constituind o alternativă
flexibilă la benzile de montaj; în agricultură există tractoare și mașini agricole fără
pilot, capabile să execute singure lucrările pe suprafețele pentr u care au fost
programate; în domeniul forestier roboții mobili pot escalada copa cii înalți
• În domeniul militar: este luată în considerare de către armata am ericană
perspective înlocuirii soldaților combatanți cu roboți, pentru a reduc e riscul pierderilor
umane în luptă; roboți mobili de cele mai ingenioase și robuste configura ții sunt
aruncați în clădi ș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 obstaco le
9
• În domeniul utilităților publice: una dintre cele mai utile și econom ice utilizări
ale roboților mobili o reprezintă inspectarea conductelor de combust ibili gazoși și
lichizi și a canalelor de canalizare. De exemplu rețeaua de canalizare a Germaniei
însumează 400.000 km, iar inspectarea și curățirea acesteia presu pune costuri de 3□6
Euro pe metru. Numai 20% din conducte sunt accesibile, iar utilizarea ro boților poate
reduce costurile cu un sfert.
• În domeniul distractiv și recreativ: sunt roboții-jucării, roboții p entru competiții
• În domeniul serviciilor: Există posibilități deosebit de largi de impl ementare.
Sunt roboți pentru: deservirea bolnavilor în spitale; ajutorarea per soanelor bătrâne sau
cu diferite handicapuri; ghidarea și informarea publicului în muzee asp irarea și
curățirea încăperilor; spălarea geamurilor și a pereților clădir ilor;
• În domeniul securității: Multe operații de inspectare și dezamorsar e a unor
obiecte și bagaje suspecte sunt executate de roboți;
• În domeniul operațiilor de salvare: Roboții salvatori (Rescue robots ) sunt
utilizați în operațiile de salvare a victimelor unor calamități: c utremure, incendii,
inundații.
Roboții mobili au următoarele caracteristici comune:
1. structura mecanică este un lanț cinematic serie sau paralel respe ctiv tip
“master-slave”;
2. sistemul de acționare utilizat este electric pentru sarcini mic i și medii și
hidraulic pentru sarcini mari;
3. sistemul senzorial utilizează senzori interni (de turație, poziție , efort) la
nivelul articulațiilor, senzori externi(camere TV) pentru scanarea m ediului și senzori
de securitate( de proximitate, de prezență cu ultrasunete);
4. sistemul de comandă este ierarhizat, de obicei multiprocesor;
5. limbajele de programare utilizate sunt preluate de la roboții staț ionari.
Minirobot mobil cu senzori pentru detectare obstaco le
10
1.4 Strucura unui robot mobil
Structura roboților mobili (RM) corespunde arhitecturii generale a roboților,
având două părți:
• Structura mecanică, respectiv manipulatorul, care determină perfor manțele
tehnice;
• Structura electronică, respectiv de comandă-control, care condiționează
calitatea performanțelor.
Indiferent de generația robotului, probleme complexe apar la realiz area structurii
mecanice de volum, greutate și cost reduse, la transmiterea mișcării ș i adaptarea la
structura mecanică a motoarelor electrice și hidraulice, la proiec tarea mâinilor
mecanice pentru a apuca obiecte de diferite forme. Referitor la st ructura electronică,
posibilitățile actuale permit folosirea a câte unui microproc esor pentru comanda
fiecărui grad de mobilitate, precum și a altor microprocesoare s pecializate pentru
tratarea semnalului senzorial. Robotul mobil interacționează cu m ediul înconjurător
prin structura sa mecanică, asigurând astfel deplasarea, poziționar ea și orientarea
organului de execuție.
1.4.1 Structura mecanică a roboților mobili este formată din:
• sistemul de locomoție (pe șenile sau roți), prin care se asigură depla sarea
robotului pe o suprafață de lucru (în cadrul unei autonomii sporite);
• sistemul de manipulare, care asigură poziționarea și orientarea organu lui de
lucru.
Robotul mobil în procesul de deplasare pe o anumuită traiectorie est e caracterizat
prin 3 funcți:
1. funcția de locomoție;
2. funcția de percepție-decizie;
Minirobot mobil cu senzori pentru detectare obstaco le
11
3. funcția de localizare;
Funcția de locomoție cuprinde sistemul de acționare electric(de prop ulsie) și
sistemul de sprijinire(suspensie).Modalitățile de propulsare sunt dintre cele mai
diverse,cum ar fii:pe roți, cu jet de apă, cu aer etc;
Roboții mobili pot fii dotați cu camera video sau alți senzori de perc epere al
mediului în care activează. Memoria robotului conținută in microcontroler
înmagazinează cunoștințele necesare localizării tuturor segmentelor de traseu posibile
Figura 3- Locomoția viermelui de pământ.
• Locomoția viermelui de pământ este influențată de factori precum f recarea
dintre module și suprafață, de tipul perilor artificiali dispuși pe module și posibilitatea
lor de penetrare a suprafețelor și forțe inerțiale.
• Prototipul în starea de până acum are o deplasare neglijabilă fapt pen tru care la
realizarea mișcării au fost urmate două metode:
1. Fabricarea de piciorușe direcționale ce vor mima perii cherat inoși ai râmei,
fapt ce duce la o avansare prin agățare a acestora de suprafață
2.Propulsarea micro-robotului pe o suprafață direcțională precu m ar fi
catifeaua.
Minirobot mobil cu senzori pentru detectare obstaco le
12
1.5 Acționarea roboților mobili
Se face cu motoare electrice de putere mică, cu moment de inerți e redus,cu
capacitate de suprasarcină, cu reductoare de raport mare (i>100) și m oment de inerție
redus de tip procesional sau armonic.Se pot folosi și unități integrate mot or-reductor
Motoare electrice cu inerție redusă utilizate:
• motoare de curent continuu cu pahar sau indus disc;
• motoare sincrone cu magneți permanenți;
• motoare pas cu pas cu reluctanță variabilă cu indus pahar și intrefie r radial sau
cu indus tip disc și intrefier radial;
• motoare sincrone cu magneți permanenți;
Analiza performanțelor dinamice a acționărilor pe baza funcției de transfer H d(s)
presupune determinarea parametrilor:
Precizia care se determină cu ajutorul funcției de transfer prin calc ulul erorii
staționare:
(1)
Ui(s)= mărime de intrare.
Promtitudinea, care se calculează cu ajutorul locului de transfer conside rând un
compromis optim precizie-stabilitate pentru o margine de faz ă MΦ=25÷45 0.
Stabilitatea care se determină cu ajutorul locului de transfer.
Minirobot mobil cu senzori pentru detectare obstaco le
13
Capacitatea de urmărire se poate aprecia cu ajutorul caracteris ticii Bode.
Pentru a se ameliora performanțele dinamice ale acționărilor în anumi te
domenii de frecvență se utilizează elemente de corecție serie sau p aralel având funcția
de transfer
(2)
1.6 Sistemul senzorial
Robotul mobil este pus în situația de a desfășura acțiuni similare c u cele
ale operatorului uman. Acest lucru determină existența unor anumite di spozitive
prin care să se culeagă informații din mediul de lucru, care să reali zeze
interacțiunea robot . mediu cu ajutorul unor caracteristici ale mediului sa u ale
obiectelor din mediu și o unitate centrală care să prelucreze în tim p real
informația senzorială, să o transforme într-o formă utilă pentru sistemul de
comandă.
Sistemul senzorial mai este numit și sistem de măsurare. El asi gură
măsurarea unor mărimi fizice și eventual perceperea unor modificăr i
semnificative a acestor mărimi.
Datorită sistemului senzorial se pot pune în evidență și caracteri sticile
geometrice și chimice ale obiectelor din mediul de lucru. Senzorii dator ită
caracteristicilor pe care le au pot explora zona de lucru, zona de conta ct, cea
apropiată, cea îndepărtată, iar senzorii foarte puternici chiar și zone foarte
îndepărtate. Informațiile culese cu ajutorul sistemului senzorial serves c la
construirea unui model al lumii în care evoluează robotul, model funcție de care
aceasta își va genera planurile de acțiuni viitoare.
În funcție de soluția constructivă, senzorii sunt pasivi sau activi. Senzorii
activi folosesc caracteristicile intrinseci ale mediului, iar cei pasivi generează
Minirobot mobil cu senzori pentru detectare obstaco le
14
modificări în mediu pentru a măsura unele caracteristici.
Alte două categorii de senzori cu care poate fi dotat un robot mobil
sunt: senzori de mărimi interne ai robotului (poziție, viteză sau accel erația unor
componente mecanice proprii) și senzori de mărimi externe (gre utate, formă,
poziție, temperatură, culoare, etc ale obiectelor asupra cărora acționează
robotul).
Caracteristicile senzoriale ale unui robot depind foarte mult de gr adul său
de autonomie, de aplicațiile pentru care a fost proiectat și de tipul mediului de
lucru.
În general percepția se realizează în două etape:
• conversia proprietăților fizice într-un semnal, de obicei electric ;
• prelucrarea acestui semnal în vederea extragerii informației 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 utilizați î n sistemele de
comandă ale robotului industrial:
1. după cum vine sau nu în contact cu obiectul a cărui proprietate fizică o
măsoară, distingem:
• senzori cu contact;
• senzori fără contact;
2. după proprietățile pe care le pun în evidență:
• senzori pentru determinarea formelor și dimensiunilor (pentru evaluare a în
mediu de lucru);
• senzori pentru determinarea proprietăților fizice ale obiec telor (de forță, de
cuplu, de densitate și elastici);
• senzori pentru proprietăți chimice (de compoziție, de concentr ație,
analizatoare complexe);
• după mediul de culegere a informației:
Minirobot mobil cu senzori pentru detectare obstaco le
15
a) senzorii pentru mediul extern;
b) senzorii pentru funcția internă;
• după distanța la care sunt culese informațiile avem senzori de contac t.
1.7 Tipuri de roboți mobili:
Figura 4-Minirobot AIRAT 2.
AIRAT 2 este un robot micromouse care folosește un procesor CPU 8051.AI RAT 2
folosește senzori pentru a o recepta când se întoarce înapoi. Placa CPU folosete o placă
JS8051-A2. Placa JS8051-A2 este foarte bine construită.Folosește resurs e externe de putere
cum ar fii LCD, ADC, douǎ ceasuri externe, auto-Flash scriere și alt ele.
AIRAT 2 utilizeaza șase senzori oferindu-i astfel posibilitat ea de a se deaplasa pe
diagonală.Un simulator PC este prevăzut,oferindu-i posibilitatea util izatorului de a întelege
mai bine nivelul inalt de căutare 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.
Minirobot mobil cu senzori pentru detectare obstaco le
16
În plus,LCD,comunicatie seriala,controlul mouse-ului precum si alte f unctii 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 algoritmi ce,precum si multe
altele.
AIRAT 2 a aparut pe coperta publicatiei franceze »MICROS&RO BOTS ».
CARACTERISTICI AIRAT 2
– capabil de reglare proprie.Invață din mers.
– Folosește 6 senzori dindu-i posibilitatea de a se deplasa pe diagonala
– Ușor de asamblat/dezasamblat
– Port de reîncarcare
– 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
Minirobot mobil cu senzori pentru detectare obstaco le
17
Figura 6-Minirobot RCX 1.0.
Una dintre principalele structuri de robot mobil, construită și util izată în cadrul
testelor, este prezentată în figura . Include două roți active în partea din spate,
acționată fiecare de câte un motor de curent continuu montat într-o piesă LE GO,
și o roată pasivă în partea din față. În vârful construcției este amplas ată unitatea de
comandă, RCX, conectată la cele două motoare (A și C) în programele pre zentate la
senzorul de lumină din frunte (senzor 1 în programe). Acest senzor este consti tuit
dintr-un LED (diodă luminiscentă), care generează un fascicul de lumină roșie și un
fotodetector care recepționeză lumina reflectată de podea și generează la ieșire o
tensiune electrică, proporțională cu intensitatea luminii reflecta te. Roțile active sunt
acționate prin intermediul a două trepte de angrenaje cu roți dințate.
Prima include un pinion cu 8 dinți, montat pe axul motorului (pinionul de
culoare
deschisă din fig) și o roată dințată cu 24 de dinți, iar a doua, este realizată pri n
angrenarea roții intermediare de 24 de dinți cu o roată de 40 de dinți, care antrenea ză
axul roții active. Raportul de transmitere poate fi calculat cu formula:
i = (24/8) * (40/24) = 5,
Minirobot mobil cu senzori pentru detectare obstaco le
18
Asigură o reducere de 5 la 1 a vitezei unghiulare a motorului și o amplifica re de
1 la 5 a momentului dezvoltat de motor. Direcția de deplasare a robotului este
controlată,fie prin mișcarea roților active în sensuri opuse, fie pri n 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(“Mi cro
Flying Robot”),cel mai mic prototip zburator microrobot. Epson au cre at µFR pentru a
demonstra tehnologia micromecatronica care s-a dezvoltat in laboratoar e in ultimii ani si
pentru a explora posibititati pentru microroboti si dezvoltarea ap licatiilor pentru
componentele tehnologice. Compania a prezentat ultimele oferte la Exp ozitia Internationala
Robotica din 2003, care a avut loc la Tokyo Big Sight între 19 – 22, 2003.
Bazîndu-se pe propria tehnologie mecatronica,care este una din tehnol ogiile 100%
apartinând companiei, Epson a dezvoltat si a vândut o familie de roboti cunoscut ă sub
numele de EMRoS,incepand cu Monsieur, care a fost pus in vanzare in 1993 și este pr ezent
in cartea Recodrurilor ca fiind cel mai mic microrobot din lume.In Apr ilie Epson a creat
Monsieur – II- P,un prototip de microrobot care opereaza pe un motor ul tra-subtire si
Minirobot mobil cu senzori pentru detectare obstaco le
19
ultrasonic si un modul Bluetooth de tipo reductor care permite multiplel or unitati sa fie
comandate prin telecomanda simultan.
Folosind acesti roboti, Epson deasemenea a realizat un robot tip teatr u de balet..In
acest sens Epson,a jucat un rol de pionerat in cercetarea si dezvoltarea mi crorobotilor
precum și în aplicatiile componentelor tehnologice.
µFR prezentat la expozitie, a provoacat levitarea prin folosirea unor elice ce au o
mișcare tip contra-rotație propulsate de un motor foarte mic si ultr asonic care totodata are si
ca mai mare proporție putere-greutate din lume si care este e chilibrat la semi-înaltime de
primul mecanism stabilizator din lume ce folosește un actuator liniar.În plus,esenta
micromecatronicii a fost asamblata intr-un montaj tehnologic foarte c ompact pentru
minimizarea mărimii si a greutății unității circuitului de control.
Prin dezvoltarea µFR, Epson a demonstrat posibilitatea de extindere a razei de
activitate a roboților din spațiul bi-dimensional (pământul) în spațiul tridimensional(aer).
Caracteristici ale µFR (Micro Flying Robot)
– mic,usor,motor ultrasonic; tinand cont de cercetarile companiei, actuat orul µFR are
cea mai mare proporție greutate-putere din lume.
– modul wireless cu consum mic; ținând cont de carcetările companiei, mo dulul
wireless are cel mai mic consum din lume.
– Tehnologie de control la semi-inaltime;
Concluzii:
În lumea zilei de azi,roboții au un rol important în mai toate domeniile vieț ii noastre.
Domeniile de utilizare sunt foarte variate incepand de la mijloace de transport și
terminând cu explorarea spatiala.Odata cu dezvoltarea tehnologiei, cu atâ t mai mulți roboți
Minirobot mobil cu senzori pentru detectare obstaco le
20
sofisticați își vor face apariția în așa fel incât și viața umană va cunoa ște o imbunătațire
semnificativă.
CAPITOLUL II
STUDIUL DINAMICII ROBOTULUI MOBIL CU ROȚI
2.1 Model cinematic robot
În cadrul acestei analize,considerăm robotul ca un corp rigid cu
roți,deplasăndu-se pe un teren plat.Sunt necesari 3 parametri pentr u a poziționa corpul
robotului în planul respectiv: doi pentru a determina poziția acestuia î n raport cu
originea sistemului de axe atașat planului, iar al treilea pentru dete rminarea orientării
acestui corp în raport cu axa verticală, perpendiculară pe plan.Exist ă mișcări
suplimentare datorate rotației roților în jurul axelor proprii, respe ctive cuplelor
cinematice de orientare.Prin corpul robotului întelegem doar corpul rigid a l acestuia,
ignorând cuplele cinematice dintre acest corp și roți.
Un vehicul aflat pe un teren plat are 3 grade de libertate: 2(x,z) ce de scriu
poziția și unul referitor la orentarea θ(rotația în jurul axei verti cale).În general roboții
Minirobot mobil cu senzori pentru detectare obstaco le
21
mobili nu au control complet independent al celor 3 parametii ce definesc si tuația lui
și trebuie să efectueze manevre complexe pentru a atinge o anumită si tuare.
Unele vehicule au roți suplimentare sau puncte de contact, cu rolul de suport
dar fără a contribui la orientare sau propulsie.Cunoscute ca roți pasi ve(ex roți de tip
castor), acestea sunt de obicei ignorate în modelarea cinematică a unu i robot mobil.
2.1.1 Model cinematic robot acționare diferențială
Pentru a specifica situarea instantanee a robotului în mediul în care se
deplasează, stabilim o relație de legătură între sistemul de refer ință f și sistemul de axe
curent,atașat corpului robotului
• Planului I se atașează sistemul de referință fix X 000Y0.
• Corpului robotului i se atașează sistemul de axe X RORYR, în punctul P
• Corespunzător poziției inițiale a robotului, se consideră notația X R0 OR0 YR0
Figura8-Model cinematic robot cu 2 roți
Minirobot mobil cu senzori pentru detectare obstaco le
22
Coordonatele punctului P, determinate în raport cu originea O 0 a sistemului de
referință scrise sub formă matriceală sunt:
(3)
• x0,y 0,θ 0 sunt parametrii ce exprimă poziția și orientarea corpului robotului în
raport cu sistemul de referință;
• xR0 ,y R0 ,θ R0 sunt parametrii ce exprimă poziția și orientarea corpului robotului în
raport cu sistemul de axe atașat acestuia, sistemul corespunzător pozi ției inițiale
• x,y,θ sunt parametrii ce exprimă poziția și orientarea poziției inițiale a corpului
robotului(poziției inițiale a sistemului de axe atașat corpului) în raport cu sistemul de
axe de referință.
Robotul care face obiectul lucrării este un robot cu acționare difer ențială.Acest
tip de acționare este una dintre cele mai simple soluții de roboți m obili cu roți.
Robotul are 2 roți convenționale fixe,atașate pe șasiu.Utilizarea de vite ze unghiulare
diferite pentru cele 2 roți conduce la schimbarea direcției de mers.
(4)
Minirobot mobil cu senzori pentru detectare obstaco le
23
Figura 9- Deplasarea robotului.
Cunoscând vitezele/pozițiile roților se cere viteza/poziția robot ului.
Se cunosc : v1=ω 1r ; v2=ω 2r
Minirobot mobil cu senzori pentru detectare obstaco le
24
Figura10-Reprezentarea vitezelor unghiulare a 2 roți.
unde r=raza roților și ω 1, ω2= vitezele lor unghiulare
Pentru efectuarea analizei, se va proceda în felul următor:
1. Se specifică mărimile necesare efectuării calculului(dimensi uni ale
robotului, unghiul de orientare al robotului,θ)
2. Se determină punctul în jurul carua se rotește robotul( centrul
instantaneu de rotație), respectiv raza traiectoriei descrise de ro bot.
3. Se detrmină viteza unghiulară a robotului.
4. Se integrează relația obținută, pentru a obține poziția robotului.
2.1.2 Determinarea C.I.R.
1.Determinarea mărimilor necesare efectuării calculului(dimensi uni ale
robotului; unghiul de orientare al robotului).
2 Se atașează robotului un sistem de axe și se măsoară unghiul de rotație al
sistemului curent în raport cu sistemul inițial de referință.
Centrul instantaneu de rotație este la intersecția axelor roților pentru cele 2
poziții.
Minirobot mobil cu senzori pentru detectare obstaco le
25
Punctul de contact al fiecărei roți trebuie să se rotească cu aceași vit eză
unghiulară Ω în jurul centrului instantaneu de rotație.
Figura 11- Determinarea C.I.R
.
3.Determinarea vitezei unghiulare ,Ω, a robotului
v1=ω1r=Ω(R+L/2)
Minirobot mobil cu senzori pentru detectare obstaco le
26
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- relațiile sunt cele preze ntate anterior.
Se determină experimental că:
L=10 cm
v1=0.5m/s și v2=0.3 m/s Ω=2 rad/s 2 și R=16 cm
• Pentru pivotarea în jurul roții
v1=v2 Ω=0
R=
Minirobot mobil cu senzori pentru detectare obstaco le
27
Figura13-Pivotarea în jurul roții 2.
• Pentru pivotare( rotație î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
Minirobot mobil cu senzori pentru detectare obstaco le
28
Figura14-Pivotarea în jurul axei verticale.
Integrarea ultimei ecuații pentru obținerea poziției robotului
dx=vx(t)dt;
dy=vy(t)dt;
dθ=Ω(t)dt;
vx(t)=v(t)cos(θ(t));
Minirobot mobil cu senzori pentru detectare obstaco le
29
Figura 15-Deplasarea robotului.
vy(t)=v(t)sin(θ(t));
Prin integrare se obține
x(t)= dt+x0;
y(t)= dt+y0;
θ(t)= dt+x0;
Ω=(v1-v2)/L
Minirobot mobil cu senzori pentru detectare obstaco le
30
R=L(v1+v2)/(v1-v2)
v=ΩR=(v1+v2)/2
Ecuațiile cinematicii directe se scriu sub formă matriceală î n raport cu sistemul
de referință:
= (5)
= (6)
Contribuția roții 1 la viteza robotului este:
vx1 =(ω 1r)/2=0.25 m/s
vy1 =0
Minirobot mobil cu senzori pentru detectare obstaco le
31
Figura 16- Contribuția roții 1 la deplasarea robotului.
Ω1=(ω 1 r)/L=5 rad/s
Contribuția roții 2 la viteza robotului
vx2 =(ω 2r)/2=0.15 m/s
vy2 =0
Ω2= (ω 2 r)/L=-1 rad/s
Minirobot mobil cu senzori pentru detectare obstaco le
32
Figura 17- Contribuția roții 2 la deplasarea robotului.
Ecuațiile cinematicii directe scrise în raport cu sistemul de a xe atașat robotului
sunt:
vx( (t)=v x1 +v x2 =0.4 m/s
vy( (t)=v y1 +v y2
Ω(t)=Ω 1+Ω 2
Se face ipoteza că roțile nu pot aluneca lateral=> componenta după axa y este
0.Dacă robotul descrie o traiectorie circulară cu raza R, lungimea arc ului descris de
acesta este:
A R=(A 1-A2)/2
unde
A1=(R+L/2) θ
A2=(R L/2) θ
Minirobot mobil cu senzori pentru detectare obstaco le
33
Figura 18- Traiectoria circulară a robotului.
Lungimea cercului descris de punctul de contact al roții 1 este dată de r elația
C1=2 )
θ=A 1/(R+L/2)
Similar pentru roata 2
C2=2 )
Minirobot mobil cu senzori pentru detectare obstaco le
34
Figura 19-Reprezentare a 2 roți.
De unde rezultă:
R A2/θ
Înlocuind această relație în
θ=A 1/(R+L/2)
Prin înlocuire se obține:
θ=(A 1A2)/L
De aici se deduce următoarele concluzii:
• orientarea θ a robotului este complet independentă de raza traiectorie i descrise
de acesta
• Dimensiunea L este o sursă de erori din cauza uzurii și complianței pneuril or
Lungimea traiectoriei descrise de punctul de contact al roții poate fi c alculată cu
relația:
Minirobot mobil cu senzori pentru detectare obstaco le
35
A1=(2· ·N 1·R ef 1 )/T 1
N1=impulsurile numărate de traductorul de poziție al roții 1
T1=numărul de impulsuri pe o rotație a roții 1
Ref1 =raza efectivă a roții 1
Similar pentru roata 2
A2=(2· ·N 2·R ef 2 )/T 2
Pentru a se deplasa după o traiectorie rectilinie ,robotul va păstra N 1=N 2, dar
dacă cele 2 pneuri au presiuni diferite ,razele lor for fii diferite.
Figura 20- Deplasarea unei roți peste un obstacol.
Considerăm o roată teoretică, rigidă(necompliantă),având raza R și
presupunem
că aceasta trebuie să treacă peste un obstacol cu înălțime h.
Minirobot mobil cu senzori pentru detectare obstaco le
36
Roata se va deplasa pe suprafața C până când întâlnește obstacolu l N 1=N 2
Distanța percepută de traductor ca fiind parcursă de roată este Am
Distanța reală parcursă este Ah. Eroarea de poziționare unghiulară a robotului va
fii:
∆θ = 2 (A m-Ah)
Figura 21- Deplasarea unei roți rigide peste un obstacol
Atunci când roata traversează o groapă aflată în terenul în care se
deplasează,obstacolele și gropile în teren produc erori privind dete rminarea corectă a
poziției robotului.Erorile sunt cauzate și de alunecarea roților ca urmar e a existenței
unor pete de unsoare pe suprafața respectivă, de impactul cu obstacole sau de
accelerarea și decelerarea excesivă sau de impactul cu obstacole.
Minirobot mobil cu senzori pentru detectare obstaco le
37
CAPITOLUL III
PROIECTAREA ELEMENTELOR CONSTRUCTIVE
Tema tehnică a lucrării
Să se proiecteze și să se realizeze platforma mobilă a unui minirobot care să
îndeplinească următoarele condiții tehnice
Parte mecanică
• Masa totală:450 grame
• Viteză maximă:0.5 m/s
• Roți motoare: 2 cu acționare independentă
• 2 sfere montate pe șasiu cu rol de menținere echilibru
• Garda la sol(distanța dintre cel mai jos element mecanic și sol):mini m 5 mm
• Cadrul de susținere(șasiu)
Minirobot mobil cu senzori pentru detectare obstaco le
38
Parte electrică
• Tip motor de acționare curent continuu( cu excitație paralel)
• Baterii: 4 1.5V(curent continuu)
• 1 senzor infraroșu Sharp
• 2 LED-uri
• 5 porturi analogice pentru conectarea senzorilor și un port de comunicație serial
• 2 senzori de contact
• 2 reflectori infraroșii
• 2 leduri semnalizare
• 1 telecomandă cu emisie infraroșu
• 1 receiver infraroșu,1 afișor 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
Minirobot mobil cu senzori pentru detectare obstaco le
39
senzor infraroșu sharp senzor de temperatură afișor cu cristale lichide
Figura8-Elementele componente ale robotului
Minirobot mobil cu senzori pentru detectare obstaco le
40
Componenta de bază a robotului o constituie placa microcontrolerului pe care
este prezent microcontrolerul Atmel ATMEGA8-16PI împreună cu difer ite circuite
auxiliare de interfață cu diferite medii printre care enumerăm ci rcuitul integrat L293D
cu rol de punte H ce îndeplinește rolul de amplificare al semnalului de l a pinii
microcontrolerului și acționare de putere a motoarelor de curent continuu și circuitul
integrat TL499 care are rol de stabilizator de tensiune. Pe lângă aceasta ma i avem
două motoare de curent continuu doi senzori de contact un senzor infraroșu Sharp și
alte componente mecanice care utilizează ca mediu de programare limbajul C.
Figura9-Vedere laterală minirobot
Minirobot mobil cu senzori pentru detectare obstaco le
41
Robotul este conceput pe două roți motrice din plastic cu membrană de cauc iuc
iar pe șasiu se mai găsește 2 sfere cu rol de echilbrare .Este ali mentat cu 4 baterii de
1.5 volți tip AA. Pentru a înnobila partea electronică robotul a fost dotat cu s enzori
infraroșii pentru urmărire o linie neagră, 2 contactori pentru atins obst acole si evitarea
lor ,un senzor de temperatura pentru determinarea temperaturii obiect elor cu care vine
in contact, un afișor cU cristale lichide pentru scriere diferite me saje si un senzor
infrarosu Sharp care ocolește obstacole si care deasemenea poate det ermina distanța
până la un anumit obiect. Robotul poate fii manipulat cu ajutorul unei te lecomenzi IR
prin intermediul unui receiver IR.
Minirobot mobil cu senzori pentru detectare obstaco le
42
Figura 9- Planul general al plăcii microcontrolerului.
3.2 Placa miniribotului.
• Principalul microcontrolor este de tip AVR pe 8 biți de la Atmel; AT mega8.
Con ține multe trăsături caractersitice microcontrolorului modern cum a r fii:
Convertizorul Analog Digital(ADC) pe 10 biti, programul Flash de memor ie 8Kb cu
10000 cilcluri ștergere-scriere, Data EEPROM de 512 bytes si RAM 512 bytes .
• Frecvența internă a ceasului de 16MHz.
• 5 Porturi Intrare/Ieșire pe 3 pini cu 5 canale programabile.Acestea se poate
intrebuin□a ca port digital de intrare, port digital de ieșire și port a nalog de
intrare.Alimentarea se face la o tensiune normal de 5V
Con ține un port pentru conectarea Receptorului Infraroșu cu frecven ța de
38KHz.Acesta este desemnat să participe cu Semnalul Serial de pri mire(RxD) către
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.
Minirobot mobil cu senzori pentru detectare obstaco le
43
• Circuit integrat pentru a menține o tensiune constanta de 5 volți atunci când
motoarele funcționează.
• Se mai găsesc de asemenea grafuri(rezistențe care au rol de a limita t recerea
curentului și condensatori care înmagazinează curent și apoi îl descarcă)
Minirobot mobil cu senzori pentru detectare obstaco le
44
Figura 10- Schema electrică a plăcii de bază a minirobotului
Minirobot mobil cu senzori pentru detectare obstaco le
45
3.2.1 Descrierea funcționării plăcii de baza a minirobotului
Piesa principală o constituie microcontrolorul ATmega8. Functionează l a o
frecvență de 16MHz din crytal care este conectat la pinii PB6 și PB7.
Toate porturile pot fii programabile pentru intrare/ieșire a nalogă sau
digitală.Semnalele analoge din porturile PC0 -PC4 trec prin Convertorul Ana log
Digital . Rezoluția conversiei este de 10 biți.
Porturile PB3,PB4 și PB5 sunt porturi Programare In Sistem.
Pinul PC6/Reset este conectat cu comutatorul RESET pentru restart area
operațiilor microcontrolorului de catre utilizator.
Pinul PD0/RxD este receptor serial.Participă cu conectorul IRM(Sen zorul
Infraroșu) și portul de comunicare pe 5 pini Serial.
Pinul PD1/TxD transmite serial.Participă la activarea LED5(eti chetat IND2) și
a pinului TxD
Pentru LED4(IND1) este conectat direct la PC5 cu rezistor de limitare a
curentului
Placa de baza a minirobotului conține și 2 comutatoare conectate la PD2 și PD3
activând un rezistor de 4.7kΩ care seteaza nivelul logic”High” într-o oper ație normală
și schimbă la nivelul logic “Low” sau “0” cand este apăsat comutatorul.
Pinul PD4 este conectat la un Piezo difuzor de capacitate 10 µF.
De asemenea pe placă se mai găsește dispozitivul DC circuit m otor current
continu.Dispzitivul IC este L2932D H-Punte. Un dispozitiv circuit motor cur ent
continu necesită 3 pini semnal pentru funcționare.A( pinii PD6 și PD0) și B ( pinii
PD7 și PD5) sunt intrări pentru aplicarea semnalului și selectarea s ensului de rotație a
motorului. E(pinii PB1 și PB2) sunt folosiți pentru activarea și dezacti varea
funcționării circuitului dispozitiv.Prin aplicarea semnalului PWM la acești pini se
Minirobot mobil cu senzori pentru detectare obstaco le
46
poate controla și viteza motorului.Daca semnalul PWM(Pulse Width Modulatio n) are
lărgime înseamna ca nivelul”high” a fost trimis către ieșirea motorului .
Circuitul de alimentare este de tip întrerupător.TL499A are funcția d e
stabilizator pentru alimentarea circuitului microcontrolerului la o te nsiune de +5V.
La ieșirea L2932D, un led bi-color este conectat pentru a indica polul
voltajului.Culoarea verde înseamna înainte,culoarea roșu înseamna înapoi.
3.2.2 Microcontrolerele AVR
Față de microprocesor, microcontrolerul are integrat pe același chip oscilatorul,
memoria program, o memorie RAM, numărătoare, interfețe de comunicație și
porturi de
intrare ieșire. De asemenea în structura unor microcontrolere mai sunt i ntegrate
blocuri
analogice cum ar fi : convertoare analog numerice de 8, 10 sau 12 biți,
comparatoare
analogice, modulatoare PWM, etc.
Tipurile mai noi de microcontrolere au integrata în structura și o memori e
EEPROM
necesară pentru memorarea setărilor sau parametrilor aplicaț iei la căderea
tensiunii de
alimentare.
La fel ca și microprocesoarele, unele tipuri de microcontrolere pot adresa o
memorie
Minirobot mobil cu senzori pentru detectare obstaco le
47
program și o memorie RAM, externe. Datorita prețului redus de cost și
simplității de utilizare,
au cunoscut o dezvoltare spectaculoasă microcontrolere cu memorie f lash
(memorie
EEPROM). Memoria poate fi ștearsă și înscrisă de mai mult de 1000 de or i,
număr suficient
de mare pentru punerea la punct a oricărei aplicații. prețul unui m icrocontroler cu
memorie flash incorporată este de câțiva dolari, în funcție de caracteristi ci și de gradul
de complexitate.
Același microcontroler înscris cu un program de aplicație, se poat e vinde cu un
preț de
la 2 până la 100 de ori mai mare. pe piața de componente electronice exi stă o
diversitate
foarte mare de familii de microcontrolere. Firmele producătoare de
microcontrolere au în
producție zeci de variante de microcontrolere cu o gamă variată de caract eristici.
Una din cele mai cunoscute familii de microcontrolere este seria ’5 1 a firmei
Intel.
Această familie de microcontrolere este produsă de mai multe fi rme (Intel,
Siemens, Philips,
Atmel, MHS etc.) care, pornind de la o structura de baza, au creat o variet ate
foarte mare de tipuri de microcontrolere.
Primul tip de microcontroler din seria ‘51 apărut pe piață a fost micro controlerul
Minirobot mobil cu senzori pentru detectare obstaco le
48
I8048. Acest microcontroler este folosit pentru comunicația 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 comput er).
Spre deosebire de microcontrolerele cu un set complex de instrucț iuni de t ip CISC
(complex instruction set computer), microcontrolerele cu arhitectur a RISC au un set
redus de instrucțiuni care, însă, în cele mai multe cazuri, se execută în tr-un singur
ciclu de ceas.
Pentru microcontrolerele RISC memoria program este organizată pe 12, 14 sau
16 biți.
Codul de program este citit intr-un singur ciclu de ceas iar procesarea
informațiilor se face paralel. Marea majoritate a microcontroler elor RISC au
posibilitatea de înscriere a
programului de aplicație direct în circuit. Înscrierea în circuit ISP (în system
programming) se face pe interfața serie SPI.
Dintre familiile de microcontrolere cu arhitectura RISC amintim ser ia
demicrocontrolere PIC micro ale firmei Microchip (PIC 12C508, PIC 12C509, PI C
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. Arhitec tura
Minirobot mobil cu senzori pentru detectare obstaco le
49
acestor microcontrolere a fost elaborată în colaborare cu experți în l imbajul C,
rezultând un produs ce are un set eficient de instrucț iuni, care permite scrierea unor
programe de aplicație performante, cu un cod optim.
Majoritatea instrucțiunilor implementate în microcontrolerele AVR se execută
într-o
singură perioadă de ceas. La aceeași frecvență de lucru, microcontrolerele AVR
au o viteză de lucru de peste 10 ori mai mare față de microcontrolerele c u structura
clasică din seria ’51, la care o instrucțiune se execută în 12 perioade de c eas.
Un alt avantaj al microcontrolerelor din seria AVR este acela că au im plementat
un set
de 32 de regiștrii de lucru cu funcție de acumulator, față de unul singur în cazul
celorlalte
microcontrolere. Toate microcontrolerele din seria AVR au implementa t un
numărător
watchdog și majoritatea au funcția ISP pentru programare în circuit.
3.2.3 Microcontrolerul Atmel ATmega8
ATmega8 este un microcontroller CMOS low-power pe 8 biti, bazat p e
arhitectura AVR RISC. Prin executarea unor instructiuni puternice într-un s ingur
moment de tact, ATmega8 ajunge la performanța de 1 MIPS pe MHz permițându -i
desingnerului de sistem să optimizeze consumul de putere contra vitezei de procesare.
ATmega8 are urmatoarele caracteristici :
• microcontroller low-power pe 8 biți, bazat pe arhitectura AVR R ISC.
• 8K biți de Flash Programmable In-System cu capacitate citire i n timpul
scrierii.Este folosită pentru memorarea unui program scris. Pentru că memoria ce este
Minirobot mobil cu senzori pentru detectare obstaco le
50
făcută în tehnologia FLASH poate fi programată și ștearsă mai mult decât odată,
aceasta face microcontrolerul potrivit pentru dezvoltarea de compone ntă
• 512 biti de EEPROM-memorie de date ce trebuie sa fie salvate când 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 te mperatură.Dacă în
timpul întreruperii alimentării această dată se pierde, v-a tre bui sa facem ajustarea încă
o dată la revenirea alimentării.Astfel componenta pierde în privința a uto-menținerii;
• 1K bit de SRAM-memorie de date folosită de un program în timpul executării
sale.În SRAM sunt înmagazinate toate rezultatele intermediare sau da tele 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 por tul
D care sunt conexiuni fizice între microcontroler și lumea de afară.
Minirobot mobil cu senzori pentru detectare obstaco le
51
Figura 11-Microcontrolerul ATmega8
• 2 Cronometre/Numaratoare pe 8 biți flexibile cu moduri de comparare ,
intreruperi interne si externe,
• Cronometru/numărător pe 16 biți cu moduri comparare ,moduri capatare
întreruperi interne și externe;
• Cronometru timp real cu oscilator separat;
• 3 Canale PWM;
• 6 Canale ADC cu acuratețe de 10 biți;
• USART serial-programabil,
• Interfata Seriala, AdC cu 6 canale ( 8 canale in TQFP si pachete MLF ) cu
acuratețe 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 întreru pere să
funcționeze. Modul Power-down salvează conținutul registrelor dar ingheață
oscilatorul, făcând incapabile orice alte functii ale cip-ului pâna la urmatoarea
întrerupere sau resetare de hard. În modul Power-save numărătorul asincron cont inuă
să functioneze, fapt ce permite utilizatorului sa mentină o bază în timp ce restul
dispozitivului este in repaus. Modul ADC Noise Reduction oprește Unitate a centrală
si toate modulele de I/O cu exceptia numărătorului asincron si ADC-ul, pent ru a
minimaliza zgomotul de comutație din timpul conversiei ADC.În modul St andby
functioneaza doar oscilatorul in timp ce restul dispozitivului este in repa us.
Minirobot mobil cu senzori pentru detectare obstaco le
52
Dispozitivul este fabricat folosind tehnologia de memorie volatile cu de nsitate
mare Atmel. Memoria flash poate fi reprogramata folosind o interfata seriala SPI ,
printr-un program de memorie conventional nonvolatile.Programul boot poate f olosii
orice interfața pentru a descarca programul de aplicatii din m emoria de aplicații flash.
Softul din sectiunea de boot flash va continua sa ruleze in timp ce aplicatiile flash sunt
updatate furnizând operații reale de citire în timpul scrierii. Com binând o unitate
centrala RISC pe 8 biti cu flash self programmable in sistem, pe u n cip monolithic ,
Atmel ATmega8 devine un microcontroler puternic care furnizeaza solutii ext reme de
flexibile si optime ca preț pentru multe aplicatii.
ATmega8 AVR este dotat cu un set complet de programe si instructiuni ce i nclud
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 literatur a despre
calculatoare, si are nevoie sa fie explicat aici mai in detaliu. Arhit ectura Harvard este
un concept mai nou decat von-Neumann. S-a nascut din nevoia de mărire a vitezei
microcontrolerului. În arhitectura Harvard, bus-ul de date și bus-ul de a drese sunt
separate. Astfel este posibil un mare debit de date prin unitatea de procesare centrală,
si bineînteles, o viteza mai mare de lucru. Separarea programului de memoria de date
Minirobot mobil cu senzori pentru detectare obstaco le
53
face posibil ca mai departe instrucțiunile să nu trebuiască sa fie cuvinte de 8 biti.
ATmega8 foloseste 14 biti pentru instructiuni ceea ce permite ca toat e instructiunile sa
fie instructiuni dintr-un singur cuvant. Este de asemenea tipic pentru arhite ctura
Harvard sa aiba mai putine instructiuni decat von-Newmann si sa aiba i nstructiuni
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 “microcontrole re CISC”.
Titlul CISC inseamna Complex Instruction Set Computer.
Pentru ca ATmega8 este un microcontroler RISC, aceasta inseamna ca a re un
set redus de instructiuni, mai precis 35 de instructiuni (de ex. microcontroler ele
INTEL si Motorola au peste 100 de instructiuni). Toate aceste instructi uni sunt
executate intr-un ciclu cu exceptia instructiunilor jump si branch. Confor m 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 biți cu rezistoare i nterne,
selectate pentru fiecare bit.
Port C(PC5… PC0) este un bidirectional I/O pe 7 biți cu rezistoare interne
selectate pentru fiecare bit. Ieșirea portului C are caracte ristici simetrice .
PC6/RESET
Dacă conținutul 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 inte rne selectate
pentru fiecare bit. Dacă conținutul RSTDISBL-ului este neprogaramat, PC6 e ste
Minirobot mobil cu senzori pentru detectare obstaco le
54
folosit ca o resetare a ieșirilor. Un nivel scăzut pe acest pin pentr u o lungime minimă
de puls va genera o resetare, chiar daca ceasul nu este funcționabil.Pulsuri m ai mici nu
garantează o resetare
Minirobot mobil cu senzori pentru detectare obstaco le
55
Nume Număr pin Tip Descriere
PB0
ICP1 14 Intrare/Ieșire
Intrare Port Digital
PB0
Intrare Captare
1
PB1
OC1A 15
Intrare/Ieșire
Ieșire Port Digital
PB1
Ieșire
Comparare/PWM 1A
PB2
OC1B
SS 16
Intrare/Ieșire
Ieșire
Intrare Port Digital
PB0
Ieșire
Comparare/PWM 1B
Intrare
secundară pentru SPI
și ISP
PB3
OC2
MOSI 17 Intrare/Ieșire
Ieșire
Intrare/Ieșire Port Digital
PB3
Ieșire
Comparare/PWM 2B
Intrare date în
mod Slave între busul
SPI și ISP
Ieșire date în
mod Slave între busul
SPI și ISP
PB4
MISO 18 Intrare/Ieșire
Intrare/Ieșire Port Digital
PB4
Intrare date în
mod Master între
busul SPI și ISP
Ieșire date în
mod Slave între busul
SPI și ISP
Minirobot mobil cu senzori pentru detectare obstaco le
56
Nume Numărul
pinului Tipul Descriere
PC0
ADC0 23 Intrare/Ieșir
e
Intrare Port PC0
Intrare analog canal 0
PC1
ADC1 24 Intrare/Ieșir
e
Intrare Port PC1
Intrare analog canal 1
PC2
ADC0 25 Intrare/Ieșir
e
Intrare Port PC2
Intrare analog canal 2
PC3
ADC3 26 Intrare/Ieșir
e
Intrare Port PC3
Intrare analog canal 3
PC4
ADC4
SDA 27 Intrare/Ieșir
e
Intrare
Intrare/Ieșir
e
Port PC4
Intrare analog canal 3
Interfață serială
bidirectională
PC5
ADC3 28 Intrare/Ieșir
e Port PC5
Intrare analog canal 4
Minirobot mobil cu senzori pentru detectare obstaco le
57
SCL Intrare
Ieșire Ieșire serială pe 2 fire
PC6
RESE
T 1 Intrare/Ieșir
e
Intrare Port PC6
Resetare
.
Nume Numărul
pinului Tipul Descriere
PD0
RxD 2 Intrare/Ieșir
e
Intrare PD0 port digital
USARTprimește
intrare
PD1
TxD 3
Intrare/Ieșir
e
Ieșire PD1 port digital
USARTtransmite
ieșire
PD2
INT0 4 Intrare/Ieșir
e PD2 port digital
Întrerupe extern
Minirobot mobil cu senzori pentru detectare obstaco le
58
Ieșire canal 0
PD3
INT1 5 Intrare/Ieșir
e
Ieșire PD3 port digital
Întrerupe extern
canal 1
PD4
XCK
T0 6 Intrare/Ieșir
e
Intrare/Ieșir
e
Intrare PD4 port digital
Ceas extern USART
Intrare externă
Timer 0
PD5 11 Intrare/Ieșir
e
Intrare PD5 port digital
Intrare externă
Timer 1
PD6
AIN0 12 Intrare/Ieșir
e
Intrare PD6 port digital
Intrare canal 2
comparator analog
PD7
AIN1 13 Intrare/Ieșir
e
Intrare PD6 port digital
Intrare canal 1
comparator analog
Num
e Număru
l pinului Tipul Descriere
Minirobot mobil cu senzori pentru detectare obstaco le
59
Vcc 7 Intrar
e Alimentare tensiune între 4.5 și 5.5 V
GND 8,22 Intrar
e Masa
Avcc 20 Intrar
e Alimentare tensiune 5Vpentru CAN
ARE
F 21 Intrar
e Tensiune intrare de referința pentru
CAN
Minirobot mobil cu senzori pentru detectare obstaco le
60
Figura 13-Diagrama bloc a microcontrolerului
Oscilatorul
Minirobot mobil cu senzori pentru detectare obstaco le
61
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 funcție de
frecvența
quarțului (uzual 33-100pF). Pentru a fi utilizată la comanda altor blocuri
electronice din
sistem ieșirea oscilatorului intern XTAL2 poate fi încărcată cu ma xim 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 Fig 15 – folosire semnal extern
de ceas
Numărătoarele
Microcontrolerul ATmega8 are implementat în structura interna două
numărătoare
de 8 și respectiv și unul de16 biți. Numărătoarele 0 și 1 de 8 biți genereaz ă
întrerupere la depășire, iar numărătorul 1 de 16 biț i generează întrer upere la depășire,
Minirobot mobil cu senzori pentru detectare obstaco le
62
pentru comparare și captură. Ambele numărătoare au câte un circuit de prescalare
(divizare și multiplexare) prin
care se alege sursa semnalului de intrare în numărător. Circuitul de pre scalare
realizează
divizarea ceasului sistemului cu 8, 64, 256 si1024. pentru fiecare numărător se
pot alege
următoarele surse ca semnal de intrare: intrarea conectata la zero, s emnalul de
ceas, cele patru
ieșiri ale blocului de prescalare sau un semnal extern (front crescă tor sau
descrescător).
Schema circuitului de prescalare a numărătoarelor este prezent ata în figura 16.
Figura 16-Circuit de divizare pentru numărătoarele 0 și 1
Minirobot mobil cu senzori pentru detectare obstaco le
63
Numărătorul watchdog
Numărătorul watchdog este pilotat de un oscilator RC separat din struc tura
interna amicrocontrolerului. Frecventa de oscilație este de 1 MHz la tensi unea de
alimentare de 5V și de 350 KHz la o tensiune de alimentare de 3 V. Frecventa
semnalului de intrare în numărătorul watchdog se obține din oscilatorul RC pr in
divizare. Funcționarea numărătorului watchdog este controlata prin registr ul de
control WDTCR (watchdog timer control register)
Interfața USART
Microcontrolerul ATmega8 are implementată în structura internă o inter față
serială asincronă de tip USART. Transmisia pentru această interfa ță se face cu
următoarele caracteristici:
– transmisie pe 8 sau 9 biți
– 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 funcție de setările interfeței seriale USART datele s e 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 recepție avem o singură sursă de întrerupere și anum e cea de
recepție caracter. Recepția se face cu aceleași caracterist ici ca și transmisia.
Datele ce se transmit pe interfață au următoarea structură:
Minirobot mobil cu senzori pentru detectare obstaco le
64
– bit de START
– LSB
– …
– MSB
– (bit 9)
– bit de STOP
Convertorul Analog-Digital folosit pe placa de bază este de 10 biți f iind conectat
la un Multiplexor Analog pe 8 canale ceea ce permite 8 intrări de tensiune.Te nsiunea
de referință poate fii decuplată extern la pinul AREF printr-un cap acitor pentru
eliminare zgomot.
Unitatea de procesare centrală are rolul unui element de conectivitate între
celelalte blocuri ale microcontrolerului. Coordonează lucrul altor blocur i și execută
programul utilizatorului.
Clock-ul /ciclul instrucțiune
Clock-ul sau ceasul este starter-ul principal al microcontrole rului, și este
obținut dintr-o componentă de memorie externă numită "oscilator". Dac ă ar fi să
comparăm un microcontroler cu un ceas de timp, "clock-ul" nostru ar fi un t icăit pe
care l-am auzi de la ceasul de timp. În acest caz, oscilatorul ar putea fi comparat cu
arcul ce este răsucit astfel ca ceasul de timp să meargă. De asemene a, forța folosită
pentru a întoarce ceasul poate fi comparată cu o sursă electrică.
Aplicații
Minirobot mobil cu senzori pentru detectare obstaco le
65
Atmega8-16PI se potrivește perfect în multe folosințe, de la industri ile auto și
aplicațiile de control casnice la instrumentele industriale, senzori la distanță, mânere
electrice de uși și dispozitivele de securitate. Este de asemenea ide al pentru cardurile
smart ca și pentru aparatele alimentate de baterie din cauza consu mului lui mic.
Memoria EEPROM face mai ușoară aplicarea microcontrolerelor la ap arate unde
se cere memorarea permanentă a diferitor parametri (coduri pe ntru transmițătoare,
viteza motorului, frecvențele receptorului, etc.). Costul scăzut, consumu l scăzut,
mânuirea ușoară și flexibilitatea fac Atmega8-16PI aplicabil chiar și în domenii unde
microcontrolerele nu au fost prevăzute înainte (exemple: funcții de timer , înlocuirea
interfeței în sistemele mari, aplicațiile coprocesor, etc.).
Programabilitatea sistemului acestui cip (împreună cu folosirea a doa r 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 producție
pe linie de asamblare, de a înmagazina date de calibrare disponibile doar după testarea
finală, sau poate fi folosit pentru a îmbunătăți programele la produse le finite.
3.2.4. Interfața de comandă a motoarelor de curent continuu.
Partea de acționare a plăcii microcontrolerului constă în circuitul sp ecializat
L293D . Acesta este capabil sa controleze 2 motoare de c.c. în ambele sensur i de
rotație sau un motor pas cu pas. Capsula L293D conține două punți H capabil e 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 circui tului L293D,modul de
conectare fiind reprezentat în figura
Minirobot mobil cu senzori pentru detectare obstaco le
66
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 intrările input1, inp ut2, input3 și
input4 și la cele ouă terminale „chip enable” pentru fiecare punte H.Exi stă și o alta
metodă mai economică din punct de vedere al numărului de pini I/O folosiți de la
microcontroler. Această metodă se bazează pe conectarea intrăril or input1, input2,
input3 și input4 pe un bus de 2 linii de comandă, practic lucru ce se materi alizează
prin conectarea input1 și input4 pe același pin al microcontrolerul ui și input2 cu
input3 similar.
Minirobot mobil cu senzori pentru detectare obstaco le
67
L=O LOGIC, H=1 LOGIC, X NU CONTEAZĂ C,D,Vm=intrările input 1,2 și
enable
Dezavantajele care decurg în urma acestei conexiuni sunt faptul că dubla p unte H
nu va fi la fel de flexibila în comanda motoarelor de c.c. și totodată pierz ându-și
capacitatea de a acționa motoare pas cu pas. În tabelul este arătată configurația
stărilor logice pe intrările punții H și starea motoarelor conecta te la circuit.
Este de remarcat faptul că integratul L293D se alimentează cu două tensi uni (de la
două surse). Partea logică a integratului folosește o alimentare compatibil ă TTL (+5V
pe Vss) iar partea de forță – de alimentare de putere – a motoarelor are intrare separată
Vs. Scopul acestei separări o constituie minimizarea încălzir ii capsulei și are avantajul
ca motoarele pot fi alimentate cu o tensiune de până la 36 de volți. Integra tul este
protejat termic si se oprește alimentarea în cazul unei încălziri excesive.
INTRĂRI FUNC ȚIE
Vm=H C=H,D=L Rotație CW
C=L,D=H Rotație CCW
Vm=L C=D Frânare
dinamică
C=X, D=X Decuplare
motor cu oprire
Minirobot mobil cu senzori pentru detectare obstaco le
68
Figura19-Acționarea motoarelor bifazate
3.2.5 Circuitul integrat TL499A
TL499A este un circuit integrat proiectat pentru a oferi o gama larga de re glaj
reglementate tensiunii de alimentare. Reglementarea de iesire de tens iune poate fi
variat de la 2,9 V la 30 V, printr-o ajustare a doua rezistente externe.In caz ul în care
ac-TL499A este cuplat la linia de putere, printr-un pas în jos transf ormator, el
functioneaza ca o serie de tensiune cc de reglementare de a menține regleme ntate 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 rezistențe, TL499A funcționeaza ca un pas de t recerea
de reglementare în timpul ac-o linie de esec. Reglementate de iesire de t ensiune
reglabila face TL499A utile pentru o gama larga de aplicatii. Furniza rea 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 exploata rea de la -20° C
la 85ș C
Minirobot mobil cu senzori pentru detectare obstaco le
69
Figura 20- Schema circuitului TL499
3.3 Motoarele de curent continuu
În general, sunt similare în construcție cu generatoarele de curent continuu. Ele
pot, de fapt să fie descrise ca generatoare care „funcționează invers”. Câ nd curentul
trece prin rotorul unui motor, este generat un câmp magnetic care gener ează o forță
electromagnetică, și ca rezultat rotorul se rotește. Acțiunea peri ilor colectoare și a
Minirobot mobil cu senzori pentru detectare obstaco le
70
plăcuțelor colectoare este exact aceiași ca la generator. Rotația roto rului induce un
voltaj în bobinajul rotorului. Acest voltaj indus are sens opus voltajului exter ior
aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rez ultat este aproape
egal cu cel indus. Curentul este mic, și viteza motorului va rămâne constantă a tât timp
cât asupra motorului nu acționează nici o sarcină, sau motorul nu efectue ază alt lucru
mecanic decât cel efectuat pentru învârtirea rotorului. Când asupra rot orului se aplică
o sarcină, voltajul va fi redus și un curent mai mare va putea să treacă p rin rotor.
Astfel, motorul este capabil să primească mai mult curent de la su rsa care îl
alimentează, și astfel să efectueze mai mult lucru mecanic.
Deoarece viteza rotației controlează trecerea curentului prin rotor, me canisme
speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. C ând rotorul
se află în repaus, el, efectiv, nu are nici o rezistență, și dacă voltajul norm al este
aplicat, va trece un curent mare, ceea ce ar putea avaria periile c olectoare sau motorul.
Mijloacele obișnuite pentru prevenirea acestor accidente este fol osirea în serie a unei
rezistențe, la început, împreună cu rotorul, pentru a limita curentul pâ nă când motorul
începe să dezvolte un curent suficient. Pe parcurs ce motorul prinde vite ză, rezistența
este redusă treptat, fie manual ori automat.
Viteza cu care un motor cu curent continuu funcționează, depinde de puterea
câmpului magnetic care acționează asupra rotorului, cât și de curentul rot orului. Cu
cât este mai puternic câmpul magnetic, cu atât este mai mică rata rotației necesare să
creeze un curent secundar necesar pentru a contracara curentul aplicat. D in acest
motiv viteza motoarelor cu curent continuu poate fi controlată prin varia ția câmpului
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 următoarele componente:
Rotorul este format din tablă de siliciu cu bobinaj sârmă de cupru cu diame trul Φ
0.1 mm
Minirobot mobil cu senzori pentru detectare obstaco le
71
Statorul este format din tablă de siliciu și este bobinat cu sârmă de c upru cu
diametrul Φ 0.1 mm.Diametrul interior al statorului este de 15.2 mm iar cel ext erior de
20mm
2 lagăre realizate din bronz grafitat.Acestea au rol de sustinere, centr are și
rostogolire a rotorului.
Pinion din plastic fixat pe axa rotorului prin presare.Presarea este datorată
elasticitații plasticului.O a doua montare a pinionului nu mai are rez istența
corespunzătoare și se utilizează altă metodă prin folosirea unor adez ivi.
Figura 21-Motoare de curent continuu
3.4 Senzorul
Acesta a apărut odată cu dezvoltarea microelectronicii, împreună cu alte noțiuni
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 convertește efecte fizi ce în semnale
electrice, ce pot fi prelucrate de instrumente de măsurat sau calcul atoare.
Prin senzor se va înțelege dispozitivul tehnic destinat înzestării mași nilor cu
simțuri. Are rolul determinării unei sau unor proprietăți și în funcție de nivelul de
Minirobot mobil cu senzori pentru detectare obstaco le
72
integrare, poate avea funcții mai simple sau mai complexe după cum este arătat în
figura de mai jos
Figura 22-Principiul de funcționare al unui senzor
3.4.1 Structuri ale sistemelor senzoriale
Senzorul cuprinde traductorul/traductoarele pentru transformarea mări mii de
intrare într-un semnal electric util, dar și circuite pentru adaptar ea și conversia
semnalelor și eventual, pentru prelucrarea și evaluarea informați ilor. Senzorul care
include și unitățile micromecanice și microelectronice de prelucr are, realizate prin
integrare pe scară largă (LSI) sau foarte largă (VLSI), se întâlne ște în literatura de
specialitate și sub denumirile de "sistem senzorial" sau "senz or inteligent" (smart-
sensor). Producerea senzorilor inteligenți este facilitată de dezvoltare a tehnicii
microsistemelor, care permite integrarea în volume extrem de mici atât a
traductoarelor de diferite tipuri, cât și a micromecanicii și micr oelectronicii de
prelucrare.
Gruparea senzorilor după acțiunea robotului cu mediul înconjurător :
Senzorii interni ( intero-receptori), care servesc la obținerea unor i nformații
legate de funcționarea robotului, cum ar fi poziția relativă a elemente lor cuplelor
Minirobot mobil cu senzori pentru detectare obstaco le
73
cinematice, vitezele și accelerațiile liniare și unghiulare, def ormațiile elementelor
lanțului cinematic ș.a.
Figura 23-Tipuri de senzori
Senzori externi (denumiți de unii autori și extero-receptori), utiliza ți pentru
culegerea unor informații asupra mediului înconjurător și asupra inter acțiunii
robot/mediu; servesc la identificarea prezențe și stabilirea ti pului, poziției, orientării,
culorii sau a altor proprietăți ale obiectelor din mediu, la identific area unor obstacole,
la determinarea forțelor de interacțiune robot/mediu.
Un criteriu care poate permite clasificarea senzorilor externi este cel referitor la
contactul cu obiectele din mediu . Un senzor care măsoară pozițiile/ deplasările în
cuplele cinematice este un senzor intern, un senzor de investigare, care bal eiază
mediul înconjurător pe principiul radarului, este un senzor extern fără cont act, un
senzor tactil este un senzor extern cu contact direct, iar un senzor de forță/ moment
este un senzor extern cu contact indirect, întrucât forțele de interacțiune cu mediul nu
Minirobot mobil cu senzori pentru detectare obstaco le
74
sunt exercitate direct asupra senzorului, ci sunt resimțite de acest a prin propagarea lor
de-a lungul unor elemente intermediare.
Senzorii fără contact pot servi la recunoașterea obiectelor, a poziț ie și orientării
lor și la controlul calității. Senzorii de proximitate sunt senzori de zonă foarte
apropiată; ei furnizează informații despre existența obiectelor ș i sunt montați pe
efectorul final sau în apropierea acestuia. Senzorii optici sunt senzor i de zonă
apropiată, iar cei de investigare de zonă îndepărtată.
3.4.2 Senzorii folosiți în echiparea minirobotului
3.4.2.1 Senzorul infraroșu Sharp GP2D120
Un senzor special folosit pentru evitarea obstacolelor este senzorul infraroșu
Sharp GP2D120 care prezintă urmatoarele caracteristici tehnice:
• Folosește principiul de reflexie al luminii infraroșii pentru măs urarea distanței,
• Raza de acțiune este intre 4 și 30 de cm.
• Alimentarea se face la o tensiune de 4,5 pâna la 5 V și o intensitate de 33 mA.
• Tensiunea de ieșire 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
ieșire(Vout) și necesită un conector JST de 3 pini.
Modul de funcționare
Principiul care stă la baza acestei metode de masurare folosit e de senzorul
Sharp se bazează pe formarea unui triunghi între Emițătorul de rază infr aroșie, punctul
de reflexie și detectorul de infraroșu. Astfel, emitatorul emite un puls de lum ina
infrarosie. Lumina străbate campul vizual și fie lovește un obstacol s au continuă
Minirobot mobil cu senzori pentru detectare obstaco le
75
deplasarea. În cazul inexistenței unui obstacol, lumina nu va fi reflectat ă și nu se va
detecta nici un obiect. Dacă lumina se reflectă de pe un obiect, se va î ntoarce la
detector și va creea un triunghi între emițător, punctul de reflexie și eet ector, ca în
figura urmatoare:
Prin conexiunea senzorului infraroșu cu convertizorul Analog/Digital rezultã
datele analogice care sunt convertite în distanțe corecte cu ajutorul softului de
programare.Astfel pentru o valoare de 307 corespunde o distanța de 8 cm.
R = (2933 / (V + 20)) – 1
R=distanța in cm.
V=datele anlogice din conversia analog/digitală.Intervalul este intre 0 și 1,023
Minirobot mobil cu senzori pentru detectare obstaco le
76
Figura25-Modul de funcționare al senzorului Sharp
Minirobot mobil cu senzori pentru detectare obstaco le
77
Tabelul cu valori ale senzorului infrarosu
Minirobot mobil cu senzori pentru detectare obstaco le
78
3.4.2.2 Reflectorul infraroșu
Figura26-Reflectorul infraroșu vedere și schemă circuit
Inima acestui circuit este senzorul care detectează reflecții lle de la lumina
infraroșie.Este format dintr-un LED Infraroșu ce emite lumină infraroș ie pe
suprafață.Foto-tranzistorii vor primi lumina infraroșie reflect ată.Dacă nu se reflectă
lumină infraroșie, terminalul OUT are voltaj scăzut la măsurare.În cazul primirii de
lumină infraroșie trece curent prin fototranzistori în funcție de intensi tatea luminii care
variază în funcție de distanța de reflexie.Senzorul TCRT 5000 poate fii folosi t pentru
o distanță de 0.1-1.5 cm.La o tensiune de ieșire de 0.5-5V datele de ieșire vari ază
între 30 și 1023.Este folosit pentru a detecta culoarea suprafeței(albă sau
neagră).Astfel pentru suprafața albă valoarea este între 600 și 950 ia r pentru suprafața
neagră valoarea este între 100 și 300.
Minirobot mobil cu senzori pentru detectare obstaco le
79
Valoarea de referință pentru a detecta linia este (600+100)/2= 350
3.4.2.3 Receiver infraroșu ZX-IRM
În transmiterea semnalelor prin lumină infraroșie pentru distanț e de 5 10 m
funcționează pe principiul telecomenzii de televizor.Frecvența de emit ere este de 38
kHz, receiverul demodulează semnalul de frecvența și îl trimite ca date ser iale la
microcontroler
Dacă senzorul nu detectează frecvența de 38 kHz cu lumină infraroșie ieșirea
este logic 1,in caz contrar ieșirea e logic 0.
Figura27-Receiver infraroșu vedere și schema circuit
3.4.2.4 Telecomandă cu emisie infraroșu:
Această telecomandă funcționează cu comunicarea serială.Datele transmise
manual de la butoane vor fii modulate la o frecvență de 38kHz.Pentru aceasta tre buie
instalat pe robot receiverul infraroșu.
Caracteristici ale telecomenzii:
• Distanța de operare este între 4 și 8 metri în spațiu deschis
Minirobot mobil cu senzori pentru detectare obstaco le
80
• Are 4 butoane activate de 4 întrerupătoare
• 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 biți de date nici un bit de paritate și un bit de stop.)
Figura 28- A-Poza. B-Vedere a planului telecomenzii C-Schema circuit ului.
3.3.2.5 Afișor 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(biți p e
secundă) cu format data 8N1(8 biți 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.
Minirobot mobil cu senzori pentru detectare obstaco le
81
• Este operațional la o tensiune de alimentare de 5 12 volți.
• Conectorul de interfață are :+5 V tensiune de alimentare(+), intrare se rială a
datelor(S) și masa(G).
Majoritatea caracterelor LCD nu pot fii schimbate deoarece sunt în magazinate în
memoria ROM. Primele 8 simboluri care corespund ASCII 0..7 sunt înmagazinate în
memoria RAM(CGRAM).Ele sunt afișate în mărimea 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 Edwards’s iar cel ălalt este de tip
Scott Edwards’s.
Minirobot mobil cu senzori pentru detectare obstaco le
82
2 Numărul de caractere pe linie.Se poate seta 8 caractere sau 16 ca ractere pe
linie.
3 Rata de transfer a datelor.Se poate seta 9600 biți pe secundă sau 2400 bi ți pe
secundă cu formatul datelor de tip 8N1(8 biți de date nici un bit de paritat e și un bit
de stop).
4 Semnalul de interfață. 2 selecții 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(coefi cient
negativ de temperatură) și acest traductor analog are 2 ieșiri: reacți une pozitivă și
negativă a tensiunii aplicate în funcție de temperatura ambientului.Temp eratura sa
normală de lucru e de 25 0C.
Figura 30-Senzorul de temperatură.
3.3.2.7.Contactorii
Contactorii folosiți la acest robot au următoarea schemă electrică:
Minirobot mobil cu senzori pentru detectare obstaco le
83
Figura 31-Senzorul de contact vedere și schemă circuit
Când contactorul nu este apăsat rezultă ”1” logic în iar cand este apăsat a rată
”0” logic și se aprinde ledul. Acești senzori sunt folosiți pentru detecta rea unor
obstacole.
Minirobot mobil cu senzori pentru detectare obstaco le
84
CAPITOLUL IV
Proiectarea interfețelor de comunicare
Sistemele de calcul pot să comunice în două moduri: paralel și seri al. În modul
paralel, de obicei se utilizează 8 sau mai multe linii (cabluri). Exe mple de utilizare a
comunicației paralele sunt imprimanta sau hard discul. Comunicația p aralelă se
utilizează doar pentru distanțe foarte scurte (câțiva metri). Mot ivul este de fapt că
pentru cablurile lungi, semnalele sunt atenuate și pot apare distorsiu ni. În plus nu este
deloc de neglijat costul cablurilor și problemele ce pot apare la cone xiuni. Avantajul
comunicației paralele este viteza mare de transmisie.
Comunicația serială este utilizată pentru sisteme aflate la mare distanță intre ele.
Comunicația serială utilizează un număr redus de cabluri. În comunicaț ia serială,
datele transmise trebuie serializate la transmisie și deseriali zate la recepție. Pentru
aceasta, la transmisie se utilizează un registru paralel-serie i ar la recepție un registru
serie-paralel.
Registrul paralel-serie este utilizat pentru transformarea u nei date de 8 biți intr-
un șir de biți.
Registrul serie-paralel este utilizat pentru transformarea unui șir de 8 biți intr-un
octet.
Pentru distanțe lungi, comunicația paralelă poate utiliza linia telef onică. În acest
caz
semnalele logice 0 și 1 trebuie transformate în semnale sinusoidale. Ac eastă
conversie este realizată de un dispozitiv numit modem (MODulator/DEModulator ).
Pentru distanțe scurte această conversie nu este necesară. De exemplu, t astatura și
mouse-ul comunică serial
Minirobot mobil cu senzori pentru detectare obstaco le
85
informația către unitatea centrala a PC.
Comunicația serială utilizează două metode:
– sincronă: se transferă blocuri de octeți (caractere)
– asincronă : se transferă câte un octet
Se pot realiza programe pentru realizarea comunicației seriale însă acestea pot fi
lungi. Este indicat ca programatorul să se concentreze asupra problem elor specifice
aplicației și nu asupra unei probleme extrem de generale precum comunicația serială.
Aici intervin și aspectele economice legate de productivitatea munci i. Din acest motiv
producătorii de circuite au realizat circuite ce rezolvă problemele legate de
comunicația serială. Aceste circuite se numesc UART (Universal Asyncronus
Receiver Transmitter).
Figura 31 – Metode de comunicație
Microcontrolerul ATMega8 conține un asemenea modul (UART) înglobat. Din
acest motiv în cele ce urmează ne vom referi doar la comunicația asi ncronă. Dacă
datele pot fi transmise și recepționate simultan, se spune ca avem co municație „full
duplex”
Minirobot mobil cu senzori pentru detectare obstaco le
86
Dacă datele nu pot fi trimise și recepționate simultan, se spune ca a vem
comunicație „half duplex” . Aici termenul „simultan” se refera la fapt ul ca ambele
sisteme pot transmite date în
același moment de timp. O altă situație este cazul în care unul din sist eme este
doar un transmițător celalalt este doar un receptor (comunicație „simpl ex” ). Pentru
comunicația full
duplex sunt necesare două fire (plus firul de masă).
a) Comunicația asincronă
Cele două sisteme, pentru a putea comunica intre ele, trebuie sa resp ecte o serie
de reguli. Trebuie stabilite convenții referitoare la:
– modul de împachetare al datelor;
– numărul de biți ai unui caracter;
– cum se identifica începutul unei date;
– cum se identifica sfârșitul unei date;
– care este durata unui bit.
b) Formatul datelor
Comunicația asincronă este frecvent utilizata pentru transmisia ori entată pe
caracter; comunicația sincronă este utilizata pentru transmisia or ientată pe blocuri de
date. În comunicația asincronă fiecare caracter este încadrat intre bi ți de start și biți de
stop. De fapt totdeauna se folosește un bit de start (0 logic) și de obice i un bit de stop
(1 logic).
În figura de mai jos este reprezentat modul de transmisie al caracte rului ASCII
„A” al cărui cod binar este 0100 0001. Se observa ca transmisia biților se fa ce în
ordinea: START(0) , D0(1), D1(0)… D7(0), STOP(1).
Minirobot mobil cu senzori pentru detectare obstaco le
87
Figura 32 – Transmisia caracterului ASCII „A”
Se transmite mai întâi bitul cel mai puțin semnificativ al octe tului (LSB – D0).
Se observa că de fapt pentru transmisia unui caracter se utilizează 10 biți. Sunt și alte
posibilități de transmisie. De exemplu se poate prevede un bit supl imentar care sa
reprezinte paritatea octetului. Scopul acestui bit suplimentar e ste verificarea păstrării
integrității datelor. De aceea, programatorul trebuie sa cunoască da tele de catalog ale
portului serial și modul lui de programare.
c) Rata de transfer
Rata de transfer reprezintă numărul maxim de biți ce pot fi transmi și intr-o
secundă.
Este dată în bps (biți per second). Alt termen des utilizat pentru b ps este baud
rate. Cei doi termeni nu sunt identici. Termenul baud rate este prelua t din terminologia
modemurilor unde este definit ca numărul de schimbări pe secundă ale unui sem nal.
Sunt situații când o singură modificare a semnalului conduce la transferul m ai multor
biți de date. Totuși și dacă nu se utilizează modemul se pot utiliza ambi i termeni. Rata
de transfer depinde de portul de comunicație al sistemului. De exemplu, pent ru PC-
urile mai vechi rata de transfer de date este 100… 9600 bps. Noile PC-uri s uporta o
rata maximă de transfer de 115.2 Kbps.
d) Standardul RS232
Pentru a permite compatibilitatea echipamentelor realizate de diferiți producători,
s-a adoptat standardul numit RS232 realizat de EIA (Electronics Indust ries
Minirobot mobil cu senzori pentru detectare obstaco le
88
Association) în 1960, modificat apoi mai tâ rziu în mai multe rânduri. Sta ndardul
actual RS232C adoptat în 1969 este utilizat de PC-uri și de numeroase alte
echipamente. Deoarece standardul a fost adoptat înainte de apariția fami liei logice
TTL, standardul nu este compatibil cu nivelele TTL. Nivelul 1 logic este r eprezentat
de o tensiune electrică cuprinsa intre -3 și -25V iar nivelul logic 0 est e reprezentat de o
tensiune electrica cuprinsa intre +3 și +25V, zona situata intre -3V și 3V fiind
nedefinită.
e) Pinii interfeței seriale RS232 Tabelul 9
Figura33-conectorul DB-9
f) Semnalele de control (handshaking)
Pentru a se realiza rapid și sigur comunicația intre două echipamente, tr ebuie ca
transferul de date să țină cont de unele situații specifice. De exemplu se poate
întâmpla ca unul din echipamente să nu mai poată primi date datorită fa ptului că nu
mai are unde să le depună. Într-un asemenea caz el trebuie să informeze
transmițătorul că trebuie să aștepte. Se definesc următoarele semna le de control mai
des utilizate:
– DTR (data terminal ready). După alimentarea terminalului și după c e trece prin
Minirobot mobil cu senzori pentru detectare obstaco le
89
rutinele de inițializare, el trimite semnalul DTR ce indică faptul ca este gata pentru
comunicație. Semnalul este de intrare pentru modem (DCE).
– DSR (data set ready). Este un semnal emis de DCE (modem) ce indică că es te
gata să primească date de la DTE.
– RTS (request to send). Este un semnal prin care DTE informează DCE ca p oate
să transmită o dată.
– CTS (clear to send). Este un semnal de răspuns pentru semnalul RTS prin c are
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ă ca lculatorul
are doar port USB,poate fii folosit un convertor USB la Serial.UCON-232S es te
recomandat in această situa□ie.
• Programarea microcontrolorului se face prin cablu ISP.Suportă citir ea scrierea
ștergerea și protejarea datelor.
Minirobot mobil cu senzori pentru detectare obstaco le
90
Figura 34-Cablul PX-400
• Necesită o tensiune de alimentare de 5V de pe placa microcontrolorul ui.
• Este operabil cu softul AVR Prog. Acest soft este inclus in AVR Studi o fiind
compatibil deasemenea cu softul Avr-Osp II.
4.2 Interfața SPI
Interfața serie SPI (serial peripheral interface) este o inter față sincronă, de
mare viteză, pentru transferul datelor între un microcontroler AVR și un dispozitiv
periferic sau între două microcontrolere AVR.
Transferul pe interfața SPI se face cu următoarele caracteristi ci: transfer full
duplex (pe trei fire), operare master slave, transfer cu primul b it LSB sau MSB, patru
viteze de transfer, semnalizare sfârșit de transmisie și activare din modul de consum
redus. Scrierea datelor în registrul de date al dispozitivului master va ge nera activarea
generatorului de ceas și data va fi transferata bit cu bit pe linia M OSI, prin intermediul
registrului de deplasare.
4.3 Cabluri de transfer a datelor
Rolul cablurilor de semnal este de a conecta placa de bază cu diferiț i senzori și
cu calculatorul.Cablul ISP este folosit pentru programarea microcontr olorului, cabluri
PCB3AA-8 pentru interconectarea cu senzori și un cablu port serial pent ru conexiunea
dintre calculator si placa de baza la conectorul ISP.
Minirobot mobil cu senzori pentru detectare obstaco le
91
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 distribuție al firelor este
arătat in schema de mai jos
`
Figura 35-Modul de conectare al cablului ISP
4.3.2 Cablul JST3AA-8
Minirobot mobil cu senzori pentru detectare obstaco le
92
Este un cablul standard de la INEX cu lungimea de 20 cm folosit pentru
conexiunea dintre senzori și placa microcontrolerului.Așezarea firelo r este arătată î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
Semnificatia/Functia
R
XD Receive Data – receptie date
Minirobot mobil cu senzori pentru detectare obstaco le
93
T
XD Transmit Data – transmisie date
G
ND Masa digitală
D
TR Data Terminal Ready – terminal
pregătit pentru transmisie
Este folosit pentru conexiunea dintre portul serial al calculatorului RS -232 și
dispozitivele externe cum ar fii placa microcontrolorului.Un capăt de c onector este
de tipul DB-9 feminin iar celalalt de tip RJ-11 6P4C(6 pini și 4 contacte).A re o
lungime de 1.5 metri iar schema lui este arătată în figura de miai sus.
Minirobot mobil cu senzori pentru detectare obstaco le
94
CAPITOLUL V
PROGRAMAREA ROBOTULUI
Microcontrolerul care echipează robotul, ATMEL ATmega8-16PI face par te din
generațiile recente ale producătorului american și suportă programar ea pe o platformă
standardizată pentru microcontrolerele AVR RISC pe 8 biți, folosin d limbajul de
programare C. Ca soft enumerăm AVR Studio pentru programarea micr ocontrolerului
și un compilator CAVR 1 AVR Studio:program de simulare, soft dezvoltat de
Corporația Atmel.Acest soft ruleaza sub Microsoft Windows95 și Micr osoft Windows
NT.Windows XP SP2 este recomandat acum.Fișierul compilat este de tip HEX și este
coborît în memoria plãcii de bazã cu ajutorul cutiei de programare PX-400.
2 CAVR este un compilator pentru C.
Bibliotecile sunt fișiere suport care permit programatorului o mai ușoară
integrare in limbajul de programare C
Softul programator:Acest soft este folosit pentru downloadarea fișierului
compilat HEX.Acesta este AVRProg și este o componentă în AVR Studio
5.1 Instalarea AVR Studio
Minirobot mobil cu senzori pentru detectare obstaco le
95
Primul program care se instalează este AVR Studio aplicație l ivrată de către
producător.Pentru a contiua instalarea trebuie acceptați termenii de licență impuși de
producator.
Figura38-Instalare AVR Studio
După instalarea și deschiderea programului va apare fereastra pr incipală AVR
Studio care arată precum în figura de mai jos.În stânga sus se găsește fi șierele și
librăriile care sunt apelate în programul construit în C. În fereastra principală este
scris programul C, iar dedesubt se află fereastra de execuție care a rată starea
proceselor care includ rezultatul compilat precum și erorile de comp ilație a fișierului
HEX precum și alte mesaje de avertizare.Deasupra se află bar a de meniuri. Pașii 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
Minirobot mobil cu senzori pentru detectare obstaco le
96
• Convertirea codului de asamblare în fișier format HEX
• Downloadarea codului în memoria program a microcontrolerului
• Rularea programului de catre microcontroler.
De asemenea este necesar ca după instalarea softului fișerele libră rie să fie
copiate separat într-un dosar pentru a fii apelate mai apoi de progr am.
Figura 39-Bara de meniuri a programului AVR Studio
5.2 Crearea programului C în AVR Studio
Minirobot mobil cu senzori pentru detectare obstaco le
97
Din Project se selectează Configuration Options unde la iconul General se
determină următoarele date astfel: dispozitiv atmega8 și frecvența de 16000000 Hz
Figura 40-Modificare în opțiunile proiectului.
Pentru apelarea librăriilor se selectează iconul Include Directori es și se
accesează folderul în care sunt localizate.
Minirobot mobil cu senzori pentru detectare obstaco le
98
Figura 41-Alegerea fișierelor header
În căsuța Available Link Objects se selectează itemul lim.a care apare la fereastra
Link with These Objects.Se apasă butonul OK pentru terminare
Minirobot mobil cu senzori pentru detectare obstaco le
99
Figura 42-Adăugarea de librării
Se scrie programul în fereastra principală și se compilează l a menu Build
opțiunea Build sau se apasă tasta F7.Dacă programul conține erori ne va ap ărea
fereastra BUILD OUTPUT care conține numărul de erori și avertisme nte.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
Minirobot mobil cu senzori pentru detectare obstaco le
100
Figura 44-Alegerea debug-ului
Fișierul care inițial era format .gcc se compilează în format hex.Ace st fișier
conține codul convertit din C în cel al robotului hex.Este introdus ulterior în memori a
microcontroler-ului prin apăsarea butonului Program
Figura 45-Programarea microcontrolerului.
Minirobot mobil cu senzori pentru detectare obstaco le
101
Programarea microcontrolerului folosind limbajul de programare C
Limbajul C este folosit în programarea roboților alături de alte li mbaje precum
Pascal,Basic,LISP etc.
Comenzile în C sunt executate de către microcontroler pas cu pas de l a
începutul programului până la sfârșit iar la sfârșitul fiecărei i nstrucțiunii se
poziționează“;”.
Cuvinte rezervate pentru limbaj: Tabel 11
Auto Defaul
t Float Long Sizeo
f Case Typedef
Brea
k Do For Registe
r Static Doubl
e While
d
Goto Return Struct Void Char Else Continu
e
Short Switc
h Volatil
e Const Enu
m Int Extern
Tipuri de date folosite în limbajul C pentru programarea robotului care se
încadrează în următoarele valori:
Tabel 13
Tabel 12
Tip Valori
Char -128…+127
unsigned 0…255
Minirobot mobil cu senzori pentru detectare obstaco le
102
char
Int -32768…+32767
unsigned int 0…+4294967295
float Orice număr real
long 2-31 ….2 31 -1
Minirobot mobil cu senzori pentru detectare obstaco le
103
Sistemul numeric în C
1 Numere zecimale
2 Numere binare de tip 0Bbbbbb. B
ia valori de 0 sau 1
De exemplu numărul binar
0b10010010=146
Modul de calcul:( 27)+ 🙁 26)+ 25)+ ( 24)+ 23)+ 22)+
(21)+(0 20)=146 10;
3 Numere hexazecimale de forma 0 FF=255
Modul de calcul:(15 16 1)+ :(15 16 0)=255 10 ; 0 FF=0b1111111 ca număr
binar.
Set comenzi robot
Ver 1.0
Operator Explicație
== Comparație pentru “egalitate”
!= Comparație pentru “diferit”
< Comparație pentru “mai puțin”
> Comparație pentru “mai mult”
<= Comparație pentru “mai puțin
sau egal”
>= Comparație pentru “mai mult
sau egal”
! NU
&& ȘI
| | SAU
Minirobot mobil cu senzori pentru detectare obstaco le
104
Figura 40-Fereastra Ctrl-robot
Minirobot mobil cu senzori pentru detectare obstaco le
105
Elemente constituente
– Motor stânga, dreapta;
– Convertor analog digital (ADC);
– Buzzer;
– Comunicație 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 octeților:
– cmd – identificator comanda ( intervalul 0:127 = 0x00:0x7F);
– camp0…campn – date mesaj, particularizate pentru fiecare com anda în
parte;
– sum_ct – suma control, xor la toti octeții recepționati în comanda
curentă.
Decalarea între mesaje se face în funcție de timpul dintre caracter e. Astfel dacă
timp de 5 ms nu am primit nici un caracter nou consider transmisia termina tă.
Raspunsul trimis de placa v-a fi trimis la intervalul de 7 ms de la rec eptia
ultimului caracter, (2ms) de la declararea receptiei.
Răspunsul 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
Minirobot mobil cu senzori pentru detectare obstaco le
106
atasate comenzii sunt în afara domeniului de acoperire). Erorile se sem nalizează prin
codul comenzii căreia i se face face sau (or) cu o masca 0x80. Astfel eroare a comenzii
0x01, va avea valoarea 0x01 | 0x80 = 0x81.
Forma raspunsului pentru comenzile respinse:
<cmd | 0x80><reason>
Unde reason:
1 – Comanda neimplementata
2 – Parametrii in afara limitelor
Comenzi terminal
Seteaza directie/viteza motoare (0x01)
Comanda:
0x0
1 sens_m
t pwr_mt_
1 pwr_mt_
2
1
byte 1 byte 1 byte 1 byte
sens_mt – Sensul de rotire al motorului 1 si 2 .
pwr_mt_
1 – 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:
Minirobot mobil cu senzori pentru detectare obstaco le
107
mt_1 mt_2 x x x x
Bi
t 7 Bi
t 6 Bi
t 5 Bi
t 4 Bi
t 3 Bi
t 2 Bi
t 1 Bit
0
Semnificatie mt_1/ mt_2:
bi
t b
1 b
2
0 0 Motor oprit
0 1 Sens rotire fata
1 0 Sens rotire inapoi
1 1 Rezervat –
nefolosit
Raspuns:
Raspuns corect : 0x02
Comada buzzer (0x02)
Comanda:
0x0
2 buzz_tm_
H buzz_tm_
L
1
byte 1 byte 1 byte
Comanda porneste buzzerul si trimite nr de mesaj cât timp buzzeru l v-a funcționa
incepand de la momentul recepționarii comenzii.
buzz_tm_H:buzz_tm_L reprezinta timpul de functionare buzzer exp rimat in ms.
Durata ia valori intre 1 si 2500ms
Raspuns:
Minirobot mobil cu senzori pentru detectare obstaco le
108
Citire canale analogice (0x03)
Comanda:
0x03
1 byte
Comanda este formată doar din codul comenzii , fără parametrii
Raspuns:
Răspunsul cuprinde patru câmpuri de date cu valorile citite de la cele 4 canale ale
ADC-ului. Câmpurile adc_0, adc_1, adc_2, adc_3 iau valori în interval ul 0:255,
corespunzător tensiunilor masurate 0:Vref.
0x03 adc_
0 adc_1 adc_2 adc_3
1
byte 1
byte 1 byte 1 byte 1 byte
Identificare dispozitiv (0x7F)
Comanda:
0x7F
1 byte
Răspuns:
0x0
3 ID_de
v Ver_
X Ver_
Y
1
byte 1 byte 1 byte 1 byte
ID_dev – identificator dispozitiv 0xAA.
Versinea curentă program controller Ver X.Y .
Minirobot mobil cu senzori pentru detectare obstaco le
109
Programul comandă robotul de la tastaură prin cablul serial cu un conec tor RS-
232 la calculator și un conector pentru interfața serială la celălalt capăt.iar prin
apăsare switch 1se schimba comanda…robotul citind datele digitale de la senzorul
infraroșu 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_2B time_main;
void main(void)
Minirobot mobil cu senzori pentru detectare obstaco le
110
{
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();
Minirobot mobil cu senzori pentru detectare obstaco le
111
} 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"
Minirobot mobil cu senzori pentru detectare obstaco le
112
void init_analogic(void)
{
// ––– hardware layer ––––
ADMUX = 0x40; // referinta externa cu condensator la Aref,ADCL-
full ADCH-2biti, mux ADC0
// ADCSRA = 0x9D; // activez ADC, +(1<<ADIE) activez intrerupere a,frecv
ADC = Xtal/32
// MCUCR = 0x10; // DAC noise reduction
ADCSRA = 0x97; // activez ADCS,frecv ADC = Xtal/32
MCUCR = 0x00; // 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 disponibil e
astfel programul citeste asincron val ADC-ului
* ************************************************************ */
Minirobot mobil cu senzori pentru detectare obstaco le
113
void analogic_task(void)
{ unsigned int adc_read_val; //
unsigned char sum_idx; //
if(!(ADCSRA & 0x40)) // sunt in
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;
sum_idx = adc_filter_idx; // indexul folosit pentru a face suma
citirilor pt canalul curent
adc_read_val = 0; // 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);
Minirobot mobil cu senzori pentru detectare obstaco le
114
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; // schimb canalul ADC
ADCSRA |= 0x40; // 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; // trec in zero portul
DDRD.4 = 1; // trec portul pe iesire
}
Minirobot mobil cu senzori pentru detectare obstaco le
115
void start_buzz(unsigned int time)
{
stop_watch2B_set(&buzz_task_desc.time, time); // timpul de sta rt
buzz_task_desc.state = BZ_ON;
}
/* ************************************************************ *
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-u n intreg
if(buzz_time <=2500)
{// start_buzz(buzz_time);
stop_watch2B_set(&buzz_task_desc.time, buzz_time); // timp ul de start
buzz_task_desc.state = BZ_ON;
return TRUE; // buzzer pornit cu succes
}
return FALSE;
}
void buzz_task(void)
Minirobot mobil cu senzori pentru detectare obstaco le
116
{
if( buzz_task_desc.state == BZ_ON)
{ if(stop_watch2B_tst(&buzz_task_desc.time) == TRUE)
{ buzz_task_desc.state = BZ_OFF;
}
} else
if( buzz_task_desc.state == BZ_OFF)
{ // ma asigut ca buzz nu este alimentat
PORTD.4 = 0; // chiar daca are condensator, in cazul
curent
}
}
#include "mega8.h"
#include "compiller_specific.h"
#define GLOBAL_IN_OUT
#include "in_out.h"
void init_in_out()
{
DDRD &= ~0x0C; // trec portul D corespunzator tastelor pe intrar e
DDRC |= 0x20; // trec ledul pe iesire
PORTD &= ~0x0C; // pull-up-urile sunt oprite
PORTC &= ~0x20; // ma asigur ca ledul este stins, in prima faza
}
void in_out_task()
{ unsigned char input_temp;
Minirobot mobil cu senzori pentru detectare obstaco le
117
input_old = input;
input = ~((PIND & 0x06)>>2);
// => tasta 2 apasata bitul b0 == 1
// tasta 3 apasata bitul b1 == 1
input_temp = input ^ input_old; // observ variatiile intre sta rea curenta
si cea trecuta
if(input_temp)
{ // daca au avut loc variatii
input_up |= (input_temp & input); // starea curenta a bitil or este 1, si
au avut loc variatii
input_dn |= (input_temp & (~input)); // starea curenta a biti lor este 0, si
au avut loc variatii
}
}
#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";
Minirobot mobil cu senzori pentru detectare obstaco le
118
static stop_watch_2B time_send_msg; // static aloc variabila pe toata
durata rularii programului
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 ma i trimit
mesaj pe seriala
}
void test_LCD()
{
unsigned long analogic_val;
if(stop_watch2B_tst(&time_send_msg) == TRUE) // periodic
la 1 sec
{ stop_watch2B_set(&time_send_msg, 300);
TX0_buff_count_end = 0;
TX0Buffer[TX0_buff_count_end++] = 254;
Minirobot mobil cu senzori pentru detectare obstaco le
119
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;
Minirobot mobil cu senzori pentru detectare obstaco le
120
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; // TX int (la TSR liber)
}
}
#include "mega8.h"
#include "platform_specific.h"
#define INTERN_MOTOR
#define GLOBAL_MOTOR
#include "motor.h"
#define MOTOR_INITIAL 100
Minirobot mobil cu senzori pentru detectare obstaco le
121
/* ************************************************************ *
initializare periferice driver motor
* ************************************************************ */
void init_motor(void)
{
DDRB |= 0x07; // iesirile PWM si setare sens PB0 trecute pe
out
DDRD |= 0xE0; // setare sens PD5:PD7 trecute pe out
// WGM13:WGM10 = 0x05; – Fast PWM, 8-bit
// COM1A1:COM1A0, COM1B1:COM1B0 = 0x00 – dezactivare
canal pwm
// = 0x02 – canal
pwm activ
// CS12:CS10 = 0x05 – prescaler 1024
// Fpwm = Fosc/(2*N*TOP) = 19.14Hz => Tpwm = 0.0522s
TCCR1A = 0xA0 | 0x01; // COM1A1,COM1B1, WGM10
TCCR1B = 0x08 | 0x05; // WGM12, CS11, CS10 // prescaller
1024
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; // sterg fanion intrerupere TOV1
TIMSK |= 0x04; // activare int timer1 TOIE1
Minirobot mobil cu senzori pentru detectare obstaco le
122
}
/* ************************************************************ *
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)
Minirobot mobil cu senzori pentru detectare obstaco le
123
{
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++);
Minirobot mobil cu senzori pentru detectare obstaco le
124
TIMSK &= ~0x04; // dezactivare int timer1 TOIE1, atata
timp cat modific parametrii de functionare
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
Minirobot mobil cu senzori pentru detectare obstaco le
125
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
Minirobot mobil cu senzori pentru detectare obstaco le
126
/* ************************************************************ *
initializare comunicatie seriala
* ************************************************************ */
void init_serial()
{
UBRRH = (unsigned char) ((XTAL/(16*BAUD)-1)>>8);
UBRRL = (unsigned char) (XTAL/(16*BAUD)-1);
UCSRA = 0x00; // nu prea are sens initializarea asta
UCSRC = 0b10000110; // asyncron, parity disable, 1 bit stop,
8 biti
UCSRB = 0b10011000; // RX_int-en, RX-en, TX-en
RX0_buff_count = 0;
TX0_buff_count = 0;
RX_TX_time = SER_TIME_SEND_MSG; // evit
preluarea unui msg fals la initializare
bTX0_send = bFALSE;
bRX0_done = bFALSE;
bTX0_start = bFALSE;
}
// –––––––––––––––– ––––
// intreruperi comunicatie seriala
// –––––––––––––––– ––––
interrupt [USART_RXC] void RX_handle(void) // RX
Minirobot mobil cu senzori pentru detectare obstaco le
127
{ 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) // TX
USART_TXC
{ UDR = TX0Buffer[TX0_buff_count];
TX0_buff_count++;
if(TX0_buff_count == TX0_buff_count_end)
{ UCSRB &= ~(1<<5); // disable int, nu mai incarc cu date
bTX0_send = bFALSE; // pot sa compun un alt mesaj
TX0_buff_count = 0;
}
}
/* ************************************************************ *
task comunicatie seriala
* ************************************************************ */
void serial_task()
{
if(bRX0_done == bTRUE)
{ bRX0_done = bFALSE;
switch ( RX0Buffer[0] )
{ case SET_MOTORS:
Minirobot mobil cu senzori pentru detectare obstaco le
128
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 )
Minirobot mobil cu senzori pentru detectare obstaco le
129
{ 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;
Minirobot mobil cu senzori pentru detectare obstaco le
130
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;
Minirobot mobil cu senzori pentru detectare obstaco le
131
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 trim ite
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
* ************************************************************ */
Minirobot mobil cu senzori pentru detectare obstaco le
132
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++);
Minirobot mobil cu senzori pentru detectare obstaco le
133
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
Minirobot mobil cu senzori pentru detectare obstaco le
134
TCCR2 = 0x0C; // CTC, no ports, prescaler 64 – WGM21, CS22
OCR2 = 250; // XATL/64/250 = 1000 -> 1ms
TIMSK = 0x80; // intrerupere cand avem match regs
}
// –––––––––––––––– ––––
// intrerupere timer 2
// –––––––––––––––– ––––
interrupt [TIM2_COMP] void timer_2 (void) // 1 ms
{
timer_val ++;
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
Minirobot mobil cu senzori pentru detectare obstaco le
135
bTX0_start = bTRUE;
}
}
// –––––- end seriala –––––––- –––
}
/* ************************************************************ *
timpul de asteptat se seteaza la initializare timer
* ************************************************************ */
/* ************************************************************ *
incarc momentul de inceput cronometrare si timpul dorit pt cronometr are
* ************************************************************ */
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();
Minirobot mobil cu senzori pentru detectare obstaco le
136
timer_val_bk = timer_val;
TMR1_INT_EN();
if(time_struct->time_length < (unsigned int)(timer_val_bk – time_s truct-
>time_start))
return TRUE;
return FALSE;
}
Programul compilat în AVR Studio pentru detectarea și ocolirea obst acolelor
folosind senzorul infraroșu este arătat mai jos.Robotul se deplasează i ar dacă senzorul
infraroșu detectează un obstacol la o distanța de 8 cm se întoarce la dre apta și continuă
drumul. Programul sursă este urmatorul:
include <stdlib.h>
// *Pentru convertire tipuri de date *//
#include <motor.h>
// *Controlul motoarelor*//
#include <sleep.h>
//* Pentru întârziere*//
#include <sound.h>
//*Pentru semnal sonor*//
#include <analog.h> //
//* Convertor analog-digital*//
void main()
//*Program principal*//
{
Minirobot mobil cu senzori pentru detectare obstaco le
137
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)); }
// *Citește datele de la GP2D12 de 5 ori*//
sensor=(sensor/5);
/*Se face media aritmetică a distanțelor*//
if (sensor>260)
// * Condiție ca distanța să nu fie mai mare de 10 cm ?
{
backward(50);sleep(800);
// *Schimbarea direcției *//
s_left(50);sleep(600);
}
else
Minirobot mobil cu senzori pentru detectare obstaco le
138
{
forward(50);
//* Merge înainte*//
}
}
}
BIBLIOGRAFIE
1. Gheorghe I Gheorghe, Valentin Pau, Doru Dumitru Palade, Mecatronica,
Editura Cefin, București, 2002.
2.Mircea Nițulescu,[1998], Roboți mobili, Editura SITECH Craiova.
3. Philippe Coiffet, La robotique, Principes et aplicațions.Editura Her mes
Paris,1986.
Minirobot mobil cu senzori pentru detectare obstaco le
139
3. V. Valcovici, Ștefan Bălan, R Voinea, Mecanica teoretică, Editura Tehnică
București,1986.
4. Gâlmeanu, C., Contribuții la sinteza roboților mobili cu 3 grade de mobili tate,
Teză de doctorat, UPB, 2000.
5 .Mihăiță Ardeleanu, Roboți industriali mobili, Curs.
6.Valerica Cimpoca,Aparatura optoelectronică, Curs.
7.Catalog pentru componente optoelectronice,Băneasa SA,Bucureșt 2000.
8.Inițiere în limbajul C, Damian Costea.
9.Vasile M. Catunenu, Tehnologie electronică, Editura Didactică și pedagogică ,
București 1981
10.Lucian Ciobanu,Elemente de proiectare a sistemelor flexibile de f abricație și a
roboților industriali, Editura BIT,Iași 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 fața ochilor mei de www.google.com
16 Note de curs și laboratoare.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Minirobot mobil cu senzori pentru detectare obstaco le [619900] (ID: 619900)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
