Você está na página 1de 4

Sistema sensor de Pulso Cardiaco.

Principio de funcionamiento.

Para el funcionamiento, se observa que una luz intensa puede atravesar el dedo, sin embargo
al momento en que el corazón bombea sangre hacia el dedo, la concentración de sangre en el
dedo sube y baja con el ritmo de bombeo, este aumento de concentración se traduce en una
disminución de la luz que logra atravesar el dedo.

Aprovechamos este hecho para fijar un sensor de luz a un lado del dedo y una fuente de luz
que sería un led en el otro lado.

Para el sensor de Luz puede usarse un LDR o un fototransistor infrarrojo.

Empleamos el siguiente circuito para generar la señal.

La señal captada es de bajo voltaje por lo que es amplificada y finalmente pasa por un
comparador con un potenciómetro de referencia, así estableceremos un 1 en diástole (corazón
relajado menor concentración de sangre en el dedo y por lo tanto más voltaje) y 0 en sístole.
LOGICA DE CONTROL.

Usaremos la interrupción del pin b0 para detectar los flancos de subida de la señal, cada flanco
representara un ciclo de latido, mediante una pausa detendremos el programa principal para
que la interrupción cuente los latidos durante 5 segundos, después de lo cual multiplicaremos
el valor medido por 12 para obtener el número de latidos en un minuto, pues es la medida que
manejan los doctores para dicha característica.

El resultado es mostrado en una pantalla lcd 2x16

#include <16f886.h>

#fuses intrc_io,nowdt,nolvp,nomclr,nobrownout

#use delay(clock=4M)

#define LCD_RS_PIN PIN_c1 ////

#define LCD_RW_PIN PIN_c2

#define LCD_ENABLE_PIN PIN_c3 ////

#define LCD_DATA4 PIN_c4 ////

#define LCD_DATA5 PIN_c5 ////

#define LCD_DATA6 PIN_c6 ////

#define LCD_DATA7 PIN_c7

#include <lcd.c>

int pulsos=0,p;

#int_ext // inicio de funcion de interrupcion a realizar

void funcion()

{ pulsos++;//crece con cada pulso captado

output_toggle(pin_b7); // cambia el valor de pin_b7

void main(){

// cmcon=7; // declarando I/O como digitales.

set_tris_b(0b00000001); // b0 como entrada

enable_interrupts(int_ext); // activa el tipo de interrupcion ( externa por rb0)

ext_int_edge(L_TO_H); // flanco de activacion de interrupcion subida, un flanco por cada


latido
enable_interrupts(global); // activa interrupciones generales

lcd_gotoxy(5,1); // posiciona la ubicación

printf(lcd_putc," DETECTOR CARDIACO "); // titulo de inicio

delay_ms(1000);

printf(lcd_putc,"\f");//limpia la pantalla

while(true)

lcd_gotoxy(5,1); // posiciona la ubicacion

printf(lcd_putc," RITMO CARDIACO"); // cadena de caractres

lcd_gotoxy(1,2); // posiciona la ubicacion fila2,posicion4

printf(lcd_putc," MIDIENDO...."); //TOMAREMOS UN LAPSO DE 5 SEGUNDOS PARA TOMAR


PULSOS, CON ESE NUMERO CALCULAREMOS EL TOTAL EN UN MINUTO

pulsos=0,

delay_ms(5000);

p=pulsos; //captura los pulso contados para que la interrupcion no afecte la medida
despues del tiempo establecido

p=p*12; //de 5 a 60,

printf(lcd_putc,": %3u :latidos/min ",p);

delay_ms(2000);//pausa para visualizar los datos

Você também pode gostar