Transportul
INTRODUCERE
Transportul reprezintă deplasarea de persone și mărfuri, dintr-un loc în altul. Acest termen provine din derivarea cuvintelor limbii latine “trans”, care are semnificația “de la / până la / peste”, și “portare” care se traduce prin “a duce / a deplasa”.
Odată cu dezvoltarea societății, au apărut diferite probleme de risc care pot pune în pericol viață umană, de aceea pentru o dezvoltare eficientă este necesară crearea unor, mijloace de ajutor care să elimine eventualele pericole asupra vieții umane.
De-a lungul timpului în domeniul transporturilor s-a încercat introducerea unor sisteme care să poată automatiza procesul de transport, în vederea eliminării intervenției părții umane. Câteva exemple de astfel de automatizări sunt în domeniul transportului rutier: autovehicule care pot parca sau chiar frâna singure. În domeniul aerian: drone capabile de a capta diverși parametrii de mediu etc. .
Statisticile efectuate în ultimii ani arată că roboții au devenit din ce în ce mai mult ultilizati atât în mediile industriale cât și în cele neindustriale, din care rezultă faptul că aceștia au devenit sisteme indispensabile pentru diferitele societăți și servicii. Ei sunt utilizați în diferite domenii precum procesele de producție cât și alte domenii precum: medicină, agircultura, transporturile și comunicațiile, aceștia contribuie la îmbunătățirea performanțelor de intervenție, precum și a celor de raționare atât cantitativ cât și calitativ.
Roboții mobili sunt roboți care se pot deplasa dintr-un loc în altul, fără asistența externă a unui operator uman. Aceștia au un mare avantaj spre deosebire de cei industriali care se pot deplasa numai într-un spațiu de lucru specific, că ei se pot deplasa într-un spațiu de lucru definit, liberi pentru a-și atinge scopurile. Această capacitate de mobilitate îi face potriviți pentru un repertoriu larg de aplicații atât în medii structurate cât și nestructurate.
Roboții mobili de teren se disting în roboți cu roți mobile și roboți mobili cu picioare, de asemenea sunt și vehicule aeriene fără pilot, cât și vehicule subacvatice autonome. Printre cei mai populari se numără roboții cu roți mobile, deoarece aceștia au o complexitate mecanică redusă cât și un consum redus de energie.Roboții cu picioare sunt potriviți pentru activități în medii non-standard. De obicei sistemele cu două, trei, patru sau șase picioare sunt de interes general, dar există desigur multe alte posibilități, roboții cu un singur picior sunt aplicații rare, datorită faptului că aceștia se pot deplasa numai prin țopăit.
CAPITOLUL I
STRUCTURA GENERALĂ A UNUI ROBOT
1.1 Ce este un robot?
Ce este de fapt un robot, este un sistem alcătuit din mai multe subsisteme. Un sistem este defapt un ansamblu de elemente, părți componente și legăturile dintre acestea. La rândul sau sistemul se compune din elemente care se numesc subsisteme, de aceea este realizată o catalogare a acestora prin numirea sistemelor: încadrarea sistemelor în categoria 1, iar subsistemele în categoria 2 etc. .
Compunerea sistemului din subsisteme și legaturlile dintre aceste subsisteme contribuie la realizarea structurii sistemului. Compunerea sistemelor din subsisteme este evidențiată de obicei prin scheme bloc, iar în subsisteme legăturile sunt evidențiate prin matrici de cuplare (prin care se face diferență dintre “intrări” și ieșiri”) și matrici de structură care ne arată care subsisteme sunt în legătură.
Structura unui robot este prezentată în figura de mai jos:
Figura 1.1 – Structura bloc a unui robot
Sistemul unui robot este nevoit să comunice cu mediul pentru a realiza funcțiile pe care le are, de aceea el este compus din următoarele:
Sistemul mecanic care este asemănat cu scheletului uman, deoarece astfel se definesc natură și amplitudinea mișcărilor ce pot fi realizate.
Sistemul de acționare prin care se realizează mișcarea efectivă a elementelor din sistemul mecanic. Sistemul de acționare este asemănător sistemului muscular uman.
Sistemul de comandă este cel care emite către sistemul de acționare comenzi și preia informații de la sistemul mecanic, de la sistemul de acționare și de la mediu pe care le prelucrează, acesta se aseamănă cu sistemul nervos uman.
Traductorii și aparatele de măsură au rolul de a prelua informații despre starea internă a robotului, adică accelerații relative, debite, temperature, presiuni, deplasări, viteze.
Senzorii preiau informații despre starea externa a robotului, carcaterizata prin parametrii mediului (temperature, presiune, compoziție, etc.) și acțiunea acestuia asupra robotului (cupluri, forțe etc.).
Senzorii si traductorii sunt asemanatoare organelor de simț:
Deplasarea roboților mobili se realizeaza cu ajutorul platformelor mobile, aceasta face parte din sistemul mecanic, și se aseamana cu aparatul locomotor al omului.
Un sistem de rang superior al sistemului mecanic este sistemul de conducere care se compune din sistemul de acționare și cel de comandă.
Roboții care sunt acționați hidraulic au un grup hidraulic care prepară și realizează circulația fluidului purtător de energie (ulei). Grupul hidraulic are rolul aparatului respirator și al celui digestiv al omului.
Prin mediu se înțelege spațiul în care robotul evoluează, cu fenomenele care se manifestă în acest spațiu și obiectele prezente aici. Obiectele cu care robotul intreractioneaza constituie periferia acestuia.
Legăturile dintre componentele care permit realizarea legăturii cu mediul și legăturile dintre componentele robotului sunt:
directe;
inverse (“feedback”).
Legăturile directe pot fi la sistemul de comandă atunci când sunt transmise comenzi către sistemul de acționare, iar acesta acționează asupra cuplelor cinematice conducătoare, axele sistemului mecanic, care apoi la rândul sau acționează asupra mediului cu efectuorul final.
“Feedback”, reprezintă totalitatea informațiilor furnizate către sistemul de comandă prin intermediul aparatelor de măsură, senzorilor și traductoarelor.
Fluxul de energie care este oferit de mediu sistemului de acționare al robotului și fluxul de energie disipat către mediu de robot sunt considerate tot legături.
1.2 SISTEMUL MECANIC UNUI ROBOT
În majoritatea cazurilor roboții trebuie sa realizeze :
cu ajutorul efectorilor finali, acțiuni asupra mediului;
percepție, realizata cu senzori si traductori, pentru a putea culege informațiile din mediul de lucru;
comunicare, pentru a putea efectua schimb de informații;
capabilitatea de a putea lua decizii în scopul realizării anumitor sarcini.
Structura unui robot este realizată astfel pentru îndeplinirea acestor funcții:
sistemul de programare si comandă;
sistemul mecanic;
sistemul senzorial;
sistemul de acționare.
Sistemul de programare și comandă este un ansamblu de programe și echipamente care contribuie la realizarea mișcării robotului.
Sistemul mecanic este alcătuit dintr-o serie de elemente care sunt îmbinate între ele prin cuple cinematice.
Sistemul senzorial este un ansamblu realizat din elemente specializate în transpunerea proprietăților ale diferitelor obiecte în informații.
Sistemul de acționare transformă o anumită energie în energie mecanică și asigură transmiterea ei la cuplele cinematice conducătoare.
Sistemul mecanic asigură mișcările robotului și transmiterea necesarului de energie pentru interacțiunea cu mediul, mai exact acesta are sarcină de a deplasa un anumit obiect. Partea care realizează această deplasare poartă numele de manipulator sau dispozitiv de ghidare.
Prin manipulare înțelegem schimbarea poziției în spațiu a unui obiect. Datorită utilizării mâinii de către om a fost determinate formarea cuvântului “manipulare”. Manipularea unui obiect se realizează prin modificarea poziției bazei efectuorului final, cu care obiectul este solidarizat. În acest scop, bază efecturoului final este solidarizată cu un element al dispozitivului de ghidare.
Dispozitivul de ghidare asigură efectuorului final mișcările și energia mecanică necesară, mișcări în conformitate cu acțiunea necesitata asupra mediului.
Subistemul din cadrul sistemului mecanic dedicate acestei interacțiuni este “efectuorul final”.
Efectorul final al robotului care manipulează obiecte se numește dispozitiv de dispozitiv de prehensiune. Din punct de vedere al teoriei mecanismelor, obiectul și partea de baza a dispozitivului de prehensiune formează o cupla cinematica de clasa a VI- a, inchisă, de obicei prin forță.
Dispozitivele de ghidare pot fi cu topologie: paralelă, serială sau mixtă.
Structura bloc a sistemului mecanic pentru un robot este următoarea:
Figura 1.2 – Sistemul mecanic al unui robot
Poziția – orientarea unui corp in spațiul tridimensional este definite cu ajutorul punctului caracteristic, și orientarea dreptei carcateristice, respective a dreptei auxiliare.
Pentru un obiect cilindric, punctul și dreapta caracteristică, auxiliară se reprezintă astfel:
Figura 1.3 – Punctul și dreapta caracteristică, auxiliară a unui obiect cilindric
Se intelege prin:
“Punct caracteristic”, un al obiectului, folosit pentru a defini poziția acestuia.
“Dreapta caracteristică”, este o dreaptă care trece prin punctul carcateristic.
“Dreapta auxiliară”, este o dreaptă perpendiculară in punctul carcateristic pe dreapta caracteristică.
Cu ajutorul dreptelor caracteristice si auxiliare se definește orientarea obiectului, de care apartin ambele drepte.
În modelul matematic al sistemului mecanic al robotului, originea este dată de punctul caracateristic, iar dreapta auxiliară și cea caracteristică reprezintă axele unui sistem de referință cartezian drept legat de obiect.
În variantele cu topologie serială, un mecanism component al acestuia, numit mecanism generator de traiectorie (mecanism de poziționare), realizează modificarea pozitiei punctului caracteristic si altul numit mecanism de orientare, realizează orientarea dreptelor caracteristică și auxiliară.
Pot fi definite:
Mecanismul de orientare ca fiind mecanismul sau articulația carpiana a robotului;
Mecanismul generator de traiectorie ca fiind “brațul” robotului.
Efectorul final are mai multe variante constructive cum ar fi:
Efectorul final al robotului destinat prelucrării obiectelor este o sculă;
Efectorul final al robotului destinat mișcării obiectelor este manipulatorul
Pentru procesul de prelucrare energia necesară este transmisă sculei prin intermediul robotului sau a unei surse suplimentară de energie, iar în acest caz efectorul final este o sculă cu un cap de forță. Capul de forță este alcătuit dintr-un motor și o transmisie mecanică.
Platforma mobilă reprezintă componenta sistemului mecanic care asigură modificarea poziției intregului ansamblu in mediu.
Platforma mobilă definește tipul robotului:
Robot staționar, atunci cand nu este inzestrat cu platforma mobilă;
Robot mobil, când este inzestrat cu platformă mobilă, dispozitivul de ghidare modifică poziția obiectului în raport cu platforma mobilă.
1.3 Construcția modulara a unui robot
Construcția modulară a unui robot este caracterizată prin:
Structura sistematică care se compune dintr-un ansamblu de dispozitive și sisteme care formează cuple cinematice conducătoare. Avantajul structurii sistemice este că asigură informațiile necesare pentru analiza cinematică și dinamică pentru sistemul mecanic si cel de acționare ale robotului. Dezavantajul ei este că funcțiile sistemelor de rang inferior robotului si particularitățile constructive ale acestora nu se reflectă decât parțial.
Structura funcțional-constructivă sau structura modulară pentru a putea fi puse în evidență proprietățile funcționale și constructive ale roboților (modul de robot) este cu dispozitive de ghidare cu topologie serială.
Modulul unui robot, reprezintă un subansamblu care se află în interdependență cu una sau mai multe cuple cinematice ale dispozitivului de ghidare și cu efectorul final.
Modulul de robot corelat cu cupla cinematică conducătoare are părțile "fixe" ale sistemului de acționare aferent cuplei cinematice conducătoare și traductoarelor / senzorilor, solidarizate cu structura de rezistență a unuia dintre elemente (i sau i+1). Legătura dintre două module vecine se realizează prin intermediul structurii de rezistență a elementului i. În acest mod, întregul robot cu dispozitivul de ghidare în topologie serială este de fapt constituit din "legarea în serie" a unui număr de module.
Modulul de robot corelat cu o singură cuplă cinematică poartă o denumire care este definită dupa funcția lui in cadrul robotului:
Astfel, exista module de:
De flexie-extensie;
De basuclare a brațului;
De ridicare a brațului;
De extensie a brațului;
De pronație-supinație;
De pivotare de baza;
De aducție-abducție;
Translații de baza.
Sunt reprezentabile schematic dupa normele ISO.
Modulul de orientare al unui robot este corelat cu toate cuplele cinematice ale sistemului de orientare, incluzând de atâtea ori componentele enumerate pentru modulul corelat cu o singură cuplă cinematică conducătoare, câte cuple cinematice conducătoare are mecanismul de orientare.
În urmatoarea figură este reprezentată corelația dintre structura sistemică și cea modulară (funcțional – constructivă) a unui robot având un dispozitiv de ghidare serial cu M = 3.
Figura 1.3 – Schema structurală modulară a unui robot
În care:
T/S – Traductoare/Senzori;
SSA – Subsistem de acționare;
CCC – Cuplă cinematică conducătoare;
A/B/C – Modulul;
EF – Efector final;
ELi Elementul i (i = 0, 1, 2, 3).
Roboții care au dispozitive de ghidare cu topologie funcțională paralelă sau mixtă, au unul din module aparținând structurii funcțional-constructive constituit din două platforme legate una de cealaltă prin conexiuni
Structura funcțional-constructivă cu module tipizate a roboților, constituie o dezvoltare mai departe a concepției constructive cu module tipice ale acestora.
Modulul tipizat al unui robot, reprezintă un modul din cadrul unei structuri constructiv-funcționale, care constituie un ansamblu de sine stătător, interschimbabil cu alte module, care fac parte dintr-o serie de module tipizate și care poate fi asamblat cu alte module tipizate, în conformitate cu cerințele utilizatorului.
În figura de mai jos sunt reprezentate mai multe module tipizate din cadrul unor structuri funcțional-constructive de robot, alcătuit din module. Acestea pot fi asamblate într-o concepție a “baukasten”, în structuri diferite, alcătuind o familie de roboți compuși din module tipizate.
Figura 1.4 – Module tipizate din cadrul unor structuri funcțional-constructive
În care:
1 – Modul de translație de bază ;
2 – Batiu ;
3 – Modul de ridicare braț ;
4 – Modul de rotație de bază ;
5 – Modul de basculare braț ;
6, 7 – Module de extensie braț ;
8, 9 – Module de orientare ;
10 – Robot cu mecanism generator de TTT, obținut prin combinarea modulelor 1+3+7 ;
11 – Robot cu mecanism generator de traiectorie TRRT, obținut prin combinarea modulelor 1+4+5+6 ;
12 – Robot RTT obținut din modulele 4+3+7.
Efectorul final se consideră de regulă un modul al robotului ca și sistemul de comandă (cu excepția traductoarelor / senzorilor înglobați în alte module).
În următoarele figuri (a,b,c,d) se prezintă desenele de subansamblu ale unor module de roboți:
Figura 1.5 – Module de roboți
Dezvoltarea roboților construiți cu ajutorul modulelor interschimbabile a fost apreciată, de către constructorii de roboți încă de la începutul anilor 1980. Înmulțirea numărului aplicațiilor industrial ale roboților și concentrarea fabricației de roboți, la un număr mai redus de firme care fabrică mai mulți roboți pe an, a dus la diminuarea construcției de roboți din module tipizate după 1990.
1.4 Structura roboților mobili
Structura unui robot mobil (RM) corespunde arhitecturii generale a roboților și se compune din două părți:
Structura mecanică, respectiv manipulatorul, care determină performanțele tehnice;
Structura electronică, care asigură comandă și controlul, dar care condiționează și calitatea performanțelor.
În general cele mai frecvente probleme în realizarea robotului apar la, structura mecanică de volum, cost și masă redusă, pentru transmiterea mișcării și adaptarea la structură mecanică a motoarelor electrice și
hidraulice, la proiectarea brațelor mecanice pentru a putea apuca obiecte de diferite forme.
Structura electronică permite datorită nivelului tehnologic de la ora actuală utilizarea unui microcontroler sau a unui microprocesor în funcție de scopul pentru care este proiectat robotul, pentru a realiza comanda fiecărui grad de mobilitate, precum și a altor microprocesoare specializate pentru tratarea semnalului senzorial.
Robotul mobil interacționează cu mediul înconjurător prin structura sa mecanică, asigurând astfel deplasarea, orientarea și poziționarea organului de execuție.
Structura mecanică a roboților mobili este formată din:
Sistemul de manipulare, care îi asigură robotului orientarea și poziționarea părții componente destinată lucrului;
Sistemul de locomoție (pe roți sau șenile), prin care se asigură deplasarea pe o suprafața de lucru (în cadrul unei autonomii sporite).
1.5 Sistemul de locomoție cu șenile
Sistemul de deplasare cu șenile este reprezentat mai jos și are în componența:
O roată de întindere;
O roată motoare;
Două sau mai multe roți purtatoare;
Șenila,este realizată ca un lanț articulat plan;
Una sau două roți de susținere a șenilei.
Figura 1.6 – Sistem de locomoție cu șenile
Roata motoare este o roată dințată conducătoare care angrenează lanțul articulate ce formează șenila. Ghidarea și întinderea șenilei este asigurată de către roata dințată.
Roțile purtătoare asigură punctele de sprijin și de rulare, aceste puncte se obțin pe ramura inferioară a lanțului șenilei care formează ramura întinsă și interacționează cu suprafața terenului.
Ramura superioară conține puncte de susținere formate de către roțile de susținere, aceasta este ramură slăbită, liberă a șenilei.
Șenila se compune din eclise de cauciuc, cu armătură metalică, montate articulate cu bolțuri pentru realizarea lungimii totale necesare.
Pentru a obține aderența la sol, șenila este prevăzută la partea exterioară cu proeminențe în X, iar pe partea interioară sunt prezenți dinți pentru angrenarea cu roata motoare. Indiferent de construcție, șenila formează o cale de rulare fără sfârșit, prin care se obține propulsia robotului, se asigură aderența acestuia cu solul și se obține o presiune specifică pe sol mult mai mică decât în cazul altor soluții.
Roata motoare este acționată cu ajutorul unui motor electric de curent continuu, care se alimentează de la un grup electrogen corespunzător sau de la baterii de acumulatoare.
Reductorul este de tip armonic (cu roată dințată elastică și cu deformator) și este prevăzut cu cuplaj ireversibil, care asigură frânarea atunci când robotul este oprit în pantă.
Sistemul de locomoție cu șenile permite mișcarea robotului înainte, înapoi, efectuarea virajelor la stânga și la dreaptă, precum și o rotație în plan orizontal. De asemenea permite robotului urcarea pantelor pană la 45˚.
1.6 Sistemul de locomoție cu roți
Sistemul de locomoție cu roți este prevăzut cu pneuri ceea ce îi permite o viteză mult mai mare de deplasare față de cel cu șenile.
Roboții echipați cu un asemnea sistem acționează în locuri în care terenul este pietruit sau asfaltat, deoarece posibilitățile lor de a trece peste obstacolele înatalnite în cale sunt mai mici decât în cazul celor care sunt echipați cu șenile.
În funcție de sarcina care trebuie manipulată și masa robotului sistemele de locomoție cu roți pot fi prevăzute cu 3, 4, sau 6 roți, fiecare roată acționând de regulă individual.
De obicei roțile situate la mijloc sunt articulate la o osie fixată de sașiu, iar roțile extreme sunt articulate la un set de brațe capabile să oscileze în plan vertical, în raport cu șasiul.
In figura de mai jos este prezentat un sistem de locomoție cu 6 roți:
Figura 1.7 – Sistem de locomoție cu 2×3=6 roți
Acționarea se face în mod independent pentru fiecare roată motoare, cu ajutorul motoarelor electrice de current continuu, folosindu-se reductoare armonice, iar alimentarea fiind preluată de la grupuri electrogene adecvate sau de la baterii de acumulatoare.
Acest tip de sistem cu roți permite robotului să se deplaseze înainte și înapoi, dar și să poată efectuă virajele la stânga și la dreapta, precum și efectuarea unei rotații în plan orizontal. De menționat faptul că în cazul acestui tip de sistem cu roți spre deosebire de cel cu șenile raza de virare este mai mare.
Raza de virare poate fi modificată de la o valoare minimă (fig. 1.8a) la o valoare maximă (fig. 1.8b):
Figura 1.8 – Virarea șasiului la stânga
CAPITOLUL II
TIPURI DE SENZORI FOLOSIȚI ÎN ROBOTICĂ
În robotică este folosit un număr vast de senzori diferiți, care folosesc diferite tehnici de măsură cât și interefețe diferite cu un controller. Din nefericire, acest lucru face ca acest subiect să fie foarte greu de acoperit. Însă am ales mai mulți senzori, des folosiți în aplicații cu roboți pe care îi voi prezenta în detaliu atât din punct de vedere hardware cât și software.
Lucrul cel mai important în alegerea unui senzor pentru o aplicație implică: o tehnică de măsură corectă, o greutate potrivită, o mărime potrivită, un interval eficient al temperaturii de funcționare, cat si un consum de energie redus, dar și gama de cost corectă, deoarece aceste lucruri reflectă eficiența și costurile aplicației aleasă.
Transferul de date de la senzori către microprocesor se poate face prin inițializarea acestuia adică prin a “polling” (votare), sau prin inițializarea făcută de către senzor prin întrerupere. În cazul în care microprocesorul este inițializat acesta trebuie să verifice dacă senzorul este pregătit prin citirea unei linii de stare într-o buclă. Această metodă consumă mai mult timp decât cealaltă alternativă, realizarea transferului de date cu ajutorul inițializării senzorului necesită disponibilitatea unei linii de întrerupere. Senzorul poate trimite semnale prin intermediul unei întreruperi prin care să semnalizeze că datele sunt pregătite, iar microprocesorul poate reacționa imediat la această cerere.
Figura 2.1 – Tabel cu semnale de ieșire ale senzorilor și tipuri de aplicații
2.1 Categorii de senzori
Din punctul de vedere al unui inginer este logic, ca senzorii să fie clasificați în funcție de semnalele de ieșire. Acest lucru este important pentru interfațarea cu un sistem integrat. Figura 2.1 de mai sus prezintă un rezumat al ieșirilor de senzori tipice împreună cu exemple de aplicații. Cu toate acestea, o clasificare diferită este necesară când ne uităm la partea de aplicații. Această clasificare este realizată în tabelul de mai jos.
Figura 2.2 – Tabel de clasificare al senzorilor
Din punctual de vedere al unui robot este mai important să poată distinge:
Senzorii locali sau de la bord (montați pe robot);
Senzorii globali (senzorii montați în exteriorul robotului, amplasați în mediul în care acesta își desfoasoara activitatea și senzorii transmițători care transmit date înapoi către robot).
Pentru roboții mobili este deasemenea important sa poată distinge:
Senzorii interni sau proprioceptivi (senzorii care monitorizeaza starea interna a robotului);
Senzorii externi (senzorii care monitorizeaza mediul robotului).
O alta distingere este realizată între:
Senzorii pasivi (senzori care monitorizează mediul fară a interacționa cu acesta spre exemplu: camera digitală, giroscop etc.);
Sezorii activi (senzorii care stimulează mediul pentru a-și realiza propriile masuratori de exemplu: scanner-ul cu laser, senzorul cu infraroșu, sonarul etc.).
2.1.1 Senzori binari
Senzorii binari sunt cei mai simpli. Aceștia nu returnează decât un singur bit de informație și anume 0 sau 1. Un exemplu adecvat este un senzor tactil montat pe un robot, de exemplu un microswitch. Interfațarea sa cu un microcontroler poate fi realizată foarte simplu folosind o intrare digitală a controlerului. În figura 2.3 este prezentată folosirea unui rezistor pentru a realiza legătura la o intrare digitală. În acest caz, o rezistență de pull-up va genera un semnal mare, dacă întrerupătorul nu este activat. Aceasta se numește setare de “active low”.
Figura 2.3 – Interfațarea unui senzor tactil
2.2 Senzori analogici versus senzori digitali
O serie de senzori produc semnale de ieșire analogice în loc de semnale digitale. Acest lucru aduce necesitatea unui convertor analog / digital, pentru a putea fi realizată conexiunea unui senzor analogic cu un microcontroler. Exemple tipice de astfel de senzori sunt: senzor de distanță analogic cu infraroșu, microfon, compasul analogic, barometru etc..
Senzorii digitali pe de altă parte sunt mult mai complecși, decât senzorii analogici și de foarte multe ori mult mai preciși. În unele cazuri același senzor este disponibil fie în variantă analogică fie în cea digitală, însă de obicei senzorul analogic este ambalat cu un convertor A/D.
Semnalele de ieșire pot avea diferite forme. Poate exista fie o interfață paralelă (de exemplu 8 sau 16 linii de ieșire digitale), fie o interfață serială (de exemplu urmărind standard-ul RS232) sau o interfață a“sincronă serială”. Expresia “sincronă serială” se referă la faptul că valorile datelor convertite sunt citite bit cu bit de la senzor. După setarea liniei de cip-activă pentru senzor, microprocesorul trimite impulsuri prin intermediul liniei de ceas și în același timp, citește 1 bit de informație de la linia de informații a senzorului, un singur bit pentru fiecare puls (de exemplu pentru fiecare margine în creștere). În figura 2.4 poate fi observat un exemplu de senzor cu o lățime de ieșire de 6 biți a unui cuvânt.
Figura 2.4 – Semnal de sincronizare pentru interfața serială sincronă
2.3 Encodere optice și magnetice pentru detecția mișcării și a poziției
Encoderele sunt necesare ca senzori de feedback fundamentali pentru controlul motoarelor. Există mai multe tehnici în construcția unui encoder. Cele mai folosite sunt encoderele magnetice sau optice. Encoderele magnetice folosesc un senzor cu efect Hall și un disc rotativ montat pe axul motorului cu un anumit număr de magneți de exemplu 16 montați în cerc. La fiecare mișcare de revoluție a motorului axul conduce magneții prin dreptul senzorului Hall, rezultând astfel 16 impulsuri pe linia encoderului. Encoderele optice standard folosesc un sector din disc cu segmente albe și negre, împreună cu un led și o fotodiodă. Fotodiodă detectează lumina reflectată când prin dreptul ei trece un segment alb, iar atunci când prin dreptul ei trece un segment de culoare neagră aceasta nu detectează. Deci prin urmare dacă discul este alcătuit din 16 segmente albe și 16 negre, senzorul va recepționa 16 impulsuri pe durata unei mișcări de revoluție. Encoderele sunt de obicei montate direct pe arborele motorului (asta înaintea cutiei de viteze), astfel încât acestea să aibă o rezoluție completă, comparativ cu viteza de rotație mult mai lentă axului roții orientat în jos. Spre exemplu dacă avem un encoder care detectează 16 impulsuri pentru fiecare mișcare de revoluție și o cutie de viteze cu o rație de 100:1 între motor și roata vehiculului, deci rezultă un encoder cu o rezoluție de 1600 de impulsuri pentru fiecare mișcare de revoluție a roții.
Ambele timpuri de encodere descrise mai sus sunt numite “incrementale”, deoarece acestea pot număra un număr de segmente începând de la un anumit punct de start. Ele nu sunt suficiente pentru a detectă poziția absolută a axului motorului. Dacă este necesară poziția absolută, poate fi folosit un disc cu codul Gray în combinație cu un set de senzori. Acest număr de senzori determină rezoluția maximă a acestui tip de encoder (de exemplu dacă avem 3 senzori, acestea dau o rezoluție de 23=8 sectoare). De reținut, că pentru fiecare tranziție între 2 sectoare vecine de pe discul cu codul Gray, numai un singur bit se schimbă (de exemplu între 1 = 001 și 2 = 011). nu ar fi cazul Pentru o codare binară nu ar fi cazul (de exemplu 1 = 001 și 2 = 011). Aceasta este o trăsătură esentială pentru acest tip de encoder, deoarece el va reda o citire corectă chiar dacă discul doar trece printre cele 2 segmente (pentru codarea binară rezultatul ar fi arbitrar la trecerea printre 111 și 000).
Dupa cum am menționat, un encoder cu un singur senzor magnetic sau optic poate număra numai numărul de segmente care trec prin dreptul său. Însa acestea nu pot face diferența dacă axul motorului se învârte în sensul acelor de ceasornic sau contrar acestora. Acest lucru este deosebit de
important pentru aplicații cum ar fi vehiculele robot, care ar trebui sa fie capabile sa mearga inainte și inapoi. Din acest motiv majoritatea encoderelor sunt echipate cu 2 senzori (magnetic sau optic) care sunt poziționate cu un mic defazaj între ele. Cu acest aranjament este posibilă determinarea direcției de rotație a axului de la motor, din moment ce este înregistrat care din cei doi senzori primește impuls pentru un nou segment. În figura 2.5 Encoderul 1 primește primul semnal, iar apoi mișcarea se desfășoară în sensul acelor de ceasornic, dacă Encoderul 2 primește impuls, atunci mișcarea are loc contrar sensului acelor de ceasornic.
Figura 2.5 – Encodere optice incrementale versus codul Gray absolut
Din moment ce fiecare din cei doi senzori ai unui encoder sunt senzori digitali binari, aceștia pot fi interfațați cu un microcontroller folosind 2 linii de intrare digitale. Oricum acest lucru nu ar fi foarte eficient, deoarece atunci controlerul ar trebui să supună la vot în mod constant liniile de date de la senzori pentru a înregistra orice modificări și pentru a actualiza numărul de sector.
Din fericire acest lucru nu este necesar, deoarece, majoritatea microcontrolerelor moderne (spre deosebire de microprocesoarele standard) au o intrare hardware specială pentru cazuri ca acesta.
De obicei acestea sunt numite “registre numărătoare de impulsuri” și pot număra impulsurile recepționate până la o anumită frecvență, complet independent de CPU. Asta înseamnă că CPU-ul nu este încetinit și deci este liber să lucreze la programe de nivel superior.
Prin urmare encoderele sunt senzori standard destinați roboților mobili pentru a determină poziția cât și orientarea acestora.
2.4 Convertorul A / D (analog / digital)
Un convertor A / D transformă un semnal analogic într-o valoare digitală. Caracteristicile unui conervtor A / D includ:
Precizie exprimată în numărul de digiți pe care îl produce pentru fiecare valoare (de exemplu, 10 biți convertor A / D);
Viteza exprimată prin numărul maxim de conversii pe secundă (de exemplu, 500 de conversii pe secundă);
Intervalul de măsurare exprimat in volți (de exemplu, 0…5 Volți).
Convertoarele analog / digitale vin în mai multe variante. Formatul de ieșire de asemenea variază. Cele tipice sunt fie o interfață serială (de exemplu până la 8 biți de precizie) sau o interfață serială sincronă reprezentată în subcapitolul 2.2. În cele din urmă are avantajul că nu impune nicio limitare privind numărul de biți pe măsură, de exemplu, 10 sau 12 biți de precizie. În figura următoare este reprezentat un aranjament tipic al unui convertor A / D conectat la un procesor.
Figura 2.6 – Interfațarea unui convertor A / D
Foarte multe module de conversie A / D includ de asemenea un multiplexor care permite conexiunea mai multor senzori, ale căror date pot fi citite și convertite ulterior. În acest caz, modulul de conversie A / D are de asemenea o linie de intrare de 1 bit, care permite specificarea unei anumite linii de intrare, utilizând transmisia serială sincronă (de la CPU la convertorul A / D).
2.5 Dispozitive senzitive de poziție
Senzorii pentru măsuratorile de distanță sunt printre cei mai importanți din robotică. Timp de decenii, roboții mobili au fost echipați cu senzori diferiți, pentru măsurarea distanțelor până la cel mai apropiat obstacol din jurul robotului, în scopuri de navigare.
În trecut cei mai mulți roboți erau echpati cu senzori sonar (adesea senzori Polaroid). Datorită conului relativ îngust al acestor senzori, pentru acoperirea întregii cicumferinte a unui robot rotund sunt necesari 24 de senzori, care cartografiază 15° fiecare. Senzorii sonar folosesc următorul principiu de funcționare: un semnal acustic scurt de 1ms este emis la o frecvență ultrasonica cuprinsă între 50 de khz și 250 de khz, apoi este măsurat timpul de la semnalul de emisie până la întoarcerea ecoului la senzor. Timpul de zbor măsurat este proporțional cu de 2 ori distanță de cel mai apropiat obstacol în conul de senzor. În cazul în care nu este primit niciun semnal într-un anumit interval de timp, atunci înseamnă că niciun obstacol nu a fost detectat în cadrul distanței corespunzătoare. Măsuratorile sunt repetate cam de 20 de ori pe secundă ceea ce dau senzorului sunetul tipic de clic.
Figura 2.7 – Senzor sonar
Senzorii sonar au un număr de dezavantaje, dar sunt în același timp un sistem foate puternic de senzori. Problemele cele mai importante ale acestor senzori sunt reflexiile și interferențele. Când un semnal acustic este reflectat, de exemplu față de un zid la un anumit unghi, atunci obsatacolul pare să fie mai departe decât zidul real care a reflectat semnalul. Interferențele apar
atunci când sunt operați mai mulți senzori în același timp (fie între cei 24 de senzori unuia dintre roboți, fie printre mai mulți roboți independenți). Aici se poate întâmpla ca semnalul acustic de la un senzor să fie preluat de către un alt senzor, de unde poate rezulta că obstacolul este mai aproape decât cel real. Semnalele sonar codate pot fi utilizate pentru a preveni acest lucru , de exemplu, folosind pseudo-coduri aleatoare.
Astăzi, în multe sisteme robot, senzorii sonar au fost înlocuiți fie cu senzori cu infraroșu fie cu senzori laser. Standardul actual pentru roboții mobili este de senzori laser care returnează o hartă locală 2D aproape perfectă din punctul de vedere al robotului, sau chiar o hartă de distanță 3D.
Din nefericire acești senzori sunt prea mari și grei, pe lângă faptul că sunt prea scumpi pentru sistemele mici de robot mobil. Acesta este motivul pentru care ne concentrăm pe senzorii de distanță cu infraroșu.
Figura 2.8 – Senzor cu infrarosu
Senzorii cu infraroșu (IR) de distanță nu urmează același principiu că și senzorii sonar, din moment ce timpul de zbor al unui foton ar fi mult prea scurt pentru a fi măsurat cu un aranjament simplu și ieftin. În schimb, aceste sisteme folosesc de obicei un LED pulsatoriu cu infraroșu la o frecvență cam de 40 de khz împreună cu o matrice de detecție ca în figură de mai sus. Unghiul sub care fasciculul se reflectă primește modficari conform distanței față de obiect și de aceea poate fi folosit la măsurarea distanței. Lungimea de undă folosită este de obicei 880nm. Deși acest lucru este invizibil pentru ochiul uman, el poate fi transformat în lumină vizibilă fie prin
detectoare de infraroșu fie prin înregistrarea fasciculului de lumina cu o camera senzitivă la infraroșu.
În figura 2.9 este reprezentat un senzor SHARP GP2D02, care este construit într-un mod similar cum am descris mai sus. Există 2 variante ale acestui senzor:
Sharp GP2D12 care are ieșirea analogică;
Sharp GP2D02 cu ieșire serială digitală.
Senzorul analog simplu reurnează un nivel de tensiune în raport cu distanța masurată (din pacate nu proporționala, figura 2.9). Senzorul digital are o interfață digitală serială. El transmite o măsuratoare pe 8 biți, valoarea “bit-înțelept” pe o singura linie, declanșată de un semnal de ceas de la CPU (figura 2.4).
În figura 2.9, pot fi văzute relația dintre citirea senzorului digital (date brute) și informația despre distanță. Din această diagramă este clar că senzorul nu returnează o valoare lineară sau proporțională cu distanță actuală, astfel că este necesară o post-procesare a valorilor brute de la senzor. Cea mai simplă cale de a rezolva această problemă este prin a utiliza un tabel de căutare care poate fi calibrat individual pentru fiecare senzor. Deoarece sunt returnați doar 8 biți de date, tebelul de căutare va avea o dimensiunea rezonabilă de 256 de intrări. Un astfel de tabel de căutare este prevăzut în tabelul de descriere hardware (HDT) al sistemului de operare RoBIOS. Cu acest concept, calibrarea este necesară doar odată pentru fiecare senzor și este complet transparentă pentru programul aplicației.
Figura 2.9 – Senzor SHARP PSD și diagrama acestuia
O altă problemă devine evidentă atunci când privim diagrama cu privire la distanțele sub 6cm. Aceste distanțe sunt sub intervalul de măsurare ale acestui senzor și vor avea ca rezultat o citire incorectă a unei distanțe mai mari. Aceasta este o problemă mult mai serioasă, deoarece nu poate fi rezolvată într-un mod simplu. S-ar putea de exemplu, monitoriza continuu distanța cu un senzor până când ajunge în apropiere de 6cm. Cu toate acestea, de atunci este imposibil să știm dacă obstacolul se apropie sau merge mai departe. Cea mai sigură soluție este de a monta senzorul astfel încât obstacolul să nu se poată apropia la o distanță mai mică de 6 cm, sau prin folosirea unui senzor de proximitate cu infraroșu suplimentar, pentru a rezolva și problema obstacolelor aflate la o distanță mai mică de 6cm.
Comutatoarele de proximitate cu infraroșu sunt de o natură mult mai simplă decât PSD cu infraroșu. Comutatoarele de proximitate cu infraroșu sunt o variantă electronică echivalentă a senzorului tactil binar (figura 2.3). Acești senzori de asemnea returnează doar valori de 0 sau 1, dacă în fața senzorului este spațiu liber (de exemplu 1-2cm) sau nu. Comutatoarele de proximitate cu infraroșu pot fi folosite în loc de senzori tactili pentru cele mai multe aplicații care implică obstacole cu suprafețe reflectorizante. Ei au de asemnea avantajul, că nu sunt implicate componente mecanice în mișcare în comparație cu microcomutatoarele mecanice care au în componența părți mecanice care se pot deterioara de-a lungul timpului din cauza folosirii îndelungate.
2.6 Compasul
Compasul este un senzor foarte util în multe aplicații cu roboți mobili, în special pentru auto-localizare. Un robot autonom trebuie să se bazeze pe senzorii de la bord în scopul de a-și urmări poziția sa actuală și orientarea. Metoda standard pentru a realiza asta la conducerea unui robot este prin folosirea encoderelor cu ax pentru fiecare roată, apoi aplicând metoda “dead-reckoning” sau “drum estimat”. Această metodă pornește cu o orientare și poziție cunoscută, apoi adaugă toate acțiunle de conducere și de cotitura pentru a găsi poziția și orientarea actuală a robotului. Din păcate datorită alunecării roții și alți factori, eroarea de a “dead reckoning” va crește din ce în ce mai mult de-a lungul timpului. De aceea este o idee bună în a avea un senzor compas la bordul robotului pentru a determina poziția absolută a acestuia.
Un pas mai departe în direcția senzorilor globali ar fi interfațarea la un modul receptor pentru sistemul de poziționare globală prin satelit (GPS).
Modulele GPS sunt destul de complexe și aceastea conțin și ele la rândul lor un microcontroler. Interfațarea de obicei, funcționează printr-un port serial. Pe de altă parte, modulele GPS funcționează în aer liber în spații neobstrucționate.
Mai multe module de compase sunt disponibile pentru integrarea cu un controler. Cele mai simple module sunt compasele analogice care pot distinge doar 8 direcții, care sunt reprezentate de 8 nivele de tensiuni diferite. Aceștia sunt mai degrabă senzori ieftini, care sunt utilizați de exemplu ca și compase direcționale pentru mașini. Un astfel de compas poate fi conectat la o intrare al EyeBot (al ochiului robotului) și pragurile pot fi setate pentru a putea distinge cele 8 direcții. Un model potrivit de compas analogic este:
Senzorul Dinsmore numărul 1525 sau 1655.
Compasele sunt mult mai complexe, dar, de asemnea, oferă o rezoluție dreictională mult mai mare. Senzorul pe care l-am selectat pentru exemplificare, are o rezoluție de 1° si o precizie de 2°, și poate fi folosit in interior:
Vector 2X.
Acest senzor oferă linii de control pentru resetare, calibrare și modul de selecție, și nu toate trebuiesc folosite pentru toate aplicațiile. Senzorul trimite date folosind aceeași interfață digitală serială deja descrisă în subcapitolul 2.4. Senzorul este disponibil în varianta reprezentată mai jos sau în versiunea giroscopică care permite măsurători cu până la 15° mai precise.
Figura 2.10 – Compas Vector 2X
2.7 Giroscop, Acceleromteru, Înclinometru
Senzorii de orientare sunt necesari pentru a determina orientarea unui robot în spațiul 3D pentru proiecte cum ar fi roboți pe șenile, roboți pentru echilibrare, roboți care merg pe jos sau avioane autonome. O varietate de senzori sunt disponibili pentru acest scop, până la module complexe capabile de a determină orientarea pe toate cele 3 axe. Cu toate acestea ne vom concentra mai mult asupra senzorilor mai simpli, majoaritatea dintre ei capabili de a măsura doar o singură dimensiune. Doi sau chiar 3 senzori din același model pot fi combinați pentru a măsura orientarea pe 2 sau toate cele 3 axe.
Categoriile de senzori sunt:
1)Acceleometru:
Măsoară accelerația de-a lungul unei axe.
Dispozitive analogice ADXL05 (o singură axa, ieșire analogică)
Dispozitive analogice ADXL202 (două axe, ieșire PWM)
2)Giroscop:
Măsoară schimbarea rotațională a orientarii unei axe.
HiTec GY 130 Piezo Gyro (ieșire și intrare PWM)
3) Înclinometru:
Măsoară unghiul de orientare absolută al unei axe.
Seika N3 (ieșire analogică)
Seika N3d (ieșire PWM)
Figura 2.11 – Giroscop Piezo HiTec, înclinometru Seika
2.7.1 Accelerometru
Toți acești senzori simpli au un număr de dezavantaje și restricții. Majoritatea nu pot face față foarte bine unui bruiaj, care apar frecvent în conducerea roboților sau mai ales în cazul roboților care merg. În consecință, unele mijloace software trebuie să fie folosite pentru filtrarea semnalului. O abordare promițătoare este de a combină două tipuri diferite de senzori cum ar fi un giroscop și un inclinometru, iar apoi efectuarea unei fuziuni de senzori în soft.
Un număr de diferite modele de accelerometre sunt disponibile, capabile de a măsura o axă sau două axe în același timp. Ieșirea senzorului este fie analogică sau o ieșire de semnal PWM, care necesită să fie măsurată și transformată înapoi într-o valoare binară de către unitatea de sincronizare și procesare a procesorului.
2.7.2 Giroscopul
Giroscopul ales de la HiTec, este doar un reprezentant dintr-o gamă foarte largă, disponibile pentru modele de elicoptere și avioane. Aceste module sunt destinate să fie conectate între un receptor și un dispozitiv de acționare servo, astfel încât să aibă o intrare PWM și o ieșire PWM. În funcționare normală, de exemplu la un elicopter, semnalul de intrare PWM de la receptor se modifică în funcție de rotația măsurată de la axa giroscopului, iar un semnal PWM este produs la ieșirea senzorului, pentru a compensa rotația unghiulară.
Figura 2.12 – Giroscop deviat, in repaus si corecție
O problemă deosebită observată cu giroscopul piezo folosit (HiTec GY 130) este deviația: chiar atunci când senzorul nu este deplasat, iar semnalul PWM de intrare rămâne neschimbat, ieșirea senzorului alunecă în timp așa cum se vede în figura 2.12.
Acest lucru se poate datora modificărilor de temperatură în senzor și necesită compensare.
O alta problema cu aceste tipuri de giroscoape este ca acestea pot sesiza doar modificarea orientării (rotația in jurul unei singure axe), dar nu poziția absolută.
Figura 2.13 – Giroscop in miscare (integrat), brut si corectat
Figura 2.13 prezintă semnalul senzorului integrat pentru un giroscop care este mutat continuu între 2 orientări cu ajutorul unui dispozitiv servo. După cum se poate observa în figura 2.13 în partea din stânga, valorile unghiului rămân în limitele corecte pentru câteva iterații. Eroarea este datorată și din cauza deviației senzorului, dar și datorită erorii de iterație.
Următoarele tehnici se aplică pentru procesarea datelor obținute:
Reducerea zgomotului prin eliminarea valorilor date de punctele de observație.
Reducerea zgomotului prin aplicarea metodei de mișcare medie.
Aplicarea factorilor de scalare pentru a incrementa / decrementa unghiurile absolute.
Recalibrarea giroscop în repaus prin eșantionare.
Recalibrarea minimă și maximă în repaus, prin eșantionare.
Două seturi de limite sunt utilizate pentru determinarea și recalibrarea, caracteristicilor de repaus ale unui giroscop. Abaterile senzorului sunt acum eliminate (curba superioară figura 2.12). Valoara de ieșire integrată pentru unghiul de înclinare (figura 2.12 dreapta) prezintă semnalul liber de zgomot corectat. Valoarea măsurată este situată acum între limitele corecte și este foarte aproape de inghiul adevărat.
2.7.3 Înclinometru
Înclinometrul măsoară unghiul de orientare absolută într-un interval specificat, în funcție de modelul senzorului. Ieșirea senzorului este de asemenea dependentă de model, fie cu ieșire analogică a semnalului sau PWM fiind disponibile. Prin urmare, interfațarea la un sistem integrat este identică ca la accelerometre. Deoarece înclinometrele măsoară unghiul de orientare absolut în jurul unei axe și nu derivatul, ele par a fi mult mai potrivite în măsurarea unghiului de orientare decât un giroscop. Cu toate acestea măsuratorile, arată faptul că înclinometrul Seika suferă de un decalaj de timp atunci când se măsoară, și de asemnea sunt predispuse să oscileze atunci când sunt dispuse zgomotului pozițional , de exemplu cauzate de servo bruiaj.
În special la sistemele care necesită un răspuns imediat precum roboții de echilibrare, giroscoapele au un avantaj față de înclinometre. Spre urmare după prezentarea acestor tipuri de componente am ajuns la concluzia că soluția ideală este o combinație între un înclinometru și un giroscop.
2.8 Camera digitală
Camerele digitale sunt senzorii cei mai complecși utilizați în robotică. Acestea nu au fost utilizate în sisteme integrate până de curând, din cauza vitezei procesorului și a capacității mari de memorie necesară. Ideea centrală din spatele dezvoltării EyeBot (ochiului robotic) în 1995 a fost de a crea un sistem mic de viziune, compact încorporat, care a devenit ulterior primul de acest gen. Astăzi laptopurile, jucăriile electronice, camerele digitale cu procesare a imaginii, telefoanele mobile dotate cu o astfel de cameră la bord sunt disponibile pe piața de consum.
Pentru aplicațiile de robot mobil, suntem interesați de o rată mare a cadrelor, pentru că robotul aflat în mișcare să poată furniza date actualizate la o viteză cât mai mare posibilă. Deoarece întotdeauna există un compormis între rata mare de cadre și rezoluția înaltă, nu suntem atât de îngrijorați în privința rezoluției camerei. Pentru majoritatea aplicațiilor cu roboți mobili
mici, o rezoluție de 60×80 de pixeli este suficientă. Chiar și la o rezoluție așa de mică se pot detecta de exemplu, obiecte colorate sau obstacole în calea unui robot. La această rezoluție, rata cadrelor, de până la 30 de cadre pe secundă sunt realizabile pe un controler EyeBot. Rata de cadru va scădea cu toate acestea, în funcție de alogritmii de procesare a imaginii aplicați. Rezoluția imaginii trebuie să fie suficient de mare pentru a detecta un obiect dorit de la o distanță specificată. Atunci când obiectul din distanță se reduce la câțiva pixeli, atunci acest lucru nu este suficient pentru un algoritm de detecție. Multe rutine de nivel înalt în procesare a imaginii nu sunt lineare în cerințele de timp.
Figura 2.14 – Imagini simple la rezoluție de 60×80
Din păcate pentru aplicațiile integrate de vizualizare, cipurile mai noi de fotografiat au rezoluții mult mai mari de exemplu, QVGA, până la 1024×1024, în timp ce cipurile de rezoluție scăzută nu mai sunt produse. Acest lucru înseamnă că mai multe date sunt transferate și de obicei la o rată mult mai mare de transfer. Acest lucru implică, componente hardware mult mai rapide doar pentru a ține pasul cu rata de transfer a camerei. Rata de transfer realizabilă va scădea la câteva cadre pe secundă fără alte beneficii, deoarece nu am fi avut spațiul necesar de memorie pentru a stoca imaginile de înaltă rezoluție lăsând la o parte viteza procesorului de a aplica algoritmi de procesare a imaginii pentru ele.
În figura 2.15 poate fi observat un modul de cameră EyeCam, care este utilizat cu un controler încorporat numit EyeBot. EyeCam C2 are în plus, față de ieșirea digitală, un port de ieșire video analogic în tonuri de gri, care poate fi utilizat în calibrarea rapidă a lentilelor sau pentru înregistrare video analogică, de exemplu în scopuri demonstrative.
Figura 2.15 – Modul de cameră EyeCam
2.8.1 Partea harware a senzorului de cameră
În ultimii ani s-a produs o schimbare în rândul tehnologiei senzorilor de cameră. Cei dominanți anterior senzorii CCD (dispositive cu cuplaj de sarcină), fiind acum depășite de senzorii mult mai ieftini de produs CMOS (semiconductorul complementar metal oxid). Gama de sensibilitate a senzorilor CMOS este de obicei mai mare decât cea a senzorilor CCD cu câteva ordine de mărime.
Interfețele tipice pentru senzorii de cameră sunt de 16 biți în paralel, 8 biți în paralel, 4 biți în paralel sau seriale. Doar câțiva senzori sunt necesari pentru preîncarcarea imaginii și pentru citirea arbitrară lentă de la controler prin dialog de confirmare. Aceasta este o soluție ideală pentru controlere mai lente.
Cu toate acestea cipul standard își asigură propriul semnal de ceas și trimite datele complete de imagine ca un flux cu un anumit semnal cadru de start. Asta înseamnă că, controlerul de la processor trebuie să fie suficient de rapid astfel încât să țină pasul cu fluxul de date. Parametrii software care pot fi setați variază între cipurile de senzori. Cei mai comuni sunt stabiliea ratei cadrelor, începutul de imagine în (x,y), dimensiunea imaginii în (x,y), luminozitatea, contrastul, intensitatea culorii și auto-luminozitatea.
Cea mai simplă interfață cu un CPU este prezentată în figură 2.16. Ceasul camerei este legat la o întrerupere a procesorului, în timp ce producția de date de la camera paralelă este conectată direct la magistrală date.
Figura 2.16 – Interfața unei camere
Fiecare întrerupere creează un avans considerabil, din moment ce registrele trebuie să fie salvate și restaurate în stivă. Pornind și revenind de la o întrerupere durează cam de 10 ori timpul de execuție al unei comenzi normale, în funcție de microcontrolerul folosit. Prin urmare, creând o întrerupere pentru fiecare bit de imagine, nu este cea mai bună soluție. Ar fi mai bine folosirea unei memorii tampon pentru a memora un număr de biți și apoi folosirea unei întreruperi mai puțin frecvente pentru a face un transfer mai mare de date de imagine. Figura 2.17 prezintă această abordare, folosind un tampon FIFO pentru intermedierea pentru stocarea datelor de imagine. Avantajul unui tampon FIFO este că suportă citire și scriere paralelă nesincronizată.
În timp ce camera scrie date în memoria FIFO, procesorul poate citi date de ieșire, cu conținuntul memoriei tampon rămase sau nefolosită. Ieșirea camerei este legată la intrarea FIFO, cu ceasul camerei de pixeli declanșând linia de scriere FIFO. Din partea procesorului, ieșirea de date FIFO este conectată la magistrala de date a sistemului, iar cu cip select declanșând linia de citire FIFO. FIFO mai oferă 3 linii de stare suplimentare.
Flag gol;
Flag complet;
Flag pe jumătate complet.
Aceste ieșiri digitale FIFO pot fi folosite pentru citirea vrac de date de la FIFO. Din moment ce există un flux de date continuu care intră în FIFO, cea mai importantă dintre aceste linii în aplicațiile noastre fiind “flag pe jumătate complet”, pe care l-am conectat la linia de întrerupere a procesorului. Ori de câte ori FIFO este pe jumătate plină, dacă vom iniția o operațiune de citire vrac de 50% din conținutul FIFO, presupunând că
procesorul va răspunde destul de repede, flag-ul complet nu ar trebui să fie activat, deoarece acest lucru ar indica o pierdere iminentă a datelor de imagine.
Figura 2.17 – Interfață de cameră cu memorie tampon FIFO
CAPITOLUL III
ELEMENTE DE ACȚIONARE PENTRU DEZVOLTAREA SISTEMELOR ROBOTICE
Există mai multe moduri diferite în care elementele de acționare robotice pot fi construite. Majoritatea dintre ele cele mai folosite sunt motoarele electrice sau elemente de acționare pneumatice cu supape. În acest capitol vor fi prezentate motoare de acționare electrice de curent continuu de putere. Acestea sunt motoare standard de curent continuu, motoare pas cu pas, și dispozitive servo, care sunt motoare de curent continuu cu hardware-ul de poziționare încapsulat și nu trebuiesc confundate cu motoarele servo.
3.1 Motoare de curent continuu
Motoarele de curent continuu sunt metoda cea mai frecvent utilizată pentru locomoție în aplicațiile cu roboți mobili. Motoarele de curent continuu sunt silențioase, curate din punct de vedere al poluării și pot produce suficientă putere pentru o varietate de sarcini. Ele sunt mult mai ușor de controlat decât elementele de acționare pneumatice, care sunt în principal utilizate dacă sunt necesare cupluri foarte mari și corzi ombilicale externe pentru pompele de presiune externe dacă sunt disponibile, deci acestea nu sunt o opțiune pentru aplicațiile cu roboți mobili.
Motoarele de curent continuu gravitează în mod liber, spre deosebire de motoarele pas cu pas. Prin urmare, controlul motorului necesită un mecanism de feedback cu ajutorul unui encoder cu ax la fel ca în figura 3.1.
Figura 3.1 – Combinație între un motor și un encoder
Primul pas în construcția hardware a unui robot este selctarea unui sistem motor adecvat. Cea mai bună alegere este cea cu motor încapsulat cuprinzând:
Motor de curent continuu;
Cutie de viteze;
Encoder optic sau magnetic (dublu fazate pentru detecția vitezei și a direcției).
Utilizarea sistemelor cu motor încapsulat are avantajul că soluția este mult mai mică referitor la spațiul ocupat în sistem, decât folosirea modulelor separate și în plus este și rezistent la praf și protejate împotrivă luminii accidentale (necesar pentru encoderele optice). Dezavantajul în a folosi acest ansamblu fix este că raportul de transmisie poate fi schimbat doar cu dificultate sau deloc. În cel mai rău caz, un motor nou / o cutie de viteze în combinație cu un encoder trebuiesc folosite. Un encoder magnetic cuprinde un disc prevăzut cu un anumit număr de magneți și unul sau doi senzori cu efect Hall. Un encoder optic, cuprinde un disc cu sectoare albe și negre, un LED, și un seznor reflexiv sau transmițător de lumină. Dacă doi senzori sunt poziționați cu o schimbare de fază, este posibil să se detecteze care este declanșat primul (folosind un magnet pentru encoderele magnetice sau un sector luminos pentru encoderele optice). Aceste informații pot fi utilizate pentru a determina dacă axul motorului se învârte în sensul acelor de ceasornic sau contrar acestui sens. Un număr de companii oferă motoare mici, puternice de precizie încapsulate cu cutii de viteze și encodere:
Fulhaber;
Minimotor;
MicroMotor.
Toate au o varietate de combinații de motor și de cutii de viteze disponibile, așa că este important în a realiza referitor la cerința de putere, pentru a selecta motorul și cutia de viteze potrivite pentru un nou proiect de robotică. De exemplu, există o serie de motoare Falhauber cu o putere cuprinsă între 2 și 4 Wați, și cu rapoarte de transmisie disponibile de la aproximativ 3:1 la 1.000.000:1.
Figura 3.2 – Model de motor
Tabelul 3.1 – Vaiabile și valori constante pentru un motor de curent continuu
Figura 3.2 ilustreaza un model liniar eficient pentru un motor de curent continuu, iar tabelul conține variabilele relevante și valori constante. O tensiune Va este aplicata la bornele motorului, care generează un curent i in armatura motorului. Cuplul produs de motor τm este proporțional cu curentul și cuplul constant al motorului Km.
τm = Km x i
În alegerea motorului pentru aplicație este importantă puterea de ieșire a acestuia. Puterea de ieșire este definită ca rata de lucru, care pentru un motor de curent continuu echivalează cu viteza unghiulară a axului ω înmulțită cu cuplul aplicat τa:
= τa x ω
Puterea de intrare Pi care alimentează motorul este egală cu tensiunea aplicată înmulțită cu curentul prin motor:
Pi= Va x i
De asemnea motorul generează caldura ca un efect al curentului care trece prin armatură. Puterea pierdută Pt datorită efectului termic este egală cu:
Pt = R x i2
Randamentul motorului η evidențiază cât de bine este transformată energia electrică în energie mecanică. Acest lucru poate fi definit ca puterea de ieșire produsă de către motor împărțită puterea de intrare necesitată de motor:
η =
Eficiența nu este pentru toate vitezele, iar acest lucru trebuie reținut pentru aplicațiile în care gama de viteze diferă. Sistemul electric al motorului poate fi modelat cu un circuit RL în serie cu o tensiune, ce corespune tensiunii electromotoare de întoarcere Vemf. Această tensiune se produce datorită bobinelor motorului care se mișcă printr-un câmp magnetic. Tensiunea produsă
poate fi aproximată ca o funcție liniară a vitezei axului; Ke mentionată ca și electrom. de întoarcere:
Ve = Ke ω
În modelul simplificat al motorului de curent continuu, inductanța motorului și fricțiunea motorului sunt neglijabile și sunt 0, iar inerția rotorului este notată cu J. Formulele pentru curent și accelerația unghiulară, atunci pot fi aproximate astfel:
i =
Figura următoare prezintă curbele de performanță ale unui motor de curent continuu ideal. Cu un cuplu crescător, viteza motorului este redusă liniar, în timp ce curentul crește liniar. Puterea de ieșire maximă este atinsă la un nivel mediu al cuplului, în timp ce eficiența maximă este atinsă pentru valori mici ale cuplului.
Figura 3.3 – Curbele de performanță ale unui motor de curent continuu ideal
3.2 Puntea H
Pentru cele mai multe aplicații dorim ca un motor să poată fi capabil să facă 2 lucruri:
Să poată rula în 2 direcții înainte și înapoi;
Să îi putem modifica viteza.
O punte H este ceea ce ne este necesar pentru a putea rula un motor înainte și înapoi. În secțiunea următoare vom discuta despre o metodă numită “modulatia în durata a impulsurilor” pentru a modifica viteza motorului. Figura 3.4 prezintă
configurația punții H de unde și-a primit și numele de la asemănarea cu litera a “H”. Să presupunem că avem un motor cu două terminale notate A și B, iar sursa de alimentare notată cu a “+” și a “-”. Dacă închidem comutatoarele 1 și 2, terminalul A se va conecta cu un a “+” și B cu a “-”: motorul execută mișcarea înainte. În același mod, dacă vom închide în loc de comutatoarele 1 și 2, comutatoarele 3 și 4 terminalul A se va conecta în schimb cu a “-”, iar terminalul B se va conecta cu a “+”, iar motorul se va mișcă înapoi.
Figura 3.4 – Model de punte H și modul de operare
Modul de implementare a unei punți H atunci când este folosită în combinație cu un microcontroler este prin legarea acesteia la ieșirile digitale ale microcontrolerului sau un acrosaj additional. Acest lucru este necesar din pricina faptului că ieșirile digitale ale microcontrolerului au restricții foarte severe de putere. Acestea pot fi folosite pentru a controla alte circuite logice, dar niciodată direct un motor. Din moment ce un motor poate trage o putere mare (de exemplu, 1 A sau mai mult), conectarea lui directă la ieșirile digitale ale unui microcontroler pot distruge microcontrolerul. Un amplificator de putere care conține două amplificatoare separate este
L298N de la ST SGS-Thomson. Figura 3.5 prezintă schema. Cele 2 intrări x și y sunt necesare pentru a comuta tensiunea de intrare, astfel încât una dintre ele să fie a “+”, iar cealaltă a “-”. Din moment ce acestea sunt decuplate electric de motor, intrările x și y pot fi legate direct la ieșirile digitale ale microcontrolerului. Deci direcția motorului va putea fi speficicata software, de exemplu configurând ieșirea x logică în 1 și ieșirea y logică la 0. Deoarece x și y sunt întotdeauna legate una în opoziția celeilalte , ele pot fi deasemenea, subsituite cu un singur port de ieșire și un Negator. Viteza de rotație poate fi specificată de “intrarea de viteză”.
Există 2 metode principale de oprire a unui motor:
Prin setarea ambelor intrari x și y in 0 logic (sau 1 logic);
Sau prin setarea vitezei la 0.
Figura 3.5 – Amplificator de putere
3.3 Modulația în durată a impulsurilor
Modulația în durată a impulsurilor sau PWM pe scurt este o metodă inteligenta pentru evitarea circuitelor de alimentare analogice utilizând faptul că sistemele mecanice au o anumită latență. În loc să genereze un semnal de ieșire cu o tensiune proporțională cu viteza dorită pentru motor, este suficient să genereze impulsuri digitale la nivele maxime de tensiune ale sistemului (de exemplu 5 Volți). Aceste impulsuri sunt generate la o frecvență fixă, spre exemplu 20 khz, astfel încât acestea să fie dincolo de gama auzului uman.
Variind durata impulsurilor în software (figura 3.6), de asemenea vom modifica semnalul analog echivalent sau efectiv al motorului și deci vom controla viteza motorului. S-ar putea spune că sistemul motor se comportă că un integrator al impulsurilor de pe intrările digitale peste un anumit interval de timp. Coeficientul ton / tperiod este numit “ciclu de funcționare”.
Figura 3.6 – Modulația în durată a impulsurilor
Modulația în durată a impulsurilor poate fi generate prin soft. Multe microcontrolere, cum ar fi AtMega324PA, M68332, AtMega328 etc. au moduri speciale și porturi de ieșire pentru a sprijini această operațiune. Portul de ieșire digitală cu semnal PWM este apoi conectat la pinul de viteză al amplificatorului de putere din figură 3.5.
Figura 3.7 – Viteză și măsurătoarea treaptă unitate a motorului versus raportul PW
În figura 3.7 în partea din stânga este reprezentată viteză motorului în timp pentru configurația PWM 10, 20, …, 100. În fiecare caz, viteză se acumulează la timp de 5s, cu o oarecare întârziere, apoi rămâne , și va încetini cu o
anumită inerție timp de 10s. Aceste măsurători se numesc “treaptă unitate”, din moment ce semnalul de intrare al motorului sare într-o funcție treaptă de la 0 la o valoare dorită PWM.
Din păcate, viteza motorului generată nu este în mod normal o funcție liniară a raportului semnalului PWM, așa cum se poate vedea comparând măsurătoarea din figura 3.7 din dreapta, la linia punctată. Acest lucru arată o măsurătoare tipică folosind un motor Faulhaber 2230, în scopul de a restabili o curbă de viteză aproximativ liniară utilizând funcția “MOTORDrive” (de exemplu MOTORDrive (m1,50) ar trebui să reducă la jumătate viteza de la MOTORDrive (m1, 100)), iar fiecare motor trebuie să fie calibrat.
Calibrarea motorului se face prin măsurarea vitezei motorului la diferite configurații între 0 și 100, și apoi introducând raportul PW necesar pentru a atinge viteză reală dorită, într-un tabel de calibrare a motorului HDT. Viteza maximă a motorului este aproximativ 1300 de rad / s la un raport PW de 100. Ajunge la 75% din viteza sa maximă (975 rad / s) la un raport PW de 20, astfel încât intrarea pentru valoarea 75 în calibrarea motorului HDT ar trebui să fie 20. Valorile între cele 10 puncte măsurate se pot fi interpolate.
Calibrarea motorului este deosebit de importantă pentru roboții cu acționare diferențială, deoarece în mod normal un motor execută înainte și unul înapoi, în scopul de a putea conduce un robot. Multe motoare de curent continuu prezintă diferențe între viteză și raportul PW, pentru deplasarea înainte și înapoi. Acest lucru poate fi eliminate prin calibrarea motorului.
3.4 Motoare pas cu pas
Există două tipuri de motoare, care sunt semnificativ diferite de motoarele standard de curent continuu. Acestea sunt motoarele pas cu pas și cele servo, despre care vom discuta în secțiunea următoare. Motoarele pas cu pas diferă de cele de curent continuu, deoarece acestea au două bobine ce pot fi controlate în mod independent. Ca rezultat motarele pas cu pas pot fi mutate prin impulsuri pentru a avansa exact un singur pas înainte sau înapoi, în loc de o mișcare lină continuă ca la motoarele standard de curent continuu. Un număr tipic de pas pe rotație este de 200, rezultând o mărime de 1,8A° pentru un pas. Unele motoare pas cu pas permit și efecuarea unei jumătăți de pas, de unde rezultă o mărime și mai bună. Există de asemenea și un număr maxim de păși pe secundă, în funcție de sarcină, care limitează viteză unui motor pas cu pas.
În figura 3.8 este prezentată schema unui motor pas cu pas. Bonbinele sunt controlate independent de două punți H (aici marcate cu A, A’ și B, B’). Fiecare ciclu de patru etape rezultă prin avansarea rotului, motorului printr-un singur pas
dacă sunt executate în ordinea 1…4. Executând aceeași secvență în ordine inversă va rezulta prin mișcarea cu un pas înapoi. De reținut că secvența de comutare seamănă cu un model de cod Gray.
Figura 3.8 – Schema motorului pas cu pas
Motoarele pas cu pas ar fi o alegere simplă pentru construirea roboților mobili, luând în considerare efortul necesar pentru controlul vitezei și al poziției al motoarelor standard de curent continuu. Cu toate acestea, motoarele pas cu pas sunt folosite foarte rar pentru, realizarea aplicațiilor de roboți mobili, deoarece acestea nu dispun de niciun răspuns cu privire la sarcină și viteza reală (de exemplu o execuție de pas ratată). În plus acestea necesită dublarea componentelor electronice de alimentare, iar raportul greutate / performanță este foarte dezavantajos, decât cele de la motoarele de curent continuu.
3.5 Dispozitive Servo
Motoarele de curent continuu sunt uneori menționate ca servomotoare”. Însă nu la asta ne referim când folosim termenul “servo”. Un servomotor este un motor de curent continuu de calitate înaltă, care se califică pentru a fi folosit într-o “servoaplicație”, adică într-o buclă închisă. Un astfel de motor trebuie să fie capabil să se ocupe de schimbări rapide de poziție, viteză și accelerație și trebuie să fie eveluat pentru cuplu intermintent mare.
Figura 3.9 – Dispozitiv servo HiTec
Un servo dimpotrivă, este un motor de curent continuu cu o parte electronică încapsulată pentru controlul PW și este folosit în principal în scopuri de hobby-uri, ca și modele de avioane, mașini sau nave. Un dispozitiv servo are trei fire de conexiune: alimentare, masă și intrare pentru semnalul de control PW. Spre deosebire de PWM pentru motoarele de curent continuu, impulsul semnalului de intrare pentru dispozitivele servo nu este transformat în viteză. În schimb, are o intrare pentru control analgic pentru a spcifica poziția dorită a captului rotativ în formă de disc al servomotorului. El are o gamă cam de 120° din poziția sa de mijloc. Intern, un servomotor combină un motor de curent continuu cu un circuit de răspuns, adesea folosind un potențiometru pentru a depista poziția curentă a capătului servo.
Semnalul PW folosit pentru dispozitivele servo are o frecvență de 50Hz, deci impulsurile sunt generate la fiecare 20ms. Lățimea fiecărui impuls specifică poziția dorită a capătului de la servo (figura 3.10). De exemplu, o lățime de 0.7ms va roti discul complet spre stânga (-120°), și o lățime de 1,7 ms va roți discul complet către dreaptă (+120°). Valorile exacte ale duratei impulsului și unghiurile depind de marca și modelul dispozitivului servo.
Ca și motoarele pas cu pas, dispozitivele servo par a fi o soluție simplă și bună pentru aplicațiile cu roboți. Cu toate acestea, servo-urile au aceleași dezavantaje ca și motoarele pas cu pas: nu asigură răspuns extern. Atunci când se aplică un anumit semnal PW unui servo, nu putem știi când acesta va atinge poziția dorită sau dacă o va atinge, de exemplu din cauza sarcinii prea mare de încărcare sau din cauza unui obstacol.
Figura 3.10 – Controlul dispozitivelor servo
CAPITOLUL IV
PROIECTAREA UNUI ROBOT AUTONOM CAPABIL SA SE GHIDEZE DUPA UN TRASEU PRESTABILIT
4.1 Descriere generala
Un robot autonom capabil de a detecta un traseu si de a-l urma poate fi util in numeroase aplicatii, acesta poate fi programat pentru a mentine un curs si, in timp ce isi corecteaza in mod constant miscarile gresite folosind mecanisme cu raspuns, un sistem simplu, dar eficient pentru bucle inchise.
Robotii mai sofisticati pot fi capabili sa distinga diferite culori, ceea ce ii face mult mai precisi avand abilitatea de a urmari un anumit traseu din mai multe trasee care se intersecteaza.
In proiectarea unui astfel de robot este necesar un sasiu care ii permite sa se deplaseze, fie pe roti, fie un alt mod de locomotie. De asemenea necesita dispozitive de detectie pentru a putea detecta traseul, si un calculator de bord pentru a putea procesa informatiile. In unele cazuri de multe ori o metoda de cost mult mai redusa este implementarea unui modul de camera care il poate ajuta in urmarirea traseului. Un procesor interpreteaza datele de intrare de la camera si apoi controleaza miscarile robotului.
Din teste se poate determina cat de bine functioneaza un robot autonom. Un test mai complex pentru detectarea traseelor este cel care contine curbe mai stranse sau linii suprapuse, care pot induce in eroare un robot cu un cod limitat. In functie de componentele alese pentru proiectare, robotul poate fi pregatit sa infrunte un mediu accidentat sau cu obstacole. Ca si programator am avut ocazia de a invata un robot cum sa urmareasca un traseu prestabilit oferindu-i proprietatea de a raspunde la stimuli.
In figura urmatoare este reprezentata schema bloc a proiectului de la care am pornit.
Figura 4.1 – Schema bloc a proiectului
4.2 Microcontrolerul AVR
Microcontrolerele AVR Atmel sunt echipate cu un nucleu RISC care ruleaza un singur ciclu de instructiuni si au o structura I / O bine definita, reducand astfel nevoia de componente externe. Oscilatoarele interne, cronometre, UART, SPI, rezistente pull-up, modularea impulsurilor in durata, ADC, comparator analogic, watch-dog timer care activeaza intrarea de reset daca se produc erori in programele rulate sunt unele dintre caracteristicile care se pot gasi intr-un dispozitiv AVR.
Instructiunile AVR sunt reglate pentru a miscora dimensiunea programului daca, codul este scris in limbaj de asamblare sau in C. Cu o memorie Flash pe cip, programabila in sistem si EEPROM, microcontrolerul AVR este o alegere foarte potrivita, in scopul optimizarii costurilor.
Pe langa toate acestea majoritatea microcontrolerelor AVR suporta programarea in sistem (ISP), adica se poate reprograma, fara a fi scos din circuit. Acest lucru este foarte util, atunci cand avem nevoie de a imbunatati sistemul, sau pentru a realiza un design diferit. Majoritatea cipurilor AVR suporta deasemnea Boot Loadere care duc ideea programarii ISP la un nou nivel, si despre care vom discuta in sectiunea urmatoare. Caracteristici precum interfete I2C permit adaugarea mult mai usoara a altor dispozitive externe.
Cateva avantaje ale diferitelor familii de microcontrolere si de ce am ales utilizarea unui microcontroler AVR:
COST: AVR = PIC > 8051 (cand spunem 8051 ne referim la familia 8051)
DISPONIBILITATE: AVR = PIC < 8051
VITEZA: AVR > PIC > 8051
Din punct de vedere al perifericelor integrate este greu de facut o comparatie, deoarece majoritatea familiilor de microcontrolere, ofera o gama de caracteristici foarte bune, insa din acest punct de vedere o comparatie poate fi realizata doar din punctual de vedere al costurilor AVR = PIC > 8051.
O alta problema ce trebuie discutata este despre instrumente si resurse, familia 8051 este existenta de mai mult timp decat cea de la AVR, si de aceea informatiile necesare despre acestea, si problemele intampinate pot fi gasite mult mai usor, insa si informatii existente despre microcontrolere AVR sunt disponibile chiar daca sunt aparute mult mai recent, deoarece sunt din ce in ce mai folosite si apar foarte multe informatii si cat si moduri de depanare. Ca o comparatie intre cele 3 ar fi cam asa 8051 > AVR = PIC.
In proiectarea robotului am ales sa folosesc un microcontroler destul de folosit si anume AtMega324PA, acesta este destul de utilizat in diverse
aplicatii, iar informatii despre el sunt disponibile atat de la producator cat si de la cei care au mai lucrat cu el.
In figura urmatoare este atasata o imagine cu atrbuirea pinilor pentru microcontrolerul folosit.
Figura 4.2 – Atribuirea pinilor pentru AtMega324PA
Cateva caracteristici ale acestui microcontroler ar fi:
Gama de tensiuni de alimentare intre: 1.8 – 5.5 Volti;
Puterea consumata la 1 MHz / 1.8 Volti / 25° C in modul active este de 0.4 mA
Arhitectura RISC avansata oferind 131 de instructiuni;
2 timere de 8 biti si unul de 16 biti;
6 canale care suporta PWM.
4.3 Programarea cu Bootloader
Bootloaderul este o parte software care poate incarca programul ce trebuie rulat de catre microcontroller din diverse surse. Un astfel de Bootloader este realizabil pentru programarea robotului numai cu ajutorul unei bibleoteci care se numeste V-USB, care contine stiva USB in codul Bootloaderului. Desi aceasta metoda este ptuin mai ineficienta, deoarece necesita timp cat si memorie, este mult mai avantajoasa in ceea ce priveste
programarea microcontrolerului, deoarece odata incarcat Bootloaderul pe microcontroler, acest poate fi programat de cate ori dorim printr-o interfata USB.
Etapele ce trebuie parcurse in vedere incarcarii bootloaderului pe microcontroler:
Mai intai vom avea de setat fuse-urile microcontrollerului, acestea reprezinta o configuratie de baza in cazul nostru alcatuita din 3 biti si anume “EXTENDED FUSE 0xFD”, “LOW FUSE 0xDE”, “HIGH FUSE 0x92”. Care reprezinta:
BOOTSZ cu dimensiunea de 1024 de cuvinte, adica 2Kb, care este maxima pentru Bootloader;
BOOTRST, microcontrollerul nu va proni in programul obisnuit la RESET ci direct in Bootloader;
CKSEL ofera posibilitatea de a selecta un ceas extern de frecventa mare ;
CKDIV8 dezactivat, deoarece microncontrollerul nu va mai putea sa realizeze divizarea ceasului prin 8 inainte de a fi utilizat.
Pentru incarcarea Bootloaderului pe microcontroler am folosit aplicatia GUI care se foloseste dupa cum urmeaza:
1) Dupa conectarea cu calculatorul, selectam din aplicate “Find device”
Figura 4.3 – Mod de operare al aplicatiei GUI
2) Dupa ce dispozitivul va fi gasit, vom fi nevoiti sa incarcam fisierul “.hex”, pe care vrem sa il punem pe microcontroler.
Figura 4.4 – Mod de operare al aplicatiei GUI
3) In final vom putea sa incarcam programul dorit dupa apasarea pe “Flash device”, insa va trebui bifata si casuta numita “Reboot AVR”, deoarece la fiecare alimentare sau resetare la care nu este tinut apasat butonul de “START”, codul va rula in mod automat, de retinut faptul ca Bootloaderul nu fa putea fi gasit doar daca atunci cand sistemul este alimentat, iar butonul “START” este mentiunt apasat.
Figura 4.5 – Mod de operare al aplicatiei GUI
4.4 Principiul de functionare al robotului
Robotul foloseste senzori IR pentru a sesiza linia, o serie de 8 senzori, care in aceasta confirguratie au fost plasati cu partea de detectie in jos. Iesirile senzorilor sunt semnale analogice care depind de cantitatea de luminca reflectata inapoi, apoi semnalul analogic este transmis microcontrollerului care prin intermediul ADC produce 0-uri si 1, pe care apoi le receptioneaza.
Figura 4.6 – Matrice de senzori
Incepand de la “CENTRU”, senzorii din stanga sunt notati cu L1, L2, L3, L4, iar cei din dreapta R1, R2, R3, R4. Atunci cand un senzor se afla pe traseu in cazul nostru linia neagra, acesta citeste 0, iar atunci cand nu se afla pe linie adica este pe fundalul alb acesta citeste 1. Microcontrollerul va decide urmatoarea miscare conform algoritmului de mai jos care incearca sa pozitioneze robotul astfel incat L1 si R1 sa citeasca 0, iar restul L2, L3, L4 si respective R2, R3, R4 sa citeasca 1.
Figura 4.7 – Conditia pentru deplasarea inainte
Algoritmul de ghidare si urmarire a traseului
PASUL 1: L = senzorul cel mai din stanga care citeste 0; R = senzorul cel mai din dreapta care citeste 0. Daca niciun senzor din STANGA sau DREAPTA este 0 atunci L sau R este egal cu 0.
Exemplu:
Figura 4.8 – Exemplu de ghidare al robotului
PASUL 2: Daca toti senzorii au citit 1 mergi la pasul 3,
Altfel,
Daca L > R Mergi la Stanga;
Daca L < R Mergi la Dreapta;
Daca L = R Mergi Inainte
PASUL 3: Revino la pasul 1.
4.5 Modulul de alimentare
Exista doua posibilitati in alimentarea montajului, prima ar fi prin folosire tensinuii de 5 Volti stabilizata si furnizata de la mufa USB a unui calculator sau laptop, insa acest mod pentru ceea ce am proiectat este dezavantajos, deoarece ii limiteaza posibilitatea de miscare si ar necesita si un cablu prelungitor foarte lung.
Am ales varianta cea mai eficienta si anume alimentarea de la o baterie de 9 Volti. Pentru aceasta varianta de alimentare am folosit un stabilizator de tensiune si anume LM7805, care va furniza tensiunea necesara.
Cei doi condensatori ceramic multistrat si respectiv electrolitic se monteaza cat mai aproape de pinii 1 si 3 ai stabilizatorului de tensiune, deoarece acestia sunt pentru “decuplare”. Ledul este montat pentru a semnaliza prezenta alimentarii, iar rezistenta este prezenta pentru limitarea curentului.
Pentru ca sa putem vedea daca ansamblul a fost montat corect, am alimentat circuitul pentru prima data, iar totul a functionat cum trebuie, iar prezenta tensiunii a fost semnalizata de aprinderea ledului rosu.
In figura de mai jos este prezentata schema electrica a modulului de alimentare.
Figura 4.9 – Sursa stabilizata de tensiune
4.6 Interfata de incarcare a Bootloader-ului
Pentru a putea incarca Bootloaderul suntem nevoiti sa utilizam un set de 3 pini externi de la microcontroller si anume PB5 (MOSI), PB6 (MISO) si PB7 (SCK), un alt pin va fi legat la alimentarea de +5 Volti, unul la RESET si celalalt la masa (GND). Aceasta interfata poarta numele de AVR ISP,iar toti cei 6 pini sunt necesari pentru conectarea unui programator si incarcarea Bootloader-ului din meniul de programare prin metoda ISP.
In figura urmatoare se poate observa modul de conexiune al pinilor.
Figura 4.10 – Modul de conectare a interfetei ISP
4.7 Interfata USB
Pentru incarcarea programelor pe microcontroller am utilizat interfata USB care este conectata la pinii PD2 si PD3, iar acestia la randul lor sunt conectati la D+ si D- mufei USB. O mare problem ape care am intampinat-o pentru dispozitivele bazate pe V-USB, este ca nu se pot conforma cu specificatiile electrice ale standardului USB, deoarece caracteristicile de I /O nu se potrivesc cu cerintele USB. Cu toate acestea, putem ajunge destul de aproape pentru a-l face sa functioneze in mod fiabil.
Fiecare capat al comunicarii (gazda si dispozitivul) necesita anumite nivele de tensiune pentru un semnal inalt sau jos. Celalalt capat trebuie sa genereze tensiuni in aceste domenii pentru comunicare de incredere. Caracteristicile exacte sunt definite in caietul de saricini USB.
Avand in vedere ca partea gazda este fixa, trebuie sa ne acomodam cu nivelurile trimise si asteptate. Gazda trimite 0 Volti pentru un nivel redus si 3,3 Volti pentru un nivel inalt. Aceste niveluri sunt destul de precise, chiar in cazul in care caietul de sarcini permite tolerante. Acest lucru, de obicei nu este o problema, indiferent de tensiunea de alimentare a AVR. Chiar si 5 Volti detecteaza 3,3 Volti ca pe un nivel inalt.
Metoda aleasa pentru rezolvarea acestei probleme a fost conversia nivelelor pe D+ si D-. In loc sa reducem alimentarea AVR-ului am limitat tensiunea de iesire pe D+ si D- cu diode Zenner.
In figura de mai jos este reprezentata configuratia pentru interfata USB.
Figura 4.11 – Interfata USB
Cateva avantaje si dezavantaje ale abordarii acestei metode sunt:
1)Avantaje:
Cost redus;
Disponibilitate ridicata;
Intregul sistem poate lucra la tensiunea de 5 Volti;
Microcontrollerul poate fi tactat la rate ridicate.
2)Dezavantaje:
Nu este o solutie tocmai curata, deoarece trebuie facut un compromise intre toti parametric;
Diodele Zener au gama larga de caracteristici, mai ales la curenti slabi, iar rezultatele nu pot fi reproduce;
Curenti inalti atunci cand transmisia se face la nivel inalt;
Nivelul inalt este diferit intre starea de semnalizare si starea de repaus, deoarece pentru semnalizare se folosesc curenti mari pentru a conduce diodele, pe cand in starea de repaus acestea sunt conduse de o rezistenta de pull-up de 1,5 kΩ.
4.8 Driverul de motoare
Pentru controlul motoarelor am ales utilizarea integratului L298N. Acesta are 4 intrari care controleaza motoarele si inca 2 “enable” care sunt folosite pentru a porni si opri motorul, insa in cazul nostrum sistemul nu este proiectat pentru managementul energiei, iar cele 2 intrari sunt conectate direct la +5Volti. Insa daca am dori sa realizam acest lucru pentru a putea controla viteza motoarelor am avea nevoie de o forma de unda PWM cu un factor de umplere variabil aplicat pe pinii de “enable”.
Comutarea rapida a tensiunii intre Vs si GND da o tensiune efectiva intre Vs si GND a carei valoare depinde de factorul de umplere al PWM. Procentul de 100% al factorului de umplere corespunde lui Vs.
Dupa cum se poate observa din schema electrica exista montate 8 diode Schottky 1N4007, acestea sunt montate din pricina faptului ca integratul L298N nu detine astfel de componente intern si au rolul de a proteja circuitul de eventualele perturbatii ce pot aparea. In cazul in care acestea nu sunt montate microcontrollerul poate fi dereglat si se poate reseta, mai ales la schimbari ale directiei.
Majoritatea ciruitelor folosesc integratul L293D pentru controlul motoarelor, insa am ales L298N pentru ca acesta are o capacitate de curent de 2 Amperi per canal si o tensiune de 45 de Volti spre deosebire de 0,6 Amperi si tensiunea de 36 de Volti. L293D nu are o capsula potrivita pentru atasarea unui radiator, practice nu poate fi folosit pentru tensiuni de peste 16 Volti fara a se arde, pe cand L298 functioneaza fara probleme si fara radiator la aceasta tensiune desi este bine sa folosim unul.
In figura de mai jos este reprezentata schema electrica pentru configuratia cu L298N.
Figura 4.12 – Configuratia cu L298N
4.9 Microcontrolerul
Pentru montarea microcontrollerului am folosit un soclu DIP40, cu 40 de pini. Microcontactul montat pe pinii PD0 si PD1 este necesar pentru depanare, dar si pentru a fi mentinut apasat in momentul incarcarii programului, pentru ca, dispizitivul cu V-USB sa poata fi detectat de catre aplicatia GUI in Windows sau Linux, in functie de ce se utilizeaza. Led-ul este folosit tot pentru depanare sau pentru diverse teste care se pot efectua asupra microcontrollerului.
Microcontactul montat pe pinul 9 serveste pentru resetarea manuala a microcontrolerului.
Cei 3 condensatori ceramici C7, C5 si C1 de 100nF, montati pe AREF, VCC si AVCC sunt pentru decuplare si trebuiesc montati cat mai aproape posibil de acesti pini.
Cei 2 condensatori C2 si C3 de 22pF montati langa cristalul de quartz au rolul de a forma capacitatea de sarcina pentru cristalul respectiv impreuna cu capacitatea parazita data de cablajul utilizat. Alegerea valorilor optime tine cont de capacitatea necesara specificata de producator notata CL, si de capacitatea parazita a cablajului Cs.
Formula pentru calcularea valorilor acesot condensatori este:
In figura urmatoare este prezentata configuratia pentru microcontroller:
Figura 4.13 – Designul microcontrollerului
4.10 Probleme intampinate si imbunatiri care mai pot fi facute
In proiectarea cablajului am intampinat numeroase probleme, atat de proiectare cat si de ansamblare.
Prima a fost in alegerea microcontrollerului, deoarece inaintea lui AtMega324PA am folosit in proiectarea robotului AtMega161 ramas dintr-un proiect anterior, insa ulterior am descoperit faptul ca acesta nu detine iesiri care sa suporte PWM, ceea ce s-a soldat cu modificarea cablajului.
O alta problema a fost puntea H (L298N), care a venit defecta din fabrica si inverse sensul de rotatie pentru unul din motoare.
Au mai fost probleme si in lipirea si de alimentare improprie a lui L298N. In prima etapa acesta a fost alimentat pe pinul 4 (VS) cu 5 volti, fiind insuficient pentru pentru a fi pus in functie, ceea ce a necesitat o alimentare directa din bateria de 9 volti. Insa inainte de asta legaturile fiind facute in mod gresit adica firul din bateria de 9 Volti a fost conectat in anodul setului de diode, motoarele se miscau foarte incet, insa provoca un scurtcircuit care punea sursa in protectie si consuma un curent de 3,42 Amperi, maxim debitat de sursa, efectul secundar fiind incingerea excesiva a integratului.
Din punct de vedere al programarii software a fost necesar definirea unui mod de lucru al robotului, pe care apoi acesta sa il poata urmari. Odata rezolvat acest lucru a venit problema senzorilor si a curbelor. Am observat modul de functionare al acestora si anume , atunci cand sunt plasati pe banda neagra acestia au o tensiune de 120 de mV, iar cand sunt plasati pe fundal alb prezinta o tensiune de 2.54 Volti, odata rezolvat acest lucru a urmat actionarea celor 2 motoarea care trebuie facuta in mod diferit, deoarece la venirea unei curbe, robotul devia din traseu si se oprea, asa ca am setat din soft ca la venirea unei curbe unul din motoare sa se invarta mai rapid, si celalalt mai lent.
Ansamblului ii mai pot fi aduse atat imbunatatiri software cat si hardware. Si anume se pot utiliza diode Zenner de 3,6 Volti indicate pentru dispozitivele, cu V-USB, deoarece diodele de 3,3 volti din cauza rezisorului pull-up se limiteaza pe undeva pe la 2,7 Volti si s-ar putea ca dispozitivul sa nu poata fi detectat.
Senzorii folositi modelul QTR-8A ar putea fi inlocuiti pentru a nu se pune o problema de detectie datorata distantei cu QTR-8RC care au o distanta maxima de 9 mm spre deosebire de 6 mm.
Softul poate fi imbunatatit prin implementarea miscarii inapoi a robotului. Acesta ar putea ca atunci cand deviaza de la traseu din cauza unei
erori de citire, acesta sa se poate intoarce in ultima pozitie memorata pentru a-si relua din nou cursul.
In figura de mai jos este reprezentat schema electrica finala a robotului proiectat.
Figura 4.14 – Schema completa a proiectului
4.11 Aplicatii posibile ale proiectului
1)Masina autonoma, cunoscuta ca si masina care se conduce singura sau masina robot., este un vehicul autonom capabil de de a indeplini capacitatile umane de transport ale unei masini traditionale. Un astfel de vehicul autonom este capabil sa detecteze mediul inconjurator sis a navigheze fara aport uman.
Vehiculele autonome detecteaza mediul inconjurator cu tehnici precum radar, LIDAR, GPS si viziune de calculator. Sistemede control avansate capabile de a interpreta informatia senzoriala pentru a identifica cai de navigatie adecvate, precum si obstacolele, dar si semnalizarile relevante.
Insa din pacate aceste tipuri de vehicule sunt doar prototipuri sau sisteme de demonstrartie din pricina sigurantei, astfel de vehicule sunt existente doar in zonele pietonale si ating viteza maxima de 20.1 km / h.
In imaginea de mai jos este prezentat un vehicul capabil de a se ghida pe strada cu ajutorul magnetilor.
Figura 4.15 – Autovehicul ghidat cu ajutorul magnetilor
2)O alta aplicatie existena ar fi a celor de la ULTra (Transport usor urban) este un sistem de transit rapid personal. Primul sistem public a fost pus in folosinta in luna Mai a anului 2011. 21 de astfel de vehicule de mici dimenisiuni autonome au fost date in folosinta pentru a realiza transportul pasagerilor de la terminalul 5 al aeroportului Heathrow in zona de parcare, operand pe o distanta de 3,9 kilometri.
Un alt proiect este dezvoltarea unui sistem urban in pentru a transporta pana la 100.000 de pasegeri pe zi, folosind 200 de vehicule.
Vehiculul este alimentat electric si dispune de 4 scaune, fiind capabil sa deplaseze o sarcina de 500 de kg. Este proiectat pentru a rula la o viteza
de 40 de km / h si poate gazdui scaune cu rotile, carucioare pentru cumparaturi, dar si alte bagaje in plus fata de pasageri.
Fiecare vehciul este alimentat de 4 baterii auto si dau o medie de 2kW si audugaea de 8% la greutatea bruta a vehiculului. Alte specificatii include o raza de 5 metri la viraj, o cerinta de energie de 0,55 MJ (megajouli) pe kilometru per pasager si ruleaza la un nivel de zgomot de 35 dBA la 21,6 km / h.
De asemenea, exista o versiune pentru transportul de marfă. Acest lucru are același aspect exterior ca și versiunea pentru pasageri, dar întregul său spațiu interior este adaptat pentru a găzdui o capsulă de marfă. Acestea pot fi valoroase în medii de aeroport, unde rețeaua poate fi utilizat pentru a transporta marfă mica.
In imaginea de mai jos se regaseste vehiculul respective.
Figura 4.16 – Vehicul electric autonom proiectat de ULTra
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: Transportul (ID: 124614)
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.
