TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI [604081]

UNIVERSITATEA TEHNICĂ DIN CLUJ -NAPOCA
FACULTATEA DE ELECTRONICĂ
TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI
Specializarea:
Proiect de diplomă
Absolvent: [anonimizat],
Prof.dr.ing. Dan PITICĂ Președinte comisie,
2014

UNIVERSITATEA TEHNICĂ DIN CLUJ -NAPOCA
FACULTATEA DE ELECTRONICĂ
TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI
Departamentul
Titlul proiectului de diplomă :
Descrierea temei:
Locul de realizare:
Data e miterii temei:
Data predării
temei:
Absolvent: [anonimizat] , Conducător ,

Declarație pe proprie răspundere privind
autenticitatea lucrării de diplomă
Subs
emnatul
legitimat cu seria nr. CNP
în calitate de autor al lucrării cu titlul
elaborat ă în vederea susținerii examenului de finalizare a studiilor de licență, la
Facultatea de Electronică, Telecomunicații și Tehnologia Informației
Specializarea
Universitatea Tehnic ă din Cluj-N apoca
sesiunea a anului
decl
ar pe proprie răspundere că această lucrare este rezultatul propriei activități intelectuale, pe baza
cercetărilor mele și pe baza informațiilor obținute din surse care au fost citate, în textul lucrării și în
bibliografie.
Declar că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au fost
folosite cu respectar ea legislației române și a convențiilor internațio nale privind drepturile de autor.
Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte comisii de examen
de licență/diplomă/disertație.
În cazul constatării ulterioare a unor declarații false, voi suporta sancțiunile admin istrative,
respectiv anularea examenulu i de diplomă .
Nume ș i prenume
Data
Semnătura

Absolvent: [anonimizat]:
SINTEZA PROIECTULUI DE DIPLOMĂ
Avizul conducă torului
Conducă tor, Absolvent: [anonimizat]

1. Stadiul actual pag.1
2. Fundamentare teoretica pag.5
2.1 Dispozitive dedicate pentru recunoasterea gesturilor pag.5
2.2.1 Kit -ul de dezvoltare Hillstar pag.5
2.2 STM32F3 Discovery Kit pag.10
2.3 Circuite de control a motoarelor pas cu pas pag.13
2.3.1 L6208 pag.13
2.3.2 Timer -ul 555 pag.15
2.4 Motor pas cu pas pag.16
3. Implementarea solutiei adoptate pag.17
3.1 Configurarea Kit -ului de recunoastere a gesturilor – Hillstar pag.17
3.2 Condiționarea semnalelor generate de Hillstar cu ajutorul kitului
STM32F3 Discovery pag.21
3.3 Implementarea driverului pentru acționarea motorului pas cu pas pag.23
3.4 Realizarea sistemului de ghidaj pe doua axe pag.29
4. Rezultate experimentale pag.32
5. Concluzii pag.38

Summary

A sensor is a transducer whose purpose is to sense (that is, to detect ) some characteristic of
its environs. It detects events or changes in quantities and provides a corresponding output,
generally as an electrical or optical signal.
Sensors are used in everyday objects such as touch -sensitive elevator buttons ( tactile
sensor ) and lamps which dim or brighten by touching the base, besides innumerable applications
of which most people are never aware. [1]
We call a non -tactile sensor that sensor who doesn `t need a physical contact with the
disturbing element to generate the output signals.
The gesture recognition sensors are based on the proximity sensors which can detect the
physical elements, so the gesture recognition sensors can also do that.
Gesture recognition is a topic in computer science and language technology with the goal
of interpreting human gestures via mathematical algorithms . Gestures can originate from any
bodily motion or state but commonly originate from the face or hand . Current focuses in the field
include emotion recognition from face and hand gesture recognition. Many approaches have been
made using cameras and computer vision algorithms to interpret sign language . However, the
identification and recognition of posture, gait, proxemics , and human behaviors is also the subject
of gesture recognition techniques.[2]
The recognition of human gestures can mean the beginning to understanding body language
of a computer and building the bridge for com munication between man and machine, without
resorting to mundane interfaces already known.
Gesture recognition enables humans t o communicate with the machine and interact
naturally without any mechanical devices. Using the concept of gesture recognition, i t is possible
to point a finger at the computer screen so that the cursor will move accordingly. This could
potentially make conventional input devices such as mouse , keyboards and even touch –
screens redundant.
Gesture recognition can be conducted with techniques fr om computer vision and image
processing .
Still, t here are many challenges associated wit h the accuracy and usefulness of gesture
recognition software. For image -based gesture recognition there are limitations on the equipment
used and image noise. Images or video may not be under consistent lighting, or in the same location.
Items in the back ground or distinct features of the users may make recognition of different gestures
more difficult.
The variety of implementations for image -based gesture recognition may also cause issue
for viability of the technology to general usage. For example, an al gorithm calibrated for one
camera may not work for a different camera. The amount of background noise also causes tracking
and recognition difficulties, especially when occlusions (partial and full) occur. Furthermore, the
distance from the camera, and the camera's resolution and quality, also cause variations in
recognition accuracy [3].

Pen computing reduces the hardware impact of a system and also increases the range of
physical world objects usable for control beyond traditional digital objects like keyboards and mice.
Such implements can enable a new range of hardware not requiring monitors. This idea may lead
to the creation of holographic display. The term gesture recognition has been used to refer more
narrowly to non -text-input handwriting symbol s, such as inking on a graphics tablet , multi –
touch gestures, and mouse gesture recognition. This is computer interaction through the drawing
of symbols with a pointing device cursor.

We consider online gestures, which can also be regarded as direct manipulations like
scaling and rotating. In contrast, offline gestures are usually processed after the interaction is
finished; e. g. a circle is drawn to activate a context menu.
In computer interfaces, two types of gestures are distinguished:
 Offline gestures: Those gestures that are processed after the user interaction with the object.
An example is the gesture to activate a menu.
 Online gestures: Direct manipulation gestures. They are used to scale or rotate a tangible object.
[4]
Technology nowadays continues to d evelop and mankind has used it to come up with an
innovative sort of man/machine interface. It is called Gesture. And it is not an acronym, it really
does mean interfacing by human gesture. And it is one of the hottest and most researched areas of
technology just now [5].
This technology is developing daily. To ensure the greatest stability and accuracy of it in
real life settings, teams of researchers, engineers and other specialists keep studying and recreating
the normal movements and gestures of the human hand, fingers, face and eyes. Moreover, b ecause
there are numerous variables that contribute to creating an effective and satisfying user experience,
they are carefully working to identify the most important scenarios – everything from lighting
conditions to the most common and natural gestures. Human -device interaction has evolved in a
big way – from keyboard and mouse to touch. Today, more and more people are moving towards
using highly intuitive gesture recognition to interact and control thei r devices , whether mobile
devices or different household machinery .
The market is changing rapidly due to evolving technology and more and more OEM’s are
moving towards gesture recognition technology adoption. As per a report published by Markets
and Mark ets, the gesture recognition market is estimated to grow at a healthy CAGR from 2013 till
2018 and is expected to cross $15.02 billion by the end of these five years. A five year forecast of
specialized a nalysts shows an important growth in the Global Gesture Recognition market , a 29.2
percent estimation over the period 2013 -2018.
If we talk in terms of industry, then currently consumer electronics application contributes
to more than 99% of the global gesture recognition market. As per the report publi shed, the
Healthcare application is expected to emerge as a significant market for gesture recognition
technologies over the next five years. The automotive application for gesture recognition is
expected to be commercialized in 2015 [6].
Having in mind t he progress obtained in this area and also the plans technologists have, we
can say that the future is in our hands.

After the basis and future of gesture recognition are fixed , in the second chapter, it came
obviously to talk about the next important point of interest from the project, the Hillstar
development kit.
The Hillstar Development Kit is designed to support an easy integration of Microchip’s
MGC3130 3D Tracking and Gesture Controller into custo mer’s applications. It provide s MGC3130
system setup, related hardware and software references.
With the MGC3130 Software Package, including Aurea Graphical User Interface and
GestIC Library, the MGC3130 Software Development Kit (SDK) and PIC18 Host Reference code,
design -in is easy in five steps:
 Feature Definition
 Electrode Design
 MGC3130 Parameterization
 Host Application Programming
 Verification

Hillstar hardware builds a complete MGC3130 reference system consisting of three
individual PCBs:
• MGC3130 Unit
• I2C™ to USB Bridge
• Ref erence Electrode with a 95×60 mm sensitive area
It can be plugged to a PC via USB cable and used for evaluation of MGC3130 chip and
GestIC technology. During the customer’s design -in process the individual boards can be combined
according to the customers need.
The Hillstar Development Kit provides an artificial test hand, further called hand brick,
helping to stimulate the human hand operating the GestIC application. The hand brick has to be
used during the design -in process to parametrize and evaluate cus tomer’s applications. The hand
brick’s surface is conductive and connected to GND via cable in order to reproduce the grounding
conditions of the human body [7].
Hillstar Development Kit can be used as a stand -alone GestIC system and evaluated in
conjuncti on with the Aurea PC software.
Microchip’s GestIC is a 3D sensor technology which utilizes an electric field (E -field) for
advanced proximity sensing. It allows realization of new user interface applications by detection,
tracking and classification of a u ser’s ha nd gestures in free space .
E-fields are generated by electrical charges and propagate three -dimensionally around the
surface, carrying the electrical charge.
Applying direct voltages (DC) to an electrode results in a constant electric field. Applying
alternating voltages (AC) makes the charges vary over time and thus, the field.
Microchip’s GestIC technology uses transmit (Tx) frequencies in the range of 100 kHz
which reflects a wavelength of about three kilometers. With electrode geometries o f typically less
than fourteen by fourteen centimeters, this wavelength is much larger in comparison. GestIC
systems work without wave propagation .
In case a person’s hand or finger intrudes the electrical field, the field becomes distorted.
The field line s are drawn to the hand due to the conductivity of the human body itself and shunted
to ground. The threedimensional electric field decreases locally. Microchip’s GestIC technology
uses a minimum number of four receiver (Rx) electrodes to detect the E -field variations at different
positions to measure the origin of the electric field distortion from the varying signals received.
The information is used to calculate the position, track movements (MGC3130) and to classify
movement patterns (gestures, MGC3X30) .

Some benefits of using the GestIC technology are:
 GestIC E -field sensors are not impacted by ambient influences such as light or sound, which
have a negative impact to the majority of other 3D technologies.
 GestIC technology allows gesture/position tr acking processing on chip – no host processing
needed. Algorithms are included in the Colibri gesture suite which runs on chip and is
provided my Microchip.
 The GestIC technology has a high immunity to noise, provides high update rates and
resolution, low latency and is also not affected by clothing, surface texture or reflectivity.
 A carrier frequency in the range of 44 -115 kHz is being used with the benefit of being
outside the regulated radio frequency range. In the same manner, GestIC is not affected by
radio interference.
 Usage of thin low -cost materials as electrodes allow low system cost at slim industrial
designs.
A hand gesture is the movement of the hand to express an idea or meaning. The GestIC®
technology accurately allows sensing of a user’s free space hand motion for contact free
position tracking, as well as 3D gesture recognition based on classified movement patterns [8].

The next point of interest it represents the ST’s development kit called Disovery F3 .
The STM32F3DISCOVERY is designed to help you explore the features of the STM32 F3
32-bit ARM® Cortex™ -M4 mixed -signal MCU, and develop your applications. It is based on an
STM32F303VCT6 and includes an ST -LINK/V2 embedded debug tool interface, Gyroscope ST
MEMS, E -compass with acceleromet er ST MEMS, LEDs, pushbuttons and a USB mini -B
connector.
Is a low -cost and easy -to-use development kit to quickly evaluate and start development
with an STM 32 F3 series microcontroller. The STM32F3DISCOVERY is designed around the
STM32F303VCT6 microcontrol ler in a 100-pin LQFP package.
This ARM™Cortex -M4 32 -bit MCU with FPU has 256 KB Flash, 48 KB SRAM, 4 ADCs, two
DAC channels, seven comparators, four PGAs, 13 timers, 2.0 -3.6 V operation.

This device provides the following benefits:
 72 MHz/62 DMIPS (from Flash) or 94 DMIPS (from CCM -SRAM) Cortex -M4 with single
cycle DSP MAC and floating point unit:
 Boosted execution of control algorithms.
 More features possible for your applications.
 Ease of use.
 Better code efficiency.
 Faster time to market.
 Elimination of scaling and saturation.
 Easier support for meta -language tools.
 Real-time performance:
The power supply is provided either by the host PC through the USB cable, or by an external
5 V power supply [9].
The L6208 device is a DMOS fully integrated stepper motor driver with non -dissipative
overcurrent protection, realized in BCD technology, which combines isolated DMOS power
transistors with CMOS and bipolar circuits on the same chip.
The device includes all the circuitry needed to drive a two phase bipolar stepper motor including:
dual DMOS full bridge, the constant off time PWM current controller that performs the chopping
regulation and the phase sequence generator, that generates the stepping sequence.
PowerDIP24 (20 + 2 + 2), PowerSO36 and SO24 (20 + 2 + 2) packages, the L6208 device
features a non -dissipative overcurrent protection on the high -side Power MOSFETs and thermal
shutdown.
The main features offered by this IC are: Operating supply voltage from 8 to 52 V
5.6 A output peak current (2.8 A RMS)
RDS(ON) 0.3 Ω typ. value at Tj = 25 °C
 Operating frequency up to 100 KHz
 Non-dissipative overcurrent protection
 Dual independent constant tOFF PWM current
 controllers
 Fast/slow decay mode selection
 Fast decay quasi -synchronous rectification
 Decoding logic for stepper motor full and half
 step drive
 Cross conduction protection
 Thermal shutdown
 Undervoltage lockout
 Integrated fast freewheeling diodes

The NE555 are precision timing circuits capable of producing accurate time delays or
oscillation. In the time -delay or mono -stable mode of operation, the timed interval is controlled by
a single resistor and capacitor network. In the a -stable mode of operation, the common frequency
and duty cycle can be controlled independently with two external resistors and a s ingle external
capacitor.
The threshold and trigger levels normally are two thirds and one -third, respectively, of V cc.
These levels can be altered by use of the control -voltage terminal. When trigger input falls below
the trigger level, the flip -flop is s et, and the output goes high. If the trigger input level is above the
trigger level and the threshold input is above the treshold level, the flip -flop is reset and the output
is low.
The output circuit is capable of sinking or sourcing current up to 200mA. Operation is
specified for supplies of 5V to 15V. With a 5 -V supply, output levels are compatible with TTL
inputs [ 10].
When it comes to stepper motors we define it as a brushless DC electric motor that divides
a full rotation into a number of equal steps. The motor's position can then be commanded to move
and hold at one of these steps without any feedback sensor (an open -loop controller ), as long as the
motor is carefully sized to the application.
Switched reluctance motors are very large stepping motors with a reduced pole count, and
generally are closed -loop commutated.
DC brushed motors rotate con tinuously when DC voltage is applied to their terminals. The
stepper motor is known by its important property to convert a train of input pulses (typically square
wave pulses) into a precisely defined increment in the shaft position. Each pulse moves the s haft
through a fixed angle. Stepper motors effectively have multiple "toothed" electromagnets arranged
around a central gear -shaped piece of iron.
The electromagnets are energized by an external control circuit, such as a microcontroller .
To make the motor shaft turn, first, one electromagnet is given power, which magnetically attracts
the gear's teeth. When the gear's teeth are aligned to the first electromagnet, they are s lightly offset
from the next electromagnet. This means that when the next electromagnet is turned on and the
first is turned off, the gear rotates slightly to align with the next one. From there the process is
repeated. Each of those rotations is called a "step", with an integer number of steps making a full
rotation. In that way, the motor can be turned by a precise angle [11].
The driver designed to drive stepper motors, is dedicated to two-phase bipolar motors ,
which requires a maximum current of 2.8A p er phase. The c ontrol signal of the driver is based on
a rectangular signal generated by the NE555 circuit connected in the a -stable mode.
To configure the dedicated development kit Hillstar the Aurea Graphical User Interface is
required .
In order to configure it, the Setup tab must be accessed. After that the following steps must
be made:
 Parametrization
 Frimware selection
 Start Parametrization

The first thing that must be configured is the System Start -Up page which sets the behavior
of the board after we connect it to the power supply. Here, all the simple gestures must be checked
on a periodical basis.
The next step is the configuration of the Gesture Port which offers the possiblillity to set
any gesture on any output pin, even more g estrures on the same pin, with different actions when
are triggered.
In this aplication, is mandatory to set all the initial states of the pins to HIGH because the
action that we need in order to control the stepper motors requires a low pulse signal.
Those low pulse signals will trigger the interrupts set on the Discovery’s general purpose
input – output pins.

After the interrupt is triggered, on the same board, other general purpose input – output pins
will give us the voltage supply that is needed to energize the NE555.
Finally, putting together the blocks and items related I managed to create a li ghting system
controlled by touch less sensors, or better said with three -dimensional gestures.

Planificarea activității
20.10.2014 – Alegerea temei
27.10.2014 – 21.11.2014 – Documentare, studiu
24.11.2014 – 02.01.2015 – Dezvoltarea conceptului, studierea soluțiilor posibile
05.01.2015 – 16.01.2015 – Crearea unui prototip
16.02.2015 – 10.04.2015 – Definitivare parțială a conceptului
13.04.2015 – 15.05.2015 – Realizarea părții practice a proiectului de licență
18.05.2015 – 19.06.2015 – Realizarea părții teoretice a proiectului de licență
22.06.2015 – Predarea proiectului de licență

1

1. Stadiul actual

Senzorul este un dispozitiv tehnic care reacționează calitativ sau cantitativ prin proprii
mărimi măsurabile, la anumite proprietăți fizice sau chimice ale mediului din preajma lui [1]. Acel
senzor a cărui mărime măsurabilă de ieșire este modificată fără s ă existe contact fizic între senzor
și perturbator este definit ca senzor non -atingere.
Un senzor de proximitate este acel senzor care detectează elemente fizice, recunoașterea
gesturilor bazându -se pe acest tip de senzor.
Recunoașterea gesturilor este un subiect bazat pe computere și pe tehnologia limbajului, iar
principalul scop este acela de a interpreta gesturi umane cu ajutorul algoritmilor matematici.
Gesturile pot fi simple mișcări ale corpului uman însă , de obicei, nu tot corpul ia parte la
crearea unui gest ci doar faț a sau mâna. Principala preocupare a celor care dezvoltă astfel gesturi
este de a transpune mișcări sugestive ale feței sau mâinii , care exprimă emoții sau sentimente, în
gesturi.
La început, cele mai mari progrese în recunoașterea ges turilor s -au făcut cu ajutorul
camerelor de luat vederi conectate la computer și cu utilizarea de algoritmi specializați în
recunoașterea semnelor. De asemenea, recunoașterea posturii, mersului și comportamentului uman
a devenit un subiect de discuție care implică tehnici de recunoaștere a gesturilor.
Recunoașterea gesturilor umane poate însemna începutul pentru înțelegerea limbajului
trupului de către un computer și construirea podului de comunicare dintre om și mașină, fără a
apela la banalele interfețe d eja cunoscute.
Aceasta recunoaștere a gesturilor îi permite omului să comunice cu mașina, mult mai
natural, fără a implica alte instrumente mecanice. Spre exemplu, îndreptarea degetului spre o zonă
a ecranului pentru a muta cursorul se poate încadra în sub iectul nostru de discuție.
Tehnica "pen computing" reduce impactul hardware al unui sistem și de aseme nea crește
numărul de obiecte care pot fi folosite pentru control , pe lângă tradiționalele tastatur ă și mouse.
Acest lucru conduce la implementarea unor e chipamente hardware fără a fi necesară utilizarea
monitorului și poate duce la crearea afișajului holografic.
În lumea virtuală se disting două tipuri de gesturi. Considerăm gesturi "online", gesturile
care pot fi asociate cu manipulări directe , precum rotația sau mărire a/micșorarea unei imagini. În
contrast, gesturile "offline" sunt de obicei procesate ca și acțiuni ce se execută după terminarea
gestului, iar un exemplu concludent de gest offline ar fi realizarea unui cerc care , după executare ,
activează u n meniu.
Dispozitivele de recunoaștere a gesturilor se bazează pe diferite tehnologii, câteva exemple
fiind mănușile inteligente, camere specializate, camere video, etc.
Mănușile inteligente sau "Wired Gloves" pot fi conec tate la un computer și pot ofer i detalii
despre poziția și rotația mâinii folosind dispozitive de urmărire magnetice sau inerțiale. Mai mult,
anumite mănuși speciale detectează și oferă detalii despre unghiul creat între două falange
adiacente, cu o acuratețe de 5 – 10 grade sau pot chia r oferi un “feedback” utilizatorului cu ajutorul
anumitor dispozitive. P rima mănușă disponibilă pe piață , care oferea detalii despre poziționarea,
mișcarea și unghiul dintre falange a fost "DataGlove".

2

Figura 1.1 DataGlove

Camere specializate în recunoașterea în "adâncime" pot genera o hartă tridimensională a
ceea ce "văd" în apropiere. Aceste camere sunt utile doar în recunoașterea gesturilor mâinii
deoarece raza lor de acțiune este destul de mică.
Camere stereo sau folosirea a două camere a căr or relație este bine cunoscută și definită
astfel încât ieșirea lor să fie comună și să ofere o imagine tridimensională.
Un alt tip de dispozitiv este cel de tip "controller" care funcționează ca și o extensie a
corpului astfel încât , în momentul în care u n gest este făcut acesta este captat, iar un software
dedicat îl convertește într -o acțiune. Gesturile făcute cu ajutorul unui mouse care înglobează o
astfel de tehnologie poate fi un exemplu bun de dispozitiv. "Wii Remote" sau "Myo" sunt de
asemenea două exemple concludente, ele transformând accelerația generată de utilizator într -un
gest.
Camera video simplă este și ea un exemplu de dispozitiv care recunoaște gesturile chiar
dacă, la început, nu se credea prea mult în capacitatea unei singure camere de a recunoaște aceste
gesturi. Recent, anumite companii au început să dezvolte camere, în paralel cu soluții software
pentru a face cât mai ușoară recunoaștere a gesturilor de către acestea.
În funcție de metoda de conversie a gesturilor în semnale electrice, interpretarea lor se poate
face în mai multe feluri. Majoritatea se bazează pe reprezentări într -un sistem tridimensional de
coordonate. Mai nou, detectarea gesturilor se poate face cu o acuratețe foarte mare, însă aceasta
acuratețe depinde de calitatea ge stului făcut și de algoritmul după care această recunoaștere
funcționează.
Recunoaștere a se poate face după două metode. Prima este bazată pe modele
tridimensionale, iar cea de-a doua se bazează pe aparenț e sau pe modele bidimensionale.
Algoritmii bazați pe modele tridimensionale folosesc modele volumetrice sau scheletal e
sau chiar o combinație a acestora.

3

Figura 1.2 Algoritmi bazaț i pe modele tridimensionale

Algoritmii bazați pe modele bidimensionale nu folosesc o reprezentare spațială deoarece
parametrii citiți sunt direct din imagini (foto sau video) , folosind un șablon.

Figura 1.3 Algoritmi bazaț i pe modele bidimensionale

Există și multe provocări legate de acuratețea și utilitatea acestor soluții software. Pentru
recunoașterea pe bază de imagini apar limitări în funcție de echipamentul folosit și de calitatea
imaginii. Imaginile sau filmulețele pot să nu fie captate la o intensitate bună a luminii, iar obiec tele
din jur vor face de asemenea captarea mult mai dificilă.
Varietatea de implementări ale tehnicii de recunoaștere a gesturilor pe baza imaginilor pot
crea la rândul lor probleme de fiabilitate. Spre exemplu, un algoritm calibrat pentru un anumit tip
de cameră poate sau nu poate să funcționeze pe un alt tip. Cantitatea de distorsiuni din fundal poate
de asemenea , să dăuneze și să îngreuneze recunoașterea unui gest, iar distanța, rezoluți a camerei și
calitatea ei pot cauza modificări ale acurateței de rec unoaștere.
De asemenea, piața evoluează rapid, iar tot mai mulți dezvo ltatori migrează spre soluții care
implică recunoașterea gesturilor. Potrivit unui raport publicat de "Markets and Markets", se
estimează că valoarea pieței de recunoaștere a gesturilor, pe perioada 2013 -2018, vă depăș i pragul
de 15.2 miliarde de dolari, ceea ce înseamnă că va crește cu aproximativ 29.2%.

4
Dacă vorbim despre industrie, aplicațiile "devoratorilor" de electronice reprezintă mai mult
de 99% din piața de recunoaștere a gesturi lor. Tot în același raport se precizează că piața tinde să
se extindă și spre industria auto și medicală în următorii cinci ani.
La începuturile lor, jocurile video se bazau pe banala tastatură QWERTY conectată la
dispozitive cum ar fi Sinclair Spectrum sa u Atari 400/800. Treptat, aceasta a fost înlocuită cu
Joystick -ul clasic, iar mai apoi cu Joypad -uri.
În ziua de azi, aceste tehnologii sunt considerate "învechite" deoarece ne aflăm în era
jocurilor bazate pe gesturi.
Primul dispozitiv folosit la jocurile video a fost probabil "PowerGlove", lansat în 1989,
dispo zitiv care a fost cu mult în faț a competitorilor și care a supraviețui t prin Nintendo DNA. Au
urmat apoi numeroase dispozitive similare, dar care au fost trecute în umbră în anul 2005, an în
care a fost lansată consola "Wii".
Fără nici un dubiu, viitorul jocurilor video se află în tehnologia de recunoaștere a gesturilor,
iar producătorii se conformează, fiecare dintre ei oferind posibilitatea utilizării gesturilor pentru
controlul aplicației.

Figura 1.4 Prima consolă Wii

5

2. Fundamentare teoretică

2.1 Disp ozitive dedicate pentru recunoaș terea gesturilor

2.1.1 Kit-ul de dezvoltare “Hillstar”

Kit-ul de dezvoltare Hillstar este creat pentru a facilita integrarea microcontrolerului de
recunoaștere a gesturilor MGC3130 în diverse aplicații ale utilizatorului.
Acest kit futurist se compune din trei plă ci electronice și anume:
 Modulul MGC3130
 Modulul I2C to USB
 Electrozii de referință, având suprafața senzitivă de 95×60 mm.
Pentru evaluar e, testare și parametrizare, kit -ul se conectează la calculator printr -un cablu
USB.
Câteva exemple de conectare ar fi Combinarea MGC3130 cu I2C to USB Bridge pentru
evaluare și depanare și combinarea lui MGC3130 cu electrozii pentru dezvoltarea de aplicaț ii
bazate pe gesturi 2D și 3D pentru calculatoare sau pentru alte sisteme înglobate.
Kit-ul de dezvoltare Hill star oferă și o mână artificială de test pentru a facilita simularea
mâinii umane și pentru a calibra cu ușurință aplicația dezvoltată. Aceasta mâ nă artificială este de
fapt un cub a cărui suprafață este conduc ătoare și este conectată la masă astfel încât să poată
reproduce condițiile de împământare ale corpului uman.

Figura 2.1 Kit-ul de dezvoltare Hillstar.

Acest kit poate fi folosit ca și sistem “Stand -Alone” sau poate fi utilizat complementar cu
softul dedicat “Aurea Graphical User Interface”.
Seria de microcontrolere MGC3X30 a celor de la Microchip este dedicată recunoașterii și
utilizării gesturilor tridimensionale și se bazează pe o teh nologie patentată numită GestIC. Aceasta
oferă utilizatorului posibilitatea de a utiliza propria mână sau propriul deget pentru a da comenzi
dispozitivului. Implementat ca și un microcontroler configurabil pentru semnale mixte, având

6
putere redusă, acesta oferă o plajă variată de funcționalități cu ajutorul unui driver de semnal
integrat, a unei intrări adaptive în frecvența (astfel încât zgomotele să fie suprimate automat) și a
unui procesor digital de semnal.
Familia MGC3X30 reprezintă o soluție unică car e oferă informații despre gesturile mâinii
umane în timp real și permite realizarea unei noi generații de aplicații.
Câteva exemple de aplicații sunt: în industria audio, calculatoare, periferice, automatizări
pentru acasă, comutatoare, produse medicale, c ontrolere pentru jocuri, etc. Varietatea de moduri
de operare ale acestui microcontroler include modul de procesare (activ), unde consumul de energie
este de 20mA la 3.3V, modul de auto -trezire unde consumul este de 110uA la 3.3V și modul “Deep –
Sleep” unde consumul este de 9uA la 3.3V ceea ce confirmă faptul că acest microcontroler este
unul cu consum redus de energie.
Tehnologia GestIC de la Microchip înglobează un senzor care detectează gesturi
tridimensionale și utilizează un câmp electric pentru detecta rea acestora. Perm ite realizarea unei
aplicații care necesită detectarea, urmărirea și clasificarea gesturilor făcute de utilizator cu propria
mână, în spațiul liber, fără nici un fel de contact fizic (deasupra zonei de sensibilitate).
Câmpurile electrice, generate de încărcări electrice, se propagă tridimensional deasupra
zonei de sensibilitate.

Figura 2.2 Câmpul electric generat Figura 2.3 Modificarea c âmpului electric la
introducerea mâ inii

Aplicând curent continuu unui electrod, acesta generează un câmp electric constant, iar la
aplicarea unui curent alternativ acesta duce în timp la variația câmpului generat. Când sarcina
varia ză sinusoidal cu frecvența, unda electromagnetică rezultată este caracterizată de lungimea de
undă.

𝜆=𝑐
𝑓 (2.1)

Unde “c” este viteza luminii în vid, iar “f” frecvență. În cazul în care lungimea de undă este mult
mai mare decât dimensiunile geometrice ale electrozilor, componenta magnetică este zero.
Rezultatul este un câmp electric cvasistatic care poate fi utilizat la detectarea obiectelor
conduc ătoare cum ar fi corpul uman, mâ na umană.
Tehnologia GestIC transmite semnale cu frecvențe de până la 100 kHz ceea ce înseamnă că
lungimea de undă este de aproximativ 3 kilometri față de cei 9.5 cm ai electrozilor și rezultă că
tehnologia GestIC funcționează cu sau fără propagare de unde.
În cazul în care un obiect pătrunde în câmpul electric, apa r distorsiuni, iar liniile de câ mp
sunt atrase de către obiect (mâna) datorită șuntării la masă a corpului, iar intensitatea câmpului
electric tridimensional scade local.

7
Tehnologia folosește minim patru electrozi pentru a putea detecta modificări ale câmpului
în diferite locuri și pentru a măsura originea distorsiunilor din varietatea de semnale recepționate.
Informațiile primite sunt folosite la calculul poziției și la ur mărirea mișcărilor pentru a asocia
mișcările făcute cu setul de gesturi predefinite.
Un gest este definit ca o mișcare cursivă a mâinii care exprimă sa u înseamnă ceva și care
se încadrează în setul de gesturi tridimensionale recunoscute.
Cip-ul este livrat cu librăria GestIC care este stocată în memoria flash dar se poate înlocui
oricând folosind programul special creat pentru acesta, “Aurea Graphical User Interface”.
Procesorul de semnal denumit în continuare “Colibri” înglobează trei funcții extrem de
importante și anume:
 Achiziția de date
 Procesarea semnalului digital
 Interpretarea.
Gesturile recunoscute sunt gesturi de tip:
 Flick
 Double Flick
 Edge Flick
 Circular
 Approach Detection
 Touch

Figura 2.4 Gest de tip Flick Figura 2.5 Gest de tip Circle

Gestul de tip “ Flick ” presupune un gest rapid, unidirecț ional , perpendicular pe doi electrozi
paraleli.
Gestul de tip “Circle” presupune un gest deasupra zonei de sensibilitate , de form ă circulară,
fără a conta poziț ia ini țială a mâinii pe lungimea cercului și poate fi de două tipuri:
 Discret: rezultatul gestului indică doar direcția în care acesta a fost fă cut (orar sau
antiorar).
 Airwh eel: gestul se face printr -o mișcare circulară continuă si rezultatul oferă detalii at ât
despre numărul de rotații fă cute c ât și despre sensul acestora.
Gestul de tip “Approach Wake -up” s au “detectarea la apropier e” se face simplu, apropiind
mâna la circa 5 centimet ri deasupra zonei de detectare ș i astfel kit -ul iese din modul de economisire
a energiei.

8

Figura 2.6 Gest de tip Approach Wake -up

“Detectarea la apropiere” a unui corp face parte din sistemul înglobat de economisire a energiei
care este la rândul lui integrat în “Colibri”. Acest sistem pun e microcontrolerul în modul de
economisire a energiei și scanează periodic zona pentru a detecta o eventuală apropiere a
utilizatorului. Dacă este utilizat în modul de auto -trezire predefinit, microcontrolerul alternează
două stări, cea de “detectare la ap ropiere” și cea de economisire a energiei, astfel detecția se face
cu un consum foarte mic de energie.
În momentul în care microcontrolerul se află în starea de “detectare la apropiere”, acesta face
două scanări: “Scanare de apropiere” și “Scanare de calib rare”.
“Scanarea de apropiere” este de fapt, menținerea activă cel puțin a unui canal de recepție, iar
intervalul dintre două scanări se poate seta între 20 și 150 ms. În momentul în care canalul este
menținut activ, acesta detectează modificări ale câmpului și permite “trezirea” autonomă a
microcontrolerului.
“Scanarea de calibrare” permite rularea altor tipuri de scanare care să permită adaptarea
frecvenței în funcție de schimbările care apar în mediul înconjurător. O astfel de scanare se face de
obicei la fiecare 2 s, dar și acest interval se poate modifica până la 1024 s. Pentru a reduce și mai
mult consumul de energie, numărul acestor scanări este scăzut automat în momentul în care
utilizatorul nu mai interacționează cu câmpul electric o anumită p erioadă.
Arhitectura întregului sistem se compune din:
 Microcontrolerul MGC3X30
 Librăria GestIC
 Electrozii externi
La rândul lui, microcontrolerul MGC3X30 este compus din trei blocuri principale și anume:
 Low Noise Analog Front End
 Digital Signal Processin g Unit
 Comunication interfaces.

Figura 2.7 Arhitectura microcontrolerului MGC3X30

9
Librăria GestIC – aceasta li brărie înglobată este optimizată pentru a asigura o recunoaște re
rapidă a gesturilor și pentru urmărirea mâinii în timp real. Este configurabilă în totalitate și necesită
parametrizare atât pentru fiecare aplicație cât și pentru fiecare electrod.
Electrozii externi – sunt conectați la microcontroler, și fiecare dintre ei sunt creați special
pentru a crea un câmp electric op tim, pentru a facilita detectarea distorsiunilor introduse de către
utilizator.
Urmărirea poziției mâinii și recunoaștere a gesturilor depinde de design -ul și caracteristicile
materialului din care sunt confecționați aceștia.
Un circuit echivalent, simplifi cat, al unui e lectrod este prezentat în figura 2.8.

Figura 2.8 Circuitul echivalent al unui electrod.

𝑉𝑅𝑥=𝑉𝑇𝑥 × 𝐶𝑅𝑥𝑇𝑥
𝐶𝑅𝑥𝑇𝑥 +𝐶𝑅𝑥𝐺+𝐶𝐻 (2.2)

VTx – Tensiunea pe electrodul Tx
VRxBuf – Tensiune de intrare pe Rx
CH – Capacitatea dintre electrodul de recepție și mâna (masa)
CRxTx – Capacitatea dintre electrozii de transmițători și receptori
CRxG – Capacitatea electrodului de recepție + capacitatea de între g a circuitului de recepție
al microcontrolerului
CTxG – Capaci tatea dintre electrodul de transmis ie și masa microcontrolerului
℮Rx – Electrodul de recepție
℮Tx – Electrodul de transmisie

10

2.2 STM32F3 Discovery kit

Kit-ul de dezvoltare STM32F3 Discovery al celor de la ST Microelectronics este un
dispozitiv cu un preț redus care permite dezvoltarea aplicaților complexe și se bazează pe un
microcontroler ARM Cortex -M4 pe 32 biți, ceea ce face acest kit unul foarte performant. Pe lângă
acest microcontroler, kit -ul vine e chipat și cu o interfață de depa nare (ST -LINK/V2), un giroscop
(Gyroscope ST MEMS), o busolă digitală și un accelerometru (E -Compass, Accelerometer ST
MEMS), dar și cu led -uri și butoane configurabile în întregime.
Seria STM32F3 este cea de -a doua serie a celor de la ST și este aproape în totalitat e
compatibilă cu seria F1. Pe lângă microcontrolerul cu care vine echipat kit -ul, acesta integrează o
memorie RAM de până la 40KB, memorie flash care poate ajunge la 256KB și 8KB system boot,
oscilatoare interne de 8MHz și 40kHz.
Tensiunea de operare este cuprinsă între 2V și 3.6V ceea ce face ca alimentarea să fie
extrem de facilă. Partea mai specială a kit -ului const ă în cele 4 convertoare analog -numerice rapide,
multiplexate pe mai mult de 30 de canale și cele 4 amplificatoare o peraționale de 8MHz a căro r
pini sunt conectați la o rețea de amplificatoare operaționale cu câștig programabil.
Pinii expuși permit condiționarea multor semnale analogice, ca de exemplu filtru trece
banda, anti -alias, amplificatoare de instrumentație cu câștig mare și multe altele .
De asemenea acest kit integrează și un convertor numeric – analog cu două canale care poate
genera forme de undă (sinus, triungi, zgomot).
Intrările amplificatoarelor operaționa le permit multiplexare analogică 2 la 1, deci în total 8
canale analogic e pot fi pre -procesate simultan. D e asemenea , toate ieșirile amplificatoarelor pot fi
conectate intern la convertoarele analog – numerice.
Microcontrolerul ARM Cortex -M4 este un controler pe 32 de biți, cu un set de instrucțiuni
redus (RISC), dar suficient de p uternic pentru dezvoltarea de aplicații destul de complexe.
Beneficiile majore pe care acest dispozitiv le oferă sunt:
 Microcontrolerul ARM Cortex -M4 cu 256kB memorie Flash și 48KB memorie RAM.
 Port SWD pentru depănare și programare.
 Sursa de tensiune de 3 V și 5V.
 Giroscop digital pe trei axe.
 Senzor digital 3D de accelerație.
 Senzor magnetic digital 3D.
 10 leduri din care 8 pot fi folosite de către utilizator.
 Extensie pentru 100 de pini de intrare -ieșire de uz general.
 Două butoane (USER și RESET).

11

Figura 2.9 Diagrama bloc hardware a kit -ului STM32F3 Discovery.

Seria de microcon trolere ARM Cortex -M este una care conț ine procesoare pe 32 biti cu un
set redus de instruc țiuni (RISC – Reduced Instruction Set Computer) a c ărui licență o deț ine ARM
Holdings. Nucleele acestor procesoare sunt create pentru utilizarea lor pe post de microcontrolere
și anume ARM Cortex -M0, M0+, M1, M3, M4 si M7.
Microcontrolerul ARM Cortex -M4 are la bază un alt microcontroler, ARM Cortex -M3
căruia i -au fost adăug ate instrucț iuni de pr ocesor digital de semnal (DSP) și o unitate î n virgul ă
mobil ă (FPU). Avantajele utilizarii acestui mocrocontroler sunt:
 Arhitectura ARMv7E – M.
 Pipeline pe 3 etaje cu “Branch Speculation”.
 Setul de instrucț iuni ce inlude: Thumb, Thumb -2, multiplicare hardware cu rezu ltat pe
32 sau 64 biti cu sau fără semn, divizare hardware pe 32 de biti.
 Extensiile DSP: operații de multiplicare ș i adunare (MAC) pe 16/32 biti, aritmeti că
SIMD pe 8/16 biti.
 Până la 240 de î ntreruperi.
 Întreruperi N on-Maskable (NMI).
 Moduri integrate de economisire a energiei.
 Clock intern de 72MHz.
 Unitate de protecț ie a memoriei (MPU).
 Eficiență energetică sporită : Stop Mode – 5.7uA, alimentare î ntre 2V si 3.6V, posibilitate
de alimentare de la baterie.

12

 Periferice :
 4 × ADC -uri pe 12 biti.
 4 × Amplificatoare cu câștig variabil cu o acurateț e de 1%.
 1 × DAC pe 12 biti.
 13 × timere din care 1 pe 32 biti, și 12 pe 16 biți cu o viteză de până la 144MHz.
 Interfața I2S simplex sau full duplex pentru aplicații audio.
 12 × interfețe de comunicare: 5 × USART de 9Mbit/s, 3 × SPI, 2 × I2S, 2 × I2C, 1 × CAN
de 1Mbit/s, 1 × USB.
 Verificare de redundanță ciclică (CRC).

Figura 2.10 Schema bloc a kit -ului

13
2.3 Circuite de control a motoarelor pas cu pas

2.3.1 L6208

Circuitul integrat L6208 este un driver pentru motoare pas cu pas complet, și conține atât
partea de logică de control cât și partea de amplificare a curentului. Rea lizat în tehnologie BCD,
combină tranzistori de putere DMOS cu cei CMOS și cu alte circuite bipolare.
Acest circuit integrat conține tot ce este necesar pentru a putea controla motoare pas cu pas
bipolare cu două faze. Se împart în mai multe blocuri, fiecare îndeplinind anumite sarcini.
Aceste blocuri sunt:
 Circuitul de Bootstrap
 Protecția term ică
 Regulatorul de tensiune
 Generatorul de semnal
 Puntea A:
 Protecția la supracurent
 Poarta logică
 “One -shot” monostabil
 Comparator
 Puntea B:
 Poarta logică
 Circuit pentru detecția de supracurent
Este disponibil în trei capsule, PowerDIP 20+2+2, PowerSO36 și SO24 20+2+2, fiecare
dintre ele incluzând protecția la supracurent fără disipare de căldură, iar în cazul în care acesta
disipa căldura mai are inclusă o auto – oprire termică (“Thermal Shutdown”).
Tensiunea de intrare este variată și pleacă de la 8V a jungând până la 52V, iar curentul
maxim de ieșire este de 5.6A (2.8A RMS).

Figura 2.11 Schema internă a circuitului integrat L6208.

Cele două punți MOȘ independente au rezistenta drena sursa de aproximativ 0.3Ω.

14
Pinii V SA și V SB trebuie conectați împreună la sursa de tensiune V S. La alimentarea
integratului cu tensiuni de până la 12V, se observă o creștere cu câteva procente a rezistenței drenă –
sursă R DS.
Folosind tranzistori NMOS pentru etajul superior al punții, aceștia necesi tă o tensiune mai
mare decât sursa de alimentare, iar această tensiune este generată de sursa V BOOT cu ajutorul unui
oscilator intern și a câtorva componente externe care realizează circuitul de BOOTS TRAP .
Oscilatorul oferă la ieșire un semnal de frecvență 600 kHz și este de formă dreptunghiulară, de
obicei având amplitudinea de ieșire de 10V. În general la realizarea circuitului de BOOTSTRAP
se folosesc valori standard pentru componentele externe, acestea fiind precizate în foaia de catalog.

Figura 2.12 Schema generică pentru circuitul de BOOTSTRAP .

Intrarile CONTROL, HALF/FULL, CLOCK, RESET si CW/CCW sunt intr ări logice
compatibile TTL/CMOS. Structura unui pin de intrare este prezentat ă în figura urm ătoare:

Figura 2.13 Schema unui pin de intrare.

Figura 2.14 Schema electrică a pinului EN
folosit î n modul colector comun. Figura 2.15 Schema electrică a pinului EN
folosit î n modul PUSH -PULL.

Pinul de intrare EN (“ENABLE”) are o structură similară cu deosebirea că, acesta mai
are conectate și protecția la supracurent și cea termică , ceea ce îi face mai delicată utilizarea fiind
necesară mai multă atenție. Poate fi folosit în do uă moduri diferite, primul fiind “drena comună”

15
unde sunt necesare două componente: o rezistență de PULL -UP și un condensator. Dacă este folosit
în modul 2, adică structura standard “PUSH -PULL”, componentele externe se conectează diferit.
Controlerul de cu rent al pulsului modulat în durata este deținut de către ambele punți și
acesta “simte” curentul din punte prin detectarea căderii de tensiune pe rezistenț a externă conectată
între sursele tranzistorilor din etajul inferior și masă. Odată cu creșterea cure ntului prin motor,
crește proporțional și tensiunea pe această rezistență, iar în momentul în care această cădere de
tensiune este mai mare decât tensiunile de referință V RefA și V RefB, comparatorul declanșează
monostabilul și aceste oprește puntea.

Figura 2.16 Schem a internă simplificată a contro lerului de curent PWM.

2.3.2 Timer -ul 555

Acest circuit integrat este un circuit foarte precis, capabil să producă oscilații sau întârzieri
cu o acuratețe foarte mare. Dacă funcționează în modul “mono -stabil” intervalul de timp e ste
controlat cu ajutorul a două componente, o rețea rezistență -condensator, iar la funcțio nare în mod
“astabil”, frecvența și factorul de umplere s unt controlate cu două rezistenț e și un condensator.
Schema bloc a unui ti mer 555 este prezentată în figură următoare:

Figura 2.17 Schema inte rnă simplificat ă a timerului NE555
Nivelele normale ale pinilor Treshold și Trigger sunt de obicei două treimi și respectiv o
treime din tensiunea de alimentare, dar aceste nivele pot fi modificate cu ajutorul pinului de control
al tensiunii (CV).

16
Circuitul este capabil să absoarbă sau să ofere un curent de până la 200mA, tensiunea de
alimentare poate varia între 5V și 15V, iar la alimentarea cu 5V, nivelul ieșirilor sunt compatibile
cu intrările TTL ale altor circuite.

2.4 Motor pas cu pas

Motoarele pas cu pas sunt motoare sincrone care au înfășurări statorice și sunt alimentate
cu impulsuri de curent, rezultate în urma aplicării unor impul suri de tensiune de tip “treaptă”. Acest
tip de motoare transformă impulsurile în deplasări unghiulare sau liniare discrete numite pași și
sunt considerate convertoare -amplificatoare de informație numerică.
Clasificarea motoarelor pas cu pas:
 active, excitate cu magneți permanenți
 reactive

Figura 2.1 8 Motor pas cu pas reactiv cu rotor bipolar și stator cu 8 poli

Bobinele statorice sunt alimentate printr -un comutator electronic de la o sursă de curent
continuu. Pentru ca energia magnetică a sistemului să fie maximă, rotorul ocupă poziția în care
reluctanța echivalentă a circuitului este minimă.
 La alimentarea înfășurărilor corespunzătoare polilor 1 -1' rotorul se situează în lungul
axei.
 Înfășurările corespunzătoare polilor 1 -1' și 2 -2' alimentate fac rotorul să se situeze pe
bisectoarea unghiului dintre axele polilor 1 -1' și 2 -2’, deci dintre axele geometrice a doi poli
consecutivi, rezultând un unghi de pas de 15°.
 Alimentarea înfășurărilor 2 -2' face rotorul să se alinieze pe axa 2 -2' rezultând un pas
ungh iular de 30° = 15° + 15°.
O altă clasificare a motoarelor pas cu pas în funcție de numărul înfășurărilor de comandă:
 Motoare pas cu pas cu o singură înfășurare de comandă.
 Motoare pas cu pas cu două înfășurări de comandă.
 Motoare pas cu pas cu trei sau mai multe înfășurări de comandă.

Figura 2. 19 Motor pas cu pas
cu o singură înfăș urare Figura 2. 20 Motor pas cu pas cu
două înfășură ri Figura 2. 21 Motor pas cu pas
cu 3 sau mai multe înfăș urări

17

3. Implementarea soluției adoptate

3.1 Configurarea kit-ului de recunoaș tere a gesturilor – Hillstar

Pentru configurarea kit -ului de d ezvoltare Hillstar este necesară folosirea aplicației dedicate
pentru acesta, și anume Aurea Graphical User Interface.
Aurea Graphical User Interface este un software dedicat care ajută la înțelegerea tehnologiei
celor de la Microchip și permite vizualizarea datelor generate de MGC3130 și oferă acces pentru
controlul și configurarea librăriei GestIC.
Vizualizarea datelor generate și accesul la librărie fac posibile următoarele:
 Vizualizarea poziției mâinii și a gesturilor făcute .
 Vizualizarea da telor de la senzor.
 Control în timp real a caracteristicilor .
 Actualizarea librăriei.
 Parametrizare Analog Front End .
 Parametrizare Colibri .
 Măsurarea capacităților electrozil or.
 Stocarea valorilor senzorului într -un fișier text .
 Monitorizarea traficului de date pe protocolul I2C (cu ajutorul unui analizor special) .
În figur a următoare este prezentată și descrisă sumar interfața grafică.

Figura 3.1 Interfa ța grafic ă fereastra 1 .

18

1. Selectarea în timp real a gesturilor care urmează să fie utilizate
2. Ferestrele interfeței grafice
3. Bară de control
4. Afișarea pe 3 axe și în timp real a poziției mâinii
5. Poziția mâinii cu afișare în timp real pe 2 dimensiuni
6. Configurarea în timp real cu posibilitatea selectării frecvenței de funcționare
7. Istoricul gesturilor făcute
8. Nivelul fiecărui electrod
9. Afișarea gestului făcut, validat sau invalidat
10. Bară de status

Figura 3.2 Interfața grafică fereastra 2 .

1. Activarea/dezactivarea fiecărui electrod separat și în timp real
2. Graficul distorsiunilor introduse de utilizator
3. Gest recunoscut Flick South to North
4. Gest recunoscut North to South
5. Gest recunoscut West to East
6. Gest recunoscut East to West
7. Gest recunoscut Clockwise Circle
8. Gest recunoscut CounterClockwise Circle
9. Gest invalid (coș de gunoi)

19

Figura 3. 3 Interfaț a grafic ă fereastra 3 .

1. Interfață pentru actualizare
2. Parametrizare
3. Măsurarea capacităților electrozilor

Pentru parametrizare se accesează fereastra “Setup”, apoi “Parametrizat ion”, iar după acces
se continuă cu “Firmware Selection” și “Start Parametrization”. După parcurgerea primilor pași
din configurarea librăriei GestIC se ajunge la configurarea “System Start -Up” unde se setează
caracteristicile pe c are trebuie să le prezinte placa în momentul pornirii. Pentru aceasta am selectat
toate gesturile simple care sunt legate de electrozii marginali, gesturile de tip cerc orar și antiorar,
toate frecvențele de lucru și alertă (în cazul în care gestul nu a fost recunoscu t este reprezentat
sugestivul coș de gunoi).

Figura 3.4 Interfaț a de setare a profilului de Wake -Up.

20
După configurarea “System Start -Up” urmează confi gurarea “Gesture Port” unde setă m
toate gesturile folosite în aplicație.
Am setat cele șase gesturi utilizate după cum poate fi observat în figur a x:
 Flick West to East pe pinul de ieșire numărul 1
 Flick East to West pe pinul de ieșire numărul 2
 Flick South to North pe pinul de ieșire numărul 3
 Flick North to South pe pinul de ieșire numărul 6
 Circle Clockwise pe pinul de ieșire numărul 7
 Circle CounterClockwise de asemene a pe pinul numărul 7
Acțiunea declanșată în urma executării gestului va genera pe pinul corespunzător un semnal
de tip “Low Pulse”, adică o cădere în “0” a semnalului aflat inițial în “1” timp de 100 ms. Selecția
este identică pentru toate gesturile, mai puțin pentru gestul “Circle Clockwise” acesta fiind de tip
“toggle”, adică în momentul efectuării gestului, pinul este pus “1”, iar la realizarea gestului
antagonic, acest semnal este adus în starea inițială.
Este obligatorie setarea nivelului fiecărui pin în momentul în care kit -ul este alimentat,
starea standard fiind “0”, iar starea necesară pentru funcționarea sistemului proiectat este “1”.
Intervalul la care se trimit aceste impuls uri în cazul executării foarte rapide a mai multor
gesturi a fost setat la 100ms, deci în cazul în care executăm 10 gesturi pe secundă, senzorul este
suficient de rapid încât să le recunoască pe toate și să transmită toate semnalele necesare.

Figura 3.5 Interfaț a de setare a pinilor de ie șire.

21

3.2 Condi ționarea semnalelor generate de Hillstar cu ajutorul kitului STM32F3
Discovery

Prelucrarea semnalelor este necesară p entru ca semnalele generate de către kitul de
dezvoltare Hillstar să interacționeze cu circuitul de generare a semnalului de ceas necesar antrenării
controlerului pentru motoare pas cu pas .
Astfel încât acesta prelucrare să fie efectuată cu succes este necesară co nectarea pinilor de ieșire
ale kitului Hillstar la pinii de intrare – ieșire de uz general ai plăcii de dezvoltare STM32F3
Discovery.
De asemenea este necesară pregătirea pinilor de intrare ai kitului STM astfel încât aceștia
să acționeze ca și întreruperi externe (EXTI sau External Interrupt) pentru a putea detecta
evenimentele de la intrare.
O întrerupere reprezintă un semnal sincron sau asincron de la un periferic ce semnalizează
apariția unui eveniment care trebuie tratat de către procesor. Tratarea întreruperii are ca efect
suspendarea firului normal de execuție al unui program și lansarea în execuție a unei rutine de
tratare a întreruperii (RTI). Întreruperile hardware au fost introduse pentru a se elimina buclele pe
care un procesor ar trebui să le facă în așteptarea unui eveniment de la un periferic. Folosind un
sistem de întreruperi, perifericele pot atenționa procesorul în momentul producerii unei întreruperi
(IRQ), acesta din urmă fiind liber să -și ruleze programul normal în restul timpului și s ă își întrerupă
execuția doar atunci când este necesar. Înainte de a lansa în execuție o RTI, procesorul trebuie să
aibă la dispoziție un mecanism prin care să salveze starea în care se afla în momentul apariției
întreruperii. Aceasta se face prin salvarea într-o memorie, de cele mai multe ori organizată sub
forma unei stive, a registrului contor de program (Program Counter), a registrelor de stare precum
și a tuturor variabilelor din program care sunt afectate de execuția RTI. La sfârșitul execuției RTI
starea anterioară a registrelor este refăcută și programul principal este reluat din punctul de unde a
fost întrerupt [3].
După setarea pinilor în modul EXTI se realizează conexi unea fizică dintre cele două plă ci.
Cu scopul de a avea la detectarea întreruper ii și o acțiune concludentă, se realizează s etarea
altor pini de intrare -ieșire de uz general ai kitului astfel încât aceștia să ofere la ieșire “1” logic
(5V) în momentul în care întreruperea este tratată.
În continuare, pinii de intrare – ieșire ai kitul ui Hillstar vor fi denumiți EIX unde X este numărul
pinului, iar pinii kit -ului STM32F3 Discovery PBX sau PEX în funcție de utilizarea acestora. PBX
reprezintă setul de pini care vor semnala întreruperile, iar PEX setul a cărui ieșire este modelată în
mome ntul tratării întreruperilor.
Timpul pe care pinii de ieșire îl petrec în starea “1” este de ase menea setat (în ms). Se
continuă apoi cu “ maparea” tutuor pinilor necesari după modelul următor:
Pinul GND al ambelor kituri se conectează împreună pentru a fi setată ace eași referință. Pinul EI0
se conectează la pinul PB4 al kitului STM, iar la primirea impulsului negativ (efectul este identic
cu conectarea la masă a pinului PB4) acesta generează pe pinul PE6 un semnal de nivel “1” logic.
Pinul EI1 este setat si milar dar corespondentul acestuia este PB5 a cărui acțiune afectează atât pinul
PE6 cât și pinul PE3. Următorul pin conectat este EI2, acesta având corespondent pinul PB2, iar
acțiunea afectează pinul PE7. Similar cu pinul EI1, EI3 este conectat și el la c orespondentul sau
PB3, acțiunea afectând atât pinul PE7 cât și pinul PE8.
Motivul pentru care anumiți pini afectează alți doi este acela că pinii suplimentari sunt
conectați la intrarea CW/CCW a driverului.
Pentru verificarea corectitudinii programului cre at se mai adăugă la fiecare pin de
întrerupere câte o conexiune internă la câte un led. Astfel , la apariția unei întreruperi, pe lângă
acțiunea pinului sau a pinilor d e ieșire, un led va lumina exact atât timp cât pinul sau pinii de ieșire
generează nivelul “1” logic.

22
Mediul de programare utilizat pentru c rearea codului necesar funcționă rii
microcontrolerului ARM Cortex -M4 este Keil μVision versiunea 5.14.0.0. De asemenea pentru
crearea codului a fost folosit și utilitarul oferit de către ST Microelectronics numit
STM32CubeMX, program care permite inițializarea pinilor, setarea metodei după care se
detectează întreruperea, integrarea tuturor librăriilor de care utilizatorul are nevoie, selectare
toolchain -ului pe care user -ul dorește să îl folosească, etc.
Figura 3.6 ilustrează interfața mai mult decât prietenoasă a utilitarului STM32CubeMX, iar
figura 3.7 afișează metoda și posibilitatea de parametrizare a pinilor de intrare – ieșire de uz gener al.

Figura 3.6 Interfaț a de configurare a lui STM32CubeMX.

Figura 3.7 Interfaț a de configurare a caracteristicilor pinilor.

23

3.3 Implementarea driverului pentru ac ționarea motorului pas cu pas

Driverul realizat pentru acționarea motoarelor pas cu pas, este dedicat motoarelor bipolare,
cu două faze, care necesită un curent maxim de 2.8A per fază. Controlul acestui driver se bazează
pe un semnal dreptunghiular a cărui frecvența este de aproximativ 360Hz, având un factor de
umplere de 50% (timpul de “1” logic este egal cu cel de “0”).
Acest driver pentru motoare pas cu pas bipolare se compune din două blocuri majore și
anume:
 Blocul de generare a semnalului de ceas
 Blocul de control al motorului pa s cu pas
Blocul de generare a semnalului de ceas este format din cele două circuite integrate
prezentate în capitolul “Fundamentare teoretică”, NE555 și CD4093.
Circuitul integrat NE555 lucrează în mod astabil, având o rețea externă formată di n două
rezistente și două condensatoare. Rețeaua de rezistente și condensatoare este proiectată astfel încât
la ieșirea circuitului, pe pinul numărul 3 (“Output”) să obținem un semnal de formă dreptunghiulară
cu o amplitudine de 5V, frecvenț a 720Hz și un f actor de umplere de aproximativ 50%.
Pentru calcul se utilizează următoarele formule:

TR = 0.693 × (R1 + R2) × C (3.1)
TL = 0.693 × R2 × C (3.2)
f = 1.44
(𝑅1+2×𝑅2)×𝐶 (3.3)
DC = 𝑇𝑅
𝑇𝑅 + 𝑇𝐿 ×100 (3.4)

Aplicând formula (1) obținem pentru R1 = 1.1kΩ, R2 = 1MΩ și C = 1nF, T R = 639 μs.
Pentru formula (2), utilizând aceleași valori obținem T L = 639 μ s, iar pentru formula (3) avem f =
721 H z. Din cele calculate reiese că factorul de umplere este egal c u 50.03% ceea ce este mai mult
decât suficient p entru aplicația noastră.

24
Figura 3.8 Schema bloc parțială a circuitului de generare a semnalului de ceas – NE555
Totuș i, pentru a putea avea la ie șire un factor de umplere exact de 50% vom utiliza cel de –
al doilea ci rcuit integrat destinat proiectă rii blocului de generare a semnalului de ceas, și anume
CD4093.
Dacă este conectată la intrarea “D” a acestui bistabil ieșirea sa negată și la intrarea “Clk”
semnalul de ieșire din NE555 vom obține un circuit bistabil divizor de frecvență , iar semnalul
nostru de ieșire, colectat de pe pinul “Q” va avea frecvența înjumătățită față de cea a lui NE555 și
factorul de umplere va fi exact 50%.

Figura 3.9 Schema bloc parț iala a circuitului de generare a semnalului de ceas – CD4093

Pentru alimentarea ambelor circuite am al es o sursă de tensiune continuă de 5V.

Figura 3. 10 Schema bloc a circuitului de gener are a semnalului de ceas

25
Pentru început trebuie dimensionat circuitul de BOOTSTRAP format din două diode, un
condensator și o rezistență (ordinea amplasării conde nsatorului și a rezistenței nu este important ).
În domeniul electronicii, circuitul de BOOTRAP este acela a cărui fracțiune din ieșirea
etajului de amplificare este aplicat la intrare pentru a modifica impedanța. Când este folosit
deliberat, efectul scontat este de a marii impedanța și nu de a o diminua. În general, orice fracțiune
din ieșirea unui circuit care este aplicată mai apoi la intrare este numită bootstrapping. Deaseme nea,
acest termen este folosit și pentru modificarea dinamică a punctului de operare al unui amplificator
operațional astfel încât să crească cursa tensiunii de ieșire.
Dimensionarea este cea standard propusă de creatorii circuitului integrat L6208, și imp lică
diode 1N4148, un condensator cu capacitatea de 10nF și o rezistență de 100Ω.

Figura 3.11 Circuitul de BOOTSTRAP .

Componenta Valoare
D1 1N4148
D2 1N4148
R5 100 Ω
C2 10nF
Figura 3. 12 Valorile componentelor circuitului de BOOTSTRAP .

Având în vedere că circuitul L6208 integrează un circuit de protecție la supracurent, și oferă
protecție la scurtcircuite cu masă sau între cele două faze, astfel încât partea de protecție la
supracurent să fie completă, este necesar un element de detecție care să livreze o mică fracțiune,
dar totuși precisă, a curentului de ieșire pentru fiecare tranzistor din etajul superior. Acest curent
este mai apoi comparat cu un curent intern de referință, I REF, iar dacă depășește limita setată,
comparatorul transmite un semn al de alarmă, iar pinul EN este automat conectat la masă.
Pentru a completa partea de protecție, foaia de catalog ne sugerează utilizarea unei
rezistente de valoare mică (0.3 Ω), dar pentru implementare am ales un set de patru rezistente de
1Ω și 0.5W.
Conectând aceste rezistente în paralel se obține o rezistență totală care se calculează după formula
(1).

26
𝑅𝑒𝑐ℎ=𝑅1×𝑅2×𝑅3×𝑅4
𝑅1+𝑅2+𝑅3+𝑅4 (3.5)
𝑅𝑒𝑐ℎ=1×1×1×1
1+1+1+1=0.25Ω ×100 (3.6)

Figura 3.13 Circuitul extern al protecț iei la supracurent.

În vederea funcțion ării protecției la supracurent, mai avem nevoie și de un curent de
referință, curent setat prin modelarea pinilor VREF A și VREF B. În scopul modelă rii am decis
utilizarea unui potențiometru de valoare 1KΩ conectat în paralel cu un condensator de valoare
47nF, aceste componente fiind conectate între sursa de tensiune care alimentează și circuitul de
generare a semnalului de ceas și masă.
Figura 3.14 prezintă rețeaua de condiționare a curentului de referință.

Figura 3.14 Rețeaua de condi ționare a curentului de referință

Prin dimensionarea rețelelor paralele RC (al căror rol este de a seta timpul OFF al punților
pentru a nu suprapune fazele) conecta te între pinii RC A și masă și respectiv RC B și masă, definim
timpul de oprire al punților A și B.

27
𝑇=𝐶 ×𝑅 (3.7)

În urma aplicării formulei de calcul (3) și având setat target -ul de 50μs obținem rezultatul
calculat în relația (4) , foaia de catalog sugerând ca acest timp să fie cuprins între 6.6 μs și 6 ms.
𝑇=51×103×1 × 10−9=51 𝜇𝑠 (3.8)

Cu cât timpul OFF este mai mic cu atât flexibilitatea este mai mare, deci se admite o
frecvență de comutare mai mare dar în același timp vor apărea și zgomote la funcționare.
Figura 3.15 prezintă partea circuitului pe care acestea o formează.

Figura 3.15 Rețelele RC de oprire a punț ilor.

Pentru a asigura tensiunea necesară pentru punțile A și B am decis conectarea ambilor pini
VS A și VS B la sursa de alimentare de 12V, sursă care alimentează întreg circuitul.
Astfel încât oprirea driverului pentru motor să fie posibilă fără oprirea în prealabil a sursei
de tensiune am ales introducerea unui jumper pe traseul de alimentare, imediat după pinul de
aliment are (+) al driverului.

28

Figura 3.16 Jumper -ul pentru oprire de urgență .
Rolul pinului EN (ENABLE) este unul cheie pentru acest circuit integrat, el făcând posibilă
utilizarea lui. Acționează ca un întrerupător pentru ambele punți, A și B, și în momentul în care
acest pin primește un “0” logic, el taie curentul prin punți. Pinul este de asemenea conectat și la
colectorul protecției de supracurent și a celei termice. Dacă aceste protecții nu sun t folosite,
modelarea lui constă în simpla conectare la sursa d e 5V printr -o rezistență. În consecință , am
utilizat o rezistență de 4.7KΩ pentru conectarea la sursa de 5V și un condensator de 100nF pentru
conectarea pinului la masă.

Figura 3.17 Circuitul de ENABLE

Pinul RESET al circuitului integrat aduce semnalele de ieșire la starea inițială în cazul în
care primește un “0” logic, iar în cazul în care acesta nu este folosit, el se conectează direct la sursa
de 5V. Am ales conectarea la sursa de tensiune deoarece acest pin nu este utilizat.
Un alt pin care nu este utilizat este cel CONTROL, pin care, la “1” logic setează modul de
“degradare rapidă”, iar la “0” setează modul de pășire “FULL STEP”, adică pas întreg.
Pinii rămași nemodelati sunt pinii de ieșire care nu necesită modelare și pinul CW/CCW, a
cărui funcție este de a schimba ordinea de generare a fazelor, deci de a schimba în timp real și
instantaneu sensul de rotație al motorului. Pentru sens orar acesta trebuie să primească un semnal
“1” logic, iar pentru sens antiorar el primește “0”, adică este lăsat liber. În cazul în care acest pin
nu este utilizat el trebuie neapărat conectat la masă sau la sursa de 5V, deci sensul nu se va modifica
în funcție de preferințe și va rămâne setat în starea inițială.

29
Terminalele pentru masă sau “ground”, patru la n umăr, sunt conectate între ele intern, iar
de obicei sunt folosite pentru disipare de căldură prin zone de cupru amplasate pe placă.
Schemele electrice ale driverului au fost create cu ajutorul programului Altium Designer,
versiunea 14.3.9 (Build 33548).
Altium Designer este un software dedicat pentru crearea de circuite și cablaje electronice și
FPGA -uri, fiind dezvoltat și distribuit de Altium Limited of Australia.

3.4 Realizarea sistemului de ghidaj pe doua axe

Pentru realizarea părții mecanice am decis folosirea unui sistem pe două axe (X, Y), realizat
din două profile de aluminiu dotate cu canale conducătoare. Conversia rotație i motorului în
deplasare liniară se face cu ajutorul unui șurub metric cu pas de 1 mm. Prin urmare , la fiecare
mișcare de rotație completă în jurul propriei axe a tijei motorului și șurubul metric face o mișcare
de rotație completă, acesta deplasând ansamblul cu 1 mm în direcția dorită.
Având în vedere ca pasul minim de deplasare al motorului este de 1.8 grade, pentru o rotaț ie
completă fiind necesari 200 de pași, precizia ansamblului este foarte mare chiar și fără folosirea
unor reductoare, ea calculându -se împărțind distanța pe care se deplasează ansamblul când face o
rotație completă, la numărul de pași necesari pentru o as tfel de rotație.

𝑃𝑟𝑒𝑐𝑖𝑧𝑖𝑎 =1𝑚𝑚
200=0.005 𝑚𝑚 =5𝜇𝑚 (3.9)

Partea fixă a ansamblului, cea care nu se va deplasa deloc este și partea cu cele mai mari
dimensiuni având atașate picioarele sistemului. Este realizată dintr -un profil de aluminiu a cărui
secțiune se poate observa în figură 3.18, și 4 picioare tot din aluminiu având fixat pe un capăt
motorul corespunzător axei X.
Figura următoare prezintă partea fixă a ansamblului.

Figura 3.18 Profilul părț ii fixe a ansamblului.

Cea de -a doua componentă a ansamblului mecanic este de dimensiuni medii, iar realizarea
ei este similară cu cea a părții fixe, mai puțin partea cu picioarele ansamblului. Diferit față de partea

30
fixă este faptul că are atașat la mijloc, pe partea superioară, un sistem ca re face posibilă culisarea
pe axă X.

Figura 3.19 Profilul părț ii mediane.

Cea de -a treia componentă a sistemului mecanic este de dimensiuni mici, având la bază
același principiu ca și celelalte părți. Diferența față de celelalte părți o face dimensiune a mică a
profilului și lipsa motorul ui pas cu pas. Această parte se deplasează pe axa Y a ansamblului.

Figura 3.20 Profilul părț ii de iluminare.

Ultima parte a ansamblului este cea de iluminare și constă într -un LED/bec de mică
dimensiune. Pornirea și oprirea acestui element se face tot cu ajutorul gesturilor. Setul de gesturi

31
folosit pentru acesta este cel “Circle Clockwise, Circle Counter Clockwi se”. Aceste gesturi dau la
ieșire o comandă de tip “toggle”.
La realizarea gestului Circle Clockwise, ledul se aprinde datorită faptului că semnalul emis
este un “1” logic care, rămâne nemodificat până la acțiunea gestului antagonic, adică “Circle
Counter Clockwise”
Figurile 3.21 și 3.22 ilustrează amplasarea și metoda de prindere a motoarelor pe profilele
corespondente.

Figura 3.21 Amplasarea motorului pas cu pas pe profilul fix.

Figura 3.22 Amplasarea motorului pas cu pas pe profilul median.

32

4. Rezultate experimentale

După dimensionarea componentelor și după rezolvarea ecuațiilor am obținu t un circuit
relativ simplu care generează un semnal dreptunghiular ideal pentru driverul motoarelor.
Caracteristicile circuitului sunt:
 Semnal dreptunghiula r
 Factor de umplere 50%
 Frecvenț a 360Hz
Graficul semnalului de ceas generat de circuitu l NE555 este prezentat în figura următoare.

Figura 4.1 Grafi cul semnalului de ceas simulat î n utilitarul Proteus.

După montarea circuitului de generare a semnalului de ceas, acesta a fost vizualizat la
osciloscop, iar rez ultatul este prezentat în figura 4.2.

33
Figura 4.2 Graficul semnalului de ceas vizualizat la osciloscop
După pornirea driverului, și după realizarea gestului, semnalele de control al motorului sunt
generate și se prezintă în felul următor.

Figura 4.3 Semnalele de control ale motorului.

Un exemplu de semnal generat de kit -ul de dezvoltare Hillstar , la performarea unui gest arată în
felul următor:

Figura 4.4 Semnal generat de Hillstar.

Având în vedere că semnalul inițial era setat HIGH, adică “1” logic, întreruperea se face pe
frontul descendent al semnalului, în momentul în care acesta trece din “1” în “0”. Perioada de stare
LOW este setată la 100ms.
La activarea întreruperii de către semnalul g enerat de Hillstar, microcontrolerul ARM
Cortex -M4 acționează driverul prin generarea tensiunii de alimentare a circuitului de control format
din timer -ul NE555.
Întreruperea este detectată pe timpul de descreștere al semnalului și arată că în figură 4.5.

Figura 4.5 Locul pe semnal unde se activează î ntreruperea.

34

La proiectarea driverului s -a utilizat un set de reguli setate inițial care să ușureze proiectarea
cablajului și să permită popularea lui cu componente fără a fi nevoie de o cositorire mecanizată.
Setul de reguli setate este:
 Distanța minimă între trasee de 0.6 mm.
 Distanța minimă a traseului de 0.7 mm.
 Distanță maximă a traseului de 1 mm.
 Distanta preferată a traseului 0.7 mm.
 Dimensiunea maximă a cablajului este de 100 mm × 100 mm (5 mm pentru fiecare latură
fiind considerați zonă interzisă sau KeepOut.

Figura 4.6 Regula pentru distanța minimă între trasee.

Figura 4.7 Regula pentru dimensiunile traseelor.

35
Topologia de ro utare a fost setată de tip “Shor test” pentru a ușura amplasarea
componentelor înainte de rutare.
Pentru găuri a fost setat diametrul de 1.27mm, iar mărimea găurii de 0.7mm. Având în
vedere că, cablajul realizat este pe un singur strat, deci nu există treceri, această regulă nu a fost
utilizată.

Figura 4.8 Regula pentru via -uri.

Toate componentele folosite au capsula cu prindere în placă, de tip through hole.

Figura următoare prezintă layout -ul (designul) driverului. Dimensiunile fizice ale acestuia
sunt de 98mm × 93mm.

36
Figura 4.9 Layout -ul driverului pentru motoare pas cu pas bipolare.
Ansamblul mecanic final este prezentat în figură următoare.

Figura 4.10 Ansamblul mecanic.

Figura 4.11 Semnalul de verificare sau
“HEARTBEAT”. Figura 4.12 Legarea pinului PB4 la masa
pentru testarea func ționalității î ntreruperii.

Figura 4.13 Funcț ionalitatea întreruperii pe
pinul PB5. Figura 4.14 Funcționalitatea î ntreruperii pe
pinul PB3.

37

Figura 4.15 Schema grosieră de conectare a componentelor electronice.

38

5. Concluzii

In aceasta lucrare am incercat crearea unui prototip al unui sistem de iluminat
Controlat în totalitate cu ajutorul gesturilor tridimensionale, lucrarea de față fiind una de tip “proof
of”. Pentru aceasta am creat o legătură între cele două kit -uri de dezvoltare astfel încât să fie
realizabila aplicația. După generarea și condiționarea semnalelor am conceput un driver folosit la
controlul motoarelor pas cu pas al cărui semnal de tact a fost generat cu ajutorul unui circuit banal
NE555.
Având partea de electronică pregătită, partea mecanică a fost relativ ușor de creat, aceasta
implicând profile de aluminiu, șuruburi metrice și cuplaje elastice.
La final am reușit crearea unui prototip al sistemului de iluminat scontat, iar având în vedere
că proiectul este de tip “proof of”, costurile nu au fost luate în considerare. În cazul în care ar fi
posibilă producția acestui tip de sistem de iluminat, costurile ar putea fi reduse semnificativ.
Datorită rapidității cu care se dezvoltă pe zi ce trece acest domeniu ne dăm seama de fapt
că “viitorul e în mâinile noastre”.

41

Bibliografie
[1] The Wikipedia Website, https://en.wikipedia.org/wiki/Sensor
[2] Matthias Rehm, Nikolaus Bee, Elisabeth André, Wave Like an Egyptian – Accelerometer
Based Gesture Recognition for Culture Specific Interactions, British Computer Society, 2007
[3] The Wikipedia Website, https://en.wikipedia.org/wiki/Gesture_rec ognition
[4] The Wikipedia Website https://en.wikipedia.org/wiki/Gesture_recognition
[5] http://www.bruceongames.com/2007/10/02/ the-future -it-is-all-a-gesture/
[6] The Wikipedia Websi te, https://en.wikipedia.org/wiki/Gesture_recognition
[7] Hillstar development kit user’s guide, Microchip Technology
[8] UM1570 User Manual, ST Microelectronics
[9] XXX Precision Timers, Texas Instruments
[10] L6208 , ST Microelectronics
[11] The Wikipedia Website, https://en.wikipedia.org/?title=Stepper_motor
[12] Aurea Graphical User Guide User’s Interface, Microchip Technology
[13] GestIC Design Guide, Microchip Technology

Anexa 1. Codul pentru programarea microcontrolerului ARM Cortex -M4
/**
******************************************************************************
* @file TIM/TIM_TimeBase/Src/main.c
* @author MCD Application Team
* @version V1.0.0
* @date 18 -June -2014
* @brief This sample code shows how to use STM32F3xx TIM HAL API to generate
* a time base of one second with the corresponding Interrupt request.
******************************************************************************
* @attentio n
*
* <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributi ons of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INC LUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/

/* Includes ––––– –––––––––––––––––- */
#include "main.h"

/** @addtogroup STM32F3xx_HAL_Examples
* @{
*/

/** @addtogroup TIM_TimeBase
* @{

*/
/* Private typedef –––––––––––––––––––– */
/* Priva te define –––––––––––––––––––– */
/* Private macro ––––––––––––––––––––- */
/* Private variables ––––––––––––––––––– */
TIM_HandleTypeDef TimHandle;
uint32_t uwPrescalerValue = 0;

/* Pin mapping configuration */
/* LED_ORANGE(#5), LED_BLUE(#4), LED_GREEN_2(#7), LED_ORANGE_2(#8), LED_RED_2(#10),
LED_BLUE_2(#9) */
const Pin_ConfigTypeDef PinMap[PIN_MAPPINGS] =
/**/
{{GPIO_PIN_4, 5000, GPIO_PIN_6, GPIO_PIN_SET, GPIO_PIN_RESET, LED_ORANGE},
/**/
{GPIO_PIN_5, 5000, GPIO_PIN_6, GPIO_PIN_SET, GPIO_PIN_RESET, LED_BLUE},
/**/
{GPIO_PIN_5, 5000, GPIO_PIN_3, GPIO_PIN_SET, GPIO_PIN_RESET, LED_BLUE},
/**/
{GPIO_PIN_2, 2000, GPIO_PIN_7, GPIO_PIN_SE T, GPIO_PIN_RESET, LED_GREEN_2},
/**/
{GPIO_PIN_3, 2000, GPIO_PIN_7, GPIO_PIN_SET, GPIO_PIN_RESET, LED_BLUE_2},
/**/
{GPIO_PIN_3, 2000, GPIO_PIN_8, GPIO_PIN_SET, GPIO_PIN_RESET, LED_BLUE_2},
};

uint32_t Delay[PIN_MAPPINGS] = {0};
uint32_t HeartBeat = 500;

/* Private function prototypes –––––––––––––––– */
static void SystemClock_Config(void);
static void Error_Handler(void);
static void TIMER_Config(void);
static void InputPort_Config(void);
static void OutputPort_Config(void );
static void Led_Config(void);

/* Private functions ––––––––––––––––––– */

/**
* @brief Main program
* @param None
* @retval None
*/
int main(void)
{

/* STM32F3xx HAL library initialization:

– Configure the Flash prefetch
– Systick timer is configured by default as source of time base, but user
can eventually implement his proper time base source (a general purpose
timer for example or other time source), keep ing in mind that Time base
duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
handled in milliseconds basis.
– Set NVIC Group Priority to 4
– Low Level Initialization
*/
HAL_Init();

/* Configure LEDs */
//BSP_LED_Init(LED3);
//BSP_LED_Init(LED4);

/* Configure the system clock to have a system clock = 72 Mhz */
SystemClock_Config();
BSP_LED_Init(LED_RED);
TIMER_Config();

//BSP_LED_Init(LED_ORANGE_2);
//BSP_LED_Init(LED_RED_2);

InputPort_Config();
OutputPort_Config();

Led_Config();

//BSP_LED_On(LED_ORANGE_2);

while (1)
{
}
}

/**
* @brief Period elapsed callback in non blocking mode
* @param htim : TIM handle
* @retval None
*/
void HAL_TIM_PeriodElapse dCallback(TIM_HandleTypeDef *htim)
{
//BSP_LED_On(LED_RED_2);

uint32_t state = 0;

for (uint32_t j=0; j < PIN_MAPPINGS ; j++)

{

if ( GPIO_PIN_RESET == HAL_GPIO_ReadPin(INPUT_PORT, PinMap[j].InputPin) &&
0 == Delay[j])
{
Delay[j] = PinMap[j].Delay;
}

if (Delay[j] > 0)
{
Delay[j] –;
state |= (PinMap[j].Set == GPIO_PIN_SET) ? PinMap[j].OutputPin : 0;
//HAL_GPIO_WritePin(OUTPUT_PORT, PinMap[j].OutputPin,
PinMap[j].Set);
BSP_LED_On(PinMap[j].Led);
}
else
{
//HAL_GPIO_WritePin(OUTPUT_PORT, PinMap[j].OutputPin, PinMap[j].Reset);
state |= (PinMap[j].Reset == GPIO_PIN_SET) ? PinMap[j].OutputPin : 0;
BSP_LED_Off(PinMap[j].Led);
}
}

for (uint32_t j=0; j < PIN_MAPPINGS ; j++)
{
if ( sta te & PinMap[j].OutputPin)
{
HAL_GPIO_WritePin(OUTPUT_PORT, PinMap[j].OutputPin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(OUTPUT_PORT, PinMap[j].OutputPin, GPIO_PIN_RESET);
}
}

if (HeartBeat > 0)
{
HeartBeat –;
}
else
{
HeartBeat = 500;
BSP_LED_Toggle(HEART_BEAT_LED);
}
}

/**
* @brief This function is executed in case of error occurrence.
* @param None
* @retval None
*/
static void Error_Handler(void)
{
/* Turn LED3 on */
BSP_LED_On(LED_RED);
while(1)
{
}
}

/**
* @brief System Clock Configuration
* The system Clock is configured as follow :
* System Clock source = PLL (HSE)
* SYSCLK(Hz) = 72000000
* HCLK(Hz) = 72000000
* AHB Prescaler = 1
* APB1 Prescaler = 2
* APB2 Prescaler = 1
* HSE Frequency(Hz) = 8000000
* HSE PREDI V = 1
* PLLMUL = RCC_PLL_MUL9 (9)
* Flash Latency(WS) = 2
* @param None
* @retval None
*/
static void SystemClock_Config(void)
{
RCC_ClkInitTypeDef RCC_ClkInitStruc t;
RCC_OscInitTypeDef RCC_OscInitStruct;

/* Enable HSE Oscillator and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL _OK)
{
Error_Handler();
}

/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2

clocks dividers */
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK |
RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK 2);
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_Cl kInitStruct, FLASH_LATENCY_2)!= HAL_OK)
{
Error_Handler();
}
}

/**
* @brief Configures EXTI Line9 -5 (connected to PE6 pin) in interrupt mode
* @param None
* @retval None
*/
static void InputPort_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;

/* Configure Input Port */
INPUT_PORT_CLK_ENABLE;
GPIO_InitStruct.Pin = 0;
for (uint32_t j=0; j < PIN_MAPPINGS ; j++)
{
GPIO_InitStruct.Pin |= PinMap[j].InputPin;
}
GPIO_InitStruct.Mode = GPIO_MODE_EVT_RIS ING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(INPUT_PORT, &GPIO_InitStruct);
}

/**
* @brief Configures Output Port
* @param None
* @retval None
*/
void OutputPort_Config(void)
{
GPIO_InitT ypeDef GPIO_InitStruct;

/* Configure Output port */
OUTPUT_PORT_CLK_ENABLE;
GPIO_InitStruct.Pin = 0;
for (uint32_t j=0; j < PIN_MAPPINGS ; j++)

{
GPIO_InitStruct.Pin |= PinMap[j].OutputPin;
}
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(OUTPUT_PORT, &GPIO_InitStruct);
}

/**
* @brief Configure LEDs
* @param None
* @retval None
*/
void Led_Config(void)
{
BSP_LED_Init(HEART_BEAT_LED) ;
for (uint32_t j=0; j < PIN_MAPPINGS ; j++)
{
BSP_LED_Init(PinMap[j].Led);
}
}

/**
* @brief Set the timer
* @param None
* @retval None
*/
void TIMER_Config()
{
uwPrescalerValue = (uint32_t) (SystemCoreClock / TIMER_FREQUENCY_HZ) – 1;
TimHandle.Instance = TIMx;
TimHandle.Init.Period = TIMER_PERIOD_HZ – 1;
TimHandle.Init.Prescaler = uwPrescalerValue;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
if(HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
/* Initialization Error */
Error_Handler();
}

if(HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)
{
/* Starting Error */
Error_Handler();
}
}

#ifdef USE_FULL_ASSERT

/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d \r\n", file, line) */

/* Infinite loop */
while (1)
{
}
}

#endif

/**
* @}
*/

/**
* @}
*/

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

LISTA FIGURILOR

Capitolul 1
1.1 DataGlove
1.2 Algoritmi bazați pe modele tridimensionale
1.3 Algoritmi bazați pe modele bidimensionale
1.4 Prima consolă Wii
Capitolul 2
2.1 Kit-ul de dezvoltare Hillstar
2.2 Câmpul electric generat
2.3 Modificarea câmpului electric la introducerea mâinii
2.4 Gest de tip Flick
2.5 Gest de tip Circle
2.6 Gest de tip Approach Wake -up
2.7 Arhitectura microcontrolerului MGC3X30
2.8 Circui tul echivalent al unui electrod
2.9 Diagrama bloc hardware a kit -ului STM32F3 Discovery
2.10 Schema bloc a kit -ului
2.11 Schema internă a circuitului integrat L6208
2.12 Schema generică pentru circuitul de BOOTSTRAP
2.13 Schema unui pin de intrare
2.14 Schema electrică a pinului EN folosit în modul colector comun
2.15 Schema electrică a pinului EN folosit în modul PUSH -PULL
2.16 Schema internă simplificată a controlerului de curent PWM
2.17 Schema internă simplificat ă a timerului NE555
2.18 Motor pas cu pas reactiv cu rotor bipolar și stator cu 12 poli
2.19 Motor pas cu pas cu o singură înfășurare
2.20 Motor pas cu pas cu două înfășurări
2.21 Motor pas cu pas cu 3 sau mai multe înfășurări
Capitolul 3
3.1 Interfața grafică fereastra 1
3.2 Interfața grafică fereastra 2
3.3 Interfața grafică fereastra 3
3.4 Interfata de setare a profilului de Wake -Up
3.5 Interfața de setare a pinilor de ieș ire
3.6 Interfața de configurare a lui STM32CubeMX
3.7 Interfața de configur are a caracteristicilor pinilor
3.8 Schema bloc parțială a circuitului de generare a semnalului de ceas – NE555
3.9 Schema bloc parțiala a circuitului de generare a semnalului de ceas – CD4093
3.10 Schema bloc a circuitului de generare a semnalului de ceas
3.11 Circuitul de BOOTSTRAP
3.12 Valorile componentelor circuitului de BOOTSTRAP
3.13 Circuitul extern al protecț iei la supracurent
3.14 Rețeaua de condiționare a curentului de referință

3.15 Rețelele RC de oprire a punț ilor
3.16 Jumper -ul pentru oprire de urgență
3.17 Circuitul de ENABLE
3.18 Profilul părții fixe a ansamblului
3.19 Profilul părț ii mediane
3.20 Profilul părț ii de iluminare
3.21 Amplasarea motor ului pas cu pas pe profilul fix
3.22 Amplasarea motorului pas cu pas pe profilul median
Capitolul 4
4.1 Graficul semnalului de ceas simulat în utilitarul Proteus
4.2 Graficul semnalului de ceas vizualizat la osciloscop
4.3 Semnalele de control ale motorului
4.4 Semnal generat de Hillstar
4.5 Locul pe semnal unde se activează î ntreruperea
4.6 Regula pentru distanța minimă î ntre trasee
4.7 Regul a pentru dimensiunile traseelor
4.8 Regula pentru via -uri
4.9 Layout -ul driverului pen tru motoare pas cu pas bipolare
4.10 Ansamblul mecanic
4.11 Semnalul de verificare sau “HEARTBEAT”
4.12 Legarea pinului PB4 la masa pentru testarea funcționalității întreruperii
4.13 Funcționalitatea î ntreruperii pe pinul PB5
4.14 Funcționalitatea î ntreruperii pe pinul PB3
4.15 Schema grosieră de conectare a componente lor electronice

Curriculum vitae
INFORMAȚII PERSONALE Alexandru Dorin Curticăpean
Făgărașului 8/71, 545300 Reghin (România)
(+40)751.030.792
alex.curticapean@gmail.com
Skype alexcurticapean
Sexul Masculin | Data nașterii 13/07/1992 | Naționalitatea română
LOCUL DE MUNCĂ PENTRU
CARE SE CANDIDEAZĂInternship în cadrul echipei de R&D
EXPERIENȚA PROFESIONALĂ

08/2014–09/2014Practicant
Reea SRL
Piața Republicii nr.41, 540110 Tîrgu Mureș (România)
www.reea.net
▪Familiarizarea cu VisualStudio
▪Însușirea noțiunilor de bază din C#
Tipul sau sectorul de activitate IT/T elecom
06/2013–07/2013Practicant
Reea SRL
Piața Republicii nr. 41, 540110 Tîrgu Mures (România)
www.reea.net
▪Familiarizarea cu mediile de programare
▪Însușirea noțiunilor de bază din: HTML, CSS, JavaScript
▪Însușirea noțiunilor de ResponsiveDesign
▪Realizarea unui proiect de practică: Crearea unui site de socializare și implementarea interfeței cu
utilizatorul
▪Realizarea legăturilor dintre baza de date și partea care comunică cu utilizatorul
Tipul sau sectorul de activitate IT/T elecom
EDUCAȚIE ȘI FORMARE

10/2011–Prezent
Universitatea T ehnica
Memorandumului nr. 28, 400114 Cluj-Napoca (România)
www.utcluj.ro
Facultatea de Electronică, Telecomunicații si Tehnologia Informației, specializare Electronică
Aplicată
Discipline studiate: Dispozitive electronice, Circuite integrate digitale, Circuite integrate
analogice, Senzori și traductoare, Microcontrollere, Sisteme cu circuite integrate analogice,
Sisteme cu circuite integrate digitale, Circuite analogice de înaltă frecvență, Programare
orientată pe obiecte (C++), Ingineria programării (C#).
Competențe profesionale dobândite: Atestat specializat de limbă străina (Engleză).
12/5/15 © Uniunea Europeană, 2002-2015 | http://europass.cedefop.europa.eu Pagina 1 / 3

Curriculum vitae Alexandru Dorin Curticăpean
09/2007–06/2011Tehnician Operator Tehnică de Calcul
Grup Școlar Petru Maior
Gării nr. 20, 545300 Reghin (România)
Discipline principale studiate: Arhitectura Calculatoarelor, Materiale, Desen tehnic, Măsurări în
electronică, AutoCAD, TIC.
COMPETENȚE PERSONALE

Limba(i) maternă(e)română
Alte limbi străine cunoscute ÎNȚELEGERE VORBIRE SCRIERE
AscultareCitireParticipare la conversațieDiscurs oral
englezăC1C1B2B2B2
francezăA1A1A1A1A1
Niveluri: A1 și A2: Utilizator elementar – B1 și B2: Utilizator independent – C1 și C2: Utilizator experimentatCadrul european comun de referință pentru limbi străine
Competențe de comunicare ▪abilitatea de a comunica cu eficiență și a fi un bun ascultător
▪exprimare facilă și înțelegere rapidă
▪capabil de a oferi feedback celor cu care colaborez
▪bune capacități oratorice
▪bun spirit de echipă
▪asimilare cu ușurință a informațiilor noi
Competențe
organizaționale/manageriale ▪abilități de rezolvare și delegare de sarcini complexe, conform obiectivelor
▪indentificarea și rezolvarea problemelor în mod rapid
▪încadrare în termene limită
▪capacitatea de a analiza situațiile și de a stabili soluții și strategii optime
▪grijă la detalii, punctual, flexibil
▪capacitatea de a lucra pe mai multe proiecte și de a urmări mai multe obiective în același timp
▪cunoștințe de bază în managementul proiectelor
▪capacitate de autoperfecționare, autodidact
Competențe dobândite la locul de
muncă ▪o mai bună capacitate de structurare a proiectelor și a task-urilor impuse
▪capcitate de colaborare cu colegii de echipă
▪adaptabilitate și maleabilitate în procesul de atingere al unui obiectiv la apariția unor jaloane
neplanificate
Competențe informatice ▪utilizator experimentat al pachetului Office si Adobe (Premiere, After Effects, Encore, etc.)
▪experimentat în proiectare, simulare și analiză de circuite electronice
▪bune cunostințe în realizarea cablajelor
▪bune cunostințe de OrCAD, AltiumDesigner, PSpice, LabVIEW, Proteus, VisualStudio, VisualDSP+
+, Keil uVision, Matlab, Programare în limbaj de asamblare.
▪cunostinte de Microsoft Project
▪interes și cunoștințe de bază în dezvoltarea de aplicații ce includ gesturi 3D
12/5/15 © Uniunea Europeană, 2002-2015 | http://europass.cedefop.europa.eu Pagina 2 / 3

Curriculum vitae Alexandru Dorin Curticăpean
▪cunoștințe de bază în modelarea și condiționarea senzorilor
▪cunoștințe de utilizare și implementare a motoarelor pas cu pas și a driverelor
Permis de conducere B
12/5/15 © Uniunea Europeană, 2002-2015 | http://europass.cedefop.europa.eu Pagina 3 / 3

Similar Posts