Să se proiecteze un robot care își menține echilibrul. Ideea de bază al echilibrului acestui robot constă în conceptul de pendul inversat, concept… [308859]

CUPRINS

Capitolul I

CERINȚELE PROIECTULUI

1.1 Tema de proiectare

Să se proiecteze un robot care își menține echilibrul.

[anonimizat]: pendulul inversat are ca rol sa mențină roțile sub centrul de masă al șasiului robotului. [anonimizat] a-[anonimizat] a reveni sub masa șasiului. Dacă această condiție nu este îndeplinită robotul va cădea.

Fig. 1.1 Principiul pendulului inversat

In poziția a) din figura 1.1, pendulul este în poziție verticală (poziție de echilibru). Din figura b) [anonimizat] a-și menține poziția de echilibru se aplică o forță inversă sensului de înclinare care să contracareze forța care dezechilibrează pendulul. Figura c) este poziția total opusă celei de la figura b), [anonimizat] o forță de înaintare aplicată pendulului pentru ca acesta să își mențină poziția de echilibru.

[anonimizat]. Robotul este un sistem compus din mai multe elemente: mecanică, senzori și actuatori precum și un mecanism de direcționare.

Termenul robot (din cehă robot) a fost utilizat de Josef Capek și Karel Capek în lucrările lor de Science Fiction la începutul secolului XX ("Roboții universali ai lui Rossum"). Cuvântul robot este de origine slavă și se poate traduce prin: muncă, clacă sau muncă silnică. Karel Capek a descris în una din piesele sale din anul 1921, [anonimizat].

Bazele roboților din zilele noastre se află într -o perioadă mult mai îndepărtată. Primele modele de mașinării pot fi mai degrabă numite automate ([anonimizat]). [anonimizat].

Matematicianul grec Archytas (428 – 347 IH) a construit, [anonimizat]: [anonimizat]. Acest porumbel din lemn era umplut cu aer sub presiune și avea un ventil care permitea deschiderea și închiderea printr-o contragreutate. La prima testare aparatul a reușit sa zboare 200 m, dar după aterizare nu a mai putut decola.

[anonimizat]:

– Roboți tereștri;

– Roboți marini;

– Roboți zburători.

[anonimizat]:

– Roboți industriali;

– Roboți casnici;

– Roboți militari;

– Roboți exploratori;

– Roboți de companie (robot umanoid);

– Roboți de divertisment (jucării, roboți utilizați în competiții etc.).

Din punct de vedere al gradului de libertate există două categorii:

– Roboți ficși;

– Roboți mobili.

[anonimizat]:

– Roboți cu roți;

– Roboți cu șenile;

– Roboți pășitori;

– Roboți târâtori.

Dezvoltarea electrotehnicii în secolul XX a adus și dezvoltarea roboticii. Printre primii roboți mobili se numără sistemul Elmer și Elsie construit de William Grey Walter în anul 1948. Aceste triciclete se puteau îndrepta spre o sursă de lumină și puteau să recunoască coliziuni în împrejurimi.

Fig. 2.1 Robot mobil

Robotul industrial a luat naștere în anul 1956. George Devol a depus candidatura in SUA pentru un patent în legătură cu "transferul programat de articole". Câțiva ani după aceea a construit împreună cu Joseph Engelberger robotul Unimate. Acest robot cu o greutate de aproximativ două tone a fost mai întâi introdus în montarea de iconoscoape pentru televizoare, găsindu-și apoi drumul în industria de automobile. Programele pentru acest robot au fost salvate sub formă de comenzi direcționare pentru motoare pe un cilindru magnetic. Din acest moment se introduc roboți industriali ca Unimate în multe domenii ale producției fiind permanent dezvoltați pentru a putea face față cererilor complexe care li se impun.

Fig. 2.2 Robot industrial

Greenman a fost primul model umanoid manipulator asamblat în 1983. Sistemul vizual era asigurat de 525 camere video, fiecare având posibilitatea de rotire cu 35 de grade. Monitorizarea se făcea cu ajutorul unei căști de pilot. Acest sistem de manipulare a fost dezvoltat pentru lucrul în medii ostile, mai puțin în mediul marin și submarin.

Fig. 2.3 Robot umanoid

2.1. Roboti Mobili

Unul din obiectivele esențiale ale roboticii este elaborarea roboților autonomi. Asemenea roboți ar putea executa sarcinile de îndeplinit fără alte intervenții umane. Comenzile primite vor preciza ce dorește utilizatorul și nu modul în care robotul să execute comenzile. Roboții capabili să îndeplinească aceste operații vor fi echipați cu senzori de percepere a mediului înconjurător, aflate sub controlul unui sistem de calcul.

Progresul roboților autonomi prezintă un interes major în multe domenii de apli cații, incluzând diversele procese tehnologice, construcțiile, procesarea deșeurilor, explorarea spațiului, oceanelor și a zonelor de risc ridicat, medicină, asistența persoanelor cu handicap, etc.Dezvoltarea tehnologiilor necesare pentru obținerea unor r oboți mobili care să ajute sau să înlocuiască diferite operații realizate de om implică multe domenii ca cele ale senzorilor, inteligenței artificiale, sistemelor de calcul, planificării traiectoriei, procesării semnalelor, controlului motoarelor, electronicii și științei calculatoarelor.

Orientarea într-un mediu total necunoscut, folosind senzori pentru detectarea obstacolelor și comunicația cu un calculator aflat la distanță sunt două aspecte importante care trebuie luate în considerare atunci când se operează cu un robot mobil. Capacitatea roboților de a percepe mediul înconjurător, precum și de a-și schimba comportamentul pe baza informațiilor primite este ceea ce face ca roboții, mai ales cei mobili, să fie atât de interesant de construit și utilizat. Fără senzori, roboții nu ar putea executa altceva decât sarcini ale operatorului uman.

Robotul mobil este un sistem complex care poate efectua diferite activități într -o varietate de situații specifice lumii reale . El este o combinație de dispozitive echipate cu servomotoare și senzori (aflate sub controlul unui sistem ierarhic de calcul) ce operează într -un spațiu real, marcat de o serie de proprietăți fizice (de exemplu gravitația care influențează mișcarea tuturor roboților care funcționează pe pă mânt) și care trebuie să planifice mișcările astfel încât robotul să poată realiza o sarcină în funcție de starea inițială a sistemului și în funcție de informația existentă, legată de mediul de lucru. Succesul în îndeplinirea acestor sarcini depinde atât de cunoștințele pe care robotul le are asupra configurației inițiale a spațiului de lucru, cât și de cele obținute pe parcursul evoluției sale. Problemele specifice ce apar la roboții mobili ar fi următoarele: evitarea impactului cu obiectele staționare sa u în mișcare, determinarea poziției și orientării robotului pe teren, planificarea unei traiectorii optime de mișcare . În cazul unui sistem robotic automat distribuit, pozițiile spațiale sunt de o extremă importanță și de ele depinde îndeplinirea scopurilor dorite și funcționarea întregului sistem. Cu alte cuvinte, robotul trebuie să fie capabil să -ți planifice mișcările, să decidă automat ce mișcări să execute pentru a îndeplini o sarcină, în funcție de aranjamentul momentan al obiectelor din spațiul de lucru. Planificarea mișcărilor nu constă dintr -o problemă unică și bine determinată, ci dintr-un ansamblu de probleme dintre care unele sunt mai mult sau mai puțin variante ale celorlalte.

Evitarea coliziunii cu obstacole fixe sau mobile (de exemplu alți roboți mobili) aflate în spațiul de lucru al robotului se poate face prin mai multe metode: realizarea unei apărători mecanice care prin deformare oprește robotul, folosirea senzorilor care măsoară distanța până la obstacolele de pe direcția de deplasa re, folosirea senzorilor de proximitate, folosirea informațiilor corelate de la mai multe tipuri de senzori. Localizarea obiectelor se poate realiza și prin contact fizic, dar acesta impune restricții asupra vitezei de mișcare a structurii manipulate. Contactul fizic dintre robot și obiectele din mediu generează forțe de reacțiune care modifică starea robotului. Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate să fie riscante (pot duce la deteriorarea obiectelor sau a robotului). Navigarea robotului este posibilă și fără o determinare a poziției și orientării față de un sistem de coordonate fix, dar această informație este utilă pentru sisteme de comandã a mișcării. Dintre metodele de naviga ție mai des utilizate se pot menționa: măsurarea numărului de rotații făcute de roțile motoare, folosirea de acceleratoare și giroscoape, geamanduri electromagnetice instalate în teren, semnalizatoare pasive sau semi-pasive de tip optic sau magnetic. Informațiile despre spațiul de lucru se pot obține independent de oricare acțiune a robotului și se pot organiza pe hărți de navigație. Harta oferă o configurație a structurii inițiale a spațiului de lucru. Configurația cerută se obține prin actualizarea hărții inițiale cu informații obținute de la sistemul de navigație al robotului autonom. Pe baza modelului inițial se poate stabili o traiectorie posibil de urmărit pentru atingerea scopului, traiectorie cu atât mai apropiată de cea reală cu cât informațiile despre mediul de lucru sunt mai aproape de realitatea din teren.

Informațiile existente inițial pot contribui la o împărțire a spațiului în zone accesibile și zone interzise. În procesul de modelare a spațiului de lucru, este important să se țină seama de dimensiunile și posibilitățile fizico-mecanice de abordare a acestor obstacole de către robot în funcție de dimensiunile lor. Obstacolele din spațiul de lucru trebuie considerate cu dimensiunile majorate, atât pentru siguranța mișcării robotului cât și pentru simplitatea algoritmului de planificare, permițând considerarea robotului ca un punct material. 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.

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. Robotul mobil este pus în situația de a desfășura acțiuni similare cu cele ale operatorului uman. Acest lucru determină existența unor anumite dispozitive prin care să se culeagă informații din mediul de lucru, care să realizeze interacțiunea robot – mediu cu ajutorul unor caracteristici ale mediului sau ale obiectelor din mediu și o unitate centrală care să prelucreze în timp real informația senzorială, să o transforme într-o formă utilă pentru sistemul de comandă. Sistemul senzorial mai este numit și sistem de măsurare. El asigură măsurarea unor mărimi fizice și eventual perceperea unor modificări semnificative a a cestor mărimi. Datorită sistemului senzorial se pot pune în evidențã și caracteristicile geometrice și chimice ale obiectelor din mediul de lucru. Senzorii datorită caracteristicilor pe care le au pot explora zona de lucru, zona de contact, cea apropiată , cea îndepărtată, iar senzorii foarte puternici chiar și zone foarte îndepărtate. Caracteristicile senzoriale ale unui robot depind foarte mult de gradul său de autonomie, de aplicațiile pentru care a fost proiectat și de tipul mediului de lucru.

2.2. Strucura unui robot mobil

Structura roboților mobili (RM) corespunde arhitecturii generale a roboților, având două părți:

Structura mecanică, respectiv manipulatorul, care determină performanțele tehnice;

Structura electronică, respectiv de comandă-control, care condiționează calitatea performanțelor.

Indiferent de generația robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate și cost reduse, la transmiterea mișcării și adaptarea la structura mecanică a motoarelor electrice și hidraulice, la proiectarea mâinilor mecanice pentru a apuca obiecte de diferite forme. Referitor la structura electronică, posibilitățile actuale permit folosirea a câte unui microprocesor pentru 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, poziționarea și orientarea organului de execuție.

Structura mecanică a roboților mobili este formată din:

sistemul de locomoție (pe șenile sau roți), prin care se asigură deplasarea robotului pe o suprafață de lucru (în cadrul unei autonomii sporite);

sistemul de manipulare, care asigură poziționarea și orientarea organului de lucru.

Robotul mobil în procesul de deplasare pe o anumuită traiectorie este caracterizat prin 3 funcți:

funcția de locomoție;

funcția de percepție-decizie;

funcția de localizare;

Funcția de locomoție cuprinde sistemul de acționare electric(de propulsie) și sistemul de sprijinire(suspensie).Modalitățile de propulsare sunt dintre cele mai diverse,cum ar fii:pe roți, cu jet de apă, cu aer etc;

Roboții mobili pot fii dotați cu camera video sau alți senzori de percepere al mediului în care activează. Memoria robotului conținută in microcontroler înmagazinează cunoștințele necesare localizării tuturor segmentelor de traseu posibile

Locomoția viermelui de pământ este influențată de factori precum frecarea dintre module și suprafață, de tipul perilor artificiali dispuși pe module și posibilitatea lor de penetrare a suprafețelor și forțe inerțiale.

Prototipul în starea de până acum are o deplasare neglijabilă fapt pentru care la realizarea mișcării au fost urmate două metode:

1. Fabricarea de piciorușe direcționale ce vor mima perii cheratinoși ai râmei, fapt ce duce la o avansare prin agățare a acestora de suprafață

2.Propulsarea micro-robotului pe o suprafață direcțională precum ar fi catifeaua.

Clasificarea roboților mobili

Roboții mobili se clasifică astfel:

În funcție de dimensiuni: macro, micro și nano-roboți.

În funcție de mediul în care acționează: roboți tereștri – se deplasează pe sol, roboți subacvatici – în apă, roboți zburători – în aer, roboți extratereștri – pe solul altor planete sau în spațiul cosmic;

În funcție de sistemul care le permite deplasarea în mediul în care acționează există de exemplu pentru deplasarea pe sol:

roboți pe roți sau șenile

roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi;

roboți târâtori: care imită mișcarea unui șarpe, care imită mișcarea unei râme etc.;

Fig 2.2. Diferite tipuri de roboti

roboți săritori, care imită deplasarea broaștelor, cangurilor etc.;

roboți de formă sferică (se deplasează prin rostogolire) etc.

2.3. Acționarea roboților mobili

Se face cu motoare electrice de putere mică, cu moment de inerție redus,cu capacitate de suprasarcină, cu reductoare de raport mare (i>100) și moment de inerție redus de tip procesional sau armonic.Se pot folosi și unități integrate motor-reductor

Motoare electrice cu inerție redusă utilizate:

motoare de curent continuu cu pahar sau indus disc;

motoare sincrone cu magneți permanenți;

motoare pas cu pas cu reluctanță variabilă cu indus pahar și intrefier radial sau cu indus tip disc și intrefier radial;

motoare sincrone cu magneți permanenți;

Analiza performanțelor dinamice a acționărilor pe baza funcției de transfer Hd(s) presupune determinarea parametrilor:

Precizia care se determină cu ajutorul funcției de transfer prin calculul erorii staționare:

Ui(s)= mărime de intrare.

Promtitudinea, care se calculează cu ajutorul locului de transfer considerând un compromis optim precizie-stabilitate pentru o margine de fază MΦ=25÷450.

Stabilitatea care se determină cu ajutorul locului de transfer.

Capacitatea de urmărire se poate aprecia cu ajutorul caracteristicii Bode.

Pentru a se ameliora performanțele dinamice ale acționărilor în anumite domenii de frecvență se utilizează elemente de corecție serie sau paralel având funcția de transfer

Sistemul senzorial

Robotul mobil este pus în situația de a desfășura acțiuni similare cu cele ale operatorului uman. Acest lucru determină existența unor anumite dispozitive prin care să se culeagă informații din mediul de lucru, care să realizeze interacțiunea robot . mediu cu ajutorul unor caracteristici ale mediului sau ale obiectelor din mediu și o unitate centrală care să prelucreze în timp real informația senzorială, să o transforme într-o formă utilă pentru sistemul de comandă.

Sistemul senzorial mai este numit și sistem de măsurare. El asigură măsurarea unor mărimi fizice și eventual perceperea unor modificări semnificative a acestor mărimi.

Datorită sistemului senzorial se pot pune în evidență și caracteristicile

geometrice și chimice ale obiectelor din mediul de lucru. Senzorii datorită caracteristicilor pe care le au pot explora zona de lucru, zona de contact, cea apropiată, cea îndepărtată, iar senzorii foarte puternici chiar și zone foarte îndepărtate. Informațiile culese cu ajutorul sistemului senzorial servesc la construirea unui model al lumii în care evoluează robotul, model funcție de care aceasta își va genera planurile de acțiuni viitoare.

În funcție de soluția constructivă, senzorii sunt pasivi sau activi. Senzorii activi folosesc caracteristicile intrinseci ale mediului, iar cei pasivi generează modificări în mediu pentru a măsura unele caracteristici.

Alte două categorii de senzori cu care poate fi dotat un robot mobil sunt: senzori de mărimi interne ai robotului (poziție, viteză sau accelerația unor componente mecanice proprii) și senzori de mărimi externe (greutate, formă, poziție, temperatură, culoare, etc ale obiectelor asupra cărora acționează robotul).

Caracteristicile senzoriale ale unui robot depind foarte mult de gradul său de autonomie, de aplicațiile pentru care a fost proiectat și de tipul mediului de lucru.

În general percepția se realizează în două etape:

conversia proprietăților fizice într-un semnal, de obicei electric;

prelucrarea acestui semnal în vederea extragerii informației care interesează.

Se preferă o prelucrare preliminară în care senzorii robotului elimină zgomotele care perturbă semnalul util.

Există mai multe criterii de clasificare a senzorilor utilizați în sistemele de comandă ale robotului industrial:

1. după cum vine sau nu în contact cu obiectul a cărui proprietate fizică o măsoară, distingem:

• senzori cu contact;

• senzori fără contact;

2. după proprietățile pe care le pun în evidență:

• senzori pentru determinarea formelor și dimensiunilor (pentru evaluarea în

mediu de lucru);

• senzori pentru determinarea proprietăților fizice ale obiectelor (de forță, de

cuplu, de densitate și elastici);

• senzori pentru proprietăți chimice (de compoziție, de concentrație,

analizatoare complexe);

3. după mediul de culegere a informației:

a) senzorii pentru mediul extern;

b) senzorii pentru funcția internă;

4. după distanța la care sunt culese informațiile avem senzori de contact.

2.4. Domeniul de utilizare al roboților mobili.

Utilizările pentru care au fost, sunt și vor fi concepuți roboții mobili sunt dintre cele mai diverse . Mulți roboți din zona micro își găsesc utilizarea în medicină, fiind capabili să se deplaseze de-a lungul vaselor și tuburilor corpului omenesc, în scopul investigațiilor, intervențiilor chirurgicale, dozării și distribuirii de medicamente etc. La fel de spectaculoase sunt și multe utilizări ale macro-roboților:

În domeniul industrial, agricol, forestier: în domeniul industrial roboții mobili sunt reprezentați de AGV-uri (Automated-Guided Vehicles), vehicule pe roți, cu ghidare automată, care transportă și manipulează piese, constituind o alternativă flexibilă la benzile de montaj; în agricultură există tractoare și mașini agricole fără pilot, capabile să execute singure lucrările pe suprafețele pentru care au fost programate; în domeniul forestier roboții mobili pot escalada copacii înalți

În domeniul militar: este luată în considerare de către armata americană perspective înlocuirii soldaților combatanți cu roboți, pentru a reduce riscul pierderilor umane în luptă; roboți mobili de cele mai ingenioase și robuste configurații sunt aruncați în clădi și incinte din zone de conflict, în scopuri de investigare și chiar anihilare a inamicului;

În domeniul utilităților publice: una dintre cele mai utile și economice utilizări ale roboților mobili o reprezintă inspectarea conductelor de combustibili gazoși și lichizi și a canalelor de canalizare. De exemplu rețeaua de canalizare a Germaniei însumează 400.000 km, iar inspectarea și curățirea acesteia presupune costuri de 36 Euro pe metru. Numai 20% din conducte sunt accesibile, iar utilizarea roboților poate reduce costurile cu un sfert.

În domeniul distractiv și recreativ: sunt roboții-jucării, roboții pentru competiții

În domeniul serviciilor: Există posibilități deosebit de largi de implementare. Sunt roboți pentru: deservirea bolnavilor în spitale; ajutorarea persoanelor bătrâne sau cu diferite handicapuri; ghidarea și informarea publicului în muzee aspirarea și curățirea încăperilor; spălarea geamurilor și a pereților clădirilor;

În domeniul securității: Multe operații de inspectare și dezamorsare a unor obiecte și bagaje suspecte sunt executate de roboți;

În domeniul operațiilor de salvare: Roboții salvatori (Rescue robots) sunt utilizați în operațiile de salvare a victimelor unor calamități: cutremure, incendii, inundații.

Roboții mobili au următoarele caracteristici comune:

structura mecanică este un lanț cinematic serie sau paralel respectiv tip “master-slave”;

sistemul de acționare utilizat este electric pentru sarcini mici și medii și hidraulic pentru sarcini mari;

sistemul senzorial utilizează senzori interni (de turație, poziție, efort) la nivelul

articulațiilor, senzori externi(camere TV) pentru scanarea mediului și senzori de securitate( de proximitate, de prezență cu ultrasunete);

sistemul de comandă este ierarhizat, de obicei multiprocesor;

limbajele de programare utilizate sunt preluate de la roboții staționari.

Capitolul III. Realizarea proiectului

3.1. Schema bloc a robotului

Microcontroller-ul robotului va citi de la senzori, viteza unghiulară (de la giroscop) și accelerația (de la accelerometru), pentru a calcula unghiul de înclinare. Folosind unghiul de înclinare, va comanda roțile în mod corespunzător, ca robotul să corecteze starea de cădere și să rămână în poziția de echilibru.

Fig. 3.1. Schema bloc a robotului

3.2. Partea mecanica

3.2.1 Desenul de ansamblu

Fig 3.2.1 Desen de ansamblu al robotului

Am reprezentat în figura de mai sus desenul de ansamblu al robotului care își menține echilibrul. În imagine se regăsesc elementele constructive ale robotului, cum ar fi: roți, șasiu, distanțiere, piese de prindere a motoarelor, motoreductorul de C.C.

Pentru realizarea sașiului (platformele pe care au fost prinse toate elementele), piesele de prindere a elementelor, au fost realizate cu ajutorul unei imprimante 3D, iar ca material a fost folosit PLA (Polylactic Acid), având proprietăți de absorbție a vibrațiilor.

În continuare în tabelul de mai jos vom enumera elementele componente ale robotului:

Tabelul 3.2.1 Legendă notarea elementelor figurii 3.2.1

3.2.2 Subansambluri ale partii mecanice

Motoreductorul

In figura de mai jos se regaseste motoreductorul

Fig. 3.2.2.1 Desen de executie al motoreductorului a)

Fig 3.2.2.2 Desen de executie al motoreductorului b)

Acest motoreductor este unul standard, cu carcasă închisă, având două ieșiri.

Roata motoare

Desenul de execuție de mai jos, ne prezintă roata motoare/roata trăgătoare, a robotului studiat in aceasta lucrare.

Fig. 3.2.2.3 Desen de execuție a roatei motoare

Rotile motoare sunt realizate din plastic si sunt acoperite cu cauciu, pentru a avea o aderenta mai buna pe suprafetele lucioase

Platformele robotului

Au fost realizate 3 platforme pentru acest robot, din material plastic ( PLA – Polylactic Acid), cu ajutorul unei imprimante 3D.

Fig. 3.2.3 Desen de executie al platformelor robotului si cote ale acestora

Platformele sunt în număr de 3 numerotate de sus în jos, primele două sunt identice, cea de treia find diferită, pe aceasta vin prinse motoarele, bateriile și drive-ul de motor.

Aceste platforme pe care am montat motoreductoarele, rotile, și celelalte parti componente atat mecanice cât și electronice au rolul cel mai important, astfel acestea ar sta pe sol.

3.2.3. Schema cinematică a motorului

Analiza cinematică a mecanismelor are ca scop studierea mișcării elementelor cinematice sau a unor puncte de pe ele, care pot fi chiar cuplele cinematice fără a considera forțele care provoacă mișcarea.

Fig 3.2.3.1 Schema cinematică a motoreductorului

In figura 3.2.3.1 se regăsește motoreductorul folosit în deplasarea vehiculului telecomandat. Acesta este alcătuit dintr-o carcasă închisă (1), realizată din plastic, care absoarbe vibrațiile. Motorul electric (5), antrenează reductorul printr-o cuplă (9), care mai departe învârte o roată dințată conică (6), aceasta transmite mișcarea de rotație de la motor, la o altă roată dințată conica (4). Pe același arbore (8) cu roata dințată conica (4), se află încă o roată dințată, de data aceasta, una cilindrică (3), care transmite mișcarea la roata dințată cilindrică (2), pentru ca mișcarea de rotație să ajungă la arborele de ieșire (7).

Acеst rеductor, еstе un rеductor standard, crеat dе producătorul motorului, astfеl încat să fiе compatibil cu o gamă largă dе proiеctе cе pot fi rеalizatе cu Arduino și nu numai. Motorul еlеctric arе doua trеptе dе vitеzе, prima, atunci când motorul еlеctric еstе alimеntat cu 6V C.C., rеductorul еstе capabil sa livrеzе 125 dе rotații pе minut și o vitеză dе 26 m/min, cu o roată dе 66 mm în diamеtru, montată pе ax; iar a doua vitеză, când motorul еlеctric еstе alimеntat cu 9V C.C., rеductorul еstе capabil sa livrеzе 208 dе rotații pе minut și o vitеză dе 43 m/min, cu o roată dе 66 mm în diamеtru, montată pе ax. Datorită raportului roților dințatе dе 1:9, rеductorul arе un cuplu maxim dе 0,8 КG*Cеntimеtru.

3.2.4 Calcule rapoartelor de transmisie

Pentru a ajunge la un raport de 1:9, au fost efectuate următoarele calcule :

36

Unde:

Z1,Z2,Z3,Z4, reprezintă numărul de dinți al roților dințate

RT, reprezintă raportul total de transmisie al roților dințate

R1,R2, reprezintă raportul de transmisie al roților dințate

Pentru a ajunge la viteza de 39 , s-au efectuat următoarele calcule:

D – diametrul roții

r – raza cercului

ω – rotațiile motoreductorului

lc – lungimea cercului

3.3. Partea electrică

3.3.1 Schema electrică, principiul de funcționare.

Fig. 3.3.1. Schema electrică a robotului

Am realizat schema electrică în felul următor :

micro motoarele GA12-N20 sunt conectate la pinii de culoare albastră a drive-ul de motor L298N (respectiv motorul A și motorul B)

Alimentarea motoarelor se face de la 5 baterii de 1,2 V (6 V) care se conectează la pinii de alimentare de pe modulul drive-ului de motor (pinii de culoare rosu și negru)

Pinul ENA (pin ce permite semnal de la motorul A) il conectăm la pinul digital 5 de pe placa ARDUINO UNO R3

Pinul IN 1 de pe modulul drive-ului de motor îl conectăm la pinul digital 6 de pe placa ARDUINO UNO R3

Pinul IN 2 de pe modulul drive-ului de motor îl conectăm la pinul digital 7 de pe placa ARDUINO UNO R3 (pin standard intrare/ieșire).

Pinul IN 3 de pe modulul drive-ului de motor îl conectăm la pinul digital 8 de pe placa ARDUINO UNO R3

Pinul IN 4 de pe modulul drive-ului de motor îl conectăm la pinul digital 9 de pe placa ARDUINO UNO R3

Pinul ENB (pin ce permite semnal de la motorul B) îl conectăm la pinul digital 10 de pe placa ARDUINO UNO R3

Pinul GROUND (pinul de masa) de pe drive-ul de motor îl conectăm la prinul de GROUND de pe placa ARDUINO UNO R3

Placa ARDUINO UNO R3 o alimentăm de la 5 baterii de 1,2 V (6V) printr-o mufă jack de alimentare.

Pinul analogic 2 de pe placa ARDUINO UNU R3 îl conectăm la pinul INT de pe modulul giroscopic care indică dacă informația este disponibilă de citit de pe MCU

Pinul analogic A5 de pe placa ARDUINO UNO R3 îl conectăm la pinul SCL de pe modulul giroscopic care furnizează timpii comunicației I2C.

Pinul analogic A4 de pe placa ARDUINO UNO R3 îl conectăm la pinul SDA de pe modulul giroscopic care este folosit pentru transferarea datelor prin coumnicația I2C

Pinul analogic Ground de pe placa ARDUINO UNO R3 îl conectăm la pinul GROUND de pe modulul giroscopic.

Pinul analogic 5V de pe placa ARDUINO R3 îl conectăm la pinul VCC care alimentează modulul giroscopic.

3.3.2 Sistemul de acționare al robotului, Servomotoarele

Fig. 3.3.2.1 Cele 2 motoare montate pe prima platforma

Vеhiculul dispunе dе 2 roți trăgătoаrе, аntrеnаtе dе 2 motoreductoаrе. Dаtorită acestora, vеhiculul еstе cаpаbil să sе dеplаsеzе pе аproаpе oricе tip dе tеrеn (аsfаlt, pământ, piеtriș, nisip, noroi).

Aceste 2 motoreductoare le-am incapsulat pentru o mai buna protectie a acestora, sa nu fie afectate de praf, apa, si alti factori care ar duce la uzura acestora.

Cеlе 2 motoreductoаrе , sunt controlаtе dе un drivеr, cаrе lа comаndа plăcuțеi Аrduino, аlimеntеаză motoаrеlе аcеstorа аstfеl încât vеhiculul să sе dеplаsеzе în dirеcțiа dorită dе opеrаtor.

3.3.3 Circuitul de dez. folosit pentru comanda robotului, Arduino MEGA

Аrduino еstе un microcontrolеr cе pеrmitе аccеsul utilizаtorilor să аcționеzе libеr аsuprа procеsului dе producțiе sаu dеzvoltаrе. Microcontrolеr-ul utilizаt pеntru а comаndа vеhiculul, еstе un Аrduino UNO R3.

Placa Arduino ce utilizeaza procesorul de tip ATmega328P functioneaza la un voltaj de 5 V si are 16 Mhz. Voltajul poate varia intre 7V si 12V. Frecventa de 16 Mhz permite utilizatorului sa faca programe complexe dar nu vor da libertatea ca si procesorul unui PC. Pericole ce pot aparea la o placa Arduino sunt urmatoarele: este recomandat ca Arduino sa fie alimentat doar de la portul USB al unui calculator sau a laptopului personal. Partea din spate a placii Arduino nu este izolata, de aceea este indicat sa nu se atinga placa de obiecte de metal ce pot provoca scurtcircuitari atat placii cat si portului USB. Daca placa se infierbanta nu este indicat sa ramana conectata la us-ul calculatorului.

Pentru a conecta o placa Arduino la calculator este nevoie de un driver care incarca programul in procesorul Arduino. Driverul se instaleaza mai intai conectand placa la calculator, apoi I se specifica calea unde este dezarhivat driver-ul. In tot acest timp placa Arduino trebuie conectata la portul USB al calculatorului pentru ca acesta sa detecteze ce tip este.

Platforma Arduino poate fi alimentata la portul USB al calculatorului, poate fi

Fig. 3.3.3.1 Placa ARDUINO

programat cu ajutorul unui limbaj asemanator cu limbajul C. La un Arduino pot fi conectati diversi senzori si actuatori. Senzorii preiau informatii din mediul inconjurator, iar actuatorii

sunt folositi pentru a modifica mediul inconjurator. Un exemplu ar fi preluarea luminii cu un senzor de lumina iar cand se intuneca

Specificatii ale placii ARDUINO

Tеnsiunе dе funcționаrе dе 5V

Tеnsiunе dе аlimеntаrе jаcк 7-12V

Pini dе I/O 14

Pini PWM 6 (din cеi 14 dе I/O)

Pini АDC 8

Mеmoriе flаsh 32КB (8 sunt ocupаți dе bootloаdеr)

Comunicаtiе TWI, SPI și UАRT

Frеcvеnță dе funcționаrе dе 16MHz[4]

Аvаntаjul unеi plăci Аrduino еstе fаptul că еstе ușor dе utilizаt. Nu аvеți nеvoiе să lipiți componеntе еlеctronicе. O plаcă Аrduino еstе gаtа dе utilizаrе tot timpul.

Fig.3.3.3.2. Schema componenta pini placa arduino ( refracuta in paint, MW casete txt)

• Microcontroler

• Buton reset

• LED indicator funcționare

• LED-uri Tx (Indicator transmisie date), Rx (Indicator recepție date)

• LED Load. Se poate controla de la Pin 13

• USB (Sursă de alimentare și port serial pentru încărcarea programului)

• DC Power Jack (Mufă pentru alimentare placă)

• Pini pentru alimentare dispozitive externe (3.3V, 5V, GROUND)

• Pini pentru alimentare placă de la baterie de 9V (VIN, GROUND)

• A0-A5. 6 pini analogici. ADC (Analog to Digital Converter). Tensiunile între 0-5V aplicate la intrarea oricăruia dintre acești pini sunt citite ca valori între 0-1023(210 biți)

• 14 pini digitali IN/OUT. Pinii notați cu (~) sunt capabili sa genereze semnal PWM (Pulse- width modulation)

• AREF. Folosit pentru setarea unei limite superioare de referință pentru pinii analogici

Driverele utilizate pentru comanda motoarelor de C.C.

Driver-ul utilizat pentru a comanda motoarele de curent continuu este un modul driver de motoare dual L298N Roșu, ce poate alimenta motoarele cu o tensiune între 5V și 35 V cu un curent maxim de 2A. Pentru ca partea logică să funcționeze simultan cu Arduino, driver-ul este alimentat cu 5V C.C. direct de pe placa de comandă Arduino, acesta având nevoie de un curent maxim de 36mA pentru a putea funcționa în parametrii optimi.

Driver-ul conține un limitator de tensiune liniar, astfel că atunci când tensiunea de alimentare a motoarelor este mai mare de 7V, nu este nevoie să alimentăm separat partea de logică. Driver-ul este unul dual, putând să controleze două motoare simultan.

Fig. 3.3.3.2. Modul cu driver de motoare dual L298N Rosu

În proiectul meu, am ales sa conectez cate 2 moatoare pe fiecare ieșire deoarece curentul absorbit de cele 4 motoare este sub 2A, iar tensiunea de alimentare a acestora este între 3V și 5V. Dimensiunile driver-ului sunt mai mari, deoarece are un radiator mai mare, care ajută la o dispersie mai buna a căldurii.Cu ajutorul celor doi pini EnA și EnB a driver-ului putem controla turația motoarelor.

Acest driver controlează motoarele de curent continuu prin controlarea alimentării acestora și cea mai des întâlnită metodă este folosirea semnalului PWM (pulse width modulation – modularea pulsurilor în lățime). Această tehnică ne dă voie să ajustăm voltajul care alimentează componenta electronică prin pornirea și o oprirea sursei de alimentare foarte repede.

În cazul nostru, viteza motorului de c.c. depinde de durata timpului în care sursa este pornita față de durata timpului în care sursa este oprită.

Caracteristici tehnice:

Tensiune motoare: 5V – 35V;

Tensiune circuite logice: 5V;

Curent motoare: 2A (MAX);

Curent logica: 36mA;

Frecvență maximă pwm: 40kHz.

Dimensiuni: 43 x 43 x 27 mm.

Driver-ul conține și un limitator de tensiune liniar, astfel că atunci când tensiunea de alimentare a motoarelor este >7V, nu este nevoie să alimentăm separat partea de logică.

Driver-ul este unul dual, putând să controleze două motoare. El poate fi folosit și pentru motoare pas cu pas. Chiar dacă are dimensiuni mai mari, este util prin faptul că beneficiază de un radiator destul de mare și disipă o cantitate mare de caldură.

Conexiuni:

• Out 1: terminal motor A
• Out 2: terminal motor A
• Out 3: terminal motor B
• Out 4: terminal motor B
• 5V: 5 V input (dacă sursa folosită este de 7-35 V poate fi folosit ca 5V )
• EnA: PWM pentru motorul A – controlul turației
• EnB: PWM pentru motorul B – controlul turației Pini pentru controlul turației și al sensului:
• In1: direcție motor A
• In2: direcție motor A
• In3: direcție motor B
• In4: direcție motor B

Fig. 3.3.3.3 Exemplificarea modularii in latime a pulsurilor trimise de motorul de c.c.

Pe de altă parte, pentru controlarea direcției de rotație, trebuie doar să inversăm sensul curentului ce trece prin motor, iar acest lucru se realizează folosind o punte H, asemenea cu cea folosită în acest proiect. Combinând cele doua metode, PWM și puntea H, putem avea control deplin asupra motorului de c.c. sunt foarte multe drivere care au această posibilitate, iar L298N, este unul din ele.

Senzorul GIROSCOPIC (MPU6050)

Modulul conține un circuit integrat MPU-6050 cu accelerometru, giroscop și senzor de temperatură. Acesta comunică pe interfață I2C, având nevoie de doar 2 conexiuni. Fiecare dispozitiv ce folosește interfața I2C are propria adresă. MPU6050 poate selecta una din două adrese disponibile, legând pinul AD0 la GND sau VCC. Această conexiune este făcută de obicei pe placuța modulului.

Este util în proiectele dumneavoastră ce au nevoie să detecteze mișcarea și intensitatea ei, cum ar fi jocuri, stabilizare de imagine, step counter.

Caracteristici tehnice:

Tensiune de alimentare: 3.3V – 5V (regulator LDO inclus);

Tensiune magistrală I2C: 3.3V (MAX);

Curent: 5mA;

Range programabil giroscop: ±250, ±500, ±1000, ±2000 o/s;

Range programabil accelerometru: ±2g, ±4g, ±8g, ±16g;

Interval măsurare temperatură: -40oC – +85oC;

Frecvență maximă I2C: 400kHz.

Dimensiuni: 20mm x 15mm.

Fig.3.3.3.4 Modul giroscopic

Modulul MPU6050 folosește protocolul I2C pentru a comunica cu plăcuța Arduino. Pinul INT poate trimite cereri de întreruperi plăcuței – MPU6050 va anunța astfel apariția unor evenimente speciale. Fiecare dispozitiv ce folosește interfața I2C are propria adresă. MPU6050 poate selecta una din cele două adrese disponibile, legând pinul AD0 la GND sau VCC.

Descrierea pinilor este urmatoare :

VCC – alimenteaza modulul cu tensiunea de +3V, +5V

GND ( GROUND) – conectat la impamantarea sistemului

SCL – furnizeaza impulsurile pentru comunicatia I2C

SDA – pentru transferarea datelor prin comunicatia I2C

XDA – folosit pentru interfatarea cu alte module

XCL – folosit pentru interfatarea cu alte module

ADO – daca sunt folositi mai multi senzori, acest pin poate fi folosit pentru a modifica adrese

INT – pin care indica faptul ca sunt disponibile date de citit

3.4 Regulatoare PID

Regulatoarele sunt folosite in sisteme de reglare automata.

Acestea sunt aparatele care prelucrează informația a, despre abaterea valorii mărimii interesate (măsurată direct din proces), față de valoarea aceleași mărimi, stabilită ca valoare de referință (valoare impusă), prin programul de conducere. Regulatorul stabilește, în baza algoritmului propriu de reglare a procesului, strategia de acțiune a elementului de execuție, prin comanda aplicată acestuia. Strategia de acțiune este în funcție de abaterea a, ce apare în sistem, intre valoarea impusă i și cea reală e, măsurată direct la ieșirea din proces. Această strategie constă în elaborarea, de către regulator, a unui semnal de comandă c, emis către elementul de execuție, în vederea anulării abaterii a. Algoritmul de reglare, conținut sau elaborat de regulator, este legea de dependență impusă, între i (t) și e(t), care sunt variabile în timp.

În practică este necesar a se stabili:

– legile după care trebuie prelucrată abaterea (de tip P, PI, sau PID);

– parametri de reglare (KR , TI , TD).

Clasificarea regulatoarelor se poate face după mai multe criterii, impuse de:

1.tipul și caracteristicile procesului reglat (P):

– regulatoare pentru procese invariante, a căror funcționare este caracterizată de valoarea constantă a parametrilor de reglare;

– regulatoare adaptive, pentru procese variabile în timp, respectiv cu

parametrii de reglare variabili;

2. caracteristicile de funcționare ale regulatorului:

– regulatoare liniare și neliniare, clasificate după dependența între mărimea de comandă c și abaterea aplicată la intrare a);

– regulatoare cu acțiune continuă (semnalul c este continuu în timp)

și acțiune discretă (semnalul c este discontinuu, de tip ieșire pe releu sau numeric);

– regulatoare convenționale (tip P, PI, PID) și cu caracteristici speciale (adaptive, optimale, estimatoare de stare), în clasificare după algoritmul de lucru;

– regulatoare electronice, pneumatice, hidraulice și mixte, clasificate după natura semnalelor (ex. la electronice, semnalele de intare/ieșire sunt numai de natură electrică);

– regulatoare unificate și specializate, clasificate după caracterul semnalului de intrare.

Cele mai răspândite regulatoare, în practică, sunt regulatoarele electronice cu acțiune continuă sau discretă, liniare, de tip proporțional (P), proporțional-integral (PI), proporțional-derivativ (PD) și proporțional- integral-derivativ (PID).

3.4.1 Regulatorul proporțional (P)

Acest tip de regulator este caracterizat printr-o ecuație diferențială:

unde, – este un parametru denumit ca factor de amplificare (factorul de proporționalitate), al regulatorului.

Acest factor KR constituie un parametru de acordare al regulatorului și el poate fi modificat în limite largi, în funcție de performanțele impuse SRA. Un regulator de tip P este caracterizat și prin banda de proporționalitate (BP), definită sub forma:

BP]

Valoarea acestui parametru este cuprinsă între 1 – 400 %;

Răspunsul indicial ideal al regulatorului P este prezentat în fig. 3.4.1.1, curba reprezintă răspunsul real, unde Ɛ este eroarea în regim staționar, pentru un semnal de intrare de tip treaptă unitară (a=1). Pentru cazul real, în funcționarea acestui regulator intervine o întârziere de ordinul întâi (reprezentată în figură cu linie punctată) sau de ordinul doi. Regulatorul P introdus într-o buclă de reglare poate conduce la o funcționare stabilă, însă cu o eroare staționară Ɛ ≠ 0 (semnalul de comandă c, nu va atinge niciodată valoarea necesară pentru anularea abaterii a), pentru un sistem de reglare a cărui funcție de transfer, nu conține poli în origine, la o variație în treaptă a mărimii de intrare.

Creșterea factorului de amplificare KR, determină o reducere a erorii staționare Ɛ (deci o creștere a preciziei) și o reducere a constantei de timp T (timpul necesar intrării în regim staționar) a sistemului.

Fig . 3.4.1.1 Graficul de functionare al regulatorului de tip P

În general, datorită faptului că, pentru procese care nu conțin elemente integratoare (în funcția de transfer nu există poli în origine) prezența regulatorului de tip proporțional, atrage o funcționare a sistemului de reglare, cu o abatere staționară ast ≠0, pentru o variație treaptă a mărimii de referință. Nu se recomandă utilizarea acestui tip de regulator singur, decât în cazurile în care precizia se încadrează în limitele admise.

3.4.2 Regulatorul proporțional – integral (PI)

Acest regulator combină efectul proporțional, cu un efect integral (integrează abaterea a(t) în timp și este descris de următoarea relație:

Acești factori , , constituie parametrii de acordare ai regulatorului de tip PI și ei pot fi modificați în limite largi, în funcție de performanțele impuse sistemului de reglare automată. Un regulator de tip PI este o combinație între un regulator P, completat cu un regulator I, efectul integrator este cel care determină panta de unghi α, pentru răspunsul c(t) al regulatorului de tip PI.

Efectul, în funcție de valoarea parametrului este același și este reflectat tot de banda de proporționalitate BP, care rămâne cuprinsă tot între valorile de 1 – 400%;

Figura 3.4.2.1 Graficul de functionare al regulatorului de tip PI

Eroarea staționară este ε=0, iar anularea acesteia, în timp, este determinată de efectul integral. La alegerea unui regulator PI, pentru un proces dat, se vor avea în vedere frecvența perturbațiilor asupra desfășurării procesului, precum și modul de variație al mărimii de intrare în regulator (de obicei a), unde TI, și KR se vor alege, ținând seama de necesitatea realizării unui răspuns dorit. Pentru procese rapide, cu schimbări rapide ale intrării și frecvențe mari ale perturbațiilor, nu se recomandă regulator PI.

3.4.3 Regulatorul proporțional – derivativ (PD)

Regulatorul PD combină efectul proporțional, cu un efect diferențial (derivativ), deci derivează abaterea a(t), în timp. Efectul introducerii componentei derivative este de reducere a suprareglajului σ (depășirea valorii prescrise, pentru semnalul de ieșire), atunci când apar perturbații bruște sau, în perioada de pornire a procesului.

Ecuația de funcționare a unui regulator PD este;

Fig 3.4.3.1 Grafice de functionare ale regulatorului PD

TD – constanta acțiunii derivative, care este tot un parametru de acordare a regulatorului, care împreună cu factorul de amplificare KR (are aceeași semnificație), determină legea de reglare a regulatorului PD. În concluzie, comanda c(t) devine proporțională, nu numai cu abaterea a(t), dar intervine și derivata acesteia, cu un efect de anticipație, care atrage o îmbunătățire a stabilității sistemului.

Adăugarea efectului derivativ mărește timpul tranzitoriu al perioadei de pornire, dar reduce depășirea valorii prescrise a mărimii de intrare (suprareglajul). Nu se recomandă la procese cu timp mort și/sau caracterizate de

perturbații cu frecvență mare.

3.4.4 Regulatorul proporțional – integral – derivativ (PID)

Sunt mai multe tipuri de regulatoare, dar pe noi ne intereseaza cel proportional-integral- derivativ (PID).

Acest tip de regulator are în componența lui, toate cele trei efecte – P, I, D; funcționarea lui este conform algoritmului descris de relația ecuatia mai jos enuntata; răspunsul indicial al regulatorului PID ideal este reprezentat în Fig. 3.4.1 a), iar răspunsul real , în Fig. 3.4.2.b).

Fig. 3.4.1 Graficele de functionare ale regulatorului PID.

După cum rezultă din reprezentare, algoritmul PID se obține ca o combinație liniară a celor trei moduri de acțiune PID. Se regăsesc, în acest algoritm, toate avantajele și dezavantajele fiecărei componente P, I și D.

3.5 Programarea

3.5.1 Programarea kitului de dezvoltare ARDUINO MEGA

Programarea platformei de procesare Arduino MEGA se va face cu ajutorul mediului de programare Arduino IDE  (Integrated Development Environment)  ce permite editarea codului în limbajul C++. Arduino MEGA se cuplează la PC printr-un cablu USB prin intermediul unui cablu de programare.

Proiectele fizice realizate pe platformele Arduino pot funcționa de sine stătător dar și pot interacționa cu alte aplicații care au fost realizate în alte medii de programare: Flash, Processing, MaxMSP, Visual Studio.

Arduino IDE și driverele necesare pot fi descărcate gratuit de pe sit-ul producătorului: http://arduino.cc/en/Main/Software.

Se va dezarhiva în directorul alex (Ex: d:\rduino sau c:\ProgramFiles\Arduinomega). Driverele necesare se vor găsi în subdirectorul divers. Directorul divers se va indica la instalarea mediului de dezvoltare, atunci când sistemul de operare ne atenționează că nu a găsit driverele.

Imediat ce driverele au fost instalate se poate porni mediul de dezvoltare se poate scrie primul program.

3.5.2 Setul de instructiuni Arduino MEGA

Un mediu de dezvoltare IDE Integrated Development Environment reprezintă un set de softuri care ajută programatorul în scrierea programelor. Mediile de dezvoltare combină toți pașii utilizați pentru crearea unui program (scrierea codului sursă, compilarea, depanarea programului, testarea programului, help sau generarea de documentație) într-un singur soft ce oferă o interfață grafică intuitivă. O pictogramă a unei sesiuni deschise în mediului de programare Arduino IDE poate fi vizualizată în fig. 3.4.2.1.

Fig 3.5.2.1 Mediul de programare Arduino IDE

Interfața cu utilizatorul a mediului de programare a fost realizată in Java, fiind o interfață multiplatformă, putând rula în Mac OS X Windows și Linux. Programul poate fi obținut atât ca executabil specific platformei de lucru pe care o avem la dispoziție dar și sub formă de cod sursă.

După ce a fost scris un program în mediul de programare Arduino IDE acesta poate fi verificat de erori. Dacă programul nu conține erori acesta poate fi exportat pe platforma de procesare prin intermediul cablului USB.

După ce mediul a fost instalat și deschis primul lucru care trebuie făcut atunci când deschidem IDE este acela de a ne alege platforma de procesare Arduino pe care o folosim. Putem face acest lucru selectând Tools>Board.

Următorul lucru care trebuie făcut este sa alegegem pe ce port comunică Arduino cu calculatorul în Tools > Serial Port.

Arduino IDE pune la dispoziție dezvoltatorilor și o serie de biblioteci standardizate ce scurtează timpul de realizare a programelor (aici avem biblioteci cu funcții predefinite folosite pentru accesarea protocolului RS-232, biblioteci pentru comunicația USB, biblioteci realizate pentru comanda servomotoarelor, biblioteci pentru realizarea aplicațiilor ce folosesc module LCD etc.).

Atunci când se dorește dezvoltarea unei aplicații se va ține cont de următorii pași:

Editarea programului

– se creează un fișier de program nou folosind File>New și se atribuie un nume;

– în pagina fișierului creat se va scrie codul sursă al programului;

– se va compila codul sursă, utilizând Compile;

– fișierul creat se va salva: File > Save All.

Compilarea programului și depanarea lui

– cu ajutorul opțiunii Compile se compilează programul;

– se vor corecta eventualele greșeli apoi se compilează din nou;

Încărcarea și executarea programului;

– programul se scrie pe componenta utilizată prin apăsarea butonului Send.

3.5.3 Realizarea programului

Codul sursa al programului este urmatorul :

#include <PID_v1.h>

#include <LMotorController.h>

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE

#include "Wire.h"

#endif

#define MIN_ABS_SPEED 30

MPU6050 mpu;

// MPU control/status vars

bool dmpReady = false; // set true if DMP init was successful

uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU

uint8_t devStatus; // return status after each device operation (0 = success, !0 = error)

uint16_t packetSize; // expected DMP packet size (default is 42 bytes)

uint16_t fifoCount; // count of all bytes currently in FIFO

uint8_t fifoBuffer[64]; // FIFO storage buffer

// orientation/motion vars

Quaternion q; // [w, x, y, z] quaternion container

VectorFloat gravity; // [x, y, z] gravity vector

float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector

//PID

double originalSetpoint = 172.50;

double setpoint = originalSetpoint;

double movingAngleOffset = 0.1;

double input, output;

//adjust these values to fit your own design

double Kp = 60;

double Kd = 2.2;

double Ki = 270;

PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);

double motorSpeedFactorLeft = 0.6;

double motorSpeedFactorRight = 0.5;

//MOTOR CONTROLLER

int ENA = 5;

int IN1 = 6;

int IN2 = 7;

int IN3 = 9;

int IN4 = 8;

int ENB = 10;

LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, motorSpeedFactorLeft, motorSpeedFactorRight);

volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high

void dmpDataReady()

{

mpuInterrupt = true;

}

void setup()

{

// join I2C bus (I2Cdev library doesn't do this automatically)

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE

Wire.begin();

TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)

#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE

Fastwire::setup(400, true);

#endif

mpu.initialize();

devStatus = mpu.dmpInitialize();

// supply your own gyro offsets here, scaled for min sensitivity

mpu.setXGyroOffset(220);

mpu.setYGyroOffset(76);

mpu.setZGyroOffset(-85);

mpu.setZAccelOffset(1788); // 1688 factory default for my test chip

// make sure it worked (returns 0 if so)

if (devStatus == 0)

{

// turn on the DMP, now that it's ready

mpu.setDMPEnabled(true);

// enable Arduino interrupt detection

attachInterrupt(0, dmpDataReady, RISING);

mpuIntStatus = mpu.getIntStatus();

// set our DMP Ready flag so the main loop() function knows it's okay to use it

dmpReady = true;

// get expected DMP packet size for later comparison

packetSize = mpu.dmpGetFIFOPacketSize();

//setup PID

pid.SetMode(AUTOMATIC);

pid.SetSampleTime(10);

pid.SetOutputLimits(-255, 255);

}

else

{

// ERROR!

// 1 = initial memory load failed

// 2 = DMP configuration updates failed

// (if it's going to break, usually the code will be 1)

Serial.print(F("DMP Initialization failed (code "));

Serial.print(devStatus);

Serial.println(F(")"));

}

}

void loop()

{

// if programming failed, don't try to do anything

if (!dmpReady) return;

// wait for MPU interrupt or extra packet(s) available

while (!mpuInterrupt && fifoCount < packetSize)

{

//no mpu data – performing PID calculations and output to motors

pid.Compute();

motorController.move(output, MIN_ABS_SPEED);

}

// reset interrupt flag and get INT_STATUS byte

mpuInterrupt = false;

mpuIntStatus = mpu.getIntStatus();

// get current FIFO count

fifoCount = mpu.getFIFOCount();

// check for overflow (this should never happen unless our code is too inefficient)

if ((mpuIntStatus & 0x10) || fifoCount == 1024)

{

// reset so we can continue cleanly

mpu.resetFIFO();

Serial.println(F("FIFO overflow!"));

// otherwise, check for DMP data ready interrupt (this should happen frequently)

}

else if (mpuIntStatus & 0x02)

{

// wait for correct available data length, should be a VERY short wait

while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();

// read a packet from FIFO

mpu.getFIFOBytes(fifoBuffer, packetSize);

// track FIFO count here in case there is > 1 packet available

// (this lets us immediately read more without waiting for an interrupt)

fifoCount -= packetSize;

mpu.dmpGetQuaternion(&q, fifoBuffer);

mpu.dmpGetGravity(&gravity, &q);

mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

input = ypr[1] * 180/M_PI + 180;

}

}

Cаpitolul IV. CONCLUZII

Roboții mobili se regăsesc în tot mai multe domenii și ne ajută tot mai mult. Ne apropiem cu pași înceți, dar fermi, către un viitor foarte tehnologizat și cu un nivel de trai mult mai ușurat.

Prin realizarea acestui vehicul telecomandat se demonstrează faptul că tehnologia este ușor de folosit,ușoară de învățat și oricine are acces la ea. Acest vehicul telecomandat este dotat cu senzori și controlat cu ajutorul unei aplicații Android de pe telefonul mobil, la un nivel la care acum 20-25 de ani, doar visat. De atunci tehnologia a avansat foarte mult, ai nevoie de motivație, interes și cunoștințe de bază în electronică, mecanică, informatică și poți realiza un robot într-un timp neimaginat de scurt.

Аcеst vеhicul sе încаdrеаză lа “ Utilizаrе în domеniul Mеdii Pеriculoаsе”, dеoаrеcе:

Ofеră posibilitаtеа dе а sе strеcurа prin spаții rеstrânsе;

Cu аjutorul cаmеrеi dе suprаvеghеrеа, sе poаtе аnаlizа cе sе întâmplă în încăpеrе și sе pot luа dеcizii mаi dеpаrtе în cееа cе privеștе аcțiunilе viitoаrе;

Аvând vitеză vаriаbilă, sе poаtе stаbilizа mаi rеpеdе imаginеа cаmеrеi;

Еstе ușor dе folosit, cееа cе ducе lа o аcomodаrе rаpidă а utilizаtorului cu аcеstа.

Cа posibilе dеzvoltări ultеrioаrе:

La acesta putem sa adaugam o camera video

Poаtе fi trаnsformаt într-un vеhicul militаr, prin montаrеа unui pistol dе cаlibru mic sаu а unui pistol cu еlеctroșocuri;

I sе pot аtаșа mаi mulți sеnzori 360⁰, pеntru rеаlizаrеа unеi hărți 3D а mеdiului în cаrе sе аflă.

BIBLIOGRAFIE

[A1] – Alexandru M., Sisteme de măsurare cu traductoare, Editura Matrixrom, 2012.

[A2] – Armaș I., Proiectare în mecatronică și robotică, Editura A.G.I.R., 2011.

[B1] – Balasubramanian K., Arunkumar R., Object recognition and obstacle

avoidance robot, Control and Decision Conference, Pages: 3002 – 3006, june 2009.

[B2] – Barna E., Barna V., Cucu C., Miron, C., Mecanică fizică și acustică (II), EdituraUniversității București, 2010.

[B3] – Barlea N-M, Fizica senzorilor, Editura Albastra, Cluj Napoca, 2000.

[B4] – Bârsan A., – Metode numerice în inginerie. Editura Universitatii Transilvania Brasov 2002, ISBN 973-8124-45-x.

[B5] – Benche V., Postelnicu A., Mecanica fluidelor și mașini hidraulice – Îndrumar de laborator. Editura Universității Transilvania Brașov.

[B6] – Borangiu T. Dumitrache, A.,, Anton, Programarea roboților, Editura A.G.I.R., 2010.

[B7] – Buiu C., Sisteme avansate pentru conducerea roboților autonomi, Editura Electra (ICPE), 2003.

[C1] – Caltun O. F., Metode numerice de procesare a semnalelor, Editura Stef București, 2008, ISBN 978-973-8961-93-7.

[C2] – Castellanos J.A., Tardós J.D., Mobile Robot Localization and Map Building – A Multisenzor Fusion Approach, March 1, 2000.

[C3] – Călinoiu C., Senzori și Traductoare, Volumul 1, Editura Tehnică, 2009.

[D1] – Dima V. N., Barna E., Mecanică și acustică. Probleme rezolvate. Ediția

a II -a revizuită și adăugită, Editura Universității București, 2006, ISBN (13) 978 973-737-183-6.

[D2] – Dolga V., Construcția traductoarelor și senzorilor. Universitatea Politehnica din Timișoara, Timișoara, 1996.

[D3] – Dolga V., Senzori și traductoare, Editura Eurobit, Timișoara, 1999,

ISBN: 973-99-227-9-1.

[D4] – Dumitriu A., Bucșan C., Demian T., – Sisteme senzoriale pentru roboți, Editura Medro, Brașov, 1996.

[E1] – Enescu N., Magheti I., Sârbu M. A., Acustica Tehnică, Editura Electra (ICPE), 1998, ISBN 973-98801-2-6.

[F1] – Florczyk S., Robot Vision: Video-based Indoor Exploration with Autonomous and Mobile Robots, Editura Wiley-VCH, 2005.

[H1] – Hahnel D., Map building with mobile robots in dynamic environments, Robotics and Automation, Proceedings. ICRA '03. IEEE International Conference, Pages: 1557 –1563 vol.2, 2003.

[H2] – Holger K., Willig A., Protocoale și arhitecturi pentru rețele de senzori wireless, Editura Matrixrom, 2012.

[H3] – Hristev A., Mecanică și Acustică, Editura APH București,1999.

[I1] – Ignea A.,Stoiciu D., Măsurări electronice, senzori și traductoare, Editura Politehnica Timișoara, 2007.

[M1] – Mătieș V., Tiuca, T., Roboti, structura cinematica si caracteristici, Editura

Dacia, 1996.

[M2] – Mătieș V., Berian S., Transdisciplinaritate și mecatronică, Editura Curtea

Veche, 2011.

[N1] – Nehmzow U., Mobile Robotics, A Practical Introduction, June 11, 2003, ISBN 978-1852337261.

[N2] – Nițulescu M., Sisteme robotice cu capacitate de navigație, Editura Universitaria Craiova, 2002.

[L1] – Leon F., Inteligența artificială – principii, tehnici, aplicații, Editura Tehnopress, Iași 2007, ISBN 973-702-423-0.

[L2] – Lovasz E. C., Robotică avansată, Editura Politehnica Timișoara, 2013.

[O1] – Olteanu C. – Aparate și sisteme de măsurare mecanice, Universitatea din Brașov, 1986; [O2] – Olteanu C. – Mijloace mecanice și hidropneumatice de măsurare – curs, Tipografia Universității “TRANSILVANIA” Brașov, 1988;

[O3] – Olteanu C., Turcu C., Olteanu F., Zamfira, S., Braun B. –Mechatronic system for measuring and tracing of maps concerning soil agro-productive parameters, 6th International DAAAM Baltic Conference INDUSTRIAL ENGINEERING, 24 -26 Aprilie 2008, Tallinn, Estonia, ISBN 978-9985-59-783-5;

[P1] – Patrascioiu C., Tehnici numerice de optimizare, Editura Matrixrom, București 2005, ISBN: 973-685-953-3.

[P2] – Popa C., Pelican E., Introducere în analiza numerică, Editura Matrixrom, București, 2009, ISBN: 9736859916.

[P3] – Popescu D., Senzori pentru roboți, Editura Electra (ICPE), 2004.

[S1] – Saracin C. G., Saracin M., Traductoare. Interfețe. Achiziții de date, Editura Matrixrom, 2010.

[S2] – Siegwart R, Introduction to Autonomous Mobile Robots, Intelligent Robotics and Autonomous Agents series, ISBN 978-0262195027, March 5, 2004.

[S3] – Stevanovic N., Hillegrand M., Hostica B. J., Teuner, A. – A CMOS Image Senzor for High Speed Imaging, ISSCC Digest of Technical Papers, pages 104 -105, San Francisco, 2000.

[T1] – Toth-Tascău M., Drăgulescu D., Planificarea și generarea mișcării roboților, Editura Orizonturi Universitare Timișoara, 2002.

[T2] – Toth-Tascău M., Dreucean M., Elemente de robotică, Editura Politehnica Timișoara,2008.

[V1] – Vasiu D., Olteanu C., Roșca I., Iordache P. – Senzori și traductoare – traductoare giroscopice, Brașov, 1992.

[Z1] – Zaides E. P., Traductoare și senzori, Editura Electra (ICPE), 2002.

[***1] – Fourier Senzors Guide. Fourth Edition. Printed in March 2004. page 50.51.

Similar Posts