Gheorghe Asachi , Ia i ș [602091]

Universitatea Tehnică
„Gheorghe Asachi” , Ia i ș
Universitatea tehnică „Gheorghe Asachi” din Ia i ș
Facultatea de Electronică, Telecomunica ii i Tehnologia Informa iei ț ș ț
Specializarea : Electronică Aplicată i Sisteme Inteligente ș
LUCRARE DE LICEN Ă Ț
Coordonator t șiin ific:ț
ef lucrări dr. ing. Marius ZbanciocȘ
Absolvent: [anonimizat]-Andrei Onofrei
Ia i, 2015ș

Universitatea Tehnică
„Gheorghe Asachi” , Ia i ș
Facultatea de Electronică, Telecomunica ii i Tehnologia Informa iei ț ș ț
Specializarea : Electronică Aplicată i Sisteme Inteligente ș
SISTEME INTELIGENTE DE
CONTROL AL TRAFICULUI
LUCRARE DE LICEN Ă Ț
Coordonator t șiin ific:ț
ef lucrări dr. ing. Marius ZbanciocȘ
Absolvent: [anonimizat]-Andrei Onofrei
Ia i, 2015ș

Cuprins
Introducere…………………………………………………………………………………………………………………….. 1
Capitolul 1. Fundamentare teoretică ………………………………………………………………………………….. 2
1.1. Sisteme pentru detec ia autovehiculelor ț ………………………………………………………………….. 2
1.1.1 Traductoare magnetice. …………………………………………………………………………………… 4
1.1.2 Traductoare de for e i cupluri. ț ș………………………………………………………………………… 6
1.1.3 Microunde i detec ie cu radar. ș ț ………………………………………………………………………… 7
1.1.4 Detectoare cu infraro u. ș………………………………………………………………………………….. 8
1.1.5 Traductoare de ultrasunete. ………………………………………………………………………………. 9
1.2. Sisteme de afi are ș………………………………………………………………………………………………. 10
1.2.1. Sisteme integrate cu LED ……………………………………………………………………………… 10
1.2.2 Afi aj de tip 7 segmente ș ………………………………………………………………………………… 11
1.3. Sisteme de achizi ie i procesare de date. Microcontrollerul. ț ș …………………………………… 13
Capitolul 2. Dezvoltarea aplica iei ț………………………………………………………………………………….. 21
2.1. Istoria semafoarelor …………………………………………………………………………………………….. 21
2.2. Platforma de dezvoltare ……………………………………………………………………………………….. 22
2.3. Elemente de afi are ș…………………………………………………………………………………………….. 29
2.4. Mediu de programare ………………………………………………………………………………………….. 31
Capitolul 3. Implementarea aplica iei ț………………………………………………………………………………. 33
3.1. Implementarea software ………………………………………………………………………………………. 33
3.2. Organigrama aplica iei ț………………………………………………………………………………………… 41
3.3. Simularea aplica iei. ț……………………………………………………………………………………………. 42
3.4. Implementarea fizică …………………………………………………………………………………………… 46
3.5. Compara ie cu alte sisteme de control al traficului ț …………………………………………………. 47
Concluzii……………………………………………………………………………………………………………………… 50
Bibliografie………………………………………………………………………………………………………………….. 51
Anexe………………………………………………………………………………………………………………………….. 52
Anexa 1. Prototipul intersec iei ț………………………………………………………………………………….. 52
Anexa 2. Software ……………………………………………………………………………………………………. 52

Introducere
Introducere
În zilele noastre numărul ma inilor a crescut la un nivel impresionant. O dată cu acest ș
lucru a crescut i necesitatea folosirii unor sisteme inteligente pentru a se încerca evitarea ș
ambuteiajelor în marile intersec ii din marile ora e. ț ș
Semafoarele de trafic exista de ceva vreme, insa structura lor a ramas relativ constant ă
de-a lungul timpului – partea de semnalizare constă dintr-o lampă cu incandescentă, inconjurată
de un reflector i prevazută cu lentile de sticlă colorată. Odată cu dezvoltarea LED-urilor în anii ș
’90 , producătorii de semne rutiere au abordat această nouă tehnologie de iluminare. Semaforul
de trafic este o aplicatie ideală a LED-urilor, întrucât, printre altele, acestea produc în mod direct
lumina colorată, nefiind necesară filtrarea, ca în cazul surselor cu incandescen ă, eliminându-se ț
astfel componente inutile i reducând costurile. ș
Semafoarele devin din ce în ce mai inteligente, având diferite functionalită i , de la ț
protec ii împotriva func ionării incorecte până la diferite metode de fluidizare a ț ț
traficului.Importan a folosirii unor astfel de sisteme este critică la nivel economic. ț
Sistemul propus în acest document este destinat ajustării timpilor semafoarelor
în func ie de nivelul traficului din zona respective folosind diferite traductoare . ț
Algoritmul intern va contoriza numムrul de ma ini ce urmează sムintre în intersec ie i ș ț ș
va modifica astfel perioada de a teptare când intersec ia este predispusムș ț
aglomera iei.Contorizarea ma inilor ce vor intra în intersec ie va fi realizatムcu ajutorul unor ț ș ț
sisteme de detec ie pozi ionate strategic în intersec ie. ț ț ț
Sistemul va detecta numムrul ma inilor i va lua ac iuni doar dacムîn intersec ie ș ș ț ț
urmeazムsムintre un numムr de ma ini peste o anumitムlimitムdefinitムde utilizator. Ac iunile ș ț
vor fi luate înainte de trecerea la următoarea fazムa semaforului i cu cât numムrul ma inilor ș ș
care vin dintr-un anumit sens este mai mare timpul de trecere va fi mai mare .
În marile ora e din ara au fost deja implementate astfel de sisteme inteligente pentru ș ț
fluidizarea traficului, doar că de la zonă la zonă diferă modalitatea de monitorizare i contorizare ș
a numărului de ma ini. Astfel, monitorizarea se poate face cu sisteme video sau cu diferi i ș ț
senzori pozi iona i pentru fiecare sens de trecere a ma inilor. ț ț ș

1

Mihai-Andrei Onofrei
Capitolul 1. Fundamentare teoretică
Sistemul propus este compus din trei mari păr i . Partea de control folosind o platformă ț
de dezvoltare ce încorporează un microprocessor Microchip(PIC16F887) i componente ș
periferice utilizate pentru conexiuni cu celelalte componente ale sistemului.
Partea de achizi ie de date utilizând bucle inductive, realizează achizi ia i contorizarea ț ț ș
numărului de ma ini ce vor urma să între în intersec ie.Aceste lucruri reprezintă date de intrare ș ț
pentru algoritmul de modificare a timpilor de a teptare. ș
Partea de interfa are dintre utilizator i sistem este constituită din afi aje de tip 7 ț ș ș
segmente i leduri organizate sub forma unui semafor pentru a semnala durata rămasă i ș ș
permisiunea de intrare în intersec ie ț
1.1. Sisteme pentru detec ia autovehiculelor ț
Traductoarele sunt realizate pentru a măsura valorile unui parametru reglat i pentru a-l ș
converti într-o mărime fizică ce este compatibilă cu mărimea de intrare în sistemul următor.
Componentele principale a le unui traductor sunt: elementul sensibil i elementul ș
traductor.Elementul sensibil realizează măsurarea propriu-zisă a semnalului în timp ce elementul
traductor transformă rezultatul într-o altă mărime, de regulă într-un semnal electric.A adar, ș
traductoarele electronice transformă mărimea fizică de măsurat într-o mărime electrică folosind
anumite tehnici electronice.
Traductoarele electronice pot fi clasificare după mai multe criterii:
-După mărimea fizică de intrare traductoarele pot fi pentru semnale termice,chimice, mecanice ,
magnetice, etc.
-După modul în care se face transformarea pot fi traductoare directe i complexe. ș
-După principiul de func ionare pot exista traductoare parametrice sau generatoare. ț
-După forma semnalului de ie ire avem traductoare digitale sau analogice. ș
Structura generală a unui traductor electronic este prezentată mai jos:
2

Capitolul 1. Fundamentare teoretică
Mărimea ce se aplică la intrarea x poate fi de exemplu : temperatură, debit , viteză, nivel,
etc. În func ie de traductorul folosit mărimea de la ie ire va fi propor ională cu cea de la intrare ț ș ț
deci va con ine informa ia necesară pentru a caracteriza mărimea de intrare. ț ț
Componentele schemei bloc de mai sus au următoarele func ii : ț
Senzorul este element specific fiecărui tip de traductor i este capabil să detecteze ș
mărimea fizică de la intrare ce trebuie măsurată.Cu cât senzorul este mai sensibil la varia ii mici ț
ale mărimii de intrare cu atât este mai performant. Totu i în func ie de aplica ia dorită trebuie ș ț ț
făcut un compromis între calitatea dorită i pre ul elementelor. ș ț
Elementele de legătură sunt folosite atunci când mediul înconjurător nu ne permite
pozi ionarea păr ii electronice deoarece temperaturi ridicate pot defectă sistemul.Aceste ț ț
elemente de transmisie realizează conexiuni electrice,mecanice,optice etc.
Adaptorul electronic are rolul de a adapta informa ia oferită de sensor la cerin ele impuse ț ț
de sistemul de achizi ii de semnale.Func iile realizate de adaptorul electronic sunt: adaptare de ț ț
nivel, adaptare de putere sau impedan ă, condi ionări de semnal.Adaptorul electronic asigură ț ț
astfel conversia varia iilor de stare ale senzorului în semnale calibrate propor ionale cu mărimea ț ț
de intrare.
Traductoarele parametrice au nevoie i de surse externe de alimentare. În func ie de tipul ș ț
traductorului aceste surse de alimentare pot fi surse de tensiune sau curent continuu sau
alternative.
3Figura 1.1.1
Schema generală traductor electronic

Mihai-Andrei Onofrei
1.1.1 Traductoare magnetice.
Măsurarea câmpului magnetic este necesară pentru detec ia obiectelor de dimensiuni ț
mari, feromagnetice , obiecte ce schimbă distribu ia câmpului magnetic.Curen ii din circuitele ț ț
electronice generează un câmp magnetic propor ional.Deci se pot măsura indirect curen ii ț ț
electrici prin măsurarea câmpului magnetic.
Fenomenul are aplica ii in controlul traficului autostrăzilor prin dispunerea unor bucle ț
inductive în anumite zone de interes.
Montare sistem de detec ie ț
Senzorii de câmp magnetic func ionează pe baza for ei Lorentz exercitată asupra ț ț
electronilor care se mi că în metale, semiconductoare sau izolatoare. ș
unde q este sarcina electronului, v este viteza acestuia, iar B este induc ia magnetică ce ț
ac ionează asupra purtătorilor de sarcină i determină răspunsul acestora.ț ș
4 Figura 1.1.2

Capitolul 1. Fundamentare teoretică
Figura 1.1.3
Varia ia câmpului la trecerea unui vehicul ț
Un sistem detector cu buclă inductivă are în componen a sa unul sau mai multe fire ț
izolate i îngropate în pavaj, un cablu conductor de la cutia buclei până la sistemul de ș
monitorizare i detectorul electronic a ezat in cutia sa.Unitatea de comandă i control conduce ș ș ș
energie prin sistemul buclei la o frecven ă cuprinsă intre 10kHz i 200kHz , frecven ă setată de ț ș ț
utilizator.Deci sistemul acesta formează un circuit electric în care sârma buclei este elementul
inductiv.
Figura 1.1.4
Schema bloc a sistemului de detec ie ț
La trecerea sau oprirea unui vehicul peste buclă inductan a acesteia scade, noua valoare ț
5

Mihai-Andrei Onofrei
fiind transmisă către detectorul electronic, semnalizănd prezen a unui vehicul.A adar, datele ț ș
furnizate de o bucla inductivă sunt: trecerea autovehiculelor, prezen a lor, contorizarea ț
vehiculelor dar i gradul de ocupare al benzilor. ș
Probabil cel mai important aspect privind acest sistem de detec ie il reprezintă pre ul ț ț
redus de instalare i între inere.Însă, aceste detectoare trebuiesc instalate în momentul în care se ș ț
construie te strada deoarece sunt necesare săpături pentru a pozi iona bucla inductivă. ș ț
Detectoarele cu buclă inductivă au devenit cele mai populare sisteme încă din anii 60,
având urmatoarele beneficii majore :
Sunt cele mai sigure numărătoare de trafic.
Dacă sunt bine instalate, devin independente de condi iile de vreme. ț
Nu necesită intre inere. ț
Sunt eficiente indiferent de nivelul traficului, cu flux scăzut sau ridicat.
Însă ca orice sistem, are si anumite dezavantaje:
Dacă sunt instalate incorect, pot furniza informa ii eronate. ț
Sistemul e incapabil să măsoare viteza vehiculelor. Pentru acest lucru este necesar un
sistem mai complex i totodată mai scump. ș
Există riscul de a fi avariate de fulgere.
1.1.2 Traductoare de for e i cupluri. ț ș
Efectul tensorezistiv constă în modificarea rezisten ei unui conductor atunci când acesta ț
este supus unei for e deformatoare (alungire sau compresie).Acest efect a fost pus în evident de ț
către Kelvin în anul 1856 i odată cu apari ia mărcilor tensometrice a devenit utilizabil în anul ș ț
1931.
Conversia deforma iei în semnal util a devenit cea mai răspândită tehnică folosită pentru ț
a măsura for e i cupluri datorită simplită ii efectului. ț ș ț
Astăzi, celulele de sarcină tensometrica sunt cele mai frecvent folosite într-o configura ie ț
cu punte Wheatstone. Rezistoarele fixe calibrate se montează în adaptor.
Celulele de sarcină sau „€ œ Load Cells” sunt foarte precise dar totodată destul de
scumpe.Acestea sunt folosite în special în aplica ii industrial. ț
6

Capitolul 1. Fundamentare teoretică
Figura 1.1.5
Traductor de for e i cupluri ț ș
În aplica ia noastră acest traductorul este amplasat în osea i este folosit pentru a ț ș ș
măsura greutatea ma inilor i astfel contorizarea lor. Totodată poate fi folosit pentru a detecta ș ș
vehiculele ce depă esc greutatea admisă pentru strada respectivă. ș
1.1.3 Microunde i detec ie cu radar.ș ț
Microundele sunt o formă de radia ii electromagnetică cu frecven e cuprinse între ț ț
300MHz si 300GHz i lungimi de unda cuprinse între aproximativ 100cm i 100mm. ș ș
Energia microundelor va fi transmisă către o suprafa ă a drumului printr-un fascicul de la ț
o antenă montată pe un pilon. La trecerea unui vehicul prin fascicul energia reflectată va avea o
frecven ă diferită.Este detectată această schimbare de frecven ă rezultând faptul că a trecut un ț ț
vehicul. Frecvența de lucru a semnalului este în mod normal în banda de 24 GHz sau de 10GHz.
Antena este orientată către trafic i se folose te efectul doppler pentru semnalul reflectat, de ș ș
aceea vehiculul trebuie să circule cu minim 5 km/h ca să fie detectat.
7

Mihai-Andrei Onofrei
Figura 1.1.6
Sistem de detec ie cu radar ț
Aplica iile de detec ie folosind radare nu sunt a a de des folosite deoarece sunt relativ ț ț ș
greu de între inut i pot detecta doar prezen a ma inilor. Dispozitivele sunt montate la înăl imi ț ș ț ș ț
intre 4 i 9 metri. Detec ia poate fi realizată până la distan e de aproximativ 100 metri. ș ț ț
1.1.4 Detectoare cu infraro u. ș
Radia ia infraro u nu este vizibilă ochiului uman.În spectrul electromagnetic , acest tip de ț ș
radia ie se află între spectrul radia iei vizibile i cea a microundelor. Lungimea de undă a ț ț ș
radia iei de tip infraro u variază între urmatoarele limite ț ș : 0.75µm și 1000µm.
Acest tip de detector trimite un flux infraroșu pe suprafața pe care o monitorizează și în
momentul apari iei unui vehicul raza infraroșu este reflectată și focusată de un sistem optic într-o ț
matrice senzorială.Dispozitivul este capabil să detecteze vehicule la distan e de aproximativ 20- ț
30m.
Un astfel de detector poate să monitorizeze numarul de vehicule, să măsoare viteza i să ș
detecteze prezen a la semafor, deci poate oferi i informa ii despre coada formată.Pot fi montate ț ș ț
mai multe unită i fără să apara interferen e între acestea, deci exactitatea informa iei va ț ț ț
cre te.Distan a de măsurare poate fi reglată prin focalizare.ș ț
8

Capitolul 1. Fundamentare teoretică
Figura 1.1.7
Sistem de detec ie cu infraro u ț ș
Ca dezavantaje, detectoarele cu infraro u sunt sensibile la schimbările de lumină sau de ș
vreme.Deci acesta este sensibil la lumină i la apă având constrângeri de mediu.S-a pus în ș
discu ie eficien a acestui sistem în caz de flux ridicat i vreme nefavorabilă. ț ț ș
Detectoarele cu infraro u sunt folosite în special în Anglia pentru traversările pietonale ș
cât i pentru controlul traficului.ș
1.1.5 Traductoare de ultrasunete.
Ultrasunetele reprezintă oscila ii elastice datorate de vibra iile mecanice ale particulelor ț ț
mediului , în jurul unor pozi ii de echilibru.Domeniul de frecven ă al ultrasunetelor este cuprins ț ț
între 16kHz si 100Ghz depă ind frecven a maximă percepută de aparatul auditiv al omului. ș ț
Pentru producerea ultrasunetelor, se folose te cel mai des generatorul electromecanic ce ș
func ionează pe baza efectului piezoelectric.ț
Generatorul piezoelectric se bazează pe proprietatea unui cristal de cuar de a se deforma ț
i de a deveni astfel sursă de ultrasunete.ș
Proprietă ile ultrasunetelor: ț
Transportă cantită i însemnate de energie ț ;
Nu sunt percepute de aparatul auditiv uman;
Pot fi generate i sub forma unor fascicule înguste; ș
Sunt puternic absorbite de substan ele ce se află în statea gazoasă. ț
Proprietatea ultrasunetelor de a se reflecta la contactul cu un obiect în stare solid ă
9

Mihai-Andrei Onofrei
determină folosirea acestora în aplica ii de masurare a distan elor mici i medii i a obstacolelor. ț ț ș ș
Figura 1.1.8
Emisia i reflexia ultrasunetelor ș
Se folose te aproximativ aceea i ca la detectoarele cu radar. Se transmite un fascicul într- ș ș
o anumită zona i se contorizează durata până unda reflectată se intoarce la emi ător, acesta ș ț
având defapt i rol de receptor. ș
Totu i, aceste sisteme nu sunt atât de folosite din cauza problemelor care interveneau în ș
utilizare.
1.2. Sisteme de afi are ș
1.2.1. Sisteme integrate cu LED
Lumina poate fi produsă sau controlată electronic prin diferite metode.Folosind LED-uri
( ‘light emitting diodes’) lumina este produsă folosind procesul numit electroluminescentă.În
zilele noastre, LED-urile sunt din ce în ce mai prezente în mediul nostru înconjurător, fiind
folosite în aproape orice domeniu: semnalizează spa iile – drumuri i pie e , iluminează ț ș ț
monumente, creează anima ii luminoase, etc. ț
Principalele avantaje ale LED-urilor:
Sursă de lumină miniaturizată cu flexibilitate maximă în formă i culoare; ș
Posibilitatea de a fi comandate electronic pentru a crea varia ii dinamice de culoar ț e;
Fluxul de lumină este direc ionat; ț
Varia ia culorilor fără a adăuga elemente adi ionale precum filtre de culoare ț ț ;
Absen a razelor ultraviolete i a celor infraro ii ț ș ș ;
Consum redus de energie i degajare redusă de caldura ș ;
Utilizare la joasă tensiune garantând siguran ă; ț
Durată de via ă prelungită fa ă de celelalte dispozitive de iluminat ț ț ;
Aprinderile i stingerile succesive nu deteriorează echipamentul ș ;
10

Capitolul 1. Fundamentare teoretică
Rezisten ă la ocuri ridicată. ț ș
Electroluminescen a reprezintă aplicarea unei tensiuni directe între straturile n i p a ț ș
semiconductorului, energia rezultată fiind convertită în radia ie infraro ie sau din domeniul ț ș
spectrului vizibil.Eficien a unui dispozitiv privind convertirea energiei electrice în lumină ț
vizibilă se mai nume te i performan a luminoasă i se măsoară în lumen/watt. ș ș ț ș
Figura 1.2.1
Structura internă a diodei
Aplicarea unui nivel de tensiune necesar deschiderii diodei între bornele acesteia va
determina mi carea electronilor între anod i catod rezultând astfel convertirea energiei electrice ș ș
în lumină. Cantitatea de lumină este direct propor ională cu amplitudinea curentului direct ce ț
străbate dioda, însă trebuie controlat nivelul curentului pentru a evita distrugerea dispozitivului.
Figura 1.2.2
Caracteristica curent – luminozitate
Un led este o sursă de lumină de tip direc ional.Acesta emite puterea maximă în direc ia ț ț
perpendicular pe suprafa a de emisie.Aproximativ 80% din lumina emisă este încadrată în 20 ț
grade unghiulare de la direc ia de emisie maximă.Unele pachete de led-uri con in i anumite ț ț ș
lentile pentru a răspândi lumina într-un unghi mai mare de vizibilitate.
1.2.2 Afi aj de tip 7 segmenteș
11

Mihai-Andrei Onofrei
LED-urile pot fi folosite în foarte multe sisteme , ca exemplu fiind afi ajele de tip 7 ș
segmente.
Displayul de 7 segmente reprezintă o modalitate de a afi a numere în sistemele ș
electronice.Cele 7 segmente pot fi activate sau dezactivate individual pentru a forma
combina iile necesare afi ării numerelor de la 0 la 9. ț ș
Figura 1.2.3
Schema standard afisaj 7
segmente
Disponibile în diverse mărimi, formate i culori, afi ajele cu 7 segmente (led-uri) sunt ș ș
u or de folosit. Acestea sunt disponibile ca module individuale, precum i mai multe într-unș ș
singur modul.
În func ie de proiectarea circuitului intern acestea pot fi realizate în două moduri: În ț
conexiune anod comun când toate cele 8 anoduri sunt conectate împreună la pinul de selec ie sau ț
catod comun respectând acela i principiu dar folosind conexiunea comună a ș
catodurilor.Totodată, circuitele ce con in mai mult de 1 digit pot fi multiplexate deja intern sau e ț
nevoie de realizarea unui circuit adi ional având acest scop. ț
Figura 1.2.4
Model afisaj 7 segmente
12

Capitolul 1. Fundamentare teoretică
Importan a cunoa terii tipului de conexiune a led-urile este necesară atunci când dorim ț ș
să afi ăm respectivele numere. De exemplu, pentru afi area cifrei a€˜2a€™ pe un sistem cu 7 ș ș
segmente de tipul anod comun:
Luăm în considerare că segmentele de la A la G au fost conectate în această ordine la
un port al unui microcontroller pe 8biti. (A adar A-> RC0 , B->RC1 ,etc). ș
Figura 1.2.5
Exemplu conectare la PortCFigura 1.2.6
Exemplu afi are ș
cifra '2'
Deci pentru a afi a cifra a€˜2a€™ , ledurile atribuite segmentelor c i f trebuie să fie ș ș
stinse.Astfel vom trimite la Portul microcontrollerului următoarea secven ă: 0b00100100 ț
echivalent cu 0x24 în format hexazecimal.
1.3. Sisteme de achiziie i procesare de date. Microcontrollerul.ț ș
Un sistem de achizi ii de date reprezintă la momentul actual o parte foarte importantă din ț
cadrul electronicii moderne, luând în vedere faptul că sistemul utilizează o plajă largă de circuite
(digitale, analogice, sisteme de prelucrare a informa iei, interfe e, etc) împreună cu aplica iile de ț ț ț
program aferente acestora. Func ionarea optimă a unui sistem de achizi ie presupune ț ț
func ionarea tuturor componentelor sale la un nivel ridicat, atât cele hardware cât i software.ț ș
Un microcontroller este un circuit care înglobează în cadrul său un microprocesor i alte ș
dispozitive periferice într-un singur chip , accentul fiind pus pe consum redus de
energie.Diferen a majoră dintre un microcontroller i un microprocesor este faptul că primul ț ș
integrează memoria de program, cea de date i alte interfe e de intrare-ie ire sau periferice. ș ț ș
Viteza de lucru a unui microcontroller este scazută din cauza integrării unui numar destul
de mare de periferice, frecven a de tact fiind deobicei incadrată între zeci i sute de MHz. ț ș
13

Mihai-Andrei Onofrei
Această viteză de lucru este cu un ordin mai mică decât cea a unui microprocesor actual.
Totu i, microcontrollerele sunt folosite la o gama variată de aplica ii, de la mediul industrial ș ț
până la produse de larg consum cum ar fi telefoane mobile sau electrocasnice.
Un sistem embedded poate fi realizat foarte diferit fa ă de un calculator obi nuit. ț ș
Arhitectura acestora este realizată în func ie de aplica ie i elementele standard pentru un ț ț ș
calculator obi nuit, cum ar fi tastatura sau un display, nu sunt obligatorii. Un astfel de sistem ș
poate avea cerin e de performantă minimă o memorie limitată. Aceste lucruri depind în primul ț
rând de cerin ele clientului si de necesită ile aplica iei ce urmează a fi realizată cu sistemul ț ț ț
achizi ionat. ț
Cele mai întâlnite structuri din componen a unui circuit integrat cu microcontroller sunt ț :
Unitatea centrală de procesare ( un microprocesor ) cu o arhitectură realizată pe
8/16/32/64 bi i. ț
Memorie de date i de program ( RAM, FLASH, EEPROM). ș
Porturi digitale/ analogice de intrare- ie ire. ș
Interfe e de comunica ie ( SPI, UART, I2C, CAN, LIN, FlexRay). ț ț
Convertoare analog-digitale.
Timere, generatoare de PWM sau watchdog.
Support pentru programe i pentru depanare. ș
Arhitectura unitătii centrale reprezintă unul din cele mai importante elemente ce trebuie
luat în vedere în analiza oricărui sistem de calcul. Principalele arhitecturi sunt:
Arhitecturi de tip “ von Neumann “
Arhitecturi de tip “Harvard”
Spre deosebire de arhitectura Harvard unde zona de memorie de program este separată de
cea de date, arhitectura V on Neumann con ine o singură zonă ce cuprinde cele două zone de ț
memorie i o singură magistrală pentru transferul datelor din i spre unitatea de procesare. ș ș
14

Capitolul 1. Fundamentare teoretică
Figura 1.3.1
Compara ie arhitectura Harvard vs von Neumann ț
Costul unui uC depinde în mare parte de numărul de periferice integrate. Cu cât numărul
acestora este mai mare cu atât costul de produc ie este mai mare. A adar, la ora actuală, pe pia a ț ș ț
există chipuri integrate cu doar 6 pini sau variante cu până la 200 de pini.
Memoria unui microcontroller poate fi împăr ită în două mari clase ț : memorie non-
volatilă i memorie volatilă.ș
Memoria non-volatilă este un tip de memorie al cărui con inut se păstrează chiar dacă ț
alimentarea sistemului a fost oprită. Exemple de memorie non-volatilă : ROM, FLASH, EPROM,
EEPROM.
Aceste tipuri de memorie sunt utilizate în special pentru stocarea informa iei pe o durată ț
mai indelungată. Pot fi de tip electrice : ROM sau mecanice, cum ar fi :hard disk-ul, banda
magnetica, etc.
Contrar tipului de memorie prezentat mai sus, memoria de tip volatil ă necesită o sursă de
alimentare pentru a păstra informa ia, în caz contrar informa ia este pierdută foarte rapid sau ț ț
imediat.
Memoria volatilă este mult mai rapidă decat memoria non-volatilă, aceasta poate păstra
informa ii sensibile, informa ie ce devine indisponibilă la oprirea alimentării.Memoria de tip ț ț
RAM este cea mai cunoscută i folosită formă de acest tip. ș
15

Mihai-Andrei Onofrei
Porturile de intrare- ie ire reprezintă cel mai simplu mod de comunica ie între uC i ș ț ș
exterior.Acestea sunt folosite pentru monitorizarea i controlul direct al dispozitivelor. ș
Majoritatea uC au cel pu in 1-2 porturi digitale de intrare-ie ire, un port tipic având 8 ț ș
intrări-ie iri.Aceste porturi pot fi accesate direct pentru transferul unui octet sau pot accesate ș
separat pe fiecare bit. Fiecare pin al portului poate fi setat ca intrare, iesire sau poate avea alte
func ii alternative, programabile.ț
Interfe ele de comunica ie serială ț ț se folosesc între microcontroller i alte subisteme ș
pentru a economisi numărul de pini la capsulă. Există atât interfe e de comunicare sincrone(SPI) ț
cât i asincronă(UART, SCI).ș
De obicei, o magistrală serialp sincronă contine i o linie separată de clock.Astfel se ș
simplifică interfa a dintre emi ător i receptor, dar linia de clock este susceptibilă la zgomot în ț ț ș
cazul distan elor mari. ț
În cazul magistralei seriale asincrone tact-urile emi ătorului i cel al receptorului sunt ț ș
independente, iar sincronizarea tuturor bi ilor se face după bitul de start. Interfe ele seriale ț ț
permit conectarea de dispozitive diverse, precum: interfe e cu senzori, ceas de timp real, ț
etc.Aceste tipuri de interfe e sunt de pre redus i sunt usor de implementat. ț ț ș
Interfa a SPI ț este o intefa ă serială sincronă, toate transmisiile sunt sincronizate cu un ț
semnal de tact comun furnizat de către master.Receptorul, de tip slave, utilizează semnalul de
clock pentru achizi ia informatiei. ț
Figura 1.3.2
Interfa a SPI ț
La acest tip de interfa ă este posibilă conectarea mai multor dispozitive la acea i interfa ă ț ș ț
a master-ului.Un master poate selecta perifericul prin activarea intrării sale de chip select.
16

Capitolul 1. Fundamentare teoretică
SPI utilizează patru semnale :
MOSI – Masterul trimite informa ii la periferic.ț
MISO – Masterul primeste informa ie de la periferic. ț
SCLK sau SCK reprezintă tactul cu care se transmite informa ia. ț
CS pentru a selecta perifericul dorit pentru comunica ii. ț
Interfa a UART ț este o interfa ă serială asincronă( Transmi ător/ Receptor asincron ț ț
universal).Transferul serial de date se face pe un singur fir pentru fiecare direc ie.Toate ț
interfe ele transmi ător seriale convertesc datele paralel într-un flux binar serial în timp ce ț ț
receptoarele fac conversia inversă.
Această interfa ă este cea mai simplă metodă de comunica ie asincronă. La aceste ț ț
interfe e nu se transmite semnalul de ceas prin linia de date serială.Interfa a UART constă din ț ț
doua păr i ț:
Receptorul (RX), acesta converte te fluxul serial de bi i în date paralele(cuvinte) ș ț
pentru microprocesor.
Transmi ătorul(TX), realizează conversia datelor paralele de la microprocesor ț
într-un flux serial de bi i pentru transmisie. ț
UART transmite i anumi i bi i pentru stare, cum ar fi “recep ș ț ț ie/transmisieț
terminată“.Pentru o sincronizare corectă a informa iei este necesară definirea din start a ratei de ț
transmisie.A adar apare definită no iunea de Baud Rate ce reprezintă numărul de bi i ce pot fi ș ț ț
transfera i într-o secundă . ț
17

Mihai-Andrei Onofrei
Figura 1.3.3
Interfa a UART ț
Întreruperile reprezintă mecanisme de suspendare a firului de execu ie la apari ia unui ț ț
eveniment de importan ă crescută.Microcontrollerele au deja implementate mecanisme de ț
întrerupere, prin care se permite execu ia unei rutine de tratare a întreruperii. Apare o necesitate ț
majoră pentru folosirea întreruperilor în foarte multe aplica i, pentru generarea semnalelor de ț
anumite frecven e precise, pentru măsurarea semnalelor oferite de către senzori, etc. ț
Sistemul de întreruperi este acea parte a unui sistem de calcul care permite detec ia unor ț
evenimente externe sau interne i declan area unor ac iuni pentru tratarea acestora.Un calculator ș ș ț
poate detecta mai multe tipuri de întrerupere numite i nivele de intreruperi.Pentru fiecare nivel ș
se poate defini câte o rutina de tratare întreruperii respective( vectori de intreruperi). Aceste
nivele deservesc întreruperi de priorită i diferite, împortan a lor fiind lăsată la alegerea ț ț
utilizatorului. Întreruperile sunt o solu ie de implementare a unor activită i concurente i joacă ț ț ș
un rol important în realizarea aplica iilor de timp real i multitasking. ț ș
18

Capitolul 1. Fundamentare teoretică
Figura 1.3.4
Tratarea întreruperilor
Timer-ul reprezintă un mecanism de contorizare a semnalelor de tact pentru a determina
astfel perioade exacte de timp sau frecven e specifice. Aceste mecanisme sunt foarte des utilizate ț
pentru măsurarea sau generarea semnalelor.Utilizarea acestora diferă în func ie de aplica ia ț ț
dorită, deci avem timere de viteză mare sau timere care pot număra pe un interval mai mare ( de
ex 16-32 bi i). ț
A adar , putem genera diferite semnale la nevoia utilizatorului folosind timer.Însă exista ș
i alte posibilită i de generare folosind modulul PWM.ș ț
PWM-ul reprezintă o tehnică de modulare în factor de umplere a unui semnal (Pulse
Width Modulation).
19

Mihai-Andrei Onofrei
Figura 1.3.5
Semnale PWM cu factor de umplere diferite
Aceast tip de generare a unui semnal este foarte des folosită pentru controlul
motoarelor.Este necesară un semnal de frecven ă cât mai mare a semnalului i un factor de ț ș
umplere cât mai mic pentru a reduce consumul de energie i a proteja motorul de supraîncălziri. ș
Figura 1.3.6
Semnale PWM pentru controlul motoarelor

20

Capitolul 2. Dezvoltarea aplica iei ț
Capitolul 2. Dezvoltarea aplica iei ț
2.1. Istoria semafoarelor
Primul semafor din lume era realizat folosind felinare pe bază de gaz care erau aprinse
printr-o pârghie aflată la baza dispozitivului.Insă, acest sistem a dus la decesul poli istului care îl ț
manevra, un an mai târziu.
Primul semafor electric, inventat de către James Hodge, a fost instalat la data de 5 august
în Cleveland,Ohio.Acesta era prevăzut i cu o sonerie electrică ce se declan a la schimbarea ș ș
culorii.Sistemul con inea patru perechi de lămpi montate la col urile străzilor, la fel ca în prezent ț ț
pentru o intersec ie simplă în cruce.În fiecare col era montată câte o lampă pentru stop i o ț ț ș
lampă pentru liber.
Primul semafor cu trei lumini a apărut abia în anul 1921.A apărut pentru prima dată în
Detroit i New York. ș
Pe data de 5 februarie 1952 au fost instalate în New York celebrele semafoare „ Don't
Walk”.Tot în acela i an a apărut i primul semafor special pentru pietoni. ș ș
Primul semafor cu numărătoare inversă a apărut în anul 1998 în Fran a. ț
Una dintre cele mai noi metode de protec ie activă împotriva accidentelor auto este ț
semaforul proiectat din raze laser denumit Virtual Wall. i nu în ultimul rănd semaforul care luptă Ș
21Figura 2.1.1
Primul semafor electric

Mihai-Andrei Onofrei
contra sendetarismului.
Sistemul propus este compus din trei mari păr i . Partea de control folosind o platformă ț
de dezvoltare ce încorporează un microprocessor Microchip(PIC16F887) i componente ș
periferice utilizate pentru conexiuni cu celelalte componente ale sistemului.
Partea de achizi ie de date utilizând bucle inductive, realizează achizi ia i contorizarea ț ț ș
numărului de ma ini ce vor urma să între în intersec ie.Aceste lucruri reprezintă date de intrare ș ț
pentru algoritmul de modificare a timpilor de a teptare. ș
Partea de interfa are dintre utilizator i sistem este constituită din afi aje de tip 7 ț ș ș
segmente i leduri organizate sub forma unui semafor pentru a semnala durata rămasă i ș ș
permisiunea de intrare în intersec ie ț
2.2. Platforma de dezvoltare
Partea de achizi ie a informa iei i de procesare a sistemului este realizată într-o ț ț ș
platformă de dezvoltare ce include microcontrollerul PIC16F887.
Nevoia unui număr mare de porturi de intrare – ie ire a fost factorul determinat în ș
alegerea facută. Astfel, au fost folosite aproximativ 90% din I/O digitale ale controllerului. Ca o
compara ie, utilizarea altei variante de la firma Microchip ( de exemplu PIC16F876A) ar fi fost o ț
variantă insuficient de performantă din acest punct de vedere iar modul de rezolvare putând fi
multiplexarea majoră a tuturor porturilor, solu ie mult mai costisitoare i mai complexă. ț ș
Totodată, utilizarea unei puteri mari de procesare nu a fost necesară pentru aplica ia ț
dorită i de aceea platforme ce integrează sisteme ce folosesc frecven e de tact de peste 20MHz ș ț
nu au fost folosite. Astfel, utilizarea unor platforme cum ar fi : STM32F407/429VG de la firma
STMElectronics cu frecven e de 180MHz i nenumărate timere nu a fost dorită din motivele ț ș
prezentate mai sus.
22

Capitolul 2. Dezvoltarea aplica iei ț
Figura 2.2.1
Diagramă pini PIC16f887
Microcontrollerul folosit prezintă o montare de tip THT i este încapsulat într-o ș
carcasă DIP40.Acest lucru permite interfa area celor 5 Porturi de intrare-ie ire, a ț ș
sistemului de alimentare i folosirea unui oscilator extern pentru alegerea frecven ei de ș ț
tact de către utilizator.
Principalele caracteristici ale sistemului sunt:
Capacitate memorie EEPROM 256B
Capacitate memorie SRAM 368B
Frecvenă maximă ț 20MHz
Tensiune de lucru 2…5.5V
Montare THT
Carcasă DIP40
Numar intrări/ie iri ș 36
Număr timere 8 bi i ț 2
Număr timere 16 bi i ț1
23

Mihai-Andrei Onofrei
Subtip arhitectură Harvard 8bit
Memorie program 8kB
Generator integrat 32kHz, 8MHz
Interfa ă ț A/E/USART , MSSP(SPI, I2C)
Figura 2.2.2
Modelul arhitectural PIC16F887
În această diagramă este prezentată arhitectura sistemului i blocurile principale folosite ș
în realizarea acestuia. Astfel, unitatea centrală de procesare ce con ine doar 35 de instruc iuni de ț ț
cod comunică cu memoria, comunica iile seriale, convertoarele, modulul PWM, timerele si ț
porturile prin intermediul magistralelor de date.
Nume pinNumăr
pinFunc ie ț Descriere
RE/MCLR/Vpp 1RE3 Intrare analogică
MCLR Pin reset
24

Capitolul 2. Dezvoltarea aplica iei ț
VPP V oltajul programare
RA0/AN0/ULPWU/C12IN0- 2RA0 GPIO portA
AN0 Canalul 0 A/D
ULPWU Modul stand-by
C12IN0-Comparator C1 sau C2 intrare negativă
RA1/AN1/C12IN1- 3RA1 GPIO portA
AN1 Canalul 1 A/D
C12IN1-Comparator C1 sau C2 intrare negativă
RA2/AN2/Vref-/Cvref/C2IN
+ 4RA2 GPIO portA
AN2 Canalul 2 A/D
Vref- Referin ă A/D negativă ț
Cvref Referin ă Comparator ț
C2IN+ Comparator C2 intrare pozitivă
RA3/AN3/Vref+/C1IN+ 5RA3 GPIO portA
AN3 Canalul 3 A/D
Vref+ Referin ă A/D pozitivă ț
C1IN+ Comparator C1 intrare pozitivă
RA4/T0CKI/C1OUT 6RA4 GPIO portA
T0CKI Intrare clock TIMER0
C1OUT Comparator C1 output
RA5/AN4/SS/C2OUT 7RA5 GPIO portA
AN4 Canalul 4 A/D
SS SPI selectare slave
C2OUT Comparator C2 output
RE0/AN5 8RE0 GPIO portE
AN5 Canalul 5 A/D
RE1/AN6 9RE1 GPIO portE
AN6 Canalul 6 A/D
RE2/AN7 10RE2 GPIO portE
AN7 Canalul 7 A/D
VDD 11 + Alimentare +
VSS 12 – Masă
RA7/OSC1/CLKIN 13RA7 GPIO portA
OSC1 Intrare oscilator extern 1
RA6/OSC2/CLKOUT 14RA6 GPIO portA
OSC2 Intrare oscilator extern 2
RC0/T1OSO/T1CKI 15RC0 GPIO portC
T1OSO Timer1 output
T1CKI Timer1 intrare clock
RC1/T1OSI/CCP2 16RC1 GPIO portC
T1OSI Timer1 input
25

Mihai-Andrei Onofrei
CCP2 Modulul CCP2/ PWM2
RC2/P1A/CCP1 17RC2 GPIO portC
P1A Ie irea modulului PWMș
CCP1 Modulul CCP1/ PWM1
RC3/SCK/SCL 18RC3 GPIO portC
SCK SPI clock
SCL I2C clock
RD0 19RD0 GPIO portD
RD1 20RD1 GPIO portD
RD2 21RD2 GPIO portD
RD3 22RD3 GPIO portD
RC4/SDI/SDA 23RC4 GPIO portC
SDI SPI data input
SDA I2C data input
RC5/SDO 24RC5 GPIO portC
SDO SPI data output
RC6/TX/CK 25RC6 GPIO portC
TX USART output
CK USART clock(mod sincron)
RC7/RX/DT 26RC7 GPIO portC
RX USART input
DT USART data(mod sincron)
RD4 27RD4 GPIO portD
RD5/P1B 28RD5 GPIO portD
P1B PWM Output
RD6/P1C 29RD6 GPIO portD
P1C PWM Output
RD7/P1D 30RD7 GPIO portD
P1D PWM Output
VSS 31 – Masă
VDD 32 + Alimentare +
RB0/AN12/INT 33RB0 GPIO portB
AN12 Canal 12 A/D
INT Întrerupere externă
RB1/AN10 34RB1 GPIO portB
AN10 Canal 10 A/D
RB2/AN8 35RB2 GPIO portB
AN8 Canal 8 A/D
RB3/AN9/PGM 36RB3 GPIO portB
AN9 Canal 9 A/D
PGM Pin enable programare
26

Capitolul 2. Dezvoltarea aplica iei ț
RB4/AN11 37RB4 GPIO portB
AN11 Canal 11 A/D
RB5/AN13/T1G 38RB5 GPIO portB
AN13 Canal 13 A/D
T1G Intrare externă Timer1
RB6/ICSPCLK 39RB6 GPIO portB
ICSPCLK Clock programare serială
RB7/ICSPDAT 40ICSPDAT Enable programare
GPIO- General Purpose Input Output( Pini de intrare -ie ire) ș
Diagrama pinilor la PIC16F887
A fost realizată o placă de dezvoltare pentru o interfa are mai bună a unită ii centrale i ț ț ș
restul sistemului. Astfel , majoritatea pinilor de intrare/ie ire au pini tată interconecta i . A fost ș ț
creat i un sistem pentru a putea programa memoria microprocesorului direct pe placă cu ș
ajutorului circuitului de programare oferit de firma Microchip : Pickit2.
Pentru realizarea layout-ului a fost folosit programul Eagle 7.3 , un program de design
u or de folosit, cu o interfa ă user-friendly i diverse tool-uri pentru a ajuta utilizatorul .ș ț ș
Acest program oferă un editor pentru layout, un editor pentru schematic-uri i module ș
editoare de biblioteci pentru interfa area componentelor. ț
Se prezintă în continuare pe scurt pa ii pentru realizarea plăcii de dezvoltare cu ș
microcontroller.
•Se caută componentele dorite în bibliotecile oferite de către mediul de proiectare.
•Se amplasează i se realizează conexiunile necesare. ș
•Lătimea traseelor folosite este de 0.056 inch iar distan a minimă între cablaje fiind de ț
0.05 inch.
•Nu a fost necesară rotunjirea conductoarelor, curen ii de circula ie fiind de valori mici. ț ț
27

Mihai-Andrei Onofrei
Imprimarea circuitului a fost făcută pe un PCB cu un singur strat de cupru
( complexitatea aplica iei nu a necesitat printare multi strat ). Etapele cele mai importante ale ț
imprimării sunt :printarea circuitului pe carton de tip lucios, lipirea acestuia pe o plac ă cu strat de
cupru cu ajutorul unui dispozitiv încălzit( de exemplu fier de călcat), dezlipirea cartonului i ș
cură area restului rămas, realizarea găurilor în placă i lipirea componentelor necesare aplica iei. ț ș ț
Frecven a de clock a procesorului este dată de un oscillator de cuar extern de frecven ă ț ț ț
de 8MHz.Acest rezonator folose te efectul piezoelectric pentru a genera frecven a de tact. ș ț
Efectul piezoelectric este un fenomen prezent la unele substanțe (de exemplu, cuarț),
determinat de interdependența dintre câmpul electric și deformațiile mecanice ale corpurilor.
Efectul piezoelectric direct constă în apariția unei diferențe de potențial între fețele unui cristal
supus la presiune mecanică (dacă efortul este de tracțiune, sensul tensiunii electrice se schimbă).
Efectul piezoelectric invers constă în apariția unor deformații ale cristalului (oscilații mecanice)
într-un câmp electric variabil.
Au fost folosite diverse filtre pentru o func ionare cât mai bună a plăcii de ț
dezvoltare.A adar , un condensator de 100nF pentru a filtra zgomotul de pe alimentare i doi ș ș
condensatori de 18pF pentru a filtra semnalul generat de către rezonatorul de cuar . ț
28 Figura 2.2.3
Layout placă de dezvoltare

Capitolul 2. Dezvoltarea aplica iei ț
Figura 2.2.4
Exemplu conectare filtre oscilator
Elementele de legătură între microcontroller i sistemele de afi are sunt pini conectori de ș ș
tip tată pentru o conectare fixă i rezistentă a firelor cu terminal de tip mamă. ș
2.3. Elemente de afi are ș
În această aplica ie a fost folosit afisajul OPD-D3010LE-BW dublu, in conexiune anod ț
comun. Utilizarea acestui tip de afisaj a fost aleasă din mai multe motive: multiplexarea internă,
dimensiuni foarte mici pentru a oferi un aspect plăcut, intensitate luminoasă foarte bună, pre ț
redus.
Figura 2.3.1
OPD-D3010LE-BW
Specifica ii: ț
Producător OPTO Plus LED Corp.
Tip afi aj LED ș
Montare THT
Tip afi aj Dublu, cu 7 segmente ș
Înăl imea semnelor 7.62mmț
Culoare Ro ie ș
Luminozitate 40mcd
29

Mihai-Andrei Onofrei
Electrod comun Anod
Lungime undă 625nm
Dimensiuni 15x 15.5 x 7.2mm
Masă brută 1g
Acest dispozitiv utilizează chip de tip Super Bright Red LED cu un substrat ce este
realizat din AlGaInP pe un gaz transparent GaAs. Displayul are fundal de culoare neagră i ș
segmentele de culoare albă.
Cei mai importan i parametri la temperatura de 25 grade Celsius sunt: ț
Puterea disipată per digit 70mW
Curentul maxim per digit (factor de umplere 1/10 , 1kHz) 90mA
Tensiunea inversă maximă pe digit 5V
Curentul standard 20mA
Curentul invers la 5V 10u
Sistemul de semaforizare este de tip standard, folosind conexiuni de led-uri pentru
setare/blocare permisiune în sensurilor de trafic i afi aje de tip 7 segmente pentru expunerea ș ș
timpilor răma i. ș
Led-urile au fost integrate în carcase speciale pentru a da aspectul clasic al semafoarelor.
Carcasele con in 1,2 sau 3 led-uri în func ie de necesitatea semaforului. Ca exemplu, ț ț
semnalizatoarele intermitent necesită o carcasă simplă pentru un singur led în timp ce
semnalizarea pentru pietoni va fi formată din 2 led-uri : ro u i verde. ș ș
30

Capitolul 2. Dezvoltarea aplica iei ț
Figura 2.3.2
Semnalizator Mentor
Semnalizatoarele led folosite au fost realizate de către firma Mentor i con in următoarele ș ț
caracteristici de bază:
Curent diodă: 20mA
Tensiune de lucru 2 – 2,5 VDC,
Culoare diode roșu, verde și galben,
Unghi de iluminare 40 – 100°
Temperatura de operare: -40°C … +85°C

2.4. Mediu de programare
Microchip Technology Inc. e în topul aprovizionatorilor de microcontrollere i de ș
dispozitive analogice. Microchip dezvoltă dispozitive la un pre redus i de risc scăzut. Având ț ș
sediul central în Chandler, Arizona, Microchip oferă produsele sale pe toate continentele având
centre de dezvoltare în multe ări ale lumii. ț
Mediul de programare folosit este MPLAB X IDE oferit de către firmă MICROCHIP.
Acest mediu este ideal pentru microcontrollerele de tip PIC.Varianta utilizată este gratis pentru
studen i i acest lucru este unul din motivele pentru care am ales MPLAB X. ț ș
31

Mihai-Andrei Onofrei
Figura 2.4.1
Mediul MPLAB X
Acesta con ine în acela i timp i debugger pentru testarea func ionalită ilor codului , ț ș ș ț ț
utilizând breakpointuri i alte facilită i. Posibilitatea de indentare a codului , selec ia diferitelor ș ț ț
tipuri de compilatoare i depanatorul sunt principalele caracteristici care m-au determinat să aleg ș
acest mediu de dezvoltare.
A fost folosit circuitul de programare/depanare Pickit2 având în vedere faptul că este
ieftin i perfect pentru aplica ia noastră. Acesta este u or de utilizat i necesită o conexiune USB ș ț ș ș
i instalarea unui soft (Pickit v2.6) pentru a putea realiza programarea. ș

Figura 2.4.2
Pickit 2
32

Capitolul 3. Implementarea aplica iei ț
Capitolul 3. Implementarea aplica ieiț
Se dore te implementarea unui sistem pentru controlul traficului cu un nivel maxim de ș
optimizare. Această optimizare presupune folosirea unei singuri unită i electronice centrale ț
pentru stocarea informa iei i dezvoltarea algoritmului de decongestionare a traficului. Folosind ț ș
un singur microcontroller pentru toată intersec ia scade major costul acestei aplica ii însă cre te ț ț ș
substan ial complexitatea circuitului fiind nevoie de multiplexări majore a afi ajelor i ț ș ș
semnalizatoarelor.
Simularea traductoarelor pentru detec ia vehiculelor a fost realizată folosind butoane , ț
fiecare apăsare de buton replicând trecerea unei ma ini. ș

3.1. Implementarea software
Pentru a putea avea acces la resursele oferite de către microcontroller este necesară în
primul rând setarea i configurarea regi trilor interni ai acestuia. ș ș
•Timer0
Acest timer este folosit pentru realizarea semnalelor ce vor controla tactul secundei i cel ș
al semnalelor de interminent.Registrul principal ce controlează timer-ul este :
OPTION_REG
bit 7 RBPU: Bit setare Pull-up PORTB
1= Pull-up dezactivat
0= Pull-up activat
bit 6 INTEDG: Bit selec ie front întrerupere ț
1 = Întreruperea se realizează pe front crescător
0 = Întreruperea se realizează pe front descrescător
33

Mihai-Andrei Onofrei
bit 5 T0CS: Bit selec ie sursă clock TMR0 ț
1 = Tranzi ie pe pinul T0CKI ț
0 = Clock intern (Fosc/4)
bit 4 T0SE: Bit selec ie modalitate de incrementare ț
1 = Incrementare la tranzi ie HIGH to LOW ț
0 = Incrementare la tranzi ie LOW to HIGH ț
bit 3 PSA: Bit asignare prescaler
1 = Prescalerul este asignat watchdog
0 = Prescalerul este asignat timer0
bit 2-0 PSC<2:0>: Bi i setare rată de prescalare ț
34 Figura 3.1.1
Rata de prescalare

Capitolul 3. Implementarea aplica iei ț
Dorim un prescaler cât mai mic pentru a avea o precizie cât mai mare la generarea
semnalui de o secundă.A adar vom asigna prescalerul către watchdog. Bitul PSA va fi astfel 1. ș
OPTION_REG = 0b00001000; Echivalent OPTION_REG = 0x08 ; pentru scriere
hexazecimală.
TMR0 este registrul pe 8 bi i în care se realizează numerotarea. Când numărarea a trecut ț
de limita maximă dată de dimensiunea registrului ( 8 bi i rezultând 255) bitul T0IF din registrul ț
INTCON se activează i astfel avem o sursă de întrerupere.Frecven a cu care se face această ș ț
întrerupere este calculată cu următoarea formulă:
unde fclk reprezintă frecven a oscilatorului i prescalerul este setat cu ajutorul celor 3 bi i PSC. ț ș ț
La o frecven ă de cuart de 8MHZ, prescalerul fiind 1, rezultă că frecven a unei întreruperi este ț ț
7813 Hz, echivalent la 7.813 kHz i perioadă de 128 microsecunde. ș
Pentru a realiza astfel perioada de o secundă necesară semafoarelor vom contoriza aceste
35Formula de calcul frecven ă timer0 ț
Figura 3.1.2
Diagrama bloc TIMER0

Mihai-Andrei Onofrei
întreruperi , iar în momentul în care contorul ajunge la valoarea de 7813 perioada trecută este cea
dorită.
if (T0IF)
{
contor++;
if (contor == 7813) ///secunda
{
secunda++;
contor = 0;
}
T0IF = 0;
}
La fiecare întrerupere realizată de TMR0 trebuie resetat bitul T0IF pentru a putea deservi
încă o dată întreruperea.
•Activarea întreruperilor dorite se realizează cu ajutorul registrului INTCON :
bit 7 GIE: Bit setare întreruperi globale
1= GIE activat
0= GIE dezactivat
bit 6 PEIE: Bit setare întreruperi periferice
1 = PEIE activat
0 = PEIE dezactivat
bit 5 T0IE: Bit setare întreruperere timer0
36

Capitolul 3. Implementarea aplica iei ț
1 = Întrerupere timer0 activată
0 = Întrerupere timer0 dezactivată
bit 4 INTE: Bit setare întrerupere pe pinul RB0
1 = INTE activat
0 = INTE dezactivat
bit 3 RBIE: Bit setare întreruperi pe portul B
1 = RBIE activat
0 = RBIE dezactivat
bit 2 T0IF: Flag întrerupere timer0
1 = Flag setat
0 = Flag resetat
bit 1 INTF: Flag întrerupere pe RB0
1 = Flag setat
0 = Flag resetat
bit 0 RBIF: Flag întrerupere pe portul B
1 = Flag setat
0 = Flag resetat
În aplica ie sunt folosite întreruperea de timer0, de portB i de RB0. Toate aceste ț ș
întreruperi nu pot func iona dacă setarea întreruperii globale nu este făcută. În concluzie registrul ț
INTCON va fi setat astfel : 0b10111000 echivalent la 0xB8 în hexazecimal.
Pentru a putea realiza întreruperi pe portul B este necesar în plus setarea registrului IOCB
ce determină pe care pini ai portului B se poate realiza întreruperi. Fiind folosii doar pinii RB5,ț
RB6 i RB7 ca surse de întreruperi registrul IOCB va lua valoarea 0xE0. ș
•Porturile
37

Mihai-Andrei Onofrei
Setarea direc iei porturilor, intrare sau ie ire, se realizează cu ajutorul registrului TRISx ț ș
( x luănd valori de la A la E, acest tip de registru fiind asignat fiecărui port în parte). Pentru
setarea unui bit de ie ire valoarea respectivă a bitului din registru va fi 0 iar pentru a seta un bit ș
ca intrare valoarea respectivă a bitului din registru va fi 1.
Ca exemplu , portul B, folose te pinii RB0, RB5, RB6 i RB7 ca pini de intrare pentru ș ș
contorizarea numărului de ma ini din intersec ie i pentru modul de noapte (intermitent). Restul ș ț ș
pinilor sunt folosi i la aprinderea led-urilor i vor fi seta i ca ie ire.TRISB va lua următoarea ț ș ț ș
valoare : 0b11100001 echivalent cu 0xE1 în valoare hexazecimală.
Ca setare initială pinii portului B sunt de tip analogic i astfel regi trii ANSEL i ș ș ș
ANSELH vor fi reseta i la valoarea 0 pentru a seta pinii dori i de tip digital. ț ț
Implementarea unei afi ari pe un display de tip 7 segmente nu se poate realiza ș
concomitent pe to i digi ii folosi i. Afi area se face digit cu digit cu o frecven ă de deplasare ț ț ț ș ț
îndeajuns de mare pentru a nu fi sesizată de ochiul uman i pentru a da senza ia de continuitate. ș ț
38 Figura 3.1.3
Diagrama stărilor pentru afi are ș

Capitolul 3. Implementarea aplica iei ț
Frecven a de deplasare a digi ilor a fost setată la aproximativ 50Hz, frecven ă suficientă ț ț ț
pentru a realiza efectul de continuitate.
Totodata numerele ce depă esc valoarea 9 nu pot fi afi ate decăt despăr ite separat i ș ș ț ș
astfel am folosit urmatoarele formule pentru separare:
timp_semafor_digit_1 = timp_semafor % 10;
timp_semafor_digit_2 = timp_semafor / 10;
, prima formulă fiind pentru determinarea digitului mai nesemnificativ.
Exemplu:
39Figura 3.1.4
Semnale de comandă ale segmentelor

Mihai-Andrei Onofrei
32%10 = 2;
32/10 = 3; (cast implicit la valoare de intreg).
Este implementat sistemul de func ionare nocturnă în care toate afi ajele trec în modul ț ș
stand-by ( se resetează to i bi ii pentru selec ia digi ilor). Toate led-urile de intermitent i de ț ț ț ț ș
culoare galbenă vor func iona , fiind comandate de un semnal de frecven ă 1Hz i factor de ț ț ș
umplere 50%.
Func ia de intermitent este apelată la un task de 500ms i are următoarea defini ie: ț ș ț
#define INTERMITENT(Portx,bit) Portx^=(1<<bit),
la fiecare apelare bitul selectat din portul ales î i va complementa valoarea folosind operatorul ^ , ș
operator ce are func ia de sau exclusiv. ț
Pentru a putea programa cu succces microcontrollerul apare nevoie de setare a unor bi i ț
de configurare, folosind comenzile __CONFIG. Configurarea acestor bi i se realizează în modul ț
următor :
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & CP_OFF &
CPD_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF);
__CONFIG(BOR4V_BOR40V & WRT_OFF);
•FOSC_HS, reprezint ă setarea func ionării utilizănd clock extern de viteză ț
ridicată. În cazul nostru fiind folosit oscilator de cuar de 8MHz ț
•WDTE_OFF este folosit pentru a dezactiva watchdog-ul
•PWRTE_OFF este folosit pentru a nu se activa timer-ul la alimentare
•MCLRE_OFF dezactivează func ia setată pe RE3 i se leagă intern MCLR la ț ș
alimentare
40 Figura 3.1.5
Semnal comandă intermitent

Capitolul 3. Implementarea aplica iei ț
•CP_OFF dezactivează protec ia codului ț
•BOREN_OFF se dezactivează BOR
•LVP_OFF setează pinul RB3 de tip digital i este nevoie de nivel ridicat de ș
tensiune pentru programare pe pinul MCLR
•WRT_OFF dezactivează protec ia la scriere. ț
3.2. Organigrama aplica iei ț
Func ionarea aplica iei este realizată pe bază de întreruperi. După ini ializare sistemul ț ț ț
intră într-o buclă infinită de monitorizare i la perioade bine determinate de timp se deservesc ș
întreruperile realizate de către timer0. Astfel apare posibilitatea realizării semnalelor adecvate
pentru controlul semafoarelor i buna func ionare a acestora. ș ț
41Figura 3.2.1
Organigrama func ionării ț

Mihai-Andrei Onofrei
La apăsarea butonului de dezactivare/ activare a sistemului se poate trece de la
func ionarea normală de zi, tipică pentru un semafor standard la func ionarea de noapte undeț ț
sistemele de afi are sunt blocate i semnalizatoarelor de tip intermitent sunt singurele ș ș
func ionale.ț
La detec ia unui autovehicul se deserve te întreruperea corespunzătoare ce determină ț ș
incrementarea variabilei respective sensului de mers.
Algoritmul propus monitorizează numărul de ma ini ce urmează a intra în intersec ie i la ș ț ș
finalul unei perioade ia decizii corespunzătoare unei func ionări optime pentru decongestionare ț
de trafic. Se monitorizează contoarele setate pentru fiecare sens de mers i se ajustează timpii ș
semafoarelor în func ie de acestea. Sensul cel mai predispus blocării va primi un timp de trecere ț
de durată mai lungă decât celelalte două păr i. ț
Astfel se dore te limitatea aglomera iilor i o func ionare cât mai favorabilă pentru toate ș ț ș ț
sensurile de mers.
3.3. Simularea aplica iei. ț
Testarea func ionalită ilor a fost realizată cu ajutorul aplica iei ISIS Professional 7 în care ț ț ț
se pot adăuga diverse componente electronice i realiza interfa area dintre acestea. ș ț
Acest program este user – friendly i foarte u or de folosit. În plus are o gamă variată de ș ș
componente electronice i alte func ionalită i ce ajută la testarea performan elor aplica iei. ș ț ț ț ț
42

Capitolul 3. Implementarea aplica iei ț
După cum se observă în imagine toate segmentele de afi are au fost multiplexate la un ș
singur port , PORT-ul C pentru o optimizare cât mai bună a resurselor oferite. În plus , în func ie ț
de caz au fost multiplexa i i pinii de selec ie ai digi ilor. Ca exemplu, semafoarele de pietoni ț ș ț ț
afi ează acela i număr pe ambele păr i întotdeauna, deci nu este necesar folosirea a doi timpș ș ț
separa i. Acest lucru scade considerabil numărul pinilor folosi i deci s-a putut implementa ț ț
sistemul cu un singur microcontroller.
43Figura 3.3.1
Interfa area afi ajelor ț ș

Mihai-Andrei Onofrei
Led-urile ce au func ionalitatea de intermitent sunt comandate toate de acela i pin al ț ș
port-ului A. Nu a fost necesară comanda separată , func ionalitatea lor fiind identică.Aceste led- ț
uri sunt comandate cu factor de umplere 50% la o frecven ă de 1Hz. Acestea sunt independente ț
de orice func ionalitate i vor fi comandate în acela i mod i ziua i noaptea. ț ș ș ș ș
Avănd în vedere faptul că led-urile de culoare verde nu au o intensitate luminoasă ridicată
acestea au fost conectate la o singură rezisten ă pentru a putea maximiza puterea de iluminare. ț
44 Figura 3.3.2
Semnalizatoare intermitent

Capitolul 3. Implementarea aplica iei ț
Led-urile folosite în această simulare au următoarele caracteristici:
•Curentul standard de func ionare 10mA ț
•Căderea de tensiune pe diodă 2 V
•Tensiunea maximă inversă 4 V
45Figura 3.3.3
Configura ia led-urilor semnalizatoare ț

Mihai-Andrei Onofrei
3.4. Implementarea fizică
Sistemul a fost realizat la o scală redusă , implementarea la scală reală fiind imposibilă i ș
în acela i timp irelevantă. ș
Proiectarea a fost facută pe o machetă de lemn care a fost perforată în zonele necesare
amplasării stâlpilor de sus inere pentru semafoare. Au fost realizate i găuri suplimentare pentru ț ș
posibilitatea conectării cablajelor sub machetă pentru o organizare cât mai bună.
S-a încercat replicarea unei intersec ii reale, utilizând semne de circula ie i delimitări de ț ț ș
sensuri. Aceste elemente au fost realizate utilizând autocolant i culori pentru a da un aspect de ș
intersec ie reală. ț
46

Capitolul 3. Implementarea aplica iei ț
3.5. Compara ie cu alte sisteme de control al traficului ț
A fost ales acest sistem de control al traficului folosind bucle inductive deoarece este un
sistem de cost de redus, cu durată foarte mare de via ă i care nu necesită între inere. Totodată, ț ș ț
complexitatea acestui sistem este una redusă.
Insă există nenumărate sisteme de control, sisteme ce variază de la zonă la zonă în
func ie de necesitate, buget i intensitatea traficului.ț ș
•Sisteme cu timp fix
Multe din sistemele de control al traficului urban sunt variante ale acestui tip de sisteme
cu timp fix. În acest caz, proiectantul are control considerabil asupra obiectivelor sale i poate ș
optimiza diferite păr i ale re elei pentru a ob ine diferite rezultate. Acest tip de sistem nu poate ț ț ț
răspunde dinamic pentru că folose te planuri de sincronizare pre-calculate. Ca dezavantaj, aceste ș
sisteme nu răspund automat la incidente care ar cauza pierderea capacită ii de operare în re ea. ț ț
Planurile cu timp fix sunt optime pentru strategii de implementare fixe, fiind folosite pentru
limitarea capacită ii de trafic la anumite ore din zi. ț
•Sisteme de selec ie a planurilor ț
Sistemele de selec ie a planurilor folosesc mai multe planuri de tip fix i îl selectează pe ț ș
cel favorabil luând în considerare infoma ia primită de la detectoarele de trafic amplasate în ț
re eaua de drumuri. Acest sistem nu s-a dovedit a fi mult mai performant decât sistemul cu timpț
fix. Dacă este necesar acest sistem poate rula un plan specific pentru un eveniment special.
Totu i întârzierea suplimentară cauzată de alegerea planului gre it compensează câ tigul datoratș ș ș
schimbării la momentul potrivit când sistemul ia o decizie corectă.
•Sistemul de generare a planurilor
Aceste sisteme generează propriile planuri de semaforizare cu timp fix pe baza datelor
primite de la detectoarele de trafic. Comparat cu sistemele cu timp fix , acest sistem este mai
pu in sub controlul inginerului de trafic pentru că nu se poate defini exact comportamentulț
acestuia. În principiu, acest sistem ar putea răspunde la incidente nea teptate, cu toate că în ș
practică nu se permite schimbarea majoră a planului existent pentru a oferi un răspuns corect la
toate tipurile de evenimente apărute.
47

Mihai-Andrei Onofrei
•Adaptarea locală
Acestea utilizează o metodă de adaptare locală pentru a modifica planurile cu timp fix
impuse de la postul central. Opera ia de bază constă în rularea unui plan de bază, automatele ț
locale putând omite sau termina mai devreme fazele de semaforizare depinzând de cererea locală
pentru fazele ciclului curent.Adaptarea locală este în general combinată cu sistemele de selec ie ț
de plan sau generare de plan.
•Sisteme dinamice centralizate de trafic
Aceste sisteme lucrează pe baza unui calculator central care comunică cu automate de
trafic locale. Avantajele acestui sistem sunt acelea că ar trebui să raspundă prompt la cererile de
trafic, în func ie de intervalul orar din zi sau în func ie de incidentele care apar. Un sistem ț ț
centralizat are avantajul că toate informa iile relevante, de la detectoare i ale surse sunt stocate ț ș
în acela i loc. ș
•Sisteme de trafic dinamice cu procesare distribuită
Caracteristicile i avantajele acestor tipuri de sisteme sunt aproximativ identice cu cele ș
ale sistemelor dinamice centralizate de trafic. O diferen ă majoră constă în tipul de comunica ii ț ț
folosit de sistem. La acest tip de sistem fiecare automat de trafic este conectat cu automatele
învecinate. Mesajul poate fi transferat între oricare două automate, fiind ghidat pentru a ajunge
acolo unde este necesar.

48 Figura 3.5.1
Tipuri de sisteme i localizarea lor ș

Capitolul 3. Implementarea aplica iei ț
UTOPIA.
Cele mai importante elemente în realizarea optimizării traficului sunt estimarea i ș
predic ia.UTOPIA – SPOT utilizează tehnici avansate în combina ie cu configura ii flexibile de ț ț ț
detec ie, precum i date istorice ce permit dirijarea traficului i în absen a func ionării ț ș ș ț ț
detectoarelor, utilizând istoricul nivelurilor de trafic înregistrate la acelea i date i/sau în acelea i ș ș ș
condi ii. Realizarea optimizării la nivel local are i un alt mare avantaj, atât pentru sistemul de ț ș
reglare al traficului, cât i pentru cel de management al transporturilor publice: nu încarcă ș
re eaua cu mesaje, întrucât o bună parte din calculele de optimizare se realizează local, fără aț
mai fi nevoie să se transmită datele prin sistem. În acest mod este mic orată i durata de răspuns. ș ș
Există o func ie separată pentru monitorizarea vehiculelor destinate transportului public ț
în re ea , locatorul transportului public. Pe baza informa iilor de la diferite tipuri de detectoare iț ț ș
pe baza estimării duratelor de călătorie ale acestui tip de vehicule, sunt predic ionate momentele ț
sosirii acestora la intersec ii. În Bucuresti, prima implementare de acest gen a fost pe linia de ț
metrou u or 41. ș
Semnificativ pentru sistemul SPOT este că acesta a fost proiectat ini ial pentru a acorda ț
prioritate vehiculelor de transport public. Ideea de la baza sistemului SPOT este să execute
calculele pentru ajustarea duratelor de semnalizare (setarea semafoarelor), în timp real, cu scopul
de a minimiza costul socio-economic total al sistemului de trafic. Principalele costuri sunt
produse de întârzierile i de opririle vehiculelor. Pentru a acorda prioritate pentru autobuze i ș ș
tramvaie, acestor vehicule le-au fost asociate costuri mai mari.
Capacitatea de a reac iona aproape imediat la schimbările de trafic din intersec ie face ț ț
controlul foarte eficient, prin reac ie imediată la perturba iile locale cauzate de acordarea ț ț
priorită ii pentru mijloacele de transport în comun. ț
49

Mihai-Andrei Onofrei
Concluzii
Evolu ia semafoarelor de la semafoare cu gaz , la semafoare electrice până la sisteme ț
inteligente pentru controlul i detec ia ambuteiajelor a fost necesară o dată cu cre terea masivă a ș ț ș
transporturilor, consecin ă a cre terii popula iei i a evolu iei tehnologice. ț ș ț ș ț
Este clar rolul sistemelor de control al traficului în zilele noastre i importan a lor la nivel ș ț
socio – economic. Din această privin ă numărul sistemelor implementate în intersec ii a crescut ț ț
în ultimul timp i va cre te la un nivel impresionant în perioada următoare în acela i timp cu ș ș ș
cre terea numărului de ma ini la nivel mondial.ș ș
Diversitatea de la un producător la altul al acestor sisteme diferă în func ie de nivelul ț
traficului din zonă i necesitatea lor. ș
A adar avem control al traficului cu sisteme cu timp fix, cu generare de planuri , cuș
adaptare locală i nu în ultimul rând cu sisteme cu adaptare dinamică. ș
Sistemele cu adaptare dinamică devin cele mai folosite i devin din ce în ce mai ș
complexe. De la utilizarea senzorilor cu infraro u sau a buclelor inductive care au o complexitate ș
mai redusă dar au ca avantaj pre mai redus, până la sisteme care folosesc camere video i ț ș
procesări de imagini pentru detec ia ambuteiajelor i a accidentelor sau chiar sisteme care ț ș
folosesc re ele neuronale pentru rezolvarea problemelor i care au posibilitatea de a alarma ț ș
autorită ile la detectarea unui accident. Însă aceste sisteme sunt mult mai complexe i totodată ț ș
devin mult mai scumpe.
Sistemul cu bucle inductive realizat este u or de implementat insă este necesară instalarea ș
lui un momentul în care se construie te drumul pentru evitarea deteriorării i reconstruc iei ș ș ț
pavajului respectiv. Situarea strategică a buclelor înainte de intrarea în intersec ie dar i ț ș
posibilitatea de a le instala în mijlocul intersec iei pentru detec ia ambuteiajelor le oferă un ț ț
avantaj fa ă de celelalte sisteme dinamice de complexitate medie i mică. ț ș
50

Bibliografie
Bibliografie
[1]Traductoare electronice, Conf dr. ing. Liliana Vornicu, editura PIM
[2]Sistem modern pentru dirijarea circula iei într-o intersec ie, ț ț Ș.L.Dr.Ing. Ilie Borcoși,
Universitatea “Constantin Brâncuși” din Tîrgu Jiu Ing. Antonie Nicolae, Universitatea
“Constantin Brâncuși” din Tîrgu Jiu
[3]Studiu privind metode optime de detec ie a vehiculelor în Bucure ti ț ș Ș.l. dr. ing. Maria
Claudia SURUGIU, As. drd. ing. Ilona Mădălina MOISE, As. drd. ing. Elena Alina
STANCIU Universitatea „Politehnica“, București
[4]Sisteme de management al traficului , Laborator 5 , Strategia de dezvoltare teritorială a
României
[5]http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/leds.html
[6]http://www.microchip.com/pagehandler/en-us/aboutus/home.html
[7]https://en.wikipedia.org/wiki/Load_cell
[8]PIC 16F887 Datasheet 40-Pin CMOS FLASH Microcontrollers.
[9]OPD-D3010LE-BW Datasheet
51

Mihai-Andrei Onofrei
Anexe.
Anexa 1. Prototipul intersec iei ț
Ilustraiaț 1
Prototip intersecieț
Anexa 2. Software
#include <htc.h>
const char display[10] = {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x2, 0x78, 0x0, 0x10};
#define INTERMITENT(Portx,bit) Portx^=(1<<bit)
#define CHANGE_STATE(var) var^=(1<<0)
#define RESETBIT(Portx,bit) Portx&=~(1<<bit)
#define _XTAL_FREQ 8000000
typedef unsigned char uint8;
typedef unsigned int uint16;
void afisare(uint8, uint8, uint8, uint8, uint8, uint8, uint8);
void semafor_functionabil (void);
void semafor_defect(void);
void initializare_sistem (void);
void modificare_timpi(void);
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_OFF &
IESO_OFF & FCMEN_OFF & LVP_OFF);
52

Anexe.
__CONFIG(BOR4V_BOR40V & WRT_OFF);
uint8 timp_semafor1_d1 = 2;
uint8 timp_semafor1_d2 = 2;
uint8 timp_semafor2_d1 = 5;
uint8 timp_semafor2_d2 = 5;
uint8 timp_semafor3_d1 = 3;
uint8 timp_semafor3_d2 = 2;
uint8 timp_semafor1 = 22;
uint8 timp_semafor2 = 55;
uint8 timp_semafor3 = 32;
uint8 timp_semafor1_modificat = 22;
uint8 timp_semafor2_modificat = 55;
uint8 timp_semafor3_modificat = 32;
uint8 digit = 1;
uint8 stare1 = 1;
uint8 stare2 = 1;
uint8 stare3 = 1;
uint8 init = 1;
uint16 contor_intermitent = 0;
uint8 functionabil = 1;
uint8 masini_tgc, masini_tdv, masini_pr;
void interrupt semafor( void )
{
if (functionabil)
{
semafor_functionabil();
}
else
{
semafor_defect();
}
if (INTF)
{
// timp_semafor1 = 70;
masini_tdv++;
INTF = 0;
}
53

Mihai-Andrei Onofrei
if (RBIF && RB6)
{
// timp_semafor2 = 80;
masini_pr++;
RBIF = 0;
}
if (RBIF && RB7)
{
// timp_semafor3 = 60;
masini_tgc++;
RBIF = 0;
}
if (RBIF && RB5)
{
if (functionabil)
{
RA1 = 0;
RB2 = 0;
RB3 = 0;
RA4 = 0;
RA2 = 0;
RA3 = 0;
}
else if (functionabil == 0)
{
initializare_sistem();
}
CHANGE_STATE(functionabil);
RBIF = 0;
}
}
void main()
{
OPTION_REG = 0x08; //0b10001000
TRISC = 0;
54

Anexe.
GIE = 1;
T0IE = 1;
INTE = 1;
RBIE = 1;
TRISC = 0;
TRISD = 0;
PORTD = 0;
PORTC = 0;
IOCB = 0xE0;
TRISB = 0xE1; //11100001
TRISA = 0b0;
PORTA = 0b110;
PORTB = 0b00001000;
ANSEL = 0x00;
ANSELH = 0x00;
while (1);
}
void afisare(uint8 c1, uint8 c2, uint8 c3, uint8 c4, uint8 c5, uint8 c6, uint8 digit)
{
switch (digit)
{
case 1:
PORTC = 0xFF;
RD0 = 1;
RD1 = 0;
RD2 = 0;
RD3 = 0;
RD4 = 0;
RD5 = 0;
PORTC = display[c1];
break;
case 2:
PORTC = 0xFF;
RD0 = 0;
RD1 = 1;
55

Mihai-Andrei Onofrei
RD2 = 0;
RD3 = 0;
RD4 = 0;
RD5 = 0;
PORTC = display[c2];
break;
case 3:
PORTC = 0xFF;
RD0 = 0;
RD1 = 0;
RD2 = 1;
RD3 = 0;
RD4 = 0;
RD5 = 0;
PORTC = display[c3];
break;
case 4:
PORTC = 0xFF;
RD0 = 0;
RD1 = 0;
RD2 = 0;
RD3 = 1;
RD4 = 0;
RD5 = 0;
PORTC = display[c4];
break;
case 5:
PORTC = 0xFF;
RD0 = 0;
RD1 = 0;
RD2 = 0;
RD3 = 0;
RD4 = 1;
RD5 = 0;
PORTC = display[c5];
break;
case 6:
PORTC = 0xFF;
56

Anexe.
RD0 = 0;
RD1 = 0;
RD2 = 0;
RD3 = 0;
RD4 = 0;
RD5 = 1;
PORTC = display[c6];
break;
}
}
void semafor_defect(void)
{
static uint16 contor = 0;
PORTC = 0xFF;
if (init)
{
RESETBIT( PORTA, 0);
RESETBIT( PORTD, 6);
RESETBIT( PORTB, 1);
RESETBIT( PORTB, 4);
init = 0;
}
if (T0IF)
{
contor++;
if (contor == 3400)
{
INTERMITENT( PORTA, 0);
INTERMITENT( PORTD, 6);
INTERMITENT( PORTB, 1);
INTERMITENT( PORTB, 4);
contor = 0;
}
T0IF = 0;
}
}
57

Mihai-Andrei Onofrei
void semafor_functionabil (void)
{
static uint16 contor = 0;
static uint16 contor_digit = 0;
if (T0IF)
{
contor++;
contor_digit++;
contor_intermitent++;
if (contor_digit == 70)
{
if (digit > 5)
digit = 1;
else
digit++;
if (functionabil)
{
afisare(timp_semafor1_d1, timp_semafor1_d2, timp_semafor2_d1,
timp_semafor2_d2, timp_semafor3_d1, timp_semafor3_d2, digit);
}
contor_digit = 0;
}
if (contor_intermitent == 3400)
{
INTERMITENT( PORTA, 0);
contor_intermitent = 0;
if (timp_semafor1 > 4)
{
RB1 = 0;
}
else
{
if (stare1 == 0)
{
INTERMITENT( PORTB, 1);
}
58

Anexe.
}
if (timp_semafor2 > 4)
{
RB4 = 0;
}
else
{
if (stare2 == 1)
{
INTERMITENT( PORTB, 4);
}
}
if (timp_semafor3 > 4)
{
RD6 = 0;
}
else
{
if (stare3 == 1)
{
INTERMITENT( PORTD, 6);
}
}
}
if (contor == 7813) ///secunda
{
if (timp_semafor1 == 0)
{
if (stare1)
{
timp_semafor1 = 55;
stare1 = 0;
}
else
{
timp_semafor1 = 22;
stare1 = 1;
59

Mihai-Andrei Onofrei
}
RA1 = ~RA1;
RB2 = ~RB2;
}
else
{
timp_semafor1–;
}
if (timp_semafor2 == 0)
{
if (stare2)
{
timp_semafor2 = 40;
stare2 = 0;
}
else
{
timp_semafor2 = 45;
stare1 = 1;
}
RB3 = ~RB3;
RA4 = ~RA4;
}
else
{
timp_semafor2–;
}
if (timp_semafor2 == 0)
{
//schimbare timp semafoare
modificare_timpi();
timp_semafor1 = timp_semafor1_modificat;
timp_semafor2 = timp_semafor2_modificat;
timp_semafor3 = timp_semafor3_modificat;
}
if (timp_semafor3 == 0)
{
60

Anexe.
if (stare3)
{
timp_semafor3 = 20;
stare3 = 0;
}
else
{
timp_semafor3 = 22;
stare3 = 1;
}
RA2 = ~RA2;
RA3 = ~RA3;
}
else
{
timp_semafor3–;
}
timp_semafor1_d2 = timp_semafor1 % 10;
timp_semafor1_d1 = timp_semafor1 / 10;
timp_semafor2_d2 = timp_semafor2 % 10;
timp_semafor2_d1 = timp_semafor2 / 10;
timp_semafor3_d2 = timp_semafor3 % 10;
timp_semafor3_d1 = timp_semafor3 / 10;
contor = 0;
}
T0IF = 0;
init = 1;
}
}
void initializare_sistem (void)
{
PORTA = 0b110;
PORTB = 0b00001000;
timp_semafor1_d1 = 2;
timp_semafor1_d2 = 2;
timp_semafor2_d1 = 5;
timp_semafor2_d2 = 5;
61

Mihai-Andrei Onofrei
timp_semafor3_d1 = 3;
timp_semafor3_d2 = 2;
timp_semafor1 = 22;
timp_semafor2 = 55;
timp_semafor3 = 32;
}
void modificare_timpi(void)
{
if (masini_tdv > 5 || masini_tgc > 5)
{
if (masini_tdv > masini_tgc && masini_tdv > masini_pr)
{
timp_semafor1_modificat += masini_tdv;
timp_semafor2_modificat -= masini_tdv;
}
else
if (masini_tgc > masini_tdv && masini_tgc > masini_pr)
{
timp_semafor3_modificat += masini_tgc;
timp_semafor2_modificat -= masini_tgc;
}
}
}
62

Similar Posts