Șef lucr. dr. ing. Monica Roman Septembrie 2017 CRAIOVA ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [628342]
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
LUCRARE DE DISERTAȚIE
Mihai Vintilescu -Ciucă
COORDONATOR ȘTIINȚIFIC
Șef lucr. dr. ing. Monica Roman
Septembrie 2017
CRAIOVA
ii
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
Robot mobil șenilat capabil să oco lească obstacole, controlat cu A rduino
Mihai Vintilescu -Ciucă
COORDO NATOR ȘTIINȚIFIC
Șef lucr. dr. ing. Monica Roman
Septembrie 2017
CRAIOVA
iii
„Cheia succesului o reprezintă munca plină de dăruire și de pasiune .”
Joseph Murphy
iv
DECLARAȚIE DE ORIGINALITATE
Subsemnatul Vintilescu -Ciucă Mihai , student l a specializarea Tehnologii Informatice în Ingineria
Sistemelor din cadrul Facult ății de Automatică, Calculatoare și Electronică a Universit ății din
Craiova, certific prin prezenta că am luat la cunoșt ință de cele prezentate mai jos și că î mi asum, în
acest context, originalita tea lucrării mele de disertație :
cu titlul Robot mobil șenilat capabil să ocolească obstacole , controlat cu A rduino,
coordonată de Șef lucr. dr. ing. Monica Roman ,
prezentată în sesiunea septembrie 2017 .
La elaborarea lucrării de disertație , se consideră plagiat una dintre următoarele acțiuni:
reproducerea exactă a cuvintelor unui alt autor, dintr -o altă lucrare, în limba română sau prin
traducere dintr -o altă limbă, dacă se omit ghilimele și referința precisă,
redarea cu alte cuvi nte, reformularea prin cuvinte proprii sau rezumarea ideilor din alte
lucrări , dacă nu se indică sursa bibliografică,
prezentarea unor date experimentale obținute sau a unor aplicații realizate de alți autori fără
menționarea corectă a acestor surse,
însușirea totală sau parțială a unei lucrări în care regulile de mai sus sunt respectate, dar care
are alt autor.
Pentru evitarea acest or situații neplăcute se recomandă:
plasarea într e ghilimele a citatelor directe și indicarea referinței într -o listă core spunzătoare la
sfărșitul lucrării,
indicarea în text a reformulării unei idei, opinii sau teorii și corespunzător în lista de referințe
a sursei originale de la care s -a făcut preluarea,
precizarea sursei de la care s -au preluat date experimentale, descr ieri tehnice, figuri, imagini,
statistici, tabele et caetera ,
precizarea referințelor poate fi omisă dacă se folosesc informații sau teorii arhicunoscute, a
căror paternitate este unanim cunoscută și acceptată.
Data , Semnătura candidat: [anonimizat] ,
v
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automatică și Electronică
Aprobat la data de
…………………
Șef de departament,
Prof. dr. ing.
Emil PETRE
LUCRARE DE DISERTAȚIE
Numele și prenumele studen tului/ -ei:
Vintilescu -Ciucă Mihai
Enunțul temei:
Robot mobil șenilat capabil să oco lească obstacole, controlat
cu A rduino
Datele de pornire:
Cu ajutorul senzor ului cu ultrasunete , robotul mobil poate
evita obstacole
Conținutul proiectului :
INTRODUCERE
DESCRIEREA PROIECTULUI
NIVELUL HARDWARE
NIVELUL SOFTWARE
CONCLUZII
BIBLIOGRAFIE
REFERINȚE WEB
Material grafic obligatoriu:
Scheme bloc și electrice
Capturi de ecran
Imagini ale componentelor proiectului
Consultații:
Săptămânale
Conducăto rul științific
(titlul, nume și prenume, semnătura): Șef lucr. dr. ing. Monica Roman
Data eliberării temei :
01.12 .2016
Termenul estimat de predare a
proiectului :
12.09 .2017
Data predării proiectului de către
student și semnătura acestuia:
vi
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automat ică și Electronică
REFERATUL CONDUCĂTORULUI ȘTIINȚIFIC
Numele și prenumele candida tului/ -ei: Vintilescu -Ciucă Mihai
Specializarea: Tehnologii Inf ormatice în Ingineria Sistemelor
Titlul proiectului : Robot mobil șenilat capabil să oco lească obstacole, controlat
cu A rduino
Locația în care s -a realizat practica de
documentare (se bifează una sau mai
multe din opțiunile din dreapta): În facultate □
În producție □
În cercetare □
Altă locație: [se detaliază ]
În urma analizei lucrării candidatului au fost constatate următoarele:
Nivelul documentării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Tipul proiectului Cercetare
□ Proie ctare
□ Realizare
practică □ Altul
[se detaliază ]
Aparatul matematic utilizat Simplu
□ Mediu
□ Complex
□ Absent
□
Utilitate Contract de
cercetare □ Cercetare
internă □ Utilare
□ Altul
[se detaliază ]
Redactarea lucrării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Partea grafică, desene Insuficient ă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Realizarea
practică Contribuția autorului Insuficientă
□ Satisfăcătoare
□ Mare
□ Foarte mare
□
Complexitatea
temei Simplă
□ Medie
□ Mare
□ Complexă
□
Analiza cerințelor Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
vii
Arhitectura Simplă
□ Medie
□ Mare
□ Complexă
□
Întocmirea
specificațiilor
funcționale Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Implementare a Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Testarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Funcționarea Da
□ Parțială
□ Nu
□
Rezultate experimentale Experiment propriu
□ Preluare din bibliografie
□
Bibliografi e Cărți
Reviste
Articole
Referințe web
Comentarii
și
observații
În concluzie, se propune:
ADMITEREA PROIECTULUI
□ RESPINGEREA PROIECTULUI
□
Data, Semnătura conducătorului științific,
viii
REZUMATUL PROIECTULUI
Lucrarea de disertație cu titlul “ Robot mobil șenilat capabil să oco lească obstacole,
controlat cu A rduino “ reprezintă realizarea unei platform e experimentale având ca scop evitarea
obstacolelor , proiectul are la bază platforma Arduino Uno R3.
În cazul de față, s-a urmărit realizarea unui robot m obil de uz di dactic, realizat cu
microcontrol erul At mel ATmega328. Controlul automat al direcției și detectarea obstacolelor se
realizează cu a jutorul senzorului cu ultrasunete HC-SR04.
Termenii cheie : Arduin o, obstacole , automat , senzori , ultrasunete .
ix
MULȚUMIRI
În cadrul acestei secțiuni doresc să mulțumesc în primul rând conducerii facultății de
Automatică, Calculatoare și Electronică, prec um și domnilor profesori pentru înțelegerea și
înțelepciunea de care au dat dovadă.
Doresc să îmi exprim recunoștința față de doamna profesor Monica Roman pentru suportul și
sfaturile de îmbunătățire oferite pe parcursul elabo rarii acestui proiect.
x
CUPRINSUL
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. ……… 1
1.1 SCOPUL ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 1
1.2 MOTIVAȚIA ………………………….. ………………………….. ………………………….. ………………………….. …………… 1
1.3 INTRODUCERE ÎN SISTEM ELE AUTOMOTIVE ………………………….. ………………………….. ………………………….. ……. 1
1.3.1 Istoria automobilelor ………………………….. ………………………….. ………………………….. …………………… 1
1.3.2 Evoluția sistemelor auto ………………………….. ………………………….. ………………………….. ………………. 2
1.3.3 Senzorii de parcare ………………………….. ………………………….. ………………………….. ………………………. 3
1.3.4 Tendințe viitoare ………………………….. ………………………….. ………………………….. …………………………. 7
2 SISTEME Î NCORPORATE ………………………….. ………………………….. ………………………….. ……………………… 9
2.1 MICROCONTROLERE ………………………….. ………………………….. ………………………….. ………………………….. … 9
2.2 MEMORIE ………………………….. ………………………….. ………………………….. ………………………….. …………… 14
2.3 COMUNICARE ………………………….. ………………………….. ………………………….. ………………………….. ………. 17
2.4 SISTEMELE DE REGLARE ………………………….. ………………………….. ………………………….. ……………………….. 19
2.5 ACHIZIȚIA DATELOR ………………………….. ………………………….. ………………………….. ………………………….. .. 19
2.6 SENZORI UTILIZAȚI ÎN SISTEME ÎNCORPORATE ………………………….. ………………………….. ………………………….. . 20
3 NIVELUL HARDWARE ………………………….. ………………………….. ………………………….. ……………………….. 22
3.1 SCHEMA BLOC A ROBOTUL UI MOBIL MCV -2017 ………………………….. ………………………….. ………………………. 22
3.2 PLATFORMA ARDUINO ………………………….. ………………………….. ………………………….. ………………………… 22
3.2.1 Arduino Uno R3 ………………………….. ………………………….. ………………………….. …………………………. 24
3.2.2 Senzorul ultrasonic HC -SR04 ………………………….. ………………………….. ………………………….. ……….. 28
3.2.3 Driver motor L298P ………………………….. ………………………….. ………………………….. ……………………. 32
3.2.4 Placă extensie pini Arduino V5.1 ………………………….. ………………………….. ………………………….. ….. 37
3.2.5 Servomotor SG90 ………………………….. ………………………….. ………………………….. ………………………. 38
3.2.6 Motor DC ………………………….. ………………………….. ………………………….. ………………………….. ……… 40
3.2.7 Senzor infrarosu ………………………….. ………………………….. ………………………….. ………………………… 43
3.3 MECANICA ROBOTULUI ………………………….. ………………………….. ………………………….. ……………………….. 44
4 NIVELUL SOFTWARE ………………………….. ………………………….. ………………………….. ………………………… 49
4.1 MEDIUL DE PROGRAMARE ARDUINO ………………………….. ………………………….. ………………………….. ………… 49
4.2 SECVENȚE DE COD UTILI ZATE PENTRU FUNCȚION AREA ROBOTULUI MOBIL ………………………….. ………………………. 53
4.2.1 Obstacol frontal ………………………….. ………………………….. ………………………….. ………………………… 58
4.2.2 Obstacol frontal + lateral drea pta ………………………….. ………………………….. ………………………….. .. 59
xi
4.2.3 Obstacol frontal + lateral stanga ………………………….. ………………………….. ………………………….. …. 60
4.2.4 Obstacol frontal + lateral dreapta ………………………….. ………………………….. ………………………….. .. 61
5 CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. …………. 62
6 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. …….. 63
7 REFERINȚE WEB ………………………….. ………………………….. ………………………….. ………………………….. ….. 64
A. CODUL SURSĂ ………………………….. ………………………….. ………………………….. ………………………….. ………… 66
B. CD / DVD ………………………….. ………………………….. ………………………….. ………………………….. …………… 71
INDEX ………………………….. ………………………….. ………………………….. ………………………….. ………………………. 72
xii
LISTA FIGURILOR
FIGURA 1. FORD MODEL T ………………………….. ………………………….. ………………………….. ………………………….. …………. 2
FIGURA 2. SENZORI DE PARCARE ………………………….. ………………………….. ………………………….. ………………………….. ….. 3
FIGURA 3. SENZORI DE PARCARE – AFIȘAJ GRAFIC ………………………….. ………………………….. ………………………….. …………… 4
FIGURA 4. SISTEM PARK ASSIST – PARCARE LATERALĂ ………………………….. ………………………….. ………………………….. ……… 6
FIGURA 5. GOOGLE CAR – AUTOMOBIL AUTONOM ………………………….. ………………………….. ………………………….. …………. 7
FIGURA 6. MICROCONTROLER INTEL 4004 1971 ………………………….. ………………………….. ………………………….. ………… 10
FIGURA 7. MICROCONTROLER MICROCHIP PIC16 X84 ………………………….. ………………………….. ………………………….. …… 11
FIGURA 8. MICROCONTROLERE ATMEL 8 BIȚI ………………………….. ………………………….. ………………………….. …………….. 12
FIGURA 9. SCHEMĂ EAGLE ARDUINO UNO R3 ………………………….. ………………………….. ………………………….. …………… 13
FIGURA 10. SCHEMĂ BLOC ATMEGA 328 ………………………….. ………………………….. ………………………….. ………………….. 15
FIGURA 11. SERIAL MONITOR – ARDUINO ………………………….. ………………………….. ………………………….. ………………… 17
FIGURA 12. SCHEMA BLOC A ROBOTUL UI MOBIL MCV -2017 ………………………….. ………………………….. ………………………. 22
FIGURA 13. HARTA PINILOR ARDUINO UNO R3 ………………………….. ………………………….. ………………………….. …………… 26
FIGURA 14. ARDUINO UNO R3 – CONECTORUL USB SI JACK -UL PENTRU ALIMENTARE ………………………….. ………………………. 27
FIGURA 15. ARDUINO UNO R3 ………………………….. ………………………….. ………………………….. ………………………….. …. 28
FIGURA 16. SENZORUL ULTRASONIC HC-SR04 ………………………….. ………………………….. ………………………….. …………… 29
FIGURA 17. TEST PERFORMANȚĂ SENZ OR ULTRASONIC HC-SR04 ………………………….. ………………………….. ………………….. 29
FIGURA 18. ILUSTRARE FUNCȚIONARE SENZOR ULTRASONIC HC-SR04 ………………………….. ………………………….. …………….. 30
FIGURA 19. SCHEMĂ CONECTARE SENZ OR HC-SR04 LA PLACA ARDUI NO UNO ………………………….. ………………………….. …. 31
FIGURA 20. DIAGRAMA DE SINCRONI ZARE A SENZORULUI HC-SR04 ………………………….. ………………………….. ………………. 32
FIGURA 21. DRIVER MOTOR L298P ………………………….. ………………………….. ………………………….. ………………………… 33
FIGURA 22. PINI DRIVER L298P MULTIWATT 15 ………………………….. ………………………….. ………………………….. …………. 34
FIGURA 23. SCHEMĂ BLOC DRIVER L298P ………………………….. ………………………….. ………………………….. ………………… 35
FIGURA 24. CIRCUIT CONTROL MOTOR CU AJUTORUL L298P ………………………….. ………………………….. ……………………….. 36
FIGURA 25. A.TENSIUNI TIPICE DE SA TURAȚIE ;B.T IMPII DE COMUTARE ÎN CIRCUITE DE TEST ………………………….. ………………… 36
FIGURA 26. . SURSĂ CURENT DE ÎNTÂR ZIERE VS . INTRARE SAU ACTIVARE COMUTATOR ………………………….. ……………………….. 37
FIGURA 27. PLACĂ EXTENSIE PINI ARDUINO V5.1 ………………………….. ………………………….. ………………………….. ………… 38
FIGURA 28. DIAGRAMĂ SINCRONIZARE SERVO SG90 ………………………….. ………………………….. ………………………….. …….. 39
FIGURA 29. SERVOMOTOR SG90 ………………………….. ………………………….. ………………………….. ………………………….. . 40
FIGURA 30. CONECTAREA SERVOMOTOR ULUI SG90 LA ARDUINO ………………………….. ………………………….. ………………….. 40
FIGURA 31. MOTOR ………………………….. ………………………….. ………………………….. ………………………….. ……………… 41
FIGURA 32. SENZOR INFRAROȘU ………………………….. ………………………….. ………………………….. ………………………….. … 43
FIGURA 33. ROBOTUL MOBIL ÎN STAR E FINALĂ ………………………….. ………………………….. ………………………….. ……………. 45
xiii
FIGURA 34. ȘASIU ROBOT MOBIL – VEDERE DE JOS ………………………….. ………………………….. ………………………….. ……….. 46
FIGURA 35. ȘENILE ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 47
FIGURA 36. MEDIUL DE DEZVOLTARE ARDUINO ………………………….. ………………………….. ………………………….. …………… 50
FIGUR A 37. MEDIUL DE DEZVOLTARE ARDUINO EXEMPLE ………………………….. ………………………….. ………………………….. .. 51
FIGURA 38. SELECTAREA PLĂCUȚEI ARDUINO ………………………….. ………………………….. ………………………….. ……………… 52
FIGURA 39. OBSTACOL FRONTAL ………………………….. ………………………….. ………………………….. ………………………….. .. 58
FIGURA 40. OBSTACOL FRONTAL + LATERAL DREAPTA ………………………….. ………………………….. ………………………….. ……. 59
FIGURA 41. OBSTACOL FRONTAL + LATERAL STANGA ………………………….. ………………………….. ………………………….. …….. 60
FIGURA 42. OBSTACOL FRONTAL + LATERAL STANGA + LATERAL DREAPTA ………………………….. ………………………….. …………. 61
xiv
LISTA TABELELOR
TABELUL 1. CONFIGURAREA PINIL OR SPI PENTRU DIFERITE PLĂC I ARDUINO ………………………….. ………………………….. ……….. 19
TABELUL 2. CARACTERISTICI HARDWA RE ARDUINO UNO R3 ………………………….. ………………………….. ………………………… 24
TABELUL 3. CARACTERSTICI FIZICE ARDUINO UNO R3 ………………………….. ………………………….. ………………………….. …… 27
TABELUL 4. CARACTERISTICI FIZICE HC-SR04 ………………………….. ………………………….. ………………………….. ……………… 31
TABELUL 5. CARACTERISTICI TEHNIC E SENZOR HC-SR04 ………………………….. ………………………….. ………………………….. … 32
TABELUL 6. CARACTERISTICI TEHNIC E DRIVER L298P ………………………….. ………………………….. ………………………….. …….. 33
TABELUL 7. CARACTERISTCI TEHNICE PLACĂ EXTENSIE PINI ARDUINO V5.1 ………………………….. ………………………….. ………… 37
TABELUL 8. CONFIGURAȚIA PINILOR PENTRU SENZORUL DE O BSTACOLE ………………………….. ………………………….. ……………. 44
TABELUL 9. PARAMETRII MECANICI A I ROBOTULUI MOBIL ………………………….. ………………………….. ………………………….. .. 45
TABELUL 10. PARAMETRII TEHNICI AI ROBOTULUI MOBIL ………………………….. ………………………….. ………………………….. … 48
1 INTRODUCERE
1.1 Scopul
Realizarea acestui proie ct are ca scop acu mularea de experiență practică î n utilizarea mediului de
programare Arduino, a plă cii de dezvolt are Arduino Uno R3 și a senzorilor.
1.2 Motivația
Motivul alegerii acestei teme a fost interesul față de lucrările practice, în special față de roboți, fiind
un pri lej de a dezvolta cunoștințele acumulate în cei șase ani de studiu.
1.3 Introducere în sistemele automotive
1.3.1 Istoria automobilelor
Din cele mai vechi timpuri omul a manifes tat interes față de mijloace le de transport. A încercat
mereu sa găsească o modalitate de a se deplasa mai repede și de a transporta mai multă povar ă.
Prima metodă prin care s-a realizat acest lucru a fost prin îmblânzirea si folosirea animalelo r, dar tot
nu a fost suficient și după inventare a roții s-a mers mai departe către realizarea unor constru cții care
puteau fi trase de animale. Cu toate acestea , inovațiile secolului al XIX -lea au re voluționat
transporturile și le-au îndreptat către ceea ce av em noi în prezent și către ceea ce numim noi
astăzi automobile și modalități de trans port.
Automobilul este un vehicul cu patru (trei sau șase) roți propulsat de un motor cu ardere inter nă, cu
abur sau cu electrici tate întâalnite din ce în ce mai des în ultimii ani. Automobilele sunt construite
pentru a transporta oameni, un automobil are cel puțin două scaune, unul pentru cel care o conduce
și încă unul pentru un eventual pasager. Numărul de locuri în automobil a crescut odată cu
complexita tea acestuia și odată cu nev oia de a transporta mai mulți pasage ri.
Un auto mobil obișnuit are un motor cu combustie internă și patru roti (au existat și automobile cu trei
roți dar s-a sistat producer ea lor datorită probl emelor de stabilitate), însă în perioada actua lă au
apărut și vehicule hibride cu motoare ce funcționează cu electric itate, hidrog en, aer comprimat s au
diverse gaze, toate încercâ nd sa diminueze nivelul de poluare .
Prima for mă de auto mobil apare în 1876, odată cu c rearea automobilului cu motor cu aburi. Acest
automobil era un fel de cărucior propulsat pr in forța aburilor și avea ca scop t ranspo rtarea de
pasageri, dar conceptul s -a dovedit a fi ineficient. Ideea a fost preluată mai târziu de armată, pentru a
realiza o metodă de deplasare mai rapidă și mai eficientă a tunuri lor, dar și armata a renunțat
2
eventual la concept datorită rezulta telor slabe obținute, automobilul se deplasându -se foarte î ncet
(~4km/h) și avea o autonomie de cel mult 15 minute.
În anul 1908 H enry Ford a început să producă Modelul T cu ajutorul benz ii rulante de asamblare.
Această mașină a revol uționat industria automobilelor, era ieftin ă, multifun cțională și ușor de
întreținut. A fost impulsul de care avea nevoie industria automobilelor pentru a revoluț iona
transporturile așa cum își propuseseră cei ce au realizat primele modele de mașini.
Figura 1. Ford model T
1.3.2 Evoluția sistemelor auto
Intera cțiunea om-calculator (Human-Computer Inter action – HCI) este știința care se ocupă cu
proiectar ea, evaluar ea și implementarea sistemelor de calcul interactive destinate uzului uman și cu
studiul fenomenelor importante exist ente în acest context. Din perspectiva științei calcula toarelor,
accentul este pus pe interacțiune, mai precis se referă la interacțiunea uneia sau mai multor
persoa ne cu una sau mai multe mașini de calcul.
3
Un sistem de calcul este mai bun cu cât este mai ușor de înțeles și de folosit de toată lumea.
Inter fațarea unui astfel de sistem de calcul cu lumea reală este esențială pentru al face acc esibil
tuturor și nu doar celui care l-a proiectat și creat. Astfel de sisteme de calcul sunt î ntâlnite pe
automobilele construite în ultima perioadă.
Primele exemple de interfaț are ale sistemelor unei mașini cu omul au fost, de fapt afișare ȋntr-un fel
sau altul a vitezei cu care se deplasează acesta și turațiile la care ajunge motorul. Au fost primele
lucruri pe care le comunica automobilul către persoana care îl conducea. Acestea doua au devenit
mai târziu dotări standard ale mașinilor.
1.3.3 Senzorii de parcare
Senzorul de parcare, numit initial “Reverse Aid” a fost un dispozitiv electronic de orienta re pentru
nevăzători. Ambele dispozitive au fost inventate la sfârșitul anilor 1970 de către Tony Heyes, în timp
ce lucra la unitatea de cercetare de la Universitatea Nottingham din Marea Britanie. După ce a
patentat dispozitivul în 1983, Heyes la oferit c ompaniei Jaguar Cars din Coventry. În 1989 Bosch
începe să dezvolte senzorii cu ultrasunete pentru monitorizarea spațiului de parcare din fața și din
spatele autovehiculului.
Figura 2. Senzori de parcare
Senzorii de parcare sunt senzori de proximitate pentru vehiculele rutiere având funcția să avertizeze
șoferul asupra obstacolelor în timpul parcării . Aceste sisteme utilizează senzori electromagnetici sau
ultrasonici . De ani de zile, senzorii cu ultrasunete au fost utilizați într -o gamă largă de aplicaț ii,
sonare pentru pescuit, senzori de parcare și alarme antifurt.
Senzorii emit impulsuri acustice, o unitate de control măsoară intervalul de întoarcere al fiecărui
4
semnal reflectat și calculeaz ă distanța la care se află obstacolul . Sistemul avertizează șoferul cu
tonuri acustice, distanța la care se află obiectul indicând frecvența, cu tonuri mai rapide care indică
prezența unui obstacol în apropiere și un ton continuu care indică o distanță minimă prestabilită fa ță
de obstacol . Sistemele p ot include și ajutoare vizuale, cum ar fi afișaj cu led -uri sau display LCD
pentr u a indica distanța obiectului, unele sisteme afișează o pictogramă a vehiculului , cu o
reprezentare a obiectelor din apropiere ca blocuri colorate.
Senzorii spate p ot fi activați când treapta de mers înap oi este selectată și dezactivați imediat ce es te
selectată orice altă treaptă de viteză . Senzorii frontali pot fi activați manual și dezactivați automat
când autovehiculul atinge o viteză predeterminată – pentru a evi ta averti smentele ulterioare de pericol.
Deoarece sistemele cu ultrasunete se bazează pe reflectarea undelor sonore, sistemul nu poate detecta
obiecte plate sau obiect insuficient de mari pentru a reflecta sunetul – de exemplu, un stâlp îngust sau
un obiect longitudinal îndreptat direct spre vehicul sau în apropierea unui obiect .
Figura 3. Senzori de parcare – afișaj grafic
Parcarea automată este un sistem autono m de control al autovehiculului care deplasează un vehicul
dintr -o banda de circulație într -un loc de parcare pentru a realiza parcare paralelă. Sistemul automat
de parcare își propune să sporească confortul și siguranța cond ucerii în medii unde este nevoie de
multă atenție și experiență pentru a conduce mașina. Manevra de parcare este realizată prin
intermediul controlului coordonat al u nghiului și vitezei de direcție. Masina este un exemplu al unui
sistem în care numărul de comenzi de comandă disponibile este mai mic decât numărul de
coordonate care reprezintă poziția și o rientarea sa.
5
Unul dintre primele sisteme de asistență pentru parcarea mașinilor a fost manual. Acesta utiliza patru
cricuri cu roți pentru a ridica mașina și apoi se putea muta lateral în spațiul de parcare disponibil.
Acest sistem mecanic a fost propus în 1934, dar nu a fost niciodată ofe rit pe niciun model de serie.
Unul dintre primele prototipuri experimentale de parcare automată paralelă din lume a fost dezvoltat
pe o mașină electrică Ligier la mijlocul anilor 1990. Tehnologia de bază a fost adoptată de marii
producători de automobile care oferă astăzi o opțiune de parcare automată pe mașinile lor.
Algoritmul de parcare automată paralelă localizează un loc suficient de parcare de -a lungul drumului,
ajunge la o locație convenabilă de pornire a mașinii în fața locului de parcare și efectuează o manevră
paralelă de parcare.
În 1992, Volkswagen a propus o tehnologie de parcare automată utilizând sistemul de direcție cu
patru roți în conceptul său concept IRVW (Integrat ed Research Volkswagen) Futura, permi țându -i să
se deplaseze lateral pentru parcare paralelă. Cu toate acestea, nici o versiune comercială a acestei
tehnol ogii nu a fost vreodată oferită .
Ideea cheie a parcării automate este de a planifica și parametriza profilele de control de bază ale
unghi ului și vitezei de direcție, pentru a obține forma dorită a căii vehiculului în spațiul disponibil.
Manevra de parcare este realizată ca o succesiune de mișcări controlate utilizând datele senzorilor de
la servomotoarele mașinii și măsurătorile privind med iul înconjurător. Controalele de direcție și de
viteză sunt calculate în timp real și executate. Abordarea are ca rezultat diferite forme de trase
necesare pentru a efectua manevre de parcare. Acesta a fost extins la o parcare automată
perpendiculară pe un vehicul electric CyCab la începutul anilor 2000.
În 2004, un grup de studenți la Universitatea Linköping care lucrează cu Volvo a dezvoltat un proiect
purtând numele Evolve. Mașina Evolve poate efectua automat parcare paralelă utilizând senzori și un
calculator pentru a controla direcția, accelerația și frânarea.
Un sistem automat de parcare utilizează diverse metode pentru detectarea obiectelor din jurul
vehiculului. Senzorii instalați pe barele de protecție față și spate pot acționa atât ca transmițător , cât
și ca receptor. Acești senzori emită un semnal care se va reflecta înapoi atunci când întâmpină un
obstacol în apropierea vehiculului. Apoi, car puterul va folosi timpul pentru a determina poziția
obstacolului. Alte s isteme folosesc camere, de ex. t ehnologia Omniview sau radarele pentru a detecta
obstacolele și a măsura dimensiunea spațiului de parcare și distanț a de la marginea drumului.
Sistemul automat de parcare a fost dzvoltat pentru a îmbunătăți confortul și siguranța prin reducerea
nivelului de stres pe care îl simt oamenii atunci când sunt nevoiți să realizeze o parcare paralelă,
perpendiculară etc. .
6
În 2003, Toyota a introdus sistemul de parcare automata paralelă pe modelul hibrid Prius ca o
opțiune numită “Asistență inteligentă de parcare ”. În 2006, Lexus a adăugat un sistem de auto –
parcare la reproiectatul sedan Lexus LS .În 2009, Ford și -a prezentat Active Park Assist începând cu
modelele lor Linco ln, în 2010, BMW a introdus un sistem numit "asistent de parcare" pe noul model
serie 5 pentru parcare paralelă.
Figura 4. Sistem park assist – parcare laterală
Până în 2012, sistemele automate de parcare au fost dezvoltate de mai mulți producători de
automobile. Ford și Lincoln au oferit a sistență activă pentru Ford Foc us, Fusion, Escape, Explorer și
Flex, Lincoln MKS și MKT. Toyota și Lexus au avansat asistența de parcare pe modelele Toyota
Prius V Five, Lexus LS460 și LS460 L. BMW, toate celelalte, din clasa a șasea generație 3, au folosit
un sistem numit asistent de p arcare. Audi A6, Mercedes -Benz, de asemenea, au oferit parc tronic pe
clasa lor C, CLS, E, S, GL350, GL450 si clasa R la diferite preturi. Jeep a introdus un sistem de
parcare automată paralelă și perpendiculară, numit ParkSense, pe modelul său Cherokee 201 4.
Chrysler a introdus un nou model în 2015 , oferind ParkSense ca par te a unui pachet SafetyTec.
În 2015, Bosch a lansat un sistem de parcare complet automatizat. Acest sistem fără șofer permite
șoferului să iasă din mașină și să activeze o parcare autonom ă de pe un smartphone. Sistemul va
calcula o manevră de parcare și va monitoriza împrejurimi le.
7
1.3.4 Tendințe viitoare
Tehnologia este într -o dezvoltare continuă, acest lucru este valabil și pentru industria automotive. Așa
cum nici automobilele de până acum nu au dezamăgit niciodată la perioada lor de apar iție, nici
automobilele viitoru lui nu vor da greș pe această temă. Piața este foarte dornică de ceva nou și
extraordinar, iar inginerii din industr ia constructoare de mașini încear că toate posibilit ățile de a
realiza ceva care să satisfacă dorințele cumpărătorilor .
În viitor mașinile vor semăna tot mai mult cu dispo zitivele pe care le folosim în fiecare zi. Așa că
toate infor mațiile și opțiunile multimedia vor fi cont rolate prin intermediul telefonului, a come nzilor
vocale , făcând totul mai ușor de controlat .
Figura 5. Google Car – automobil autonom
În viitorul apropiat automobilele nu vor suferi schimbări radicale ale formei, domeniile pe care se
pune accent cu cercetarea ar fi: reducerea greut ății totale a automobilului ș i găsirea unui combustibil
alternativ ieftin cu un impact scazut asupra mediului înconjurător si. Totoda tă, sistemele de
sigura nță reprezin tă un domeniu pe care se insistă foarte mult cu cercetarea în ultima perioada, ceea
ce este nor mal având în vedere ritmul cu care creste vitezei de deplasare a automobilelor .
Automobilele viitorului vor permite conducătorului să stea relaxat în timp ce ele o să facă toata
treaba. Unitatea centrală cu care o sa fie dotată o astfel de mașină poate reacționa de sute de ori mai
rapid ca orice om în fața unor pericole iminente. Conducă torul um an va avea control dacă își dorește
asta dar poate selecta și modul în care mașina va conduce pentru el. În modul de „pilot automat”,
8
șoferul v -a putea comunica automobilului locul în care dorește să ajungă și aceasta își va calcula
traseul și va porni l a drum. În orice moment șoferul poate prelua comanda automobilului.
În viitorul apropiat se prevăd lucruri extraordinare pentru industria automotiv e.de la automobile care
funcțione ază pe combustibil non -poluant și ieftin, la automobile cu tot felul de sisteme intelgiente,
automobile autonome pentru sporirea siguranței pe drumurile publice.
9
2 SISTEME Î NCORPORATE
2.1 Microcontrolere
Un micro controler este un microcircuit care încorporează un CPU și o memorie. Este o structură
electronică destinată controlului unui proces sau, mai general, unei interacțiuni caracteristice cu
mediul exterior, fără să fie necesa ră intervenția omului .
Primul controler a fo st realizat în tehnologii pur analogice, folosind com ponente electronice discrete
sau componente electromecanice (de exemplu relee). Cele care fac apel la tehnica numerică modernă
au fost realizate inițial pe baza logicii cablate (cu circuite integrate num erice standard SSI și MSI ) și
a unei electronici analogice uneori complexe, motiv pentru care "străluceau" prin dimensiuni mari,
consum energetic pe măsură și, nu de puține ori, o fiabilitate care lăsa de dorit.
Prin apariția și utilizarea microprocesoare lor de uz general s-au redus costurile, dimensiunile și o
îmbunătățire a fiabilității. Există și la ora actuală o serie de astfel de controlere de calitate, realizate în
jurul unor microprocesoare de uz general cum ar fi Z80, Intel 8086/8088, 6809 Motorola , Atmel
ATmega328 etc.
Microcontrolerele sunt utilizate în produse și dispozitive controlate automat, cum ar fi sistemele de
control la motoarele auto , dispozitive medicale implantabile, telecomenzi, aparate de birou, aparate,
scule electrice, jucării și a lte sisteme integrate.
Unele microprocesoare pot folosi cuvinte de patru biți și funcți onează la frecvențe mici de 4 kHz,
pentru a avea un consum redus de energie. Acestea au în general capacitatea de a reține funcționalitat e
în timp pentru un eveniment, c um ar fi apăsarea unui buton.
Primul microcontrolel disponibil pe piața comercială a fost Intel 4004 în anul 1971. Acesta a fost
proiectat și construit ca un cip personalizat pentru compania BUSICOM Corp din
Japonia.Microprocesorul Intel 4004 a fost unul dintre cele 4 cipuri construite cip -set MCS -4 care a
inclus 4001 ROM,RAM 4002 și 4003 Shift Register.
10
Figura 6. Microcontroler Intel 4004 1971
În 1993 a fost introdusă memori e EEPROM. Primul microcontroler cu memorie EEPROM a fos t
Micro chip PIC16x84,avantajul memorie EEPROM constă in posibilitatea de ștergere electronică a
datelor rapid, fără să fie necesar un pachet scump cum este în cazul EPROM.Tehnologia EEPROM a
fost disponibilă înainte de acea stă dată dar era costisitoare și mai puțin durabil ă. În același an Atmel a
introdus primul microcontroler folosind memorie Flash . Alte companii au urmat rapid exempl ul, cu
ambele tipuri de memorie.
11
Figura 7. Microcontroler Microchip PIC16x84
În 2002, aproximativ 55% din totalul de CPU vândute în lume au fost microcontrolere pe 8 biți și
microprocesoare. Mai mult de două miliarde de microcontrolere pe 8 biți au fost vândute în 1997 și
peste patru miliarde de microcontrolere pe 8 biți au fost vândute în 2006. Piața microcontrolerelor a
crescut cu 36,5% în 2010 și 12% în 2011.
O casă normală într -o țară dezvoltată are în componență doar patru microprocesoare de uz general,
dar în jurul valorii de trei duzini de microcontrolere. Un automobil din clasa medie are mai mu lt de 30
de microcontrolere. Ele pot fi, de asemenea găsite în multe dispozitive electrice, cum ar fi mașini de
spălat, cuptoare cu microunde, telefoane și alte electronice și electrocasnice utilizate în viața zi de zi.
Un microcontroler poate fi conside rat un sistem de sine stătător, cu un procesor, memorie și periferice
și poate fi folo sit ca un sistem integrat. Majoritatea microcontrolere utilizate în prezent sunt
încorporate în alte mașini, cum ar fi automobile, telefoane, aparate și perife rice pentru s isteme de
calculatoare.
În timp ce unele sisteme integrat e sunt foarte sofisticate, multe au cerințe minime pent ru memorie ș i
dimensiune program, nu au sistem de operare și softwareul ușor de utilizat. Dispozitivele de intrare și
ieșire uzuale includ comut atoare, relee, solenoizi, LED -uri, display -uri LCD mici sau personalizate și
senzori pentru date, cum ar fi tempe ratură, umiditatea, nivelul de lumină etc. Sistemele integ rate de
obicei nu au tastatură,ecran,unități optice, imprimante .
12
Tipuri de microcontr olere:
Atmel AVR (8 biți),AVR 32 (32 biți), AT91SAM (32 biți);
Freescale ColdFire (32 biți),S08 (8 biți);
Freescale 68HC11 (8 biți);
Intel 8051;
Infineon XC800 ( 8 biți),XE166 (16 biți),XMC4000 (32 biți);
MIPS;
Parallax Propeller;
Rabbit 2000 ( 8 biți);
STMicroelectronics STM8,ST10,STM32;
Texas Instruments TI MSP430,C2000;
Toshiba TLCS -870.
Figura 8. Microcontrolere ATmel 8 biți
13
În figura de mai jos este prezentată schema în EAGLE pentru placa Arduino UNO R3.
Figura 9. Schemă EAGLE Arduino Uno R3
14
2.2 Memorie
Placa Arduino UNO R3 este dotată cu un microcontroler ATmega328, ce dispune de o memorie flash
cu o capacitate de 32 KB utilizată pentru stocarea programului dintre care 0.5KB sunt utilizați pentru
bootloader, 2KB de memorie SRAM și memoria EEPROM cu o capacitate de 1KB, care poate fi citită
și scrisă cu ajutorul librăriei EEPROM .
15
Figura 10. Schemă bloc ATmega328
Intrările și ieșirile plă cii Arduino UNO R3
Fiecare dintre cei 14 de pini digitali de pe Arduino UnoR3 poa te fi folosit ca intrare sau ieș ire folosind
următoarele funcții:
16
pinMode() – config urează pinul respectiv să se comporte ca ieșire sau ca intrare. Parametri i
acceptați de acestă funcție sunt: OUTPUT, INPUT_PULLUP, INPUT.
digitalWrite() – scrie o valoare HIGH sau LOW pe pinul digital .
digitalRead() – citește valoarea de pe pinul respectiv care poate fi LOW sau HIGH
Toți pinii lucrează la 5 volți ș i pot genera sau accepta pe intrare un curent de maxim 40 mA de
asemene a pe fiecare pin este câ te un rezistor pull -up de 20 -50 KΩ.
O parte dintre cei 14 pini au funcț ii specializate :
Comunicare serială Serial : 0(RX) si 1(TX). Aceș ti pini sunt folosiți pentru a recepționa
pe RX ș i a transmite pe TX date serial TTL. P inii 1 și 0 sunt conectați de pinii de pe circuitul
de conversie USB -to-TTL bazat pe microcontrolerul ATmega8U2.
Întreruperi Externe: 2 ș i 3, acești pini pot fi configurați pentru a genera o întrerupere pentru o
valoare de LOW, pentru un front crescăto r sau descrescător sau pentru o schimbare de
valoare.
PWM: pinii 3 , 5, 6, 9, 10 și 11 generează ieșire PWM pe 8 biți. Acest lucru se face folosind
funcția analogWrite().
SPI: 10(SS),11(MOSI),12(MISO),13(SCK) . Acești pini suport ă comun icare SPI folosin d
librăria SPI.
LED 13: În placă este integrat un led care este conectat la pinul digital 13. Când valoarea
pinului este HIGH ledul este aprins, iar cand valoarea pinului este LOW, ledul este stins.
TWI: A4 -SDA ș i A5-SCL Prin intermediul librăriei Wire supor tă comunicarea TWI.
Placa de dezvoltare Arduino Uno R3 are 6 intrări analogice de la A0 la A5 fiecare cu o rezoluție de 10
biți adică convertorul analog numeric este pe 10 biți. Predefinit i ntrările pot măsura valori de până î n
5 volți. Utilizând pinul ARE F si funcția analogReference() aceste valori se pot modifica.
Mai sunt de asemenea si alț i pini pe placă :
AREF: Cu ajutor funcție i analogReference() se generează valoarea de referință a tensiunii
pentru intră rile analogice.
17
Reset: Pentru resetarea microcon trolerului pinul RESET trebuie să fie in poziț ia LOW. Acest
pin este folosit pentru a conecta butonul de reset pe un shield deoar ece butonul reset de pe
placuța Arduino este mascat in cele mai multe cazuri.
2.3 Comunicare
Placa de dezvoltare Arduino Uno R3 are mai multe posibili tăți de comunica re cu un computer, cu o
altă placă Arduino sau cu un alt microcontroler. ATmega328 dispune de un port UART pentru
comunicare serială TTL, disponibil pe pinii digitali 0(RX)si 1(TX).Software -ul Arduino include un
serial monitor unde se pot monitoriza date primite de la microcontroler sau se pot trimite date către
acesta.
Figura 11. Serial Monitor – Arduino
Pentru a putea fi vizu alizată fizic transmisia de date, pe placa Arduino sunt montate leduri de stare
care își schimbă starea atunci când sunt t ransmise sau recepționate date, acest lucru nu funcționează
însă pentru pini i 0 si 1.
Libră ria SoftwareSerial face posibilă utilizarea oricărui pin de pe Arduino ca pin pentru comunicare
serială.
18
ATmega328 suportă de asemenea comunicare 12C(TWI) ș i SPI, iar software -ul Arduino include
librăria Wire pentru a simplifica comunicarea folosind protocolul 12C și librăria SPI pentru a
simplifica comunicarea folosind protocolul SPI.
SPI (Serial Peripheral Interface ) este un protocol sincron de date seriale utilizat de microcontrolere
pentru a comun ica cu unul sau mai multe dispoz itive p eriferice,rapid pe distante scurte. Poate fi
utilizat pentru comunicarea î ntre doua microcontrolere.
Cu o conexiune SPI există î ntotdeauna un dispozitiv “master” (de obicei un m icrocontroler) care
controlează dispozitivele periferice. Există trei linii comune tuturor dispozitivelor :
MISO (Master In Slave Out) – Linia Slave pentru trimiterea datelor la master.
MOSI (Master Out Slave In) – Linia de master pentru trimiterea de date la periferice.
SCK (Serial Clock) – Transmisiile de date sunt sincronizate d e către impulsurile de ceas ș i
sunt generate de master.
SS (Slave Select) – Pinul de pe fiecare dispozitiv prin ca re este utilizat pen tru a activa ș i
dezactiva dispozitivele specifice. Când valoare a SS este LOW acesta comunică cu masterul
iar câ nd valoarea este HIGH acesta ignoră masterul .
Placă Arduino
MOSI
MISO
SCK
SS(slave)
SS(master)
Uno
Duemilanove
11 sau ICSP -4
12 sau ICS P-1
13 sau ICSP -3
10
–
Mega1280
Mega2560
51 sau ICSP -4
50 sau ICSP -1
50 sau ICSP -1
53
–
Leonardo
ICSP -4
ICSP -1
ICSP -3
–
–
19
Due ICSP -4 ICSP -1 ICSP -3 – 4,10,52
Tabelul 1. Configurarea pinilor SPI pentru diferi te plăci Arduino
2.4 Sistemele de reglare
În practica industrială a reglă rii automate s -au impus legi le de reglare de tip PID (proporț ional –
integrator -derivator) sau elemente de tip PI D, care satisfac majoritatea cerințelor tehnice impuse
sistemelor de reglar e automată . Se pot fa ce urmatoarele preciză ri:
Componenta proporț ionala, (exprimat ă prin factorul de proportionalitate KR),
determină o comandă proporțională cu eroarea sistemului .
Componenta integrală , exprimată prin constanta de timp de integrare Ti , d etermină o
comandă proporțională cu integrala erorii sistemu lui.
Componenta derivativă, exprimată prin constanta de timp de derivare Td determină o
comandă proporțională cu derivata erorii sis temului .
În orice sistem de conducere automată, se deosebesc urm atoarel e patru elemente interconectate :
a. Obiectul condus (instalația automatizată)
b. Obiectul conducător (dispozitivul de conducere)
c. Sistemul de transmitere și aplicare a comenzilor (deciziilor)
d. Sistemul informatic (de culegere si transmitere a informațiilor privind obiectul condus).
Un sistem de reglare automată reprezintă un sistem de conducere automată în care scopul conducerii
este exprimat prin anularea diferenței dintre mărimea reglată și mărimea impusă , diferență care mai
este numită abatere sau eroarea sistemului.
2.5 Achiziția datelor
Procese de achiziție a datelor sunt caracterizate de mărimi fizice care sunt transformate în semnale
electrice utilizând traductoare. Prin prelucrarea semnalelor electrice rezultate, folosind metode
numerice și analogice , se pot obține informa țiile necesare monitorizării și reglării proceselor
20
verificate . Sistemul de achiziție a datelor realizează conversia analog -numerică și procesarea primară
a mărimilor din proces.
Semnalele numerice se obțin prin eșantio narea semnalelor analogice și convers ia numerică a valorilor
măsurate. C ircuitel e de eșantionare și conv ertoarele analog -numerice sunt componente de bază ale
sistemelor de achiziție a datelor.
Sistemul de prelucrare numerică poate filtra, identifica și cla sifica semnalele numerice, generând
astfel semnale numerice prelucrate care conțin informații despre procesele fizice, în reprezentări
adaptate aplicațiilor.
Aceste semnale numerice pot fi transformate în semnale analogice, folosind co nvertoare numeric –
analogice . Semnalele analogi ce rezultate pot fi utilizate pentru comanda el ementelor de execuție prin
care se realizează controlul procesului fizic. Printre elementele de execuție se pot număra componente
precum releele, servomotoarele sau afișajele.
2.6 Senzor i utilizați în sisteme încorporate
Senzorul este un dispozitiv electronic, optic, chimic sau acustic bazat pe un traductor capabil
să convertească o mărime neelectrică într -o mărime electrică cu scopul de a transmite date unui sistem
de calcul.
Prelucrarea datelor achiziționate cu ajutorul senzorilor din domeniul industriei automobilelor
presupune conversia acestora în mărimi electrice cu ajutorul traductoarelor. Traductoarele electrice
sunt componente de măsurare destinate conversiilor mărimilor electrice și neelectrice în mărimi
electrice. Un traductor electric este format dintr -un senzor și un adaptor electronic . Senzorul este
componenta care recepționează semnalele din mediul extern , iar adaptorul este un circuit electronic
prin care se convertește semna lul de la senzor. Conversiile se realizează, de regulă, cu eficiențe
reduse, iar mărimile de ieșire din senzori sunt mici, aceștia comportându -se ca surse de semnale slabe,
cu impedanțe de ieșire relativ mari, fiind incapabile să suporte sarcini semnificat ive precum cablurile
de transmitere a semnalelor.
Traductoarele trebuie să îndeplinească în aceste condiții rolul de convertoare din mărimi parametri ce
în mărimi de tip intensitate, cum ar fi comandarea senzitivă a tensiunilor sau a curenților.
21
Traductoar ele oferă suportul fizic pentru transferul semnalelor achiziționate de către senzori spre
celelelate componente electronice. În sistemele numerice, semnalele sunt transferate către restul
componente lor electronice sub forma unor date binare .
22
3 NIVELUL HARDWARE
3.1 Schema bloc a robotului mobil MCV -2017
În figura de mai jos este prezentată schema bloc a robotului mobil MCV -2017 .
Figura 12. Schema bloc a robotului mobil MCV -2017
3.2 Platforma Arduino
Arduino este o platf ormă open -source bazată pe un hardware și un software ușor de utilizat și
flexibil. Acestă platformă este dedicat ă inginerilor pentru utilizare în industrie,oamenilor pasionați
23
pentru a realiza mult mai ușor proiectele și oricui altcineva care vrea să realizeze un sistem care
interacționează cu mediul înconjurător.
Arduino interacționează cu mediul înconjurător citind valori de la o multitudine de senzori, poate
comunica cu acesta prin magistralele seriale sau îl poate modifica controlând lum ini, motoare sau alte
elemente electrice active.
Microco ntrolerul este programat utilizând limbajul de programare A rduino, care are la bază Wiring ș i
mediul de programare Arduino care este bazat pe Processing.
Wiring este o ar hitectură softwa re open -source pentru programarea microcontrolerelor. Acesta
permi te crearea de software pentru controlul dispozitive lor conectate la microcontrole re pentru a crea
tot felul de software inovative.
Această arhitectură software a fost creată cu gândul de a încuraja comunitatea de ingineri de la
începători la experți din întreaga lume de a împărt ăși idei , experiențe sau chiar de a lucra împreună
pe anumite proiecte. Există mii de studenți, designeri, oameni pasionați sau ingineri care folosesc
Wiring pe ntru a învăța, proiecta sau chiar realiza proiecte industriale.
Process ing este un mediu de programare și o comunitate online. Î ncă din anul 20 01, Processing a
promovat educația software ș i alfabetizarea in tehnolog ie. Processing a fost creat ini țial ca un software
pentru schiț e care avea ca scop să înveț e utilizatori fundamentele programării calculatoarelo r ȋntr -un
context vizual dar a evoluat ȋntr-un mediu de progr amare pentru profesioniști. La fel ca și Wiring,
Processing est e folosit de mii de studenți, cercetători, designe ri și ingineri.
Proiectele Arduino pot funcționa singure fără a fi conectat e cu un dispozitiv exterior s au pot comunica
cu un software ce rulează pe un calculator.
Placa Arduino poate fi realizată manual sau poate fi achiziț ionată asam blată iar softwa re-ul pentru
programare poate fi descărcat gratuit.Scheme le electrice ș i schema CAD realizată in mediul de
proiectare EAGLE sunt disponibile sub licență open -source și pot fi adaptate după cerinț ele
utilizatorului foarte ușor .
Comunitat ea Arduino este foarte vastă incluzând grupuri specifice pentru anumite tipuri de proiecte
sau anumite nivele: începători, profesioniști.Această comunitate of eră un suport excelent tuturor celor
care vor să înceapă un nou proiect. De asemenea exi stă și pe site -ul oficial o multitudine de informaț ii
despre Arduino dar și tutoriale care la început te pot ajuta să înțelegi cum se programează dar și cum
să conectezi un microcontroler Arduino ȋntr -un mediu pentru a reali za un proiect.
24
În ultima perioa dă de timp tot mai multe companii dezvoltă tool -uri care să co munice cât mai ușor cu
Arduino. Două exemple foarte bune sunt : platforma Android care are anumite librării ce facilitează
dezvoltarea unor clase pentru comunicarea cu Arduino și Matlab care are un tool ce permite
utilizatorului să creeze în aplicaț ii un GUI pentru a comunica direct cu Arduino.
Pe lângă gama de microcontrolere Arduino oferă și o mulțime de plăcuțe care pot fi montate pe
plăcuța microcontrolerului ș i care aduc îmbunătățiri acestora , ca exemplu posibilitatea conectării unui
card, comunicare a prin Bluetoo th sau conectarea unei cartele pentru a simula o conversație telefonică
sau pentr a avea acces la internet.
3.2.1 Arduino Uno R3
Arduino Uno R3 este o placă microcontroler care are la ba ză microcontrolerul ATmega358. Placa de
dezvoltare dispune de 14 ieșiri/intrări digitale dintre care 4 pot fi folosite ca ieșiri PWM, 6 intrări
analogice, un rezonato r ceramic de 16 MHz,un ICSP (In Circuit Serial Programming), un port USB,
un jack de a limenta re si un buton de reset. Placa de dezvoltare este dotată cu tot ce are nevoie pentru a
susține microcontrolerul, pentru a fi pusă în funcțiune trebuie conectată la un calculator cu ajutorul
portului USB sau la o sursa de tensiune.
Arduino Uno R3 este difer ită de toate modelele precedente care folosesc un chip driver FTDI USB -to-
serial pentru comunicație. În schimb, Uno este dotata cu Atmega16U2, programat ca un convertor
USB – to- serial.
Microcontroler ATmega328
Tensiunea de funcț ionare 5V
Tensiune de in trare-Recomandare 7-12V
Tensiune de intrare -Limite 6-20V
Pini digitali de intrare/ieșire 14 dintre care 4 oferă ieșire PWM
Curent pe pini i de intrare/ieșire 40 mA
Curent pe pinul de 3.3V 50 mA
Memorie Flash 32KB dintre care 0.5 sunt folosiț i de bootlo ader
Memorie SRAM 2 KB
Memorie EEPROM 4 KB
Viteză oscilator 16 MHz
Tabelul 2. Caracteristici hardware Arduino Uno R3
25
Alimentare
Arduino Uno poate fi alimentat ă cu o sursă externă sau prin intermediul portu lui USB. Alimentarea
externă se poate face de la un adaptor AC -DC sau de la o baterie. Adaptorul poate fi conectat prin
mufa de 2.1mm centru -pozitiv în fiș a de ali mentare a plăcii de dezvoltare. Bornele unei baterii pot fi
introduse în pinii VIN și GND.
Placa poate f uncționa î n limitele 6 -20 volți . Dacă este alimentat ă la mai puț in de 7 volți pinul de 5
volți va da mai puțin de 5 volți și placa va fi instabilă iar dacă este aliment ată la mai mult de 12 volți
regulatorul de tensiune se va încinge si va provoca pagube plă cii Se r ecomandă alimentarea plăcii cu
7-12 volț i.
Pinii de alimentar e sunt următorii:
VIN – alimentare cu tensiune a plăcii Arduino atunci când se folosește o altă alimentare
exterioară. Se poate face alimentarea plăcii prin acest pin sau da că se face alimentare a
folosind jack -ul de alimentare aceasta se poate accesa prin acest pin .
5V – acest pin scoate o tensiune regulată de 5 volți de la regulatorul de tensiune al plăcii.
3V3 – pe acest pin este generată o tensiune de 3.3 volți de către regulatorul intern al p lăcii iar
curentul maxim care poate fi tras fără a provoca pagube este de 50 mA.
GND – pin de masă
IOREF – acest pin de pe placa Ar duino oferă voltajul de referință la care lucrează
microcontrolerul. Acest pin este folosit de anumite drivere care c itesc v aloarea de pe acest pin
și selectează sursa de alimentare bună pentru acest microcontroler sau activează anumite
circuite pentru a re gla tensiunea la valoarea optimă .
În figura de mai jos este prezentată harta pinilor pentru placa Arduino UNO R3.
26
Figura 13. Harta pinilor Arduino Uno R3
27
În tabelul de mai jos sunt prezentate c aracterist icile fizice ale plăcii Arduino UNO R3 .
Parametrii
Specificaț ii
Lungime
68.6mm
Lățime
53.4mm
Masă
25g
Tabelul 3. Caracterstici fizice Arduino UNO R3
Arduino UNO R3 este proiec tată în așa fel încât să fie compatibil ă cu majoritatea shield -urilor
destinate pentru alte plăci Arduino. Comunicarea SPI este posibilă prin pinii ICSP pentru shield -uri
destinate pentru plăcile Diecimila sau Duemilanove.
Figura 14. Arduino Uno R3 – conectorul USB si jack -ul pentru alimentare
28
Figura 15. Arduino Uno R3
3.2.2 Senzorul ultrasonic HC -SR04
Senzorul cu ultrasunete HC -SR04 f uncționează pe principiul similar sonaru lui care evaluează distanța
până la o țintă, calculând timpul dintre plecarea de la senzor a undelor sonore și întoarcerea acestora
înapoi la senzor. Acest senzor măsoară distanța cu o ero are maximală de trei centime tri, de la 0 la 400
de centimetri .
Modulul are 4 pini:
Vcc: tensiunea de alimentare +5.0V;
Trig: cel care transmite semnalul;
Echo: cel care așteaptă semnalul;
GND: reprezintă masa.
29
Figura 16. Senzorul ultrasonic HC -SR04
Comun icarea senzorului cu un microcontroler este foarte simplă și se realizează prin cei pat ru pini,
doi pentru alimentare ș i ground și doi pentru trigger și echo. Acesta transmite o undă ultrasonică, prin
acțion area pinului de trigger și calculează timpul de întoarcere a acesteia după ce se reflectă de
obiectul până la care se dorește să se afle distanța.
Senzorul cu ul trasunete HC -SR04 are performanț a maxima la un unghi de 30 grade.
Figura 17. Test performanță senzor ultrasonic HC -SR04
30
Figura 18. Ilustrare funcționare senzor ultrasonic HC -SR04
Caracteristici ale senzorului HC -SR04 :
4 sloturi pentru pini;
2cm-400c m rază;
Acurat ețe de ±3 cm;
Unghi de măsurare de 30˚;
Operează la o frecve nță ultrasoni că de 40KHz ;
Tensiune de alimentare la 4.8 V(±0.2V);
Temperaturi de operare optimă 0˚C-60˚C(±1 0%);
Conexiuni separate pentru trigger si echo .
31
Figura 19. Schemă conectare senzor HC -SR04 la placa Arduino UNO
În tabelul de mai jos sunt pr ezentate caracteristicile fizice ale senzorului HC-SR04 :
Parametrii
Specific ații
Dimensiuni
45 X 20 X 15 mm
Dimensiuni inserții pini
2.54 mm
Interf ață
VCC, GND, SDA, SCL
Tabelul 4. Caracteristici fizice HC -SR04
Parametrii
Specific ații
VCC
4.8V‐5V(Max 5.5V)
Curent de operare
15mA
Temperatură
0˚C‐60˚C
32
Semnal de trigger
10uS TTL (5V±2%)
Semnal de echo
TTL (0V/5V, ±2%)
Tabelul 5. Caracteristici tehnice senzor HC -SR04
Diagrama de sincronizare a se nzorului HC -SR04 este prezentată mai jos . La început este trimis un
semnal de 10μs, apoi o serie de 8 impulsuri de 40 kHz. Receptorul așteaptă reflect area ultrasunetelor
emise, dacă răspunsul este între 150μs -25ms se detectează un obstacol. Distanța în centimetri se
obține împarțind timpul de ră spun la 58.
Figura 20. Diagrama de sincronizare a senzorului HC -SR04
3.2.3 Driver motor L298P
Pentru propulsia robotului MCV -2017 este utilizat un motor de curent continuu. Acesta este conectat
la placa Arduino prin intermediul driver -lui LN298P.
Modulul cu punte dublă H utilizează un driver ST L298P, un circuit integrat monolitic Multiwatt1 5.
Acesta este proiectat să lucreze cu tensiuni înalte și să accepte nivele logige standar TTL și să
conducă sarcini inductive cum ar fi: relee, solenoizi, DC și motoare pas cu pas cum este in cazul de
față.
33
Figura 21. Driver mo tor L298 P
Modulul dispune de două intrări pentru a activa și dezactiva dispozitivul independent de semnalele de
intrare. Emițătorii tranzistoarelor inferioare fiecărei punți sunt conectate împreună și terminalul extern
corespunzător poate fi utilizat pentr u detectarea conexiunii unui rezistor extern. Este prevăzut cu o
intrare suplimentară de alimentare, astfel logica lucrează la o tensiune mai mică .
Driver L298P
Tensiune de alimentare 7V
Tensiune de alimentare maxim ă 46V
Curent ieșire 2.5A
Putere total ă disipată 20W
Temperatură operare -25C~+130C
Dimensiuni 60mm x 54 mm
Tabelul 6. Caracteristici tehnice driver L298 P
34
În figura de mai jos sunt prezentați pinii driverului L298P Multiwatt15:
Figura 22. Pini driver L29 8P Multiwatt15
Funcțiile pinilor circuitului monolitic integrat Multiwatt15:
Sense A;Sense B : pinii 1 și 15 între acești pini și sol este conectată rezistența de sens pentru a
controla curentul de sarcină;
Out 1;Out 2: pinii 2 și 3 ieșiri le din puntea A;curentul care trece prin sarcină între cei doi pini
este monitorizat la pinul 1;
Vs: pinul 4 tensiune de alimentare pentru de ieșire de putere;Un condensator 100nF non –
inductiv trebuie să fie conectat între acest pin și masă;
Input 1;Input 2: pinii 5 și 7 intrări compatibile TTL ale ponții A;
Enable A; Enable B: pinii 6 și 11 compatibil TLL,activare intrare:starea L dezactivează
puntea A (să permită A) și/sau puntea B (activați B);
GND: pinul 8 masa;
VSS: pinul 9 tensiunea de alimentare pen tru blocuri logice,condensatorul A100nF trebuie să
fie conectat între acest pin și sol;
35
Input 3;Input 4: pinii 10 și 12 intrări compatibile TTL ale punții B;curentul care trece prin
sarcină între cei doi pini este monitorizat la pinul 15;
Out 3:Out 4: pini i 13 și 14 ieșirile din puntea B.
În figura de mai jos este reprezentată schema bloc pentru driverul L298P
Figura 23. Schemă bloc driver L298 P
L298P este capabil să manipuleze sarcini până la 4A cu o tensiune de 5 -46V. În circuit ul de mai jos
pinul 6 și pinul 11 sunt activați, îi putem conecta la pinii OCR pe microcontroler pentru a controa
motorul, apoi pinul 5 respectiv 7 sunt introdusi la M1 și M2 din puntea H și pinii 10 și 12 sunt
introduși la M3 și M4 .
36
Figura 24. Circuit control motor cu ajutorul L298 P
În figura 19A este reprezentat graficul pentru tensiunile tipice de saturație iar în figura 19B
Figura 25. A.Tensiuni tipice de saturație;B.Timpii de comutare în circuite de test
37
Figura 26. . Sursă curent de întârziere vs. intrare sau activare comutator
3.2.4 Placă extensie pini Arduino V5.1
Sensor Shield V4 este o placă ce facilitează conectarea la diferite plăci Arduino. Acesta se conectează
cu ușurință la diverse interfețe 12C /UART digitale sau analogice. Este compatibil cu module cum ar
fi:senzori, relee, butoane, potențiometre, servo motoare etc., acesta preia de la modul porturile VCC,
GND si de ieșire.
Parametrii Specificații
Tensiune de operare 5V
Tensiune de intrare recomandată 7-12V
Tensiune de intrare limite 6-20V
Porturi analogice 6 intrări cu VCC /GND
Porturi digitale 13 porturi pentru module digitale
Dimensiuni 68mm x 58mm x 2mm (lungime x lățime x înălțime)
Greutate 30g
Tabelul 7. Caracteristci tehnice placă extensie pini Arduino V 5.1
38
Figura 27. Placă extensie pini Arduino V 5.1
3.2.5 Servomotor SG90
SG90 este un servomotor de dimensiuni reduse,ușor dar cu o putere mare de ieșire. Acesta se poate
roti cu aproximativ 180 de grade , 90 în fiecare direcție. SG90 est e foarte ușor de utilizat datorită
dimensiunilor sale acesta poate fi implementat în orice proiect.
39
Figura 28. Diagramă sincronizare servo SG90
Specificații :
Tensiune alimentare: 4,8V;
Cuplu Stall: 1,8 kgf;
Viteza de operare: 0,1s/60 grade;
Temperatura de operare: 0 ° C-55 ° C;
Dimensiuni: 22.2mm x 11.8mm x 31mm;
Greutate: 9g.
40
Figura 29. Servo motor SG90
Comunicarea cu placa Arduino se face prin intermediul celor 3 pini(cabluri – roșu,maron și portocaliu) .
Figura 30. Conectarea servo motorului SG90 la Arduino
3.2.6 Motor DC
Pentru propulsia robotului MCV -2017 este utilizat un motor DC, acesta are o singura axă. DC e ste un
motor de tip pas cu pas ce funcționează la o tensiune de 3 -6V.
Motorul pas cu pas este un traductor electromecanic care realizează transformarea unei sevențe de
impulsuri electrice într -o mișcare m ecanică de rotație a axului său. Mișcarea motorului pas cu pas
constă în deplasări unghiulare discrete succesive de mărimi egale care reprezintă pașii motorului.
Numărul pașilor efectuați este egal cu numărul impulsurilor de comandă aplicate fazelor motorului.
41
Deplasare unghiulară totală, este constituită d intr-un număr de pași egal cu numărul de impulsuri de
comandă, determină poziția finală a motorului care este memorată până la aplicarea unui nou impuls
de comandă.
Figura 31. Motor
Pentru controlul motoarelor pas cu pas este u tilizată o unitate de control care furnizează semnalele de
control pentru a închide sau deschide elementele de comutație la intervale de timp prestabilite pentru a
învarti motorul. În cele mai multe cazuri unitatea de control este reprezentată de un calcul ator sau un
microcontroler, în cazul de față este utilizat un microcontroler ATmega328.
Conversia impuluri -deplasare, asociată cu memorarea pozițiilor face din motoarele pas cu pas un
excelent element de execuție. Motorul pas cu pas are totodată propietate a de a putea intra în
sincronizare față de impulsurile de comandă chiar din starea de repaus,acesta functionând fără
alunecare iar frânarea se efectuează fără ieșirea din sincronizare.
Viteza unui motor pas cu pas poate fi reglată la limite mari prin modif icarea freczenței impulsurilor de
intrare.
42
Avantajele motoarelor pas cu pas:
Gamă largă a frecvențelor de comandă;
Precizie de poziționare si rezoluție mare;
Permit porniri,opriri,reveniri fără pierderi de pași;
Mențin poziția când sunt oprite;
Sunt compa tibile cu comanda numerică;
Putem calcula numărul de rotații fără a mai avea nevoie de encodere;
Principalele dezavantaje sunt:
Unghi de pas de valoare fixă pentru un motor dat;
Viteza de rotație relativ scăzută;
Cuplul la arbore de valoare redusă,comparat iv cu alte tipuri de motoare electrice de același
gabarit;
Randamentul energetic scăzut;
Din punct de vedere al construcției circuitului magnetic la motoarele pas cu pas putem distinge:
Motoarele pas cu pas cu reductanță variabilă;
Motoarele pas cu pas cu magneți permanenți;
Motoarele pas cu pas bipolare;
Mărimi caracteristice ale motoarelor pas cu pas:
Unghiul de pas,este unghiul cu care se deplasează motorul la un impuls de comandă;
Frecvența maximă de start -stop în pas;este frecvența maximă a impulsurilo r de comandă la
care motorul poate porni,opri sau reveni fără pierderi de pași;
Cuplul limită de pornire: reprezintă cuplul maxim la arbore cu care motorul pas cu pas poate
porni la o freczență și un moment date,fără pierderi de pași;
43
Viteza unghiulară.
Specificații:
Tensiune de lucru: 3V,5V,6V;
Rotații pe minut: 125;
Curent: 80 -100mA;
Zgomot: 65dB;
Dimensiuni: 70mm x 22mm x 18mm;
Greutate: 50g.
Conectarea motoarelor la placa Arduino se face prin intermediul driverului L298P.
3.2.7 Senzor infrarosu
Robotul primes te comanda de start si stop cu ajutorul senzorului infrarosu.
Figura 32. Senzor infraroșu
Semnalele digitale de ieșire ale acestui senzor sunt de tip 0 logic sau 1 logic.
Semnalele generate de acest senzor corespund cu prezența s au absența obstacolelor aflate în raza sa de
acțiune. Senzorul genereaza semnale digitale în logică inversă, astfel dacă va detecta un obstacol va
genera pe pinul de ieșire o tensiune de 0V iar daca nu se va detecta un obstacol se va genera o
tensiune de 5 V.
Specificații tehnice:
Distanța de acțiune: 2cm – 30cm
44
Tensiunea de alimentare: 3,3V – 5V
Gaură cu diametru de 3mm pentru fixarea cu șurub
Dimensiune: 3,2 cm * 1,4 cm
Potențiometru pentru reglarea distanței de măsurare
Comparator LM393
Configurația pinil or:
Denumire pin Descriere
VCC 3,3V – 5V
GND Pinul de masă
OUT Pinul digital de ieșire, HIGH sau LOW
Tabelul 8. Configurația pinilor pentru senzorul de obstacole
3.3 Mecanica robotului
În prima parte a capitolului al doilea este prezentată mecanica robotului: dimensiunile robotului, ale
șenilelor, poze cu robotul mobil în stare finală. În figura de mai jos este prezentat robotul în stare
finală. În tabelele de mai jos sunt prezentați parametrii mecanici și tehnici.
45
Figura 33. Robotul mobil în stare finală
Lungime 150 mm
Lățime 170 mm
Înălțime cadru 150 m m
Înălțime de la sol 20 mm
Greutate 600 g
Tabelul 9. Parametrii mecanici ai robotului mobil
46
Figura 34. Șasiu robot mobil – vedere de jos
Șasiul robotului este realizat din metal, lățimea de 80 mm și lungimea de 100 mm. Șenilele au o
grosime de 10 mm și sunt realizate din plastic.
47
Figura 35. Șenile
Nume robot MCV -2017
Dimensiuni 150mm x 170mm x 150mm (lungime x lățime x
înălțime)
Alimentare 2 x baterie 3.7V – 18650
Microcontroler ATMega328
Tensiune de alimentare 7.2V
Roți 60mm x 10mm (diametru x grosime)
Senzori proximitate 1 x senzor ultrasonic HC -SR04
1 x senzor in frarosu
Comunicație PC cablu serial
Moduri de funcționare robotul funcționează autonom, prin compilarea,
execuția și încărcarea programului dorit in
procesorul robotului.
48
Limbaj de programare C
Mediul de programare Arduino
Tabelul 10. Parametrii tehnici ai robotului mobil
Robotul MCV -2017 este comandat cu aj utorul unei plăci de dezvoltare bazată pe un microcontroler
ATmega328 care face parte din familia de microcontrolere ATMEL AVR.
Acesta poate fi conectat la PC prin portul s erial, pentru programarea memoriei interne flash a
microcontrolerului.
49
4 NIVELUL SOFTWARE
4.1 Mediul de programare Arduino
Pentru programarea plăcii Arduin Uno R3 se utilizează mediul de programare Ardui no, acesta este
pus la dizpoziția utilizatori lor pe siteul producătorului și poate fi descărcat gratuit.
Mediul de programare Arduino este o aplicați e cross -platform scrisă în Java și este derivată de la IDE
pentru limbajul Processing. Acesta include un editor de cod cu caracteristici, cum ar f i sint axa, bretele
de potrivire și indentare automata și este, de asemenea, capabil de întocmirea și încărcarea de
programe pe placa de dezvoltare cu un singur clic. Un program sau cod scri s pentru Arduino poartă
denumirea de "schiță ".
Codul sursă pentru progra mele Arduino este scris în C sau C++. Arduino IDE vine cu o bibliotecă de
software numită "Cablarea", ceea ce face ca multe operații comune de intrare/ieșire să fie efectuate
mult mai ușor.
Structura limbajului de programare este destul de simplă și funcț ionează în doua părți:
setup ( ) : o funcție ce rulează o singură dată, la începutul unui program. Se poate folosi
pentru setările inițiale;
loop ( ) : o funcție apelată în mod repetat.
În figura de mai jos este prezentată interfața mediului de dezvoltare Arduino.
50
Figura 36. Mediul de dezvoltare Arduino
În exemplul de mai jos este prezentat codul sursă pentru un program dezvoltat pe o plăcuță
Arduino. Exemplul constă în aprinderea unui led.
Exemplu program Arduino:
Integrat pin 13 LED
# define LED_PIN 13
void setup ( ) {
pinMode ( LED_PIN, OUTPUT ) ; // Se activează pinul 13 pentru ieșire a digitală
}
void loop ( ) {
digitalWrite ( LED_PIN, HIGH ) ; // Pornește ledul
51
delay ( 1000) ; // Așteaptă o secundă ( 1,000 milisecunde )
digitalWr ite ( LED_PIN, LOW ) ; // Oprește LED
delay ( 1000) ; // Așteaptă o secundă
}
De asemenea mediul de programare Arduino dispune de o multitudine de exemple pentru a ajuta
utilizatori i.
Figura 37. Mediul de dezvoltare Arduino exemple
Prin intermediul mediului de programare Arduino avem posibilitatea de a reseta placa fără să fie
nevoie de o apăsare a butonului de reset îna inte de încărcarea unui program , Arduino UNO R3 este
proiectată în așa mod încât se poate reseta prin int ermediul calculatorului la care este conectată.
ATmega16U2 este conectat pe linia de resetare a ATmega328 printr -un condensator de 100 de
nanofarazi. Când această conexiune este pusa in LOW, linia de reset stă destul de mult in LOW
pentru a reseta cipu l.
52
Încărcarea de cod se poate face doar prin apăsarea butonului încărcare din mediul de programare
Arduino prin intermediul software.
Când placa Arduino UNO R3 este conectată la un computer care rulează un sistem de operare Mac
sau Linux acesta se res etează de fiecare data când o conexiune este realizată.
Arduino utilizează microcontrolere Atmel, pentru dezvoltarea software -lui se poate utiliza mediul de
dezvoltare Atmel, AVR Studio sau Atmel Studio. După conectarea la calculator trebuie verificat dac ă
am ales modelul corect pentru placa Arduino, în cazul de față Arduino Uno.
Figura 38. Selectarea plăcuței Arduino
53
4.2 Secvențe de cod utilizate pentru funcționarea robotului mobil
Comanda deplasare în față :
void advance() // fa ta
{
digitalWrite(pinLB, LOW);
digitalWrite(pinRB, LOW);
analogWrite(pinLF,255);
analogWrite(pinRF,255);
}
Comanda rotire dreapta:
void right() // dreapta
{
digitalWrite(pinLB,HIGH);
digitalWrite(pinRB,LOW);
analogWrite(pinLF, 255);
analogWrite(pinRF,255);
}
Secvență cod detectare obstacol:
void detection()
{
int delay_time = 250;
ask_pin_F();
54
//merge in fata cand nu sunt obstacole la minim 10 cm
if(Fspeedd < 10)
{
stopp();
delay(100);
back();
delay(200);
}
Secvență cod luare decizie viraj la detectare obstacol
if(Fspeedd < 25) // if distance ahead is <25cm
{
stopp();
delay(100); // clear data
ask_pin_L(); // read distance on the left
delay(delay_time); // stabilizing time for servo motor
ask_pin_R(); // read distance on the right
delay(delay_time); // stabilizing time for servo motor
if(Lspeedd > Rspeedd) // if distance on the left is >distance on the right
{
directionn = Lgo; // move to the L
}
55
if(Lspeedd <= Rspeedd) // if distance on the left is <= distance on the right
{
directionn = Rgo; // move to the right
}
if (Lspeedd < 10 && Rspeedd < 10) // if distance on left and right are both <10cm
{
direc tionn = Bgo; // move backward
}
}
else // if distance ahead is >25cm
{
directionn = Fgo; // move forward
} }
Secvență cod măsurare distanță cu ajutorul senz ororului ultrasonic HC -SR04
void ask_pin_F() //masoara distanta cu ajutorul senzorului cu ultrasunete [in fata]
{
myservo.write(90);
digitalWrite(outputPin, LOW);
delayMicroseconds(2);
digitalWrite(outputPin, HIGH);
delayMicroseconds(10);
digitalWrite(outputPin, LOW);
56
float Fdistance = pulseIn(inputPin, HIGH);
Fdistance= Fdistance/5.8/10;
Fspeedd = Fdistance;
}
Comanda deciziilor de viraj în urma măsurării poziției și a dis tanței până la obstacol
myservo.write(90); // home set the servo motor, ready for next measurement
detection(); // measure the angle and determine which direction to move
if(directionn == 2) // if directionn= 2
{
back() ;
delay(800); // go backward
left() ;
delay(200); // Move slightly to the left (to prevent stuck in dead end)
}
if(directionn == 6) // if directionn = 6
{
back();
delay(100);
right();
delay(600); // turn right
}
if(directionn == 4) // if directionn = 4
57
{
back();
delay(600);
left();
delay(600); // turn left
}
if(directionn == 8) // if directionn = 8
{
advance(); // move forward
delay(100);
}
}
58
4.2.1 Obstacol frontal
La întâlnirea unui obstacol din față, robotul scanează distanța până la obstacolele din stânga și din
dreapta, apoi ia decizia s ă vireze către direcția fără obstacole.
Figura 39. Obstacol frontal
59
4.2.2 Obstacol frontal + lateral dreapta
La întalnirea unui obstacol din față, robotul scanează distanța până la obstacolele din stânga și din
dreapta, apoi la detec tarea obstac olului din dreapta ia decizia să vireze stâ nga.
Figura 40. Obstacol frontal + lateral dreapta
60
4.2.3 Obstacol frontal + lateral stanga
La întalnirea unui obstacol din față, robotul scanează distanța până la obstacolele din stânga și din
dreapta, apoi la detectarea obstacolului din stânga ia decizia să vireze dreapta.
Figura 41. Obstacol frontal + lateral stanga
61
4.2.4 Obstacol frontal + lateral dreapta
La întalnirea unui obstacol din față, robotul scane ază distanța până la obstacolele din stânga și din
dreapta, apoi la detec tarea obstacolului din dreapta și din stâ nga ia decizia să vireze la 180 de grade.
Figura 42. Obstacol frontal + lateral stanga + lateral dreapta
62
5 CONCLUZ II
În cadrul lucrării de față s -a realizat prezentarea robotului mobil MCV -2017 și funcționarea
acestuia . Robotul este echipat cu dou ă motoare de current continuu , placă de comandă dotată cu un
microcont roler ATmega 328, un driver L298P pentru controlul mo torului , un servo motor SG90,
senzor ultrasonic HC-SR04 și senzor infrarosu.
Pentru comunicația cu un computer se utilizează interfața serială. Programarea funcțiilor de
comandă și comuni cație la nivelul microcontroleru lui au fost realizate folosind mediul de programare
Arduino.
Robotul MCV -2017 creat pentru partea practică a prezentării lucrării de diserta ție este un
robot robust și flexibil.
Robotul mobil atinge scopul de la care s -a plecat în crearea lui, de a realiza evitarea
obstacolelor fără intervenț ia umană, cu ajutorul senzorului ultrasonic HC-SR04.
63
6 BIBLIOGRAFIE
[BAR08] – S. Barrett, D. Pack, “Atmel AVR Microcontroller Primer: Programming and
interfacing”, Morgan&Claypool, 2008
[CDM14] – Dorian Cojocaru, Florin Mant a, Curs de inteligență artificială, Craiova, 2014
[CTM07] – Constantin Marin, Dan Popescu, Teoria sistemelor și reglare automată, Editura
Sintech, Craiova, 2007
[DOOM05] – Dicționarul ortografic, ortoepic și morfologic al limbii române , Editura
Univers Enc iclopedic, București, 2005
[EBO16] – Eugen Bobașu, Curs Sisteme de acționare, 2016, Craiova
[ICP02] – Cosmin Ionete, Emil Petre, Bazele programării în C , Editura Universitaria,
Craiova, 2002
[KAR14] – Tero Karvinen, Kimmo Karvinen, Ville Valtokari, Make: Sensors. Projects and
Experiments to Measure the World with Arduino and Raspberry Pi, Editura Maker Media,
Inc, 2014
[COD13 ] – Dorain Cojocaru, curs Arhitectura calculatoarelor , Craiova, 2013
[TIT15 ] – Traian -Titi Ș erban, curs – Electronica și Interfețe p entru Sisteme Încorporate ,
Craiova, 2015
[LIV07] – Livinti P.: Sisteme de conducere in robotica. Editura Alma Mater Bacau, 2007
64
7 REFERINȚE WEB
[ABU17 ] – https://www.ardui no.cc/en/Main/ArduinoBoardUno
[AUR17 ] – https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3 -schematic.pdf
[SRV17 ] – http://datasheet.sparkgo.com.br/SG90Servo.pdf
[IRR17 ] – http://www.produktinfo.conrad.com/datenblaetter/175000 -19999 9/184288 -da-01-
en-IR_RECEIVER_2_7_5_5V_OS_1838B.pdf
[HCS17 ] – http://www.micropik.com/PDF/HCSR04.pdf
[MIC17 ] – https://en.wikipedia.org/wik i/Microcontroller
[ARS17 ] – https://en.wikipedia.org/wiki/Arduino#Software
[HPM17 ] – https://www.arduino.cc/en/Hacking/PinMapping 168
[TIM17 ] – http://www.circuitdb.com/wp -content/uploads/2014/09/hr -sr04-timing.jpg
[AUS17 ] – http://brittonkerin.com/annotateduino/arduino -uno-schematic.png
[ATM17 ] – http://www.mouser.com/images/microsites/atmega328block.jpg
[WKM17] – https://en.wikipedia.org/wiki/Mobile_robot
[PSE17] – https://en.wikipedia.org/wiki/Parking_sensor
[ROB17] – https://www.diploma.ro/licente/robot -cu-motoare -pas-cu-pas-3905
[PAS17] – https://en.wikipedia.org/wiki/Intelligent_Parking_Assist_System
[HPT17] – https://www.confused.com/on -the-road/gadgets -tech/parking -technology -brief –
history
[USV17] – http://www.newelectronics.co.uk/electronics -technology/an -introduction -to-
ultrasonic -sensors -for-vehicle -parking/24966/
[IRA17] –
http://www.automation.ucv.ro/Romana/cursuri/saB32/Lectii%20curs%20IRA%20%20SA%2
0rezumat%201.pdf
[SEN17] – https://ro.wikipedia.org/wiki/Senzor
[STC17 ] – http://aei.geniu.ro/downloads/st/STcurs1.pdf
65
[MIC17] – http://elth.ucv.ro/student1/Cursuri/Bratu%20Cristian/MAP/001%20 –
%20Curs%20001%20 -%20MAP%20 -%20Microcontrolerul.pdf
66
A. CODUL SURSĂ
#include <Servo.h>
// declarare pini motoare:
int pinLB = 12; // define pin 12
int pinLF = 3; // define pin 3
int pinR B = 13; // define pin 13
int pinRF = 11; // define pin 11
// declarare pini senzor ultrasunete
int inputPin = 4; // define pin for sensor echo
int outputPin =5; // define pin for sensor trig
// variabile PWM viteza motoare
int Fspeedd = 0; // forward speed
int Rspeedd = 0; // right speed
int Lspeedd = 0; // left speed
int directionn = 0; // forward=8 backward=2 left=4 right=6
// declarare servo
Servo myservo; // set myservo
int delay_time = 250; // settling time afte r steering servo motor moving B
int Fgo = 8; // Move F
int Rgo = 6; // move to the R
int Lgo = 4; // move to the L
int Bgo = 2; // move B
int count = 0;
int j;
// declarare senzor IR on -off
int obstacol = A0;
void setup()
{
Serial.begin(9600); // Define motor output pin
pinMode(obstacol, INPUT);
pinMode(pinLB,OUTPUT); // pin 12
pinMode(pinLF,OUTPUT); // pin 3 (PWM)
pinMode(pinRB,OUTPUT); // pin 13
pinMode(pinRF,OUTPUT); // pin 11 (PWM)
pinMode(inputPin, INPUT); // define input pin for sensor
pinMode(outputPin, OUTPUT); // define output pin for sensor
67
myservo.attach(9); // Define servo motor output pin to D9 (PWM)
}
void advance() // fata
{
digitalWrite(pinLB, LOW); // right wheel moves for ward
digitalWrite(pinRB, LOW); // left wheel moves forward
analogWrite(pinLF,210);
analogWrite(pinRF,170);
}
void stopp() // stop
{
digitalWrite(pinLB,HIGH);
digitalWrite(pinRB,HIGH);
analogWrite(pinLF,0);
analogWrite(pinRF,0);
}
void right() // dreapta
{
digitalWrite(pinLB,HIGH); // wheel on the left moves forward
digitalWrite(pinRB,LOW); // wheel on the right moves backward
analogWrite(pinLF, 255);
analogWrite(pinRF,255);
}
void left() // stanga
{
digitalWrite(pinLB,LOW); // wheel on the left moves backward
digitalWrite(pinRB,HIGH); // wheel on the right moves forward
analogWrite(pinLF, 255);
analogWrite(pinRF, 255);
}
void back() // spate
{
digitalWrite(pinLB,HIGH); // motor moves to left rear
digitalWrite(pinRB,HIGH); // motor moves to right rear
analogWrite(pinLF,200);
analogWrite(pinRF,200);
}
void detection() // measure 3 angles (0.90.179)
{
int delay_time = 250; // stabilizing time for servo motor after moving backward
ask_pin_F(); // read the distance ahead
68
//merge in fata cand nu sunt obstacole la minim 10 cm
if(Fspeedd < 10) // if distanc e ahead is <10cm
{
stopp(); // clear data
delay(100);
back(); // move backward for 0.2S
delay(200);
}
//intalneste obstacol la 10 cm si masaora 25cm stanga – dreapta
if(Fspeedd < 25) // if distance ahead is <25cm
{
stopp();
delay(100); // clear data
ask_pin_L(); // read distance on the left
delay(delay_time); // stabilizing time for servo motor
ask_pin_R( ); // read distance on the right
delay(delay_time); // stabilizing time for servo motor
if(Lspeedd > Rspeedd) // if distance on the left is >distance on the right
{
directionn = Lgo; // move to the L
}
if(Lspeedd <= Rspeedd) // if distance on the left is <= distance on the right
{
directionn = Rgo; // move to the right
}
if (Lspeedd < 10 && Rspeedd < 10) // if distance on left and right are both <10cm
{
directionn = Bgo; // move backward
}
}
else // if distance ahead is >25cm
{
directionn = Fgo; // move forward
}
}
void ask_pin_F() //masoara distanta cu ajutorul senzorului cu ultrasunete [in fata]
{
myservo.write(90);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit low level signal 2μs
69
delayMicroseconds(2);
digitalWrite(o utputPin, HIGH); // ultrasonic sensor transmit high level signal10μs, at least
10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // keep transmitting low level signal
float Fdistance = pulseIn(inputPin, HIGH); // read the time i n between
Fdistance= Fdistance/5.8/10; // convert time into distance (unit: cm)
Fspeedd = Fdistance; // read the distance into Fspeedd
}
void ask_pin_L() ////masoara distanta cu ajutorul senzorului cu ultrasunete [in sta nga]
{
myservo.write(8);
delay(delay_time);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit low level signal 2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // ultrasonic sensor transmit high level signal 10μs, at least
10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // keep transmitting low level signal
float Ldistance = pulseIn(inputPin, HIGH); // read the time in between
Ldistance= Ldistance/5.8/10; // convert time into distance (unit: cm)
Lspeedd = Ldistance; // read the distance into Lspeedd
}
void ask_pin_R() // masoara distanta cu ajutorul senzorului cu ultrasunete [in dreapta]
{
myservo.write(178);
delay(delay_time);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit low level signal 2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // ultrasonic sensor transmit high level signal10μs, at least
10μs
delayMicroseconds(10);
digitalWr ite(outputPin, LOW); // keep transmitting low level signal
float Rdistance = pulseIn(inputPin, HIGH); // read the time in between
Rdistance= Rdistance/5.8/10; // convert time into distance (unit: cm)
Rspeedd = Rdistance; // read the distance into Rspeedd
}
void loop() {
if (digitalRead(obstacol) == LOW)
{
count = count + 1;
delay(100);
}
70
j = count % 2;
if(j == 1){
delay(50);
myservo.write(90); // home se t the servo motor, ready for next measurement
detection(); // measure the angle and determine which direction to move
if(directionn == 2) // if directionn= 2
{
back();
delay(800); // go backward
}
if(directionn == 6) // if directionn = 6
{
back();
delay(100);
right();
delay(350); // turn LEFT
}
if(directionn == 4) // if directionn = 4
{
back();
delay(600);
left();
delay(400); // turn RIGHT
}
if(directionn == 8) // if directionn = 8
{
advance(); // move forward
delay(100);
}
}
if(j == 0){
digitalWrite(pinLB,LOW) ; // right wheel moves forward
digitalWrite(pinRB, LOW); // left wheel moves forward
analogWrite(pinLF,0);
analogWrite(pinRF,0);
delay(200);
}
//delay(100);
}
71
B. CD / DVD
72
INDEX
B
Bibliogra fie ………………………….. ……………………… 60
C
CUPRINSUL ………………………….. ……………………….. x L
LISTA FIGURILOR ………………………….. ……………… xii
LISTA TABELELOR ………………………….. …………….. xiv
R
Referințe web ………………………….. …………………. 61
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Șef lucr. dr. ing. Monica Roman Septembrie 2017 CRAIOVA ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [628342] (ID: 628342)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
