DISEÑO E IMPLEMENTACIÓN DE UN ELECTROCARDIOGRAMA
UTILIZANDO UN DSPIC
FERNANDO PÁEZ PEREZ
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
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.
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.
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.
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.
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
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.
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.
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:
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
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
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
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
%%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:
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
#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.
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);
.
.
. 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.
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.
ANEXO 1 (Sistema completo)
Anexo 2 (Esquemas y PCB)
Anexo 2 (Esquemas y PCB)
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.
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