Automatică și Informatică Aplicată [615172]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

1 Cuprins

Lista figurilor, tabelelor și listelor ………………………….. ………………………….. ………………………….. ……. 2
Lista notați ilor și abrevierilor ………………………….. ………………………….. ………………………….. …………… 4
Capitolul 1. Introducere ………………………….. ………………………….. ………………………….. ……………….. 5
1.1. Contextul lucrării ………………………….. ………………………….. ………………………….. ……………… 5
1.2. Scopul și obiectivele cercetării ………………………….. ………………………….. ……………………….. 6
1.3. Structura lucrării ………………………….. ………………………….. ………………………….. ………………. 6
Capitolul 2. Arhitectura și descrierea componentelor robotului autonom ………………………….. .. 8
2.1. Prezentarea pistei și a componentelor folosite ………………………….. ………………………….. …… 8
2.2. Schema bloc și mecanica robotului ………………………….. ………………………….. ………………… 13
2.3. Placa de dez voltare Arduino și mediul de programare ………………………….. ………………….. 14
2.4. Motoarele de curent continuu cu reductor ………………………….. ………………………….. ………. 18
2.5. Controlul motoarelor prin inter mediului modulului cu driver ………………………….. ………… 25
2.6. Detecția liniei negre cu modulul senzor infraroșu ………………………….. ………………………… 31
2.7. Detecția obstacolelor cu senzorul ultrasonic ………………………….. ………………………….. ……. 37
Capitolul 3. Controlul robotului cu ajutorul regulatorului PID ………………………….. …………….. 40
3.1. Prezentarea generală a regulatoarelor ………………………….. ………………………….. …………….. 40
3.2. Regulatorul PID ………………………….. ………………………….. ………………………….. ……………… 42
3.3. Adaptarea regulatorului PID pentru robotul autonom urmăritor de linie ……………………… 48
Capitolul 4. Implementarea software a funcțiilor robotului ………………………….. …………………… 53
4.1. Structura unui program în mediul Arduino IDE ………………………….. ………………………….. . 53
4.2. Implementarea software a citirii valorilor senzorilor infraroșu ………………………….. ………. 56
4.3. Implementarea software a regulatorului PID ………………………….. ………………………….. …… 57
4.4. Implementarea software a controlului motoarelor ………………………….. ………………………… 58
4.5. Implementarea software a detecției obstacolelor ………………………….. ………………………….. 59
Capitolul 5. Concluzii ………………………….. ………………………….. ………………………….. …………………. 60
5.1. Contribuții personale ………………………….. ………………………….. ………………………….. ……….. 61
5.2. Posibilitatea de îmbunătățire, schimbare a sistemului și dezvolt ării viitoare ………………… 61
Capitolul 6. Bibliografie ………………………….. ………………………….. ………………………….. ……………… 62
Capitolul 7. Rezumat ………………………….. ………………………….. ………………………….. ………………….. 63
Capitolul 8. Anexe ………………………….. ………………………….. ………………………….. ………………………. 65
Capitolul 9. Declara ția de originalitate ………………………….. ………………………….. …………………….. 69

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

2 Lista figurilor, tabelelor și listelor

Fig. 1.1. Structura de ansamblu a unei auto matizări 5
Fig. 2.1.1. Pista pe care va rula robotul 8
Fig. 2.1.2. Șasiu Plexiglas (L x l x h : 21cm x 15cm x 0,3cm) 9
Fig. 2.1.3. Placa de dezvoltare Arduino UNO R3 9
Fig. 2.1.4. Motor de curent continuu cu reductor și roată atașată 10
Fig. 2.1.5. S uport cu roată mobilă 10
Fig. 2.1.6. Modul cu driver L298N 10
Fig. 2.1.7. Modul senzor infraroșu 11
Fig. 2.1.8. Senzor ultrasonic (HC -SR04) 11
Fig. 2.1.9. Mini -Breadboard 12
Fig. 2.1.10. Baterie 9V și conector cu mufă DC 12
Fig. 2.1.11. Robotul în va rianta finală 12
Fig. 2.2.1. Schema bloc a robotului 13
Fig. 2.3.1. Arhitectura Arduino UNO R3 16
Fig. 2.3.2. Legăturile pinilor microcontroller -ului ATmega328 la pinii plăcii de dezvoltare 18
Fig. 2.4.1. Motorul de curent continuu cu reductor folosit în structura robotului 18
Fig. 2.4.2. Secțiunea transversală a motorului de curent continuu cu perii 21
Fig. 2.4.3. Magnetul rotativ central rotindu -se până la atracția polilor opuși 22
Fig. 2.4.4. Magnetul central se va opune rotirii următoare 23
Fig. 2.4.5. Inversarea polilor magnetului central și rotirea lui până la atracția polilor opuși 23
Fig. 2.4.6. Revenirea în poziția inițială descrisă de imaginea 2.4.4 23
Fig. 2.4.7. Reprezentarea unui electromagnet ca o bară de fier și înfășurarea de sârmă 23
Fig. 2.4.8. Aplicarea curentului într -o direcție care va produce magnetism 24
Fig. 2.4.9. Schimbarea polarității electromagnetului în timpul rotirii, cu un comutator 24
Fig. 2.4.10. Electromagnetul rotativ în interiorul unei găuri din magnetul perma nent 24
Fig. 2.5.1. Notarea pinilor, conectorilor și terminalelor modulului cu driver L298N 25
Fig. 2.5.2. Schema tipică a punții H 26
Fig. 2.5.3. Sensul de rotație a motorului în funcție de închiderea contactoarelor 27
Fig. 2.5.4. Punte H cu tranzisto are MOS și circulația curenților în punte 27
Fig. 2.5.5. Simbolurile electronice ale tranzistoarelor MOS cu canal inițial 28
Fig. 2.5.6. Modulul cu driver L298N, cu tranzistoare bipolare și porți logice 28
Fig. 2.5.7. Semnal PWM cu diferiți factori de u mplere (ecran osciloscop) 29
Fig. 2.5.8. Grafic prezentare a diferitelor valori ale duty cycle -ului la apelul analogWrite() 30
Fig. 2.5.9. Conexiunile modulului cu driver la pinii Arduino, motoare și baterie de 9V 31
Fig. 2.6.1. Dioda luminiscentă (LED ) care emite unde infraroșii (Emitor IR) 32
Fig. 2.6.2. Schema unui circuit emițător tipic IR 32
Fig. 2.6.3. Fotodiodă infraroșu (Receptor IR) 33
Fig. 2.6.4. Schema unui circuit receptor tipic IR 33
Fig. 2.6.5. Schema de principiu pentru emisia -recepți a undelor IR 34
Fig. 2.6.6. Circuit tipic IR de emitere -recepție a undelor IR 34
Fig. 2.6.7. Reprezentarea undelor IR în cazul celor două culori folosite pe pistă 36
Fig. 2.6.8. Prezentarea fiecărui dispozitiv electronic de pe modulul senzor infraroșu 36
Fig. 2.6.9. Conexiunea modulului senzor infraroșu la pinii plăcii de dezvoltare Arduino 37
Fig. 2.7.1. Senzor cu ultrasunete HC -SR04 37

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

3 Fig. 2.7.2. Modul de transmitere a sunetului de la senzor la obiect și invers 38
Fig. 2.7.3. Conexiunea senzorului HC-SR04 la pinii plăcii de dezvoltare Arduino 38
Fig. 2.7.4. Transmiterea impulsului de la pinul Trig până la recepția de către pinul Echo 39
Fig. 2.7.5. Calculul distanței pentru senzorul HC -SR04 39
Fig. 3.1.1. Schema bloc a unui sistem 40
Fig. 3.1.2 . Exemplu de semnal continuu (variația valorii semnalului s în funcție de timpul t) 41
Fig. 3.1.3. Exemplu de semnal eșantionat (semnal compus din eșantioane la intervale egale) 41
Fig. 3.1.4. Semnale utilizate frecvent în sistemele de reglare automată 41
Fig. 3.2.1. Schema de reglare a unui proces cu regulator PID 43
Fig. 3.3.1. Evidențierea pierderii controlului asupra urmăririi liniei 49
Fig. 3.3.2. Evidențierea trasei robotului asupra liniei utilizând un regulator PID 50
Fig. 3.3.3. Distribuția se nzorilor IR pe planul traseului marcat în poziția țintă 50

Tabel 3.3.1. Exemple de valori ale senzorilor IR în 3 poziții ale robotului pe linie 51
Tabel 3.3.2. Valorile asignate senzorilor IR și valorile binare corespunzătoare acestora 51

Lista 4. 1.1. Structură program cu funcția main() creată 53
Lista 4.1.2. Scheletul unui program Arduino 54
Lista 4.1.3. Declarațiile globale și define -urile programului 54
Lista 4.1.4. Funcția void setup() 55
Lista 4.1.5. Funcția void loop() 56
Lista 4.2.1. Ci tirea valorilor celor cinci senzori infraroșu 56
Lista 4.2.2. Matricea valorilor senzorilor în toate cazurile plasării robotului 57
Lista 4.3.1. Funcția de calcul a regulatorului PID 57
Lista 4.4.1. Funcția de control a motoarelor 58
Lista 4.5.1. De tecția obstacolelor și afișarea distanței pe monitorul serial 59

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

4 Lista notaț iilor și abrevieri lor

Ω = Ohm
μs = M icrosecundă
A = amper
AREF = Analog Reference
cm = C entimetru
DC = Direct -Current (curent continuu)
EEPROM = Electrically Erasable Programmable Read -Only Memory
etc. = Et cetera
GND = Ground
I2C = Inter -Integrated Circuit
IDE = Integrated Development Enviroment
kΩ = KiloOhm
KB = KiloByte
KHz = KiloH ertz
LCD = Liquid Crystal Display
LED = Light Emitting Diode
m = M etru
mA = M iliamperi
MC = Microcontrol ler
MHz = Megahertz
MISO = Master In Slave Out
mm = Milimetri
MOSI = Master Out Slave In
MOSFET = Metal Oxid Semiconductor Field Effect Transistor
ms = M ilisecundă
nF = Nanofarad
nm = N anom etru
Nm = Newton -metru
PWM = Pulse Width Modulation
RISC = Reduced Instruction Set Computer
s = S ecundă
SCL = System Clock Line
SDA = Serial Data Line
SPI = Serial Peripheral Interface
SRA = Sistem cu reglare automată
SRAM = Static Random Access Memory
TX/RX = Transmitter/Rec eiver
USB = Universal Serial Bus
V = Volt
VCC = Se referă la plusul liniei de alimentare
Vin = Input Voltage
W = Watt
Wb = Webber

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

5 Capitolul 1 . Introducere

Dezvoltarea rapidă a ingineriei și științei calculatoarelor din ultimii ani a permis
cercetător ilor în domeniu să rezolve probleme dificile, apropiate de complexitatea problemelor
soluționate de om. La ora actuală oamenii sunt înconjurați de tehnologia care încearcă să crească
calitatea vieții lor de zi cu zi . Totuși, există situații în care tehnolo gia este greu de manevrat, sau
oamenii au o dificultate de a o folosi. Domeniile important e în această arie sunt cele din industriile
producătoare , unde bazele automaticii, electronicii și cele ale informtaticii aplicate se îmbină cel
mai bine . Robotul aut onom mobil , care se va prezenta în această lucrare, poa te fi un prototip pentru
aceste industrii, ajutând la diverse sarcini. Un robot autonom moștenește bazele automaticii, unde
legătura hardware și sof tware este cea mai bine v ăzută.

1.1. Contextul lucră rii
Automatica reprezintă ramura științei care se ocupă cu studiul principiilor, metodelor și
mijloacelor prin intermediul cărora se asigură conducerea proceselor fizice și tehnice, fără
intervenția directă a operatorului uman. Realizarea practică a princi piilor și metodelor care asigură
controlul proceselor tehnice, proiectarea elementelor constructive și funcționale ale mijloacelor
necesare, constituie obiectul automatizărilor ca disciplină a automaticii.

Fig. 1.1 Structura de ansamblu a unei automatiz ări [1]

Structura de ansamblu a unei automatizări cuprinde două părți, partea operativă și partea de
comandă.
Partea operativă este cea care acționează asupra procesului și cuprinde elemente de
acționare, cum ar fi : motoare electrice, pistoane pneumatic e și hidraulice, electrovalve și lista poate
continua.
Partea de comandă este aceea care trimite comenziile către partea operativă și primește
înapoi informații de reacție în vederea coordonării acțiunilor. Principalul element al părții de
comandă este Un itatea de Prelucrare (UP), cu ajutorul căreia se prelucrează informațiile primite pe

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

6 mai multe căi și elaborează comenzi în conformitate cu un algoritm bine stabilit pentru realizarea
automatizării.
Procesu l furnizează informații către unitatea de preluc rare prin intermediul traductoarelor,
iar acestea fac legătura între partea de comandă și parte operativă, deoarece comenzile sunt furnizate
către proces în funcție de datele primite.
Din punct de vedere structural și automatizarea robotului autonom care va urmări linia
trebuie să conțină elemente care să constituie partea operativă și elemente care să formeze partea de
comandă și împreună să creeze un sistem automat al acestui proces.
Automatizarea are drept scop ca sistemul să lucreze independent de in tervenția operatorului
uman asupra acesteia. Cu cât gradul de automatizare este mai mare cu atât, munca omului asupra
procesului este mai mică. În instalațiile automatizate rolul operatorului uman este acela de
supraveghere, de aprovizionare cu materiale ( logistică), de transport materiale finite, de întreținere
și alte activității similare. [1]

1.2. Scopul și obiectivele cercetării
Lucrarea de diplomă cu titlul ,,Controlul unui robot autonom mobil ” reprezintă rodul unei
documentări și munci ample de proie ctare și realizare a unei platforme robotice mobile destinată
urmăririi unui marcaj (linie) de culoare neagră pe un fond de culoare albă. Pe lângă acest lucru,
robotul are capacitatea de a detecta și a se opri în cazul în care pot apărea obstacole pe parcu rsul
traseului.
În cazul de față, proiectul final este considerat un prototip și are ca scop cre area unor așa zise
cărucioare inteligente din cadrul firmelor de anvergură mare. Ca să fie lucrurile cât mai precise,
aceste carucioare inteligente se pot fol osi la transportul de piese din depozite, la punctele de lucru
ale liniilor automatizate pentru p roducție. O altă aplicabilitate a acestor cărucioare poate fi aceea de
a căra șpanul format în urma procedurilor de așchiere sau strunjire de la punctele de lu cru. Odată cu
aceste implementări s -ar reduce numarul de moto -stivuitoare și de oameni, făra de care aceste
manevre nu ar fi posibile. Conceptul robotului să fie capabil să se oprească în momentul în care
observă un obstacol pe traseu este foarte important deoarece se evită riscurile accidentărilor
oamenilor din producție la locul de muncă.

1.3. Structura lucrării
Lucrarea de diplomă a fost structurată pe nouă capitole, ultimele trei capitole fiind secundare
lucrării și cuprinzând declar ația de originalita te, rezumatele proiectului în limba română și limba
engleză și anexele.
Capitolul 1 este d edicat introducerii, prezentând pe scurt contextul lucrării împreună cu
obiectivele care au stat la baza elaborării acestuia. În final, se fa ce o prezentare pe scurt a fiecă rui
capitol în parte.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

7 Capitolul 2 se rezumă la parte a de arhitectură și descrierea robotului autonom. Se va începe
cu o prezentare generală a componentelor folosite la construcția platformei robotice și pe lângă asta
se va prezenta și pista marcată pe care va rula robotul. Se vor face descrieri ale mecanicii acestuia și
se va cr ea schema bloc. În cele ce urmează se vor prezenta detaliat placa de dezvoltare Arduino cu
mediul său de programare Arduino IDE , pe care se va încă rca programul principal de c oman dă a
robotului. Subcapitolele din final, sunt rezervate descrierii celor două tipuri de senzori folosiț i pe
platforma robotică și utilitatea lor în atributele pe care acesta le va îndeplini.
În capitolul 3 regăsim partea cea mai importantă a proiectulu i intitulată ,,Contr olul robotului
cu regulatorul PID” . Acest capitol cuprinde o prezentare generală a regulatoarelor în primă fază
după care se intră în amănunt strict pe partea de care avem nevoie la robot, regulatorul PID. În
finalul capitolului, se vo r prezenta adaptarea și metodele folo site pentru acordarea parametri lor
regulatorului PID, pentru robotul urmăritor de linie.
Capitolul 4 se initulează ,,Implementarea software a principalelor funcții de comandă ”. Se va
prezenta structura genrală a aplicaț iei/programului și se va explica fiecare parte a codului scris. Se
vor identifica si explica funcțiile de control a celor două motoare de curent continuu cu reductor,
funcțiile definitorii pentru fiecare model de senzor și modul în care se achiziționează d atele de la ei.
Pentru fiecare în parte , se va prezenta cum se realizează comunicația driver -MC sau senzori -MC și
invers.
Capitolul 5 este capitolul unde se vor prezenta rezultatele și concluziile generale,
contribuțiile personale, dar și posibilitățiile d e dezvoltare și îmbunătățire viitoare ale robotului
autonom mobil.
Capitolul 6 va cuprinde toate referințele bibliografice și sursele de unde au fost selectate
informații referitoare atât la partea hardware cât și la partea software .
Ultimele trei capitole vor fi părți secundare ale lucrării de diplomă cuprinzând declarația de
originalitate, rezumatele proiectului în limba română și limba engleză și partea de anexe.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

8 Capitolul 2 . Arhitectura și descrierea componentelor robotului autonom

Din punct de vedere arhitectural, robotul urmăritor de linie are la bază opt componente
principale, care îmbinate, duc la conceptele pe care le dorim de la acesta să le îndeplinească. Cele
opt componente ce descriu parte a hardware a robotului vor fi listate mai jo s, iar în subcapitolele
următoare se vor prezenta fiecare în parte și se va v orbi despre rolul lor. Pe lângă componentele
folosite se va prezenta și pista pe care s -a schițat traseul pe care robotul trebuie să îl parcurgă.
 Șasiu
 Placă de dezvoltare
 2 moto are de curent continuu cu reductor și roți atașate + roată mobilă pentru echilibru
 Modul cu driver L298N
 5 module senzor infraroșu
 Senzor ultrasonic (HC -SR04)
 Mini -Breadboard
 2 baterii de 9V

2.1. Prezentarea pistei și a componentelor folosite
Prezentarea pistei
Pista pe care va rula robotul este confecționată din două plăci de carton ondulat în șapte
straturi, alipite, formâ nd astfel o ar ie mai mare pe care robot ul va rula . După alipirea celor două
cartoane, acestea s -au acoperit cu un colaj abraziv car tonat de culoare albă pentru un contrast cât
mai bun și o diferențiere clară între cele două culori esențiale, alb și negru. Suprafața totală a pistei
este de 1m2.
Rugozitatea este o proprietate foarte importantă a texturii suprafeței și de asta s -a ținut cont
și s-a ales un colaj cartonat abraziv pentru ca robotul s ă aibă aderență la pornire și în curbe. Traseul
pe suprafața pistei a fost făcut cu un marker de culoare neagră, iar linia a fost făcută la o grosime de
2 cm pentru a fi sesizată câ t mai bine d e modulele senzor infraroșu.

Fig. 2.1.1. Pista pe care va rula robotul

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

9 Șasiu
Șasiul reprezintă structura de bază a platformei robotice pe care se vor monta și se vor
adăuga fiecare din dispozitivele enumerate mai sus. Materialul din care șasiul este făc ut este
plexigl as la o grosime de 3mm ceea ce îl face rezistent și în același timp ușor, asta reprezentând un
mare avantaj. Acesta este conceput pentru roboț i de dimensiuni mici, bine realiz at, ce se pretează în
crearea proiectelor cu Arduino sau alte plat forme de dezvoltare. Cu o multitudine de orificii și
puncte de prindere, pe acesta se pot adăuga diverse module sau senzori preferați în vederea realizării
diferitelor task -uri.

Fig. 2.1.2. Șasiu plexiglas (L x l x h : 21cm x 15cm x 0,3cm)
Placa de dezvo ltare
Se va folosi o placă de dezvoltare Arduino, modelul fiind Arduino UNO R3. Aceasta este o
platformă de procesare open -source, bazată pe software și hardware flexibil și simplu de folosit.
Constă într -o platf ormă de mici dimensiuni (6.8 cm/ 5.3 c m – în cea mai des întâlnită variantă)
construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător
printr -o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor,
motoarelor, servomotoare, ș i alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze
cod scris într -un limbaj de programare care este foarte similar cu limbajul C++. Având o memorie
flash, se va putea stoca proramul de control al robotului pe aceasta . Fiecare modul si senzor din
cadrul platformei, se leagă la microcontrollerul integrat pe placa de bază.

Fig. 2.1.3. Placa de dezvoltare Arduino UNO R3

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

10 Motoarele de curent continuu cu reductor și roți atașate
Pe șasiul robotului se vor atașa două motoare de curent conti nuu cu reductor care au și roți
atașate . Cu ajutorul motoarelor și roților se va realiza motrica robotului . Sunt motoare de curent
continuu cu perii , de cost redus și performanțe mici, fiind ideale pentru proiecte cu un ansamblu
hardware ușor, deoarece nu dezvoltă un cuplu motor mare. Modelul de motoare de curent continuu
cu reductor și roți atașate îl vom arăta în imaginea de mai jos.

Fig. 2.1.4. Motor de curent continuu cu reductor și roată atașată
În partea din spate a platformei robotice, sau mai bin e spus a șasiului din plexiglas, se
montează o roată mobilă cu patru prinderi în șurub pentru menținerea echilibrului și ghidarea
platformei după cum motoarele vor fi comandate.

Fig 2.1.5 . Suport cu roată mobilă
Modul cu driver L298N
Printr -un driver de motoare, la modul general, putem s ă controlăm viteza și sensul de rotație
a două sau m ai multe motoare. Modulul cu driver L298N are la bază aceleași principii cu cele ale
unui driver general. Este util prin faptul că beneficiază de un radiator destul de m are montat
împreună cu puntea H (driver -ul) și disipă o cantitate mare de caldură. Acesta este ilustrat în
imaginea următoare.

Fig. 2.1.6 . Modul cu driver L298N

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

11 Module senzor infraroșu
Pentru detecția liniei negre de pe suprafața de contact a pistei, se vor folosi 5 module senzor
infraroșu. Principiul de funcționare al acestor module este unul simplu. Un modul cuprinde un LED
infraroșu și o fotodiodă infraroșie. LED -ul va emite unde infraroșu spr e suprafața de contact, iar
dacă robotul se află pe o parte unde culoarea este albă, se vor reflecta aceste unde și vor fi captate de
fotodiodă. Dacă robotul este pe linia neagră, LED -ul va continua să emită unde infraroșu, dar
fotodioda nu va mai capta nimic , deoarece din culoarea neagră nu se vor reflecta undele . În funcție
de aceste cazuri, se vor lua decizii la nivel software și apoi se vor transmite comenzi către driver și
de aici la motoare.

Fig. 2.1.7 . Modul senzor infraroșu
Senzorul ultrasonic HC -SR04
Pentru detecția obstacolelor ce pot apărea pe suprafa ța pistei, se va folosi un senzor
ultrasonic (HC -SR04). Senzorul ultrasonic cuprinde un emi țător și un receptor. Ca funcționalitate
senzorul emite un ultrasunet la o frecvență de 40 KHz care circulă prin aer și dacă un obiect, sau un
obstacol se află în c alea sa, îl va reflecta înapoi către modulul de r ecepție al senzorului . Cunoscând
timpul de parcurgere a ultrasunetului și viteza sunetului putem c alcula distanța la care se află
obiectul.

Fig. 2.1.8 . Senzor ultrasonic (HC -SR04)

Mini -Breadboard
Conexiu nile senzorului ultrasonic cu cele de pe placa de dezvoltare Arduino montate pe
șasiul robotului , nu se puteau face fără intermediul unui bradboard , deoarece senzorul trebuie să stea
fixat ș i orientat spre față pentru detecția de obstacole. Astfel, montând un breadboard pe șasiul

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

12 robotului, conexiunile se pot face mult mai ușor , acesta având rol și de suport, dar și de înseriere a
firelor conductoare către pinii MC și senzorului. Ace sta va fi folsit și pentru VCC ș i GND comun
pentru cele cinci module senzor infraroșu.

Fig. 2.1.9 . Mini -Breadboard
Baterii de 9V
Pentru ca totul să funcționeze, vom avea nevoie de o sursă externă de alimentare. În aceste
condiții se vor folosi două baterii d e 9V, una pentru alimentarea plă cii de dezvoltare Arduino prin
interme diul unui fir cu conectori (pentru bornele bateriei) și mufă DC . O a doua baterie se va folosi
pentru alimentarea modului cu driver L298N și odată cu acesta și a motoarelor de curent continuu
cu reductor.

Fig. 2.1.10 . Baterie 9V și conector cu mufă DC
Robotul în varianta finală

Fig. 2.1.11 . Robotul în varianta finală

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

13 2.2. Schema bloc și mecanica robotului
Schema bloc
Schema bloc a întregii platforme robotice cuprinde trei siste me care are un rol funcțional
pentru sistemul principal.
Primul sistem este cel de intrare în care găsim partea de senzori de detecție a liniei negre.
Datele binare achiziționate de senzori infraroșu vor fi transmise către microcontrollerul integrat pe
placa de bază. De altfel, celălalt tip de sensor, cel ultrasonic, pe lângă pin ii de VCC și GND, mai are
doi pini, Trig și Echo. Arduino trimite pri n pinul Trig, la interval de 10μ S, câte un tren de 8
impu lsuri către senzor. Pinul Echo va trimite înapoi către placa de dezvoltare lățimea impulsului
corespunzător distanței (vezi detali i subcapitol 2.7).
Al doilea sistem este cel de procesare, unde informațiile primite se procesează și se iau toate
deciziile în privința controlului.
Cel de -al treilea sistem este cel al ieșirilor, ieșiri sau decizii care se vor duce din
microcontroller către modulul cu driver și apoi motoare.

Fig. 2.2.1. Schema bloc a robotului
Mecanica robotului
Opera țiile de bază ale robotului urmăritor de linie sunt următoarele :
1. Captarea pozi ției liniei se va face cu senzorii infraroșu montați în partea din față a
robotului pe un suport special făcut. Pentru aceasta este utilizată o combinație de LED -uri și
fototranzistoare, numită optocuplor, sau LED -uri și fotodiode. Procesul de detecție a liniei
necesită o rezoluție și robustețe ridicată.
2. A doua operație este aceea de a roti robotul și de a -l centra pe linia neagră. Acest lucru se
va realiza cu modulul cu driver cu care vom comanda motoarele astfel încât robotul să
ramână pe direcția liniei.
3. În cazul în care robotul va detecta un obiect/obstacol pe traseu cu aj utorul senzorului
ultrasonic, se va opri alimentarea celor două motoare până când obstacolul va fi deviat de pe
traseu.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

14 2.3. Placa de dezvoltare Arduino și m ediul de programare
Pentru controlul robotului autonom s -a folosit placa de dezvoltare Arduino Uno R3 cu
ajutorul căreia su nt acționate modulul cu driver de motoare și totodată motoarele de curent continuu,
senzorii infraroșu și senzorul ultrasonic.
Arduino este o platformă de dezvoltare open -source care produce atât echipamentele
hardware cât și sup ortul software pentru acestea. Ea este foarte populară în rândul dezvoltatorilor
deoarece este concepută a fi ușor de folosit și are o comunitate mare care se ocupă de creația și
răspândirea de proiecte pentru controlul și acționarea unor activități sau pr ocese din lumea reală.
Placa Arduino poate fi folosită pentru citirea valorilor de la diverși senzori, aprindere de leduri,
acționarea motoarelor, sau se pot face chiar editări a conținutului online. Se pot da comenzi către
Arduino pentru a spune ce anume se dorește prin intermediul unor seturi de instrucțiuni transmise
microcontrol ler-ului plăci i.
Mediul de dezvoltare este bazat pe un design care utilizează plăci cu diverse tipuri de
microcontrolere, acestea pun la dispoziția utilizatorului pini de intrar e/ieșire analogici și digitali,
care po t fi interfațați cu o gamă largă de alte circuite sau plăcuțe numite scuturi (shield -uri). Plăcile
dispun și de comunicare serială, inclusiv USB pentru unele modele, pentru a putea încărca
programele scrise în calcula toarele personale pe microcontrol ler-ul plă cii. Arduino este doar o
plăcuță cu câteva componente electronice pe ea. Pentru a face să funcționeze ea are nevoie de
instrucțiuni, care sunt scrise în progr ame numite „schițe (skeatches)”. A cestea sunt create cu
ajutorul mediului integrat de dezvoltare Arduino IDE (Integrated Development Enviroment).
Programul permite scrierea și editarea codului care este convertit în instrucțiuni pe care hardware -ul
Arduino l e înțelege. Din IDE se transferă , de asemenea, aceste instrucțiuni către placa Arduino prin
procesul numit încărcare, de asemenea programul IDE include și un număr de exemple de programe
sau schițe care arată cum să conectezi și cum comunică Arduino cu anumite dispozitive cum ar fi
led-uri, ecran LCD, senzor i etc. [7]
Hardware -ul Arduino
Există un număr mare de versiuni de plăci Arduino, iar majoritatea sunt bazate pe
microcontro ller-ul RISC (Reducted Instruction Set Computer) Atmel Avr de 8, 16 și 32 de biți.
Prima placă a fost dezvoltată pe un microcontro ller ATmega8 , care avea o frecvență de 16 MHz
împreună cu o memorie flash de 8 KB. Placa Arduino are și alte componente complementare care
facilitează comunicarea cu alte circuite și cu calculatorul unde este scris codul pentru implementare.
Aceasta dispune de conectori standard care îi permite să comunice cu diferite module
interschimbabile numite shield -uri. Unele shield -uri comunică cu Arduino prin pini analogici sau
digitali, în timp ce altele pot fi adresate individual prin magistrala serială I2C care p ermite utilizarea
în paralel a mai mu ltor module. Multe dintre plăcuț e includ și un regulator liniar de 5 volți și un
oscilator cu cuarț de 16 MHz. Microcontrol ler-ul aflat pe o plăcuță Arduino vine programat cu un

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

15 bootloader cu ajutorul căruia se simplifi că încărcarea programelor în memoria flash a cipului față de
altele care necesită programatoare externe.
Plăcuța Arduino are expuși pinii de intrare și ieșire ai microcontrol ler-ului pentru a putea fi
folosiți de alte dispozitive electronice cu care comuni că. Marea majoritate a plăcuțelor vin cu 14
pini digitali de intrare/ ieșire, dintre care 6 pot fi folosi ți pentru a produce semnale PWM , 6 pini
analogici de intrare, care pot fi folosiți și ca pini digitali de intrare și de ieșire.

Software -ul Arduino
Programele pentru placa Arduino pot fi scrise în orice limbaj de programare care are un
compilator ce poate să transforme codul în cod mașină binar. Pentru plăcuțele care folosesc
microcontrol ler-ul Atmel , aceștia au propriul mediu de dezvoltare numite AVR S tudio și Atmel
Studio care pot fi folosite pentru scrierea de cod. Cu toate acestea, Arduino oferă propriul său mediu
de dezvoltare (IDE), care este o aplicație cross -platform, scrisă în limbajul Java . Acesta este format
dintr -un editor de text pentru scri erea de cod, o consola pentru mesaje, o serie de butoane cu ajutorul
cărora poți să încarci și să verifici programele scrise în editorul de text, dar și un meniu unde poți să
găsești tot felul de biblioteci și exemple de programe care pot fi folosite pen tru controlul de senzori,
motoare și multe altele.
Arduino IDE suportă limbaje de programare C și C++ care folosește reguli speciale de
organizare a codului. Programele scrise pentru Ardui no sunt denumite schițe (sketch ) și pot fi scrise
în cele dou ă limbaj e de programare C/C++ . Orice schiță scri să trebuie să aibă în componență două
funcții speciale:
 Setup(): o funcție care este apela tă o singură dată la început ul programului. Este foarte utilă
pentru a seta pinii sau pentru a inițializa biblioteci.
 Loop() : o funcție care este apelată în mod repetat până la oprirea plă cuței, iar în interiorul
acestei funcții se scrie programul principal.
Acestea trebuie să fie incluse în orice schiță indiferent dacă sunt folosite sau nu.
Schițele scrise în editorul de tex t sunt salvate cu extensia .ino. În timpul salvării programului
în console, vor apărea mesaje corespunzătoare , chiar și mesaje de eroare. Consola include afișarea
completă a mesajului erorii din timpul verificării programului. Cu ajutorul butonului de încă rcare
programul scris în editorul de text este transformat într -un fișier .hex și încărcat pe microcontro ller
cu ajutorul bootloader -ului, un program care este încărcat în microcontro ller și permite încărcarea de
cod fără a fi nevoie de un echipament sup limentar .
Programele pentru Arduino pot fi scrise în mai multe fișiere, acestea pot fi fișiere C cu
extensia .c, C++ cu extensia .cpp sau header cu extensia .h. Se pot folosi de asemenea biblioteci care
oferă funcții suplimentare care pot fi folosite în sch ițe. Acestea se vor insera prin declararea
#include la începutul schiței și trebuie compilate împreună cu schița. [7]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

16 Arduino Uno R3
Placa Arduino Uno R3 are la baza microcontroller -ul pe 8 biți ATmega328 cu un oscilator
cu cuarț de 16 MHz. Ea include 14 pini digi tali, fiecare dintre aceștia putând fi utilizați ca intrări sau
ieșiri, în plus 6 dintre pini i digitali pot fi programați pentru a oferi semnale de ieșire PWM (pulse
width modulation) și 6 pini analogici de intrare. Plăcuța are conexiune USB, o m ufa de alimentare și
un buton de reset. Schema arhitecturii unei plă ci Arduino Uno R3 este prezentată în figura ce
urmează mai jos :

Fig. 2.3.1 Arhitectura Arduino UNO R3
1. Pinii digitali de intrare ieșire, 6 p ini pot fi utilizați pentru PWM ;
2. Pinul 13 LED;
3. Led -ul de alimentare. A rată daca placa primește curent;
4. Microcontro ller-ul ATmega 328 ;
5. Pinii analogici de intrare;
6. Împământarea și pinul de 5V folosit pentru alimentarea dispozitivelor conectate la Arduino ;
7. Conexiune a pentru alimen tare. Poate fi folosit ă pentru a alimenta placa atunci când nu este
conectată la portul USB. Poate primi o tensiune intre 7 – 12V;
8. Led -urile TX și RX. Aceste leduri indică comunicația dintre Arduino și Calculator/Laptop;
9. Portul USB. Este folosit pe ntru a alimenta placa Arduino prin intermediul unui cablu USB
conectat la un calculator, pentru a încărca programele pe microcontro ller și pentru a comunica cu
plăcuța pr in intermediul canalului serial;
10. Buton de resetare. Resetează microcontrol ler-ul;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

17 Placa de dezvoltare se programează prin intermediul mediului de dezvoltare Arduino IDE.
Microcontrol ler-ul de pe placă vine programat cu bootloader -ul care permite încărcarea codului fără
a fi nevoie de un circuit extern.
Alimentarea pe Arduino Uno poat e fi făcută fie prin intermediul conexiunii USB, fie de la o
sursă de alimentare exterioară. Sursa de alimentare exterioară poate fi făcută prin intermediul unui
transformator de curent alternativ în curent continuu, sau utilizând bateri. Transformatorul p oate fi
conectat prin intermediul unui ștecher de 2.1 mm în alimentarea plă ci Arduino. Firele de legătură de
la baterie sunt conectate pe pinii GND și Vin ai plăcuței. Placa poate opera cu o sursă de tensiune
extern ă care oferă între 6 și 20V . Dacă tensiun ea furnizată de către sursă este mai mică de 7V, pini i
pot primi mai puțin de 5V și placa poate deveni instabilă, iar dac ă utilizezi mai mult de 12 V atunci
regulatorul de tensiune se poate încălzi și poate defecta placa. Tensiune recomandată de aliment are
este între 7 și 12 V.
Microcontro ller-ul ATmega328 are o memorie de 32 de KB, dintre care 0, 5 KB sunt ocupați
de bootloader . De asemenea ea mai are 2 KB de memorie SRAM și 1 KB EEPROM, care poate fi
citită și scrisă cu ajutorul bibliotecii EEPROM.
Fiecare dintre cei 14 pini digitali de pe Arduino Uno pot fi folosiți ca intrări sau ca ieșiri prin
intermediul funcțiilor pinMode() , digitalWrite() și digitalRead() . Ei o perează cu o tensiune de 5V ,
iar curentul recomandat pe care pinii îl pot oferi sau primi es te de 20 mA din cauza rezistențelor
interne de pull -up care sunt de 20 -50 kΩ. Valoarea maximă a curentului pe care orice pin de
intrare/ieșire nu trebuie să îl depășească pentru a evita daune asupra microcontrol ler-ului este de
40mA.
Anumiți pini au și fu ncții specializate cum ar fi:
– Comunicarea serial ă: pinul 0 (RX) și 1 (TX). Sunt folosiți pentru primire (RX) și transmitere (TX)
serială a datelor.
– Întrerupere externă: pinul 2 și 3 . Acești pini pot fi configurați să declanșeze o întrerupere externă .
– PWM: pinii 3, 5, 6, 9, 10 și 11. Oferă semnal PWM de 8 biți cu ajutorul funcției analogWrite() .
– SPI: pinul 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Acești pini suporta o comunicare SPI cu
ajutorul bibliotecii SPI
– LED: pinul 13. Atunci când pinul este setat pe valoarea HIGH, ledul de pe placă se aprinde, iar
când este LOW se va stinge .
– TWI: pinul A4 sau SDA și pinul A5 sau SCL. Comunicarea TWI utilizează biblioteca Wire.
Arduino Uno mai are și 6 pini analogici de intrare, aceștia sunt notați d e la A0 la A5, și fiecare pin
are o rezoluție de 10 biți. În mod implicit ei măsoară de la împ ământare la 5V , dar este posibilă
mărirea rezoluției prin utilizarea pinului AREF și a funcției analogReference().
Ultimul set de pini sunt folosiți pentru alime ntare după cum urmează:
– Pinul Vin: folosit pentru a alimenta placa de la o sursă exterioară ;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

18 – Pinul 5V: oferă o tensiune de ieșire de 5 volți de la regulatorul plăcii;
– Pinul 3.3 V: oferă o tensiune de 3.3V și un curent maxim de 50mA de la regulatorul de pe placă ;
– Pinul GND: folosit pentru împământare ;
– Pinul IOREF: oferă o tensiune de referință cu care operează microcontrol ler-ul;

Fig. 2.3.2 Legă turile pinilor m icrocontrol ler-ului ATMega328 la pinii plăcii de dezvoltare
Motivul pentru care s -a ales f olosirea unei plăcuțe Arduino a fost că acestea sunt foarte
ieftine comparate cu alte platforme , cea mai scumpă placă valorând mai puțin de 50 de dolari, și
pentru că sunt foarte multe locu ri de unde iți poți achizi ționa una. U n alt avantaj al acest ei platforme
este că are un mod de programare ușor de folosit pentru începători și este foarte flexibilă pentru
utilizatori i avansați, la acest lucru adaugându -se și o comunitate m are care contribuie cu o
diversitate de proi ecte, idei și de biblioteci care ajută la dezvoltarea unui sistem. Există și forumuri
unde sunt deschise discuții ce au la bază rezolvarea problemelor pe care le întâmpină utilizatori i.

2.4. Motoarele de curent continuu cu reductor
Robotul urmăritor de linie folosește pentru deplasări p e suprafața marcată, două motoare de
curent continuu cu reductor care vor fi comandate cu ajutorul unui driver. Motoarele sunt de
dimensiuni și performanțe mici, fiind ideale doar în cazul prototipurilor de roboți mici. Motorul de
curent continuu a fost in ventat în 1873 de Zénobe Gramme prin conectarea unui generator de curent
continuu la un generator asemănător. Astfel, a putut observa că masina se rotește, realizând
conve rsia energiei absorbite de la generator.

Fig. 2.4 .1. Motorul de curent continuu cu reductor folosit în structura robotului

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

19 Caracteristicile tehnice ale motorului de curent continuu cu reductor
 Reducție motor: 1:48;
 Tensiune de alimentare motor: 3V -6V DC;
 Cuplu: 0,8 kg*cm;
 RPM: 3V:125rpm, 5V:200rpm, 6V:230rpm;
 Curent: 3V:60mA, 5V:100mA, 6V:120mA;

Prezentare a generală a motoarelor de curent continuu
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.
În funcție de modul de conectare a înfășurării de excitație, motoarele de curent continuu pot
fi clasificate în :
 Motor cu e xcita ț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 aceeaș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;
Constructiv, mot orul de curent continuu este alcătuit dintr -un stator și un rotor. Î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 al iniază î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.
Turația motorul ui este proporțională cu tensiunea aplicată înfășurării rotorice și invers
proporțională cu câmpul magnetic de excitație. Ambele metode vizează o tensiune variabilă ce poate
fi obținută folosind un generator de curent continuu, prin înserierea unor rezisto are în circuit sau cu
ajutorul electronicii de putere (redresoare comandate, choppere).
Cuplul dezvol tat 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 st ră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 ;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

20 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 re dus, ceea ce duce la
ambalarea mașinii până la autodistrugere.

unde:
;
– cuplu motor (Nm) ;
– constanta ecua ției forței electromotoare indusă ;
– constanta ecua ției de cuplu ;
– curentul prin armătură (A);
– fluxul total al mașinii de curent continuu; (Wb)
Forța electromotoare indus ă a motorului de curent continuu este proporțională cu puterea
fluxului total al motorului și viteza armăturii . [8]

– forța electromotoare indusă (V);
Tensiunea de intrare a motorului de curent continuu tr ebuie să depășească forța
electromotoare înapoi , precum și căderea de tensiune creată de curentul armăturii prin rezistența
motorului, adică rezi stența combinată între perii, înfășurarea armăturii și înfășu rarea în serie, dacă
este cazul. [8]

– tenisunea de intrare la motor (V) ;
– forța electromotoare indus ă (V);
– rezistența motorului (Ω) ;
– curentul prin armătură (A);
Ecuația vitezei este:

unde:

– constanta ecua ției de viteză ;
– frecvența armăturii (rpm) ;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

21 Schimbarea sensului de rotație se va face fie prin schimbarea polarităț ii tensiunii de
alimentare, prin schimbarea sensului câmpului magnetic de excitație.
Motoarele de curent continuu, în general, sunt similare în construcție cu generatoarele de
curent continuu. Ele pot, de fapt, să fie descrise ca generatoare care ,,funcționează invers”. Când
curentul trece prin rotorul unui motor , este generat un câmp magnetic care generează o forță
electromagnetică și ca rezultat , rotorul se roteș te. Acțiunea periilor și a plăcuțelor colectoare este
exact aceeași ca la generator. Rotația rotorului induc e un voltaj în bobinajul rotorului. Acest voltaj
indus are sens opus voltajului exterior aplicat rotorului.
O clasificare principală a motoarelor de curent continuu este aceea că există două tipuri de
motoare și anume: motoare de curent continuu cu perii și motoare de curent continuu fără perii. În
proiectul de față, modelele de motoare folosite sunt cele cu perii colectoare asupra cărora vom intra
în amănunt în subcapitolul de mai jos.

Motoare de cur ent continuu cu perii
Motoarele de curent continuu cu perii au în rotor o bobină care este alimentată la o sursă de
tensiune continuuă prin intermediul periilor de carbon. Statorul motorului conține un magnet
permanent. În imaginea de mai jos se va evidenția fiecare parte a motorului printr -o secțiune
transv ersală.

Fig. 2.4.2 . Secțiune transversală a motoru lui de curent continuu cu perii
Părțile constructive de bază ale motorului de curent continuu cu perii sunt: statorul și rotorul.
Statorul (inductorul) reprezintă armă tura exterioară , fixă , cu poli apare nți. Este partea
mașinii în care se produce c urentul magnetic inductor . Acesta cuprinde :
 Carcasa din oț el turnat sau sudat, constituie jugul inductor prin care se inchide fluxul
magnetic principal ;
 Polii principali (poli i de excitaț ie) produ și din tole de oțel de 1 – 2 mm grosime ;
 Infășurarea de excitație este făcută din conductor de cupru izolat, sub forma unor bobine
concentrate montate pe miezul polilor principali. Bobinele de e xcitație se leagă în serie sau

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

22 în paralel, astfel încât să se obțină un induc tor heteropolar . Înfășurarea de excitație se
alimentează î n curent continuu ;
 Polii auxiliari (poli i de comuta ție) sunt construiți dintr -un miez de fier masiv sau din tole și
au de regulă o formă paralelipipedică. Sunt situați în axa neutră a motorului la m ijlocul
distanței dintre polii principali;
 Înfasurarea de comutație (înfășurarea polilor auxiliari) este construită din conductor de cupru
sub formă de bobine concentrate, montate pe miezul polilor a uxiliari. Bobinele se conectează
în serie cu infăș urarea indusului ;
 Sistemul de perii si portperii (periile calcă pe colector și asigură legătura circuitului indus al
rotorului, care este mobil, cu circuitul exterior, fix) ;
 Rotorul (indusul) reprezint ă armătura interioară, rotativă, de formă cilindrică . Acesta
cuprinde:
 Miezul feromagnetic este f ăcut din tole de o țel electrotehnic, laminate la rece, de 0,5mm
grosime, izolate î ntre ele (pentru a micș ora pierderile prin curenti turbionari). La periferia
exterioară (spre î ntrefier) a tolelor rotorice , sunt practicat e crestă turi deschise în care se
așează înfășurarea indusă . Indusul poate fi prevăzut cu canale axiale sau/ș i canale radiale (la
lungimi mai mari de 30 cm) de răcire. Tolele rotorice sunt î mpachetate pe ax sau butuc ;
 Înfășurarea indusă se execută din con ductor de cupru izolat; este o înfășurare repartizată;
capetele sunt legate la lamelele colectoare ;
 Colectorul este un redresor mecanic (transform ă mărimile electrice alternative în curent
continuu). Se execută din lamele trapezoidale de cupru, izolate între ele și față de butucul
colectorului cu micanit ă;
Pentru o înțelegere mai bună a principiului de funcționare a motoarelor de curent continuu cu perii,
se vor prezenta mai jos câteva noțiuni simple de magnetică și electromagnetică.

Magnetism ul
Pentru început, se cunoaște faptul că orice magnet are un pol nordic și un pol sudic . Dacă se
iau doi magneți în formă d e paralelipiped și se aliniază, aceștia vor fi atrași unul de celălalt dacă
polul nord este lângă polul sud al celuilalt. Dacă magn eții se vor alinia nord spre nord , sau sud spre
sud, se vor respinge reciproc . Se va lua în considerare un ansamblu de trei magne ți, așa cum se arată
în figura de mai jos . Magneții din stânga și din dreapta sunt fixați pe o anumită suprafață, iar
magnetul centr al este liber să se rotească în jurul centrului.

Fig. 2.4 .3. Magnetu l rotativ central rotindu -se până la atracția polilor opuși

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

23 Datorită atracției polilor opuși, magnetul central se va roti până c ând va fi aliniat ca în figura de mai
jos:

Fig. 2.4 .4. Magnetul central se va opune roti rii următoare

Deoarece magnetul are o greutate proprie, la un simplu impuls , s-ar depăși ușor forța de atracție a
acestuia și s-ar roti din nou pană se stabilizează.
Astfel, se pot schimba polii de nord și sud ai magnetului central și vom ajunge la situația prezentată
mai jos :

Fig. 2.4 .5. Inversarea polilor magnetului central și rotirea acestuia până la atracția cu polii opuși
Schimbând polii magnetului central, se va produce din nou rotație al acestuia si va ajunge în poz iția
descrisă de imaginea următoare :

Fig. 2.4 .6. Revenirea în poziția i nițială descrisă de imaginea 2.4 .4

Dacă se execut ă această schimbare a polilor de fiecare dată când m agnetul central ajunge în poziția
aliniată, ar continua să se întoarcă pentru tot deauna. Problema este cum să realizăm această mișcare
magnetică .

Electromagnetism ul
Un alt tip de magnet este electromagnetu l. În cea mai simplă formă, ace sta constă dintr -o
bară de fier, înfășurată într -o bobină de sârmă, ca în figura de mai jos:

Fig. 2.4.7. Reprezentarea unui electromagnet ca o bară de fier și înfășurarea de sârmă

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

24 În această formă, ansamblul bării cu bobinaj nu va face nimic. Totuși, dacă se va trece un curent
electric prin fir, în bara de fier se f ormează un câmp magnetic și ansamblu l devine un magnet.

Fig. 2.4 .8. Aplicarea curentului într -o direcție care produce magnet ism
Lucrul cu adevărat interesant pentru un electromagnet este acela că polaritatea acestuia (locația
polilor de nord și sud) depinde de direc ția fluxului curent. Dac ă curentul trece în di recția opusă,
polii electromagnetului vor fi inversaț i, așa c um se vede în figura de mai jos.
Acum sunt două probleme de rezo lvat: alimentarea electromagnetul ui rotativ cu curent,
fără ca firele să se răsucească și schimbarea direcț iei curentului la momentul potrivit. Ambele
probleme sunt rezolvate folosind două dispozitive: un comutator cu inel divizat și o pereche de perii
ca în imaginea de mai jos :

Fig. 2.4 .9. Schimbarea polarității electromagnetulu i în timpul rotirii, cu un com utator
Într-un motor real cu doi poli, polii sunt adesea cele două capete ale aceluiași magnet. Deși
motorul pare să conțină doi magneți separați, carcasa motorului de oțel le leagă împreună pentru a
acționa ca un singur magne t. Este ca și cum motorul a fost construit cu electromagnetul rotativ în
interiorul unei găuri din magnetul permanent.

Fig. 2.4 .10. Electrom agnetul rotativ în interiorul unei găuri din magnetul permanent
Motoarele practice reale au, de obicei, cel puțin o armătură cu trei sloturi ș i un comutator
cu trei segmente. Există totuși numai două perii. Motoarele cu tensiune mai mare și cele cu

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

25 randament superior au mai multe sloturi (un număr impar) și mai multe segmente pe comutator
(același număr cu sloturile) și mai multe perii (întotdea una un număr par).

2.5. Controlul motoarelor prin intermediului modulului cu driver
Driver -ul de motoare, la modul general, este un ansamblu de componente electronice cu care
putem controla sensul, turațiile motoarelor de curent continuu, motoarelor pas cu pas etc. Acesta are
și rol de amplificator de curenți mici. Funcția driver -ului de moto are este de a lua un semnal de
curent mic și de a -l transforma într -un semnal de curent mai mare care poate comanda un motor.

Caracteristicile tehnice ale modulului cu driver de motoare L298N
 Tensiune motoare: 5 – 35V;
 Tensiune circuite logice: 5V;
 Curent motoare: 2A (MAX);
 Curent logică : 36mA;
 Frecvență maximă pwm: 40kHz.

Prezentarea modului cu driver de motoare L298N
Pentru controlul motoarelor de curent continuu cu reductor, plasate pe robot, se va folosi un
driver de tipul L298N. Acest modul poat e fi utilizat cu motoare care se alimentează la o tensiune
între 5 și 35V, curent continuu. Pe placa driver -ului se găsește un regulator de tensiune de 5V ceea
ce înseam nă că, dacă tenisunea de alimentare este cuprinsă între 7 până la 12V, acesta va funcționa
la tensiunea nominală 5V. Pe lângă acest regulator, o altă componentă și poate cea mai importantă,
este puntea H (driver -ul) de care vom vorbi puțin mai jos. Analizâ ndu-se imaginea 2.5.1 se observă
utilitatea modulului prin faptul că beneficiază de un radiator destul de mare montat pe puntea H.
Acesta disipă o cantitate mare de căldură ceea ce ar fi dus în timp la degradarea punții si poate și a
celorlalte componente. În cele ce urmează, se vor nota pe o imaginea similară cu figura 2.5.1, pinii,
conectori și terminalele modulului și se vor explica .

Fig. 2.5 .1. Notarea pinilor, conectorilor și terminalelor modului cu driver L298N

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

26  1 și 2 reprezintă terminal ele motorul ui A;
 13 și 14 reprezintă terminal e motorului B;
 Jumper 12V – Dacă vom utiliza o tensiune mai mare de 12V va trebui scos. Acest lucru
permite alimentarea regulatorului de 5V la bord ;
 Alimentarea la 12V (terminalul 4) ;
 GND (trebuie sa fie comun p entru su rsa de alimentatare ș i pentru placa de dezvoltare
Arduino) (terminalul 5) ;
 Alimentarea la 5V (terminalul 6)
 7 și 12 sunt pinii de semnal PWM pentru motorul A, respectiv motorul B
 8 și 9 reprezintă pinii pentru direcția motorului A (pot lua valoarea High sa u Low în funcție
de cum dorim sensul)
 10 și 11 reprezintă pinii pentru direcț ia motor ului B (pot lua valoarea High sau Low în
funcție de cum dorim sensul)

Puntea H (driver -ul)
O punte H (eng. H Bridge) este un circuit electronic ce permite aplicarea unei tensiuni pe o
sarcină în orice sens. Aceste circuite sunt adesea folosite în robotică și alte aplicații pentru a permite
motoarelor de cure nt continuu să ruleze înainte sau înapoi. Punțile H sunt di sponibile ca circuite
integrate sau pot fi construite din componente discrete, tranzistoare bipolare și logică de comandă
sau tranzistoare MOS. Puntea H are numele derivat de la modul obișnuit de desenare a circuitului.
Aceasta este singura cale de tip ,,solid state ” de a comanda motorul în ambele direcții. [9]

Fig. 2.5.2 . Schema tipică a punții H [9]
Atunci când întrerupătoarele S1 și S4 (în conformitate cu figura) sunt închise și S2 și S3 sunt
deschise o tensiune pozitivă va fi aplicată la nivelul motorului. Prin deschiderea întrerupătoarelor S1
și S4 și înc hiderea întrerupătoarelor S2 și S3, această tensiune este inversat ă, astfel încât să permită
funcționarea inversă a motorului. Folosind nomenclatura de mai sus, întrerupătoarele S1 și S2 nu
trebuie să fie închise în același timp, deoarece acest lucru ar pr ovoca un scurt -circuit la sursa de
tensiune (Vin) și motorul nu se va roti în niciun sens. Același lucru se aplică și întrerupătoarelor S3
și S4. [9]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

27

Fig. 2.5 .3. Sensul de rotație a motorului în funcție de închiderea contactoarelor [9]
În figura de mai sus avem prezentate cele două cazuri de rotație a motorului la aplicarea unei
tensiuni.
În primul caz, dacă contactele A1 și A2 sunt închise, fluxul de curent va învârti motorul în sensul
acelor de ceasornic.
În cel de -al doilea caz, daca contactele B2 și B1 sunt închise, fluxul de curent va învârti motorul în
inversul acelor de ceasornic.

Fig. 2.5.4 . Punte H cu tranzistoare MOS și circulația curenților în punte [9]

În imaginea de mai sus, este reprezentată o punte H cu tranzistoare MOS. La acest gen d e
tranzistoare, la a plicarea unei tensiuni pe poartă (grilă), tranzistorul MOS va controla curentul care
va trece de la sursă la drenă. Făcând o paralelă între tranzistoarele MOS si cele bipolare, MOSFET –
urile se comandă în tensiune, iar tranzistoarele bip olare se comandă în curent. La tranzistoarele
MOS curentul de drenă este datorat unui singur tip de purtători, iar la cele bipolare conducția este

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

28 asigurată de ambele tipuri de purtători. Ca și la tranzistoarele bipolare și tranzistorul MOS are trei
regiun i de funcționare : regiunea de blocare, regiunea liniar ă, regiunea de saturație. Tranzistoarele
MOS fol osite în schemele din figura 2.5.5 sunt cu canal de tip N. Canalul de tip N reprezintă
construcția sa din material semiconductor de tip N. O reprezentare a unui tranzistor MOS cu canal N
se va evidenția în schema de mai jos :

Fig. 2.5.5 . Simbolurile electronice ale tranzistoarelor MOS cu canal inițial
Celălalt tip de construcție a unei punți H este ce a cu tranzistoare bipola re și porți logice cum
de altfe l este și în caz ul driver -ului folosit în lucrare .

Fig. 2.5.6 . Modulul cu driver L298N , cu tranzistoare bipolare și porți logice

Semnalul PWM (Pulse Width Modulation)
Driver -ul L298N dispune de 2 pini, respectiv pinul 7 (motor stânga) și pinul 12 (mot or
dreapta) (vezi figura 2.5 .2) pentru controlul motoarelor cu semnal PWM.
PWM ( Pulse Width Modulation) este o tehnică folosită pentru a varia în mod controlat
tensiunea dată unui dispozitiv electronic. Această metodă schimbă foarte rapid tensiunea oferit ă
dispozitivului respectiv din ON în OFF și invers (treceri rapide din HIGH (5V de exemplu) în LOW

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

29 (0V)). Perioada de timp corespunzătoare valorii ON dintr -un ciclu ON -OFF se numește factor de
umplere ( duty cycle ) și reprezintă, în medie, ce tensiune va pr imi dispozitivul electronic. Astfel, se
pot controla circuite analogice din domeniul digital. Practic, asta înseamnă că un LED acționat
astfel , se va putea aprinde/stinge gradual, iar în cazul unui motor (cazul de față) acesta se va învârti
mai repede sau mai încet. În cazul unui motor de curent continuu căruia i se aplică un semnal PWM
cu factor de umplere de 0%, viteza de rotație a acestuia va fi egală cu 0 rpm. Un factor de umplere
de 100% va duce motorul la o turație ma ximă .
Semnalul PWM este caracteri zat de trei factori principali aceștia fiind : duty cycle (factor de
umplere), frecvența semnalului și amplitudinea lui.
Factorul de umplere se exprimă în procente și reprezintă cât la sută din perioada unui
semnal, acesta va fi pe nivelul ON. În figura de mai jos se pot observa semnale PWM cu factori de
umplere diferiți. Astfel, se poate deduce foarte ușor formula pentru a obține valoarea factorului de
umplere notată cu D:

Astfel, tensiunea medie care ajunge la disp ozitiv este dată de relația: D ∙ Vcc.

Fig. 2.5.7 . Semnal PWM cu diferiți fact ori de umplere ( ecran osciloscop)
Modularea folosește variația factorului de umplere a unei forme de undă dreptunghiulară
pentru a genera la ieșire o tensiune analogică. Considerând o formă de undă dreptunghiulară f(t) cu
o valoare minimă ymin și o valoare maximă ymax și factorul de umplere D (ca în figura 2.5.9),
valoarea medie a formei de undă e dată de relația:

Cum f(t) este o formă de undă dreptunghiulară , valoarea sa maximă se atinge pentru 0 < t < D∙T.
Multe circuite digitale pot genera semnal e PWM. Majoritatea microcontroll er-elor, printre
care și microcontroller -ul Atmega328 (integrat pe placa de dezvoltare Arduino Uno R3) oferă
această facilitate, pe care o implementează folosind un numărător pe 8 biți care este incrementat
periodic (conectat direct sau indirect la o unitate de ceas) și care este resetat la sfârșitul fiecărei

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

30 perioade a PWM -ului. Când valoarea numărătorului este mai mare decât valoarea de referință,
ieșirea PWM (output -ul) trece din starea HIGH în starea LOW (sau invers).
Având un numărător pe 8 biți care este incrementat periodic, unui factor de umplere de 100%
(maxim) îi va corespunde valoarea 255, deoarece 28 va da 256, dar numărătoarea începând de la 0 se
va merge până la 255. În graficu l de mai jos, liniile verzi reprezintă o perioadă de timp obișnuită.
Această durată sau perioadă este inversă a frecvenței PWM. Cu alte cuvinte, cu frecvența PWM a
plăcii Arduino la aproximativ 500Hz, liniile verzi ar măsura câte 2 milisecunde fiecare. Un apel al
funcției analogWrite() este pe o scară de la 0 la 255, astfel încât analogWrite(255) solicită un ciclu
de funcționare 100% (întotdeauna activ), iar analogWrite (127) este un ciclu de funcționare de 50% ,
de exemplu. În graficul de mai jos se vor rep rezenta formele semnalelor PWM raportate la câteva
apeluri ale funcției analogWrite() la diverse valori din cele 255 disponibile.

Fig. 2.5.8 . Grafic prezentare a diferitlor valori ale dut y cycle -ului la apelul analogWrite()

Conexiunea modului cu driver L298N l a pinii Arduino , motoare și baterie de 9V
Pentru a controla motoarele de curent continuu cu driver -ul L298N ne asigurăm că pinii EnA
și EnB nu sunt conectați la 5V. Pe aceștia îi vom conecta la pinii PWM 9 și 10 a plăcii de dezvoltare
Arduino pentr u a controla turația motoarelor. Pentru controlul sensului motoarelor de a merge
înainte se vor face următoarele setări :
 pentru motorul din st ânga: pinul digital 2 (D2) se va lega la terminalul IN1 de pe modul și îl
vom seta pe LOW, iar pinul digital 3 (D3 ) se va lega la terminalul IN2 și il vom seta pe
HIGH;
 pentru motorul din dreapta: pinul digital 4 (D4) se va lega la terminalul IN3 de pe modul și îl
vom seta pe HIGH, iar pinul digital 5 (D5) se va lega la terminalul IN4 și il vom seta pe
LOW;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

31 Dacă dorim ca sensul motoarelor să fie invers celui prezentat mai sus, adică motoarele să fie
comandate astfel încât robotul să meargă cu spatel e, nu avem decât să inversăm stă rile pinilor.
De asemenea, GND -ul driver -ului trebuie conectat cu GND -ul plăcuței Arduino pentru a funcționa.
Borna pozitivă a bateriei de 9V se va lega la terminalul 4 (fezi figura 2.5.2 ) deoarece pragul de 9V
depăseste p e cel de 5V și astfel dacă nu vom lega la terminalul de 12V, modulul se va arde. Borna
negativă se va lega la terminalul 5 ( GND) al modulului.
Fiind un montaj care implică un total de cinci componente și module, va trebui ca înaintea pornirii
sistemului, sau a alimentării acestuia, să verificăm de două ori fiecare legatură în parte deoarece se
pot face greșeli care conduc ori l a defectarea unuia dintre aceste componente sau module, ori la
nefuncționarea sistemului cum ar trebui să fie normal.
În imaginea de mai jos se v a ilustra un exemplu de conexiune între cele cinci componente și
module , similar cu montajul făcut pe platform a robotică.

Fig. 2.5.9 . Cone xiunea modulului cu driver la pinii plă cii Arduino , motoare și baterie de 9V

2.6. Detecția liniei negre cu modulul senzor infraroșu
Tehnologia infraroșu abordează o mare varietate de aplicații fără fir. Z onele princi pale în
care operează sau se folosește tehnologia infraroș u sunt senzorii și telecomenzile. În proiectul
acesta, senzo rii infraroșu vor fi folosiți pentru depistarea liniei negre pe suprafața pistei .
În spectrul electromagnetic, porțiunea de infraroșu este împărțit ă în trei regiuni:
– regiunea infrarosu apropiată ;
– regiunea infrarosu de mijloc ;
– regiunea infrarosu îndepărtată ;
Lungimile de undă ale acestor regiuni și aplicațiile lor sunt prezentate mai jos:
– regiunea infrarosu apropiată: 700nm până la 1400nm – Senzori IR, fibră optică ;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

32 – regiunea infrarosu de mijloc: 140 0nm până la 3000nm – Senzori de căldura/termici ;
– regiunea inf rarosu îndepărtată: 3000nm până la 1mm – Imagistică termică ;
Intervalul de frecvență al undei infraroșie este mai mare decât cel al mi croundelor și al undelor
luminii cu vizibilitate redusă.
Comunicarea wireless optică se realizează cu transmisie de date IR pentru aplicații cu rază
scurtă de acțiune.
Un senzor infraroșu emite și/ sau detectează radiații infraroșii pentru a -și identifica î mprejurimile.
Funcționarea oricărui senzor infraroșu are la bază trei legi: Legea de Radiație Planck, Legea lui
Stefa n-Boltzmann și Legea lui Wien.

IR Transmițător
Dispozitivul de transmisie infraroșu este o diodă luminiscentă (LED) care emite radiații
infraroșii. Prin urmare, ele sunt numite led-uri IR. Chiar dacă un led IR arată ca un led normal,
radiația emisă de acesta este invizibilă pentru ochiul uman. Imaginea unui led tipic în infraroșu este
prezentată mai jos.

Fig.2.6.1. Dioda lumini scentă (LED ) care emite unde infraroșii (Emit or IR)
Există diferite tipuri de transmițătoare în infraroșu, în funcție de lungimile de undă, puterea de ieșire
și timpul de răspuns.
Un emițător cu infraroșu simplu poa te fi construit utilizând un led infraroșu, un rezis tor limitator de
curent și o sursă de alimentare. S chema unui transmițător tipic infraroșu se va reprezenta în figura
mai jos.

Fig. 2.6.2. Schema unui circuit e mițător tipic IR

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

33 Când funcționează la o sursă de 5V, transmițătorul IR consumă aproximativ 3 p ână la 5 mA de
curent. Dispozitivele de transmisie în infraroșu pot fi modulate pentru a produce o anumită
frecvență de lumină infraroșie. Modularea cea mai frecvent utilizată este modularea OOK (ON –
OFF – KEYING).

IR Receptor
Receptoarele cu raze infra roșii sunt, de asemenea, numite senzori infraroșii pe măsură ce
detectează radiațiile de la un emițător IR. Receptoarele IR sunt sub formă de fotodiode și
fototranzistoare. Fotodiodele infraroșu diferă de fotodiodele normale deoarece detectează numai
radia țiile infraroșii. Imaginea unui receptor tipic IR sau a unei fotodiode IR este prezentată mai jos.

Fig. 2.6.3. Fotodiodă infraroșu (Receptor IR)

Există diferite tipuri de receptoare IR pe baza lungimii de undă, a tensiunii, etc. Când se utilizează
într-o combinație de transmițător -receptor în infraroșu, lungimea de undă a receptorului trebuie să se
potrivească cu cea a emițătorului.
Un circuit receptor tipic infraroșu care utilizează un fototranzistor este prezentat mai jos.

Fig. 2.6.4. Schema unui ci rcuit receptor tipic infraroșu

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

34 Schema de mai sus se compune dintr -un fototranzistor IR, o diodă, un MO SFET, un
potențiometru și un led IR. Când fototranzistorul recepționează ori ce radiație infraroșie, tensiunea
trece prin el și MOSFET -ul se deschide. Aceasta, la rândul său, permite sa treacă curentul și
luminează led -ul care acționează ca o sarcină. Potențiometrul este utilizat pentru a controla
sensibilitatea fototranzistorului.

Principiul de funcționare
Principiul unui senzor IR care funcționează ca senzor de detectare a obiectului poate fi
explicat utilizând următoarea figură. Un senz or IR este alcătuit dintr -un led IR și o fotodiodă IR.
Împreună ele sunt numite Foto – Cuplor sau Opto – Cuplor .

Fig. 2.6.5. Schemă de principiu pentru emisia -recepția undelor IR

Un circuit tipic IR de detectare este prezentat mai jos.

Fig. 2.6.6. Circuit tipic IR de emite re-receptie a undelor IR

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

35 Schema se compune dintr -un led IR, o fotodiodă, un potențiometru, un amplific ator
operațional și un led normal. Led -ul IR emite lumină infraroșie. Fotodioda detectează lumina
infraroșie. Amplificatorul operațional este folosit ca un comparator de tensiune. Potențiometrul este
utilizat pentru calibrarea ieșirii senzorului în funcție de cerință.
Când lumina emisă de led -ul IR se află pe fotodiodă , după ce a întâlnit un obiect,
rezistența fotodiodei scade de la o valoare mare la o valoare mică. Una dintre intrările
amplificatorului operațional este la valoarea de prag stabilită de pot ențiometru. Cealaltă intrare
pentru amplificatorul operațional este din rezistorul de serie al fotodiodei. Atunci când radiația
incidentă se află mai mult pe fotodiodă, căderea de tensiune pe rezistența seriei va fi ridicată. În
amplificator, atât tensiune a de prag, cât și tensiunea din rezistorul de serie sunt comparate. În cazul
în care tensiunea din rezistorului serie la fotodiodă este mai mare decât cea a tensiunii de prag,
ieșirea amplificatorului este ridicată. Deoarece ieșirea amplifica torului este c onectată la un led ,
acesta se aprinde. Tensiunea de prag poate fi reglată prin ajustarea potențiometrului în funcție de
condițiile de mediu. Poziționarea led -ului IR și a receptorului IR este un f actor important. Atunci
când led -ul IR este ținut direct în fața receptorului IR, această configurație se numește ,,Incident
Direct ”. În acest caz, aproape toată radiația de la led -ul IR va cădea pe receptorul IR. Prin urmare,
există o comunicație de linie între transmițătorul infraroșu și receptor. Dacă un obiect cade în
această linie, acesta împiedică radiația să ajungă la receptor, fie prin reflectarea radiației, fie prin
absorbția radiației.

Distingerea culorilor alb și negru
Este universal faptul că, culoarea neagră absoarbe întregul incident de radiație pe e a și
culoarea albă reflectă întregul incident de radiație de pe ea. Pe baza acestui principiu, se poate face
cea de -a doua poziționare a cuplului senzorilor. Led-ul IR și fotodioda sunt plasate unul lângă
celălalt. Atunci când transmițătorul IR emite radia ții infraroșii, deoarece nu există o linie directă de
contact între emițător și receptor, radiația emisă trebuie să reflecte înapoi la fotodiodă după ce a
lovit un obiect. Suprafața obiectului poate fi împărțită în două tipuri: suprafața reflectorizantă și
suprafața nereflectorizantă. Dacă suprafața obiectului este reflexivă, adică este albă sau altă culoare
deschisă, cea mai mare parte a radiației incidentă de pe ea va fi reflectată înapoi și ajunge la
fotodiodă. În funcție de intensitatea radiației reflec tate înapoi, curentul trece prin fotodiodă. Dacă
suprafața obiectului nu are caracter reflectorizant, adică este negru sau altă culoare închisă, absoarbe
aproape toate radiațiile care apar pe acesta. Deoarece nu există nici o radiație reflectată, nu există
nici un incident de radiație pe fotodiodă, iar rezistența fotodiode i rămâne mai mare, permițând
curentul ui să nu circule. Această situație este similară faptului că nu există obiect deloc. O imagine
de ansamblu cu reprezentarea undelor într -un caz cu supr afață reflectorizantă și un caz cu suprafață
nereflectorizantă va fi descris de fig. 2.6.8.
Poziționarea și cuplarea em ițătorului și a receptorului IR este foarte importantă. Atât
emițătorul, cât și receptorul trebuie să fie plasate la un anumit unghi, as tfel încât detectarea unui

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

36 obiect să se întâmple în mod corespunzător. Acest unghi reprezintă directivitatea senzorului care
este +/ – 45 de grade.

Fig. 2.6.7 . Reprezentarea undelor IR în cazul celor două culori folosite pe pistă
Pentru a evita reflexiile obiectelor din jur, altele decât obiectul, atât transmițătorul IR, cât și
receptorul IR trebuie să fie închise corespunzător. În general, incinta este realizată din plastic și este
vopsită în culoarea neagră.

Caracteristicile tehnice ale senzorului
 Tensi unea de alimentare: 3 – 5V;
 Distan ța sesizare obstacol : 2cm – 30cm;
 Unghi de observare obstacol: 35°;
 Ieșirea este digitală ;
 Comparator LM393 ;
 Tensiune de referință reglabilă ;

Fig. 2.6.8 . Prezentarea fiecarui dispozitiv electronic de pe modulul senzor infraroșu

Conexiunea modului senzor infraroșu la pinii plăcii Arduino UNO R3
Modulul poate afișa pe monitorul serial un mesaj atunci când detectează un obstacol. Odată
cu mesajul afirmativ, puteți o bserva pe plăcuță aprinderea led -ului de semnalizare pentr u obstacole.
Trebuie să ajustați potențiometrul pentru a obține comportamentul dorit. Acest modul se poate folosi
pentru a construi un robot ce ocolește obstacole sau unul de tip line follower, ce urmărește un traseu

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

37 marcat cu o linie neagră pe o suprafață albă, sau invers. Conexiunea modului IR la o placuță de
dezvoltare Arduino UNO R3 va fi evidențiată în imaginea de mai jos.

Fig. 2.6.9 . Conexiunea modului senzor infraroșu la pinii plă cii de dezvoltare Arduino

2.7. Detecția obstacolelor cu senzorul ult rasonic
Pentru detecția obstacolelor ce urmează să fie detectate pe parcursul traseului marcat cu linie
neagră, s -a ales un senzor ultrasonic care va recepționa diferite valori în funcție de unde se află
obiectul/obstacolul în momentul respectiv , fața de robot. Modelul ales este un senzor cu ultrasunete
(HC-SR04 ), care are un emițător și un receptor împreună cu patru pini . Senzorul cu ultrasunete
utilizează un sonar pentru determinarea distanței până la obiect. Acesta oferă o excelentă
determinare a distan ței, fără a fi nevoie de contact, cu o precizie ridicată și citire stabilă a valorilor.
Fiind ușor de folosit, îl face perfect pentru utilizarea în detectiei obiectelor/obstacolelor. El poate
detecta obiecte aflate la distanțe între 2 și 400 de centimetri și nu este afectat de razele soarelui sau
suprafețe lucioase cum sunt alți senzori, d ar, în schimb, acesta detectează mai greu materialele moi
sau cu forme, î n relief, mai complicate.

Fig. 2.7.1. Senzor cu ultrasunete HC -SR04

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

38 Caracteristicile tehnice ale senzorului
 Tensiunea de operare: DC 5V;
 Curentul static: <2mA;
 Curentul de func ționare : 15mA;
 Unghiul de funcționare: <15 °;
 Distan ța de măsurare : 2 – 400 cm;
 Rezoluția: 0,3 cm;
 Unghiul de măsurare: 30 °;
 Lățimea pulsului de intrare pe Trigger: 10uS;
 Dimens iuni: 45mm x 20mm x 15mm ;

Modul de funcționare al senzorului
Senzorul emite un ultrasunet la o frecvență de 40 KHz care circulă prin aer și dacă un obiect,
sau un obstacol se află în calea sa, îl va reflecta înapoi către modulul de r ecepție al senzorulu i.
Cunoscând timpul de parcurgere a ultrasunetului și viteza sunetului putem calcula distanța la care se
află obiectul.

Fig. 2.7.2. Modul de transmitere a sunetului de la senzor la obiect și invers
Senzorul cu ultrasunete HC -SR04 are patru pini, GND, VCC , Trig și Echo. Pinii GND și
VCC sunt conectați la împământa rea și la alimentarea cu 5V ai microcontrol ler-ului, în cazul nostru
integratul de pe plăcuța Arduino, iar pini Trig și Echo sunt conectați la pinii digitali de intrare -ieșire
ai plăcuței, simila r ca în figura de mai jos :

Fig. 2.7.3. Conexiunea senzorului HC -SR04 la pinii plă cii de dezvoltare Arduino UNO

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

39 Pentru a genera un ultrasunet trebuie ca pinul Trig să primească un impuls de 5V timp de 10
microsecunde. A cest lucru va iniția senzorul care v a trimite opt trenuri de impulsuri ultrasonice la o
frecvență de 40 kHz care se vor deplasa cu viteza sunetului . După această fază, se așteaptă ca aceste
impulsuri să fie reflectate de către obiect. Când senzorul va detecta semnalul ultrasonic reflectat de
la obiect, va seta pinul Echo pe 5V , iar întârzierea de la momentul când a fost transmis semnalul va
fi proporțională cu dublul distanței de la senzor până la obiect .

Fig. 2.7.4. Transmiterea impulsului de la pinul Trig pănă la recepția de către pinul Echo
Spre exemplu, dacă un obiect se află la o distanță de 10 cm depărtare de senzor, și viteza
sunetului este de 340 m/s sau 0,034 cm/μs, a cest lucru înseamnă că undei ultrasonice îi va trebui
aproximativ 294 μs să ajungă până la obiect, dar timpul pe care îl va primi de la pinul Echo va fi
dublu deoarece unda trebuie să se și întoarcă de la obiect la senzor. Așadar timpul primit de la
senzorul cu ultrasunete trebuie împărțit la doi pentru a obține distanța din tre senzor și obiect .

Fig. 2.7.5. Calculul distan ței pentru senzorul HC -SR04
După cum a fo st prezentat senzorul, acesta va ajuta la depistarea obstacolelor de pe suprafața
pistei pe care va rula robotul, dar și de precizare exactă la ce distanță se va afla acel obstacol față de
robotul autonom. În capitolul 4 se va prezenta cum va fi setat software acest senzor și la ce distanță
față de obstacol să se oprească când îl detectează.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

40 Capitolul 3 . Controlul robotului cu ajutorul regulatorului PID

3.1. Prezentarea generală a regulatoarelor
La nivel teoretic, regulatorul, este elementul de automatizare care primește la intrarea lui
semnalul de abatere e(t) de la elementul de comparație și generează la ieșire semnalul de comandă
u(t), pe care îl transmite elementului de execuție.

Fig. 3.1.1. Schema bloc a unui sistem [2]
Semnalele din schema bloc au următoarele semnificații :
r(t) – mărime (semnal) de referință sau mărime prescrisă;
e(t) – mărime (semnal) de eroare sau abatere de reglare;
u(t) – mărimea de ieșire a regulatorului, mărime (semnal) de comandă ;
m(t) – mărime (semnal) de execuție;
y(t) – mărime (semnal) de ieșire sau mărime reglată;
yr(t) – mărime de reacție caracterizată prin faptul că are aceeași natură și gamă de variație ca și
mărimea de referință;
Sumatorul, care face parte, de regulă, din structura regulatorului, realizează comparația
semnalului de referință, r(t) (mărime de intrare pentru sistemul cu structură închisă) cu mărimea de
reacție, yr(t). Elementul de execuție (EE), instalația tehnologică (IT) si traductorul (T) constituie
împre ună procesul condus (PC) – alternativ denumit parte fixată (PF) a sistemului de reglare
automată (SRA), care se presupune a fi cunoscut(ă) în etapa sintezei sistemului de reglare.
La nivel practic regulatorul este aparatul care comandă elementul de execuț ie să modifice
parametrii de desfășurare ai procesului automatizat. Aparatul poate îngloba mai multe elemente de
automatizare, de ex : interfața cu utilizatorul, elementul de comparație și regulatorul propriu -zis. [2]

Noțiunea de semnal
Semnalele sunt mări mi fizice, existente la intrarea, ieșirea sau în interiorul elementelor de
automatizare și a căror măsurare furnizează informații. Există semnale utile, care introduc efecte
dorite în comportarea unui element (de ex. tensiunea de intrare într -un amplificat or sau temperatura

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

41 unui lichid) și semnalele perturbatoare (perturbații) cu efecte negative asupra SRA (sistem elor cu
reglare automată). Se mnalele, de altfel, sunt de două tipuri : semnale contin ue și semnale
eșantionate.

Semnalul continuu
Semnalul continu u este o mărime dependentă continu ă de timp. Acest tip de semnal poate
avea o co mportare deterministă, adic ă poate fi reprezentat matematic, printr -o funcție continuă în
raport cu timpul, sau poate avea o comportare nedeterministă.

Fig. 3.1.2. Exemplu de semnal continuu (variația valorii semnalului s în funcție de timpul t) [5]

Semnalul eșantionat
Semnalul eșsantionat este o mărime formată dintr -o succesiune de impulsuri, care rezultă din
eșantionarea unui semnal continuu, pe o durată ∆t→0 și la interva le de timp T, constante. Prin
eșantionare se întelge operația de transformare a unui semnal continuu, variabil s(t), într -un semnal
discret în timp, format dintr -o succesiune de impulsuri foarte scurte, numite eșantioane, ale căror
amplitudini sunt egale c u valoarea semnalului din momentul de eșantionare.

Fig. 3.1.3. Exemplu de s emnal eșantionat (semnal compus din eșantioane la intervale egale) [5]
Semnale frecvent utilizate în sistemele cu reglare automată sunt :

Fig. 3.1.4. Semnale utizilate frecvent î n sistemele cu reglare automat ă [5]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

42 Semnalele reprezentate mai sus, sunt semnale de intrare, de aici rezultând notarea semnalului cu
litera i.
Regulatorul stabilește, în baza algoritmului propriu de reglare a procesului, stategia de
acțiune a elementului d e execuție, prin comanda aplicată acestuia. Strategia de acțiune este în
funcție de abaterea e ce apare în sistem, între valoarea impusă r (mărimea de intrare) și cea reală y
(mărimea de ieșire), măsurată direct la ieșirea din proces. Această strategie con stă în elaborarea, de
către regulator, a unui semnal de comandă u, emis către elementul de execuție, în vederea anulării
abaterii e (adică, în cazul real aducerea ei în ,, intervalul de valori acceptate”). Algoritmul de reglare,
conținut sau elaborat de reg ulator, este legea de dependență impusă, între mărimea de intrare în
regulator și mărimea de ieșire din acesta, care sunt variabile în timp. [5]
În practică este necesar a se stabili:
– legile după care trebuie prelucrată abaterea (de ex. de tip P, PI, sau PID);
– parametrii de reglare ai regulatorului ( KR, TI, TD);

Clasificarea regulatoarelor
1. După depend ența între mărimea de comandă, u și abaterea aplicată la intrare, e există:
1. Regulatoare liniare;
2. Regulatoare neliare (cu acțiune bipozițională – ,,tot-nimic” sau tripozi țională – ,,tot-puțin
nimic ”);
2. După tipul acțiunii:
1. Regulatoare cu acțiune continua (semnalul u este continuu în timp);
2. Regulatoare cu ac țiune discretă (semnalul u este discontinuu, de ti p ieșire pe releu sau
numeric);
Cele mai r ăspândite regulatoare, în practică, sunt regulatoarele electronice cu acțiune continuă sau
discretă, liniare, de tip proporțional ( P), proporțional -integrativ ( PI), proporțional -derivativ ( PD) și
proporțional -integrativ -derivativ ( PID).
Pentru proc ese lente, tipice proceselor desfășurate în instalațiile din construcții, se impune
utilizarea unor regulatoare continue, liniare sau a regulatoarelor bipoziționale și tripoziționale.

3.2. Regulatorul PID
Operații fundamentale
Un regulator pro porțional -integrativ -derivativ (regulator PID) este un mecanism de control
cu buclă de reacție, utilizat în mod obișnuit, în sistemele de control industrial. Un regulator PID
calculează continuu o valoare de eroare e(t) ca diferență între o valoare de refe rință dorită și o
variabilă de proces măsurată și va aplica o corecție bazată pe termeni proporționali, integraț i și
derivați (uneori denumiți P, I și respectiv D). Numele lor vine chiar de la tipul de regulator.
Regulatorul încearcă să minimizeze eroarea în timp prin ajustarea unei variabile de control u(t), cum

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

43 ar fi de ex. poziția unui robot autonom mobil care trebuie să își mențină traiectoria pe o linie neagră ,
de altfel, cazul pe care îl dezbatem în această lucrare. Ecuația generală a regulatorului PI D este :

unde Kp, Ki și Kd sunt coeficienții de amplificare a i componentelor proporționa le, integrative si
derivative ale regulatorului.
Componenta proporțională P, reprezintă valorile actuale ale erorii. De exemplu, dacă
eroarea este mare și pozitivă, i eșirea de control va fi de asemenea mare și pozitivă.
Componenta integrativă I, reprezintă valorile trecute ale erorii. De exemplu, dacă ieșirea
curentă nu este suficient de puternică, integrarea erorii se va acumula în timp și regulatorul va
răspunde pri n aplicarea unei acțiuni mai puternice.
Componenta derivativă D, reprezintă posibilele tendințe viitoare ale erorii, pe baza ratei
actuale de schimbare.
Deoarece regulatorul PID se bazează numai pe variabila procesului măsurat, nu pe
cunoașterea procesul ui de bază, îl face să fie larg aplicabil. Prin reglarea celor trei parametri ai
modelului, un regulator PID poate face față cerințelor de proces specifice. Răspunsul regulatorului
poate fi descris în termenii reacției sale la o eroare, gradul în care sist emul depășește o valoare de
referință și gradul oricărei oscilații a sistemului. Utilizarea algoritmului PID nu garantează un
control optim al sistemului sau chiar stabilitatea acestuia.
Unele aplicații pot necesita utilizarea unuia sau a doi termeni pent ru a furniza controlul
corespunzător al sistemului. Acest lucru se realizează prin setarea celorlalți parametrii la zero. Un
regulator PID este numit regulator PI, PD, P sau I în absența acțiunilor de control respective.
Regulatoarele PI sunt destul de obi șnuite, deoarece acțiunea derivativă este sensibilă la zgomotul
măsurătorilor și aduce instabilitate în sistem, în timp ce absența unei compon ente integrative poate
împiedică sistemul să atingă valoarea țintă.

Fig. 3.2.1. Schema de reglare a unui proces cu regulator PID

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

44
Bazele teoretice ale regulatorului PID
Schema de control PID este denumită după cei trei termeni de corecție, a căror sumă
reprezintă variabila manipulată. Termenii proporționali, integrativi și derivativi sunt însumați pentru
a calcul a ieșirea regulatorului PID. Definind u(t) ieșirea regulatorului, forma acesteia pentru
regulatorul PID va fi :

unde :
– coeficientul de amplificare a părții proporționale;
– coeficientul de amplificare a părții integrative;
– coeficientul de amplificare a părții derivative;
e(t)
= poziția dorită – poziția măsurată;
t – timpul sau momentul instantaneu (prezentul);
τ – variabila de integrare (ia valori de la 0 la t care este timpul prezent);

Termenul pro porțional (P)
Termenul proporțional produce o valoare de ieșire care este proporțională cu valoarea
curentă de eroare. Răspunsul proporțional poate fi ajustat prin înmulțirea erorii cu o constantă Kp,
numită constantă a câștigului proporțional.
Termenul p roporțional este dat de următoarea formulă:

Un câștig proporțional mare are ca rezultat o schimbare mare în ieșire pentru o anumită
modificare a erorii. Dacă câștigul proporțional este prea mare, sistemul poate deveni instabil. În
schimb, un câștig mic are ca rezultat un răspuns scăzut al sistemului la o eroare mare de intrare și un
regulator mai puțin receptiv sau mai puțin sensibil. Dacă câștigul proporțional este prea mic,
acțiunea de control poate fi prea mică atunci când răspundeți la perturbațiile sistemului. Teoria
reglării și practica industrială indică faptul că termenul proporțional ar trebui să contribuie cu cea
mai mare parte a variației de ieșire.

Termenul integrativ (I)
Contribuția din termenul integrativ este proporțională atât cu amploar ea erorii, cât și cu
durata erorii. Integrativul într -un regulatorul PID este suma erorii instantanee în timp și dă decalajul
acumulat care trebuia să fie corectat anterior. Eroarea acumulată este apoi înmulțită cu câștigul
integrativ ( Ki) și adăugată la i eșirea regulatorului.
Termenul integral este dat de următoarea formulă:

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

45

Termenul integrat iv accelerează mișcarea procesului către valoarea de referință și elimină eroarea
staționară rezi duală care apare cu un regulator proporțional pur. Cu toate acestea, deoarece termenul
integrat iv răspunde erorilor acumulate din trecut, poate cauza depășirea valorii de referință a valorii
actuale (vezi secțiunea privind reglarea buclă).

Termenul derivativ (D)
Derivata erorii procesului se calculează prin determinarea pantei erorii în timp și
înmulțirea acestei rate de schimbare cu câștigul derivat Kd. Amplitudinea contribuției termenului
derivativ la acțiunea globală de control este denumită câștigul derivat, Kd.
Termenul derivat este dat de următoarea formulă:

Acțiu nea derivată prezice comportamentul sistemului și astfel, îmbunătățește timpul de stabilizare și
stabilitatea sistemului. Un derivat ideal nu este cauzal, astfel î ncât implementările regulatoare lor
PID includ o filtrare suplimentară cu trecere redusă pentr u termenul derivativ pentru a limita
câștigul și zgomotul de înaltă frecvență. Acțiunea derivativă este rareori utilizată în practică cu o
estimare în numai 25% dintre regulatoarele implementate datorită impactului său variabil asupra
stabilității sistemul ui în aplicațiile din lumea reală. [4] [10]

Stabilitatea
Dacă parametrii regulatorului PID (câștigurile termenilor proporționali, integrativi și
derivativi) sunt aleși incorect, intrarea controlată a procesului poate fi instabilă, adică ieșirea
deviază, cu sau fără oscilație și este limitată numai de saturație sau rupere mecanică. Instabilitatea
este cauzată de un câștig în exces, în special în prezența unui decalaj semnificativ.
În general, este necesară stabilizarea răspunsului și procesul nu trebuie s ă oscileze pentru
nici o combinație a condițiilor de proces și a valorilor de referință, deși uneori stabilitatea marginală
(oscilația limitată) este acceptabilă sau dorită.
Matematic, originea instabilității poate fi văzută în domeniul Laplace. Funcția de transfer totală a
buclei de reacție este:

unde:
– funcția de transfer a regulatorului PID
– funcția de transfer a procesului

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

46 Sistemul se numește instabil în cazul în c are funcția de transfer în buclă închisă diferă pentru unel e
valori . Acest lucru se întâmplă pentru situațiile în care K(s) ∙G(s) = -1. În mod obișnuit, acest lucru
se întâmplă atunci când |K (s) ∙G (s)| = 1 cu o schimbare de fază de 180 de grade. Stabilitatea este
garantată când K(s) ∙G(s) < 1 pentru frecvențele car e suferă schimbări de fază înalte. Un formalism
mai general al acestui efect este cunoscut sub numele de criteriul stabilității Nyquist. [10]

Comportamentul optim
Comportamentul optim asupra modificării procesului sau a schimbării valorii de referință,
variază în funcție de aplicație.
Două cerințe de bază sunt reglementarea (respingerea perturbațiilor, rămânând la o anumită valoare
de setare) și urmărirea comenzilor (implementarea modificărilor punctului de referință), acestea
referindu -se la cât de bine variabila controlată urmărește valoarea dorită. Criteriile specifice pentru
urmărirea comenzilor includ timpul de c reștere și timpul de stabilire . Unele procese nu trebuie să
permită depășirea variabilei de proces dincolo de valoarea de referință dacă, de exemplu, acest lucru
nu ar fi sigur. Alte procese trebuie să reducă la minimum energia consumată pentru atingerea unei
noi valori de referință. [4] [10]

Prezentare generală a metodelor de acordare a parametrilor
Există mai multe metode pentru reglarea un ui regulator PID. Cele mai eficiente metode
implică în general dezvoltarea unei forme de model de proces, apoi alegerea termenilor P, I și D pe
baza parametrilor modelului dinamic. Metodele de reglare manuală pot fi relativ consumatoare de
timp, în special pentru sisteme le cu buclă de reacție cu timp î ndelungat.
Alegerea metodei va depinde în mare măsură de faptul că bucla de reacție poate fi luată
sau nu ,,offline ” pentru reglaj și de timpul de răspuns al sistemului. Dacă sistemul poate fi
deconectat, cea mai bună metodă de reglare implică adesea supunerea sistemului la o schimbare
treptată a intrării, măsurarea ieșirii în funcție de timp și utilizarea acestui răspuns pentru a determina
parametrii de control. Printre metodele de acordare a parametrilor enu merăm următoarele : reglarea
prin încercări pe care am folosit -o și în acest ă lucrare , metode de reglare software, metoda Ziegler –
Nichols, metoda Tyreus -Luyben, metoda Cohen -Coon. [10]

Limitări ale controlului PID
În timp ce regulatoarele PID sunt aplicab ile în multe probleme de control și deseori
funcționează în mod satisfăcător, fără îmbunătățiri sau reglaje grosiere . Ele pot funcți ona prost în
unele aplicații și în general, nu asigură un control optim. Dificultat ea fundamentală a regulatorul ui
PID este că reprezintă un sistem de control al reacției , cu parametri i constanți și fără cunoaștere
directă a procesului . În timp ce regulatorul PID este cel mai bun cont roller într -un sistem fără un
model al procesului, o performanță mai bună poate fi obținută pri n modelarea evidentă a procesului
fără a se recurge la un observator. [10]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

47 Implementarea discretă a regulatorului PID
Analiza pentru proiectarea unei implem entări digitale a unui regulator PID într -un
microcontrol ler (MC) necesită ca forma standard a regulatorului PID să fie discretizată .
Aproximările pentru componentele derivate de ordinul întâi se fa c prin diferențe finite anterioare .
Extinderea acesto r precizări pentru un regulator PID discret este după cum urmează.
Expresia de timp c ontinuă este preze ntată mai jos :

Termenul integrat iv este discretizat, cu un timp de eșantionare ∆ t, după cum urmează :

Termenul derivat iv este aproximat ca :

Aici, regulatorul PID discret devine :

Reducem ecuația de mai sus la următoarea ecuație:

Apoi:

Aplicăm:

(3.2.14)

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

48 Forma finală va fi:

unde:
,

Acesta este așa zisul ,, algorit m de viteză ” pentru regulatorul PID d eterminat prin aproximarea
derivate lor de ordinul în tâi prin diferențe finite anterioare .
Algoritm ul poate fi rescris mai compact astfel:

unde:

K1, K2 și K3 pot fi văzuți ca parametrii de reglare. Fie q-1 definit ca operatorul de schimbare înapoi :

Prin urmare:

În acest caz, algoritmul de viteză discretizat al regulatorului PID este realizat astfel :

[11]

3.3. Adaptarea r egulator ului PID pentru robotul autonom urmăritor de linie
La viteze mai mici, urmărirea liniei negre este destul de simplă ș i anume, dacă senzorii vor
indica că robotul merge spre stânga, va trebui să -l corectăm s ă meargă spre dreapta până cand acesta
ajunge din nou pe linia neagră și dacă merge la dreapta, corectarea trebuie să se facă spre stânga.
Acest proces are totuși limitări, în special atunci când crește viteza. Acesta este momentul în care,
noi ca și proie ctați vom folosi un regulator PID.
Regulatorul PID va fi o procedură matematică ca re va procesa datele senzorilor IR și le va folosi
pentru a controla direcția (și/sau viteza) robot ului pentru a -l menține în curs. De ce funcționează
regulatorul PID mai bin e decât modelul nostru simplu descris mai sus? Vom vorbim despre mo dul
în care robotul acționează, sau se comport ă, în paragrafele imediat următoare.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

49 Comportamentul unui robot urmăritor de linie
Să presupunem că robotul nostru are 3 senzori: stânga, cent ru și dreapta. Când senzorul
central detectează linia, robotul este programat să meargă drept. Când senzorul din stânga
detectează linia, robotul este programat să se rotească spre dreapta. Când senzorul din dreapta
detectează linia, robotul este programat să se rotească spre stânga. Acest lucru va determina în mo d
obișnuit robotul să se rotească stânga și dreapta pe linie și dacă merge prea repede, poate pierde
controlul în urmărirea liniei ca în figura de mai jos.

Fig. 3.3.1. Evidențierea pierderii cont rolului asupr a urmăririi liniei
Această metodă ia în considerare un singur factor și anume că robotul este centrat pe linie.
Pentru a îmbunătăți performanța, ar trebui să luăm în considerar e și alți doi factori care sunt , cât de
rapid se mișcă robotul din tr-o parte în cealaltă și cât timp nu este centrat pe linie. Aceste trei
comportamente sunt numite Proportional, Integral și Derivat în ceea ce privește un regulator PID.
Pentru a discuta despre control lerul PID, vom defini mai mulți termeni folosiți în mo d obișnuit
pentru acesta :
 Poziția țintă – Pentru urmărirea linie, aceasta este centrată pe linie. V om reprezenta această
poziție cu valoarea 0 (zero).
 Poziția măsurată – Acesta reprezintă cât de departe este robotul în partea stângă sau dreptă
față de lini a neagră. Această valoare va fi o valoare negativă sau pozitivă pentru a reprezenta
poziția relativă față de linie.
 Eroarea – Diferența dintre poziția țintă și poziția măsurată afișează eroarea.
 Proportional – Măsoară cât de departe este robotul de linia n eagră. Cu cât datele senzorilor
sunt mai mici sau senzorii au o precizie mai bună, cu atât mai precis se poate măsura poziția
robotului fața de linie. Face referire la acțiunea prezentă.
 Integrativ – Măsoară eroarea acumulată în timp. Valoarea părții integ rale/integrative crește
în timp ce robotul nu este centrat pe linie. Cu cât robotul este mai departe de suprafața liniei,
cu atât este mai mare și valoarea părții integrale. Face referire la acțiunea trecută.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

50  Derivativ – Măsoară rata la care robotul se miș că de la stânga la dreapta sau de la dreapta
la stânga. Cu cât robotul se deplasează mai rapid dintr -o parte în cealaltă, cu atât este mai
mare valoarea componentei derivative. Face referire la acțiunea viitoare.
 Factorul P (Kp) – Reprezintă coeficientul d e amplificare a componentei proporționale și
este o valoare constantă folosită pentru a creș te sau a reduce impactul Proportional.
 Factorul I (Ki) – Reprezintă coeficientul de amplificare a componentei integrale și este o
valoar e constantă folosită pentru creșterea sau diminuarea impactului Integral.
 Factorul D (Kd) – Reprezintă coeficientul de amplificare a componentei derivative și este o
valoare constantă folosită pentru a mări sau micșora impactul componentei Derivative.

Fig. 3.3.2. Evidențierea tras ei robotului asup ra liniei utilizând un regulator PID
Prin combinarea valorilor proporționale, integrale și derivative, putem controla mișcarea
robotului nostru mai precis. Comportamentul ideal este reprezentat de linia roșie din imaginea de
mai sus. Mișc area oscilantă a robotului este redusă la minimum și robotul rămâne mai mult centrat
pe spațiul liniei decât înainte.
Performan ța generală a robotului împreună cu control lerul PID va depinde de numărul și precizia
senzorilor utilizați și de capacitățile/ca racteristicile microcontrol ler-ului pe care îl utilizam.

Dispunerea senzorilor infraroșu

Fig. 3.3.3. Distribuția senzorilor IR pe planul traseului marcat în poziț ia țintă
Pentru pr oiectul propriu -zis vom folosi cinci senzori IR pentru detecția liniei negre pe o
suprafață albă. Senzorii sunt utilizați ca o ieșire digitală de valoare 0 ( în afara liniei) sau valoare 1
(linie). Senzorii sunt pozițion ați exact cum se arată în figura de mai sus pentru a cre ște precizia .
Fiind sensibili la lumină și trepidați i, va trebui să fim în permanență atenți dacă aceștia indică

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

51 corect, iar în cazul negativ va trebui sa îi calibrăm cu ajutorul potențiometrului . Senzorii sunt
montați pe o baretă de plexiglas la o înălțime de aproximativ 0,5 cm de supraf ața de contact pent ru o
mai bună precizie și detecție a razelor IR primite de căt re fotodioda modulului .
Tabel 3.3.1. Exemple de valori ale senzorilor IR în 3 poziții ale robotului pe linie
Valoarea binară Descriere
010 Robotul este centrat pe linie
100 Robotul este în pa rtea dreaptă a liniei
001 Robotul este în partea stângă a liniei

Gama completă a valorilor senzorilor în funcție de poziția robotului pe linie, pentru cazul
nostru, este prezentată în tabelul de mai jos, atribui ndu-se câte o valo are numerică/binară fi ecărei
situații în care se poate afla robotul la un anumit moment de timp.
Tabel 3.3.2. Valorile aignate senzorilor IR și valori le binare corespunzătoare acestora
Valoarea binară Valori atribuite
00001 4
00011 3
00010 2
00110 1
00100 0
01100 -1
01000 -2
11000 -3
10000 -4
00000 5 sau -5 (în funcție de valorile anterioare)

Gama de valori posibile pentru poziția măsurată este de la -5 până la 5. Vom măsura poziția
robotului pe linie de câteva ori pe secundă și vom folosi aceste valori pentru a det ermina valorile
proporționale, integrale și derivate.
Formula PID

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

52 Regulatorul PID reprezintă o serie de calcule matematice care procesează datele senzorilor și
le folosește pentru a deduce direcția și viteza robotului pentru a le menține î n cur s. Noi determinăm
părțile proporțional e, integrativ e și derivativ e, apoi le contopim pentru a veni cu valoare a finală.
Proporțional
Proporțional = Kp ∙ (Eroare )
unde : (Eroare ) = (Poziț ia țintă) – (Poziția măsurată)
Integrativ
Integrativ = Ki ∙ (Integrati v)
Deoarece partea integrativă stochează valoarea e rorii, ea va deveni :
Integrativ = Integrativ + Eroare
Derivativ
Derivativ = Kd ∙ (Rata de schimbare)
unde : (Rata de schimbare) = (Eroare) – (Eroare anterioară)
Prin urmare, valoarea de control folosită pen tru reglarea mișcării robotului va fi dată de formula :
PID = ( Kp ∙P) + ( Ki ∙I) + ( Kd ∙D)

Reglarea parametrilor regulatorului PID
1. Începem cu Kp, Ki și Kd egalân d cu 0 și lucram mai întâi cu Kp. Încercam să setă m Kp la o valo are
de 1 și să observă m robot ul. Scopul este acela de a determina robotul să urmeze linia, chiar dacă
este foarte tumultoasă. Dacă robotul depășește și pierde linia, reducem valoarea Kp. Dacă robotul nu
poate naviga în mișcare sau este pare lent, creștem valoarea Kp.
2. Odată ce robot ul es te capabil să urmărească linia, atribuim o valoare lui Kd (pentru moment și
pentru moment vom omite Ki). Încercă m să mărim această valoare până când vom observa o
cantitate cat mai mică de trepidații.
3. Odată ce robotul este destul de stabil la urmăr irea liniei, atribuim lui Ki o valoare de 0 ,5 până la 1.
Dacă valoarea Ki este prea mare, robotul va derula rapid de la stânga la dreapta si va ieși dupa
traseu. Dacă este prea scăzută, nu vom vedea nici o diferență perceptibilă. Deoarece componenta
Integr ativă este cumulativă , valoarea Ki are un impact semnificativ. S -ar putea să ajustam cu
incrementări chiar de ordinul .01.
4. Odată ce robotul urmărește linia cu o precizie bună, putem mări viteza și putem vedea dacă acesta
încă mai poate urma lin ia.
În final, trebuie să reținem că nu este necesar să implementăm toate cele trei componente
ale regulatorului PID (Proporțional, Integrativ, Derivativ) într -un singur sistem, dacă nu este
necesar. Regulatorul se poate implementa și cu două componente ale acestu ia.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

53 Capitolul 4 . Implementarea software a funcțiilor robotului

La începutul anilor 70 ’ a ap ărut limbajul C în laboratoarele AT&T, creația lui Dennis
Ritchie și Brian Kernighan. Tot acolo s -a născut și Unix și C++.
Unele limbaje de programare sunt ,,prie tenoase ”, în sensul că erorile sunt evidențiate în timpul
compilării , sau în timpul rulări programului, lucru care îi permite programatorului să intervină și să
repare erorile respective , iar ulterior programul va funcțio na corect. Limbajul C nu este aș a.
Modelul de programare pe care se bazează C presupune că pro gramatorul știe exact ce vrea
să facă și știe să folosească limbajul C pentru a obține acel lucru. Limbajul C lasă programatorul să
scrie programul într -un timp minim fără sa intervină în calea l ui. C -ul este simplu deoarece numărul
de componente al limbajului este relativ mic. Spre exemplu, dacă două funcții ale limbajului
realizează mai mult sau mai puțin același lucru, C va include doar o funcție.
Programarea C este folosită în general în proi ecte de mici dimensiuni unde se pune accent pe
performanța codului, exemplu fiind programarea microcontroller -elor. Pentru a realiza un program
în limbajul C este nevoie de un mediu de programare pentru scrierea codului (editor de text) și un
compilator. P entru cazul de față se va folosi platforma Arduino IDE. Compilatorul reprezintă
software -ul care transformă codul scris în C (limbajul înțeles de noi), în cod mașină sau cod binar
(limbaj înțeles de calculator). Compilarea unui program constă în verificare a codului (greșeli de
sintaxă), transformarea acestuia în cod binar și creearea unui executabil sau a unui fișier în urma
compilării programului. [12]

4.1. Structura unui program în mediul Arduino IDE
Limbajul în care se va programa microcontroller -ul integrat pe placa de dezvoltare Arduino,
va fi similar cu limbajul C existând mici diferențe de sintaxă.
Programul este alcătuit din funcția main (), funcție principală care este de tipul void, ceea ce
va însemna că programul nu întoarce nici un rezultat. Ce le două paranteze () sunt nelipsite oricărei
funcții. Între aceste două paranteze se pot pune anumiți parametrii, care pentru cazul acesta lipsesc.
Când scriem programe pentru Arduino, nu trebuie să scriem funcția main (), deoarece este deja scrisă
și arată în felul următor : [12]
Lista 4.1.1. Structură program cu funcția main () create [12]

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

54 Inițial se apelează funcț ia setup() unde vor avea loc inițializările. Apoi urmează o buclă
infinită în care se apelează funcț ia loop() . De observat că funcț ia main() nu returnează niciodată o
valoare. Acest lucru se întamplă deoarece programul n ostru este singurul care rulează pe Arduino,
nu mai există un altul. Dacă programul nostru se termină , microcontr ollerul va executa alte
instrucțiuni, la întâmplare, care pot dă una. [12]
Concluzionând cele spuse mai sus, singurele funcții pe care trebuie să le scriem, sau care
sunt generate la creearea unui nou proiect în Arduino IDE sunt setup() și loop() . Scheletul unui
program pentru Arduino va arăta aș a:
Lista 4.1.2. Schelet ul unui program Arduino [12]

În paragrafele următoare se vor prezenta cele trei părți ale programului Arduino pentru
robotul autonom mobil.

Zona de declarații
Ce nu a fost specificat în paragrafele de mai sus, este zona numită header. Pentru a utiliza
funcțiile din cod, compilatorul are nevoie de anumite informații referitoare la ele. Acestea se găsesc
în header (antet). Prin directiva #include se solicită ca fișierul header să fie inclus înaintea codului
scris de noi. Fișierul obținut nu va fi vizuali zat de program ator decât în cazuri speciale. Î n
programarea AVR , astfel de headere sunt necesare pentru a micșora volumul codu lui și de a permite
utilizarea unor noi funcții personalizate. De altfel, această secțiune va cuprinde și declarațiile
globale ale programului, dar și define -urile cu ajutorul cărora ne definim constantele.
Lista 4.1.3. Declarațiile globale și define -urile programului

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

55

#define echo 6
#define trig 7
Se vor definii 2 pinii ai placii și anume pinul digital 6 și pinul digital 7 pentr u comunicația cu
semnalele celor doi pini ai senzorului ultrasonic (HC -SR04).
long travel_time, distance ;
Variabile global e declarate pentru durata uti lizată pentru calcularea distanț ei și distanța efectivă
până la obiect.
float Kp=10.3 ;
float Ki=0.5;
float Kd=15;
Pentru aceste trei variabile de tip float, ce reprezintă factorii de amplificare a fiecărei părți a
regulatorului, în urma testărilor aplicate robotului, li se vor atribui valorile optime pentru ca robotul
să se mențină cat mai bine linia neagră.
int sensor [5]={0, 0, 0, 0, 0};
Se va declara un vector pentru cele cinci module cu senzori infraroșu și se va inițializa cu 0 fiecare
valoare a senzorilor. Repet, senzorii au ieșirea digitală și pot da două valori , 0 sau 1, iar în cazul de
față default este 0.
int initial_motor_speed=58 ;
Se declar ă valoarea factorului de umplere al semnalului PWM cu care se vor comanda motoarele, în
cazul inițial unde robotul este centrat pe linie. Turația dată de acest factor de umplere este aceeași
pentru ambele motoa re.
void read_sensors_values(void) ;
void calculate_pid(void);
void motor_control(void);
Funcții declarate și create pentru fiecare operație pe care robotul trebuie sa o îndeplinească.

Void setup()
Lista 4.1.4. Funcția void setup()

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

56 Funcția pinMode() configurează pinul specificat să se comporte fie ca intrare, fie ca ieșire.
Pentru asta va trebui sa consultăm foaia de catalog a plăcii de dezvoltare Arduino UNO R3 și să
observăm funcționalitatea pinilor digitali.
Sintaxa funcției după cum se vede și în li sta de mai sus este următoarea: pinMode(pin,mod).
Este foarte important să definim co rect INPUT/OUTPUT deoarece în momentul declarării se produc
modificări hardware: o intrare trebuie s ă aibă rezistență foarte mare, iar o ieșire trebuie să aibă o
rezistenț ă foarte mică.
În lista 4.1.4. se pot vedea setările pinilor la care sunt legate terminalele și pinii modulului cu driver
de motoare L298N.
Tot în funcția void setup() va trebui adăugată și linia de cod pentru inițializar ea comunicației seriale
pe port , Serial.begin(9600) , unde 9600 reprezintă baud rate-ul, adică număr ul de biți transmiși pe
secundă pe comunicația serială.
Void loop()
Lista 4.1.5. Funcția void loop()

Cele trei func ții declarate în zona header -ului, fac împreună ca tot ansamblul robotic să
funcționeze optim. Ele vor fi adăugate ulterior și în funcția principală a programului void loop()
deoarece vor trebui să ruleze în buclă infinită. Dacă nu ar fi puse în void loop() programul ar face un
ciclu de execuție iar apoi s -ar opri. La nivel har dware în acest caz, robotul ar urmări linia pentru o
scurtă perioadă de timp, iar apoi nu va mai îndeplini task -urile corecte.

4.2. Implementarea software a citirii valorilor senzorilor infraroșu
Lista 4.2.1. Citirea valorilor celor cinci senzori infraro șu

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

57 Lista 4.2.2. Matricea valorilor senzorilor în toate cazurile plasării robotului

În acest subcapitol, se prezintă codu l pentru funcția citirii valorilor senzorilor infraroșu ,
montați în fața robotului.
Prima listă a acestui subcapitol prezin tă cele cinci citiri digitale ale senzorilor infraroșu care
vor fi legați la pinii analogici A0 până la A4. Chiar dac ă pinii plăcii sunt analogici, se pot seta prin
funția digitalRead() să fie citită informația ca și digitală. Cu funcția digitalRead() se va citi valoarea
digitală de pe un pin declarat ca INPUT. Ea va returna HIGH sau LOW, unde HIGH va fi tensiunea
de 5V pe pin, iar LOW va fi tensiunea aproximativ egală cu 0 V pe pin .
A doua listă va cuprinde imbricarea if -urilor ca o matrice a senzorilor in fraroșu în care prin
activarea anumitor senzori, se va aloca o eroare și în funcție de ea se va lua decizia unde va merge
robotul. În imbricarea aceasta, sunt cuprinse toate cazurile în care se poate afla robotul pentru un
număr de cinci senzori . Modul în care sunt distribuiți senzorii a fost prezentat în Capitolul 3,
subcapitolul 3.3.

4.3. Implementarea software a regulatorului PID
Lista 4.3.1. Funcția de calcul a regulatorului PID

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

58 Ceea ce a fost prezentat teoretic în subcapitolul 3.3 din cadrul ,,Con trolului robotului cu
ajutorul regulatorului PID” se va implementa software creeându -se o funcție prezentată în liniile de
cod ilustrate mai sus. Fiecare componentă a regulatorului va lua o valoare în funcție de cazuri. La
rândul lor, valorile se vor înmul ți cu fiecare factor de amplificare al componentei în cauză dupa care
ieșirea regulatorului PID finală, va reieși din suma descrisă în lista de mai sus.

4.4. Implementarea software a controlului motoarelor
Lista 4.4.1. Funcția de control a motoarelor

Pentru controlul motoarelor în funcție de valorile de ieșire ale regulatorului PID se creează
funcția void motor_control() . Pentru cazul în care robotul este centrat pe linie spuneam mai sus că
turația ambelor motoare va fi dată de valoarea 58 ce reprezint ă factorul de umplere al semnalului
PWM. În cazul în care robotul iese după suprafața liniei negre , vor trebui să apară modificări ale
turației motoarelor pentru recalibrare. Astfel se vor declara două variabile locale left_motor_speed și
right_motor_speed care vor reprezenta turațiile motoarelor în cazuri de corectare a poziției
robotului. Acestora li se vor atribui valorile turației inițiale adunând u-se într -un caz și scăzând u-se
în celălalt caz valoarea regulatorului PID.
Pe lângă asta, mai trebuie să ț inem cont de un lucru și anume că turația motoarelor are maximul la
valoarea 255 a factorului de umplere (vezi capitolul 2, subcapitolul 2.5). În acest caz se va folosi
funcția constrain(x,a,b) cu care vom limita variabilele turațiilor motoarelor între anu mite valori a și
b, cazul nostru intervalul 0 și 255.
Funcția analogWrite(pin, value) va scrie o valoare analogică (unda PWM) unui pin declarat ca
OUTPUT. Se poate folosi doar pe pinii de semnal PWM. După cum spuneam mai sus, parametrul
value poate lua val ori între 0 și 255, unde 0 înseamnă tensiunea de 0V și 255 înseamnă tensiune de
5V.
Ultima funcție folosită digitalWirte(pin,value) primește tot doi parametrii, numărul pinului și
valoarea pe care dorim să o dăm acestuia, fie HIGH, fie LOW. HIGH înseamnă c ă tensiunea va fi pe

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

59 5V, iar LOW că tensiunea este pe 0V. Cifrele 5,4,3,2 reprezintă numărul pinilor digitali la care sunt
legate terminalele motoarelor A și B de pe modulul cu driver L298N.

4.5. Implementarea software a detecției obstacolelor
Lista 4.5. 1. Detecție obstacolelor și afișarea distanței pe monitorul serial

În acest subcapitol se prezintă codul specific pentru senz orul ultrasonic (HC -SR04) folosit în
detecția obstacolelor de pe suprafața pistei. Partea de cod s -a creat în interiorul funcție i void loop()
repetându -se fiecare instrucțiune la infinit. După cum s -a prezentat în partea finală a capitolului 2,
pinul Trig se va seta pe valoarea HIGH cu funcția digitalWrite() , timp de 10 microsecunde, după
care se va opri. Această setare pe HIGH va trimite opt trenuri de impulsuri ultrasonice la o frecvență
de 40KHz. Cu funcția pulseIn(echo,HIGH) se va inițializa pinul Echo pentru primirea răspunsului
undelor trimise de către emitor. Astfel, distanța de la obiect la senzor se va calcula după formula
scrisă mai sus și extrasă din foaia de catalog a senzorului ultrasonic. După ce informația distanței a
fost primită, se va trimie către monitorul serial pentru vizualizare cu funcția Serial.println(distance) .
Pentru ca robotul să se poată opri în momentul detecției unui obiect pe pistă , vom avea
nevoie de o condiție. Prin această condiție îi specificăm microcontroller -ului ca în momentul în care
distanța de la obiect, la senzorul montat pe robot, este mai mică de 25 cm să dea com anda către
driverul de moto are pentru a le opri alimentarea și să afișeze pe monitorul serial că un obstacol a
fost detetctat.
După ce obstacolul este înlăturat, programul își reia execuția instrucțiunilor și robotul își va
continua traseul.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

60 Capitolul 5 . Concluzii

După finalizar ea construcției și impl emntării software, robotul este fi capabil să urmărească
o linie de culoare negară pe un fond alb. Pe lângă acest lucru , robotul va putea fi setat software și
pentru cazul invers în care linia pe care acesta o urmărește , este albă și fondul este negru. Poate fi
capabil să se rotească la o varietate de grade pentru a -și căuta linia în caz că deviază după traseu .
Însumând toate orele și testările petrecute în finalizarea robotului sunt și dezavantaje pe care
trebuie să le evidențiez .
O primă concluzie pe care o pot deduce ca și proiectant este aceea că dacă componentele pe
care le vom folosi în construcția unei platforme robotice nu sunt de o performanța mare, nici
performanțele platformei în task -urile pe care le va avea de îndepli nit, nu vor fi grozave , în cele mai
multe cazuri. Raportat la robotul autonom mobil pe care l-am proiectat și construit , am observat pe
parcursul testărilor, diverse problem e la modulele și senzorii utilizați.
Referitor la partea de motrică și aici vorbin d de miș carea în linie dreaptă a robotului, am
văzut probleme la motoare și roti. Pe parte a de moto are, comandându -le la același factor de
umplere, acestea nu aveau aceleași turații , văzându -se că robotul imediat își schimbă direcția. Asta
se datorează și faptului că mot oarele nu au același număr de spire la bobinaj ceea ce induce
diferențe în turații , dar și din cauza roților care au venit cu defect din fabricație fiind puțin strâmbe.
O altă problemă des întâlnită la testări a fost cea a modulelor senzorilor infraroșu. În
momentul în care pista era mutată în alt mediu cu condiții de luminozitate diferite, modulele senzor
nu mai funcțio nau cum trebuie, necesitând reg laj fin prin intermediul potențiometrului montat pe
ele. Un alt factor la care aces te module sunt sensibile este și cel al trepidațiilor apărute la viteze mari
și mici denivelări ale pistei.
Senzorul ultrasonic se poate spune ca are și el un rol important în procesul de urmărire, prin
el oprindu -se robotul la detecția unui obstacol . La anumite intervale de timp, senzorul are erori de
detecție a obstaco lului, în sensul că nu arată co rect distanța de la robot la obstacol. Astfel se va
putea lu a o decizie în privința aceasta de a mări distanța la nivel soft. la care robotul să se oprească
pentru evitarea unei coliziuni a acestuia cu obiectul de pe traseu.
Un lucru important referitor la orice proiect p e care fiecare dintre noi îl avem la un moment
dat, este acela că fiecarei structură hardware trebuie să îi facem un layout bine definit. Toate
legăturile ce se vor realiza pe acea structură vor trebui să aibă o logică și o aș ezare cât mai
compactă. De ce acest acest lucru? P entru că la un moment dat, se pot face schimbări sau înlocuiri și
dacă legăturile nu sunt făcute cu o minimă logică, va fi greu de schimbat acea legătură , riscân d să se
facă o conexiune incorectă .

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

61 5.1. Contribuții personale
Partea ce a mai dificilă a proiectului a constat în găsirea unei soluț ii cu ajutorul căreia să
realizez robotul autonom mobil . După o idee generală la cum trebuie să arate sistemul , am făcut o
investigație a modului cum se poate realiza un prototip funcțional și ce componente sunt mai
potrivite astfel încât să se găsească un echilibru între costul de realizare al acestuia și calitatea
sistemului.
Căutându -se piesele cele mai potrivite pentru realizarea sistemului am trecut la construir ea
lui, lucru care a fost destul de dificil, deoarece s -au întâmpinat tot felul de dificultăți care au dus la
regândirea și r econstruirea ansamblului robotic de câteva ori până să ajungă la forma sa finală.
Toată a rhitectura sistemului făcând -o în pași bine structurați, atunci când s -a întâmpinat o problemă,
s-a putut găsi destul de repede o soluție optimă pentru continuarea proiectului, dar partea mai
neplăcută a fost atunci câ nd neavând la îndemână toate componentele , a trebuit să se aștepte un timp
până la sosirea lor .
Realizarea modului de comandă a fost mult mai simplu, deoarece în timpul construcț iei
ansamblului m -am docume ntat despre motoarele, modulele și senzorii folosi ți. Am făcut teste pe
motoarele de curent continuu acționate de placa de dezvoltare Arduino Uno pentru a vedea modul
de funcționare și găsirea celei mai bune soluții de implementare a codului. Am scris mai multe
versiuni de cod și după mai multe încercări am ales soluția cea mai bună.

5.2. Posibilitatea de îmbunătățire , schimbare a sistemului și dezvoltării viitoare
După cum a fost prez entată structura sistemului robotului autonom mobil, aceasta poate fi
îmbunătățită și chiar făcute câteva schimbări care să aducă performanțe mult mai bune .
Îmbunătățiri pot apărea la nivelul regulatorului PID unde se pot testa și încerca prin diverse
simulări cei trei parametrii până când sistemul oferă performanțe mai mari.
Una din schimbări ar fi cea a senzorilor infrar oșu care au ieșirea digital ă, cu senzori
infraroșu cu ieșire analogică deoarece semnalul se va eșantion a și se va mări plaja de valori.
O altă schimbare poate fi și cea a ansamblului motoarelor de curent continuu și roțile atașate
acestora cu alt ansamblu mai performant și mai scump.
Ca dezvolt ări viitoare, se pot aduce noi implementări hardware și software robotului cum ar
fi, montarea unei camere video cu care se pot vizualiza diverse semne de circulație și la nivel
software, prin intermediul vederii ar tificiale sau a rețelelor neuronale se vor lua decizii ca robotul să
meargă în anumite părți.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

62 Capitolul 6 . Bibliografie

[1] I., M ărgineanu, ,, Utilizarea automatelor programabile în controlul proceselor ”, Ed. Matrix
Rom, București, 2005
[2] Comnac, V ., Coman, S., Boldișor, C., ,,Sisteme liniare continue ”, Ed. Universității Transilvania
din Brașov, 2009
[3] Țopa, I., Diaconu, L.I., ,,Acționări electrice reglabile cu mașini de curent continuu ”, Editura
MatrixRom, București, 2009
[4] C. Boldișor, Ingineria Reglării Automate , note de curs.
[5] Asist. Ing. Teodor V. Chira, ,,Lucrări de laborator la automatizarea instalațiilor ”
[6] ***, www.arduino.cc , site-ul oficial Arduino
[7] ***, www.wikipedia.org , Arduino
[8] ***, www.wikipedia.org , Brushed DC electric motor
[9] ***, www.electronicstefan.ro , Puntea H
[10] ***, www.wikipedia.org , PID controller
[11] ***, www.scribd.com , Discrete PI and PID Controller Design and Analysis for Digital
Implementation
[12] ***, www.roroid.ro , Programar ea Arduino în C
[13] ***, www.robofun.ro , Caracteristicile tehnice ale modulelor și senzorilor

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

63 Capitolul 7 . Rezumat

Robotul autonom mobil de tipul urmăritor de linie a fost creat ca prototip pentru viitoa rele
proiecte de o anvergură mult mai mare , ce presupun conceperea unor roboți cu aceleași proprietăți
funcționale, dar cu o structura hardware diferită. Robotul va avea aptitudinile de a urmări o linie de
culoare neagră pe o suprafață de culoare albă și d e a se opri în cazul detecției unor obstacole apărute
pe pistă. Acest lucru face ca atributele pe care robotul le va avea, să îl facă foarte aplicabil în rândul
firmelor care sunt bazate pe partea de producție.
Ca și ansamblu de funcționare, platforma rob otică cuprinde trei sisteme și anume sistemul de
intrare, sistemul de procesare și sistemul de ieșire.
Sistemul de intrare cuprinde partea de senzori, cei cinci senzori infraroșu pentru detetcția
liniei negre și senzorul ultrasonic pentru detecția obstac olului și distanța la care acesta se va afla de
robot. Sistemul de procesare are ca punct central placa de dezvoltare Arduino UNO R3 , ce are
integrat p e ea microcontroller -ul ATmega328. La nivelul microcontroller -ului se vor procesa toate
informațiile și se vor lua deciziile necesare controlului dorit pentru robot.
Sistemul de ieșire este alcătuit din modulul cu driver de motoare și motoarele de curent
continuu cu reductor și roți atașate. Împreună, acest ansamblu va realiza motrica robotului pe traseul
dorit.
Pentru ca întregul ansamblu robotic să funcționeze c ât mai optim, vom avea nevoie ca
procesul să fie reglat cores punzător. Pentru acest lucru s -a folosit un regulator PID. Neavând un
proces cunoscut, s -a ales o metodă de reglare prin încercări în care s -au atribuit valori celor trei
factori de amplif icare ale părților proporționale, integrative și derivative, până când robotul a
îndeplinit task -urile corecte.
Testarea sistemului a reprezentat o activitate extrem de importantă deoarece a dus la găs irea
unor p robleme ascunse ale acestuia. Am observat că robotul are de suferit în momentul schimbării
luminozității camerei de test , sau atunci când suprafața pe care rulează este lucioasă și alunecoasă,
existând problema derapării sau pornirii grele de pe loc.
Trecând peste toți acești factori, pro iectul a fost realizat cu succes. Robotul este funcț ional,
este capabil să își mențină direcția, la un nivel acceptabil, pe linia neagră și să detecteze obstacolele
apărute pe traseu.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

64 Summary

The l ine follower autonomus robot was created such as a prototype for future projects of a
much larger scope, involving the design of robots with the same functional properties but with a
different hardware structure. The robot will have the ab ility to follow a black line on a white surface
and stop when obstacles are detected on the track. This makes the robot's attributes have, make it
very applicable among companies that are based on the production side.
As a mode of operating, the robotic platform includes three systems, namely the input
system, the processing system and the output system.
The input system comprises by the sensor s, the five infrared sensors for black line
detection and the ultrasonic sensor for obs tacle detection and distance betweeen robot and obstacle
found.
The processing system has the Arduino UNO R3 development board, which has integrated
the ATmega328 microcontroller on it. At the level of the microcontroller, all information will be
processed and the necessary decisions will be made for the robot's desired control.
The output system consists of the engine driver module and DC motors with reducer and
attached wheels. Together will move the robot on the desired path.
For the entire robotic assembly to work as well as possible, we will need the process
properly adjusted. For this, was used a PID controller . In the absence of a known process, a test
method has been chosen to assign values to the three proportional, integrative and derivative
amplification factors until the robot has pe rformed the correct tasks.
Testing the system has been an extremely important task because it has led to some hidden
problems. It has been noticed that the robot suffers when the brightness of the test chamber changes
or when the surface on which it is ru nning is glossy and slippery, with the problem of skiddi ng or
heavy starting .
In the conclusion , the project has been successful. The ro bot is functional, it is able to stay
on the track at an acceptable level on the black line and to detect obstacles on the route.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

65 Capitolul 8 . Anexe

Anexa 1 – Codul pentru task -ul urmăririi liniei
float Kp=10.3;
float Ki=0.5;
float Kd=15;
float P=0, I=0, D=0, PID_value=0;
float error=0;
float previous_error=0;
float previous_I=0;
int sensor[5]={0, 0 , 0, 0, 0};
int initial_motor_speed=58;

void read_sensor_values(void);
void calculate_pid(void);
void motor_control(void);

void setup()
{
pinMode(9,OUTPUT); //PWM Motor stanga Pin 1
pinMode(10,OUTPUT); //PWM Motor dreapta Pin 2
pinMode(5,OUTPUT) ; //Motor stanga Pin 1
pinMode(4,OUTPUT); //Motor stanga Pin 2
pinMode(3,OUTPUT); //Motor dreapta Pin 1
pinMode(2,OUTPUT); //Motor dreapta Pin 2
Serial.begin(9600); //Activarea comunicatiei seriale
}

void loop()
{
read_s ensor_values();
calculate_pid();
motor_control();
}

void read_sensor_values()
{
sensor[0]=digitalRead(A0);
sensor[1]=digitalRead(A1);
sensor[2]=digitalRead(A2);
sensor[3]=digitalRead(A3);
sensor[4]=digitalRead(A4);
if((sensor[0]==0)&&( sensor[1]==0)&&(sensor[2]==0)&&(sensor[3]==0)&&(sensor[4]==1))
error=4;
else if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==0)&&(sensor[3]==1)&&(sensor[4]==1))

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

66 error=3;
else if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==0)&&(sensor[3]==1)&&(sensor [4]==0))
error=2;
else if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==1)&&(sensor[3]==1)&&(sensor[4]==0))
error=1;
else if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==1)&&(sensor[3]==0)&&(sensor[4]==0))
error=0;
else if((sensor[0]==0)&&(sensor[ 1]==1)&&(sensor[2]==1)&&(sensor[3]==0)&&(sensor[4]==0))
error= -1;
else if((sensor[0]==0)&&(sensor[1]==1)&&(sensor[2]==0)&&(sensor[3]==0)&&(sensor[4]==0))
error= -2;
else if((sensor[0]==1)&&(sensor[1]==1)&&(sensor[2]==0)&&(sensor[3]==0)&&(sensor[4]== 0))
error= -3;
else if((sensor[0]==1)&&(sensor[1]==0)&&(sensor[2]==0)&&(sensor[3]==0)&&(sensor[4]==0))
error= -4;
else if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==0)&&(sensor[3]==0)&&(sensor[4]==0))
if(error== -4) error= -5;
else error=5;
}

void calculate_pid()
{
P = error;
I = I + previous_I;
D = error -previous_error;
PID_value = (Kp*P) + (Ki*I) + (Kd*D);
previous_I=I;
previous_error=error;
}

void motor_control()
{
// Calcularea efectiva a vitezei motorului
int left_motor_speed = initial_motor_speed -PID_value;
int right_motor_speed = initial_motor_speed+PID_value;
// Viteza motorului nu trebuie sa depaseasca valoarea maxima PWM
constrain(left_motor_speed,0,255);
constrain(right_motor_speed,0, 255);
analogWrite(9,initial_motor_speed -PID_value); //Viteza motorului din stanga
analogWrite(10,initial_motor_speed+PID_value); //Viteza motorului din dreapta
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

67 Anexa 2 – Cod pentru task -ul de detecție a obstacol elor
#define echo 6 // Echo Pin
#define trig 7 // Trig Pin

// Durata utilizată pentru calcularea distanț ei
long travel_tim e, distance;

// motor A
int enA = 9;
int in1 = 2;
int in2 = 3;

// motor B
int enB = 10;
int in3 = 4;
int in4 = 5;

void setup() {
Serial.begin (9600);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);

// Setarea pinilor de control ai motorului ca output
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}

// Funcție cu care se comandă motoarele să mear gă înainte la valoarea factorului de umplere 58
void forward(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 58);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 58 );
}

// Funcția stop
void stop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

68 analogWrite(enA,0);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB,0);
}
void loop () {

digitalWrite(trig, LOW);
delayMicroseconds(2);

// Trimiterea unui impuls la 5V pentru declanș area modulului cu ultrasunete
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
travel_time = pulseIn(echo, HIGH);

// Calcularea distanței
distance = (travel_time*0.034)/2;

// Trimiterea distanței la computer (afiș area pe Serialul Monitor)
Serial.println(distance);

// Întarzierea pentru urmă toarea citire
delay(500);

if (distance < 25) {
Serial.println ("Obstacol detectat!" );
stop();
}
else {
Serial.println ("Nici un obstacol detectat. Mergi î nainte");
delay (15);
forward();
}
}

Anexa 3 – Diagrama GANTT a proiectului de diplom ă

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

69 Capitolul 9 . Declara ție de originalitate

DECLARAȚIE
PRIVIND ORIGINALIT ATEA LUCRĂRII DE DI PLOMĂ

UNIVERSITATEA TRANSILVANIA DIN BRAȘOV
FACULTATEA: INGINERIE ELECTRICĂ ȘI ȘTIINȚA CALCULATOARELOR
PROGRAMUL DE STUDIU: Automatică și Informatică Aplicată

NUMELE ȘI PRENUMELE: Drăgoi Andrei Vlad
PROMOȚIA: 2017
SESIUNEA DE LICENȚĂ : Iulie 2017

DENUMIREA LUCRĂRII: Controlul unui robot autonom mobil

CADRUL DIDACTIC ÎNDRUMĂTOR: prof. Grigorescu Sorin Mihai

Declar pe propria răspundere că lucrarea de față este rezultatul muncii absolventului, pe baza
cercetărilor proprii și pe baz a informațiilor obținute din surse care au fost citate și indicate conform
normelor etice, în textul proiectului, în note și în bibliografie.
Declar că nu s -a folosit în mod tacit sau ilegal munca altora și că nici o parte din proiect nu
încalcă drepturil e de proprietate intelectuală ale altcuiva, persoană fizică sau juridică.
Declar că proi ectul nu a mai fost prezentat sub această formă vreunei instituții de învățământ
superior în vederea obținerii unui grad sau titlu științific ori didactic.
În cazul constatării ulterioare a unor declarații false, vom suporta rigorile legii.

Data: Nume, prenume, semnătura

Similar Posts