Sunteți pe pagina 1din 10

Universitarea din Pitesti

Master SECPI




Proiect
Senzori si actuatori in procesele industriale







Profesor coordonator: Monica Anca Chita


Studenti: Bilcan Costinel
Ispas Cristian
Tanasescu Claudiu











Senzor pentru detectarea ritmului cardiac












Poza de ansamblu a machetei








Prezentarea proiectului

Titlul temei: Sistem pentru detectarea pulsului cardiac.
Masurarea ritmului cardiac reprezinta ecoul sistemului cardiovascular uman. Acest
proiect demonstreaza o tehnica de masurare a pulsului inimii prin detectarea schimbarii
volumului de sange din arterele unui deget in timp ce inima pompeaza sange. Proiectul consta
intr-o dioda infrarosu ce transmite un semnal infrarosu prin varful degetului, o parte din acesta
fiind reflectat de celulele sangelui. Semnalul reflectat este detectat de o fotodioda. Schimbarea
volumului de sange cu fiecare bataie a inimii rezulta intr-un tren de impulsuri la iesirea
fotodiodei, a carei magnitudine este prea mica pentru a fi detectata direct de catre
microcontroller. Prin urmare o amplificare in doua etaje, cu un filtru trece jos este proiectat
folosind doua amplificatoare operationale pentru a filtra si amplifica semnalul pana la nivelul
de tensiune adecvat astfel incat impulsurile sa poata fi contorizare de un microcontroller.
Ritmul cardiac este afisat pe un ecran LCD 16X2 de tip PC1602A. Microcontrollerul folosit
in acest proiect este PIC16F648A.
LCD-ul este un dispozitiv de iesire care primeste informatie de la microcontroller.
Afisajul este limitat doar la reprezentarea textului monocrom si este intalnit in mod frecvent la
copiatoare, fax, imprimante si alte dispozitive de uz comun.

Teorie
Ritmul cardiac reprezinta numarul de batai ale inimii pe o unitate de timp si de obicei
este exprimata in batai pe minut (bpm). La adulti o inima normala bate de aproximativ 60
pana la 100 de ori pe minut in conditii de odihna. Pulsul unei inimi odihnite este legat in mod
direct de sanatatea si conditia fizica a unei persoane si din aceasta cauza este important de
stiut. Senzorul consta intr-o dioda emitatoare de lumina infrarosie si o fotodioda, plasate una
langa cealalta.
Diode IR transmite o lumina infrarosie in varful degetului (plasat peste senzor), si
fotodioda simte portiunea de lumina ce este reflectata. Densitatea luminii reflectate depinde
de volumul de sange din varful degetului. Deci, fiecare bataie a inimii modifica usor
cantitatea de lumina infrarosie reflectata ce poate fi detectata de fotodioda. Cu o conditionare
corecta a semnalului aceasta schimbare minora in amplitudinea luminii reflectate poate fi
convertita intr-un puls. Pulsurile pot fi mai tarziu numarate de catre microcontroller pentru a
determina ritmul cardiac.
In primul rand, ce este o fotodioda?
O fotodioda este un fotodetector capabil sa converteasca lumina in tensiune sau curent.
Ce inseamna asta? Ca in functie de intensitatea si lungimea de unda a radiatiei noastre,
fotodioda ne da un raspuns in tensiune (fotodioda in regim fotovoltaic) sau curent (regim
fotoconductiv).

Schema
Circuitul de conditionare al semnalului consta in 2 filtre active trece jos identice cu o
frecventa de taiere de aproximativ 2,5 Hz. Acest lucru inseamna ca ritmul cardiac maxim
masurabil este de aproximativ este de aprox 150 bpm. Amplificatorul operational folosit in
acest circuit este LM324N, un amplificator operational ce contine patru amplificatoare
operationale. Amplificatorul functioneaza de la o singura sursa de alimentare de 5V. Filtrarea
realizata la intrarea in amplificatoare este necesara pentru a bloca zgomotul de frecvente inalte
50 Hz. Castigul in tensiune al fiecarui filtru, pe fiecare etaj de amplificare, este de 101.
Rezultand o amplificare totala de aproximativ 10000. Este necesara utilizarea unui
condensator de 1 uF la intrarea fiecarui etaj de amplificare pentru a bloca component continua
din semnal. Ecuatiile pentru calcularea castigului si frecventei de taiere corespunzatoare
filtrului trece jos activ sunt prezentare in continuare:



Etaj de preluare a semnalului de la senzor si amplificarea acestuia.





Schema bloc a microcontroller-ului si circuitele adiacente ale acestuia (LCD si Buton Start )

Afisajul LCD folosit in cadrul acestui proiect este unul ce poate afisa 16 caractere pe 2
linii. Modul folosit pentru comunicarea cu acesta a fost pe 4 biti deoarece PIC-ul nu dispunea
de un numar foarte mare de pini. Pentru functionarea corecta a LCD-ului s-a folosit modul de
conectare afisat in imaginea de mai sus. Am folosit un potentiometru pentru reglarea
contrastului afisajului.

Modul de functionare al senzorului:

Lista materialelor folosite :

- Microcontroller PIC16F648A
- OpAmp LM324N
- LCD 16x2
- Tranzistor BC547
- Un buton cu 2 stari (On/Off)
- Potentiometru 50K Ohm
- Placa PCB
- Baterie 9V
- Cabluri
- Mufa alimentare
- Dioda IR
- Fotodioda IR (Senzorul IR)
- 2x Condensatoare 100nF
- 2x Condensatoare electrolitice 1uF
- 2x Rezistor 680k
- 2x Rezistor 68k
- 2x Rezistor 6,8k
- Rezistor 10K
- Rezistor 1K
- Rezistor 150 Ohm
- Rezistor 33K
- Rezistor 470 Ohm
- Led











Codul sursa:
// Variabile ce reprezinta pinii conectati la LCD

sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;

// Variabile ce definesc directionalitatea pinilor;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;

// Variabile ce reprezinta restul pinilor folositi in proiect (Dioda IR, Buton Start, Citire date senzor IR);

sbit IR_Tx at RA3_bit;
sbit DD0_Set at RA2_bit;
sbit DD1_Set at RA1_bit;
sbit DD2_Set at RA0_bit;
sbit start at RB7_bit;

// Variabile folosite in functiile programului;

unsigned int pulserate, pulsecount;
unsigned int i, t, j;
unsigned char txt[3];

// functii delay folosite pentru a pune microcontroller-ul in asteptare dupa setarea unor configuratii;

void delay_debounce(){
Delay_ms(300);
}

void delay_refresh(){
Delay_ms(5);}

// Functie de numarare pulsuri prin furnizarea de semnal catre dioda IR si citirea semnalului de la
senzorul IR

void countpulse(){
IR_Tx = 1;
delay_debounce();
TMR0=0;
Delay_ms(1000); // Delay 1 Sec
IR_Tx = 0;
pulsecount = TMR0;
pulserate = pulsecount*4;
}

// Functie de afisare a pulsului pe LCD
void display1(unsigned int x)
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
IntToStr(x,txt);
Lcd_Out_CP("Pulse :");
Lcd_Out_CP(txt);
}

// Functia principal

void main()
{

// Parte de configurare a microcontroller-ului

CMCON = 0x07; // Disable Comparators
TRISA = 0b00110000; // RA4/T0CKI input, RA5 is I/P only
TRISB = 0b10000000; // RB7 input, rest output
OPTION_REG = 0b00101000; // Prescaler (1:1), TOCS =1 for counter mode
pulserate = 0;
j = 1;

// Parte de configurare si initializare a LCD-ului folosind functii implementate in cadrul compilatorului

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);

// Afisare initiala a pulsului inainte de a fi citit;

display1(pulserate);

// Bucla infinita in care programul citeste starea butonului de start iar daca acesta este apasat ruleaza
functia de citire a pulsului si o afiseaza;

do {
if(!start)
delay_debounce();
if (!start){
countpulse();
j= 3;
display1(pulserate);
}
} while(1); // Infinite loop

}
Bibliografie:

- http://embedded-lab.com/blog/?p=5508
- http://www.engineersgarage.com/electronic-components/16x2-lcd-module-datasheet
- http://ww1.microchip.com/downloads/en/DeviceDoc/40044E.pdf
- http://pdf1.alldatasheet.com/datasheet-pdf/view/27228/TI/LM324N.html
- http://en.wikipedia.org/wiki/Light-emitting_diode
- http://en.wikipedia.org/wiki/Photodiode

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