Structura Robotului Mobil

CUPRINS

1. Introducere 2

1.1 Scopul lucrării 3

1.2 Roboți mobili autonomi 3

1.3 Structura lucrării 6

2.Structura robotului mobil 7

2.1 Principiul de funcționare 7

2.2 Structura de acționare a sistemului de comandă 8

2.3 Principiul algoritmului utilizat 9

3. Structura hardware 11

3.1 Elemente componente 11

3.2 Motoare de curent continuu 14

3.3 Circuitul integrat folosit pentru comanda motoarelor 19

3.4 Stabilizator de tensiune de 5V 21

3.5 Placa de procesare Arduino Nano 22

3.6 Senzorul de distanță ultrasonic HC-SR04 25

4.Structura software 27

4.1 Noțiuni introductive Arduino 27

4.2 Testare senzori 29

Semnalul PWM

4.3 Algoritmul utilizat 31

4.4 Structura programului 33

5.Concluzii 36

Bibliografie: 36

1.Introducere

1.1.Scopul lucrării

Scopul acestei lucrări este de a realiza un robot mobil autonom capabil să detecteze și să evite obstacole în timpul deplasării sale în anumite spații. Evitarea obstacolelor se va realiza cu ajutorul a trei senzori de distanță ultrasonici Ping care vor transmite datele către Arduino Nano și acesta va lua deciziile corepunzătoare în cazul în care se detectează un obstacol în timpul deplasării sale.

1.2.Roboți mobili autonomi

Generalități

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 sau î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 protecții mecanice care prin deformare oprește robotul, folosirea senzorilor ce măsoară distanța până la obstacolele de pe direcția de deplasare, 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 aceasta 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 semipasive de tip optic sau magnetic.

Caracteristicile roboților mobili

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.

Clasificarea robotilor 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 pe șenile ;

Fig.1.1. Roboți mobili pe șenile

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

Fig.1.2. Roboți mobili pășitori

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

Fig.1.3. Roboți târâtori

Roboți săritori: imită deplasarea broaștelor, cangurilor, etc. ;

Fig.1.4. Roboți săritori

1.3.Structura lucrării

Lucrarea este structurată in cinci capitole în care sunt prezentate detaliat toate etapele prin care trecut în vederea realizării robotului mobil cât și detalii despre piesele utilizate și importanța lor.

În primul capitol am prezentat noțiuni introductive despre roboții mobili autonomi,cu ce scop s-a realizat această lucrare și modul în care a fost structurată întreaga lucrare.Al doilea capitol cuprinde noțiuni despre structura robotului mobil, schema generală a acestuia,ansamblul de piese ce formeaza structura de acționare de comandă și principiul logic al algoritmului utilizat.

În capitolul trei se prezintă structura harware a robotului, elementele componente și prezentarea detaliior pentru fiecare componentă. În următorul capitol se prezintă structura software ce conșine programul de testare a celor trei senzori, detalierea algoritmului utilizat, structura programului ce realizează controlul robotului autonom. Ultimul capitol cuprinde o prezentare în ansamblu a întregii lucrări și prezentarea unor concluzii cu privire la tema aleasă.

2.Structura robotului mobil

2.1Principiul de funcționare

Robotul mobil autonom pentru evitarea obstacolelor este un tip de robot care are doar o simplă sarcină de îndeplinit, aceea de a interpreta date primite de la senzori și în funcție de datele returnate să-ți schimbe direcția de deplasare.

Acest robot folosește principiul de acționare diferențială, care utilizează două motoare independente montate în poziții fixe pe partea dreaptă și stângă a șasiului robotului. Aceasta înseamnă că în momentul în care senzorul din față detectează un obstacol și senzorul din stânga nu detectează nimic semnalul PWM trimis către motorul din stânga va face vehiculul să se întoarcă spre stânga, în momentul în care se dectează un obstacol atîât în față cât și în partea dreaptă a robotului mobil autonom, semnalul trimis motorului din dreapta va face robotul să se întoarcă spre acea dreapta și în cazul în care sunt obstacole atât în față, cât și în stânga și drepta robotului, acesta virează la stânga după care citește din nou valorile returnate de către senzori și decide în ce direcție se va deplasa.

Fig.2.1 Principiul de funcționare a robotului mobil autonom

2.2Structura de acționare a sistemului de comandă

Pentru realizarea hardware a robotului mobil autonom se utilizează structura comandă din figură (Fig.2.3) .Întregul ansamblu de piese utilizate ajută la determinarea poziției și orientării, la realizarea deplasării robotului cât și la determinarea distanței la care se află un obstacol față de robot și evitarea acestuia.

Determinarea distanței la care se află un obstacol se realizaeză cu ajutorul a trei senzori de distanță ultrasonici HC-SR04. Semnalul returnat de către senzori este determinat cu ușurință de către un microcontroller ATMega 328 ce este încorporat în placa de dezoltare compactă Arduino Nano.

În funție de distanța la care se află obstacolul față de robot, se acționează asupra controlului motoarelor prin intermediul punții H integrate prin semnal PWM realizându-se astfel un sistem de acționare electrică în buclă deschisă. Controlul și schimbarea direcției de mișcare se realizează diferențial, în funcție de valorile returnate de către senzorii de distanță ultrasonici, prin intermediul funcțiilor definite pentru posibilele traiectorii pe care le poate urma robotul mobil.

Schimbarea direcției de mers se face prin accelerarea diferențială a sistemului de șenile, lucru realizabil prin intermediul punții H. Aceasta are rolul de a mări puterea semnalului PWM generat de microcontroller, astfel fiind posibilă reglarea vitezei.

Implementarea software a avut la bază algoritmul de realizare a regulatorului neliniar cu trei stări distincte.

Fig.2.3 Structura de comandă a robotului mobil

Alimentarea sistemului se realizază cu ajutorul a două surse de tensiune diferite, o baterie de 9V cu care este alimentat driver-ul de motoare L298N și un set de baterii de 1.5V (4×1.5V) care asigură alimentarea plăcii de dezvoltare Arduino Nano și a celor trei senzori de distanță ultrasonici HC-SR04.

Între sursa de alimentare, placa Arduino și senzori există un stabilizator de tensiune, care verifică nivelul de curent consumat și ajustează astfel nivelul de tensiune. Tensiunea de alimentare trebuie să fie puțin mai ridicată decât cea necesară de sistem.

2.3 Principiul algoritmului utilizat

Robotul mobil autonom după ce s-a realizat partea hardware pentru controlul direcției și pentru a se putea deplasa în spații necunoscute fără să se intersecteze cu obstacolele din acel spațiu se implementează un algorim pe microcontroller.Algoritmul utilizat în acest caz are la bază principiul de funcționare a regulatoarelor automate electronice neliniare tripoziționale. Funcționarea regulatoarelor neliniare este caracterizată în regim staționar de o dependență neliniară între mărimea de comandă xc și eroarea (sau mărimea de abatere xa). Această dependență este denumită caracteristică statică pentru a sublinia că este valabilă numai în regimul staționar.

Cele mai utilizate regulatoare neliniare sunt regulatoarele bipoziționale (RBP) și regulatoarele tripoziționale (RTP). Aceste regulatoare, un caz particular al regulatoarelor neliniare, pot fi considerate regulatoare discontinue, deoarece mărimea de comandă de la ieșirea regulatorului poate avea numai anumite valori (variază în funcție de eroare după o funcție discontinuă) și sunt utile în procesele industriale la care sunt admise mici variații ale mărimii reglate în jurul valorii de referință.

După cum le spune și numele, regulatoarele tripoziționale (RTP) se caracterizeaz prin

faptul că mărimea de comandă nu poate lua decât trei valori.Caracteristica statică a acestor regulatoare are forma din figura urmăroare :

Fig.4.x Caracteristica statică a regulatorului tripozoțional

a.caracteristica ideală b. caracteristica reală

Din aspectul caracteristicii statice ideale se constată că dacă eroarea satisface condiția:

– ε0 < ε < ε0 xc = 0

ε > ε0 xc = xcmax

ε < – ε0 xc = – xcmax

Mărimea de comandă xc poate avea trei valori (- xmax, 0, xmax ), de unde vine și denumirea de regulator tripozițional.Zona erorilor definită de relația – ε0 < ε < ε0 este numită și zonă de insensibilitate, deoarece pentru valori ale erorii în interiorul zonei se obține o mărime de comandă egală cu zero. Caracteristica statică reală a RTP este o caracteristică cu histerezis, valorile mărimii de comandă xc depinzând și de sensul de variație, creștere sau descreștere, a erorii ε.

Pentru:

– εr < ε < εr xc = 0

ε < – εa xc = – xcmax

ε > εa xc = +xcmax

SCHEMA Pentru Algoritm !!!!

3.Structura hardware

3.1.Elemente componente

Pentru a putea proiecta și realiza un robot mobil autonom capabil să detecteze și să evite obstacole vom avea nevoie de următoarele elemente :

O plăcuță de plastic cu grilaj de 60×160 mm formată din găuri de 3 mm cu spații de 5 mm între ele , spațiu pentru mai multe conexiuni mecanice . Plăcuța are 2 suporți de arbore pentru a susține axul .Pentru conectarea brațelor unghiulare și a suporților de arbore pe placuță avem nevoie de 10 șuruburi.

. Un set care contine :

2 șenile ;

2 roți motoare;

2 roți mari de ghidaj;

6 roți mici de ghidaj ;

Axe din metal pentru montaj .

Cutie de viteză dublă Tamiya care are incluse două motoare de curent continuu și angrenajele necesare pentru doua roți motoare .

O platformă de procesare open-source Arduino Nano

Un driver de motoare L298 utilizat pentru controlul motoarelor de curent continuu.

Senzori de distanță HC-SR04

Stabilizator de tensiune de 5V

Suport de 4 baterii

3.2.Motoare de curent continuu

Motorul de curent continuu a fost inventat în 1873 de Zénobe Gramme prin conectarea unui generator de curent continuu la un generator asemănător. Astfel, a putut observa că mașina se rotește, realizând conversia energiei electrice absorbite de la generator.

Motorul de curent continuu are pe stator polii magnetici și bobinele polare concentrate care creează câmpul magnetic de excitație. Pe axul motorului este situat un colector ce schimbă sensul curentului prin înfășurarea rotorică astfel încât câmpul magnetic de excitație să exercite în permanență o forță față de rotor.

Fig.3.1 Construcția unui motor

În funcție de modul de conectare a înfășurării de excitație motoarele de curent continuu pot fi clasificate în:

motor cu excitație independentă – unde înfășurarea statorică și înfășurarea rotorică sunt conectate la două surse separate de tensiune;

motor cu excitație paralelă – unde înfășurarea statorică și înfășurarea rotorică sunt legate în paralel la aceași sursă de tensiune;

motor cu excitație serie – unde înfășurarea statorică și înfășurarea rotorică sunt legate în serie;

motor cu excitație mixtă – unde înfășurarea statorică este divizată în două înfășurări, una conectată în paralel și una conectată în serie.

Înfășurarea rotorică parcursă de curent va avea una sau mai multe perechi de poli magnetici echivalenți. Rotorul se deplasează în câmpul magnetic de excitație până când polii rotorici se aliniază în dreptul polilor statorici opuși. În același moment, colectorul schimbă sensul curenților rotorici astfel încât polaritatea rotorului se inversează și rotorul va continua deplasarea până la următoarea aliniere a polilor magnetici.

Fig.3.2 Motorul electric de curent continuu

Pentru acționări electrice de puteri mici și medii, sau pentru acționări ce nu necesită câmp

magnetic de excitație variabil, în locul înfășurărilor statorice se folosesc magneți permanenți.

Turația motorului este proporțională cu tensiunea aplicată înfășurării rotorice și invers

proporțională cu câmpul magnetic de excitație. Turația se reglează prin varierea tensiunii aplicată

motorului până la valoarea nominală a tensiunii, iar turații mai mari se obțin prin slăbirea câmpului

de excitație. Ambele metode vizează o tensiune variabilă ce poate fi obținută folosind un generator

de curent continuu (grup Ward-Leonard), prin înserierea unor rezistoare în circuit sau cu ajutorul

electronicii de putere (redresoare comandate, choppere). Motor universal folosit la râșnițele de

cafea.Cuplul dezvoltat de motor este direct proporțional cu curentul electric prin rotor și cu câmpul

magnetic de excitație.

Reglarea turației prin slăbire de câmp se face, așadar, cu diminuare a cuplului dezvoltat de motor.

La motoarele serie același curent străbate înfășurarea de excitație și înfășurarea rotorică. Din această

considerație se pot deduce două caracteristici ale motoarelor serie: pentru încărcări reduse ale

motorului, cuplul acestuia depinde de pătratul curentului electric absorbit; motorul nu trebuie lăsat să

funcționeze în gol pentru că în acest caz valoarea intensității curentului electric absorbit este foarte

redusă și implicit câmpul de excitație este redus, ceea ce duce la ambalarea mașinii până la

autodistrugere. Motoarele de curent continuu cu excitație în serie se folosesc în tracțiunea electrică

urbană și feroviară (tramvaie, locomotive).

Schimbarea sensului de rotație se face fie prin schimbarea polarității tensiunii de alimentare, fie

prin schimbarea sensului câmpului magnetic de excitație.

La motorul serie, prin schimbarea polarității tensiunii de alimentare se realizează schimbarea

sensului ambelor mărimi și sensul de rotație rămâne neschimbat. Așadar, motorul serie poate fi

folosit și la tensiune alternativă, unde polaritatea tensiunii se inversează o dată în decursul unei

perioade. Un astfel de motor se numește motor universal și se folosește în aplicații casnice de puteri

mici și viteze mari de rotație (aspirator, mixer).

Fig.3.3 Schema constructivă a motorului de c.c

În general, sunt similare în construcție cu generatoarele de curent continuu. Ele pot, de fapt sa fie

descrise ca generatoare care "funcționeaza invers". Când curentul trece prin rotorul unui motor, este

generat un câmp magnetic care genereaza o forță electromagnetică, și ca rezultat rotorul se rotește.

Acțiunea periilor colectoare și a plăcuțelor colectoare este exact aceiași ca la generator.

Rotația rotorului induce un voltaj în bobinajul rotorului. Acest voltaj indus are sens opus

voltajului exterior aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rezultat este

aproape egal cu cel indus. Curentul este mic, și viteza motorului va ramâne constanta atât timp cât

asupra motorului nu acționează nici o sarcina, sau motorul nu efectuează alt lucru mecanic decât cel

efectuat pentru învârtirea rotorului. Când asupra rotorului se aplică o sarcină, voltajul va fi redus și

un curent mai mare va putea să treacă prin rotor.

Astfel, motorul este capabil să primească mai mult curent de la sursa care îl alimentează, și astfel

să efectueze mai mult lucru mecanic. Deoarece viteza rotației controlează trecerea curentului prin

rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Când

rotorul se află în repaus, el, efectiv, nu are nici o rezistență, și dacă voltajul normal este aplicat, va

trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul.

Mijloacele obișnuite pentru prevenirea acestor accidente este folosirea în serie a unei rezistențe,

la început, împreună cu rotorul, pentru a limita curentul pâna când motorul începe să dezvolte un

curent suficient. Pe parcurs ce motorul prinde viteză, rezistența este redusă treptat, fie manual ori

automat.

Tabel3.1 Specificații tehnice a motoarelor de curent continu

Fig.3.4 Cutia de viteze și motoarele de c.c asamblate

Semnale PWM(Pulse Width Modulation)

Semnalele PWM sunt folosite în general pentru a controla viteza unui motor de curent

continuu.Aceste motoare permit controlul vitezei prin modificarea tensiunii de alimentare însă viteza

se modifică neliniar.Pentru a controla această viteză liniar s-a recurs la metoda de controlprin

semnale PWM.

Semnalele PWM au următoarea formă:

Fig.3.4 Forma semnalului PWM

În schema de mai sus observăm că semnalul este de perioadă T. Această perioadă este compusă

din timpul în care semnalul este 1 logic (Tplin care se mai numește și factor de umplere) și timpul în

care semnalul este 0 logic (Tgol). De obicei intervalul T este dat de 256 de tacte de ceas astfel Tplin

sau TGol putând modifica viteza motorului cu pasul de aproximativ 0.4% la fiecare modificare cu o

unitate a registrului de control al factorului de umplere.[5]

3.3.Circuitul integrat folosit pentru comanda motoarelor

Circuitul integrat ales de noi este L298N.

Circuitul integrat L298N este o punte H folosită pentru a controla viteza de rotație precum și sensul

de rotație pentru cele 2 motoare. Acest circuit este controlat de către softul aflat pe microcontroller.

Schema de control a motoarelor cu circuitul L298N este următoarea:

Fig.3.5 Schema de control a circuitului L298N

Conectarea la Arduino se face cuplând placă shield peste placă Arduino și conectând pinii

marcați VIN și GND la sursa de alimentare pentru motoare. Pinii PWM care controlează

driver-ul L298 sunt 3, 5, 6 și 9.

Fig.3.6 Placa shield

Fig.3.7 Stuctura punții H L298N

Fig.3.8Placa shield montată pe suport de plastic

3.4.Stabilizator de tensiune de 5V

Un stabilizator de tensiune fixă se utilizează pentru stabilirea locală a tensiunii de alimentare pe module cu circuite integrate. Avantajele utilizării unui astfel de stabilizator sunt că oferă simplitate în utilizare și optimizează raportul dintre cost și performanță.

Fig.3.9 Stabilizator de tensiune de 5V

Tab.3.2 Specificații tehnice stabilizator de tensiune

Fig.3.10 Schema de funcționare a unui stabilizator de tensiune

Fig.3.10 Stabilizatorul de tensiune asamblat pe robotul mobil

3.5.Placa de procesare Arduino Nano

Arduino Nano este o placă de dezvoltare compactă, proiectată pentru utilizarea pe un breadboard.

Ea are la bază un microcontroler ATMega 328. Aceasta se conectează la computer utilizând un cablu

USB Mini-B.

Fig.3.11 Placa Arduino Nano

Alimentare

ARDUINO Nano poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de

alimentare externă. Sursa de alimentare este selectată automat.

Alimentarea externă (non-USB) poate veni fie de la un adaptor AC-la-DC sau baterie.

Adaptorul poate fi conectat printr-un conector cu centru-pozitiv. Conectarea de la o baterie

poate fi realizată legând la GND si V’in capetele de la conectorii de alimentare.

Placa de dezvoltare poate opera pe o sursa externă de 6-20 volti. Dacă este alimentată la

mai putin de 7V, există posibilitatea, ca pinul de 5V să furnizeze mai putin de cinci volți și

placa să devină instabilă. Dacă se alementează cu mai mult de 12V, regulatorul de tensiune se

poate supra-încălzi acest lucru ducând la deteriorarea plăcii. Intervalul de tensiune

recomandat de catre producător este de 7-12 volți.

Memoria

ATmega328 are 32 KB (cu 2 KB utilizate pentru bootloader). Ea are, de asemenea,2 KB

SRAM și 1 KB de EEPROM.

Arduino UNO prezintă o serie de facilități în comunicarea cu calculatorul, cu alt

Arduino sau cu alte microcontrollere. ATmega328 oferă comunicație serială UART

TTL (5 V), valabilă pe pinul 0 și 1 (RX și TX).LED-urile RX și TX de pe placă vor

lumina intermitent când datele sunt transmise prin portul USB de la calculator către

Arduino. [7]

Fig.3.12 Planul general al plăcii microcontrollerului

Tab.3.3 Specificații tehnice Ardiono Nano

Fig.3.13 Schema electrică a plăcii Arduino Nano

Fig.3.x Placa Arduino Nano montată pe platforma robotului

3.6.Senzorul de distanță ultrasonic HC-SR04

Senzorul cu ultrasunete HC-SR04 oferă o metodă ieftină și foarte ușoară de

măsurare a distanței. Acest senzor este perfect pentru orice tip de aplicații în care aveți nevoie

să efectuați măsurători între obiecte în mișcare sau staționare.

Acest senzor de distanță cu ultrasunete este utilizat pe scară largă în aplicații de robotică și

este, de asemenea, util în sistemele de securitate sau ca un înlocuitor pentru senzorii cu infraroșu.

Senzorul măsoară distanța, folosind un sonar; un impuls ultrasonic (mult peste auzul uman) este

transmis de la unitate, iar distanța până la țintă este determinată prin măsurarea timpului necesar de

întoarcere a ecoului. Ieșirea de la senzor este un impuls cu lățime variabilă, care corespunde cu

distanța până la țintă. Conectarea la microcontroller sau alte controllere programabile este ușoară: un

singur pin I / O (sau de semnal) este folosit pentru a activa senzorul și "ascultă" impulsul ecoului

returnat, un pin pentru alimentare și un alt pin pentru masă.

Fig.3.14 Senzorul de distanță ultrasonic HC-SR04

Specificații tehnice:

Principial, directivitatea sonarelor depinde de puterea emițătorului și câștigul amplificatorului de

recepție, de dimensiunea obiectului reflectător, de textura (reflectivitatea) suprafeței și de orientarea

acestei suprafețe. Există situații extreme, cînd un obiect aflat în fața sonarului nu poate fi detectat,

cum ar fi cea în care suprafața este lucioasă (oglindă), orientată înclinat față de axa normală la

suprafața sonarului.

DIAGRAMA DE TIMP !!!!

Fig.3.x Senzorii de distanță montați pe robotul mobil

4.Structura software

4.1 Noțiuni introductive Arduino

Microcontrollerul se poate programa cu ajutorul softului oferit pe site-ul oficial

arduino-1.0.5-windows.exe. În figura umătoare sunt prezentate principalele

caracteristici ale programului după cum urmează :

denumire proiect: fiecare program creat în mediul de programare Arduino se numește “sketch” (schița) și se salvează cu extensia “.ino”.

bara meniu utilitare: este o bară de opțiuni care se întâlnește la majoritatea

programelor create pentru sistemul de operare Windows, dar care are în plus secțiunea “Sketch” unde avem opțiunea de compilare/ verificare, adăugare fișiere și importare librării.

butoanele de compilare, încărcare program, proiect nou, deschidere proiect și salvare proiect sunt practic scurtături pentru opțiunile din bară cu utilitare.

un lucru foarte important îl reprezintă Serial Monitor care se deschide cu ajutorul

butonului evidențiat în figură și cu ajutorul căruia se pot observa valorile citite de la microcontroler primite de la pinii de intrare.

zona de mesaje: afișează rezultate cu privire la salvarea, compilarea, încărcarea programului dar și erorile de sintaxa pe care le conține codul.

Fig.4.1Principalele caracteristici ale softului Arduino

Programele Arduino pot fi divizate în 3 mari părți componente:

structuri ;

variabile și constante ;

funții .

Orice program Arduino are doua secțiuni. Secțiunea "setup", care este rulată doar o singură dată, atunci când placa este alimentată (sau este apasat butonul "Reset"), și secțiunea "loop", care este rulată în ciclu, atât timp cât este alimentată placă.

void setup() {

//codul scris aici rulează o singură dată

}

void loop() {

//codul scris aici rulează tot timpul

}

Astfel, în rutina "setup" vom pune de obicei cod de inițializare, iar în rutina "loop" vom scrie partea principală a programului nostru.

4.2 Testare senzori

Robotul mobil autonom are în componența lui trei senzori ultrasonici de distanță HC-SR04 care stabilesc distanța la care se află un obstacol. Cei trei senzori sunt alimentați la tensiunea de 5 V, iar pe placa Arduino sunt conectați în umătorul mod :

Senzorul din față pentru emițător este conectat la pinul 7 al plăcii și pentru receptor la pinul 8 ;

Fig.4.2 Sezorul din față al robotului autonom

Senzorul din dreapta pentru emițător este conectat la pinul 2 și pentru receptor la pinul 4 al plăcii ;

Fig4.3 Senzorul din dreapta al robotului autonom

Senzorul din stânga este conectat la pinul 10 pentru emițător și pinul 11 pentru receptor .

Fig4.4 Senzorul din stanga al robotului autonom

#define trigPin1 2

#define echoPin1 4

#define trigPin2 7

#define echoPin2 8

#define trigPin3 10

#define echoPin3 11

void setup()

{

Serial.begin(9600);

pinMode(trigPin1, OUTPUT);

pinMode(echoPin1, INPUT);

pinMode(trigPin2, OUTPUT);

pinMode(echoPin2, INPUT);

pinMode(trigPin3, OUTPUT);

pinMode(echoPin3, INPUT);

}

void loop()

{

long duration, distance;

digitalWrite(trigPin1, LOW);

digitalWrite(trigPin2, LOW);

digitalWrite(trigPin3, LOW);

delayMicroseconds(2);

digitalWrite(trigPin1, HIGH);

digitalWrite(trigPin2, HIGH);

digitalWrite(trigPin3, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin1, LOW);

duration1 = pulseIn(echoPin1, HIGH);

distance1= (duration1/2) / 29.1;

Serial.println("Senzor dreapta: ");

Serial.println(distance1);//dist senzorului din drepta returnată este în cm

digitalWrite(trigPin2, LOW);

duration2 = pulseIn(echoPin2, HIGH);

distance2= (duration2/2) / 29.1;

Serial.println("Senzor fata: ");

Serial.println(distance2);//dist senzorului din față returnată este în cm

digitalWrite(trigPin3, LOW);

duration3 = pulseIn(echoPin3, HIGH);

distance3= (duration3/2) / 29.1;

Serial.println("Senzor stanga: ");

Serial.println(distance3);

}

Controlul și schimbarea drecției de mișcare se realizează diferențial, în funcție de valorile returnate de către senzori, prin intermediul funțiilor definite entru posibilele traiectorii pe care le poate urma robotul mobil autonom. Valorile returnate de către acești senzori au fost determinate experimental, prin intermediul funcției de afișare ce se află în fereastra Arduino “Serial Monitor “, după cum se poate observa în următorul tabel:

Dezavantajul utilizării acetui tip de senzori este că în timpul emiterii consumul de energie electrică este mai mare și că atunci când se utilizează mai mulți senzori aceștia se pot influiența reciproc.

4.3.Algoritmul utilizat

După cum am prezicat și într-un capitol anterior algoritmul care stă la baza robotului mobil autonom are ca principiul funcționarea regulatoarelor automate electronice neliniare tripoziționale. Cele trei stări posibile pe care le poate avea robotul mobil sunt determinate în funcție de valorile pe care le returnează senzorii ultrasonici de distanță HC-SR04 ți în funcție de aceste valori se ia o decizie cu privire la schimbarea direcției de mers a robotului autonom

Structura algoritmului utilizat va fi sub următoarea formă :

Fig4.x Organigrama algoritmului utilizat

Algoritmul funcționează în următorul mod :

în momentul în care senzorul din față returnează o valoare mai mica decat cea precizată, citește valoarea senzorului din dreapta și dacă este posibil face virajul ;

dacă senzorul din față și senzorul din dreapta returnează o valoare mai mică decât valoarea dată se încearcă virajul la stânga ;

în caz contrar, dacă se detectează obstacol în față, în stânga și în dreapta robotului puntea H crește viteza de rotație a motorului montat pe șenila din dreapta facându-se virajul la stânga și după se va analiza din nou valorile returnate de senzori

4.4.Structura programului

Programul este format din funcțiile principale setup() și loop() la care se mai adaugă și următorele funcții și definiri:

Încarcarea librăriilor necesare,definirea pinilor și conectarea componentelor și a variabilelor;

Funcția void setup() ;

Funcția void loop() ;

Funcțiile pentru direcțiile de mers ale motoarelor :

Inainte() ;

Dreapta();

Stanga();

Stop();

Funcția void algoritm() care prelucrează datele primite de la senzori și determină schimarea sensului de mișcare în momentul în care se detectează un obstacol.

Încarcarea librăriilor necesare,definirea pinilor și conectarea componentelor și a variabilelor;

#include "Ultrasonic.h"

#define Motor2_Pin1 3

#define Motor2_Pin2 5

#define Motor1_Pin1 6

#define Motor1_Pin2 9

#define dreapta 10

#define stanga 170

#define trigPin1 2

#define echoPin1 4

#define trigPin2 7

#define echoPin2 8

#define trigPin3 10

#define echoPin3 11

int distantaFata; // se definește mărimea de tip întreg distantaFata

int distantaDreapta; // se definește mărimea de tip întreg distantaDreapta

int distantaStanga; // se definește mărimea de tip întreg distantaStanga

bool decizie=false;

int k=0;

Serial.println("Senzor dreapta: ");

Ultrasonic ultrasonic1(2,4); // dreapta

Serial.println("Senzor fata: ");

Ultrasonic ultrasonic2(7,8); // fata

Serial.println("Senzor stanga: ");

Ultrasonic ultrasonic3(10,11); // stanga

Funcția void setup() ;

void setup()

{

pinMode(trigPin1, OUTPUT);

pinMode(echoPin1, INPUT);

pinMode(trigPin2, OUTPUT);

pinMode(echoPin2, INPUT);

pinMode(trigPin3, OUTPUT);

pinMode(echoPin3, INPUT);

Serial.begin(9600); // se începe comunicarea serială cu computerul la valoarea de 9600 biți

pinMode(Motor1_Pin1, OUTPUT); // se declară pinii la care sunt conectate motoarele ca pini

pinMode(Motor1_Pin2, OUTPUT);

pinMode(Motor2_Pin1, OUTPUT);

pinMode(Motor2_Pin2, OUTPUT);

delay(1000);

}

Funcția void loop() ;

void loop()

{

if(k==0)

{

delay(5000);

k=1;

}

algoritm();

}

Funcțiile pentru direcțiile de mers ale motoarelor :

void Inainte()

{

Serial.println("Inainte");

digitalWrite(Motor1_Pin2, LOW);

digitalWrite(Motor2_Pin2, LOW);

analogWrite(Motor1_Pin1, 120);

analogWrite(Motor2_Pin1, 120);

return;

}

void Dreapta()

{

Serial.println(" Dreapta");

digitalWrite(Motor1_Pin2, HIGH);

digitalWrite(Motor2_Pin2, LOW);

analogWrite(Motor1_Pin1, 130);

analogWrite(Motor2_Pin1, 200);

analogWrite(Motor1_Pin1, 200);

return;

}

void Stanga()

{

Serial.println(" Stanga");

digitalWrite(Motor1_Pin2, LOW);

digitalWrite(Motor2_Pin2, HIGH);

analogWrite(Motor1_Pin1, 200);

analogWrite(Motor2_Pin1, 130);

return ();

}

void Stop()

{

Serial.println(" Stop");

digitalWrite(Motor1_Pin1, LOW);

digitalWrite(Motor1_Pin2, LOW);

digitalWrite(Motor2_Pin1, LOW);

digitalWrite(Motor2_Pin2, LOW);

return;

}

5.Concluzii

Bibliografie:

[1] Nițulescu, M. “Sisteme robotice cu capacitate de navigație”, Ed. Universitaria, Craiova, 2002.

[2] Bajd, T., Mihelj, M., Lenarcic, J., Stanovnik.,A., Munih, M. “Robotics”, Springer Science,

London, 2010.

[3] Frangu, L., Mazarel, M., Olteanu, D. "Using the Sensory System of the Robot for Obstacle Avoidance Tasks", Proc. of the 2-nd National Workshop on Mobile Robots, Craiova, Romania, oct. 18-20, 2001, pp. 131-137.

[4] Borenstein, J., Koren, Y. “Real-time Obstacle Avoidance for Fast Mobile Robots”, IEEE Trans. on System, Man and Cybernetics, Vol. 19, No. 5, 1989, pp. 1179-1187.

[5] Floroian D. Notițe curs Sisteme cu microprocesoare

[6] http://en.wikipedia.org/

[7]***“Arduino”,2014.[Online]. Available: http://www.arduino.cc/en/Main/

ArduinoBoardNano.

[8]***“Sensor HC-SR04”. [Online]. Available: http://www.micropik.com/PDF /HCSR04.pdf

Similar Posts

  • Calculul Parametrilor Unei Statii de Distributie C

    === P === CAPITOLUL I STABILITATETA FUNCȚIONĂRII SISTEMULUI ENERGETIC Noțiuni generale Una din caracteristicile principale ale unui sistem energetic este funcționarea în paralel, interconectată a tuturor generatoarelor instalate în centralele electrice. Aceasta se datorează unor avantaje unor avantaje tehnico-economice importante ca: reparația economică a sarcinii pe centrale, reducerea puterii necesare pentru asigurarea rezervei, planificarea reparațiilor,…

  • Utilizarea Automatelor Programabile In Controlul Proceselor

    UTILIZAREAbAUTOMATELOR PROGRAMABILE ÎN CONTROLUL PROCESELOR CUPRINS PARTEA I –STADIUL ACTUAL AL CERCETĂRIILOR CAPITOLUL I: INTRODUCERE ÎN AUTOMATE PROGRAMABILE I.1. Istoria automatelor programabile I.2. Prezentare automate programabile (PLC) I.2.1. Definiția automatului programabil I.2.2. Structura unui automat programabil I.3. Unitatea centrală de procesare (CPU) I.3.1. Memoria I.3.2. Intrările automatului programabil I.3.3. Ieșirile automatului programabil I.3.4. Sursa de…

  • Mecanizarea Completa a Lucrarilor Agricole

    Cap.1.Introducere Pentru dezvoltarea si modernizarea fazei tehnico-materiale a agriculturii si datorita programului de sporire a productiei de furaje agricole vegeteale si animale s-au inteprins masuri drastice petru mecanizarea completa a tuturor lucrarilor agricole, atat a lucrarilor de camp, cat si din zootehnie. O conditie hotaratoare pentru dezvoltarea cresterii animalelor este asigurarea fazei furajere.In elaborarea proiectului…

  • Constructia Unui Robot Mobile cu Kit Arduino

    CONSTRUCȚIA UNUI ROBOT MOBIL CU KIT ARDUINO Capitolul 1: Introducere Introducere în Mectronică Fig. 1.1 Conceptul de mecatronică Termenul "mecatronică" a fost utilizat pentru prima dată în anul 1975 de către concernul japonez Yaskawa Electric Corporation , fiind o prescurtare a cuvintelor Mechanica-Electronica-Informatica. La început, mecatronica a fost ințeleasă ca o completare a componentelor mecanicii de precizie,…

  • Coduri Turbo

    Coduri Turbo Cuprins CAPITOLUL I. Aspecte generale privind canalul de transmisiune I.1. O perspectivă istorică asupra codării canalului I.2. Tipuri de zgomot ce apar pe canalul de transmisiune I.2.1. Gaussian I.2.2. Non-Gaussian (impulsiv) I.2.2.1. Zgomot Middleton Class-A I.3. Fading CAPITOLUL II. Coduri turbo II.1. Structura codurilor turbo II.2. Terminarea trellis-ului II.3. Interleaver-e. Parametri II.3.1. Interleaver-ul…

  • Interpolarea Functiilor

    Interpolarea funcțiilor CUPRINS Introducere Capitolul 1: Polinom de interpolare. Definiție. Eroarea de interpolare Capitolul 2: Polinomul Lagrange de interpolare 2.1 Prezentare teoretică 2.1.2 Algoritm pentru determinarea polinomului Lagrange 2.1.2 Exemple Capitolul 3: Polinomul Newton de interpolare 3.1 Polinomul de interpolare de speța întâi al lui Newton 3.1.1 Algoritm pentru determinarea polinomului Newton de speța întâi….