Vehicul Autonom Care Detecteaza Si Mentine Distanta Prin Urmarire
Proiect de diplomă
Vehicul autonom care detecteazǎ și
menține distanța prin urmărire
Prefață
Revoluția informatică a marcat saltul de la societatea industrializată la societatea avansat informatizată (societatea informațională), generând un val de înnoiri în tehnologie și în educație.
Dezvoltarea electronicii s-a făcut în pași rapizi începând din anul 1957, anul apariției tranzistorului, aproape la fiecare un an și jumătate s-a dublat numărul de componente pe o placheta de siliciu, ajungând azi la zeci de milioane de tranzistori. In contextul acestei dezvoltări spectaculoase se înscrie și domeniul microcontrolerelor (calculatorul intr-un singur chip).
Utilizarea microcontrolerelor în aplicații, la fel ca și utilizarea microprocesoarelor și calculatoarelor de proces, permite înlocuirea componentelor hard (electrice și mecanice) cu componente soft.
Ori de câte ori se proiectează un sistem trebuie să se aibă în vedere, ca obiectiv major, înlocuirea, pe cât posibil a componentelor mecanice și electrice cu, componente electronice ce au înglobate componente soft (inteligență artificială).
Domeniile de aplicare a platformelor mobile se lărgesc mereu, ele putând fi utilizate în industrie, transporturi și agricultură, în sfera serviciilor, în cunoasterea oceanului și a spațiului cosmic, în cercetarea științifică etc. [27]
Prezenta lucrare își propune sǎ-și focalizeze atenția asupra modului de proiectare și realizare a unei platforme mobile cu microcontroler AVR RISC, asupra modului de realizare a programului și programării precum și a acționării diferitelor componente electronice incluse in platforma mobilă.
Doresc să mulțumesc pe această cale domnului profesor Marius ZBANCIOC care m-a îndrumat, ghidat și sfătuit în soluționarea problemelor care s-au ivit pe parcursul realizării proiectului, dar și în alegerea corectă a informațiilor necesare implementării acestuia.
Cuprins
Prefata
Cuprins
Capitolul 1 – Introducere
Prezentarea generalǎ a aplicației
Motivarea alegerii temei
Dezvoltarea ulterioară a proiectului
Scurt istoric al microcontrolerelor si evoluția în timp a acestora
Structura generalǎ a unui microcontroller
Exemple ale utilizǎrii de microcontrolere în domeniul ecolocației
Alte aplicații
Capitolul 2 – Elemente de arhitecturǎ pentru microcontrolerele ATMEL
2.1 Memoria – organizarea memoriei de date
2.2 Registrele de uz general
2.2.1 Registrul de stare (SREG)
2.2.2 Execuția instrucțiunilor
2.2.3 Setul de instrucțiuni
2.3 Unitatea centrală de prelucrare (UCP)
2.4 Sistemul I/O
2.4.1 Porturile de intrare/ieșire
2.5 Unitǎțile timer/numǎrǎtor
2.6 Module PWM
2.8 Module de comunicații seriale
2.8.1 Modulul serial asincron
2.8.2 Modulul serial sincron
2.9 Module A/D și D/A
2.10 Comparatorul analogic
2.11 Timerul watchdog
2.12 Modurile de operare cu consum redus
Capitolul 3 – Proiectare si implementare hardware
Interfațarea cu microcontrolerul
3.2 Mǎsurarea distanței folosind senzorul IR Sharp GP2Y0A21YK
3.2.1 Mod de funcționare:
3.2.2 Prezentare hardware
3.2.3 Mǎsurarea distanței prin metoda triunghiurilor (triunghiularizarea):
3.2.4 Neliniaritatea ieșirii senzorului:
3.2.5 Mǎsurǎtori test
3.3 Comanda motoarelor
3.3.1 Comanda motoarelor de curent continuu
3.3.2 Comanda motoarelor pas cu pas
3.3.3 Traductori de poziție și circuite driver
3.3.4 Exemplu de modul pentru comanda motoarelor în microcontrolere specializate
3.3.5 Driver-ul de comandǎ utilizat
3.4 Stabilizatorul de tensiune LM7805
Capitolul 4 – Proiectare și implementare software
4.1 Proiectarea algoritmului de funcționare
4.2 Logica programului și explicarea liniilor de cod
Concluzie
Bibliografie
Anexe
Capitolul 1
Prezentarea generalǎ a aplicației
Proiectul își propune să realizeze un sistem inteligent de detectare și urmǎrire a unui obiect aflat în raza de acțiune cu ajutorul unui sensor infraroșu și a unui servomotor, comandat cu microcontroler AVR RISC ATMega 2560 având motoare de curent continuu comandate PWM. Unul dintre punctele importante este sistemul decizional implementat software și algoritmul de luare a deciziilor, cât și comanda senzorului si al servomotorului fara de care platforma mobilǎ nu și-ar indeplini sarcinile.
Schema bloc ce prezintă funcționarea platformei mobile este prezentată în figura urmǎtoare:
Montajul conține microcontroler-ul al cărui rol este de a achiziționa semnalele date de senzorul infraroșu, ele fiind prelucrate în timp real și pe baza lor se va lua o decizie legată de poziția viitoare a vehiculului în funcție și de poziția servomotorului. Microcontroler-ul ATMega 2560 are un numǎr de 86 pini care pot fi setați atât ca intrări cît și ca ieșiri. Senzorul infraroșu folosit este SHARP GP2Y0A02YK, avȃnd urmǎtoarele caracteristici tehnice:
Folosește principiul de reflexie al luminii infraroșii pentru măsurarea distanței;
Raza de acțiune este între 20 și 150 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.
Interfața sa prezintǎ 3 fire: alimentarea (Vcc), masa (GND) și tensiunea de ieșire (Vout) și necesită un conector JST de 3 pini. Unghiul maxim al radiației în infraroșu al emițătorului este de 150, astfel pentru evitarea oricărei posibile interferențe între senzori (în cazul în care se adaugǎ un altul în vederea îmbunǎtǎțirii detecției) , ca rază de acțiune, la un unghi de aproximativ 350. Distanța mentinutǎ pȃnǎ la “obiectul de urmarit” se stabilește inițial, în momentul calibrǎrii.
Comenzile date de microcontroler se transmit la motoare printr-o punte H care asigură totodată și puterea necesară funcționării motoarelor de curent continuu. Schema electrică și simularea punții H duble, cât și cablajul au fost realizate în programele Proteus și Orcad.
Alimentarea montajului se face la 9V, tensiunea stabilă pentru microcontroler este asigurată de stabilizatorul LM7805, iar autovehiculul cu bateriile proprii la 12V (sau transformator pentru a asigura amperajul și o duratǎ de funcționare mai mare a motoarelor).
Toate activitǎțile platformei mobile sunt controlate și dirijate de un (micro)controler. Controler-ul, în general, este folosit pentru a prelua stǎri ale mediului înconjurǎtor și de a comanda mai departe un alt sistem. Începuturile controlerelor îl dau ca fiind de mari dimensiuni, iar dupa apariția microprocesoarelor, reducȃndu-și semnificativ spațiul ocupat. Aceastǎ miniaturizare continuǎ și astǎzi, încercȃndu-se a se implementa cȃt mai multe componente pe un spațiu cȃt mai mic (micrometri, nanometri), numit chip, nascȃndu-se astfel microcontroler-ul, specializat pe operațiile de control. Tipic, un microcontroler conține urmatoarele:
Unitatea centralǎ;
Generatorul de tact (la care trebuie adǎugat din exterior un cristal de cuarț, sau un circuit RC pentru aplicațiile mai putin pretențioase);
Memoria volatilǎ (RAM);
Memoria nevolatilǎ (ROM/EEPROM);
Dispozitive I/O seriale și paralele;
Controler de întreruperi, numǎrǎtoare, timere, convertoare A/D și D/A etc.;
Periferice. [6]
1.2 Motivarea alegerii temei
Avînd în vedere eforturile care se depun pentru micșorarea numărului de accidente rutiere un sistem inteligent de evitare al obstacolelor ar putea fi dezvoltat la scară mare și implementat pe autovehiculele viitorului. Unul din avantajele majore ar fi asistarea șoferului la luarea de decizii în privința evitării coliziunilor cît și pregǎtirea din timp a celorlalte sisteme de protecție aflate pe un autovehicul ca ESP, ASR, întărirea frânelor ș.a.
Fără senzori, roboții nu ar putea executa altceva decât sarcini fixate dinainte, repetând operațiile ce le are de realizat iar și iar, dar dotați cu senzori, roboții au capacitatea de a face mult mai mult decât atât. Domeniul roboților mobili s-a dezvoltat foarte mult în ultimii ani având în prezent aplicații în majoritatea domeniilor de activitate. Spre deosebire de roboții instalați în puncte fixe care pot lucra într-un spațiu limitat, roboții mobili au capacitatea de a opera într-un spațiu ce depășește cu mult dimensiunile sale, astfel nevoia senzorilor de infraroșu în proiectul de față este evidentă.
Există roboți la care traiectoria nu se planifică, este fixă și marcată pe teren. În acest caz ei trebuie să evite numai obstacole interpuse accidental pe traseul marcat și să prelucreze informația de navigație realizând astfel urmărirea traiectoriei fixate. Acești roboți mobili nu sunt inteligenți, dar sunt deosebit de utili pentru asigurarea transportului în atelierele flexibile ale producției.
Roboții care își planifică singuri traiectoria de mișcare sunt dotați cu funcții de decizie și încadrați în clasa roboților inteligenți. În sistemele bazate pe robot, principala caracteristică este implementarea pe robot a cât mai multor funcții pentru a determina un comportament autonom.
Un algoritm mai simplu de evitare al obstacolelor ar putea fi implementat în toate jucăriile motorizate pentru copii, asigurând astfel protecție impotriva lovirii accidentale de obiecte dure și implicit o durată de viațǎ mult mai mare a lor. Totodată un astfel de sistem mai poate fi folosit și în domeniul militar, în domeniul spionajului, și în misiuni de recunoaștere, pe un teren care nu este mapat, nefiind cunoscut un traseu sigur. Un sistem de mai mulți astfel de ˝roboți¨ interconectați ar reduce mult riscul de accidente și crește eficiența în munca de cercetare a terenului în domeniul militar și nu numai.
1.3 Dezvoltarea ulterioară a proiectului
Prin intermediul unei telecomenzi și a unui sistem de interfațare cu microcontrolerul, vehiculul se poate dirija de la distanță, din interiorul unor camere de comandă și control, micșorând, chiar eliminând, riscul producerii de accidente, sistemul de decizie fiind determinat de un algoritm ce poate asista operatorul și îi poate interzice unele comenzi care ar crea pagube. O îmbunǎtățire ar putea fi memorarea pozițiilor obstacolelor și crearea unor hărți care să ne dea mai multe detalii despre așezarea obiectelor, fie ele de dimensiuni mari sau mici, în spațiul în care se aflǎ vehiculul. De asemenea citirea distanței efective pâna la obstacol cu senzorii infraroșu ar ajuta mult în orientarea vehiculului, și transmiterea acestor date către un utilizator printr-un sistem de transmisie wireless care nu ar limita autonomia completă a sistemului.
1.4 Scurt istoric al microcontrolerelor si evoluția în timp a acestora
Dupǎ cum ne-au obișnuit în implicarea dezvoltǎrii tehnologiei, era firesc ca japonezii sǎ fie prezenți și sǎ aibǎ un rol important în proiectarea microprocesorului, și ulterior al microcontrolerului. În anul 1969, o echipǎ de ingineri japonezi de la compania BUSICOM sosesc în Statele Unite la invitația fǎcutǎ de Intel cu scopul de a înlocui unele componente integrate cu proiectele fǎcute de ei. Soluționarea acestei probleme a însemnat funcționarea circuitului integrat determinat de un program memorat în el. Dupǎ un timp, dupǎ mai multe soluții încercate, a luat naștere primul microprocesor numit 4004 de 4 biți cu o vitezǎ de 6000 de operații pe secundǎ, Intel obținȃnd drepturile de a vinde blocul integral abia în 1971, deoarece au cumpǎrat licența de la compania BUSICOM, aceștia neavȃnd idee ce comoarǎ vȃnd. Vǎzȃnd cǎ au un real succes și cǎ microprocesoarele își fac simțitǎ prezența, cei de la Intel au progresat, iar în aprilie 1972 a ieșit pe piațǎ primul microprocesor de 8 biți numit 8008. Putea sǎ adreseze 16 Kb de memorie și avea 45 de instrucțiuni și o vitezǎ de 300.000 de operații pe secundǎ, acesta fiind predecesorul tuturor microprocesoarelor de astǎzi. Dezvoltǎrile au continuat, iar în anul 1974 au lansat microprocesorul 8080 pe 8 biți ce avea 64 Kb memorie și 75 de instrucțiuni, cu prețul începȃnd de la 360$.
Dȃndu-și seama de ce se întȃmplǎ, companii mari precum Motorolanor hărți care să ne dea mai multe detalii despre așezarea obiectelor, fie ele de dimensiuni mari sau mici, în spațiul în care se aflǎ vehiculul. De asemenea citirea distanței efective pâna la obstacol cu senzorii infraroșu ar ajuta mult în orientarea vehiculului, și transmiterea acestor date către un utilizator printr-un sistem de transmisie wireless care nu ar limita autonomia completă a sistemului.
1.4 Scurt istoric al microcontrolerelor si evoluția în timp a acestora
Dupǎ cum ne-au obișnuit în implicarea dezvoltǎrii tehnologiei, era firesc ca japonezii sǎ fie prezenți și sǎ aibǎ un rol important în proiectarea microprocesorului, și ulterior al microcontrolerului. În anul 1969, o echipǎ de ingineri japonezi de la compania BUSICOM sosesc în Statele Unite la invitația fǎcutǎ de Intel cu scopul de a înlocui unele componente integrate cu proiectele fǎcute de ei. Soluționarea acestei probleme a însemnat funcționarea circuitului integrat determinat de un program memorat în el. Dupǎ un timp, dupǎ mai multe soluții încercate, a luat naștere primul microprocesor numit 4004 de 4 biți cu o vitezǎ de 6000 de operații pe secundǎ, Intel obținȃnd drepturile de a vinde blocul integral abia în 1971, deoarece au cumpǎrat licența de la compania BUSICOM, aceștia neavȃnd idee ce comoarǎ vȃnd. Vǎzȃnd cǎ au un real succes și cǎ microprocesoarele își fac simțitǎ prezența, cei de la Intel au progresat, iar în aprilie 1972 a ieșit pe piațǎ primul microprocesor de 8 biți numit 8008. Putea sǎ adreseze 16 Kb de memorie și avea 45 de instrucțiuni și o vitezǎ de 300.000 de operații pe secundǎ, acesta fiind predecesorul tuturor microprocesoarelor de astǎzi. Dezvoltǎrile au continuat, iar în anul 1974 au lansat microprocesorul 8080 pe 8 biți ce avea 64 Kb memorie și 75 de instrucțiuni, cu prețul începȃnd de la 360$.
Dȃndu-și seama de ce se întȃmplǎ, companii mari precum Motorola și MOS Technology au început producerea de microprocesoare, instalȃndu-se astfel competitivitatea pe aceastǎ nișǎ a pieții, scǎzȃnd totodatǎ și prețul de vȃnzare al acestora. În 1976 se înființeaza Zilog Inc., patronatǎ de un fost angajat al Intel, care a contribuit decisiv la producerea primelor microprocesoare, ieșind pe piațǎ cu popularul Z80, fiind foarte puternic la vremea lui deoarece s-a dezvoltat în așa fel încȃt sǎ fie compatibil cu 8080, adǎugȃnd fațǎ de acesta un numǎr mare de registre, 64 Kb memorie, 176 instrucțiuni, o opțiune încorporatǎ pentru reîmprospǎtarea memoriei RAM dinamice, o singurǎ sursǎ și o vitezǎ de lucru mult mai mare. Așadar, microprocesorul 8080 de la Intel și Z80 de la Zilog au stat la baza dezvoltǎrii microprocesoarelor și microcontrolerelor de astǎzi. [7]
Cele mai populare microcontrolere în prezent sunt de la Microchip (PIC) și Atmel. Primul microcontroler de la Microchip (PIC 1650) a apǎrut de mai bine de 20 de ani, de pe vremea cȃnd firma aparținea de General Instruments. În ultimii ani a cunoscut o dezvoltare explozivǎ dȃnd naștere a 6 serii de subfamilii de microcontrolere, și anume: PIC 10, PIC 12, PIC 14, PIC 16, PIC 17 și PIC 18. Au fost primele microcontrolere pe 8 biți cu arhitectura RISC, cu un set de doar 33 de instrucțiuni, iar ca o particularitate, dimensiunea cuvȃntului pentru program este de 12, 14 sau 16 biți, cuvȃntul de date ramȃnȃnd tot de 8 biți. Pentru cele 6 serii existǎ numeroase variante, caracterizate prin dimensiuni mici și costul redus. Concurentul direct al seriei PIC este familia numitǎ AVR a celor de la Atmel, dezvoltatǎ în ultimii ani, ce oferǎ variante asemǎnǎtoare ca resurse cu familia PIC, performanțele fiind similare sau mai bune. Microcontrolerele din familia ATMEL din seria AVR, în momentul de fața se împart în 3 subfamilii:
AT90Sxxxx, printre primele apǎrute, aflȃndu-se în continuare în producție;
Subfamilia ATmega – acestea sunt microcontrolere AVR avansate, fiind supradotate fatǎ de restul cu autoprogramare, protecția programelor scrise în memoria flash, multiplicator hardware în 2 tacte, etc. Ultimele apǎrute în aceastǎ subfamilie sunt proiectate pe straturi de siliciu mai subtiri și funcționeaza la frecvențe ce depǎșesc 16 Mhz;
Subfamilia ATtiny – acestea sunt destinate aplicațiilor cu complexitate redusǎ. [8]
Datoritǎ cantitǎților mari în care se fabricǎ, prețul unui microcontroler este redus, scǎzȃnd de altfel și costul de proiectare a acestuia. Astfel, evoluția producerii și vȃnzǎrilor de microcontrolere, este prezentatǎ în tabelele ce urmeazǎ:
Evoluția vânzărilor MC în lume (în milioane dolari)
Tabelul 1.1
Graficul pentru Tabelul 1.1
Evoluția vânzărilor MC în lume (în milioane bucăți)
Tabelul 1.2
Graficul pentru Tabelul 1.2
Costul unui microcontroler depinde în mare masurǎ de numǎrul de periferice integrate, astfel încat prețul este direct proporțional și cu costul de fabricație al acestuia. Astǎzi, arhitecturile de microcontrolere variazǎ într-o gamǎ foarte largǎ, de la cipuri cu 6 pini de intrare/iesire și pȃnǎ la procesoare digitale de semnal (DSP) sau procesoare cu arhitecturi ARM. [6]
1.5 Structura generalǎ a unui microcontroler
Putem defini un microcontroler ca fiind un circuit universal care poate înlocui orice circuit integrat digital, avȃnd incorporat o unitate de calcul (microprocesorul) și mai multe periferice ce ajutǎ la îndeplinirea sarcinilor stabilite și încǎrcate de programator.
O structurǎ generalǎ pe care s-au dezvoltat și cele mai sofisticate microcontrolere de astǎzi este prezentatǎ mai jos:
Structura unui microcontroler [10]
Microcontrolerul interacționeazǎ cu mediul înconjurǎtor prin intermediul semnalelor de intrare ce definesc stǎri ale mediului extern, le prelucreaza și raporteazǎ prin semnalele de ieșire. Structura internǎ a unui microcontroler poate fi prezentatǎ ca avȃnd un set de blocuri specializate sau module (comunicare serialǎ, bazǎ de timp etc.) și un nucleu care comunicǎ cu mediul extern prin intermediul acestora. Nucleul preia datele prin intermediul semnalelor de intrare, le prelucreazǎ, apoi reconfigureazǎ blocurile specializate, prin execuția programului încǎrcat în memorie (FLASH – memoria de program ce conține textul programului), furnizȃnd la ieșire comenzile pentru a fi executate. Comanda este decodificatǎ cu ajutorul decodificatorului de comenzi (CDC), descifrȃnd-o și executȃnd-o. În cazul comenzilor ce presupun operații aritmetice sau logice, acesta va selecta una din funcțiile Unitǎții Aritmetico-Logice (ALU – modul destinat operațiilor aritmetice și logice ce conține la intrare Operandul Stȃng, Operandul Drept și intrarea de selecție a funcției) și concomitent va selecta operandul stȃng sau drept din cei 32 de regiștri de uz general (calculele aritmetico – logice se efectueazǎ prin intermediul acestor registri). În cazul unei comenzi de control ce presupune saltul condiționat sau necondiționat, CDC-ul va seta adresa urmǎtoarei comenzi din Program Counter (PC – registru numǎrǎtor destinat pentru selectarea comenzii din memoria programului). În cazut transferurilor de date, tot CDC-ul este intermediarul ce asigurǎ legatura dintre nucleu și periferice. Fiecare microcontroler din anumita serie conține propriul sǎu set de instrucțiuni, informațiile despre acestea regǎsindu-se în datele tehnice. [10]
1.6 Exemple ale utilizǎrii de microcontrolere în domeniul ecolocației
Evoluția tehnologiei într-un ritm alert a dus la crearea unor aplicații din ce în ce mai sofisticate, complete și de o mare necesitate implementate pe dispozitive/aparate electronice fǎrǎ de care ne este greu sǎ ne imaginǎm cǎ am putea trǎi fǎrǎ ele în ziua de azi, unde omul este înlocuit parțial sau în totalitate de acestea, el avȃnd rol doar în supravegere și întreținerea echipamentelor. În peste 90% din echipamentele electronice existǎ un microcontroler ce le comandǎ total, sau doar anumite funcții ale acestora.
Pornind de la vorbele unui profesor universitar: ”Un robot dacǎ nu e programat, este la fel de inteligent ca o piatrǎ”, voi încerca sa arǎt cat de mult au evoluat aplicațiile cu microcontrolere, astǎzi ajungȃnd la un nivel foarte înalt.
Domeniile în care utilizarea microcontrolerelor este practic un standard industrial, se pot menționa: aparatura electrocasnicǎ (aspiratoare, mașini de spǎlat, frigidere, cuptoare microunde, roboți de bucǎtǎrie), electronica uzualǎ de consum (televizoare, camere foto/video, telefoane mobile, jocuri electronice, sisteme audio), industria de automobile (climatizare, sisteme de alarmǎ, controlul aprinderii), medicina (biopac), în controlul mediului și climatizǎrii (sere, locuințe), industria aerospațialǎ (roboți spațiali), în mijloace de mǎsurare – instrumentație (aparate de mǎsurǎ, senzori și traductori inteligenți).
Un prim exemplu, foarte util, în care prezența microcontrolerului a soluționat problema, reprezintǎ navigația roboților mobili ce folosesc sistemul sonar, deoarece oferǎ informații directe la costuri minime. Aceasta constǎ în producerea de unde ultrasonore și recepția ecourilor, asemeni liliacului, proces numit ecolocație. [11]
Liliac emițȃnd unde ultrasonore [11]
Prin compararea pulsurilor emise cu ecourile receptate, care sunt versiuni modificate ale pulsurilor emise, sistemul neuronal al liliecilor produce imagini ale mediului înconjurător. Aceste animale emit sunete de frecvențǎ foarte înaltǎ numite pulsuri de ultrasunete. Principiul ecoului se bazeazǎ pe undele ultrasonice care se izbesc de obstacolul din fatǎ și se întorc la emițǎtor care aflǎ astfel cǎ în fața lui se aflǎ ceva și trebuie sǎ ia o decizie. Receptorii sunt de asemenea, o componentă importantă pentru sistemul de ecolocație. Dimensiunea și forma urechii externe prezintă un rol important în procesul de recepție al ecourilor. Este cunoscut faptul că liliecii folosesc trei parametri, pentru determinarea poziției obiectelor în spațiu: distanță (distanța dintre emițător și „ținta” ce trebuie detectată), unghiul azimut și unghiul elevație. Cele două unghiuri sunt importante pentru că definesc direcția „țintei”. Acest principiu folosit de lilieci a fost preluat și de cǎtre om, care l-a aplicat în construcția unor aparate,numite sonare folosite pentru detecția subacvatica a obiectelor. Cuarțul are proprietatea de a-și modifica volumul la trecerea unui curent electric prin masa acestuia și, invers, generȃnd un curent care exercitǎ asupra sa o presiune exterioarǎ (efectul piezoelectric). Atunci cȃnd îl alimentǎm la un curent de înaltǎ frecvențǎ cristalul vibreazǎ cu acea frecvențǎ luȃnd naștere o undǎ elasticǎ – ultrasunetele. Undele emise prin apǎ lovesc obstacolele, corpuri cu densitǎți diferite de cea a apei, fiind reflectate. Odatǎ reflectate, o parte din acestea ajung din nou la traductor unde sunt tranformate de cristalul de cuartz (receptor) în semnal electric. . Semnalul electric este prelucrat rezultȃnd o imagine electronicǎ, afișata pe display-ul sonarului.
La roboți unul din senzori este microfonul. Acesta este conectat într-un circuit electronic de amplificare și apoi digitizat. Pentru auz stereo se folosesc 2 circuite, semnalele rezultate fiind apoi cuplate la un comparator. De altfel, la un robot se poate determina distanța dintre el și alte obiecte cu ajutorul senzorilor ultrasonici. Acesti senzori mǎsoara timpul care trece de la emiterea undei sonore și pȃnǎ la intoarcerea reflecției. Un alt senzor folosit la roboți este senzorul de radiație IR fiind folosit în detectoarele de mișcare. Are douǎ pǎrți sensibile și detecteazǎ diferențele de radiație dintre ele. Este sensibil la caldura emanatǎ de oameni și animale.
Traductorul emițător poate fi conectat direct la porturile microcontrolerului. Dispozitivul piezo-electric se comportă ca un clopot de biserică atunci când se lovesțe, deoarece rezoneazǎ la frecvența naturală. Un singur impuls aplicat la terminale va seta dispozitivul "sunȃnd" la 40 kHz pentru un număr de cicluri. Receptorul traductor se conecteazǎ împreunǎ cu un circuit de amplificare deoarece este necesar să-l aducă până la un nivel sensibil. O schemă de circuit pentru un sistem cu sonar cu 4 canale este dat în figura urmǎtoare:
Sonar cu 4 canale [12]
Un decodor 74HC138 furnizeazǎ semnal transmițătorului. Semnalele logice Sel Tx0 și Sel Tx1 activeazǎ una din cele 4 unități de traductor posibile. Aceleași semnale conduc și cǎtre multiplexorul CD4052 analog asigurȃndu-se că semnalul de la receptorul de ieșire corespunzător este direcționat înapoi la microcontroler prin intermediul Sonar Rx Out. Emițȃnd un puls cǎtre transmițător presupune doar comutarea Tx de la 0 la 1 și înapoi. Semnalul Rx Sonar Out se conectează la un comparator de intrare a unui microcontroler adecvat, cum este PIC 16F627 sau 16F877. Intrarea de referința la comparator va fi stabilitǎ prin experiment pentru a minimiza recepția ecourilor false cauzate de zgomot.
Este binecunoscut faptul că unul din principalele obstacole în construcția sistemelor robotice de tip sonar autonome este lipsa unor senzori de calitate superioară. Pentru sistemele biosonare care folosesc ecolocația, vorbim de un cap biomimetic cu doi receptori și un emițător. Un cap biomimetic de tip sonar inspirat de modelul liliacului prezintă un emițător și doi receptori. Emițătorul emite un puls și se determină timpul dintre emitere și receptarea ecoului produs de către obiectul sau mediul aflat în regiunea câmpului de scanare. De la început, senzorii ultrasonori au avut un rol extrem de important pentru roboții mobili, datorită comportamentului flexibil în diferite medii. Un senzor trebuie să ofere, într-un timp foarte scurt, informații despre o bună parte a mediului, pentru această categorie de roboți. [13] [14]
O altǎ aplicație foarte utilǎ în studiul mediului greu accesibil, o reprezintǎ platformele mobile subacvatice. Roboții subacvatici au apǎrut și s-au dezvoltat prima oarǎ în SUA. Un minirobot se compune din robotul propriu-zis, un punct de comandǎ aflat la suprafațǎ dotat cu pupitru de control, sursǎ de curent și legatura dintre ele care se face printr-un cablu prin care trec tensiunea de alimentare, semnalele de comandǎ și control cǎtre robot și semnalele de la senzori cǎtre operatorul de la suprafațǎ. Dacǎ recordul de scufundare simulatǎ a fost de 675m în 1981, în prezent roboții subacvatici lucreazǎ la adȃncimi de pȃnǎ la 3000 m îndeplinind diverse misiuni ceea ce demonstreazǎ cǎ tehnologia a devenit eficientǎ și economicǎ.
Un astfel de robot subacvatic construit pentru a studia viata creaturilor marine și fenomenele fizico-chimice din ocean este Tethys.
Robotul subacvatic Tethys [15]
Vehiculele fǎrǎ motor, așa-numitele "glisoare", pot rǎmȃne în apǎ luni în șir și sunt foarte utile pentru studierea proprietǎților fizice, însa sunt lente, iar senzorii lor nu sunt suficient de sensibili pentru a întregistra detalii privind formele de viațǎ.
Vehiculele cu motor, robotizate, sunt rapide și dotate cu senzori sofisticați, însǎ aceștia consumǎ multǎ energie, limitȃnd astfel, timpul pe care dispozitivul robotic îl poate petrece în ocean; de obicei, dupǎ o zi de "muncǎ", robotul trebuie readus la țǎrm sau pe vas pentru realimentare.
Tethys, însǎ, combinǎ avantajele celor doua tipuri de vehicule – viteza roboților motorizați cu autonomia mare a glisoarelor. Prima sa misiune va fi studierea unei înfloriri algale – o inmulțire masivǎ a algelor, cu efecte potențial periculoase asupra mediului marin. Unul dintre cele mai importante avantaje ale utilizǎrii roboților precum Tethys este faptul cǎ datele culese de senzori pot fi recepționate prin satelit, de cǎtre cercetatorii rǎmași la țǎrm, reducȃnd astfel necesitatea cǎlǎtoriilor cu nave de cercetare, mult mai costisitoare.
1.7 Alte aplicații
Un pas important in industria de automobile, la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes S-Classe utiliza 63 de microcontrolere.
Sonda Cassini-Huygens este un robot de ultimǎ generație, a costat 1,4 miliarde dolari, are 6,5 metri lungime, cântarește mai bine de 2 tone și a ajuns, dupǎ un drum de 3,5 miliarde de kilometri pe Saturn unde studiazǎ planeta și sateliții sǎi naturali.
Acest robot spațial are douǎ acțiuni de îndeplinit. Prima dar și cea mai spectaculoasa este plonjonul pe care l-a și început deja printre parțile componente ale marelui inel saturnian. Învelisul de kapton o apǎrǎ pe sondǎ de micrometeoriți dar și de izbiturile bucǎților de gheațǎ și a firișoarelor de praf din care sunt alcatuite subinelele. În cele 76 de rasuciri, Cassini s-a apropiat de Saturn, pentru a studia atmosfera de hidrogen și heliu a giganticei planete.
Sonda Cassini-Huygens asamblatǎ [16]
Ca și sonda Cassini-Huygens un alt robot spațial care studiazǎ varietǎți de roci și tipuri de sol pe planeta Marte este robotul Opportunity. În următoarele două decenii NASA urmează să efectueze misiuni care să clarifice dacă a apărut vreodată viață pe Marte cu ajutorul informațiilor primite de Opportunity.
Robotul spațial Opportunity pe Marte [17]
Uși care se deschid automat, senzori peste tot, lifturi care coboară mașina într-un loc de parcare cu ajutorul unor paleți, scannere laser și locuri așezate într-un mod foarte ordonat. Este vorba despre o parcare proiectată de firma germană WÖHR, care va fi construită în Madrid. Aceasta are 5 nivele, o suprafață de mai mult de 700 de metri pătrați și 155 de locuri de parcare.
Parcare subteranǎ [18]
În lupta pentru apǎrarea naționalǎ fac parte și roboții militari luptǎtori, elemente principale ale cȃmpului de lupta cibernetizat, cu întrebuințare în toate categoriile de forțe și genurile de armǎ. O grupǎ aparte o constituie roboții cu misiuni specifice infanteriei, blindatelor și aparaturii antiaeriene, care pot acționa independent, la comanda senzorilor, dupa programe prestabilite sau integrați în sisteme de armament, în conformitate cu dinamica acțiunilor de luptǎ.
Robot militar [19]
Oamenii de științǎ de la institutul de cercetare din SUA au creat un robot umanoid ce va avea rolul de pompier. Robotul numit SAFFIR a fost creat pentru mai multe misiuni: se deplaseazǎ de-a lungul navelor, interacționeaza cu oamenii și luptǎ împotriva incendiilor, astfel preluȃnd multe din situațiile periculoase în care este expus omul.
Deplasarea lui se efectueazǎ cu ajutorul unor senzori sofisticați printre care o camera video, un senzor de gaz și o camera stereo cu infraroșii, care îi permit sǎ vadǎ prin fum. Robotul va avea capacitatea de a manevra stingǎtoare de incendiu și de a arunca cu grenade care conțin o substanțǎ ce accelereazǎ stingerea focului.
Deoarece va fi folosit pe vasele Marinei SUA, robotul este dotat cu un sistem ce îi permite sǎ își menținǎ echilibrul în cazul unor furtuni pe ocean.
Robot umanoid [20]
Un dispozitiv electronic de mici dimensiuni creat pentru pacienții cu probleme ale miocardului, aritmia (ritm incorect de funcționare a inimii), este stimulatorul cardiac sau pacemaker. Acest dispozitiv se implanteazǎ în pieptul sau abdomenul pacientului.
Ideea de pacemaker a venit prima oara în 1950 din partea inginerului electrician John Hopps care realizȃnd cercetǎri privind hipotermia, a încercat sa recalibereze temperatura corpului uman cu ajutorul radio-frecvenței. El și-a dat seama cǎ dacǎ o inimǎ se oprește din cauza temperaturii scǎzute ea poate fi repornitǎ prin electrostimulare. Așa a ajuns sa inventeze pacemaker-ul.
Dispozitivul a fost testat pe un pacient dar rezultatele au fost dureroase pentru ca invenția a fost alimentatǎ cu energie electricǎ de la o prizǎ de perete și viața utilizatorului a fost pusa în pericol. Un deceniu mai tȃrziu în 1960 inginerul american Wilson Greatbatch a construit accidental un pacemaker intern portabil. Lucrȃnd la un dispozitiv a cǎrui menire era sǎ înregistreze sunetul bǎtǎilor accelerate ale inimii, inginerul a ales în loc de un resistor cu impedanța de 10.000 ohmi, unul de un megaohm. Definitivat și testat, circuitul pulsa pentru 1,8 milisecunde și se oprea vreme de o secundǎ. Era o bǎtaie perfectǎ a inimii.
Pacemaker [21]
Capitolul 2
Elemente de arhitecturǎ pentru microcontrolerele ATMEL
Fațǎ de calculatorul personal care prelucreazǎ informația și o afișeazǎ pe monitor sau pe hartie, microcontrolerul comandǎ un proces. MC nu poate funcționa fǎrǎ programele care se stocheazǎ în memoria proprie. Putem defini MC ca fiind un sistem de calcul pe un singur chip care include urmǎtoarele componente: o unitate centrală, memorie, oscilator pentru tact și dispozitive I/O.
O structură mai detaliată, care include blocurile componente, este reprezentată în figura următoare:
Diagramǎ bloc [22]
Cel mai utilizat limbaj de programare folosit deseori în multe aplicații este limbajul "C". Microcontrolerele AVR sunt rezultatul unei adaptǎri de cǎtre ATMEL la limbajul "C", reprezentȃnd un avantaj fațǎ de celelalte familii de microcontrolere. Acestea dispun de o arhitecturǎ RISC cu 32 de acumulatoare, permit scrierea de cod cu dimensiune redusǎ, executǎ o instrucțiune/tact și sunt de circa 4 pȃnǎ la 12 ori mai rapide decȃt microcontrelerele obișnuite (ca de exemplu Intel 8051, care opereazǎ pe aceeași frecvențǎ). Ca și caracteristici, avem: un consum redus de putere, executând totuși 1 MIPS (Mega Instructions Per Second), frecvențele maxime de ceas acceptate ce sunt de 1 ÷ 4MHz la circuitele ce se alimentează la 2,7V și 8 ÷ 12 MHz la celelalte.
În figura de mai jos este prezentat sugestiv raportul dintre puterea de calcul, exprimată în MIPS și puterea consumată la AVR și la microcontrolere ce divizează ceasul cu 1:4 și 1:12.
MIPS
AVR
1:1
1:4
1:12
Puterea consumata
O regulă importantă în programarea în "C" este folosirea de variabile definite într-o rutină (local), în locul folosirii variabilelor globale declarate pentru întregul program. Variabilele locale vor aloca memorie RAM doar atunci când se execută o rutină specifică în timp ce variabilele globale ocupă memoria RAM în permanență. Sunt necesare o mulțime de registre pentru a utiliza variabilele locale rapid și eficient.
Familia AVR de la Atmel se bazeazǎ pe arhitectura Harvard de 8 biți cu set redus de instrucțiuni (RISC), aceasta fiind conceputǎ de doi studenți de la Norwegian Institute of Technology (NTH), Alf-Egil Bogen și Vegard Wollan, din necesitatea unei procesǎri a datelor mai rapida. Au fost introduse pe piațǎ în 1996, fiind primele controlere ce foloseau memoria Flash pentru program. Aceste microcontrolere sunt destinate aplicațiilor simple, precum: controlul motoarelor, controlului debitului de informație pe portul USB, controlul accesului de la distanțǎ (Remote Access Control), aplicații în domeniul automotive etc.
Specific arhitecturii Harvard, pentru codurile și datele au alocate spațiile de memorie și magistralele separat, permițȃnd astfel un acces concurent. Datoritǎ acestei arhitecturi, instrucțiunile au o lungime de 16 biți, diferitǎ fațǎ de registrele interne care sunt pe 8 biți. Dezavantajul acesteia, constǎ în faptul cǎ magistrala memoriei de date este mai ocupatǎ decat magistrala memoriei de program.
Arhitecturile RISC existente necesită o lungime de cod mai mare decât dacă aceeași funcție s-ar implementa într-o arhitectură CISC (Complex Instruction Set Computer). Fațǎ de arhitectura RISC, arhitectura AVR are un numǎr mare de instructiuni pentru a reduce dimensiunea de cod păstrând viteza mare de execuție.
Instrucțiunile de tip CISC sunt introduse fără a altera performanța RISC și consumul de putere, aceasta fiind prima îmbunǎtǎțire dupa multe analize ale diferitelor arhitecturi și aplicații de cod.A doua îmbunǎtǎțire este optimizarea limbajului de asamblare și a arhitecturii pentru limbajul "C". AVR-ul are 32 de registre de uz general ce sunt conectate direct la Unitatea logică aritmetică (ALU), pe care compilatorul "C" le folosește la maximum pentru a atinge o densitate mare a codului generat.
Arhitectura unui MC definește atributele sistemului așa cum sunt ele văzute de un programator în limbaj de asamblare. Microcontrolerul este format din 5 elemente de bazǎ: unitate de intrare, unitate de memorie, unitate aritmetică și logică, unitate de control și unitate de ieșire. Unitatea de control împreună cu unitatea aritmetică și logică compun împreună unitatea centrală de prelucrare sau UCP.
Blocurile componente ale MC sunt legate între ele printr-o magistrală internă (bus), ea fiind una dintre cele mai importante caracteristici ale MC deoarece stocheazǎ semnale de adresă, de date și semnale de control. Unitatea centrală de prelucrare (UCP) are douǎ roluri aici: prin magistrala de adrese ea selectează o locație de memorie sau un dispozitiv I/O, iar pe magistrala de date se face schimbul de informație între ea și memorie sau dispozitivele I/O. [23] [24]
Magistralele interne, după numele lor, nu sunt accesibile în exterior la nivel de pin. La diferitele tipuri de MC, semnalele magistralelor de adrese și de date sunt accesibile la nivel de pin dar totodată este necesar să fie livrate în exterior și semnale de comandă (O comandă de scriere – WR și comandă de citire – RD). Magistralele de adrese și de date pot fi aduse la pin multiplexat sau nemultiplexat. Urmǎtoarele criterii sunt necesare pentru a aprecia performanța unui MC din punct de vedere al magistralei interne:
dimensiunea magistralei de date;
dimensiunea magistralei de adrese;
accesibilitatea în exterior la magistrale;
magistrale accesibile multiplexat sau nemultiplexat.
2.1 Memoria – organizarea memoriei de date
Specific arhitecturii Harvard procesoarele au memorie de program de tip FLASH integrate. Memoria de date integrate este de douǎ feluri:
de tip RAM pentru variabile și memorie;
de tip EEPROM pentru stocarea constantelor.
Memoria FLASH de program împreunǎ cu blocul de extragere a instrucțiunilor, decodare și execuție comunicǎ printr-o magistralǎ proprie, separatǎ de magistrala de date. Ca și memoria EPROM ȘI EEPROM ea poate fi ștearsǎ și reprogramatǎ în sistemul în care este folositǎ.
Memoria RAM (Random Access Memory) este o memorie volatilă care poate fi citită sau scrisă de unitatea centrală. Deoarece ocupǎ mult loc și costurile sunt mari, de obicei un microcontroler include puțini RAM.
Memoria ROM (Read Only Memory) este cea mai ieftină și cea mai simplă memorie și se folosește la stocarea programelor în faza de fabricație.
Memoria PROM (Programmable Read Only Memory) este memoria ce poate fi programatǎ de cǎtre utilizator. Datoritǎ posibilitǎții de ștergere, o putem grupa în:
Memoria EPROM (Erasable PROM) – poate fi ștearsǎ prin expunerea la raze ultraviolete, deoarece microcontrolerul dotat cu aceastǎ memorie, are un geam de cuarț care permite asta. Numǎrul de ștergeri este limitat, iar ștergerea se realizeazǎ total, nu pe bucǎți. Pentru programarea EPROM-ului este nevoie de o tensiune suplimentarǎ de 12 V și de reguli specifice, cum ar fi, deconectarea de la magistrala de date și adrese.
OTP (One Time Programmable PROM) – este opusul memoriei EPROM, deoarece nu poate fi ștearsǎ sau reprogramatǎ, încapsulatǎ într-un material plastic, fiind și mult mai ieftinǎ.
Memoria EEPROM (Electrically Erasable Programmable Read Only Memory) – suplinește ceea ce memoriile de mai sus nu au, și anume: ștergerea se realizeazǎ selectiv, putȃnd fi rescrisǎ, fiind în același timp și ieftinǎ.
Programarea memoriile de tip PROM se poate realiza în douǎ moduri:
ICP (In Circuit Programming) – programarea se face pe cablajul imprimat al aplicației;
ISP (In System Programming) – presupune reprogramarea automatǎ în timpul funcționǎrii sistemului.
Pentru a aprecia un microcontroler sub aspectul componentei de memorie este necesar să se considere următoarele caracteristici:
varietatea tipurilor de memorie pe chip: RAM, ROM/ OTP/ EPROM/ EEPROM/ FLASH;
capacitatea memoriei aflată pe chip;
ușurința cu care se poate programa (programare în circuit sau nu, necesitatea unor tensiuni de programare suplimentare). [6]
Memoria de date
SDRAM este memoria de date organizatǎ pe octeți în care primele 96 de adrese sunt rezervate fișierului de registre iar celelalte 1024 de adrese sunt rezervate datelor interne ale SDRAM. Memoria SDRAM are o capacitate de 8 KB. SRAM-ul este accesat cu instrucțiuni atȃt direct cȃt și indirect.
Atmega2560 are 4 KB de memorie de date EEPROM, fiind organizatǎ ca un spațiu separat de date iar durata de viațǎ este de cel puțin 10000 de cicli scriere/ștergere folosind urmǎtorii regiștri de acces: EEAR (EEPROM Adress Register) , EEDR (EEPROM Data Register), EECR (EEPROM Control Register).
Registrele de adresǎ EEPROM-EEARH-EEARL [28]:
Biții 15-12 sunt biți care vor lua intotdeauna valoarea 0. Pentru operația de citire a EEPROM, EEDR conține datele citite.
Registrul de date EEPROM-EEDR [28]:
Registrul de control EEPROM-EECR [28]:
Biții 7-6: sunt biți rezervați și au valoarea 0;
Biții 5-4: EEPM1 și EEPM0 – biți de programare;
Bitul 3: EERIE activeazǎ EEPROM Ready Interrupt;
Bitul 2: EEMPE activeazǎ EEPROM Master;
Bitul 1: EEPE activeazǎ EEPROM program;
Bitul 0: EERE activeazǎ citirea EEPROM.
2.2 Registrele de uz general
Procesoarele AVR folosesc un set de 32 de registre de 8 biți (R0-R31). O structurǎ a setului de registre este prezentatǎ în figura urmǎtoare:
Registri CPU-AVR [28]
Șase din cei 32 de regiștri (R26-R31) pot fi folosiți ca trei registri de 16 biti pentru stocarea unor pointeri folosiți la adresarea indirectǎ a datelor.
Memoria FLASH de program este imparțitǎ în douǎ secțiuni: secțiunea BOOT care are protecția pentru scriere și citire/scriere și secțiunea de aplicare a programelor.
Memoria I/O poate fi accesatǎ direct sau indirect, conținȃnd 64 de adrese pentru funcții periferice ale CPU ca și: controlul registrelor, indicatorul SPI, etc.
2.2.1 Registrul de stare (SREG)
Conține informații despre ultima operație aritmeticǎ efectuatǎ de ALU, conținutul lui putȃnd fi salvat /restaurat prin program la accesarea unei subrutine.
Structura SREG și semnificația indicatorilor sunt prezentate mai jos:
SREG [28]
Bitul 7 (I-Global Interrupt Enable) este bitul de validare globala a întreruperilor. El este dezactivat dupa acceptarea unei întreruperi și este activat de instrucțiunea RETI .
Bitul 6 (T-Bit Copy Storage) este folosit ca sursǎ sau destinatie de cǎtre instrucțiunile pentru copiere BLD (Bit Load – încǎrcare bit) și memorare (Bit Store-stocare bit).
Bitul 5 (H-Half Carry Flag) indicǎ transportul la jumǎtate pentru operațiile aritmetice, valoarea lui fiind folositǎ în aritmeticǎ BCD pentru corecția zecimalǎ a rezultatului.
Bitul 4 (S-Sign Bit) este rezultatul operației logice SAU între indicatorul negativ N și bitul de depașire V.
Bitul 3 (V-Two`s Complement Overflow Flag) indicǎ depǎșirea scalei.
Bitul 2 (N-Negative Flag) indicǎ un rezultat negativ în urma operației aritmetice sau logice.
Bitul 1 (Z-Zero Flag) cȃnd indicatorul de zero este setat rezultatul unei operatii logice sau aritmetice.
Bitul 0 (C-Carry Flag) semnalizeazǎ existența unui transport în urma unei operații logice sau aritmetice.
2.2.2 Execuția instrucțiunilor
Execuția pipeline este folositǎ pentru o performanțǎ mai bunǎ fiind îmbinatǎ cu spațiul de memorie al arhitecturii Harvard și accesul rapid la registre. Este folosit un pipeline cu douǎ etaje, unul pentru extragerea instrucțiunilor și unul pentru execuție. Funcționarea pipeline este prezentatǎ mai jos:
Funcționarea pipeline [28]
În urmatoarea figurǎ este prezentat modul de folosire al registrelor. Pentru a executa o operație ALU se folosesc 2 regiștri.
Operații cu registre executate de ALU într-un singur ciclu de tact [28]
Instrucțiunile care acceseazǎ memoria necesitǎ doi cicli de tact pentru o operație fiind dat exemplul urmǎtor:
Execuția instrucțiunilor care acceseazǎ memoria SRAM [28]
2.2.3 Setul de instrucțiuni
AVR conține un set de 131 de instrucțiuni codate cu 16 sau 32 de biți care sunt executate în 1-4 perioade de tact. Ele folosesc urǎatoarele moduri de adresare: adresare implicitǎ, adresare imediatǎ, adresare directǎ la registru, adresare directǎ la memorie, adresare indirect prin registru, adresare indirect prin registru cu deplasament, adresare pe bit. Lista completǎ a instrucțiunilor este anexatǎ acestei lucrǎri.
2.3 Unitatea centrală de prelucrare (UCP)
Unitatea centrală de prelucrare este compusă din unitatea aritmetică și logică (UAL) și din unitatea de control.
Nucleul CPU-AVR are ca principalǎ funcție execuția corectaǎ a programului, fiind capabil sǎ acceseze memoriile, sǎ execute calcule, sǎ controleze perifericele și sǎ prelucreze întreruperile.
Unitatea aritmetică și logică are rolul de a efectua operațiile aritmetice și logice asupra operanzilor ce îi sunt furnizați. Responsabilă cu decodificarea codului operației este unitatea de control care pentru a finaliza executarea unei instrucțiuni elaborează semnale pentru comanda celorlalte blocuri funcționale.
Unitatea centrală de prelucrare conține un set de registre interne folosite pentru memorarea unor date sau programarea unor anumite funcții. Cȃteva exemple de registre comune:
-A (Accumulator) – registrul acumulator -folosit deseori pentru a stoca un operand și rezultatul operației aritmetice sau logice.
– PC (Program Counter) – registru numărător de program -registrul care stochează adresa următoarei instrucțiuni de executat.
– SP (Stack Pointer) – registrul indicator de stivă – conținutul acestui registru indică adresa curentă a stivei. Stiva este definitǎ în RAM și reprezintǎ o zonǎ de memorie în care se depun temporar informații. [6]
2.4 Sistemul I/O
Microcontrolerele AVR posedǎ un sistem multiplu de dispozitive de I/O destinate aplicațiilor de comandǎ, control, reglare, achiziții de date, comunicație etc., avȃnd adresele plasate în interiorul regiștrilor, locațiile fiind accesate cu instrucțiunile IN și OUT.
2.4.1 Porturile de intrare/ieșire
Dispozitivele I/O reprezintă un aspect de mare interes atunci când este vorba de microcontrolere, interes rezultat din însăși particularitatea unui microcontroler: aceea de a interacționa cu mediul în procesul de control pe care îl conduce. Există o varietate mare de dispozitive I/O; dispozitivele I/O conduc operații generale de comunicație (transfer serial sau paralel de date), funcții generale de timp (numărare de evenimente, generare de impulsuri), operații de conversie analog/numerică, funcții de protecție, funcții speciale de comandă, și enumerarea poate continua.
Atmega2560 dispune de 86 pini I/O din care 54 sunt digitali (14 sunt PWM) și 16 analogici. Toți pinii de I/O au rezistori pull-up, au diode de protecție atȃt la Vcc cȃt și la impǎmȃntare dupa cum este prezentat în figura urmǎtoare:
Structura unei linii pentru un bit al portului I/O [24]
Schema echivalentǎ a unui pin [24]
2.5 Unitǎțile timer/numǎrǎtor
Atmega2560 prezintǎ douǎ cronometre pe 8-biți, patru cronometre pe 16-biți cu mod de comparație și capturǎ, cronometru de timp real cu oscilator separat, patru canale PWM pe 8-biți. Acestea au urmǎtoarele caracteristici:
-frecvența de tact de la intrarea temporizatoarelor se poate alege;
-posibilitatea citirii/scrierii stǎrii numǎrǎtoarelor;
-folosind un registru de comparare se genereaza forme de undǎ;
-se genereaza semnale PWM prin care se regleazǎ frecvența;
-generarea de cereri de întrerupere la intervale regulate;
Cu ajutorul timerului/cronometrului se face cronometrarea precisǎ a execuției programului, generarea de forme de undǎ, masurarea intervalelor de timp.
Structura unui temporizator de 8 biți este prezentatǎ în figura urmǎtoare:
Structura unui modul timer/numǎrǎtor de 8 biți [28]
2.6 Module PWM
Un semnal PWM (Puls Width Modulation) este folosit în multe aplicații: comanda motoarelor de curent continuu sau comanda surselor de alimentare pot fi amintite ca principale aplicații. În figura de mai jos este reprezentat un semnal PWM:
Semnal PWM
Semnalul PWM este un semnal periodic cǎruia i se poate modifica în mod controlat factorul de umplere. Generarea unui semnal cu factor de umplere variabil se face cu ajutorul unui modul timer.
Structura unui canal PWM este reprezentată în figura urmǎtoare:
Schema bloc a canalului PWM
Se genereazǎ clock-ul pentru un numǎrǎtor de cǎtre registrul de prescalare. Se comparǎ apoi conținutul registrului PWM. Dacǎ rezultatul comparǎrii este mai mic sau egal, atunci se va genera unu logic la ieșirea PWM, iar dacǎ rezultatul este mai mare, atunci se va genera zero logic. În funcție de numǎrul de biți ai registrului, factorul de umplere poate fi între 1/(2^numǎrul de biți) și 1. Odatǎ programat, el va genera la ieșire semnal periodic continuu. [6]
2.8 Module de comunicații seriale
Comunicația serialǎ este cea mai agreatǎ metodǎ de comunicație deoarece oferǎ un numǎr mic de conexiuni (fire) avȃnd o compatibilitate extinsa cu dispozitivele de comunicație. Pentru a se putea transfera date, emițǎtorul și receptorul trebuie sǎ fie sincronizati (se folosește același semnal de clock), iar inceputul și sfȃrșitul informației de transferat trebuie sǎ fie cunoscut. Se pot realiza prin 3 metode, însa doar douǎ din ele sunt folosite de cǎtre microcontroler. Numărul de biți transmiși într-o secundă reprezintă rata de transfer numită baud rate; aceasta se măsoară în biți/secundă (bps). Durata unui bit este 1/(baud rate). [6]
2.8.1 Modulul serial asincron
Modulul serial asincron numit și UART (Universal Asynchronous Receiver Transmiter) efectueazǎ recepția/transmisia datelor de la/cǎtre un dispozitiv cu acces serial. Caracteristicile principale ale modulului sunt:
funcționare full – duplex;
posedǎ generator de baud rate propriu, de rezoluție mare;
posedǎ formate de date seriale diverse;
executǎ comunicații de tip multiprocesor;
detecteazǎ automat erorile de transmisie.
O schemǎ simplificatǎ a interfeței seriale asincrone este prezentatǎ mai jos:
Schemǎ bloc UART [6]
Ceasul pentru generarea de baud rate, poate fi intern sau extern. La selectarea ceasului intern, acesta se formeazǎ din ceasul unitații centrale cu o prescalare. Programarea modului de lucru, parametrii de comunicație, selectarea și divizarea ceasului se face cu ajutorul unui registru de stare și a unui de control.
2.8.2 Modulul serial sincron
Transferul de date sincron este utilizat pentru comunicații locale între microcontroler și dispozitivele periferice, datele fiind însotite de un semnal de clock. Modulul USART realizeazǎ conversia serie/paralel la recepție, respectiv paralel/serie la transmisie, transmisia realizȃndu-se prin intermediul scrierii datelor în registrul UDR (UART Data Register). Spre deosebire de transferul asincron, sincronizarea se face prin bitul de start la începutul fiecǎrui octet, permițȃnd și rate de transfer mai mari, în jur de 1 Mbps. În cazul sistemelor care folosesc funcția serială sincronă există un master și unul sau mai multe dispozitive slave. În cazul în care în sistem este un singur slave, conexiunea este făcută după cum urmează:
Conexiune serială sincronă master-slave [6]
Pentru conexiunile multislave, existǎ douǎ soluții:
master-ul folosește portul de ieșire pentru a selecta dispozitivul slave;
se selecteazǎ toate dispozitivele slave, fiind legate în inel.
Alte interfețe seriale utilizate de microcontrolerele AVR, întȃlnite, sunt:
SCI (Serial Communications Interface) este un subsistem I/O serial independent, de tipul full duplex asincron (UART) numit astfel în MC Motorola.
SPI (Serial Peripheral Interface) este un modul serial folosit pentru a comunica sincron la distanțe mici cu viteze de până la 4 Mbps.
SCI+ este similar cu SCI, are în plus suport pentru comunicații seriale sincrone.
Dispune de o ieșire de ceas folosită pentru a transfera date în mod sincron cu un periferic de tip SPI.
SIOP (Simple I/O Port) este o implementare mai simplă a SPI.
TWI (Two Wire Interface) – protocolul de comunicație se realizeazǎ pe 2 fire, permițȃnd interconectarea pȃnǎ la 128 de dispozitive diferite, fiecare dispozitiv conectat la aceastǎ magistralǎ avȃnd adresǎ proprie. [6]
2.9 Module A/D și D/A
Prezența modulelor A/D și D/A în structura unui microcontroler contribuie la “puterea” acestuia în aplicații deoarece interfațarea cu mediul presupune necesitatea de a prelucra sau de a elabora mărimi analogice. Convertoarele A/D sunt des întâlnite printre perifericele on-chip în timp ce convertoarele D/A nu sunt întâlnite în mod uzual printre unitățile component deoarece sunt relativ ușor implementate în exterior. Un convertor D/A simplu poate fi realizat folosind un timer în mod PWM și integrând pulsul în exterior cu un simplu circuit RC. Convertoarele A/D integrate pe chip sunt convertoare cu aproximații succesive sau mai rar, convertoare cu integrare. Însușirile convertoarelor nu sunt deosebite; sunt convertoare lente în comparație cu cele implementate în circuite independente.
Atmega2560 conține un convertor A/D cu 4 canale PWM pe 8 biți. Convertorul are la intrare un circuit de eșantionare și memorare. Viteza de conversie este cuprinsǎ între 13 și 260 de µs.
În figura de mai jos, este prezentată o schemă bloc simplă a unui modul de conversie A/D. Circuitul analogic de intrare constă într-un multiplexor analogic, un circuit de eșantionare/memorare și un convertor A/D cu aproximații succesive. Tensiunea de referință pentru convertor și masa analogică sunt furnizate din exterior la pini speciali. Clock-ul necesar convertorului este generat intern din clock-ul unității centrale.
Schemǎ bloc a modului de conversie A/D [6]
Modulul A/D folosește un registru de control prin care se selectează canalul de conversie și modul de lucru pentru circuitul de eșantionare/memorare. Rezultatul este stocat în registrul de date. Conversia poate fi declanșatǎ intern sau extern. Intern prin bitul asociat din registrul de control și extern printr-un semnal de comandǎ aplicat la pin. Folosind un timer se poate declanșa o conversie. Existǎ mai multe moduri de operare al modulului:
-executǎ o conversie a unui canal apoi se oprește;
-conversia continuǎ a unui canal pȃnǎ se recepționeazǎ o comandǎ de incheiere;
-conversia clinicǎ în care modulul executǎ pe rȃnd conversia fiecarui canal, apoi se oprește; aici sunt folosite mai multe registre de date pentru memorarea rezultatelor conversiilor. Rezultatele sunt citite după încheierea unui ciclu. La terminarea unui ciclu de conversie, opțional, se poate genera o întrerupere către unitatea centrală. [6]
2.10 Comparatorul analogic
Are scopul de a compara douǎ mǎrimi analogice și de a genera o cerere de întrerupere cȃnd acestea sunt egale.
2.11 Timerul watchdog
Este folosit pentru a reseta microcontrolerul atunci cȃnd acesta se blocheazǎ într-o buclǎ infinitǎ din cauza unei erori. Este format dintr-un oscilator și un circuit de prescalare. Alegȃnd factorul de prescalare putem selecta 8 perioade diferite de resetare a timerului. Timerul watchdog se reseteazǎ la execuția instrucțiunii WDR, la dezactivarea sau la inițializarea procesului prin RESET. Este comandat de un oscilator propriu de tip RC care funcționeazǎ la o frecvențǎ de 1 MHz. [24]
2.12 Modurile de operare cu consum redus
Unul din avantajele majore ale acestei familii de microcontrolere o reprezintǎ consumul redus de energie. AVR-urile prezintǎ 6 moduri de funcționare ce pot fi comandate prin registrul MCUCR (MCU Control Register). Reducerea consumului se realizeazǎ prin deconectarea modulelor neutilizate setȃndu-se bitul SE (Sleep Enable) și biții SM2, SM1 și SM0 (Sleep Mode) după care se execută instrucțiunea SLEEP. Modurile de funcționare cu consum redus sunt:
IDLE Mode – oprește CPU în timp ce permite SRAM, cronometrului, portului SPI, și a sistemului de întreruperi sǎ continue funcționarea;
ADC Noise Reduction Mode – oprește procesorul și toate modulele I / O, cu excepția cronometrului asincron și ADC, pentru a minimiza zgomotul de comutare în timpul conversiilor ADC;
POWER-DOWN Mode – salveazǎ conținutul registrului dar blochează oscilatorul, dezactivând toate celelalte funcții până la următoarea întrerupere sau resetare hardware;
POWER-SAVE Mode – cronometrul asincron continuă să funcționeze, permițând utilizatorului să mențină un timp de bază cu diferența că timerul 2 continuă să funcționeze.
STANDBY Mode – identic modulului Power-down, doar cǎ, oscilatorul continua sǎ funcționeze;
EXTENDED STANDBY Mode – atât oscilatorul principal cȃt și cronometrul asincron continuǎ să ruleze. [24]
Capitolul 3
Proiectare și implementare hardware
Interfațarea cu microcontrolerul
Interfațarea cu microcontroler-ul se realizeazǎ prin interceptarea semnalelor ce vin de la senzorul infraroșu montat frontal, pe un servomotor ce se rotește 180 de grade, poziția înainte aflȃndu-se la 90 de grade. Astfel, microcontrolerul proceseazǎ informația, aflǎ și poziția servomotorului cu ajutorul cǎreia stabilește direcția și transmite comenzi mai departe motoarelor de curent continuu (unul pentru deplasare înainte – înapoi, iar celǎlalt pentru direcție stanga – dreapta). O schemǎ bloc reprezentativǎ este prezentatǎ în figura de mai jos :
Schema bloc a sistemului de interfatare cu microcontrolerul
3.2 Mǎsurarea distanței folosind senzorul IR Sharp GP2Y0A21YK
3.2.1 Mod de funcționare:
Senzorul emite un puls de razǎ infraroșie de lungime de undǎ 850 nm ± 70nm. Dacǎ un obiect este în raza de acțiune și în calea razei IR, acesta va reflecta raza înapoi spre senzor. Senzorul face citirile cu o frecvențǎ de aproximativ 24 Hz și raporteazǎ datele sub forma de tensiune (mǎrime analogicǎ). Aceastǎ tensiune va suferi o conversie pe 8 biți la nivelul CAN-ului prezent pe microcontroler-ul Atmega2560. Mǎrimea analogicǎ este convertitǎ în Volti, iar apoi, printr-o funcție de liniarizare obținutǎ din diagrama oferitǎ de Sharp pentru acest senzor, vom obține rezultatul final exprimat în cm. [30]
3.2.2 Prezentare hardware
Pentru acest proiect am utilizat un senzor în infraroșu SHARP GP2Y0A02YK, care prezintǎ urmǎtoarele caracteristici tehnice:
influența scazutǎ a culorilor obiectelor reflectate, datoratǎ metodei triunghiulare de masurǎ a distanței
raza de acțiune între 20 și 150 de cm
Interfața sa prezintǎ 3 fire: alimentare, masa și tensiunea de ieșire și necesitǎ un conector JST de 3 pini.
Senzor SHARP [30]
Schema conectarea senzorului la microcontroler este urmǎtoarea:
Conectarea senzorului SHARP la microcontroler
3.2.3 Mǎsurarea distanței prin metoda triunghiurilor (triunghiularizarea):
Principiul care stǎ la baza acestei metode de mǎsura folosite de senzorul Sharp se bazeazǎ pe formarea unui triunghi între Emițǎtorul de razǎ Infraroșie, punctul de reflexie și Detectorul de Infraroșu. Astfel, emițǎtorul emite un puls de luminǎ infraroșie. Lumina strǎbate cȃmpul vizual și fie lovește un obstacol sau continuǎ deplasarea. În cazul inexistenței unui obstacol, lumina nu va fi reflectatǎ și nu se va detecta nici un obiect. Dacǎ lumina se reflectǎ de pe un obiect, se va intoarce la Detector și va creea un triunghi între Emițǎtor, punctul de reflexie și Detector, ca în figura urmǎtoare:
Funcționarea senzorului SHARP [30]
Unghiurile din acest triunghi variazǎ în funcție de distanța pȃnǎ la obiect. Receptorul este de fapt o lentilǎ de mare precizie care transmite lumina reflectatǎ într-o rețea liniarǎ de CCD din interior. Rețeaua de CCD poate determina sub ce unghi a intrat lumina reflectatǎ și, astfel, poate calcula distanța pȃnǎ la obiect. Aceastǎ nouǎ metodǎ de masurare a distanței este aproape imunǎ la interferențele cauzate de lumina ambientalǎ și oferǎ o “indiferențǎ” foarte mare fațǎ de culoarea obiectului detectat. Astfel este posibilǎ detectarea unui perete negru în lumina directǎ a soarelui.
3.2.4 Neliniaritatea ieșirii senzorului:
Unul din senzorii Sharp folosit în acest proiect prezintǎ o caracteristicǎ de ieșire neliniarǎ, datoratǎ proprietaților trigonometrice din interiorul triunghiului format de Emițǎtor, punctul de reflexie și Receptor.
Ieșire neliniarǎ a senzorului [30]
Din aceastǎ diagramǎ care poate fi gasitǎ în documentația oferitǎ de producǎtor se observǎ cǎ în intervalul [5;80] cm ieșirea detectorului nu este liniarǎ ci mai degrabǎ logaritmicǎ.
Se observǎ de asemenea cǎ pentru o distantǎ mai micǎ decat 5 cm, ieșirea scade rapid și incepe sǎ ia valori caracteristice masurǎtorii unor distanțe mai mari. Acest lucru poate fi dezastruos pentru unele echipamente automate care au nevoie de distanța exactǎ, deoarece vor interpreta cǎ sunt la o distanțǎ mare de obstacol.
3.2.5 Mǎsurǎtori test
Urmǎtorul experiment are drept scop evidențierea diferențelor între distanța realǎ și distanța datǎ de senzor pȃnǎ la diferite obiecte de dimensiuni și forme diferite.
Am executat mǎsurǎtori de distanțǎ, la un pas d = 50 mm pentru primele 5 mǎsurǎtori, urmȃnd ca pentru urmatoarele 5 sǎ fie efectuate la o distanțǎ d = 100 mm. Prima mǎsurǎtoare a fost realizatǎ la o distanțǎ egalǎ cu 100 mm, iar ultima mǎsurǎtoare a fost executatǎ la 800 mm. Acest interval a fost ales în urma consultǎrii foii de catalog al senzorului cu luminǎ infraroșie, SHARP. Aici este specificatǎ distanța optimǎ de detectare a obiectelor ca fiind cuprinsǎ intre 100 mm și 800 mm. Datele au fost înregistrate în tabelele de mai jos, dupa cum urmeazǎ:
În graficele de mai sus se poate obseva cum eroarea crește o datǎ cu scǎderea în dimensiuni a obiectului de detectat. Dacǎ obiectele sunt poziționate perpendicular pe senzor, eroarea scade, valoarea detectatǎ apropiindu-se foarte mult de valoarea realǎ, eroarea scǎzȃnd sub 2% (pentru obiectele cu dimensiuni mai mari). Spectrul de mǎsurare al senzorului este destul de redus, fiind de maxim 15 grade. Cu cȃt ne indepǎrtǎm cu obiectul de detectat fațǎ de perpendiculara pe senzor, cu atȃt eroarea crește, dar incadrȃndu-se în 5%, valoare datǎ de catalog.
3.3 Comanda motoarelor
Motoarele sunt întȃlnite în foarte multe aplicații din domeniul microcontrolerelor ca de exemplu în aplicațiile auto-motoarelor de la geamurile electrice, motoarele indicatoarelor de bord sau din domeniul echipamentelor periferice – imprimantǎ, hard disc etc. Ele se clasificǎ în motoare:
De curent continuu cu perii sau fǎrǎ perii;
Pas cu pas;
De curent alternativ cu inducție;
Cu reluctanțǎ comutatǎ.
3.3.1 Comanda motoarelor de curent continuu
Schema bloc a sistemului de acționare cu motor de curent continuu este datǎ în figura urmǎtoare:
Schema bloc a unei acționǎri cu motor de curent continuu [3]
Motoarele de curent continuu sunt cele mai simple de comandat pentru cǎ cu cȃt tensiunea este mai mare cu atȃt viteza este mai mare. Conform unei traiectorii de vitezǎ prezentatǎ mai jos o mișcare de poziționare este compusǎ dintr-o accelerare, dintr-o deplasare cu vitezǎ constantǎ și o frȃnare.
Principiu de funcționare:
Traiectoria de vitezǎ [3]
Comanda unui motor de current continuu [3]
Dacǎ cuplǎm un motor de curent continuu între PWM1P0 și PWM2P0 se obține o rotire în ambele sensuri ale motorului care se rotește cu o vitezǎ proporțional cu tensiunea aplicatǎ.
În figura de mai jos este reprezentat un motor de acționare a hârtiei la o imprimantă HP lângă o șurubelniță pentru a putea aprecia dimensiunea, unde tubul de ferită de pe cablu are rolul de a micșora perturbațiile.
Motor de curent continuu [3]
O altǎ categorie de motoare sunt cele liniare electrodinamice formate dintr-un stator magnet permanent și o bobinǎ mobilǎ. Aceasta este acționată de forța electrodinamică care rezultă din interacțiunea dintre câmpul produs de curentul care parcurge bobina și câmpul magnetic staționar produs în stator de magneții permanenți. Se utilizează două tipuri constructive: cu bobină lungă și întrefier lung și cu bobină lungă și întrefier scurt.
Motor electrodinamic cu bobinǎ lungǎ (stȃnga), cu bobinǎ scurtǎ (mijloc) si un motor [2]
3.3.2 Comanda motoarelor pas cu pas
Motorul pas cu pas este un dispozitiv care pe baza unui consum de energie de la o sursă convertește informațiile numerice în lucru mecanic. Este un motor de curent continuu comandabil digital, cu deplasarea unghiulară a rotorului proporțională cu numărul de impulsuri primite. Dacă este comandat corect (cu o frecvență mai mică decât cea admisibilă) rămâne în sincronism cu impulsurile de comandă la accelerare, mers constant și încetinire. O schemǎ bloc de acționare este prezentatǎ mai jos:
Schema bloc de acționare cu motor pas cu pas [3]
Motoarele pas cu pas pot fi motoare unipolare sau bipolare. La motoarele bipolare comanda pașilor se face prin inversarea curentului prin înfășurări. Principiul comenzii seamănă cu cel de la comanda motorului de curent continuu, cu diferența că în acest caz de regulă sunt 2 înfășurări, dupa cum se observǎ în figurǎ:
Structura motorului pas cu pas bipolar [2]
Structura și înfǎșurǎrile motorului unipolar [2]
3.3.3 Traductori de poziție și circuite driver
Există o mare diversitate de traductoare de poziție pentru poziționarea motoarelor. Senzorii cei mai utilizați sunt cei care generează două semnale defazate la deplasare (encoder), cu formă liniară sau circulară. Acești senzori pot fi inductivi, capacitivi sau optici. Cȃteva exemple de senzori de poziție sunt prezentați mai jos [4]:
Senzor de poziție M150 (stȃnga), SPI (mijloc) și LX-EP (dreapta) [5]
3.3.4 Exemplu de modul pentru comanda motoarelor în microcontrolere specializate
Modulul de comandă pentru comanda motoarelor conține 2 generatoare PWM, 4 etaje de
ieșire de putere (drivere de motor) și logica de selecție. Driverele pot asigura un curent mare care permite conectarea directă a motoarelor de mică putere. Un mecanism de sincronizare asigură funcționarea sincronizată a celor 2 generatoare PWM. În general MC conțin mai multe asemenea module. Schema bloc a unui modul de control motoare care conține 2 canale PWM și 4 drivere de ieșire este dată în figura urmǎtoare:
Schema bloc al modulului de comandǎ a motoarelor [3]
3.3.5 Driver-ul de comandǎ utilizat
În figura urmǎtoare este prezentatǎ structura bloc a punții H de control a unui motor de curent continuu, împreunǎ cu pinii utilizați a integratului L298N (Integratul conține o punte dublǎ H, conectarea pentru celǎlalt motor facȃndu-se în mod similar). Mai jos, este prezentatǎ și schema întregului driver proiectatǎ în Proteus.
Schema bloc a punții H de comandǎ [31]
Schema punții H duble proiectatǎ în Proteus
Integratul L298N este ales în funcție de consumul motoarelor în sarcinǎ, așadar, motorul spate consumǎ aproximativ 1A în sarcinǎ, iar motorul fațǎ 0.6 A, însumȃnd 1.6 A, integratul de fațǎ suportȃnd curenți de pȃnǎ la 2A. L298N este proiectat pentru niveluri logice standard TTL și pentru a conduce sarcini inductive cum ar fi relee, solenoizi, motoare curent continuu și pas cu pas. Conține 2 intrǎri pentru a activa sau dezactiva dispozitivul indiferent de semnalele de la intrare. Integreazǎ douǎ etaje de putere de ieșire (A, B). Puterea etajului de ieșire este o configurație a punții H, conducȃnd o sarcinǎ inductivǎ în mod comun sau diferențial, în funcție de starea intrǎrilor (EnA, EnB, In1, In2, In3, In4). Diodele folosite în circuit trebuie sǎ prezinte un factor de recuperare rapid trr < 200nS. Rezistențele utilizate trebuie sǎ fie cȃt mai mici (0.82 ohmi), avȃnd factorul de putere mare (5W) pentru a putea mǎsura tensiune pe ea, fiind direct proporționala cu tensiunea de pe motor. [31].
3.4 Stabilizatorul de tensiune LM7805
Pentru funcționarea corectǎ a platformei mobile este nevoie de o sursǎ stabilizatǎ de tensiune, de aceasta ocupȃndu-se integratul LM 7805. Schema bloc este prezentatǎ mai jos :
Stabilizator de tensiune [26]
Domeniul tensiunilor de intrare se incadreazǎ între 7 si 35 V, curentul maxim suportat de stabilizator fiind de 1A. Condensatorul de la intrare are rolul de a ‘netezi’ tensiunea care se aplicǎ stabilizatorului, reducȃnd variația ei la valori reduse. Rolul stabilizatorului de tensiune este de a asigura o valoare constantǎ, fixǎ, a tensiunii furnizate de 5V, indiferent de variația tensiunii de la intrare sau a consumului. Condensatorul de la ieșire are tot rol de filtrare, reducȃnd suplimentar tensiunea de zgomot propriu al stabilizatorului. [26]
Capitolul 4
Proiectare și implementare software
4.1 Proiectarea algoritmului de funcționare
Pentru a putea elabora un program mai complex, orice programator trebuie să elaboreze mai ȋntȃi un algoritm de rezolvare a problemei pe care o are, sau o organigrama functională care să prezinte, pe blocuri, parțile componente ale programului software.
Indiferent de limbajul de programare ales, fie el de nivel ȋnalt sau ȋn limbaj de asamblare necesitatea si totodată ajutorul care ne este dat de organizarea sarcinilor pe blocuri este evident.
Organigrama functională
Organigrama functională a proiectului este prezentata in figura ce urmează :
NU DA
Pentru a nu influenta funcționarea autovehiculului ȋn momentele ȋn care senzorul nu detectează nici un obstacol, sistemul decizional trebuie să intervină și să comande platforma ȋn starea potrivită conform cu datele obținute și prelucrate de la senzor. Totodata deciziile trebuie luate cu o viteza cȃt mai mare, revenirea la modul normal de lucru să se facă imediat ce obiectul de urmărit a ieșit din raza de acțiune a senzorului. În acest sens au fost create cȃteva proceduri care să determine o anumită decizie, la o condiție de dinainte stabilită, apelul la aceste proceduri făcȃndu-se doar ȋn cazul ȋn care semnalele venite de la senzor determină acest lucru.
4.2 Logica programului și explicarea liniilor de cod
Se inițializează global variabilele ce se folosesc de-a lungul programului, incluzand: distanța, distanța ȋn centimetri, valoarea de prag, unghiul sub care se face calibrarea, unghiurile ȋntre care se face scanarea dupa obiectul de urmărit, pwm-urile, enable-urile si intrările motoarelor. Pentru fiecare funcție pe care platforma mobilă o execută sunt create funcții separate pentru o mai ușoară apelare. Tot ȋntr-un subprogram este realizată si autocalibrarea, apelată la punerea sub funcțiune a autovehicului, aceasta continȃnd următoarele:
Se poziționează servo pe unghiul de calibrare, adică ȋn poziția de 90 de grade, ȋnsemnȃnd ȋnainte ;
Se citește valoarea de la senzor ȋn volți ;
Se convertește valoarea citită ȋn centimetri printr-o formulă dată de datasheet-ul senzorului ;
Se stabilește un prag de LOW sub care nu se poate coborȋ din cauza domeniului ȋn care senzorul poate face citiri.
În structura programului principal, se setează toate porturile utilizate, după cum urmează :
Pwm-urile, enable-urile si intrările motoarelor sunt setate ca fiind de ieșire ;
Portul pentru senzorul infraroșu este singurul port de intrare ;
Se setează enable-urile de la motoare pe modul activ ON ;
Cu ajutorul unui led care clipește timp de 2 secunde ȋnainte și 1,5 secunde după se inițializează autocalibrarea.
În cadrul buclei ce se execută la infinit este ȋnglobat miezul programului, ȋn care se apelează funcțiile de deplasare după structura acestuia. Se declară local variabila unghi_recalculat, ce va ajuta la poziționarea servomotorului pe obiect ȋn cursa de urmărire. Tot aici se stabilesc și pragurile de LOW_critic ca fiind 75% din pragul LOW, dar nu mai mic de 23 de centimetri. Senzorul poate măsura ȋntre 20 si 150 cm. În urma testelor făcute, s-a observat o variație a distanței la pragul de 20 de centimetri, și anume un obstacol stȃnd nemișcat ȋn fața senzorului, senzorul redȃnd distanța cu o variație maximă de 3 centimetri. Sub această valoare, senzorul redă haotic, interpretȃnd ca fiind foarte departe de obstacol, ceea ce ar fi dezastruos. Pragul de HIGH se stabilește ca fiind de două ori distanța de calibrare. În funcție de poziția servomotorului, autovehiculul ‘știe’ ȋn ce direcție să se deplaseze. Așadar, dacă poziția servomotorului este mai mică decȃt 60, atunci se deplaseaza ȋnspre stȃnga; dacă poziția este mai mare decȃt 130, acesta urmează a se deplasa la dreapta. Între aceste valori, autovehiculul se deplaseaza ȋnainte sau ȋnapoi ȋn funcție de distanța pȃnă la obiectul de urmărit. În cursa de urmărire, servomotorul ȋmpreună cu senzorul ȋncearcă o poziționare perpendiculară pe obiect, cu ajutorul următoarei secvențe:
/* unghi_recalculat = unghi_recalculat + (90.0 – unghi_recalculat)*0.05; */
Din cauza faptului că senzorul nu redă o valoare exactă (avȃnd o eroare de 5% dată de catalog), nici platforma nu poate menține o distanța fixă fața de obiect. Se stabilește o marjă de eroare pentru ca platforma să nu execute mișcări de ȋnainte – ȋnapoi ‘stresante’. Așadar, scopul pragurilor care s-au ales și anume LOW si LOW_critic, este de a plasa autovehiculul ȋntr-o zona ȋn care să se stabilizeze (din punct de vedere al deplasării) ȋn cursa sa de urmărire. [29]
Concluzie
Introducerea pe piața a roboților a atras o serie de avantaje, precum:
Reducerea nivelului de muncă pentru factorul uman, eliberarea lui de monotonie, dar și de expunerea prelungită la substanțe nocive, caldură, praf, radiații etc.
Creșterea securității în muncă;
Creșterea rentabilitații producției datorită funcționării sigure a produsului;
Posibilitatea măririi gradului de încărcare a mașinilor;
Posibilitatea de efectuare a mai multor etape de fabricare, scăzând astfel costul de producție;
Eficiența robotului (adică, costurile de întreținere și reparații să nu depașească 10% din valoarea lui, în timpul unui an) crește de altfel producția și implicit profitul. [25]
De-a lungul proiectării și realizării proiectului de diplomă am întâmpinat numeroase probleme, dar cele mai semnificative au fost cele legate de senzor. Cu toate că, costul de achiziție al unui senzor infraroșu Sharp ar trebui să fie direct proporțional și cu nivelul de performanța al acestuia, s-a dovedit exact contrariul. Din cauza timpului de răspuns foarte mare (aproximativ 50 ms) si al instabilitații lui (prezintă variații semnificative), nu s-a putut crea un sistem foarte eficient, putând urmări doar obiectele mari, aflate într-o poziție statică în raza senzorului. Ca și direcție viitoare, achiziționarea unui senzor bazat pe sunet, s-ar putea crea si dezvolta o platformă capabilă să urmarească doar obiectele în mișcare, chiar și în dimensiuni mai mici, de ordinul milimetri – centimetri.
Bibliografie
[1] Ana-Maria Chiselev, Teză de doctorat: Contribuții privind corelarea parametrilor de propagare a undelor ultrasonore cu tehnologia de realizare a capetelor sonar biomimetice, Galați, 2011
[2] Gerigan C., Ogruțan P., Tehnici de interfațare, Ed. Transilvania Brașov, 2000, 315 pag, ISBN 973-9474-94-2
[3] Ogruțan P., Microcontrollere si controllere grafice Fujitsu, Ed. Universitații Transilvania Brașov, 2006, 182 pag, ISBN 973-635-621-3
[4] http://www.unimeasure.com/lx.html, Traductori de poziție
[5] http://www.celesco.com/?gslid=Clrzz_-A76ACFQO7ZwodlzrEHw, Traductori de poziție
[6] http://www.unitbv.ro/faculties/biblio/interfete_specializate/curs.pdf Date microcontrolere
[7] http://www.referates.ro/referate/Microcontrolere-83.html Istoria uC
[8] http://www.robotics.ucv.ro/flexform/aplicatii/m1/Ionisor%20Alina%20%20MICROCONTROL ERE/f4.htm Date microchip si atmel
[9] http://www.stiintasitehnica.com/top-10-inven-ii-i-descoperiri-accidentale_15.html Aplicatii cu uC
[10] mcu-labs.blogspot.ro/2010/11/conspect-2009.html
[11] http://www.descopera.ro/stiinta/8290537-ecolocatia-umana-fantasticul-simt-al-oamenilor-lilieci
[12] http://www.robotbuilder.co.uk/Resources/Articles/138.aspx
[13] http://www.pescuitul.ro/ps/page.php/id/sonare/nav/1/
[14] http://ciuhoicity.forumulmeu.com/t13p4-chestii-interesantedescoperirinoutati
[15] http://www.descopera.ro/dnews/7688892-un-robot-subacvatic-va-calatori-luni-intregi-prin-ocean-studiind-vietuitoarele-marine
[16] http://www.revistamagazin.ro/content/view/3045/21/
[17] http://ro.wikipedia.org/wiki/Vehiculul_spa%C8%9Bial_Opportunity
[18] http://www.capital.ro/detalii-articole/stiri/cum-arata-o-parcare-subterana-facuta-de-nemti-130782.html
[19] 194.88.148.107/de/3d/92/22/iraq_robots_alt_0813.jpg
[20] http://www.descopera.ro/dnews/9392066-adio-pompieri-a-fost-creat-robotul-umanoid-care-va-lupta-impotriva-incendiilor
[21] http://www.stiintasitehnica.com/top-10-inven-ii-i-descoperiri-accidentale_15.html
[22] http://www.electronica-azi.ro/articol/774
[23] http://www.scribd.com/doc/47779523/11-ATMEL-AVR-8biti-partea-I-Curs-MC-17-12-2010
[24] http://www.scribd.com/doc/90833892/ATMEL-AVR-8biti-Partea-a-II-A-Curs-MC-7-1-01-2011
[25] http://www.usv.ro/updoc/Principii%20fundamentale%20ale%20EPI.pdf
[26] http://www.scribd.com/doc/58461228/50/Stabilizatoare-integrate-de-tensiune
[27] http://www.alingliga.go.ro
[28] Datasheet microcontroller Atmel AVR RISC ATMega 2560
[29] http://www.avrfreaks.com/ // documentații si turoriale privind aspectele legate de partea software a proiectului
[30] http://www.acroname.com/robotics/info/articles/sharp/sharp.html
//documentatii privind senzorii in infrarosu Sharp si metode de liniarizare ale caracteristicii acestora
[31] Datasheet integrat L298N
Anexe
Diagrama bloc a microcontroler-ului AVR ATMega 2560
Data Memory Map a microcontroler-ului Atmel 2560
Set de instructiuni AVR
Schema bloc convertor A/D
Bibliografie
[1] Ana-Maria Chiselev, Teză de doctorat: Contribuții privind corelarea parametrilor de propagare a undelor ultrasonore cu tehnologia de realizare a capetelor sonar biomimetice, Galați, 2011
[2] Gerigan C., Ogruțan P., Tehnici de interfațare, Ed. Transilvania Brașov, 2000, 315 pag, ISBN 973-9474-94-2
[3] Ogruțan P., Microcontrollere si controllere grafice Fujitsu, Ed. Universitații Transilvania Brașov, 2006, 182 pag, ISBN 973-635-621-3
[4] http://www.unimeasure.com/lx.html, Traductori de poziție
[5] http://www.celesco.com/?gslid=Clrzz_-A76ACFQO7ZwodlzrEHw, Traductori de poziție
[6] http://www.unitbv.ro/faculties/biblio/interfete_specializate/curs.pdf Date microcontrolere
[7] http://www.referates.ro/referate/Microcontrolere-83.html Istoria uC
[8] http://www.robotics.ucv.ro/flexform/aplicatii/m1/Ionisor%20Alina%20%20MICROCONTROL ERE/f4.htm Date microchip si atmel
[9] http://www.stiintasitehnica.com/top-10-inven-ii-i-descoperiri-accidentale_15.html Aplicatii cu uC
[10] mcu-labs.blogspot.ro/2010/11/conspect-2009.html
[11] http://www.descopera.ro/stiinta/8290537-ecolocatia-umana-fantasticul-simt-al-oamenilor-lilieci
[12] http://www.robotbuilder.co.uk/Resources/Articles/138.aspx
[13] http://www.pescuitul.ro/ps/page.php/id/sonare/nav/1/
[14] http://ciuhoicity.forumulmeu.com/t13p4-chestii-interesantedescoperirinoutati
[15] http://www.descopera.ro/dnews/7688892-un-robot-subacvatic-va-calatori-luni-intregi-prin-ocean-studiind-vietuitoarele-marine
[16] http://www.revistamagazin.ro/content/view/3045/21/
[17] http://ro.wikipedia.org/wiki/Vehiculul_spa%C8%9Bial_Opportunity
[18] http://www.capital.ro/detalii-articole/stiri/cum-arata-o-parcare-subterana-facuta-de-nemti-130782.html
[19] 194.88.148.107/de/3d/92/22/iraq_robots_alt_0813.jpg
[20] http://www.descopera.ro/dnews/9392066-adio-pompieri-a-fost-creat-robotul-umanoid-care-va-lupta-impotriva-incendiilor
[21] http://www.stiintasitehnica.com/top-10-inven-ii-i-descoperiri-accidentale_15.html
[22] http://www.electronica-azi.ro/articol/774
[23] http://www.scribd.com/doc/47779523/11-ATMEL-AVR-8biti-partea-I-Curs-MC-17-12-2010
[24] http://www.scribd.com/doc/90833892/ATMEL-AVR-8biti-Partea-a-II-A-Curs-MC-7-1-01-2011
[25] http://www.usv.ro/updoc/Principii%20fundamentale%20ale%20EPI.pdf
[26] http://www.scribd.com/doc/58461228/50/Stabilizatoare-integrate-de-tensiune
[27] http://www.alingliga.go.ro
[28] Datasheet microcontroller Atmel AVR RISC ATMega 2560
[29] http://www.avrfreaks.com/ // documentații si turoriale privind aspectele legate de partea software a proiectului
[30] http://www.acroname.com/robotics/info/articles/sharp/sharp.html
//documentatii privind senzorii in infrarosu Sharp si metode de liniarizare ale caracteristicii acestora
[31] Datasheet integrat L298N
Anexe
Diagrama bloc a microcontroler-ului AVR ATMega 2560
Data Memory Map a microcontroler-ului Atmel 2560
Set de instructiuni AVR
Schema bloc convertor A/D
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: Vehicul Autonom Care Detecteaza Si Mentine Distanta Prin Urmarire (ID: 164075)
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.
