64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

24
DISEÑO E IMPLEMENTACIÓN DE UN ELECTROCARDIOGRAMA UTILIZANDO UN DSPIC FERNANDO PÁEZ PEREZ [email protected] PRESENTADO A: Ing. CARLOS ALBERTO VERA ROMERO GRUPO A UNIVERSIDAD DE PAMPLONA FACULTAD DE INGENIERÍAS Y ARQUITECTURA PROGRAMA DE INGENIERÍA ELECTRÓNICA PAMPLONA N. S. COLOMBIA JUNIO 2010

Transcript of 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Page 1: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

DISEÑO E IMPLEMENTACIÓN DE UN ELECTROCARDIOGRAMA

UTILIZANDO UN DSPIC

FERNANDO PÁEZ PEREZ

[email protected]

PRESENTADO A:

Ing. CARLOS ALBERTO VERA ROMERO

GRUPO A

UNIVERSIDAD DE PAMPLONA FACULTAD DE INGENIERÍAS Y ARQUITECTURA

PROGRAMA DE INGENIERÍA ELECTRÓNICA PAMPLONA N. S. COLOMBIA

JUNIO 2010

Page 2: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

INTRODUCCIÓN

A continuación, se da una visión sobre el diseño e implementación de un

electrocardiograma (ECG) basado en un procesador digital de señales (PDS),

resaltando sus principales características y resultados obtenidos.

El dispositivo implementado se encarga de tomar las señales provenientes de la

superficie corporal, amplificarla, acondicionarla, filtrarla y visualizarlas en un PC

mediante el desarrollo de una interfaz creada en Matlab R2009a. Las conexiones

del aparato son de tal manera que una deflexión hacia arriba indica un potencial

positivo y una deflexión en posición hacia abajo indica un potencial negativo.

Page 3: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

DESARROLLO

GENERALIDADES El corazón y su actividad eléctrica El corazón es el músculo más importante del cuerpo. Su función es la de bombear la sangre al resto del cuerpo. Está dividido en dos mitades: izquierda y derecha. Y cada mitad tiene dos cavidades, aurícula y ventrículo, separados a su vez por unas válvulas que permiten que la sangre sólo circule en un sentido.

Fig.1 Cavidades cardiacas

El potencial eléctrico es generado por un pequeño grupo de células de la siguiente

forma:

1) El impulso eléctrico se genera en el Nodo Sinosal o sinoauricular (S.A.), que

se encuentra en la parte posterior-superior de la aurícula derecha. Tiene

forma ovalada y es de dimensiones considerables. Desde este nodo, el

impulso eléctrico se desplaza a través de las aurículas por dos vías

internodales produciéndose así la contracción auricular.

2) A continuación la onda llega al Nodo Auriculoventricular (AV) donde se

detiene aproximadamente 0,1s.

3) Para continuar a través de unas fibras que hacen de puente entre el nodo

auriculoventricular y las ramas ventriculares. Dichas fibras se denominan

Haz de His.

Page 4: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

4) ) El haz de His se divide en dos Ramas de His (derecha e izquierda) para

llevar el estímulo eléctrico a los dos ventrículos.

5) Las dos ramas se subdividen en las denominadas Fibras de Purkinje

situadas en las paredes ventriculares.

Fig.2 Elementos de distribución eléctrica del corazón

El Electrocardiograma

El electrocardiograma es la representación grafica que se obtiene al medir la

actividad eléctrica del corazón de una manera continua. Es un método rápido,

simple e indoloro en el cual se amplifican los impulsos eléctricos, relacionados con

la contracción del corazón.

Page 5: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

El electrocardiograma es el elemento principal de la electro-física cardíaca y tiene

una función relevante en el diagnóstico de enfermedades y anomalías

cardiovasculares, como por ejemplo:

- Un defecto del miocardio

- Defectos congénitos

- Enfermedad de la válvula cardíaca

- Arritmias

-Taquicardia/Bradicardia. Frecuencia cardíaca muy rápida y muy lenta

respectivamente

- Enfermedad de la arteria coronaria

- Un ataque cardíaco anterior

- Un ataque cardíaco inminente

La frecuencia cardíaca normal de un adulto es de entre 50 y 100 pulsaciones por

minuto con un ritmo constante y uniforme.

La señal ECG representa la corriente eléctrica que circula a través del corazón

durante el latido de éste. Cada parte de la señal está dividida en las siguientes

ondas e intervalos:

Fig.3 Señal ECG

Onda P: Nos indica que se está realizando la contracción auricular para bombear la

sangre hacia los ventrículos. Tanto la aurícula izquierda como la derecha se contraen

simultáneamente. La duración de esta onda suele ser inferior a los 100ms y su amplitud

está entre 0,1mV y 0,5mV. Las ondas P irregulares o inexistentes pueden provocar una

arritmia.

Page 6: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Ondas Q, R, S: Este grupo de ondas QRS representa la corriente eléctrica encargada de

la contracción de los ventrículos derecho e izquierdo para bombear la sangre hacia las

arterias. Es la onda de mayor magnitud de toda la señal y su duración puede variar entre

60ms y 100ms. Las anormalidades en este grupo de ondas pueden indicar taquicardia

ventricular, hipertrófia ventricular, pericarditis u otra clase de anomalías.

Onda T: Representa la señal eléctrica de recuperación o descontracción de los

ventrículos. Es una onda positiva de una amplitud que no supera los 0,6mV.

Onda U: Corresponde a la despolarización de las fibras de Purkinje. Su amplitud es

relativamente baja y pasa desapercibida en la mayoría de los casos.

DISEÑO DE LA TARJETA

El diseño de la tarjeta se basa en el siguiente diagrama en bloques el cual está formado

por:

Fig.4 Diagrama en bloques de la tarjeta.

1. Protección al paciente

Con el fin de proteger al paciente frente a picos de corriente provenientes del

circuito, se han situado dos resistencias a la entrada de los electrodos. En este

Page 7: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

caso, la corriente máxima se ha limitado a 30 μA para un valor de alimentación de

3 V.

Fig.4 Circuito de protección.

El varistor se encarga de proteger al paciente frente a picos de tensiones que pudieran

proceder de la red eléctrica.

2. Amplificador de instrumentación

Esta etapa consiste en el diseño de un amplificador de instrumentación para la

señal ECG ya que es una señal muy débil que se encuentra comprendida entre

0.5mV hasta 5mV con un componente en DC por encima de 300mV.

El amplificador de instrumentación está diseñado a base de amplificadores

operacionales TL084 como lo muestra la figura 5.

Fig.5 Amplificador de instrumentación.

Page 8: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Calculamos la ganancia del circuito:

G = R5/R4 (1+2R2/RG) (1)

G= 100k/10k (1+2(100k)/1k)

G= 2010

Fig.6 Salida del amplificador de instrumentación.

La figura 6 muestra un ejemplo de una señal sinusoidal amplificada 2010 veces,

es decir la señal de entrada a 1mVpp de la figura 5 es ahora igual a 2Vpp.

3. Circuito de offset

La señal amplificada tiene dos componentes: la señal ECG y un offset que nos ha introducido el amplificador de instrumentación. Para el procesado de la señal de ECG el offset no nos interesa con lo cual tenemos que eliminarlo. Para quitar dicha componente hemos implementado un amplificador operacional configurado como sumador el cual se observa en la figura 7.

Page 9: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Fig.7 Circuito OFFSET.

Fig.8 Salida del circuito OFFSET.

En la figura 8 se muestra la respuesta del circuito offset ante una señal sinusoidal de

entrada la cual es montada en un nivel DC quedando así una señal UNIPOLAR.

El segundo bloque del circuito está formado por un amplificador inversor con una

ganancia igual a uno, cuya función es la de recuperar la fase de la señal original.

4. Procesador digital de señales (DSP)

El procesador digital de señales (DSP) tiene como función ejecutar un algoritmo

para modificar la señal de entrada. Además necesita de dos tareas fundamentales:

Page 10: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

1- Muestreo de la señal: Simplemente parte de una señal o magnitud

analógica continúa y genera en la salida una secuencia de valores

discretos, comúnmente llamado ADC.

2- Reconstrucción de la señal: En su entrada recibe la señal filtrada del DSP y

la convierte en una señal analógica mediante un proceso de reconstrucción

realizado por un convertidor digital-analógico (DAC).

El algoritmo implementado tiene como función principal: muestrear la señal

analógica en una serie de pulsos, aplicar un filtro digital para la eliminación del

ruido de la señal ECG, enviar la señal resultante hacia la entrada de un DAC.

Para llevar a cabo estos procesos se utilizó un DSP de la familia MICROCHIP:

dsPIC30F4012 cuya configuración de pines se muestra en la figura 9.

Fig.9 Diagrama de pines del dsPIC30F4012

Dentro de las características más importantes de este dispositivo encontramos:

- Posibilidad de trabajar a 16Bits

- 6 canales PWM

- Conversor A/D de 10Bits

- Cristal de 4-10MHZ con PLL activo (4x, 8x, 16x)

- 1Kbyte de memoria EEPROM

- Controlador de bus SPI y I2C

- Capaz de implementar FFT y filtros digitales

- 2 módulos UART

Page 11: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

6. Conversor digital a análogo (DAC)

Se encarga básicamente de convertir una entrada digital binaria a una señal

analógica. Para el diseño de la tarjeta se utilizó un DAC de la familia MICROCHIP:

MCP4821 mostrado en la figura 10.

Fig.10 Diagrama de pines del MCP4821

Las características más destacadas de este dispositivo son las siguientes:

- Resolución de 12Bit

- Interface SPI

- Voltaje de referencia (Vref) interno.

- Rango de alimentación de 2.7V-5.5V

7. Amplificador

Tiene como función principal incrementar en magnitud la señal ECG filtrada

proveniente del conversor digital a análogo.

Fig.11 Amplificador

Page 12: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

De la figura 11 podemos observar que salida del DAC está conectada a un

amplificador inversor con una ganancia igual a 2.5. La salida anterior es conectada

a un último amplificador inversor con ganancia variable.

8. Tarjeta de adquisición de datos (DAQ)

La función principal de la tarjeta de adquisición de datos es obtener información

de variables físicas para luego ser procesadas, supervisadas y manipuladas

dentro de un proceso.

El uso de esta tarjeta se debe a que el diseño se realizó y probo sobre un portátil

el cual solo contiene puertos USB. Recordemos que el DSP utilizado solo posee

salidas UART.

La tarjeta fue diseñada e implementada con un anteriormente en otro curso y es

aprovechada para muestrear la señal ECG filtrada proveniente del DSP.

SENSORES

Para la captación de la señal ECG atreves de la superficie corporal se utilizaron

electrodos de broche (tipo adulto) como se observa en la figura 12.

Fig.12 Electrodos

La figura 13 representa la ubicación cada una de los electrodos y etiquetados de la siguiente manera: un electrodo irá al brazo derecho (RA), otro electrodo irá en el

Page 13: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

brazo izquierdo (LA) y un último electrodo que servirá como referencia irá a la pierna derecha (RL).

Fig.13 Ubicación de los electrodos.

DISEÑO DEL FILTRO EN MATLAB

La señal de ECG tiene componentes relevantes solo entre 0,05 Hz y 130 Hz, por

lo tanto nuestro circuito solo debe dejar pasar las señales que se encuentren en

este rango.

Necesitamos realizar un filtro pasa-banda con frecuencias de corte de 0,05 Hz

hasta 130 Hz. El filtro fue realizado en Matlab R2009a de la siguiente manera:

%%Diseño del filtro PASABANDA: F1=0.05,F2=130

%%Fs=500 -->Frec. de Muestreo

%%Wn = [W1 W2] frecuencia de corte en radianes

N=1; %%orden del filtro=2 ya que para el diseño del filtro pasa-banda la función

%%%%butter retorna un orden igual a 2N entre W1 < W < W2.

W1=0.0002; %W1=0.005/(Fs/2) frec. Corte F1

W2=0.52; %W2=130/(Fs/2) frec. Corte F2

Wn=[W1 W2]; %% Fc1 y Fc2

[B,A] = BUTTER(N,Wn,'bandpass') %%filtro IIR butterwoth

freqz(B,A,50,500); %%Muestra la respuesta en frecuencia del filtro

Page 14: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

%%coeficientes del filtro:

B = 0.5156 0 -0.5156

A = 1.0000 -0.9682 -0.0311

Fig.14 Respuesta en frecuencia del filtro pasa-banda.

La figura 14 representa la respuesta en frecuencia del filtro implementado.

También se observa que la respuesta es un poco inestable para frecuencias de

corte: 0.05 HZ y en la gráfica es casi que despreciable. La razón de utilizar un filtro

IIR en la aplicación es el poco gasto computacional que exige ya que para filtros

IIR el orden es igual de bajo que un filtro analógico.

DISEÑO DEL FILTRO EN EL DSP

Los filtros IIR están basados en una estructura bi-cuadrática con elementos de

retraso denotados: hz-1 como el cual se encuentra en la función de transferencia

de forma general denotada como:

Page 15: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Y su estructura bi-cuadrática a manera de bloques es:

Coeficientes obtenidos en Matlab R2009a:

B = 0.5156 0 -0.5156

A = 1.0000 -0.9682 -0.0311

Función de transferencia:

Armando la ecuación en diferencias:

Y(n) = 0.5156x(n) – 0.5156x(n-2)+0.9682y(n-1)+0.0311y(n-2)

El compilador utilizado para la programación del DSP es el PCW de la casa CCS

Inc. El algoritmo se basa en obtener la señal ECG con ruido, luego muestrearla en

una serie de pulsos, aplicar el filtro pasa-banda y luego enviarla de forma digital

hacia el DAC.

//Algoritmo en CCS por correo

ALGORITMO DE LA TARJETA DAQ

//Programa en PCW CCS

#include <18F2550.h> //selección del microntrolador

#device adc=8 //Resolución del ADC

#fuses //configuración de bits

HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VRE

GEN

#use delay(clock=48000000) //frecuencia de reloj interna

Page 16: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

#include <usb_cdc.h> //driver para trabajar con usb CDC

#include <usb_desc_cdc.h>

int8 dato;

void main(){

setup_port_a( ALL_ANALOG ); //Puerto A como entradas analogicas

setup_adc( ADC_CLOCK_INTERNAL );

set_adc_channel(0); //seleccionamos el canal A0 del microcontrolador

usb_cdc_init();

usb_init(); //inicializa el hardware usb

while(1){

usb_task();

if(usb_enumerated()){

dato=read_adc(); // guardo en dato la lectura del ADC

usb_cdc_putc(dato); //envió el dato por el puerto USB

}

}

}

INTERFACE EN MATLAB-GUIDE

La figura 15 muestra la interfaz principal del ECG creado en el GUIDE de MATLAB

R2009a en la cual se puede observar los botones para abrir y cerrar el puerto de

comunicación, además se encuentra el AXES que muestra en tiempo real la señal

obtenida del corazón.

Page 17: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Fig.15 Interfaz de desarrollo.

Algoritmo para el botón ABRIR: propiedad ‘callback’:

function boton1_Callback(hObject, eventdata, handles) % hObject handle to boton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global SerPIC namecom=get(handles.caja1,'String'); %%obtiene el COM solicitado %%configuración SerPIC = serial(namecom) %%vector para la comunicación serie set(SerPIC,'BaudRate',9600) %%velocidad en baudios set(SerPIC,'DataBits',8) %% Bits de datos igual a 8 set(SerPIC,'Parity','none') %%sin paridad set(SerPIC,'StopBits',1) %% un bit de parada set(SerPIC,'FlowControl','none') fopen(SerPIC); %%Abre el puerto % for i=1:50 %% Toma de 1 hasta 50 muestras %%READ v=fread(SerPIC); %% Leeo el puerto v1=fread(SerPIC); %% Leeo el puerto v2=fread(SerPIC); v3=fread(SerPIC); v4=fread(SerPIC);

.

.

Page 18: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

. v222=fread(SerPIC); v223=fread(SerPIC); v224=fread(SerPIC); v225=fread(SerPIC); %% Leeo el puerto

c=cat(1,v,v1,v2,v3,v4... ,v222,v223,v224,v225); %%concateno las matrices

dd=(c*5)/256; %%conversión para ajustar la escala axes(handles.axes1) %%selecciono el AXES plot(dd) %%imprimo la grafica en el AXES end

Algoritmo para el botón CERRAR: propiedad ‘callback’:

function boton2_Callback(hObject, eventdata, handles) % hObject handle to boton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global SerPIC fclose(SerPIC); %%cierra el puerto delete(SerPIC) %%Borra el vector creado anteriormente clear SerPIC

Del código anterior se puede observar la facilidad del algoritmo pero hay que tener

en cuenta que se tuvo que leer el puerto COM has 226 veces ya que la frecuencia

de la señal ECG es relativamente baja alrededor de los 1.5 HZ, es decir si leemos

el puerto pocas veces solo se obtiene un trozo de la señal ECG filtrada.

RESULTADOS OBTENIDOS

La señal ECG original está contaminada de mucho ruido (Figura 16), que como

sabemos es una señal ajena a la señal de estudio, provocando errores en el

sistema de medida. Estos factores adquieren especial importancia en la primera

etapa de medida del sistema (electrodos). Los cables son otro factor a tener en

cuenta, ya que actúan como antenas y pueden introducir interferencias en nuestro

circuito, para solucionar este problema se utiliza cables apantallados.

Page 19: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Fig.16 Señal ECG contaminada.

Mediante la implementación del filtro IIR pasa-banda digital en el DSP se puede

observar una señal un poco más parecida a la que observamos en las películas o

televisión, la figura 17 muestra el resultado final obtenido de la señal ECG.

Fig.17 Señal ECG filtrada.

Page 20: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

ANEXO 1 (Sistema completo)

Page 21: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Anexo 2 (Esquemas y PCB)

Page 22: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

Anexo 2 (Esquemas y PCB)

Page 23: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

CONCLUSIONES

Después de las pruebas realizadas y los resultados obtenidos se considera que el

diseño e implementación de un ECG no es una tarea tan fácil ya que la señal está

acompañada de varios factores que impiden su visualización como lo son: los

sensores, los cables, la fuente de alimentación etc. Muchos de estos problemas

fueron eliminándose ya que se hizo el uso de cables blindados o apantallados que

permiten eliminar gran parte del ruido e interferencias que intervenían en la tarjeta

implementada.

Se ha comprobado el funcionamiento de los filtros digitales IIR en tiempo real y la

importancia que estos tienen en el campo medicinal. El estudio de la TZ y las

ecuaciones en diferencias aclaro un poco más el tema de filtros y como aplicarlos

tanto en Matlab como en el DSP.

Cada uno de los resultados obtenidos se hicieron atreves de la herramienta

matemática Matlab, que permitió el diseño de los filtros digitales y las herramientas

graficas (GUIDE) para la correcta visualización de la señal ECG.

Se ha resaltado la importancia que tiene el circuito para la protección al paciente

ya que este brinda la seguridad al paciente que actualmente aplica como ley a

nivel del diseño en aparatos del campo de la medicina.

Page 24: 64969352 Diseno e Implementacion de Un Electrocardiograma Utilizando Un Dspic

BIBILIOGRAFIA Y REFERENCIAS

- Armstrong ML. (1988). Los electrocardiogramas. Buenos Aires: El Ateneo - Sharp Merck. (1997), Manual Merck de información médica para el hogar. Barcelona: Océano - Webster John G. (1998). Medical Instrumentation. Application and Design. New Jersey: Wiley - Bronzino, Joseph D. (1995). The Biomedical Engineering Handbook. Boca Raton: CRC - Hartmann Eckart. ECG Front-End Design is Simplified with MicroConverter, Extraído el 27 abril, 2010, de http://www.analog.com/library/analogDialogue/archives/37-11/ecg.html