Dispozitiv de Monitorizare a Ritmului Cardiac

Dispozitiv de monitorizare a ritmului cardiac

Cuprins

Capitolul 1 : Introducere

Aparatul cardiovascular

Structura aparatului cardiovascular

Evaluarea aparatului cardiovascular

Ritmul cardiac

Determinarea ritmului cardiac

Ritmul cardiac maxim, ritmul cardiac țintă

Tulburări ale ritmului cardiac

Metode de măsurare a ritmului cardiac

Dispozitive de monitorizare a ritmului cardiac

Structura unui dispozitiv de monitorizare și măsurare a ritmului cardiac

Capitolul 2 : Proiectarea dispozitivului de monitorizare și măsurare a ritmului

cardiac

2.1 Stabilirea metodei de măsurare și monitorizare a ritmului cardiac

2.2 Definirea și proiectarea blocurilor funcționale

Capitolul 3 : Prezentarea dispozitivului de monitorizare și măsurare a ritmului cardiac

realizat

Capitolul 4 : Rezultate experimentale obținute folosind dispozitivul de măsurare a ritmului cardiac realizat

Capitolul 5 : Concluzii

Bibliografie

Anexe

CAPITOLUL 1

Introducere

Prezenta lucrare are scopul de a ilustra modul in care a fost proiectat și realizat un dispozitiv de măsurare și monitorizare a ritmului cardiac folosind o metodă neinvazivă bazată pe tehnica fotopletismografiei.

Prin măsurarea și monitorizarea ritmului cardiac pot fi detectate unele afecțiuni ale sistemului circulator fără a fi necesare investigații și echipamente costisitoare.

Scopul realizării dispozitivului de măsurare și monitorizare a ritmului cardiac este acela de a oferi o soluție alternativă deloc costisitoare la echipamentele cu funcții multiple care au un cost ridicat.

1.1 Aparatul cardiovascular

Aparatul cardiovascular este sistemul ce duce sangele la țesuturi. Rolul aparatului cardiovascular este acela de a asigura nutriția țesuturilor și îndepărtarea produșilor de catabolism, de a asigura transportul unor substanțe de la un organ la altul, de a menține echilibrul hidro-electrolitic și de a dezvolta și menține o tensiune arterială medie adaptată la cerințele tisulare, in condiții de flexibilitate și efort minim al inimii.

Structura aparatului cardiovascular

Elementele constituente ale aparatului cardiovascular sunt: inima (pompa care asigură curculația sângelui in organism, prin intermediul celor doua circulații – pulmonară și sistemică), arterele (sistemul de distribuție a sângelui până la nivel tisular), microcirculația (care include capilarele și asigură schimburile dintre sânge și țesuturi) și venele (servesc ca rezervoare și colectează sângele pentru a îl readuce la inimă).

Evaluarea aparatului cardiovascular

Evaluarea aparatului cardiovascular se face cu ajutorul următoarelor metode de investigație:

electrocardiograma (ECG);

proba de efort;

ecocardiografia;

ecografia Doppler a vaselor;

radiografia toracică;

coronarografia;

Electrocardiograma este o metodă de înscriere grafică a diferenței de potențial ce apare intre baza și vârful inimii, in timpul activității cardiace. Scopul acestui tip de investigație este acela de a măsura și monitoriza activitatea electrică a inimii.

Figura 1.1. Semnalul ECG(1).

Unda P evidențiază depolarizarea atriilor. Complexul QRS este constituit din urmatoarele unde: unda Q (evidențiază depolarizarea septului interventricular), unda R (depolarizarea vârfului și peretelui lateral), unda S (depolarizarea bazei ventriculare). Unda T este generată în urma repolarizării ventriculare. Unda U generată în urma repolarizării întârziate a mușchilor papilari, care este inconstantă la tineri.

Segmentul PQ sau PR prezintă stadiul atrial complet depolarizat. Segmentul ST arată stadiul ventricular complet depolarizat.

Intervalul PQ este generat in urma conducerii excitației de la atriu la ventricul.

Intervalul QT este generat in urma sistolei electrice ventriculare (depolarizare – complexul QRS, repolarizare – unda T ). Intervalul RR prezintă revoluția cardiacă electrică .

Proba de efort reprezintă capacitatea de adaptare cardiovasculară, respiratorie și metabolică a organismul sănătos sau bolnav la efortul fizic.

Ecocardiografia este o tehnică de investigare cu ajutorul ultrasunetelor ce vizualizează aparatul valvular, apreciază contractilitatea miocardului și fluxul transvalvular. Cu ajutorul ecocardiografiei se pot evidenția eventuali trombi și defecte ale peretelui

Figura 1.2. Imagine achiziționată cu ajutorul unui aparat ecograf (2).

Coronarografia evidențiază zonele de stenoză de la nivelul coronarelor în boala ischemică. În cazul unui diametru coronarian mai mic de 80% din diametrul normal există riscul de infarct. Apare necesitatea de stendare sau by-pass.

1.2 Ritmul cardiac

Ritmul cardiac reprezintă numarul de bătăi ( contracții ) ale inimii raportate la o unitate de timp. Cea mai utilizată unitate de timp pentru determinarea ritmului cardiac este minutul, in acest caz ritmul cardiac are ca și unitate de masură [bpm] – bătăi pe minut.

unde,

RC – ritmul cardiac ;

B – numărul de bătăi ;

t – unitatea de timp [minut] ;

Conform National Institute of Health, ritmul cardiac în repaus pentru un adult este cuprins între 60 și 100 bpm, acest lucru depinzând de condiția fizică a persoanei in cauză. Pentru persoanele cu vârste cuprinse între 6 și 15 ani, ritmul cardiac în repaus este cuprins între 70 și 100 bpm. Sportivii și persoanele cu o condiție fizică excelentă pot avea un ritm cardiac de până la 40 bpm.

1.2.1 Ritmul cardiac maxim, ritmul cardiac ținta

Nu există o recomandare clară din partea medicilor cu privire la o valoare prea mare a ritmului cardiac, dar majoritatea experților medicali sunt de părere că un ritm cardiac foarte mare poate pune un stres prea mare asupra inimii și a celorlalte organe.

Cunoscând ritmul cardiac în timpul activităților fizice poate ajuta la determinarea nivelului de intensitate al activității. Ritmul cardiac țintă al unei persoane este intre 50% și 69% pentru o activitate de intensitate moderată și peste 70%, dar mai mica de 90% pentru activități de intensitate ridicată, din ritmul său cardiac maxim (3)

Ritmul cardiac poate fi calculat prin scăderea vârstei din 220:

220 – vârsta [bpm] .

Pentru o persoana in vârsta de 25 de ani, de exemplu : 220-25 = 195[bpm]

Zona țintă pentru o persoana in vârstă de 25 de ani este intre 50% și 85% din ritmul său cardiac maxim:

nivelul de 50% : 195 x 0.5 = 97~98 bpm

nivelul de 85% : 195 x 0.85 = 165~166 bpm

Această formulă de calcul funcționează foarte bine pentru persoanele sub 40 de ani, dar pentru persoanele mai în vârstă poate supraestima ritmul cardiac maxim. Pentru persoanele mai în vârstă , o formulă mai bună pentru ritmul cardiac maxim este:

208 – (0.75 x vârsta ) [bpm] ;

1.2.3 Tulburări ale ritmului cardiac

Prin monitorizarea și măsurarea ritmului cardiac pot fi detectate unele disfuncții ale aparatului cardiovascular. Cele mai importante tulburări ale funcționalității aparatului cardiovascular ce pot fi depistate prin monitorizarea și măsurarea ritmului cardiac sunt:

Disritmia ;

Tahicardia ;

Bradicardia ;

Disritmia reprezintă schimbarea ritmului cardiac regulat, prea rapid sau prea lent. Ca și principală simptomă se evidentiaza paltpitațile la nivelul cordului.

Tahicardia este reprezentată de un ritm cardiac accelerat. Aceasta apare când persoana este in repaus și ritmul cardiac depășește cu mult ritmul cardiac normal ( peste 100 bpm ). Principalele simptome ale acestei tulburări de ritm cardiac sunt:

palpitații ;

dureri în piept ;

amețeală ;

hipotensiune arterială ;

slăbiciune sau leșin ;

stop cardiac și deces ;

În momentul în care inima are un ritm prea ridicat, aceasta pune în circulație un debit mai mic de sânge ceea ce duce la o oxigenare insuficientă a organelor .

Bradicardia presupune scăderea ritmului cardiac normal sub 60 bpm în cazul adulților și sub 80 bpm la copii. În cazul sportivilor și al adolescenților ritmul cardiac poate ajunge la o valoare de 40 bpm, principala cauză fiind antrenamentul și vârsta fizică. Deasemenea, în cazul persoanelor în vârstă se poate ajunge la un ritm cardiac mai scăzut, nefiind cazul de brahicardie. Simptomatica brahicardiei poate fii:

vertij (amețeli) ;

sincopă (leșin) sau presincopă ;

oboseală ;

dispnee (respirație dificilă) ;

palpitații ;

angina (dureri pectorale) ;

creșterea oboselii la efort ;

confuzie sau dificultăți de concentrare ;

1.2.3 Metode de măsurare a ritmului cardiac

Cele mai utilizate metode de măsurare a ritmului cardiac sunt:

electrocardiograma ;

ecografia ;

seismocardiografia ;

fotopletismografia ;

Pentru a determina ritmul cardiac al unui pacient în urma investigării cu aparatul electrocardiograf al activității electrice a inimii este suficientă determinarea timpului (în secunde) dintre două unde R. Apoi, aplicându-se următoarea formulă se poate determina ritmul cardiac:

unde t reprezintă perioada de timp dintre două unde R succesive. În urma monitorizării unei persoane cu ajutorul ecografului, la nivelul cordului, pentru a determina ritmul cardiac al acesteia se masoară timpul intre două contracții succesive ale cordului și aplicându-se formula (1), unde t in acest caz este timpul între două contracții succesive se determină ritmul cardiac al persoanei monitorizate.

Seismocardiografia presupune măsurarea undei mecanice generate de contracția și relaxarea inimii. Această unda este produsă în principal de mișcarea pereților inimii și curgerea sângelui. Pentru a determina ritmul cardiac se măsoară timpul dintre două amplitudini maxime ale acestei unde și se aplică formula (1) pentru a determina ritmul cardiac în batai pe minut.

Fotopletismografia presupune măsurarea volumetrică a unui organ. În momentul de contracție maximă inima pulsând sânge in sistemul de vene și capilare, volumul organelor crește. În momentul de relaxare, inima se umple cu sânge și astfel volumul organelor scade. Prin determinarea timpului dintre două maxime de volum succesive și aplicând formula (1) se poate determina ritmul cardiac in bătăi pe minut.

1.3 Dispozitive de măsurare și monitorizare a ritmului cardiac

Din punct de vedere al preciziei de măsurare a ritmulu cardiac pe primul loc se situează electrocardiograful, iar pe cel de al doilea ecograful. Costurile unor asemenea echipamente sunt mult superioare celor ce utilizează fotopletismografia sau seismografia, astfel că ultimele două tehnici sunt de preferat pentru a monitoriza ritmul cardiac. În cazul în care sunt detectate anumite tulburări ale ritmului cardiac se poate apela la investigațile de specialitate cu electrocardiograful sau ecograful.

Ecocardiograful și electrocardiograful permit realizarea de investigații amănunțite asupra sistemului circulator și nu au ca scop principal monitorizarea și măsurarea ritmului cardiac. Din această cauză, din punct de vedere al calitătii monitorizării și măsurării ritmului cardiac raportată la prețul dispozitivelor, aparatele ce folosesc fotopletismografia și seismocardiografia ca tehnică de monitorizare sunt cele mai recomandate pentru acest tip de investigatie.

1.4 Structura unui dispozitiv de monitorizare și măsurare a ritmului cardiac

Dispozitivele de monitorizare și măsurare a ritmului cardiac achiziționează semnalul biomedical de la subiect prin intermediul unui senzor care, în funcție de tipul metodei folosite pot fi: electrozi ( în cazul electrocardiogrfului ), un cluster de celule piezo ( în cazul ecografului), un senzor giroscopic sau accelerometru ( în cazul seismocardiografului ) sau un ansamblu compus dintr-un LED infrarosu și un fototranzistor ( în cazul fotopletismografului).

Semnalul achiziționat de către senzor este mai apoi transmis unui bloc de condiționare a semnalului. Acesta îndeplineste funcția de filtrare, amplificare/atenuare și conversie a semnalului achizitionat astfel încat semnalul rezultat să poată fi interpretat de către blocul de procesare. Blocul de procesare ( de cele mai multe ori un microcontroler sau procesor de semnal ) interpretează semnalul, detectează punctele de interes din semnalul ui cardiac

Dispozitivele de monitorizare și măsurare a ritmului cardiac achiziționează semnalul biomedical de la subiect prin intermediul unui senzor care, în funcție de tipul metodei folosite pot fi: electrozi ( în cazul electrocardiogrfului ), un cluster de celule piezo ( în cazul ecografului), un senzor giroscopic sau accelerometru ( în cazul seismocardiografului ) sau un ansamblu compus dintr-un LED infrarosu și un fototranzistor ( în cazul fotopletismografului).

Semnalul achiziționat de către senzor este mai apoi transmis unui bloc de condiționare a semnalului. Acesta îndeplineste funcția de filtrare, amplificare/atenuare și conversie a semnalului achizitionat astfel încat semnalul rezultat să poată fi interpretat de către blocul de procesare. Blocul de procesare ( de cele mai multe ori un microcontroler sau procesor de semnal ) interpretează semnalul, detectează punctele de interes din semnalul achiziționat, îndeplinește funcția de măsurare a timpului și determină periodicitatea semnalului. În urma procesării semnalului achiziționat se determină ritmul cardiac. Ritmul cardiac determinat este obținut în urma implementării relației (1) după ce sunt identificate punctele de interes și timpul dintre două evenimente consecutive.

Rezultatul obținut este transmis persoanei ce manipulează dispozitivul într-o formă ce poate fi interpretată (grafică, utilizând un afișaj) sau este stocat pentru a putea fi interpretat ulterior.

Figura 1.3. Diagrama bloc a unui dispozitiv de monitorizare și măsurare a ritmului cardiac.

CAPITOLUL 2

Proiectarea și realizarea dispozitivului de monitorizare și măsurare a ritmului

cardiac

Etapele parcurse pentru a realiza dispozitivul de monitorizare și măsurare a ritmului cardiac sunt următoarele:

Alegerea metodei de măsurare și monitorizare a ritmului cardiac;

Definirea și proiectarea blocurilor funcționale;

Realizarea fizică a dispozitivului;

Testarea dispozitivului;

Validarea rezultatelor;

Stabilirea metodei de măsurare și monitorizare a ritmului cardiac

Scopul final a realizării dispozitivului de măsurare și monitorizare a ritmului cardiac este acela de a genera o soluție suficient de precisă și cu un raport calitate pret foarte ridicat. Din aceste motive metodele utilizate de către tehnicile de investigare a ecografului și electrocardiografului nu se preteăza pentru această aplicație.

Metoda de măsurare și monitorizare a ritmului cardiac aleasă este una bazată pe tehnica fotopletismografiei, metoda reflectivă. Această metodă se bazeaza pe monitorizarea schimbărilor volumelor organelor ( în cazul de față a venelor și capilarelor de la nivelul degetelor membrelor superioare) determinate de curgerea sângelui în urma contracției și relaxării inimii. Un fascicul de lumină generat de un LED infraroșu este transmis prin țesutul de la nivelul degetului, acesta se reflectă în os, iar fasciculul reflectat este incident pe suprafața unui fototranzistor ce are sensibilitatea maximă în spectrul luminii generate de LED-ul infraroșu. În momentul unei contracții a inimii, volumul venelor și capilarelor de la nivelul degetului crește, ceea ce determină o scădere a intensității fluxului luminos incident pe suprafața fototranzistorului. Scăderea intensității fluxului luminos pe suprafața fototranzistorului este echivalentă cu scăderea curentului de bază a unui tranzistor bipolar npn ,ceea ce determină o scădere a curetului de colector și o creștere a rezistenței dintre colector și emitor. Această variație poate fi corelată cu pulsația inimii ceea ce permite, prin periodicitatea fenomenului, determinarea și monitorizarea ritmului cardiac.

Figura 2.1. Tehnica fotopletismografiei ( reflective ) cu ajutorul unui LED infraroșu și a unui fototranzistor(4).

Definirea și proiectarea blocurilor funcționale

Blocurile constituente a unui dispozitiv de monitorizare și măsurare a ritmului cardiac sunt prezentate in Figura 1.3.

Blocul de achiziție a semnalului biomedical (senzorul) este un sistem alcătuit

dintr-un LED infraroșu ce generează un fascicul luminos cu lungimea de undă de 950nm și un fototranzistor care are un filtru optic trece bandă centrat pe lungimea de undă luminii generate de catre LED (950nm).

Componenta fizică utilizată este un senzor optic reflectiv ce are ca ieșire un fototranzistor, produs de către firma Vishay, denumit TCRT1000. Principalele caracteristici care fac ca acest senzor să se preteze la acest tip de aplicație sunt:

structura compactă ;

coeficient cu temperatura redus ;

detectorul are integrat filtru optic ;

rata de transfer in curent, tipic 2.5% ;

În figura 2.1 se poate observa cum arată din punct de vedere mecanic și care este arhitectura din punct de vedere electric a senzorului TCRT1000.

Figura 2.2. Senzorul TCRT1000 de la Visay.

Modul in care este utilizat din punct de vedere electric senzorul TCRT1000 este prezentat în figura de mai jos.

Figura 2.3. Schema electrică pentru utilizarea senzorului TCRT1000.

Rezistorul conectat între sursa de alimentare de 3,3 volți și anodul LED-ului infraroșu este de a limita curentul prin LED. Valoarea acestuia este determinată experimental, iar valoarea este aleasă astfel încat, în momentul plasării degetului deasupra LED-ului, fototranzistorul sa nu funcționeze în regiunea de saturație. Semnalul de ieșire a blocului de achiziție se obține cu ajutorul rezistorului de 33kΩ și rezistența în conducție a fototanzistorului care realizează un divizor rezistiv, pentru tensiunea de 3,3 V. Rezistența în conducție a fototranzistorului, în timpul funcționării este funcție de cantitatea de lumină infraroșie provenita de la LED, astfel aceasta poate varia intre 100 MΩ și 1 Ω. Altfel spus, tensiunea de ieșire poate avea ca valori limită ~0 V și ~3,3 V.

Blocul de condiționare a semnalului provenit de la senzor este proiectat astfel încat semnalul de ieșire din acest bloc să poată fi interpretat de blocul de procesare a semnalului.

Funcțile îndeplinite de acest bloc de condiționare a semnalului sunt următoarele:

-filtrare a semnalului ;

-amplificare ;

– conversie a semnalului ;

Filtrarea semnalului constă în cascadarea a două blocuri de filtrare și amplificare cu rolul de a elimina componentele spectrale din semnalul de intrare ce reprezintă zgomot

( informație inutilă ) și de a amplifica semnalul. Semnalul biomedical achiziționat ce poartă informația legată de ritmul cardiac poate avea componente spectrale în banda 0.5Hz (30 bpm) și 3,3 Hz (200 bpm). Astfel, pentru a obține doar informația utilă din semnalul achiziționat este necesară utilizarea unui filtru trece bandă ce elimină componentele de frecvență mai mică de 0,5 Hz și mai mare de 3,3 Hz.

Fiecare bloc de filtrare este alcătuit dintr-un filtru trece jos activ cu frecvența de tăiere de 3,38 Hz și un filtru trece sus pasiv cu frecvența de tăiere de 0,48 Hz. Configurația filtrului trece jos este prezentată in Figura 2.4 și cea a filtrului trece sus in Figura 2.5 .

Figura 2.4. Filtru activ trece jos și amplificator neinversor.

Figura 2.5. Filtru trece sus.

Frecvența de tăiere pentru filtrul trece jos este determinată de relația :

Dorind ca frecvența de tăiere să fie ~3.3Hz rezultă o valoare pentru rezistența R2 de 470kΩ și o valoare pentru capacitorul C de 100nF.

Funcția de transfer a filtrului trece sus este dată de relația:

Pentru a obține o frecvență de tăiere ~0,48 Hz se alege valoarea pentru rezistorul R1 de 33kΩ și valoarea condensatorului C1 de 10 µF. Valorile alese reprezintaă cea mai bună combinație de valori standard pentru componente pasive. Dat fiind faptul că semnalul de la ieșirea blocului de achiziție a semnalului are o amplitudine de ordinul zecilor de milivolți este necesară amplificarea acestuia până la un nivel ce poate fi interpretat de către blocul de procesare. Această amplificare se realizează cu ajutorul amplificatorului operațional ce intră în alcătuirea filtrului activ trece jos. Valoarea amplificării este implementată cu ajutorul valorii resistorilor R1 și R2. Deoarece semnalul de la intrarea blocului de procesare a semnalului se dorește a fi unul digital, nivele logice admise sunt cuprinse între 0-0,8 V pentru „0” logic și 2,7-3,6 V pentru „1” logic avem nevoie să asigurăm o amplificare suficient de mare pentru semnalul de ieșire din blocul de condiționare a semnalului. Amplificarea fiecărui bloc de filtrare și amplificare este aleasă astfel încat semnalul de ieșire să se încadreze în aceste limite. Amplificarea pentru fiecare bloc este de 101 și este implementată prin fixarea valorilor de 4.7kΩ respectiv 470kΩ pentru rezistorii R1 și R2.

Structura blocului de condiționare a semnalului este prezentată in Figura 2.6.

Figura 2.6. Strucura blocului de condiționare a semnalului.

În urma condiționării semnalului de la ieșirea senzorului, semnalul rezultat este un semnal ce poate fi interpretat de un microcontroler și poate fi considerat semnal digital.

Figura 2.7. Transformarea semnalului după trecerea prin blocul de condiționare.

După proiectarea blocului de condiționare a semnalului s-a realizat o simulare spice de tip tranzitoriu pe o perioadă de 10 secunde cu pasul maxim de simulare 0.5ms. Scopul fiind de a verifica dacă elementele au fost corect dimensionate și pentru a vedea care va fi forma semnalului final obținut în urma condiționării semnalului achiziționat. În figura 2.7 se poate vedea schema circuitului simulat cu elementele dimensionate în prealabil. Semnalul de intrare este un semnal de tip tren de impulsuri cu nivelul minim de tensiunde de 300 mV și valoare maximă de 320 mV, timp de creștere și scădere de 50 ms, factorul de umplere este de 15% și o perioadă de 0,6 secunde echivalent unui ritm cardiac de 100 bpm. Rezultatele arată că semnalul final obtinut este un semnal ce poate fi interpretat de către blocul de procesare a semnalului. În urma filtrării, componentele spectrale a semnalului ce poartă informatie utilă pentru determinarea ritmului cardiac nu sunt rejectate, astfel informația utilă din semnal este păstrată (figura 2.9).

Figura 2.8. Schema utilizată pentru simularea blocului de condiționare a semnalului.

Figura 2.9. Rezultatele obținute în urma simulării.

Blocul de procesare a semnalului, în cazul aplicației prezentate, realizează următoarele funcții:

interpretează semnalul ;

măsoară timpul între evenimente consecutive ;

monitorizează ritmul cardiac ;

calculează ritmul cardiac ;

generează semnalele de comandă pentru blocul de afișare/stocare a rezultatului ;

Figura 2.10. Diagrama bloc a blocului de procesare a semnalului.

Blocul de procesare a semnalului este realizat cu o placă de evaluare de la firma Texas Instruments (TI) „Tiva C Series TM4C123G”. Un ansamblu de dezvoltare ce permite evaluarea platformei de microcontrolere ce au la bază ARM® Cortex™-M4F. Acesta oferă utilizatorului posibilități de dezvoltare de progame software embedded pentru nucleul proprietate intelectuala a companiei ARM, cu toate facilitățile de compilare și dezvoltare oferite de mediul de dezvoltare software Code Composer Studio (CCS) pus la dispoziție de către Texas Instruments.

Placa de dezvoltare are următoarele caracteristici:

conține microcontrolerul Tiva TM4C123GH6PMI;

conector USB micro-A și micro-B pentru conectivitate USB device, host și on-the-go (OTG);

LED RGB ce poate fi comandat de către utilizator ;

pinii I/O conectați la șiruri de pini cu pasul de 2,54mm ;

sursa de alimentare poate fi selectată între „In Circuit Debug Interface”(ICDI) și dispozitiv USB ;

buton pentru reset ;

Figura 2.11. Placa de dezvoltare “Tiva C Series TM4C123G”(5).

Semnalul de la ieșirea blocului de condiționare a semnalului este conectat la pinul 1 al portului E de la microcontrolerului TM4C123G. Acesta este configurat ca port de intrare având funcția de intrare digitală. Nivelurile de tensiune ce pot fi interpretate de către acest pin sunt cuprinse între 0-0,8 V pentru “0” logic și 2,7-3,6 V pentru “1” logic. Aceste niveluri sunt compatibile cu cerințele pentru nivelurile semnalului de intrare ceea ce permite determinarea de către controler a nivelurilor logice de “0” sau “1” pentru semnalul de intrare ( funcția de interpretare a semnalului ).

Controlerul monitorizează valoarea logică a semnalului de intrare. Dacă aceasta trece din 0 logic in 1 logic este activat blocul de măsurare a timpului. Controlerul continuă sa monitorizeze valoarea semnalului de intrare așteptând o nouă tranziție din 0 in 1. În momentul detecției unei noi tranziții din 0 în 1 se citește valoarea stocată în blocul de măsurare a timpului și se convertește valoarea numerică în unități de timp conform relației de mai jos.

unde VMT este valoarea citită din blocul de măsurare a timpului, iar UT este unitatea de timp [ms].

Figura 2.12. Diagrama bloc a plăcii de dezvoltare “Tiva C Series TM4C123G”(5).

Unitatea de timp utilizată în această aplicație este de 10 milisecunde. Determinându-se timpul dintre două evenimente succesive se poate determina ritmul cardiac instantaneu conform relatiei de mai jos.

unde RCi reprezintă ritmul cardiac instantaneu.

Dacă valoarea ritmul cardiac instantaneu depășește valoarea de 120 bpm, iar subiectul este în repaus putem afirma că prezintă simptome de tahicardie. În cazul în care valoarea determinată este mai mică de 60 bpm există posibilitatea ca subiectul să prezinte simptome de bradicardie.

Metoda de determinare a ritmului cardiac implementată se bazează pe metoda măsurărilor succesive. În momentul în care comanda de citire a ritmului cardiac este dată, controlerul așteaptă prima tranziție din 0 în 1. Când este detectată această tranziție, blocul de măsurare a timpului este activat și se începe numărarea evenimetelor de tranziție din 0 în 1 a semnalului de intrare. În momentul în care numărătoarea ajunge la 10 se determină ritmul cardiac pentru intervalul de timp cuprins între prima tranziție și cea de a zecea tranziție cu ajutorul relației de mai jos.

unde RCink reprezintă valoarea intermediară a ritmul cardiac.

Se repetă această procedură de 3 ori realizandu-se în final o mediere a valorilor RCint1, RCint2 și RCint3 obținute.

În paralel cu tipul de determinare prezentat mai sus, ritmul cardiac se determină și pentru un număr mai mare de tranziții și anume 30. Acesta se determină cu ajutorul relației de mai jos.

Valorile pentru RCintmediu și RCint4 sunt comparate, iar în cazul în care diferența dintre cele două valori este mai mare de 1 este necesară o nouă măsurătoare. Sursa de eroare care poate determina o diferență mai mare de 1 între cele două valori este conversia din numar zecimal în număr întreg pentru valorile ritmului cardiac.

Dupa obținerea valorii ritmului cardiac ca și număr intreg, valoarea este transmisă modulului de comandă a blocului de afișare ce generează semnalele necesare pentru ca informația privind valoarea ritmului cardiac citit de la subiect să fie recepționată de către utilizatorul dispozitivului într-o formă ce poate fi interpretată.

Codul sursă pentru microlerul TM4C123GH6PMI este prezentat în anexa 1, având o structura liniara, datele de intrare sunt generate de către valorile semnalului de la ieșirea blocul de procesare a semnalului, iar valorile de ieșire sunt reprezentate fizic cu ajutorul semnalelor de comandă pentru blocul de afișare/stocare.

Blocul de afișare/stocare a rezultatului are rolul de a converti rezultatul matematic obținut de către blocul de procesare a semnalului într-o formă ce poate fi vizualizată de către utilizator. Rezultatul este afișat pe un afișaj compus din trei celule LED cu 7 segmente, și de asemenea informația este transmisă prin interfața UART („Universal Asychronous Receiver/Transmitter) spre un sistem ce suportă acest tip de interfață cu scopul de a stoca informația legată de valoarea ritmului cardiac. Monitorizarea ritmului cardiac se realizează prin evaluarea unor valori succesive obținute de către dispozitiv.

Figura 2.13. Structura blocului de afișare și conectarea acestuia cu blocul de procesare a semnalului.

Rezultatul obținut în urma determinării ritmului cardiac de către blocul de procesare a semnalului este împarțit in trei cifre, fiecare cifra este aferenta valorii sutelor, zecilor și a unităților. Aceste trei valori sunt apoi transmise secvențial blocului de afișare a rezultatului. Valorile sunt transmise în format binar, printr-o interfață constituită din patru linii de date.Semnalele de comandă generate de blocul de procesare a semnalului au rolul de a comanda afisajul LED cu 7 segmente și de a stabili ordinea de afișare a cifrelor. Informația transmisă pe cele patru linii de date este decodificată de un decodificator specializat „BCD to 7 Segments”. Acesta realizează conversia interfeței de date de la intrarea blocului într-o interfață de comandă pentru afisajele LED. Decodificatorul utilizat în această aplicație este CD4511 produs de către Texas Instruments. Principalele caracteristici ale decodificatorului sunt:

capabilitate mare pentru pinii de ieșire, până la 25 mA ;

mascarea valorilor pentru o valoare de intrare mai mare de 1001 ;

curent de intrare necesar pentru pinii de intrare foarte mic, maxim 1 µA pentru o tensiune de alimentare de 18 V;

plataja tensiunilor de alimentare acceptată curpinsă intre 3-18 V ;

Cu ajutorul acestui tip de decodificator informația transmisă în format binar poate fi ușor afișată pe un afisaj LED cu 7 segmente in configurație catod comun, pretându-se pentru acest tip de aplicație.

Felul în care se face translația din format binar la 7 segmente este prezentat în tabelul 2.1 ( tabelul de adevăr al decodificatorului CD4511) . D,C,B,A reprezintă nivelul semnalului de pe fiecare linie de date, unde D reprezintă cel mai semnificativ bit, iar A cel mai puțin semnificativ bit. În funcție de valoarea de la intrarea decodificatorului acesta stabilește valoarea tensiunii pentru fiecare pin de ieșire conform cu tabelul de adevăr.

Afișajul pe 7 segmente utilizat pentru această aplicație este ELS-515RDB-3 .

Figura 2.14. ELS-515RDB-3(7).

Tabel 2.1. Tabelul de adevăr al decodificatorului CD4511(6).

Afișajul pe 7 segmente utilizat suportă un curent maxim prin fiecare LED de 30 mA, de aceea a fost necesară introducerea unei rețele rezistive intre ieșirile decodificatorului și anozii fiecarui segment. Valoarea rezistenței utilizata este de 100Ω, ce determină un curent prin fiecare LED comandat de 15mA, suficient ca segmentul sa fie observat in condiții normale de luminozitate a mediului ambiant.

Semnalele de comandă de la ieșirea blocului de procesare a semnalului au rolul de a stabilii intervalul de timp cât fiecare afișaj LED cu 7 segmente este activ, corelând astfel informatța transmisa pe linile de date cu informația afișată. Comanda se realizează prin conectarea catodului fiecărui afisaj la linia de 0 V, astfel se închide circuitul și funcție de care segmente sunt comandate informația este afișată. Această comandă se realizează printr-un tranzistor bipolar npn BC171 care în momentul în care primește semnalul de comandă de la microcontroler intră în conducție și determină închiderea circuitului. Cele trei afisaje LED cu 7 segmente sunt comandate secvențial fiecare modul fiind activ timp de 10ms odată la 30 de ms. După determinarea ritmului cardiac informația este transmisă pe interfața UART și afișată timp de 9 secunde de către blocul constituit din cele trei afisaje LED.

Figura 2.15. Schema de principiu a interconectării CD4511 cu ELS-515RDB-3.

Transmisia datelor pe interfața UART are urmatoarele caracteristici:

baud rate 115200;

fară bit de paritate;

8 biți de date;

1 bit de stop;

CAPITOLUL 3

Prezentarea dispozitivului măsurare și monitorizare a ritmului cardiac realizat

Figura 3.1. Dispozitivul realizat pentru măsurarea și monitorizarea a ritmului cardiac.

Dispozitivul de măsurare și monitorizare a ritmului cardiac se bazează pe tehnica fotopletismografiei. Un senzor bazat pe un LED infraroșu și un fototranzistor este atașat pe degetul subiectului cu ajutorul unei cleme (figura 3.2). În momentul în care inima pulsează sângele (momentul de contracție cardiacă) vasele de la nivelul degetului se dilată, mărindu-și astfel volumul. Această variație de volum este tradusă într-o creștere a absorbției fasciculului infraroșu generat de LED și astfel fototranzistorul își mărește căderea de tensiune între colector și emitor datorită scăderii intensității fluxului luminos incident pe suprafața acestuia. Cu ajutorul unui divizor rezistiv realizat printr-o rezistență și fototranzistor, variația volumului vaselor sangvine este transformată într-o variație de tensiune.

În figura 3.2 este prezentată oscilograma obținută in urma măsurării semnalului obținut la ieșirea senzorului.

Figura 3.2. Semnalul la ieșirea senzorului.

Se poate observa că semnalul măsurat are o amplitudine vârf la vârf de ~40 mV. Peste semnalul util este suprapus un semnal de componentă spectrală ridicată (50 Hz) datorat rețelei de alimentare cu electricitate. De asemenea semnalul prezintă o componenta continuă datorată utilizarii fototranzitorului în regiunea activa. Pentru a extrage doar componenta ce transportă informație utilă se realizează o filtrare trece bandă a semnalul. Banda de trecere a filtrului proiectat este cuprinsă între 0,48 Hz și 3,3 Hz, frecvențe ce definesc plaja în care se realizează măsurarea ritmului cardiac (30 bpm și 200 bpm). Semnalul obținut în urma eliminării componentei continue se poate vedea in figura 3.4. Dupa ce este eliminată componenta continuă a semnalului, acestuia îi sunt eliminate componentele spectrale de frecvență mai mare de 3.3Hz și este amplificat cu ajutorul unui amplificator operațional in configurație neinversoare (schema de principiu este prezentată în figura 2.4).

Figura 3.3. Semnalul după filtrul trece jos.

Semnalul rezultat este prezentat în figura 3.4, unde se poate observa că semnalul rezultat are rejectată componenta de 50Hz și conține doar semnalul util.

Figura 3.4. Semnalul amplificat obținut după filtrarea trece banda.

Controlerul TM4C123GH6PMI ce realizează determinarea ritmului cardiac are pragurile nivelurilor logice intre 0-0,8 V pentru „0” logic și 2,7-3,6 V pentru „1” logic. Din acest motiv este necesară realizarea a unei amplificări adiționale pentru a se obține niveluri ale semnalului valide, astfel încat acesta să poată fi interpretat de către microcontroler. În figura 3.5 este prezentat semnalul obținut în urma celei de a doua amplificări și filtrări ( este utilizat un bloc identic de filtrare și amplificare cu cel prezentat anterior ).

Figura 3.5. Semnalul obținut la ieșirea blocului de condiționare a semnalului.

Se observă ca semnalul obținut este unul fară componenta spectrală de 50 Hz și are valorile pentru palierul inferior de ~0 V și pentru cel superior de ~3,1 V. Calitatea semnalului obținut este una foarte bună, având valori de palier stabile și timpi de creștere și scădere foarte mici ( de ordinul sutelor de µs) ceea ce permite interpretarea semnalului de către microcontroler. Frontul crescător din semnalul obținut este corelat cu momentul în care inima începe contracția și sângele este pompat în sistemul vascular determinând creșterea volumului venelor și capilarelor de la nivelul degetelor. Frontul descrescător este corelat cu momentul în care inima se relaxează permițând sângelui să intre în atrii, astfel volumul venelor și capilarelor de la nivelul degetelor scade. Pentru a determina ritmul cardiac instantaneu este suficient să determinăm intervalul de timp dintre două fronturi crescătoare ale semnalului și să împărțim la 60 această valoare. Valoarea obținută reprezintă ritmul cardiac instantaneu având ca unitate de masura bătăi pe minut.

Pentru semnalul măsurat in figura 3.5 perioada între două fronturi crescătoare consecutive este de 0.951s, ritmul cardiac în acest caz este:

Pentru a evita erorile de măsurare este indicat a se determina ritmul cardiac după o monitorizare mai indelungată a subiectului. În figura 3.6 este prezentat un semnal achiziționat pe o perioadă mai îndelungată de timp. Între cele două cursoare se află 33 de fronturi crescătoare, timpul fiind de 30s. Ritmul cardiac în acest caz este de 66 bpm.

Figura 3.6 Semnalul măsurat pe o periodă mai îndelungată de timp

De la ieșirea blocului de condiționare a semnalului, semnalul este transmis unui pin de la microcontroler. Acesta monitorizează semnalul și detectează fronturile crescătoare, determinând ritmul cardiac intermediar dupa 10 fronturi crescătoare, repetând procedura de 3 ori. După 30 de fronturi crescătoare acesta determină ritmul cardiac și îl compară cu valoarea obținută în urma medierii celor 3 valori intermediare obținute. Dacă eroarea este mai mare de 1 bpm măsuratoarea trebuie repetată.

Rezultatul obținut este afișat pe un cluster de trei afisaje LED cu 7 segmente și este de asemenea transmis prin interfața UART spre a putea fi citit, stocat și interpretat ulterior.

Figura 3.7. Mesajul afișat în urma informaților transmise pe interfața UART spre un PC.

Figura 3.8. Valoarea ritmului cardiac afișat.

CAPITOLUL 4

Rezultate experimentale obținute folosind dispozitivul de măsurare realizat

Dispozitivul de măsurare și monitorizare a ritmului cardiac se bazează pe tehnica fotopletismografiei. Pentru a valida rezultatele obținute în urma măsurătorilor este necesară utilizarea unui dispozitiv considerat etalon ce îndeplinește aceeași funcție (de măsurare a ritmului cardiac), de preferat utilizând un alt tip de metodă.

Aparatul cu care s-a realizat validarea măsurătorilor este un dispozitiv de măsurare a tensiunii arteriale și a ritmului cardiac produs ce către firma SANITAS, modelul SBC 21. Metoda de măsurare este o metodă oscilometrică, neinvazivă. Aparatul se montează pe incheietura mâinii și are o precizie de 2.5%.

Figura 4.1. Sanitas SBC 21(8).

Procedura de măsurare și validare a rezultatelor a fost următoarea:

Dispozitivul de măsurare Sanitas SBC 21 montat pe încheietura mâinii stângi. Clema cu senzorul dispozitivului de măsurare a ritmului cardiac montată pe degetul arătător al mâinii drepte. Cele două dispozitive au fost pornite simultan și rezultatele au fost trecute în tabelul 4.1. Măsurătorile au fost făcute pe trei subiecți, fiecărui subiect fiindu-i măsurat ritmul cardiac cu o pauză de 5 minute între măsurători.

Tabelul 4.1. Rezultate obținute în urma măsurătorilor.

Subiectului nr. 1 și subiectului nr. 2 ritmul cardiac măsurat a fost ritmul cardiac normal, în stare de repaus. În cazul subiectului nr. 3 măsurătoarea s-a realizat după ce acesta a realizat o activitate fizică de intensitate redusă ( urcarea scărilor unui bloc cu patru etaje ).

Se poate observa că deviația maximă față de aparatul de măsură considerat etalon este de ±1 bpm ceea validează măsurătorile efectuate cu aparatul de măsurare realizat.

CAPITOLUL 5

Concluzii

Dispozitivul de măsurare și monitorizare a ritmului cardiac este la fel de precis ca un echipament similar ce indeplineste funcții multiple ( măsurare ritm cardiac și tensiune arterială ), și poate stabili cu exactitate care este ritmul cardiac indiferent de starea de sănătate a subiectului, conectarea senzorului fiind una simplă la nivelul degetelor membrelor superioare.

Complexitatea elementelor utilizate în realizarea dispozitivului este suficient de redusă, astfel încât costul final de realizare al produsului sa fie mic (la jumătate față de cel al aparatelor de măsurare ce pot fi cumpărate din comerț) .

Datorită posibilității de vizualizare pe un afișaj a ritmului cardiac măsurat, dispozitivul poate fi utilizat pentru măsurători de rutină.

Datorită posibilității de conectare și transmitere a rezultatelor în urma măsurătorilor către un PC, dispozitivul realizat poate fi utilizat pentru monitorizarea ritmului cardiac, pentru determinarea unor disfuncții ale aparatului cardiovascular.

Bazat pe caracteristicile componentelor utilizate în realizarea dispozitivului de măsurare a ritmului cardiac, acesta poate fi utilizat în intervalul de temperatură cuprins între -40oC și +85oC.

Bibliografie:

„Sistemul cardiovascular – Electrocardiografia”, Universitatea de Medicină și Farmacie “Victor Babeș” Timișoara, Catedra de Fiziologie, http://fiziologie.umft.ro/ro/CV4.PDF

„Curs de Noțiuni de anatomia și fiziologia omului – Aparatul cardiovascular”, R. Șirli

„Target Heart Rates”, American Heart Association, 1/2015

www.embedded-lab.com

„Tiva™ C Series LaunchPad Evaluation Kit”, Texas Instruments, http://www.ti.com/tool/EK-TM4C123GXL?DCMP=stellaris-launchpad&HQS=tm4c123g-launchpad

„CD4511B Data sheet”, Texas Instruments, http://www.ti.com/lit/ds/symlink/cd4511b.pdf

„ELS-515EWA Datasheet”, EVERILIGHT, http://pdf.datasheetcatalog.com/datasheets2/14/142735_1.pdf

„Sanitas SBC 21 – wrist blood pressure monitor”, SANITAS, http://www.sanitas-online.de/web/en/products/bloodpressure/wrist/SBC21.php

„Curs de electronica medicala”, A. Vârosu, https://intranet.etc.upt.ro/~EL_MED/electronica%20medicala.pdf

(10) „Curs de Instrumentatie Biomedicala”, M. Lascu, https://intranet.etc.upt.ro/~INST_BIO/Curs/1.pdf

(11) „TCRT1000 Data sheet”, VISHAY,

http://www.vishay.com/docs/83752/tcrt1000.pdf

(12) “MCP602 Data sheet”, MICROCHIP,

http://ww1.microchip.com/downloads/en/DeviceDoc/21314g.pdf

Anexa 1. Programul dezvoltat pentru controlerul TM4C123GH6PMI

#include <stdint.h>

#include <stdbool.h>

#include "inc/hw_memmap.h"

#include "inc/hw_types.h"

#include "inc/tm4c123gh6pm.h"

#include "driverlib/debug.h"

#include "driverlib/fpu.h"

#include "driverlib/gpio.h"

#include "driverlib/pin_map.h"

#include "driverlib/rom.h"

#include "driverlib/sysctl.h"

#include "driverlib/uart.h"

#include "utils/uartstdio.h"

//configurare posibilitate debug

#ifdef DEBUG

void

__error__(char *pcFilename, uint32_t ui32Line)

{

}

#endif

//configurare UART, se va apela doar inainte ca interfata sa fie utilizata

void ConfigureUART(void)

{

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

ROM_GPIOPinConfigure(GPIO_PA0_U0RX); //RX PORTA0

ROM_GPIOPinConfigure(GPIO_PA1_U0TX); //TX PORTA1

ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 |

GPIO_PIN_1);

UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);

UARTStdioConfig(0, 115200, 16000000); // caracteristici UART

}

//functia ce introduce delay 10ms

void Delay(uint32_t ui32Seconds)

{

while(ui32Seconds–)

{

while(ROM_SysTickValueGet() > 1000)

{

}

while(ROM_SysTickValueGet() < 1000)

{

}

}

}

void main(void)

{ int bataie = 0 ; //numarator batai

int timp = 0; //valoare tim

float puls = 0; // valoare puls

int_fast32_t puls1;

int a=0, b=0;

int unitati=0;

int zeci=0;

int sute=0;

int i;

ROM_FPULazyStackingEnable();

ROM_SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |

SYSCTL_XTAL_16MHZ); // semnalul de tact utilizat 16MHz

//activare semnal tact periferice

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

ROM_SysTickPeriodSet(ROM_SysCtlClockGet()/100); //10 ms

ROM_SysTickEnable();

//definire tip GPIO

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); //blue

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1); //red

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_3);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_2);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0);

ROM_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_1);

ROM_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); //SW1

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2); //sute

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4); //zeci

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_5);

GPIO_PORTF_PDR_R = 0x00000000;

GPIO_PORTF_PUR_R = 0x000000ff;

GPIO_PORTE_PDR_R = 0x00000000;

GPIO_PORTE_PUR_R = 0x000000ff;

//apel functie configurare UART

ConfigureUART();

while(1)

{ //comanda citire puls

if ( GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4)==0)

{

//in caz de fron crescator al semnalului monitorizat se incepe numararea

if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1))

{ a=1;

UARTprintf("Citeste puls!\n");

while(puls<=30)

{

if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1))

{bataie = 1;}

else

{if(bataie==1)

{puls=puls+1;

bataie=0;

}

}

puls=puls;

timp=timp+1;

Delay(1);}

}

if(a==1)

{

//determinare puls

puls=((puls-1)*60*100)/timp;

puls1=(int32_t)puls;

//trimitere pe UART valoare sute, zeci, unitati a valorii pulsului obtinut

UARTprintf("Pulsul este de %3d bpm\n",puls1 );

sute=puls1/100;

zeci=(puls1-(sute*100))/10;

unitati=(puls1-(sute*100)-(zeci*10));

UARTprintf("Sute: %3d bpm\n",sute );

UARTprintf("Zeci: %3d bpm\n",zeci );

UARTprintf("Unitati: %3d bpm\n",unitati );

//afisare pe display-ul LED 7 segmente

for(i=0;i<=300;i++)

{ if(sute==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==2)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

if(zeci==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==2)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==4)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==5)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==6)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==7)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==8)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==9)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

if(unitati==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==2)

{

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==4)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==5)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==6)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==7)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==8)

{GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==9)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

} GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

//reinitializare variabile

puls1=0;

puls=0;

timp=0;

bataie=0;

a=0;

}

}

//in cazul in care nu apare comanda de citire este transmis mesajul in care se cere

//apasarea butonului

else

{ if(b==0)

{UARTprintf("apasati butonul de citire!\n");

Delay(100);}

b=b+1;

Delay(10);

if(b==40)

b=0;

}

}

Anexa 2. Prezentarea microcontrolerului TM4C123GH6PMI(5)

Anexa 3. Prezentarea senzorului TCRT1000(11)

Anexa 4. PRezentarea amplificatorului operational MCP602 utilizat(12)

Anexa 5 Prezentarea decodificatorului CD4511 utilizat

Anexa 6 Prezentarea afisajului LED cu 7 segmente utilizat

Bibliografie:

„Sistemul cardiovascular – Electrocardiografia”, Universitatea de Medicină și Farmacie “Victor Babeș” Timișoara, Catedra de Fiziologie, http://fiziologie.umft.ro/ro/CV4.PDF

„Curs de Noțiuni de anatomia și fiziologia omului – Aparatul cardiovascular”, R. Șirli

„Target Heart Rates”, American Heart Association, 1/2015

www.embedded-lab.com

„Tiva™ C Series LaunchPad Evaluation Kit”, Texas Instruments, http://www.ti.com/tool/EK-TM4C123GXL?DCMP=stellaris-launchpad&HQS=tm4c123g-launchpad

„CD4511B Data sheet”, Texas Instruments, http://www.ti.com/lit/ds/symlink/cd4511b.pdf

„ELS-515EWA Datasheet”, EVERILIGHT, http://pdf.datasheetcatalog.com/datasheets2/14/142735_1.pdf

„Sanitas SBC 21 – wrist blood pressure monitor”, SANITAS, http://www.sanitas-online.de/web/en/products/bloodpressure/wrist/SBC21.php

„Curs de electronica medicala”, A. Vârosu, https://intranet.etc.upt.ro/~EL_MED/electronica%20medicala.pdf

(10) „Curs de Instrumentatie Biomedicala”, M. Lascu, https://intranet.etc.upt.ro/~INST_BIO/Curs/1.pdf

(11) „TCRT1000 Data sheet”, VISHAY,

http://www.vishay.com/docs/83752/tcrt1000.pdf

(12) “MCP602 Data sheet”, MICROCHIP,

http://ww1.microchip.com/downloads/en/DeviceDoc/21314g.pdf

Anexa 1. Programul dezvoltat pentru controlerul TM4C123GH6PMI

#include <stdint.h>

#include <stdbool.h>

#include "inc/hw_memmap.h"

#include "inc/hw_types.h"

#include "inc/tm4c123gh6pm.h"

#include "driverlib/debug.h"

#include "driverlib/fpu.h"

#include "driverlib/gpio.h"

#include "driverlib/pin_map.h"

#include "driverlib/rom.h"

#include "driverlib/sysctl.h"

#include "driverlib/uart.h"

#include "utils/uartstdio.h"

//configurare posibilitate debug

#ifdef DEBUG

void

__error__(char *pcFilename, uint32_t ui32Line)

{

}

#endif

//configurare UART, se va apela doar inainte ca interfata sa fie utilizata

void ConfigureUART(void)

{

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

ROM_GPIOPinConfigure(GPIO_PA0_U0RX); //RX PORTA0

ROM_GPIOPinConfigure(GPIO_PA1_U0TX); //TX PORTA1

ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 |

GPIO_PIN_1);

UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);

UARTStdioConfig(0, 115200, 16000000); // caracteristici UART

}

//functia ce introduce delay 10ms

void Delay(uint32_t ui32Seconds)

{

while(ui32Seconds–)

{

while(ROM_SysTickValueGet() > 1000)

{

}

while(ROM_SysTickValueGet() < 1000)

{

}

}

}

void main(void)

{ int bataie = 0 ; //numarator batai

int timp = 0; //valoare tim

float puls = 0; // valoare puls

int_fast32_t puls1;

int a=0, b=0;

int unitati=0;

int zeci=0;

int sute=0;

int i;

ROM_FPULazyStackingEnable();

ROM_SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |

SYSCTL_XTAL_16MHZ); // semnalul de tact utilizat 16MHz

//activare semnal tact periferice

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

ROM_SysTickPeriodSet(ROM_SysCtlClockGet()/100); //10 ms

ROM_SysTickEnable();

//definire tip GPIO

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); //blue

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1); //red

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_3);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_2);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1);

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0);

ROM_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_1);

ROM_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); //SW1

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2); //sute

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4); //zeci

ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_5);

GPIO_PORTF_PDR_R = 0x00000000;

GPIO_PORTF_PUR_R = 0x000000ff;

GPIO_PORTE_PDR_R = 0x00000000;

GPIO_PORTE_PUR_R = 0x000000ff;

//apel functie configurare UART

ConfigureUART();

while(1)

{ //comanda citire puls

if ( GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4)==0)

{

//in caz de fron crescator al semnalului monitorizat se incepe numararea

if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1))

{ a=1;

UARTprintf("Citeste puls!\n");

while(puls<=30)

{

if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1))

{bataie = 1;}

else

{if(bataie==1)

{puls=puls+1;

bataie=0;

}

}

puls=puls;

timp=timp+1;

Delay(1);}

}

if(a==1)

{

//determinare puls

puls=((puls-1)*60*100)/timp;

puls1=(int32_t)puls;

//trimitere pe UART valoare sute, zeci, unitati a valorii pulsului obtinut

UARTprintf("Pulsul este de %3d bpm\n",puls1 );

sute=puls1/100;

zeci=(puls1-(sute*100))/10;

unitati=(puls1-(sute*100)-(zeci*10));

UARTprintf("Sute: %3d bpm\n",sute );

UARTprintf("Zeci: %3d bpm\n",zeci );

UARTprintf("Unitati: %3d bpm\n",unitati );

//afisare pe display-ul LED 7 segmente

for(i=0;i<=300;i++)

{ if(sute==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==2)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(sute==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

if(zeci==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==2)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==4)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==5)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==6)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==7)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==8)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

else if(zeci==9)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_PIN_4);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

Delay(1);

}

if(unitati==0)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==1)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==2)

{

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==3)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==4)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==5)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==6)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==7)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==8)

{GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

else if(unitati==9)

{ GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);

Delay(1);

}

} GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);

GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

//reinitializare variabile

puls1=0;

puls=0;

timp=0;

bataie=0;

a=0;

}

}

//in cazul in care nu apare comanda de citire este transmis mesajul in care se cere

//apasarea butonului

else

{ if(b==0)

{UARTprintf("apasati butonul de citire!\n");

Delay(100);}

b=b+1;

Delay(10);

if(b==40)

b=0;

}

}

Anexa 2. Prezentarea microcontrolerului TM4C123GH6PMI(5)

Anexa 3. Prezentarea senzorului TCRT1000(11)

Anexa 4. PRezentarea amplificatorului operational MCP602 utilizat(12)

Anexa 5 Prezentarea decodificatorului CD4511 utilizat

Anexa 6 Prezentarea afisajului LED cu 7 segmente utilizat

Similar Posts

  • Anatomia Si Fiziologia Sistemului Nervos Central

    CUPRINS CAPITOLUL I – ANATOMIA ȘI FIZIOLOGIA SISTEMULUI NERVOS CENTRAL CAPITOLUL II – NOȚIUNI GENERALE DESPRE BOALĂ 2.1 Scurtă definiție 2.2 Etiologie 2.3 Patogenie 2.4 Factori de risc 2.5. Complicații și pronostic 2.6. Metode de investigare 2.7. Tratament CAPOTOLUL III – ROLUL ASISTENTEI MEDICALE ÎN PREGATIREA BOLNAVULUI PENTRU EXPLORĂRILE CLINICE ȘI PARACLINICE CAPITOLUL IV –…

  • Obtinerea Unei Forme Proteice cu Actiune de Regenerare Tisulara Si cu Proprietati Antimicrobiene

    Cuprins Tema de disertație Preambul Capitolul I – Stadiul actual al cunoașterii Capitolul II – Biopolimeri naturali. Structură și proprietăți fizico-mecanice II.1. Biopolimeri de origine animală II.1.1. Colagenul II.1.2. Proteinele din albușul de ou II.1.2.1. Ovalbumina II.1.2.2. Ovotransferina II.1.2.3. Lizozimul II.2. Procedee de extracție și purificare a formelor proteice II.2.1. Extracția și purificarea formelor colagenice…

  • Tratamentul Ischemiei Critice a Membrelor

    Cuprins Abrevieri și simboluri INTRODUCERE 1 PARTEA GENERALĂ 1.1 Generalităti 1.2 Factorii de risc ai aterosclerozei 1.3 Ischemia critică de membre inferioare 1.3.1 Istoric 1.3.2 Definiții 1.3.3 Clasificare 1.3.4 Epidemiologie 1.3.5 Tabloul clinic 1.3.6 Evoluție și prognostic 1.3.7 Teste vasculare neinvazive 1.3.8 Tehnici imagistice 1.3.9 Tratamentul ischemiei critice a membrelor 1.4 Abordul multidisciplinar 1.4.1 Introducere…

  • Refacerea Functiilor A.d.m Prin Proteza Totala LA Pacientii Tineri

    REFACEREA FUNCȚIILOR A.D.M PRIN PROTEZĂ TOTALĂ LA PACIENȚII TINERI CUPRINS: CAPITOLUL I INTRODUCERE Instalarea edentației totale reprezintă un moment de cumpănă în viața pacientului respectiv. Fie că apare edentației totale mandibulară și apoi cea maxilară, momentul în sine este descris de pacient ca un moment de panică, de neputință funcțională, de declin psiho-social. Mandibula prevăzută…

  • Capitolul I Fundamentare teroretică

    LUCRARE DE DISERTAȚIE Cuprins Introducere Capitolul I Fundamentare teroretică 1.1 Criterii de diagnostic 1.2 Cauze 1.2.1 Factorii genetici 1.2.2 Factorii de mediu 1.3.Diagnostic 1.4. Evaluarea competențelor sociale 1.5.Implicațiile ADHD în plan personal, profesional și social 1.6.Demersul terapeutic în cazul copiilor cu ADHD 1.6.1.Modificarea comportamentală 1.6.2.Managementul educațional 1.6.3.Medicamente 1.6.3.1.Efectele secundare ale medicamente stimulante 1.6.3.2 Reacții adverse…

  • Leucemiile Acute

    CUPRINS CAPITOLUL Ι – SERIA LEUCOCITARA ………………………………………………………………….1 Seria granulocitara ………………………………………………………………………………………….1 Structura granulocitelor …………………………………………………………………………………. 2 Cinetica granulocitelor ……………………………………………………………………………………5 Granulopoieza ……………………………………………………………………………………………….7 Functiile granulocitelor …………………………………………………………………………………..7 Seria monocitara………………………………………………………………………………………………..8 Morfologia si structura monocitelor …………………………………………………………………9 Ciclul de viata ………………………………………………………………………………………………..9 Functiile monocitelor ……………………………………………………………………………………..10 Seria limfoplasmocitara ……………………………………………………………………………………..11 Tipuri morfologice ………………………………………………………………………………………..11 Cinetica limfocitelor ………………………………………………………………………………………11 Rolul limfocitelor ………………………………………………………………………………………….12 CAPITOLUL ΙΙ – LEUCEMIILE ACUTE …………………………………………………………..13 2.1….