Summary ………………………….. ………………………….. ………………………….. …………………………….. [622655]

1
Cuprins

Summary ………………………….. ………………………….. ………………………….. ………………………….. …………….. 2
Planificare activități ………………………….. ………………………….. ………………………….. ………………………….. 8
1. Stadiu actual ………………………….. ………………………….. ………………………….. ………………………….. ……. 9
1.1 Aspecte generale ………………………….. ………………………….. ………………………….. ………………………. 9
1.2 Tehnologia laser în industria medicală ………………………….. ………………………….. ……………………. 9
1.2.1 Aplicații ale laserilor în realizarea unor dispozitive medicale ………………………….. ………….. 9
1.2.2 Impactul tehnologiei laser asupra industriei medicale ………………………….. …………………… 10
1.3 Sisteme de țintire ………………………….. ………………………….. ………………………….. ……………………. 10
1.3.1 Optica digitală TrackingPoint ………………………….. ………………………….. ……………………….. 10
1.3.2 Poziționarea automată a unui telescop ………………………….. ………………………….. ……………. 11
2. Fundamentare teoretică ………………………….. ………………………….. ………………………….. ……………….. 13
2.1 Laseri ………………………….. ………………………….. ………………………….. ………………………….. ……….. 13
2.1.1 Laseri în undă continuă ………………………….. ………………………….. ………………………….. …….. 14
2.1.2 Laseri în impulsuri ………………………….. ………………………….. ………………………….. …………… 15
2.2 Surse de alimentare ………………………….. ………………………….. ………………………….. ………………… 15
2.3 Servomotor ………………………….. ………………………….. ………………………….. ………………………….. .. 19
2.4 Microcontroller -ul ………………………….. ………………………….. ………………………….. ………………….. 21
2.5 Controlul și reglajul temperaturii ………………………….. ………………………….. ………………………… 22
2.6 Prelucrare de imagine ………………………….. ………………………….. ………………………….. …………….. 23
3. Implementarea soluției adoptate ………………………….. ………………………….. ………………………….. …… 25
3.1 Schema bloc de funcționare a aplicației ………………………….. ………………………….. …………………. 25
3.2 Implementarea modulelor LASER ………………………….. ………………………….. ……………………….. 26
3.3 Sistem de control al temperaturii ………………………….. ………………………….. …………………………. 29
3.4 Captură și analiză video ………………………….. ………………………….. ………………………….. ………….. 33
3.5 Servomotoare și control ………………………….. ………………………….. ………………………….. ………….. 35
3.6 Sistem de alimentare ………………………….. ………………………….. ………………………….. ………………. 39
4. Rezultate experimentale ………………………….. ………………………….. ………………………….. ………………. 40
4.1 Schema electrică ………………………….. ………………………….. ………………………….. …………………….. 40
4.2 Schema bloc ………………………….. ………………………….. ………………………….. ………………………….. . 41
4.3 Prototipul aplicației ………………………….. ………………………….. ………………………….. ………………… 43
4.4 Interfața grafică ………………………….. ………………………….. ………………………….. …………………….. 47
4.5 Analiza imaginilor ………………………….. ………………………….. ………………………….. ………………….. 48
4.6 Măsuri de protecție ………………………….. ………………………….. ………………………….. ………………… 51
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ……….. 53
6. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …….. 54
7. Anexe ………………………….. ………………………….. ………………………….. ………………………….. …………….. 56
8. Curriculum Vitae ………………………….. ………………………….. ………………………….. ………………………… 74

2
Summary
Introduction
The digital image processing domain has a great importance due to the number of
applications, having a direct influence on certain automated processes. The development of
certain targeting systems using image acquisition and processing represents a trend o f evolution
regarding to the previous industrial processes involving continuous manual operation. Hence, the
work presented here involves the development of a targeting system using a high power laser. It
uses a webcam, two servomotors to guide the high po wer laser on its target, one microcontroller
to send the command signal s towards the servomotors and a computer used to process the output
video sequence.
Targeting systems recently gained a significant importance thanks to their versatility.
Among the most important processes are included the following: guiding a telescope on a certain
celestial object, developing certain algorithms to help a sniper aim better on its target, some
medical applications and raw materials processing.
Theoretical fundamental s
During the development of an algorithm that allows aiming at a certain targets, there are
several factors that should be considered. First, the shape of the targeted object must be taken into
account. Moreover, choosing the right detection method will e xhibit a much better performance
of the targ eting system , and also, it offers certain possibilities when it comes to detect some
features of the targeted object.
The high power laser requires an adequate closed -loop temperature control system , as
shown in Figure 1 . It consists of a Peltier element which transfers the heat away from the laser
diode, and also a temperature control circuit which regulates the power transferred to the cooling
element.

Temperature
set point+
-Power
transfer
control
SensorProcessr(t) u(t)
e(t)

Figure 1. Closed -loop temper ature control

3
The sensor used for measuring the temperature of the laser cavity is a NTC thermistor
mounted in a resistor bridge . This configuration allows the detection of a small temperature
variation and performs better than other conventional sensors. This temperature control system
features an active cooling process and the set point can be configured by changing the values of
certain components from the circuit .
The digital image processing algorithm consists of detecting the extreme stable regions
from a captured image. After the image analysis, a data pack is sent towards the microcontroller
which guides the high power laser on its target with the help of two servomotors.
Implementation
Targeting system description
The block diagram of th e targeting system is shown in Figure 2.

LaserHigh power
laser
Low power
laserPower
systemTemperature
control
system
Servomotor
control
system
Video
acquisitionVideo
analysis

Figure 2. Block diagram

As shown in the figure above, after receiving the video sequence from the webcam, each
image is analyzed and processed. After identifying a potential target, the algorithm estimates the

4
corresponding angle for the two servomotors in order to guide the high power laser on the
targeted object. A codified data pack is sent via UART, as shown in Figure 3, which is further
decoded and used to determine the angle required to hit the target.

Microcontroller ComputerYP-01 USB
to UART
adapterHM-10
Bluetooth
moduleHM-10
Bluetooth
moduleServomotors

Figure 3. Data transmission

The temperature control circuit maintains the temperature of the laser cavity at a constant
value and also assures a constant power consumption once the thermal equilibrium has been set.
One sample of the temperature is measured with the help of the thermi stor and is further used to
regulate the power transferred to the cooling element.
The video analysis algorithm was implemented in Matlab R2018a by using some
extensions which facilitates the configuration of the whole system. These extensions allow
interfacing the USB camera with a user interface and also provides the main functions used
within this application.
Prototype description
The whole assembly of the high power laser targeting system is described below, as
shown in Figure 4. All the essential components were highlighted.

Figure 4. Targeting system prototype

Components: 1) high power laser module, 2) low power laser module, 3) webcam and red
light filter, 4) STM32F303RE microcontroller, 5) 5V DC supply for servomotors, 6) driver that

5
powers on or powers off the high power laser using the microcontroller, 7) vertical axis
servomotor, 8) horizontal axis servomotor, 9) axle for vertical motion, 10) axle for horizontal
motion, 11) Safety switch, 12) 627RS bearing, 13) 627RS bearing.
The camera filter prevents the captured image from being distorted by the high power
laser while aiming and trying to eliminate an object.
The safety switch assures that the laser won’t accidentally power on in case of any
mechanical calibration.
All the components used by the high power laser module were mounted in a power supply
unit casing, including the Peltier element and the temperature control circuit. The temperature
regulator outputs a voltage between zero and twelve volts that increases linearly as the
temperature rises.
The whole circuit can be powered by a 12 volts supply as long as the power supply or
battery can handle a current of four amperes.
Experimental results
As shown below in the final block diagram in Figure 5, when powering on the whole
targeting system a small block of code is executed and initializes all variables, interrupts, powers
on the camera and sets a baud -rate of 115200 for the UART virtual communication port.

6

Start
Initialize variables,
interrupts, webcam
and UART
Exit
program?
NoYesExit
Yes
No
Manual mode
selected?Valid angle
value?Yes No
Display
imageImage
acquisitionDisplay
error
Change
positionYesNo
Automatic
mode selected?Image
acquisition
and analysis
Sort targets according
to the Euclidean
distance between the
center of the image
and the center of the
target objectInsert a bounding
box for the
prioritized target
No
Yes
Estimate
angle,
change
positionUpdate
global
variables
Engraving flag
equals 1?
Engrave
perimeterYesNoRead flag
valuesPower-on flag
modified?
Previous
state ”On”?Laser
power
off
Laser
power
onYesNo
Figure 5. Final block diagram

There are two main operating modes and a prototype mode: automatic mode, manual
mode and engraving mode. The user can choose between these three modes and also he can
choose the shape of the targeted object as shown in Figure 6. If the laser detects a pote ntial target,

7
it prioritizes the closer to the center and with the help of a function, a green rectangle delimits the
edges of the targeted object.

Figure 6. Matlab user interface

After the initialization succeeds, the targeting systems takes an image each time it enters
the loop. If the automatic mode is selected, the system will track down the target until it’s
eliminated or until a new target comes closer to the center of the image. If the manual mode is
selected, the user can enter a desired angle or quickly compensate the angles for a missed target.
The engraving mode is a prototype mode; the targeting system calculates four points around the
targeted object and then aims towards them.
If the user presses the power button, the laser and the coolin g system will operate.
Tests also show that the targeting system is able to detect shapes in natural images or
dynamic images, not only in static images.
Conclusions
Finally, an intelligent targeting system makes possible aiming towards a desired target,
described by certain characteristics, using a high power laser and a digital image processing
algorithm. Also, the critical situations were considered in order to achieve a better performance
and a safer operation of the high power laser diode.

8
Planificare activit ăți
Nr.
crt.
Activitate
Durată
Dată început
Dată sfârșit
1 Primirea temei de licență 5 zile 8.10.2018 12.10.2018
2 Căutare documentație 56 zile 15.10.2018 9.12.2018
3 Dezvoltare aplicație 112 zile 17.12.2018 7.04.2019
4 Testare aplicație 14 zile 8.04.2019 21.04.2019
5 Tehnoredactarea lucrării 28 zile 22.04.2019 19.05.2019
6 Printarea lucrării 1 zi 24.06.2019 24.06.2019
7 Predarea lucrării 1 zi 16.07.2019 16.07.2019

9
1. Stadiu actual
1.1 Aspecte general e
Domeniul proces ării de imagini prezintă o mare importanță în ceea ce privește numărul de
aplicații în care este utilizat. Dezvoltarea unor roboți capabili să capteze și să proceseze imagini
reprezintă o tendință de evoluție a multor domenii ce necesită aut omatizări sau realizarea unor
sarcini având o complexitate mare.
Dintre cele mai des întalnite domenii care necesită roboți semi-mobili ce utilizează
procesarea imaginilor, cele mai importante sunt:
 securitate: realizarea unui sistem care să permită supravegherea unei anumite zone și
identificarea unor posibile ținte periculoase;
 medicină: identificarea anumitor zone afectate de o boală, respectiv, posibilitatea de
automatizare a procesului de cauterizare a negi lor. Datorită concentrării radiației într –
un punct foarte mic, tehnologia laser asistată de procesarea imaginilor poate fi folosită
și în intervenții chirurgicale ;
 diverse aplicații industriale: identificarea unor componente d efecte din linia de
producție , respectiv, posibilitatea de realizare a unor tăieturi precise în metal cu
ajutorul unor laseri de putere;
 astronomie: o posibilă aplicație este de a urmări un anumit obiect astronomic și, cu
ajutorul expunerii de lungă durată a celei de -a doua camere, să permită captarea unor
imagini mult mai clare în condiții de lumină slabă;
 armată: identificarea și semnalarea unor anumite persoane aflate în zone restricționate
publicului , prin procesarea unei imagini preluate cu ajutorul sateliților ;
 construcții: o astfel de aplicație permite identificarea și acoperirea unor fisuri în
barajele de acumulare.
De asemenea, alte aplicații ce includ identificarea anumitor forme se regăsesc în industria
auto, precum sisteme de parcare automată. O altă aplicație care ar put ea utiliza tehnologia laser
asistată de procesarea imaginilor este litografia siliciului, unde realizarea unor tranzistoare de
dimensiuni foarte mici necesită o precizie foarte bună.
Pentru ca aceste sisteme să opereze fără defect, trebuie considerate toate posibilitățile în
implementarea algoritmului, deoarece multe aplicații necesită precizie ridicată, iar, în industria
auto sau în medicină, funcționarea defectuoasă datorată unor erori de programare poate avea
consecințe foarte grave.
1.2 Tehnologia l aser în industria medicală
1.2.1 Aplicații ale laserilor în realizarea unor dispozitive medicale
Unul dintre avantajele majore ale laserilor este absența reziduurilor după procesarea
materialelor prime; de asemenea, această tehnologie permite realizarea unor suprafețe fără defect,
cu o precizie de ordinul micrometrilor. O consecintă a evoluției tehnologiei laser este
minimizarea dimensi unilor implanturilor, datorită posibilității realizării unor tăieturi foarte fine.
În cazul funcționării normale, o diodă laser are durata de viață de peste 10000 de ore, ceea
ce permite prelucrarea materialelor pe termen lung fără a apărea defecte datorate îmbătrânirii
componentelor electronice sau optice.

10
1.2.2 Impactul tehnologiei laser asupra industriei medicale
Construc ția primului laser în anul 1960 nu a fost doar o mare realizare a electronicii, ci a
oferit industriei medicale multe posibilități. Așa cum este prezentat în referința bibliografică [1],
Theodore Maiman a realizat primul prototip al unui laser funcțional î n Laboratorul de Cercetare
Hughes din California.
O aplicație deosebit de importantă a laserilor este tratarea cancerului . Acest tratament
presupune utilizarea radiațiilor de intensitate mare pentru a distruge sau pentru a micșora
tumorile. Avantajul major al acestei met ode este că tehnologia laser prezintă o precizie foarte
bună, deci țesuturile neafectate de cancer nu vor fi deteriorate foarte mult. Există mai multe tipuri
de laseri utilizați în tratament , așa cum este prezentat în referința bibliografică [2]:
 laser cu dioxid de carbon;
 laser cu argon;
 laser Nd:YAG.
1.3 Sisteme de țintire
1.3.1 Optică digitală TrackingPoint
Cercetătorii din armată caută noi metode pentru a îmbu nătății precizia armelor de
vânătoare, prin estimarea abaterii în funcție de anumite variabile. Compania TrackingPoint din
Texas oferă mai multe moduri de configurare a armelor semiautomate din seria PGF (Precision
Guided Firearms) . Acestea utilizează tehnologia optică digitală împre ună cu un head -up display,
pe care va fi afișat un set de date și numere , pentru a găsi locația unde ar trebui să țintească
trăgătorul. Un astfel de head -up display este reprezentat în Figura 1.1.

Figura 1.1. Luneta digitală TrackingPoint [4]

Acest sistem permite calcularea traiectoriei unui glonț în funcție de până la unsprezece
factori: înclinare, presiune barometrică, temperatură, umiditate, până și efectul Coriolis. Există un
mod de funcționare care permite persoanei să apese trăgaciul decâ t dacă aceasta a ținut cont de
calculul efectuat. Datorită preciziei ridicate, este posibilă compensarea erorilor și la distanțe

11
foarte mari. Mecanismul constă din zeci de microprocesoare și componente optice și electrice,
componente opto -electronice și componente electro -mecanice , împreună cu un algoritm de
procesare a imaginilor și identificare a formelor.
De asemenea, există un aspect media al acestei aplicații realizate de către firma
TrackingPoint . Se poate realiza o transmitere în direct a videoclipului înregistrat de către sistemul
optic digital pe unele rețele sociale , sau poate fi încărcat pe internet ulterior , la dorința
utilizatorului [3].
1.3.2 Poziționa rea automată a unui telescop
Pentru a putea obține imagini clare cu ajutorul expunerii de lungă durată, în condiții de
lumină redusă, este necesară modificarea constantă a poziției telescopului prin menținerea unui
anumit element pe centrul imaginii camerei video. În timpul observării unui corp ceresc, poziția
telescopului va trebui modifica tă continuu de către utilizator pentru a putea capta imagini mai
clare.
Aceste erori de ajustare sunt foarte mici, de ordinul arcsecundelor, iar corectarea manual ă
nu este posibilă. În schimb, se poate utiliza un mecanism de corecție electric, care modifică
constant viteza motoarelor care poziționează telescopul în funcție de viteza de deplasare a
corpului ceresc [5].
Soluția ar fi utilizarea unui mecanism automat de ajustare care permite reglarea poziției
telescopului în mod automat, având o precizie foarte bună. Totuși, acest mecanism nu va putea fi
folosit decât în condițiile în care toate componentele telescopului sunt fixe, fără a mai apărea alte
erori. Aceast ă tehnologie a apărut la începutul secolului 21 datorită evoluției sistemelor de
captare a imaginilor, iar, de cele mai multe ori, poate fi exploatată cu ușurință și de către amatori.
În cele mai multe cazuri sistemul de captare și ajustare constă dintr -o cameră video CCD
(Charged Coupled Device) care trimite imaginile către calculator unde sunt procesate și analizate ,
iar în funcție de rezultat calculatorul trimite un semnal de comandă pentru cele două motoare. Un
astfel de sistem poate utiliza și camere v ideo cu cost redus (sau CMOS), ceea ce face această
tehnologie foarte accesibilă.
Unele camere video CCD au încorporate anumite funcții cum ar fi ”urmărire și
acumulare”. Această funcție permite captarea mai multor imagini cu expunere de scurtă durată,
apoi suprapunerea acestora, pentru a putea găsi cea mai bună setare pentru a capta o imagine cu
expunere de lungă durată.
Așa cum este specificat în referința bibliografică [6], exist ă mai multe metode de realizare
a unui astfel de sistem. Schema de princ ipiu a primei me tode este prezentată în Figura 1 .2.

Figura 1 .2. Prima metodă [6]

12

Această metodă constă în trimiterea semnalelor de comandă pentru motoare prin interfața
RS-232 cu ajutorul unui adaptor USB.

Figura 1 .3. A doua metodă [6]

A doua metodă presupune trimiterea comenzilor prin intermediul interfeței ST -4 cu
ajutorul camerei video (Figura 1 .3). Cea de -a treia metodă elimină necesitatea unui conector ST -4
pentru camera video și utilizează un adaptor USB – ST-4 pentru a transmite s emnalul de
comandă către motoare (Figura 1 .4).

Figura 1.4. A treia metodă [6]

13
2. Fundamentare teoretică
2.1 Laseri
Dioda laser este un dispozitiv semiconductor care emite un flux de radiații coerent a căror
fază și frecvență este identică. Emisia stimulată are loc atunci când dioda este parcursă de un
curent electric și radiațiile emise sunt regăsite fie în spectrul vi zibil, fie în infraroșu [7].
Există multe aplicații care necesită utilizarea diodelor laser, iar printre cele mai
importante se regăsesc [9]:
 memorii optice;
 transmisii de date prin fibra optică;
 aplicații militare;
 intervenții chirurgicale;
 imprimante laser;
 unitate CD sau DVD a calculatoarelor;
 dispozitie cu control de la distanță;
Schema de ansamblu a unei diode laser este prezentat ă în Figura 2.1 .

Figura 2.1. Schema de principiu a unei diode laser în undă continuă [7]

Datorită dimensiunii reduse a incintei în ca re este plasat semiconductorul pot apărea
probleme de divergență. Acest fenomen apare din cauza faptului că dimensiunea respectivă este
comparabilă cu lungimea de undă.
Comparate cu alți laseri convenționali, diodele laser sunt remarcate prin dimensiunea și
masa redusă. Mai mult, în comparație cu laserii cu dioxid ce carbon ce emit pe lungimea de undă
de 10600 de nanometri, fiind alimentat la o tensiune de ordinul kilovolților, o diodă laser de
putere necesită un curent constant de ordinul amperilor. Nu în ultimul rând, datorită puterii
reduse a acestor diode, este posibilă utilizarea lor în transmisia datelor.
Există mai multe categorii ale laserilor, iar cele mai importante sunt [11]:
 în undă continuă;

14
 în impulsuri;
În Figura 2. 2 sunt prezentate formele de undă pentru puterea de ieșire și nivelele de
tranziție a acestor laseri prezentați anterior, în cazul laserilor ce emit în spectrul infraroșu.

Figura 2.2. Exemplu de forme de undă și nivele de tranziție [10]

2.1.1 Laseri în undă continuă
Se poate observa că , în cazul laserilor în undă continuă , sub acțiunea unui curent constant
aplicat joncțiunii p -n, are loc emisia stimulată a fotonilor. Aceas tă emisie este menținută la rândul
ei din cauza fotonilor reflectați de către cele două oglinzi (una cu un factor de reflexie de 100%,
iar cealaltă de aproximativ 90% reflexie și 10% transmisie) care vor rupe alți electroni din
materialul semiconductor, av ând loc a stfel emisia unui alt foton.
Datorită distribuției nivelelor de tranziție , în cazul acestor laseri, procesul se desfășoară
continuu, deoarece electronii vor elibera alți fotoni sub acțiunea curentului electric. Astfel, du pă
repetarea acestui cicl u, se produce un efect de avalanșă, iar în acest caz, emisia stimulată continuă
până la dispariția curentului electric.
Avantajul major al acestor laseri este simplitatea circuitului de alimentare și puterea de
ieșire continuă. Există multe aplicații care necesită folosirea acestor diode laser în undă continuă,
iar printre cele mai importante sunt [12]:
 prelucrarea metalelor, tăieturi și suduri;
 surse de lumină cu efecte speciale;
 gravare și foraj;
 diverse aplicații stomatologice.
Se poate observa în Figu ra 2.2 că puterea de la ieșire în cazul ideal este constantă. În
cazul real, datorită creșterii temperaturii, puterea de la ieșire scade, fiind necesar un circuit de
control a temperaturii în buclă închisă.

15
2.1.2 Laseri în impulsuri
Acest tip de laseri emit radiație sub forma unor impulsuri și nu sub forma unui flux
continuu. În funcție de durata impulsului, energia impulsului, rata de repetiție și lungimea de
undă dorită, există mai multe metode pentru generarea impulsurilor [15]:
 pentru impulsuri de or dinul nanosecundelor, se folosesc laseri în cvasiimpuls,
comandați în impulsuri la o rată de repetiție mai mare;
 pentru impulsuri în spectrul ultraviolet se poate folosi laserul cu excimer;
 pulsuri de ordinul picosecundelor se pot genera cu ajutorul laserilor cu
semiconductor;
 pentru generarea pulsurilor de durată mare se poate utiliza dioda laser.
Există mai multe domenii în care sunt utilizați laserii în impulsuri, precum industria
medicală (în cazul laserului cu excimer), foraje și gravare în difer ite metale, procesarea
materialelor în impulsuri pentru a limita temperatura la care este expus acest material.
2.2 Surse de alimentare
Sursa de alimentare a unei diode laser în undă continuă constă de obicei dintr -o sursă de
curent constant. Datorită coef icientului negativ de temperatură al semiconductoarelor nu se poate
folosi o sursă de tensiune constantă, deoarece creșterea temperaturii va duce la scăderea tensiunii
de pe dioda laser, iar pentru menținerea aceleiași tensiuni pe diodă curentul de ieșire al sursei de
tensiune va crește, datorita faptului că rezistența internă a diodei va scădea cu temperatura. După
reluarea acestui ciclu, temperatura va crește dramatic, apoi se va crea o buclă de reacție pozitivă
între temperatura diodei și curentul absorb it, iar dioda va fi distrusă datorită fenomenului de
ambalare termică [8].
De asemenea, în cazul utilizării unor stabilizatoare de curent în comutație, există situații
în care trebuie luate anumite măsuri de siguranță atunci când întrerupătorul comută, deo arece
proiectarea defectuoasă a unui astfel de circuit poate duce la apariția unor curenți tranzitorii
inverși care pot fi mult mai mari decât curentul invers maxim prin dioda, specificat în foile de
catalog.
Ecuația care descrie caracteristica tensiunii î n funcție de temperatura unei diode
convenționale este ecuația lui Shockley [16]:

𝐼𝐷=𝐼𝑆𝐴𝑇(𝑇)(𝑒𝑉𝐷
𝑛𝑉𝑡 −1) (1)

Aceste variabile au următoarea semnificație:
 𝐼𝐷 este curentul prin diodă;
 𝐼𝑆𝐴𝑇(𝑇) este curentul de saturație;
 𝑉𝐷 este tensiunea de pe diodă;
 𝑛 reprezintă factorul de calitate;
 𝑉𝑡 reprezintă tensiunea termică, fiind dată de raportul dintre constanta lui
Boltzmann înmulțită cu temperatura absolută și sarcina unui electron.

16
Se poate demonstra că, rezolvând ecuația (1), diferența de potenția l de la bornele diodei
este puternic dependentă de temperatură.
Există posibilitatea de a utiliza o sursă de tensiune constantă doar în cazul în care aceasta
are implementat un circuit intern de protecție la scurtcircuit sau un circuit pentru reglarea
curentului maxim.
Un exemplu de stabilizator liniar de curent realizat cu circuitul integrat LM317 este
reprezentat în Figura 2.3.

Figura 2.3. Stabilizator de curent realizat cu LM317 [17]

Conform foilor de catalog ale circuitului integrat LM317, ecuația care determină curentul
maxim de ieșire este [18]:

𝐼𝑂𝑈𝑇 _𝑀𝐴𝑋 =𝑉𝑎𝑑𝑗
𝑅 (2)

În ecuația (2), tensiunea 𝑉𝑎𝑑𝑗 este constantă și egală cu aproximativ 1.2 volți. Rezolvând
această ecuație, se poate determina rezistența necesară pentru un anumit curent dorit prin dioda
laser.
Curentul maxim al acestei surse de curent nu ar trebui să fie mai mare de 1.5 amperi. În
cazul în care este necesar un curent mai mare prin dioda laser, se pot conecta mai multe circuite
integrate LM317 în paralel.

17

Figura 2.4. Conexiune paralel cu LM317 [19]

Circuitul prezentat în Figura 2.4 poate fi folosit doar dacă cele două circuite integrate sunt
alimentate de la aceeași sursă de tensiune. În cazul utilizării unor surse separate pot apărea
oscilații ale curentului la ieșire. De asemenea, se pot utiliza alte circuite integrate similare cu
LM317 în locul acestui circuit în cazul în car e stabilizatorul respectiv funcționează la un curent
mai mare [19].
Datorită faptului că tranzistorul regulator este menținut în regiunea activă normală,
eficiența acestor stabilizatoare este redusă foarte mult în cazul în care tensiunea de la bornele
diodei este foarte mică. Energia pierdută este disipată sub formă de caldură, iar circuitul integrat
va necesita un radiator, ceea ce înseamnă că acest circuit nu va putea fi utilizat în aplicații care
necesită un circuit de dimensiune cât mai mica.
În cazul în care nu este posibilă utilizarea unui stabilizator liniar de curent, se poate
implementa un stabilizator în comutație, având un randament semnificativ mai bun. Însă, un
stabilizator în comutație are mai multe dezavantaje: acestea au un timp de răspuns mai mare la
modificările bruște ale sarcinii, s -ar putea să apară unele oscilații la schimbarea stării (on -off sau
off-on), iar proiectarea circuitul este mai mult complexă .
Schema de principiu a unui astfel de stabilizator în buclă închisă este prezentată în Figura
2.5, sub forma unei scheme bloc .

Figura 2.5. Principiul unui stabilizator de curent în buclă închisă

18
Curentul de le ieșire este determinat de câștigul senzorului de curent și de circuitul de
condiționare a semnalului. Un eșantion din curentul de la ieșire este transmis acestui circuit, iar în
funcție de semnalul de eroare rezultat comanda transmisă elementului de execuție va fi
modificată.
Acest tip de stabilizator poate fi implementat prin modificarea unui stabilizato r de
tensiune în comutație în buclă închisă, prin introducerea unui rezistor de valoare foarte mică,
având rolul de senzor de curent, și prin implementarea unui amplificator diferențial pentru a
mărura diferența de potențial ce apare la bornele rezistorulu i.
În funcție de tensiunea de la intrare și tensiunea de pe diodă, pot fi considerate
următoarele cazuri:
 se va utiliza un stabilizator de curent coborâtor atunci când tensiunea de la intrare
este mult mai mare decât tensiunea de pe diodă;
 se va utiliza un stabilizator de curent ridicător dacă tensiunea de la intrare este mai
mică decât tensiunea de pe diodă;
 un stabilizator de curent inversor va fi utilizat doar dacă tensiunea de la intrare
este apropiată de tensiunea de pe diodă.
În cazul laserilor comand ați în impulsuri, sursa de alimentare este un circuit care încarcă
mai multe condensatoare legate în paralel la tensiuni de ordinul sutelor de volți (în cazul laserilor
cu rubin), urmând să descarce toată energia sub forma unui impuls. În cazul unei rate d e repetiție
mai mare a impulsurilor, sunt utilizate alte circuite având timpi de comutație cât mai mici, iar
utilizarea unor condensatoare încărcate la tensiuni mari nu mai este posibilă.
Un astfel de circuit este prezentat în Figura 2.6 .

Figura 2.6. Sursă de alimentare pentru un laser comandat în impulsuri [20]

Această sursă de alimentare constă dintr -un circuit rezonant folosit pentru a încărca toate
condensatoarele la tensiuni ridicate. De asemenea, există și o rețea folosită pentru formarea
impulsurilor, circuite de siguranță și de monitorizare, fiind implementat pentru un laser cu

19
neodim căruia i se aplică impulsuri de energie mare. Energia maximă care poate fi st ocată este de
aproximativ 1.5 MJ, iar sursele de curent constant necesare încărcării condensatoarelor sunt
rezonante și funcționeaza la 50 Hz [20].
Schema bloc a unui astfel de circuit este prezentată în Figura 2.7.

Figura 2.7. Schema bloc a circuitulu i de încărcare a condensatoarelor

2.3 Servomotor
Servomotorul este o componentă acționată electric utilizată în aplicațiile care necesită o
mișcare reglabilă. Există două categorii de servomotoare [21]:
 servomotor de curent continuu; acestea sunt mai puțin costisitoare decât cele de curent
alternativ și sunt folosite în aplicații unde este necesară dimensiunea mică și un
consum redus de putere ;
 servomotor de curent alternativ; acestea tolerează curenți mai mari și sunt utilizate de
obicei în aplicații industriale.
Un motor servo de curent continuu este compus dintr -un potențiometru, un circuit de
control, un motor electric și un sistem cu roți dințate. Dacă axul motorului se rotește, rezistența
potențiometrului se va schimba , iar circuitul de control p oate detecta această mișcare și poate
estima durata semnalului de comandă pentru motorul electric. Aceste motoare au trei fire:
alimentare, masă și semnal de comandă.
Atunci când axul servomotorului este în poziția dorită, circuitul de control nu mai
alimentează motorul electric, iar dacă axul motorului este mișcat de la poziția dorită, la
recepționarea următorului puls axul motorul va reveni la poziția inițială.
În Figura 2.8 este ilustrat în partea stângă componentele interne ale unui servomotor, iar
în partea dreaptă servomotorul asamblat.

20

Figura 2.8. Componentele unui servomotor [21]

Servomotoarele de curent continuu sunt controlate prin intermediul unui semnal modulat
în factor de umplere (Pulse Width Modulation) transmis circuitului de control. În foile de catalog
ale servomotorului este specificată durata maximă a unui puls, durata minimă a pulsului,
frecvența semnalului modulat, cuplul și cursa maximă (de obicei 180 ° sau 360 °). Se poate calcula
forța maximă exercitată de axul motorului cu ajutorul ecuației (3).

𝑇=𝐹∙𝑟 (3)

Variabilele din ecuația precedentă au următoarea semnificație:
 𝑇 este cuplul servomotorului specificat în foile de catalog;
 𝐹 este forța exercitată de axul motorului;
 𝑟 este raza discului atașat de ax ul motorului.
În Figura 2.9 sunt ilustrate semnalele de comandă și poziția unui motor servo, a l cărui
sens de rotație este în sensul acelor de ceasornic.

Figura 2.9. Semnalele d e comandă pentru un servomotor de curent continuu [21]

21
Domeniile în care sunt utilizate aceste motoare sunt: controlul poziției unor componente
ale mașinăriilor industriale, industria farmaceutică, industria chimică și în unele linii de producție
unde es te necesară repetarea unei mișcări de mai multe ori.
2.4 Microcontroller -ul
Un microcontroller este o componentă electronică având în interiorul său un
microprocesor, memorie de date, memorie de instrucțiuni și alte resurse hardware. Această
componentă poate fi privită ca un calculator în miniatură, însă există diferențe semnificative între
un microcontroller și un microprocesor, specificate în Tabelul 1.

Microcontroller Microprocesor
Potrivit pentru aplicații ce necesită putere de
procesare mică Potrivit pentru aplicații ce necesită putere mare
de procesare
Resursele hardware sunt limitate Dispune de mai multe resurse hardware
Performanță relativ slabă Performanță foarte bună
Resursele hardware sunt conectate intern Resursele hardware se conecteaza extern
Consum de putere mic Consum de putere ridicat
Cost mic Costuri ridicate

Tabelul 1. Diferențele dintre un microcontroller și un microprocesor

Memoria de date a unui microcontroller este utilizată pentru stocarea variabilelor folosite
în calculele aritmetice. Există mai multe tipuri de memorii de date [22]:
 memoria SRAM (Static Random Access Memory) este o memorie volatilă cu acces
aleator, de obicei utilizată în realizarea memoriei cache. Densitatea memoriei este de
un bit pentru șase tranzistoare conectate sub forma unui bistabil. Viteza de transfer
este mai mare, iar costurile sunt ridicate;
 memoria DRAM (Dynamic Random Access Memory) este o memorie volatilă cu
access aleator, utilizată de obicei ca resursă hardware pentru microproce sor. Această
memorie are o densitate de un bit pentru fiecare tranzistor și funcționează prin
încărcarea și descărcarea unui condensator. Viteza de transfer este mai mică, iar
costurile sunt reduse;
 memoria FeRAM (Ferroelectric Random Access Memory) este o memorie cu acces
aleator de tip non -volatilă. Structura este similară cu memoria DRAM, stratul
dielectric fiind înlocuit cu un strat feroelectric.
Memoria de program (sau de instrucțiuni) este utilizată pentru stocarea instrucțiunilor.
Datele scrise în mi crocontroller trebuie să persiste și după ce microcontroller -ul nu mai este
conectat la o sursă de tensiune. Există mai multe categorii de memorii de program [23]:
 memorii OTP (One Time Programmable), ce pot fi scrise o singură dată. Scrierea se
face prin aplicarea unei tensiuni ridicate pentru a șterge sau pentru a crea unele
legături în interiorul memoriei;
 memorii EPROM (Erasable Programmable Read Only Memory), care pot fi scrise și
șterse de mai multe ori. Scrierea se face prin aplicarea unei tensiuni r idicate, iar
ștergerea se realizează prin expunerea la radiații ultraviolete.

22
 memorii EEPROM (Electrically Erasable Programmable Read Only Memory), care
poate fi scrisă și ștearsă de mai multe ori prin aplicarea unor semnale electrice.
De asemenea, există două arhitecturi după care se poate realiza un microcontroller. În
cazul arhitecturii Von Neumann, performanțele sunt mai slabe, memoria de date și memoria de
instrucțiuni folos esc același spațiu de adresare, majoritatea instrucțiunilor sunt completate după
doua perioade de tact, iar costurile realizării acestei arhitecturi sunt scăzute. În cazul arhitecturii
Harvard, performanțele sunt ridicate, memoria de date și de instrucțiun i sunt separate , iar o
instrucțiune poate fi completată într -o perioadă a semnalului de tact [24].

2.5 Controlul și reglajul temperaturii
De cele mai multe ori, în cazul laserilor de putere, este necesar un control al temperaturii
pentru a preveni încălz irea excesivă a componentei. Un alt efect al creșterii temperaturii este
scăderea puterii de ieșire a diodei laser. În Figura 2.10 este reprezentată puterea de ieșire în
funcție de temperatura unei diode laser realizată din fosfură de indiu [13].

Figura 2.10. Puterea de ieșire în funcție de temperatură [13]

Pentru a menține temperatura constantă, este necesară implementarea unui sistem de
control în buclă închisă, având o funcționalitate similară cu cel prezentat în Figura 2.5. Conform
specificațiilor d in referința bibliografică [14], creșterea temperaturii are un impact negativ asupra
unor mărimi :
 lungimea de undă centrală este proporțională cu temperatura de funcționare.
Există o relație care demonstrează că această dependență este una liniară. La
creșterea temperaturii are loc creșterea lungimii de undă;
 lățimea benzii de emisie crește odată cu temperatura;
 caracteristica de ieșire a diodei laser se modifică la creșterea temperaturii. Cu cât
temperatura crește, cu atât puterea de ieșire scade.

23
Pentru i mplementarea unui circuit de control al tempera turii se pot utiliza senzori de
temperatură rezistivi, de exemplu termistorul . Există două categorii de termistori: termistori NTC
(Negative Temperature Coefficient), a căror rezistență scade la creșterea temperaturi i și termistori
PTC (Positive Temperature Coefficient), a căror rezistență crește cu temperatura . Caracteristica
acestor componente este descris ă de ecuația Steinhart -Hart [25].

1
𝑇=𝐴+𝐵ln𝑅+𝐶ln𝑅3 (4)

Aceste variabile au următoarea semnificație:
 T este temperatura absolută;
 R este rezistența termistorului;
 A, B, C sunt coeficienții ecuației Steinhart -Hart.
Principalele avantaje ale termistorului sunt prețul și dimensiunea redusă. De asemenea,
comparat cu alți senzori rezistivi, termistorul are o sensibilitate mai mare și poate detecta variații
mici ale temperaturii. Dezavantajul termistorului este variația coeficientul de temperatură cu
temperatura, ceea ce înseamnă că această caracte ristică va fi liniarizată mai greu. Această
neliniaritate nu este ilustrată în ecuația (4).
2.6 Prelucrare de imagine
O imagine poate fi definită ca o funcție bidimensională 𝐹(𝑥,𝑦), unde cele două variabile
sunt coordonate spațiale iar, în cazul unei imagini reprezentate pe nivele de gri, valoarea funcției
în acel punct reprezintă valoarea luminanței a pixelului respectiv. Intervalul în care valoarea
luminanței poate lua valori este între 0 și 2𝑛−1, unde n reprezintă numărul de biți pe care este
repre zentată luminanța. În cazul imaginilor binare, există două valori posibile ale luminanței. Se
poate spune că, în urma celor descrise mai sus, aceste nivele extreme pot fi interpretate ca nivelul
minim al luminanței, respectiv nivelul maxim al luminanței . Cu alte cuvinte, aceste două nivele
extreme au valoarea 0 sau 1.
Procesarea digitală a unei imagini este un proces utilizat pentru a extrage anumite
informații dintr -o imagine captată de un dispozitiv. De asemenea, prin intermediul unor algoritmi
implement ați într -un anumit mediu de dezvoltare, este posibilă detecția unor obiecte pe baza unor
proprietăți. Prelucrarea unei imagini implică următorii pași:
 captarea unei imagini color cu ajutorul unui dispozitiv sau echipament;
 procesarea imaginii, prin utiliza rea unor algoritmi specifici aplicației;
 analiza rezultatului obținut.
De cele mai multe ori, reprezentarea imaginii captate este RGB, descrisă prin intensități
ale culorilor roșu, verde, respectiv albastru, sau HSV, descrisă prin nuanță, saturație și valoarea
luminanței. Unii algoritmi de procesare a imaginilor lucrează folosind imagini reprezent ate pe
nivele de gri, iar singura posibilitate de aplicare a algoritmului respectiv este conversia imaginii
color. Un exemplu în această situație este algoritmul de detecție a regiunilor extreme maxim
stabile ( Maximally Stable Extremally Regions ).

24
Acest a lgoritm este utilizat pentru detecția unor anumite caracteristici. Stabilitatea unei
regiuni extreme este inversul variației unei regiuni atunci când intensitatea luminanței este
modificată cu un anumit factor. Variația poate fi definită prin următoarea ec uație [26]:

𝑉=|𝑅(+∆)−𝑅 |
|𝑅| (5)

Variabilele din ecuația de mai sus au următoarea semnificație:
 𝑉 este variația calculată;
 |𝑅| reprezintă aria totală regiunii extreme;
 𝑅(+∆) este regiunea extremă;
 ∆ este o constantă utilizată pentru scalarea variației nivelului de gri;
 |𝑅(+∆)−𝑅| reprezintă diferența ariei între cele două regiuni.
În cazul unei regiuni stabile, conform ecuației (5), această variație este mică. Însă, în
anumit e situații, această regiune poate fi rejectată.
O situație în care apare rejectarea accidentală a unei regiuni apare atunci când mediul din
care este captată imaginea este slab iluminat, rezultând o imagine reprezentată pe nivele de gri în
care luminanța variază slab în regiunile de interes.

25
3. Implementarea soluției adoptate
3.1 Schema bloc de funcționare a aplicației
Pentru simplitatea înțelegerii întregului sistem se va utiliza următoarea schemă bloc care
va ilustra principalele elemente componente ale acestei aplicații. În Figura 3.1 este prezentată
schema bloc a sistemului de țintire.

LaserDe putere
De mică
putereSistem de
alimentareSistem de
control al
temperaturii
Sistem de
control al
motoarelor
Captură
videoAnaliză
video

Figura 3.1. Schema bloc a sistemului de țintire

După cum se observă în Figura 3.1, în urma captării și analizei unei imagini cu ajutorul
unei camere video se poate trimite un semnal de comandă către cele două servomotoare. Aceastea
sunt alimentate la o tensiune de continuă de 5V și au rolul de a ghida laserul de putere pentru a
ținti spre o potențială țintă. Este de preferat utilizarea unor servomotoare ce dezvoltă un cuplu de
valoare mare pentru obținerea unui răspuns rapid.
Rolul sistemului de control al temperaturii este de a asigura menținerea unei temperaturi
constante a modului laser de putere, și, de asemenea, a unui consum constant de energie la
stabilirea echilibrului termic. Un eșantion din temperatura de referință este preluat și adus la
intrarea sistemului în antifază pentru a compensa difere nța de temperatură între temperatura de
referință și temperatura măsurată.

26
Analiza și captura video s -a implementat în mediul de dezvoltare Matlab R2018a prin
utilizarea unor extensii care facilitează achiziția unei imagini prin intermediul protocolului U SB
(Universal Serial Bus), respectiv analiza imaginii utilizând algorimul pentru detecția regiunilor
extreme maxim stabile.
Sistemul de control al servomotoarelor utilizează un microcontroller pentru a transmite
semnalul de comandă motoarelor, în urma pro cesării imaginii captate cu ajutorul camerei video.
Laserul de putere mică are rolul de a facilita calibrarea manuală a întregului sistem,
deoarece erorile care apar în urma procesării imaginii și transmiterii semnalului de comandă sunt
erori mecanice.
3.2 Implementarea modulelor LASER
Pentru implementarea modulului LASER de putere mare s -a optat pentru o diodă
NDG7475 , un modul de cupru de 30mm pentru a asigura transferul de căldură dintre capsula
diodei și sistemul de răcire și o lentilă pentru focali zarea fasciculului de radiație . Din foile de
catalog ale producătorului au fost extrase următoarele informații [27]:
 curentul maxim direct este de 1.8A;
 curentul invers maxim de 85mA;
 temperatura de funcționare este cuprinsă între 0 și 50 °C;
 lungimea de undă centrală este de 520nm;
 curentul de prag de 300mA;
 căderea de tensiune de 4.6V;
 puterea optică de ieșire de 1W.
Pentru implementar ea modulului de mică putere s -a utilizat o diodă LASER U -LD-
650543A având următoarele specificații [28]:
 curentul de prag de 12mA;
 curentul de funcționare de 18mA;
 tensiunea de funcționare este de 2.1V;
 lungimea de undă centrală de 655nm;
 temperatura de funcționare cuprinsă între -10 și 40 °C;
 puterea optică de ieșire de 5mW.
Pentru utilizarea și testarea modulului LASER de putere mare este necesară protejarea
ochilor utilizatorului cu ajutorul unor ochelari de protecție pentru o anumită lungime de undă,
deoarece expunerea prelungită la radiații de intensitate mare, reflectate de pe unele suprafețe
lucioase, va deteriora r etina. În funcție de puterea optică de ieșire a laserului, se poate determina
densitatea optică minimă necesară ochelarilor de protecție.
În cazul unui laser cu lungimea de undă centrală de 532nm, ecuația utilizată pentru
calculul densității optice este [29]:

𝐷=log 10𝑃 (6)

Aceste variabile au următoarea semnificație:

27

 𝐷 este densitatea optică a ochelarilor de protecție;
 𝑃 este puterea optică a laserului măsurată în miliwați.
În urma acestui calcul se va alege o pereche de ochelari de protecție având o densitate mai
mare sau egală cu cea rezultată din ecuația (6). De exemplu, dacă este utilizat un laser cu o putere
optică de 1W și lungimea de undă centrală de 532nm, densitatea optică a ochelarilor de protecție
va fi mai mare sau egală cu 3. Dacă lungimea de undă a laserului nu este de 532nm se va utiliza
sistemul de calcul din referința bibliografică [29].
În cazul acestor diode LASER, este foarte importantă protecția împotriva descărcărilor
electrostatice prin terminalele dispozitivului, deoarece acestea ar putea reduce durata de viață sau
ar putea distruge dispozitivul.
Pentru a oferi posibilitatea controlului acestui laser prin intermediul unui singur buton ,
dintr -o interfaț ă se va utiliza un circuit de comandă cu un tranzistor MOS cu canal P, prezentat în
Figura 3.2.

Figura 3.2. Circuit pentru comanda sarcinii cu ajutorul microcontroller -ului (stânga) și rezultatul
simulării (dreapta)

După cum se observă în acest circuit , elementul care controlează starea laserului de putere
și a sistemului de răcire este un tranzistor MOS, reprezentate de un rezistor de valoare mică.
Atunci când microcontroller -ul (ilustrat printr -o sursă de semnal dreptunghiular) recepționează o
anumită secvență printr -un protocol de comunicare, datorită algoritmul implementat în memoria
acestuia, va seta starea unui pin în ’1 ’ logic. Prin rezistorul 𝑅3 se va forma un curent de valoare

28
mică, suficient pentru a satura tranzistorul , iar datorită di vizorului rezistiv, diferența de tensiune
sursă -grilă va fi suficient de mare și tranzistorul MOS se va comporta ca un comutator. Rolul
rezistorului 𝑅1 este de a preveni descărcarea bruscă capacităților parazite ce apar între terminalele
tranzistorului MO S, ceea ce ar putea distruge tranzistorul bipolar. Se poate demonstra, datorită
efectului Miller, că una dintre capacități este puternic dependentă de tensiunea aplicată în sursă.
Se utilizează de obicei un rezistor de valoare mică pentru ca divizorul de t ensiune din grilă să
aducă tranz istorul MOS în regiunea liniară. Capacitățile parazite ale tranzistorului bipolar au fost
considerate neglijabile.
De asemenea, se poate utiliza un circuit cu un releu și o diodă de fugă în locul circuitului
prezentat mai su s.
În cazul în care nu se specifică curentul prin baza tranzistorului bipolar, se vor utiliza
următoarele ecuații pentru a determina curentul necesar saturării tranzistorului.

𝐼𝐵=𝑉1−𝑉𝐵𝐸
𝑅3 (7)

Variabilele din ecuația (7) au următoarea semnificație:
 𝐼𝐵 este curentul prin baza tranzistorului bipolar;
 𝑉1 este tensiunea corespunzătoare stării logice ’1’;
 𝑉𝐵𝐸 este tensiunea bază -emitor, de obicei considerată 700mV. Această tensiune
este dependentă de curentul prin baza tranzistorului, așa cum este specificat în
ecuația (8).

𝑉𝐵𝐸=𝑘∙𝑇
𝑞ln𝐼𝐶
𝐼𝑆 (8)

Ecuația (8) este descrisă de următoarele mărimi:
 𝑘 este constanta lui Boltzmann;
 𝑇 este temperatura absolută;
 𝑞 este sarcina unui electron, egală cu 1.6∙10−19 C
 𝐼𝑆 este curentul de saturație.

𝐼𝐶<𝛽∙𝐼𝐵 (9)

Cu ajutorul ecuației (9) se va determina un anumit curent de bază necesar saturării
tranzistorului bipolar, iar prin rezolvarea ecuației (7) pentru acea valoare a curentului va fi
determinată valoarea rezistorului 𝑅3.

29
3.3 Sistem de control al temperaturii
În cazul laserilor de putere este necesar un control în buclă închisă a temperaturii
dispozitivului pentru a asigura menținerea acestei mărimi la o valoare de referință. În cazul
acestei aplicații s -a optat pentru un control de tip proporțional, considerând puterea disipată de
către dispozitivul semiconductor constantă. Schema de principiu a unui sistem de control al
temperaturii este prez entată în Figura 3.3.

Temperatură
de referință+
-Element de
execuție
TraductorProcesr(t) u(t)
e(t)

Figura 3.3. Schema bloc a sistemului de control al temperaturii

Se poate observa că semnalul de comandă 𝑢(𝑡) depinde de semnalul de eroare 𝑒(𝑡),
furnizat de către traductor, și de valoarea de referință 𝑟(𝑡), fiind o valoare aplicată la intrarea
sistemului. Traductorul are rolul de a preleva un eșantion din temperatura diodei LASER și de a
transf orma această mărime într -un alt semnal, de exemplu în tensiune. Pe baza semnalului de
eroare are loc modificarea comenzii asupra elementului de execuție, care controlează puterea
transmisă către proces. Altfel spus, acest element de execuție va modifica energia consumată de
către sistemul de răcire în fun cție de semnalul de comandă.
În cazul unui control de tip proporțional, acest semnal de comandă depinde proporțional
de semnalul de eroare, conform ecuației (10).

𝑢(𝑡)=𝐾𝑃∙𝑒(𝑡) (10)

În această ecuație 𝐾𝑃 este cons tanta componentei proporționale.
Se observă că, această ecuație se obține atunci când celelalte constante ale unui control
PID (proporțional integral derivat), respectiv 𝐾𝐼, constanta integrativă și 𝐾𝐷, constanta deriv ativă,
sunt egale cu zero. Cu alte cuvinte, semnalul de comandă depinde proporț ional de semnalul de
eroare, însă, datorită utilizării unui control pur proporțional, corecția erorii staționare la poziție nu
mai este posibilă.
Pentru această aplicație, senz orul de temperatură pentru care s -a optat este un termistor
NTC (Negative Temperature Coefficient) de 10kΩ. Caracteristica acestuia este ilustrată în Figura
3.4 [30].

30

Figura 3.4. Caracteristica termistorului [30]

În graficul prezentat mai sus se pot observa două caracteristici, o caracteristică a
rezistenței termistorului fără rezistor conectat în paralel, iar cealaltă caracteristică ilustrează
situația în care avem un rezistor conectat în paralel. În acest caz, variația rezistenței cu
temperatura est e aproape liniară pentru temperaturi cuprinse între 10 și 90 °C.
Avantajul major al acestor componente este timpul de răspuns foarte mic, datorită
dimensiunii reduse, prețul mic și sensibilitatea ri dicată. În această aplicație, termistorul este legat
într-o conexiune în punte.

Figura 3.5. Conexiune în punte

31
În Figura 3.5 este ilustrată valoarea de referință a termistorului reprezentată de rezistorul
𝑅7, iar rezistorul 𝑅6 reprezintă termistorul NTC. Atunci când temperatura crește, rezistența
termistorului se va micșora, iar tensiunea de pe rezistorul 𝑅8 va crește. Comparând aceste două
valori, temperatura măsurată de termistor și tensiunea de referință corespunzătoare termistorului,
se poate transmit e un semnal de comandă elementului de execuție. În acest caz, termistorul
reprezintă traductorul, iar valoarea de referință este tensiunea de pe rezistorul 𝑅9. Datorită valorii
de 12kΩ a acestui rezistorului 𝑅7, temperatura de referință va fi de aproxim ativ 21 °C,
corespunzătoare pentru aceeași valoare a rezistenței termistorului.
Prin intermediul unui amplificator diferențial implementat cu ajutorul unui amplificator
operațional și a patru rezistoare, această diferență de tensiune se poate amplifica și aplica
elementului regulator.

Figura 3.6. Amplificator diferențial

În această situație, pentru un interval de temperatură cuprins între 20 °C și 30 °C, această
variație a tensiunii a fost considerată liniară. În cazul real, această caracteristică are o anumită
abatere față de o dreaptă. Se observă ca, pe ambele căi ale reacției, rezistorii sunt egali. Valoarea
amplificării se poate determina cu ajutoru l ecuației (11) , iar tensiunea de la ieșirea
amplificatorului diferențial se calculează cu relația (12) .

𝐴=𝑅𝑓
𝑅𝑔 (11)

𝑉𝑜𝑢𝑡=𝐴∙(𝑉𝑐𝑚𝑑 −𝑉𝑟𝑒𝑓) (12)

Această amplificare se calculează în funcție de punctul dorit în care semnalul de comandă
va atinge valoarea maximă. În acest caz, tensiunea de alimentare a montajului în punte este de
8V, iar, la o temperatură de aproximativ 30 °C, căderea de tensiune de pe rezistorul 𝑅8 este de

32
4.44V. Căderea de tensiune de referință este de 3.63V, iar diferența de potențial va fi de 0.803V.
Pentru ca această diferență de potențial amplificată să atingă valoarea de 12 volți (a tensiunii de
alimentare), prin raportul acestor două tensiuni se obține o amplificare de 15, iar cei patru
rezistori pot fi determinați cu ajutorul ecuației (11).
Utilizând această configurație cu factorul de amplificare egal cu 12, se obține valoarea
maximă a semnalului d e comandă pentru o temperatură de aproximativ 33 °C. Este importantă
utilizarea unor amplificatoare operaționale rail -to-rail pentru a permite tensiunii de comandă să
varieze între tensiunea de alimentare și o valoare apropiată de zero.
În cazul acestei apl icații elementul de execuție este reprezentat de doi tranzistori bipolari
în conexiune Darlington , iar procesul este un element Peltier TEC 1-12706 , reprezentat în Figura
3.7 prin rezistorul 𝑅15.

Figura 3.7. Circuitul de reglare a temperaturii

Semnalul descris anterior este preluat cu ajutorul unui repetor pentru a asigura adaptarea
impedanței între cele două circuite și aplicat prin rezistorul 𝑅14 în baza tranzistorului de putere
medie. Ambii factori de amplificare în curent au fost consideraț i liniari, dar în cazul real, acest
factor este puternic neliniar și are tendința de a scădea atunci când tranzistorul se apropie de
saturație.
Acest semnal de comandă poate fi preluat și comparat cu alte valori de referință pentru a
determina dacă tempera tura măsurată atinge o valoare prea mare sau o valoare prea mică, așa
cum este ilustrat în Figura 3.8 .

33

Figura 3.8. Circuite pentru semnalarea situațiilor critice (stânga) și simulare (dreapta)

Așa cum se observă în Figura 3.8, cele două LED -uri au fost modelate cu ajutorul a două
diode Zener. Dacă tensiunea de comandă scade sub un anumit prag sau crește peste un anumit
prag, unul dintre LED -uri va lumina, semnalând un posibil defect.
3.4 Captură și analiză video
Captarea imaginilor s -a realizat cu ajutorul unei camere video (webcam) conectată la
calculator prin intermediul unui port USB. În cazul acestei aplicații s -a optat pentru o cameră
Canyon CNE -CWC2 și, de asemenea, un filtru pentru lumină roșie pentru a nu capta imagini
distorsionate atunci când laserul de putere este în funcțiune.
Unghiul de captură al camerei pe o singură axă este ilustrat în Figura 3.9 . În plan
tridimensional, acest unghi de captură are forma unui dreptunghi sferic .

Figura 3.9. Forma unghiului de captură [31]

34

Unghiul de captură al acestei camere video este de 60 ° pe orizontală și 48 ° pe verticală, în
cazul unei rezoluții de 640×480.
Analiza imaginilor captate s -a realizat în mediul de dezvoltare Matlab R2018a, utilizând
de asemenea două extensii pentru facilitarea achiziției imaginilor:
 pachetul de extensii pentru suportul achiziției imaginilor;
 extensia pentru suportul camerelor video USB.
Pentru configurarea camerei video USB s -a utilizat funcția ”videoinput ” urmată de un
adaptor, iar în cazul acestei aplicații s -a folosit ”winvideo”. Următorul parametru este numărul de
identificare al dispozitivului, iar daca există un singur dispozitiv acest număr este 1 pentru
selectarea camerei video conectate. Cel de -al treilea argument este rezoluția dorită, specificată
printr -un anumit parametru. Prin executarea unei secvențe de cod, se pot determina toate
dispozitivele conectate și, de asemenea, rezoluția secvenței video. În Figura 3.10 este prezentat
rezultatul comenzii ”imaqtool” după instalarea celor două extensii, iar prin accesarea
parametru lui ”SupportedFormats” prezentat în Figura 3.11 se va opta pentru o anumită rezoluție.

Figura 3.10. Fereastra pentru vizualizarea dispozitivelor video conectate

Figura 3.11. Determinarea rezoluției dorite

35
Există posibilitatea de a detecta orice mișcare prin calculul diferenței absolute a
luminanței fiecărui pixel dintre noua imagine și imaginea precedentă. Algoritmul implementat
pentru această aplicație utilizează funcția pentru detecția regiunilor extreme maxim stabile și o
altă funcție pentru m ăsurarea proprietăților unei regiuni . După efectuarea unor măsurători asupra
regiunilor de interes, pe baza unor proprietăți, se poate determina dacă un obiect este o potențială
țintă.
3.5 Servomotoare și control
Pentru această aplicație s-a optat pentru două servomotoare Pololu Power HD Standard
Servo 6001HB, având următoarele specificații [32]:
 tensiune de alimentare de până la 6V;
 viteza de rotație a axului de 60° pentru fiecare 0.14 secunde;
 cuplu de 6.7𝑘𝑔∙𝑐𝑚;
 cursa axului este între 0 și 180 °.
Aceste două servomotoare vor controla mișcarea laserului de putere pe axa orizontală,
respectiv pe axa verticală. S -a ales de asemenea microcontrollerul STM32F303RE pentru
comanda servomotoarelor, respectiv pentru recepționarea rezultatului procesării imag inii prin
protocolul UART. Au fost extrase următoarele informații referitoare la microcontroller de pe
pagina producătorului [33]:
 oscilator intern cu frecvența configurabilă de până la 72MHz;
 memorie de date și de program de viteză mare;
 4 convertoare analog -numerice pe 12 biți configurabile;
 un timer pe 32 de biți și până la 5 timere pe 16 biți;
 periferice precum UART, I2C, SPI, CAN, USB;
 tensiune de alimentare de 5V.
Configurarea acestui microcontroller s -a realizat cu ajutorul programului
STM32CubeM X, oferind posibilitatea configurării tuturor dispozitivelor periferice. Pentru o
vizualizare ma i bună a modului de configurare prezentat în Figura 3.1 3, se va utiliza harta pini lor,
prezentată în Figura 3.12.

Figura 3.12. Harta pinilor pentru microcontroller -ul STM32F303RE [34]

36

Figura 3.13. Configurare pini

Rolul microcontroller -ului este de a recepționa comenzile transmise de către calculator
iar, pe baza acestor comenzi, va genera un semnal PWM (Pulse Wi dth Modulation) pentru
comanda servomotoarelor. Semnalul va fi generat cu ajutorul timer -ului 1, prin selectarea
opțiunilor ”PWM Generation CH1” respectiv ”PWM Generation CH2” , iar frecvența acestui
semnal se poate configura din fereastra ”Clock Configurat ion”, prezentată în Figura 3.14.

Figura 3.14. Configurarea semnalelor de tact

De asemenea, frecvența acestui semnal depinde și de doi parametri ai timer -ului, prescaler
și valoarea maximă înscrisă în registru, așa cum este prezentat în ecuația (13).

37
Factor ul de umplere se poate calcula cu ajutorul ecuației (14) prezentate mai jos, în
funcție de numărul înscris în registrul de captură și comparare .

𝑓𝑠𝑒𝑚𝑛𝑎𝑙 =𝑓𝑐𝑙𝑜𝑐𝑘
(𝑇𝑛𝑢𝑚 +1)(𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 +1) (13)

𝐷=𝐶𝐶𝑅
𝑇𝑛𝑢𝑚 +1 (14)

Se poate observa că, în ecuația (14), acest factor de umplere nu depinde de valoarea
prescalerului. Pentru generarea unui semnal cu perioada de 20ms valoar ea prescalerului este de
35, iar perioada numărătorului este de 39999 la o frecvență a timer -ului de 72MHz.
În urma procesă rii de imagini descrise anterior se poate realiza o corespondență între
unghiul de captură al camerei video și coordonatele pixelil or. În ipoteza în care unghiul de
comandă al servomotoarelor este identic cu unghiul de captură al camerei, relațiile pentru
determinarea unghiului corespunzător obiectului detectat sunt prezentate în ecuația (15) , respectiv
ecuația (16) , iar modul de atribuire a coordonatelor unui pixel dintr -o imagine încărcată în Matlab
este prezentat în Figura 3.15 , și de asemenea , o posibilă metodă pentru determinarea unei forme .

L
Imagine captatăObiect țintă
Casetă de încadrareCentrul de
greutate al
obiectului
detectat(0,0)
(0,480)(640,0)
(640,480)

Figura 3.15. Schița unui obiect detectat într -o imagine

⦟𝑥=(⦟𝑥𝑜𝑓𝑓𝑠𝑒𝑡 −⦟𝑥𝑐𝑎𝑝𝑡𝑢𝑟 ă
2)+⦟𝑥𝑐𝑎𝑝𝑡𝑢𝑟 ă
640∙𝐺𝑥 (15)

⦟𝑦=(⦟𝑦𝑜𝑓𝑓𝑠𝑒𝑡 −⦟𝑦𝑐𝑎𝑝𝑡𝑢𝑟 ă
2)−⦟𝑦𝑐𝑎𝑝𝑡𝑢𝑟 ă
480∙𝐺𝑦 (16)

În cele două ecuații, unghiurile de offset sunt egale cu 90 de grade, deoarece acest unghi
corespunde pozițiilor inițiale ale servomotoarelor , fiind la mijlocul cursei de 180 °. Variabilele 𝐺𝑥
și 𝐺𝑦 reprezintă coordonatele centrului de greutate ale obiectului detectat.

38
Se poate observa în Figura 3.15 modul de diferențiere a unui obiect. Pe baza proprietăț ilor
măsurate din acea regiune precum raportul ariilor dintre caseta de încadrare și obiectul detectat,
se poate diferenția forma acestuia de alte obiecte din fundal.
Pentru transmiterea comenzilor de la calculator către microcontroller s -au configurat două
module Bluetooth HM -10, având o rată baud de 115200 și un adaptor USB -UART YP -01. După
identificarea obiectului și calcularea unghiului corespunzător pe o anumită axă, pent ru
diferențiere s -au codificat valorile transmise către microcontroller prin utilizarea unor operații pe
biți, după identificarea obiectului și calcularea unghiului corespunzător. Pentru simplitatea
înțelegerii se va folosi schița din Figura 3.16.

0 0 X X X X X X
0 1 X X X X X X1 0 X X X X X X
1 1 X X X X X X
Unghi de
comandă pe
orizontalăDecodificare
Unghi de
comandă pe
verticală

Figura 3.16. Codificarea datelor

Există două valori folosite pentru a controla starea laserul ui de putere. Dacă unghiul de
comandă pe orizontală a rezultat nul în urma decodificării, laserul de putere va înceta din
funționare. În cazul în care unghiul pe verticală va fi egal cu 212−1, laser ul de putere și sistemul
de răcire vor intra în funcțiu ne.
În urma decodificării unui anumit unghi, valoarea ce trebuie înscrisă în registrul de
captură și comparare, pentru o cursă de 90 ° la stânga, respectiv la dreapta, se va determina cu
ecuația (17). De asemenea, se va ține cont de faptul că axul motorului se mișcă invers acelor de
ceasornic la creșterea factorului de umplere. Relațiile precedente au fost determinate cu ajutorul
ecuației dreptei.

𝐶𝐶𝑅 =4500 −16.67∙⦟𝑎 (17)

În ecuația (17) valoarea de 4500 corespunde unui puls pentru 180 °. Util izând această
ecuație, mișcarea axului servomotorului va fi în sensul acelor de ceasornic.
Modul de conectare a microcontroller -ului și a celorlalte componente este ilustrat în
Figura 3.17.

Microcontroller CalculatorAdaptor
USB-UART
YP-01Modul
Bluetooth
HM-10Modul
Bluetooth
HM-10Servomotoare

Figura 3.17. Transmiterea datelor către microcontroller

39
3.6 Sistem de alimentare
Schema simplificată a sistemului de alimentare este prezentată în Figura 3.18. Atât
microcontroller -ul, servomotoarele cât și modulele bluetooth și adaptorul USB -UART vor fi
alimentate cu ajutorul unei surse tensiune de 5V realizate cu LM7805, iar modulul LASER de
putere va fi alimentat la 12V.

Figura 3.18. Circuitul de alimentare

Pentru alimentarea diodei LASER de p utere, se va folosi o sursă de curent constant
realizate cu LM317 a cărui funcționalitate a fost descrisă în capitolul precedent. După cum se
observă în Figura 3.19, circuitul este prevăzut cu o siguranță ultrarapidă de 2A cu rolul de a
proteja dioda în ca zul de fectării circuitului integrat. Condensatorul preia vârful de curent ce apare
în regimul tranzitoriu, iar r ezistorul de 1 kΩ are rolul de a descărca condensatorul atunci când
laserul este scos din funcțiune.

Figura 3.19. Sursă de curent cu LM317 (stânga) și simulare (dreapta)

40
4. Rezultate experimentale
4.1. Schema electrică
În urma prezentării circuitelor electrice componente, schema circuitului care îmbină toate
elementele componente ale acestei aplicații este prezentată în Figura 4.1. Aceasta cuprinde
următoarele componente: microcontroller -ul STM32F303RE, un montaj în punte realizat cu trei
rezistori și un termistor, un etaj cu amplificator diferențial, o conexiune Darlington, elementul
Peltier ilustrat printr -un rezistor, sursa de cur ent constant realizată cu LM317, un circuit cu
tranzistor MOS pentru comanda laserului de putere, cele două servomotoare, schema pentru
facilitarea transmiterii datelor între calculator și microcontroller, un circuit pentru alimentarea
servomotoarelor și d iferite circuite pentru semnalarea defectelor.

Figura 4.1 Schema electrică a aplicației

41

4.2 Schema bloc
În Figura 4.2 este prezentată diagrama bloc a întregului sistem de țintire.

42

Start
Inițializare variabile,
întreruperi, cameră
video și UART
Ieșire
program?
NuDaExit
Da
Nu
Mod operare
manual?Unghi
valid?Da Nu
Afișare
imagineCaptare
imagineAfișare
eroare
Modificare
pozițieDaNu
Mod operare
automat?Captare și
procesare
imagine
Sortare ținte în
funcție de distanța
Euclidiană față de
centruInserție casetă de
încadrare pentru
ținta curentă
Nu
Da
Calcul și
modificare
pozițieModificare
variabile
globale
Flag gravare
egal cu 1?
Parcurgere
perimetruDaNuCitire flag-uriFlag power-on
modificat?
Stare
anterioară
”On”?Oprire
laser
Pornire
laserDaNu
Figura 4.2 Schema bloc a sitemului de țintire

După cum se poate observa, la pornirea sistemului este executată o secvență de cod având
rolul de inițializare. Aceasta constă în modificarea unghiului de comandă a celor două

43
servomotoare la 90 ° pentru repoziționarea punctului LASER pe centrul i maginii, și, de asemenea,
inițializarea portului virtual și a conexiunii camerei video.
În urma analizei video, în cazul în care este utilizat modul automat, programul calculează
automat unghiul de comandă corespunzător unei ținte detectate. Aceste valori sunt codificate și
transmise către microcontroller pentru a ținti cu laserul de putere obiectul detectat. Codificarea
valorilor elimină necesitatea unui header pentru sincronizarea pachetelor de date. În cazul
modului de operare manual, utilizatorul este responsabil pentru țintirea unui anumit obiect.
Modul gravare este utilizat pentru a pargurge mai multe puncte în ju rul obiectului detectat.
4.3 Prototipul aplicației
În continuare este prezentat prototipul sistemului de țintire în Figura 4.3. Elementele
componente ale acestei aplicații sunt marcate.

Figura 4.3 Prototipul aplicației

Se pot distinge următoarele componente:
1. Modul LASER de putere;
2. Modul LASER de mică putere;
3. Cameră video și filtru;
4. Microcontroller STM32F303RE;
5. Circuit pentru alimentarea servomotoarelor;
6. Circuit pentru controlul stării laserului de putere;
7. Servomotor pentru mișcarea pe verticală;
8. Servomotor pentru mișcarea pe orizontală;
9. Axul primului Servomotor;
10. Axul celui de -al doilea Servomotor;
11. Întrerupător;
12. Rulment 627RS;
13. Rulment 627 RS.

44
Se poate observa că modulul LASER de putere a fost montat pe un cadru confecționat
dintr -o tijă metalică de aluminiu. Servomotoarele au rolul de a asigura mișcarea pe orizontală,
respectiv pe verticală. Cu ajutorul unor părți confecționate din sticlot extolit și a unor șuruburi
M2.5, greutatea întregului modul LASER va fi sprijinită pe cadru și nu pe axul servomotorului.
Axul celui de -al doilea servomotor este legat la acest cadru, sprijinit cu ajutorul rulmenților.
Întreg ansamblul este poziționat pe o placă de sticlotextolit cu ajutorul a opt șuruburi M3, care, la
rândul lui, este fixat pe un alt cadru metalic confecționat din aluminiu cu ajutorul unor șuruburi
M6.
Filtrul de lumină din fața camerei video are rolul de a preveni distorsionarea imaginii
captate atunci când laserul de putere este pus în funcțiune. Pentru utilizarea acestui filtru este
necesară o sursă de lumină suplimentară pentru a permite algoritmului de detecție distingerea
nivelelor de gri. Camera video a fost montată pe o placă de te xtolit folosind a două șuruburi M6.
Întrerupătorul situat în partea inferioară a laserului de putere are rolul de a preveni
intrarea accidentală în funcțiune.
Pentru implementarea modulului LASER s -a montat dioda într -un modul de cupru
12x30mm care asigu ră transferul de căldură către radiator. Componentele acestui modul sunt
prezentate în Figura 4.4. Cu ajutorul unei menghine , dioda LASER a fost introdusă cu atenție în
componenta modulului de cupru . Există mai multe tipuri de module de cupru dedicate mont ării
diodelor laser, iar în acest caz s -a folosit un modul pentru diode LASER cu diametrul plăcii
inferioare 9mm.

Figura 4.4. Modulul de cupru dezasamblat

După analiza foilor de catalog ale dispozitivului, s -au lipit fire de legătură la anodul,
respectiv catodul diodei LASER. Rezultatul este prezentat în Figura 4. 5, după asamblarea
întregului modul de cupru, inclusiv dioda.

45

Figura 4. 5. Dioda LASER asamblată

Lentila modului de cupru este confecționată din sticlă acoperită cu straturi antirefl exive,
iar prin intermediul inelului este posibilă focalizarea razei.
Este foarte importantă montarea acestor componente într -un mediu fără praf. Până și cea
mai mică particulă de praf poate provoca mari pagube lentilei sau diodei LASER atunci când este
pusă în funcțiune. Pentru prevenirea acestui lucru, lentila va fi examinată cu ajutorul unui
microscop.
Pentru facilitarea transferului de căldură acest modul s -a montat pe un radiator
confecționat dintr -o bară de aluminiu, așa cum este prezentat în Figura 4.6. Pe acest radiator s -a
montat modulul Peltier care va asigura transferul de căldură de la diodă spre alt radiator, iar cu
ajutorul unui ventilator, căldura va fi evacuată spre mediul ambiant.

Figura 4. 6. Montaj cu element Peltier

46

Acest montaj, împreună cu circuitul de control al temperaturii, au fost montate într -o
carcasă a unei surse de alimentare de calculator. Rezultatul este prezentat în Figura 4. 7, iar
componentele au fost marcate.

Figura 4. 7. Modulul LASER de putere

Următoarele eleme nte pot fi distinse:
14. Ventilator și radiator;
15. Circuit pentru controlul temperaturii;
16. Sursă de curent realizată cu LM317;

47
17. Întrerupător.
Caracteristica de transfer a circuitului de control al temperaturii este prezentată în Figura
4.8. Se poate observa că singura limitare care apare în cazul acestui circuit este tensiunea de
alimentare, în cazul utilizării unor amplificatoare operaționale rail -to-rail.

Figura 4. 8. Variația tensiunii de ieșire cu temperatura

4.4 Interfața grafică
Utilizatorul are posibilitatea de a controla modul de operare al prototipului prin
intermediul unei interfețe realizate în Matlab R2018a, prezentată în Figura 4. 9. Se pot distinge
mai multe moduri de operare: modul automat, pentru care prototipul va ținti spre obiectul cel mai
apropiat de centrul imaginii, prin calcularea distanței Euclidiene, modul manual, utilizat în cazul
în care laserul ratează ținta, și modul gravare, fiind un prototip pentru decuparea conturului în
buclă desch isă.

48

Figura 4. 9. Interfața grafică

În cazul în care utilizatorul apasă un buton necorespunzător modului de operare sau dacă
este introdus un număr invalid, acesta va primi un mesaj de eroare. Se pot observa mai multe
forme pentru căutarea obiectului ț intă: pătrat, cerc sau dreptunghi.
4.5 Analiza imaginilor
Algoritmul utilizat pentru detecția unui obiect constă în detecția regiunilor extreme
maxim stabile cu ajutorul funcției ”detectMSERFeatures”. Următorul pas este analiza regiunilor
de interes dete ctate prin examinarea unor anumiți parametri precum:
 raportul ariilor dintre caseta de încadrare și obiectul respectiv;
 forma obiectului;
 orientare;
 numărul de găuri în obiect.
Există și o metodă alternativă pentru detecția obiectelor. Aceasta constă în captarea unei
imagini de referință și compararea acesteia cu imaginea precedentă. Prin diferența absolută a
luminanței fiecărui pixel, urmată de binarizarea imaginii cu un anumit prag, este posibilă detecția
unui obiect în mișcare.
Experimental s -au determinat mai multe avantaje și dezavantaje între cele două metode,
prezentate în Tabelul 2.

49
Algoritmul utilizat Detecția regiunilor extreme Detecția prin diferență absolută

Avantaje  permite detecția mai
multor obiect e cu
anumite caracteristici;
 oferă posibilitatea
prioritizării unei ținte
față de un punct de
referință;
 precizie ridicată;
 potrivit pentru imagini
statice sau dinamice.  permite detecția oricărui
obiect în mișcar e;
 algoritm simplu;
 resursele hardware
implicate sunt reduse
 frecvență mare a
cadrelor procesate.

Dezavantaje  algoritm complex ;
 marginile obiectului
țintă trebuie să fie
delimitate clar;
 necesită resurse
hardware abundente;
 frecvența cadrelor
procesate este mică.  deoarece rezultatul se
face prin mediere, nu se
poate detecta mai mult
de un obiect;
 nu poate prioritiza o
țintă față de un punct de
referință;
 precizie scăzută,
deoarece laserul uneori
va ținti după propriul
punct;
 potrivit doar pentr u
imagini dinamice.

Tabelul 2. Comparație între cei doi algoritmi

În urma comparației prezentate mai sus, pentru implementarea sistemului de țintire s -a
optat pentru detecția regiunilor extreme. Algoritmul respectiv poate fi utilizat de asemenea, și în
imagini preluate din natură, așa cum este prezentat în Figura 4.1 0.

Figura 4.1 0. Detecția formelor în imagini naturale – imaginea inițială (stânga) și imaginea
procesată (dreapta)

50
Se poate observa în imaginea din partea dreaptă că, în urma procesării și identificării unui
pătrat, marginile acestuia au fost marcate cu roșu cu ajutorul funcției ”insertShape” în Matlab ,
pentru care s -au specificat parametrii casetei de încadrare . Acest algoritm poate fi îmbunătățit
pentru a putea identifica și diferenția indicatoarele rutiere.
În urma dezvoltării algoritmului pentru detecția unei anumite forme s -au realizat mai
multe teste, așa cum este prezentat în Figura 4.1 1. În acest caz, obiectele țintă vor fi niște
baloane. Algoritmul s -a realizat cu ajutorul exem plului specificat în referința bibliografică [35].

Figura 4.1 1. Detecția obiectelor cu formă circulară

După cum se observă, datorită filtrului de lumină roșie, există posibilitatea de a diferenția
obiectele în funcție de culoar e, iar balonul roșu trece nedetecat, celelalte fiind identificate fără
eroare. În cazul utilizării unui laser ce emite pe o lungime de undă din afara spectrului detectat de
către camera video, filtrul de lumină nu mai este necesar.
Pentru crearea unor copii de siguranță a al goritmului s -a utilizat baza de date Git , așa cum
este prezentat în Figura 4.1 2. Aceasta oferă posibilitatea versionării codului, respectiv întoarcerea
la o varianță funcțională în cazul în care îmbunătățirea versiunii precedente eșuează.

51

Figura 4.1 2. Versionarea algoritmului

4.6 Măsuri de protecție
Pentru protecția utilizatorului, în cazul în care acesta nu dispune de o pereche de ochelari
de protecție, s -a realizat un filtru de lumină roșie, având o lungime de 100 de centimetri pe
orizontală, respectiv 50 de centimetri pe verticală. Acest filtru constă dintr -un panou transparent
pe care s -a aplicat o folie decorativă, a cărei densități optice este suficient de mare pentru a nu
periclita utilizatorul.
Cu ajutorul unui fierăstrău circular s -au t ăiat niște scânduri de dimensiuni
corespunzătoare panoului de sticlă , la un unghi de 45 °. Finisarea s -a realizat folosind o rindea
electrică, iar șanțurile pentru panou s -au realizat cu o freză de lemn. Ulterior, pe aceste scânduri
s-au aplicat două stratu ri de lac protector.
În urma aplicării foliei și rea lizării filtrului de lumină, s -a obținut rezultatul din Figura
4.13. Pentru poziționarea pe verticală a întreg cadrului s -au utilizat două scânduri adiționale și
două tije filetate M8.

52

Figura 4.1 3. Filtrul de lumină

53
5. Concluzii
În cadrul acestei aplicații s -a urmărit implementarea unui prototip pentru țintirea unor
obiecte de o anumită formă. O caracteristică inovativă a acestei aplicații este că utilizează energia
electrică în totalitate pentru a identifica și elimina un anumit obiect țintă. Astfel, în cazul
îmbunătățirii acestui algoritm sau în cazul utilizării altei metode pentru detecție, se pot
implementa algoritmi mai complecși precum sisteme de supraveghere, chirurgie, sisteme din
industria auto sau sisteme de prelucrare a materialelor.
În realizarea acestui sistem de țintire am urmărit utilizarea unor componente cu toleranță
scăzută , respectiv un raport calitate -preț ridicat. Studierea acestei teme a presupus mai multe
etape. Mai în tâi s-a realizat transmisia pachetelor de date între microcontroller și calculator,
urmată de utilizarea unui algoritm pentru detecția oricărui obiect în mișcare. S -a constatat că
acest algoritm ce utilizează diferența absolută a luminanței dintre două ima gini este ineficient
pentru detecția mai multor ținte, iar pentru ghidarea corectă a laserului de putere s -a optat pentru
un algoritm de detecție a regiunilor extreme.
Fiecare componentă a algoritmului, respectiv a circuitului, au fost testate individual, iar
pe baza rezultatelor experimentale și a simulărilor s -a constatat funcționarea corectă a montajului.
Datorită toleranței ridicate a servomotoarelor, la variația foarte lină a semnalului de comandă are
loc o mișcare discontinuă, iar gravarea unui contu r este posibilă doar dacă se folosesc motoare
pas cu pas.
Există posibilitatea de a îmbunătăți aplicația prezentată. Tranzistorul bipolar este menținut
în regiunea activă liniară și o parte din puterea transmisă sistemului de răcire se disipă sub forma
căldurii. Îmbunătățirea constă în utilizarea unui tranzistor MOS și implementarea unei surse în
comutație pentru a controla puterea transmită elementului Peltier. Mai mult, se poate utiliza un
senzor suplimentar, iar valorile citite pot fi transmise către calculator și afișate în interfața
grafică. Nu în ultimul rând, așa cum a fost prezentat în capitolele precedente, pentru reducerea
dimensiunilor și creșterea eficienței, se poate implementa o sursă de curent în comutație folosind
componente SMD , în cazul diodei LASER .
În concluzie, în urma studiilor de specialitate pentru fiecare componentă bloc a
proiectului ”Aplicație cu laseri de putere” și a simulărilor schemelor electrice , respectiv realizarea
prototipului pentru țintire cu ajutorul specificațiilor producătorului, implementarea practică și
funcțională a proiectului a reușit.

54
6. Bibliografie
[1] Istoria laserilor https://www.ulsinc.com/learn/history -of-lasers
[2] Tratament cu laseri https://www.cancer.gov/about -cancer/treatment/types/surgery/lasers -fact-
sheet
[3] Sisteme de țintire https://www.armytimes.com/off -duty/gearscout/shot –
show/2018/01/23/computerized -scope -puts-shooter -on-target/
[4] Luneta digital ă TrackingPoint https://arstechnica.com/gadgets/2013/01/17000 -linux -powered –
rifle-brings -auto-aim-to-the-real-world/
[5] Pozi ționarea automată a unui telescop https://www.skyandtelescope.com/astronomy –
resources/guiding -a-telescope -for-imaging/
[6] Metode de pozi ționare a telescopului https://uncle -rods.blogspot.com/2010/09/uncle -rods-
telescope -academy.html
[7] Dioda LASER http://britneyspears.ac/physics/fplasers/fplasers.htm
[8] Surse de alimentare pentru diode LASER https://www.laserdiodecontrol.com/laser -diode –
driver -basics -and-fundamentals
[9] Func ționarea diodei LASER https://whatis.techtarget.com/definition/laser -diode -injection –
laser -or-diode -laser
[10] Laseri în impuls https://www.nature.com/articles/srep10770
[11] Tipuri de laseri https://www.cemarelectro.com/laser -safety/laser -types -and-operation/
[12] Laseri în undă continuă https://www.spilasers.com/industrial -fiber -lasers/redpower/what -is-
a-continuous -wave -cw-laser/
[13] Laseri cu fosfur ă de indiu http://www.semiconductor –
today.com/news_items/2016/aug/um_240816.shtml
[14] Varia ția puterii optice cu temperatura
https://www.researchgate.net/post/What_is_the_relationship_between_temperature_and_laser_pe
rformance
[15] Laseri în impuls https://www.rp -photonics.com/pulsed_lasers.html
[16] Dioda redresoare https://electronics.stackexchange.co m/questions/377861/temperature –
coefficient -of-diode
[17] Surse de curent http://users.telenet.be/davshomepage/current -source.htm
[18] Stabilizator serie LM317 http://www.ti.com/lit/ds/symlink/lm317.pdf
[19] Stabilizatoare LM317 în paralel https ://laserpointerforums.com/threads/is -this-a-logical –
way-to-setup -2x-lm317 -in-a-driver.60652/
[20] Laser în comutație http://www.rrcat.gov.in/technology/laser/lpsd/ppshpl.html

55
[21] Principii de funcționare a servomotoarelor
https://www.jameco.com/jameco/workshop/howitworks/how -servo -motors -work.html
[22] Memorii de date https://searchstorage.techtarget.com/definition/DRAM
[23] Memorii de program https://microcontrollerslab.com/types -memory -microcontrollers/
[24] Arhitectura Von Neumann și arhitectura Harvard
https://www.polytechnichub.com/diffe rence -harvard -architecture -von-neumann -architecture/
[25] Termistori NTC https://www.ametherm.com/thermistor/ntc -thermistors -steinhart -and-hart-
equation
[26] http://www.vlfeat.org/overview/mser.html
[27] Dioda LASER NDG7475 http://www.beamq.com/laser/laserdiode/NDG7475.pdf
[28] Dioda LASER de mică putere http://www.uocnet.com/pdf/LD/U -LD-650543A..pdf
[29] Calculator pentru densitatea optică necesară https://www.lia.org/evaluator/ od.php
[30] Caracteristica termistorului https://arduino.stackexchange.com/questions/36299/what –
difference -makes -resistance -of-thermistors
[31] Camera video http://thesiggins.blogspot.com/2014/11/go -wide.html
[32] Servomotor Pololu Power HD Standard Servo 6001HB
https: //www.pololu.com/product/1056/specs
[33] Microcontroller -ul STM32F303RE https://www.st.com/en/microcontrollers –
microprocessors/stm32f303re.html
[34] Harta pinilor STM32 F303RE https://github.com/RIOT -OS/RIOT/wiki/Board%3A -Nucleo –
F303
[35] Algoritm de identificare a textului dintr -o imagine
https://www.mathworks.com/help/vision/examples/automatically -detect -and-recognize -text-in-
natural -images.html

56
7. Anexe
Fișierul main.m (Interfața grafică Matlab)

fig = figure('Name','Targeting system made by Mihnea',…
'CloseRequestFcn',@close_request,…
'Units','normalized',…
'Position',[0.17 0.17 0.65 0.65]);

bg1 = uibuttongroup('Title','Mode',…
'Visible','off',…
'Position',[0.7 0.65 0.15 0.2],…
'SelectionChangedFcn',@bselection);
r1 = uicontrol(bg1,'Style','radiobutton',…
'Units','normalized',…
'String','Automatic',…
'Position',[0.1 0 .75 0.7 0.2],…
'HandleVisibility','off');

r2 = uicontrol(bg1,'Style','radiobutton',…
'String','Manual',…
'Units','normalized',…
'Position',[0.1 0.5 0.7 0.2],…
'HandleVisibility','off');
r3 = uicontrol(bg1,'Style','radiobutton',…
'String','Engraving',…
'Units','normalized',…
'Position',[0.1 0.25 0.7 0.2],…
'HandleVis ibility','off');

bg1.Visible = 'on';

bg2 = uibuttongroup('Title','Main Controls',…
'Visible','off',…
'Position',[0.05 0.65 0.3 0.25]);
label_x = uicontrol(bg2,'Style','text',…
'Units','norm alized',…
'Position',[0.07 0.7 0.3 0.15],…
'String','X angle');
label_y = uicontrol(bg2,'Style','text',…
'Units','normalized',…
'Position',[0.07 0.4 0.3 0.15],…
'String','Y angle');

PushButton = uicontrol(bg2,'Style', 'push', 'String', 'Write Position',…
'Units','normalized',…
'Position', [0.68 0.7 0.28 0.18],…
'CallBack', @Button_pressed);
PushButtonPower = uicontrol(bg2,'Style', 'push', 'String', 'Power On',…

57
'Units','normalized',…
'Position', [0.68 0.1 0.28 0.18],…
'CallBack', @Button_pressed_power);
PushButtonEngrave = uicontrol(bg2,'Style', 'push', 'String', 'Engrave',…
'Units','normalized',…
'Position', [0.33 0.1 0.28 0.18],…
'CallBack', @Button_pressed_engrave);

textBox1 = uicontrol(bg2,'Style','edit',…
'Units','normalized',…
'Position', [0.33 0.7 0.3 0.15],…
'CallBack', @text_edited1);
textBox2 = uicontrol(bg2,'Style','edit',…
'Units','normalized ',…
'Position', [0.33 0.4 0.3 0.15],…
'CallBack', @text_edited2);
StopButton = uicontrol(bg2,'Style', 'push', 'String', 'Exit Program',…
'Units','normalized',…
'Position', [0.68 0.4 0.28 0.18],…
'CallBack', @close_request);

bg2.Visible = 'on';
bg3 = uibuttongroup('Title','Shape',…
'Visible','off',…
'Position',[0.7 0.35 0.15 0.2],…
'SelectionChangedFcn',@bselection_tg);

r4 = uicontrol(bg3,'Style','radiobutton',…
'Units','normalized',…
'String','Circle',…
'Position',[0.1 0.75 0.7 0.2],…
'HandleVisibility','off');

r5 = uicontrol(bg3,'Style','radiobutton',…
'String','Square',…
'Units','normalized',…
'Position',[0.1 0.5 0.7 0.2],…
'HandleVisibility','off');
r6 = uicontrol(bg3,'Style','radiobutton',…
'String','Rectangle',…
'Units','normalized',…
'Position',[0.1 0.25 0.7 0.2],…
'HandleVisibility','off');

bg3.Visible = 'on';

bg4 = uibuttongroup('Title','Quick Manual Controls',…
'Visible','off',…
'Position',[0.05 0.3 0.3 0.25]);

58

PushButtonDown = uicontrol(bg4,'Style', 'push', 'String', 'Decrement Y',…
'Units','normalized',…
'Position', [0.37 0.1 0.28 0.18],…
'CallBack', @Manual_buttons);

PushButtonUp = uicontrol(bg4,'Style', 'push', 'String', 'Increment Y',…
'Units','normalized',…
'Position', [0.37 0.7 0.28 0.18],…
'CallBack', @Manual_buttons);

PushButtonRight = uicontrol(bg4,'Style', 'push', 'String', 'Increment X',…
'Units','normalized',…
'Position', [0.68 0.4 0.28 0.18],…
'CallBack', @Manual_buttons);

PushButtonLeft = uicontrol(bg4,'Style', 'push', 'String', 'Decrement X',…
'Units','normalized',…
'Position', [0.05 0.4 0.28 0.18],…
'CallBack', @Manual_buttons);

PushButtonCenter = uicontrol(bg4,'Style', 'push', 'String', 'Reset',…
'Units','normalized',…
'Position', [0.37 0.4 0.28 0.18],…
'CallBack', @Manual_buttons);

bg4.Visible = 'on';

bg5 = uibutto ngroup('Title','Measurements',…
'Visible','off',…
'Position',[0.44 0.35 0.15 0.2]);
label_x1 = uicontrol(bg5,'Style','text',…
'Units','normalized',…
'Position',[0.07 0.7 0.35 0.2],…
'String','X angle:');
label_y1 = uicontrol(bg5,'Style','text',…
'Units','normalized',…
'Position',[0.07 0.4 0.35 0.2],…
'String','Y angle:');

val_x = uicontrol(bg5,'Style','text',…
'Units','normalized',…
'Position',[0.47 0.7 0.3 0.2],…
'String','90');
val_y = uicontrol(bg5,'Style','text',…
'Units','normalized',…
'Position',[0.47 0.4 0.3 0.2],…
'String','90');

bg5.Visible = 'on';

59
%test
set(val_x,'String','90');
set(val_y,'String','90');
% label_tg = uicontrol('Style','text',…
% 'Units','normalized',…
% 'Position',[0.61 0.8 0.08 0.03]);
% set(label_tg,'string','Targets: ');
%
% val_tg = uicontrol('Style','text',…
% 'Units','normalized',…
% 'Position',[0.71 0.8 0.05 0.03]);
% set(val_tg,'string','0');

setGlobalAngX(90);
setGlobalAngY(90);
setGlobalEn(0); % pt manual
setGlobalMode(1); % automat
setGlobalShape(0); %0 pentru cerc, 1 pentru patrat, 2 pentru dr.
setGlobalEngrave(0);

%plot imagin e

s = serial('COM21', 'BaudRate',115200);
fopen(s);

%centru spre margine
fov_x = 35;
fov_y = 27;

cons_x = 1.24;
cons_y = 1.19;

%ideal 90 de grade, pentru calibrare
offset_x = 90;
offset_y = 90;

%unghi de captura
delta_fov_x = 2 * fov_x;
delta_fov_y = 2 * fov_y;

disp('Camera Power on…');
vid = videoinput('winvideo',2,'MJPG_640x480');
set(vid, 'FramesPerTrigger', Inf);
start(vid);

disp('Waiting for camera light adjustment…');
a = getsnapshot(vid);
pause(1);

60
a = getsnapshot(vid);
pause(1);
a = g etsnapshot(vid);
pause(1);
a = getsnapshot(vid);

im = getsnapshot(vid);
im2 = imresize(im,0.5);
subplot(211),subimage(im2);
axis off;

pause(0.4);
while ishandle(fig)
pause(0.005);
pwr_state = getGlobalPower();

engv = getGlobalEngrave();

if pwr_state == 1
%trimite uart power off
setGlobalPower(0); % 0 = used, 1 = off, 2 = on
var1 = hex2dec('00');
var2 = hex2dec('40');
var1 = uint8(var1);
var2 = uint8(var2);
fwrite(s,var1,'uin t8');
pause(0.01);
fwrite(s,var2,'uint8');
pause(0.01);

end
if pwr_state == 2
%trimite uart power on
setGlobalPower(0);

var1 = hex2dec('BF');
var2 = hex2dec('FF');
var1 = uint8(var1);
var2 = uint8(var2);
fwrite(s,var1,'uint8');
pause(0.01);
fwrite(s,var2,'uint8');
pause(0.01);
end

gm = getGlobalMode();
enab = getGlobalEn();

if gm == 0
%disp('manual'); % debug
if enab == 1
setGlobalEn(0);

61
ang_x=getGlobalAngX();
ang_y=getGlobalAngY();

str_rez = num2str(ang_x);
set(val_x,'String',str_rez);
str_rez = num2str(ang_y);
set(val_y,'String',str_rez);

ang_x = uint8(ang_x);
ang_y = uint8(ang_y);

ang_x_lsb = bitand(ang_x,63,'uint8');
ang_x_msb = bitshift(ang_x, -6,'uint8');
%x = x>>6
ang_x_msb = bitand(ang_x_msb, 63,'uint8');
%x = x & 0b00111111;
ang_x_msb = bitor(ang_x_msb, 64,'uint8');
%pt 'header' uart

ang_y_lsb = bitand(ang_y,63,'uint8');
ang_y_lsb = bitor(ang_y_lsb,128,'uint8');
% y = y & 0b0011111 izolare lsb
% y = y | 0b1000000 header uart

ang_y_msb = bitshift(ang_y, -6,'uint8');
% y = y >> 6;
ang_y_msb = bitand(ang_ y_msb,63,'uint8');
% izolare urmatorii 6 biti
ang_y_msb = bitor(ang_y_msb,192,'uint8');
% y = y | 0xC0

fwrite(s,ang_x_lsb,'uint8');
pause(0.01);
fwrite(s,ang_x_msb,'uint8');
pause(0.01);
fwrite(s,ang_y_lsb,'uint8');
pause(0.01);
fwrite(s,ang_y_msb,'uint8');
pause(0.01);
end

im = getsnapshot(vid);
im2 = imresize(im,0.5);
subplot(211),subimage(im2);
axis off;
flushdata(vid);
end

if gm == 1 || gm == 2 % auto si engrave
gm = getGlobalMode();
pause(0.02); % lipsa putere de procesare…

62

%disp('auto & engv');
shape1 = getGlobalShape();

im = getsnapshot(vid);
im_gri = rgb2gray(im);
[mserRegions,conncomp] = detectMSERFeatures(im_gri,'RegionAreaRange',…
[200 14000],'ThresholdDelta',0.94);

f = regionpr ops(conncomp,'BoundingBox','Centroid','Extent',…
'Eccentricity','Solidity','Euler', 'Image','MajorAxisLength',…
'MinorAxisLength');
temp1 = vertcat(f.MajorAxisLength);
temp2 = vertcat(f.MinorAxisLength);

aspect_ ratio = temp1./temp2;

aspect_ratio_transp = aspect_ratio';

switch shape1
case 0
filter_index = aspect_ratio_transp <0.87;
filter_index = filter_index | (aspect_ratio_transp > 1.7);
% filter_ratio = filter_ratio | [f.Solidity] > 0.97;
filter_index = filter_index | [f.EulerNumber] < -4;
%filter_index = filter_index | [f.Eccentricity] < 0.1 ;
filter_index = filter_index | [ f.Eccentricity] > 0.3 ; %0.7
filter_index = filter_index | [f.Extent] >= 0.82 | [f.Extent] <= 0.63;
case 1
filter_index = aspect_ratio_transp <0.87;
filter_index = filter_index | (aspect_ratio_tra nsp > 1.23);
% filter_ratio = filter_ratio | [f.Solidity] > 0.97;
filter_index = filter_index | [f.EulerNumber] < -4;
%filter_index = filter_index | [f.Eccentricity] < 0.1 ;
filter_index = fil ter_index | [f.Eccentricity] > 0.7 ; %0.7
filter_index = filter_index | [f.Extent] <= 0.86;

case 2
filter_index = aspect_ratio_transp <1.22;
filter_index = filter_index | (aspect_ ratio_transp > 1.7);
% filter_ratio = filter_ratio | [f.Solidity] > 0.97;
filter_index = filter_index | [f.EulerNumber] < -4;
%filter_index = filter_index | [f.Eccentricity] < 0.1 ;
filter_ind ex = filter_index | [f.Eccentricity] < 0.4 ; %0.7
filter_index = filter_index | [f.Extent] <= 0.86;
otherwise
disp('Invalid Shape…');
end
f(filter_index) = []; %null
mserRegions(filter_index) = []; % null

v = vertcat(f.Centroid);

63
w = vertcat(f.BoundingBox);
v_size = size(v,1);
%disp('concatenare');

if v_size == 0
%nimic
if gm == 2 && engv == 1
msg_temp = 'No valid target for engraving.';
msgbox(msg_temp,'Error');
setGlobalEngrave(0);
%nothing to engrave
end
im = getsnapshot(vid);
im2 = imres ize(im,0.5);
subplot(211),subimage(im2);
axis off;
flushdata(vid);
%for both modes, bugfix, plot image without target
else
if v_size==1
coord = f.BoundingBox;
new_im = insertShape(im,'rectangle',coord,'LineWidth',2,…
'Color',{'green'});
im2 = imresize(new_im,0.5);
subplot(211),subimage(im2);
axis off;

b = v(1,1);%x
c = v(1,2);%y
%disp('v size = 1');
avg_x = b;
avg_y = c;

else
%calcul distanta Euclidiana
% euclid_distances = zeros(v_size);
euclid_distances = [];
for i=1:v_size
b = v(i,1);%x
c = v(i,2);%y
center_x = 320;
center_y = 240;
temp_x = abs(ce nter_x – b);
temp_y = abs(center_y – c);
euclid_distances = vertcat(euclid_distances, sqrt(temp_y^2 + …
temp_x^2));
%disp('euclid');
end
%eucli d_distances
vect_final = horzcat(v,w,euclid_distances);
vect_final = sortrows(vect_final,7);
%sortare in functie de distanta Euclidiana

64

%x,y centroid ; offset x,y box, width x,y, dist Euclid
t = vect_final(1,:);

%center_crosshair = [t(1) t(2) 3];

% t(3) – offset bbox x, t(5) width bbox x
new_im2 = insertShape(im,'Rectangle',[t(3) t(4) t(5) t(6)],…
'LineWidth',1,'Color',{'green'});
im3 = imresize(new_im2,0.5);
subplot(211),subimage(im3);
axis off;
%functioneaza si cu coordonate negative
%figure(3)
%imshow(new_im2)

avg_x = t(1); % centroid x cel mai apropiat de centru
avg_y = t(2); % centroid y cel mai apropiat de c entru

%disp('get centroid');
end % end size 1

if gm == 1

%procesare
ang_x = (offset_x – fov_x) + (avg_x / 640) * delta_fov_x;
ang_y =(offset_y + fov_y) – (avg_y / 480) * delta_fov_y;

setGlobalAngX(ang_x);
setGlobalAngY(ang_y);
%setare unghi in cazul in care rateaza tinta, switch pe
%manual si quick controls

str_rez = num2str(ang_x);
set(val_x,'String',str_rez);
str_rez = num2str(ang_y);
set(val_y,'String',str_rez);

ang_x = uint8(ang_x);
ang_y = uint8(ang_y);

%codificare

ang_x_lsb = bitand(ang_x,63,'uint8');
ang_x_msb = bitshift(ang_x, -6,'uint8');
%x = x>>6
ang_x_msb = bitand(a ng_x_msb, 63,'uint8');
%x = x & 0b00111111;
ang_x_msb = bitor(ang_x_msb, 64,'uint8');
%pt 'header' uart

ang_y_lsb = bitand(ang_y,63,'uint8');

65
ang_y_lsb = bitor(ang_y_lsb,128,'uint8');
% y = y & 0b0011111 izolare lsb
% y = y | 0b1000000 header uart

ang_y_msb = bitshift(ang_y, -6,'uint8');
% y = y >> 6;
ang_y_msb = bitand(ang_y_msb,63,'uint8');
% izolare urmatorii 6 biti
ang_y_msb = bitor(ang_y_msb,192,'uint8');
% y = y | 0xC0

fwrite(s,ang_x_lsb,'uint8');
pause(0.01);
fwrite(s,ang_x_msb,'uint8');
pause(0.01);
fwrite(s,ang_y_lsb,'uint8');
pause(0.01);
fwrite(s,ang_y_msb,'uint8');
pause(0.01);

flushdat a(vid);

end

if gm == 2 && engv == 1% engraving
setGlobalEngrave(0);
%disp('enable engv');
switch shape1
case 3
%valid shapes are 0,1,2
%for circle, please replace with 0 if you're using
%stepper motor, but not servo.

%identical processing due to the lack of accuracy
%which is about 3 -4 degrees, making impossible
%engraving any perimeter

%if the step size is very small, the motors won't
%detect any c hange, so they will move unpredictable
%and discontinuous
otherwise
%keep the same processing for both square and rec.
upleft_x = avg_x – (t(5)*cons_x / 2);
upleft_y = avg_y – (t(6)*cons_y / 2);
% upright_x = avg_x + (t(5)*cons_x / 2);
% upright_y = avg_y – (t(6)*cons_y / 2);
% lowright_x = avg_x + (t(5)*cons_x / 2);
% lowright_y = avg_y + (t(6)*cons_y / 2);
% lowleft_x = avg_x – (t(5)*cons_x / 2);
% lowleft_y = avg_y + (t(6)*cons_y / 2);
avg_x = upleft_x;
avg_y = upleft_y;

66
k=0;
for k=1:4 % *100 si in ecuatii pentru pasi mai mici
%switch k
if k > 0 && k <= 1
%upleft catre upright
avg_x = avg_x + (t(5)*cons_x / 1);
end
if k > 1 && k <= 2
%upright catre downright
avg_y = avg_y + (t(6)*cons_y / 1);
end
if k > 2 && k <= 3
%downright catre leftright
avg_x = avg_x – (t(5)*cons_x / 1);
end
if k > 3 && k <= 4
%downleft catre upleft
avg_y = avg_y – (t(6)*cons_y / 1);
end
%remove la pauza daca se foloseste motor stepper sau
%mai multi pasi
pause(5);

ang_x = (offset_x – fov_x) + (avg_x / 640) * delta_fov_x;
ang_y =(offset_y + fov_y) – (avg_y / 480) * delta_fov_y;

ang_x = uint8(ang_x);
ang_y = uint8(ang_y);

%codificare

ang_x_lsb = bitand(ang_x,63,'uint8');
ang_x_msb = bitshift(ang_x, -6,'uint8');
%x = x>>6
ang_x_msb = b itand(ang_x_msb, 63,'uint8');
%x = x & 0b00111111;
ang_x_msb = bitor(ang_x_msb, 64,'uint8');
%pt 'header' uart

ang_y_lsb = bitand(ang_y,63,'uint8');
ang_y_lsb = bitor(ang_y_lsb,128,'uint8');
% y = y & 0b0011111 izolare lsb
% y = y | 0b1000000 header uart

ang_y_msb = bitshift(ang_y, -6,'uint8');
% y = y >> 6;
ang_y_msb = bitand(ang_y_msb,63,'uint8');
% izolare urmatorii 6 biti
ang_y_msb = bitor(ang_y_msb,192,'uint8');
% y = y | 0xC0

fwrite(s,ang_x_lsb,'uint8');

67
pause(0.01);
fwrite(s,ang_x_msb,'uint8');
pause(0.01);
fwrite(s,ang_y_lsb,'uint8');
pause(0.01);
fwrite(s,ang_y_msb,'uint8');
pause(0.01);

flushdata(vid);

end
msg_temp = 'Engraving successful.';
msgbox(msg_temp,'Tip');

end

end
end
end
end

fclose(s);
clear s;
disp('Program exited with error code 0x0000');
stop(vid);
flushdata(vid);
close all;
clear all;

Fișierul bselection.m
function bselection(source,event)
str1 = event.NewValue.String;
disp(['Switched Mode to ' str1]);
mod = strcmp('Manual',str1);
if mod == 1
setGlobalMode(0);
%hghg = getGlobalMode()
end

mod = strcmp('Automatic',str1);

if mod == 1
setGlobalMode(1);
%hghg = getGlobalMode()
end

mod = strcmp('Engraving',str1);

if mod == 1
setGlobalMode(2);

68
%hghg = getGlobalMode()
end
end

Fișierul bselection_tg .m
function bselection_tg(source,event)
str2 = event.NewValue.String;
disp(['New target shape is ' str2]);
mod = strcmp('Circle',str2);
if mod == 1
setGlobalShape(0);
%hghg = getGlobalMode()
end

mod = strcmp('Square',str2);

if mod == 1
setGlobalShape(1);
%hghg = getGlobalMode()
end

mod = strcmp('Rectangle',str2);

if mod == 1
setGlobalShape(2);
%hghg = getGlobalMode()
end
end

Fișierul Button_pressed.m

function Button_pressed(source,event,handles)

x = getGlobalAngX();
y = getGlobalAngY();
flag_mode = getGlobalMode();

if isnan(x) || (isnan(y)) || x<55 || x>125 || y<55 || y>125 ||…
flag_mode >= 1 % daca e inca pe modul automat, nu da voie

if (isnan(x)) || (isnan(y))
msgbox('Not a valid number.','Error');
end
if x<55 || x>125 || y<55 || y>125
msgbox('Number outside bounds.','Error');
end
if flag_mode == 1 || flag_mode == 2
msgbox('Please switch to Manual mode','Error');
end

69
setGlobalEn(0);
%hghg = getGloba lEn()
else
setGlobalEn(1);
%hghg = getGlobalEn()
return
end
end

Fișierul Button_pressed_engrave.m
function Button_pressed_engrave(source,event)

my_text = 'You are about to start automatic engraving, please ensure that the laser is powered on.
Do you wish to proceed?';
selection2 = questdlg(my_text,…
'Data Request',…
'Yes','No','Yes');
switch selection2
case 'Yes'
mod2 = getGlobalMode();
if mod2 == 2
setGlobalEngrave(1);
else
msg_tmp = 'Please switch to Engraving mode.';
msgbox(msg_tmp,'Error');
end

case 'No'
return
end
end

Fișierul Button_pressed_power.m

function Button_pressed_power(hObject,eventdata,handles)
x = get(hObject,'String');
rez = strcmp(x,'Power On');
if rez == 1
setGlobalPower(2); %on
set(hObject,'String','Power Off');
%disp('powered on');
else
setGlobalPower(1); % off
set(hObject,'String','Power On');
%disp('powered off');
end
end

70
Fișierul close_request.m
function close_request(src,callbackdata)
% Close request function
% to display a question dialog box
selection = questdlg('Are you sure you want to quit?',…
'Close Request',…
'Yes','No','Yes');
switch selection,
case 'Yes',
%issued_stop = 1;
delete(gcf)
case 'No',
return
end
end

Fișierul ge tGlobalAngX.m
function c = getGlobalAngX
global AngX;
c = AngX;

Fișierul getGlobalAngY.m
function c = getGlobalAngY
global AngY;
c = AngY;

Fișierul getGlobalEn.m
function c = getGlobalEn
global en_tx;
c = en_tx;

Fișierul getGlobalEngrave.m
function c = getGlobalEngrave
global engrave;
c = engrave;

Fișierul getGlobalMode.m
function c = getGlobalMode
global crt_mode;
c = crt_mode;

Fișierul getGlobalPower.m

71
function c = getGlobalPower
global power_state;
c = power_state;

Fișierul getGlobalShape.m
functio n c = getGlobalShape
global tg_shape;
c = tg_shape;

Fișierul Manual_buttons.m

function Manual_buttons(hObject,eventdata,handles)
rezultat = get(hObject,'String');
mod = getGlobalMode();
if mod ~= 0
msgbox('Use these buttons only in Manual Mode.','Tip');
else
setGlobalEn(1);
switch rezultat
case 'Decrement X'
x_an = getGlobalAngX();
x_an = x_an – 1
%additional check can be performed
setGlobalAngX(x_an);
case 'Increment X'
x_an = getGlobalAngX();
x_an = x_an + 1
%additional check can be performed
setGlobalAngX(x_an);
case 'Decrement Y'
y_an = getGlobalAngY();
y_an = y _an – 1
%additional check can be performed
setGlobalAngY(y_an);
case 'Increment Y'
y_an = getGlobalAngY();
y_an = y_an + 1
%additional check can be performed
setGlobalAngY(y_an);
case 'Reset'
setGlobalAngX(90);
setGlobalAngY(90);
otherwise
disp('invalid button selection');
end
end
end

Fișierul setGlobalAngX.m

72
function setGlobalAngX(val)
global AngX;
AngX = val;

Fișierul setGlobalAngY.m
function setGlobalAngY(val)
global AngY;
AngY = val;

Fișierul setGlobalEn.m
function setGlobalEn(b)
global en_tx;
en_tx = b;

Fișierul setGlobalEngrave.m
function setGlobalEngrave(b)
global engrave;
engrave = b;

Fișierul setGlobalMode.m
function setGlobalMode(val)
global crt_mode;
crt_mode = val;

Fișierul setGlobalPower.m
function setGlobalPower(val)
global power_state;
power_state = val;

Fișierul setGlobalShape.m
function setGlobalShape(b)
global tg_shape;
tg_shape = b;

Fișierul text_edited1.m
function text_edited1(hObject,eventdata, handles)
a = get(hObject,'String');
if isempty(a)
%disp('Error: Enter Text first.');
else
nr1 = str2double(a);
setGlobalAngX(nr1);

73
end
end

Fișierul text_edited2.m
function text_edited2(hObject,eventdata, handles)
b = get(hObject,'String');
if isempty(b)
%disp('Error: Enter Text first.');
else
nr2 = str2double(b);
setGlobalAngY(nr2);
end
end

Similar Posts