TAXIMETRU ELECTRONIC (V)

by donpedro

În continuarea seriei de articole dedicate taximetrului electronic, în numărul curent vă prezentăm alte aspecte relative la realizarea software-ului

Articolul din numărul anterior a descris structura generală a programului principal. În numărul curent vor fi prezentate elemente legate de subrutinele de tratare ale întreruperilor.
Programul realizat conţine două subrutine de tratare ale întreruperilor.
O primă subrutină este asociată întreruperilor externe (INT.EXT.0) şi are ca sarcină semnalizarea apariţiei impulsurilor de la traductorul de deplasare. Traductorul preia informaţii de la cablul de kilometraj al autovehicolului şi, pe lângă informaţia de spaţiu parcurs, oferă informaţii relative la viteza de deplasare. Deplasarea se determină prin numărarea impulsurilor generate de traductor şi înmulţirea respectivului număr cu constanta ce reprezintă spaţiul parcurs între două impulsuri. Constanta menţionată se determină în regimul de programare al taximetrului, prin deplasarea pe o distanţă etalon şi contorizarea impulsurilor generate de traductor.
Cea de-a doua subrutină de tratare a întreruperilor provine de la canalul TIMER 0 al microcontrolerului. Acest canal este programat să ofere întreruperi la intervale de 1 ms. Subrutina are mai multe sarcini, dar în general este folosită pentru determinarea diverselor intervale de timp ce apar în cadrul aplicaţiei.
Organigrama subrutinei de tratare a întreruperilor externe este prezentată în figura 1.

Figura 1 Organigrama subrutinei de tratare. Întreruperi externe INT.EXT.0( impulsuri de la traductorul de deplasare)

O primă sarcină ce trebuie rezolvată în cadrul acesteia constă în eliminarea impulsurilor externe ce apar cu o frecvenţă ridicată, corespunzătoare unor viteze de deplasare mari (> 140 Km/h). Acest lucru are ca scop înlăturarea eventualelor perturbaţii ce intervin şi, respectiv, a blocării încercărilor de aplicare a unor impulsuri provenite de la generatoare de semnal externe în scop de păgubire a clienţilor. Practic, cele două subrutine de tratare ale întreruperilor comunică între ele prin diverse metode. Înlăturarea impulsurilor cu frecvenţă ridicată ce provin de la traductor se face prin determinarea timpului scurs între două impulsuri şi compararea acestuia cu timpul dintre două impulsuri corespunzător vitezei de 140 Km/h. La viteza de 140 Km/h, timpul scurs între două impulsuri (la parcurgerea unui metru) este o constantă a autovehicolului şi se determină pe baza următoarelor relaţii:
Timp [ms] = Spaţiul [m] / Viteză [m/ms] = {1[m] / 140000 [m]} / 3600000[ms] =
= 360/14 [ms] = 25,71 [ms]
.
Dacă impulsurile de la traductor nu apar la parcurgerea unui metru, atunci rezultatul din relaţia anterioară se înmulţeşte cu distanţa în metri ce indică respectivul spaţiu parcurs.
Contorizarea timpului se face în subrutina TIMER 0, practic prin numărarea apariţiilor acesteia, rezultatul fiind exprimat direct în milisecunde. Acest număr este preluat de subrutina de tratare a întreruperilor externe (preluarea vitezei de deplasare) şi este comparat cu constanta corespunzătoare vitezei de 140 Km/h (25 ms, conform relaţiei de mai sus ). Dacă timpul determinat este mai mic sau egal cu 25 ms, atunci impulsurile de la traductor sunt ignorate. Altfel, impulsurile respective sunt luate în calcul şi apariţia lor este semnalizată pentru celelalte componente ale programului de lucru.

Figura 2 Organigrama subrutinei de tratare intreruperi TIMER 0

În figura 2 este prezentată organigrama subrutinei de tratare a întreruperii de la canalul TIMER 0.
În principiu, subrutina rezolvă mai multe sarcini. O primă sarcină constă în gestionarea afişajului multiplexat. Modul de lucru a fost prezentat în numerele anterioare. Practic, la intervale de 5 ms se realizează afişarea pe celulele corespunzătoare unei coloane din matricea de afişoare (3 linii x 4 coloane) şi stingerea coloanei anterioare. Se contorizează intervalul de 5 ms şi se ţine evidenţa coloanelor de afişoare acţionate din matrice. Corespunzător fiecărei coloane se aplică informaţia necesară, funcţie de cerinţele de afişare.
O a doua sarcină este legată de gestionarea celor 3 taste cu care este prevăzut taximetrul şi ale căror roluri au fost prezentate într-un număr anterior. Scopul gestionării este acela al determinării momentelor de apăsare şi al înlăturării fenomenelor de debouncing ce însoţesc acţionarea. Fenomenul de debouncing poate conduce la semnalizări multiple de acţionare pentru o unică apăsare a unei taste. Înlăturarea fenomenului presupune retestarea stării tastei după un timp de 10 ms, atât pentru situaţia de detecţie a apăsării tastei, cât şi la detecţia retragerii acesteia. Semnalizările pentru apăsarea unei taste şi, respectiv, pentru retragerea acesteia se fac doar după retestare şi regăsirea stării de la testul primar. În caz contrar, se consideră că acţionarea tastei este ambiguă şi nu se face semnalizarea corespunzătoare.
Semnalizarea este unică indiferent de timpul de menţinere în starea apăsat al tastei. Plasarea acestor activităţi în subrutina de tratare a întreruperilor de la subrutina TIMER 0 este legată de faptul că multe din acţiuni presupun determinarea de intervale de timp.
Cea de-a treia sarcină a subrutinei de tratare este legată de determinarea vitezei de deplasare a autovehicolului. Determinarea vitezei se face pentru impulsurile de la traductor validate de subrutina de tratare a impulsurilor externe (INT.EXT.0). Pe lângă aspectele menţionate anterior, calculul vitezei doar la viteze de deplasare sub 140 Km/h are şi o raţiune legată de funcţionalitatea programului. Practic, în conformitate cu procedura de determinare prezentată, la viteze mai mari eroarea procedeului este mare prin apropierea mărimii de măsurat de unitatea de măsură.
După cum am menţionat, viteza se determină indirect prin timpul scurs între două impulsuri provenite de la traductor. Timpul se măsoară la rândul lui prin numărarea apariţiilor subrutinei de tratare a întreruperilor (la intervale de 1 ms). Semnalizarea determinării vitezei prin procedura amintită se face pentru celelalte componente ale programului, în vederea preluării rezultatelor şi a procesării acestora, în conformitate cu algoritmul de lucru. Pragurile vitezelor de 5 Km/h, respectiv de 10 Km/h, necesare pentru diverse decizii în cadrul programului de lucru se determină prin proceduri similare cu cea prezentată mai sus la viteza de 140 Km/h şi sunt semnalizate corespunzător diverselor componente ale programului.

Prof. dr. ing. Gheorghe Şerban
Universitatea din Piteşti
Facultatea de Electronică şi Electromecanică
Catedra de Electronică
e-mail: serban@electra.upit.ro

S-ar putea să vă placă și