P. 1
Ecg en Matlab

Ecg en Matlab

|Views: 3.043|Likes:

More info:

Published by: Omar Fernando Granados Vergara on Jul 27, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/30/2015

pdf

text

original

INGENIERÍA BIOMÉDICA

“DESARROLLO DE UNA INTERFACE GRÁFICA PARA UN ELECTROCARDIÓGRAFO PORTÁTIL”

ALUMNA: MARÍA EUGENIA CALVA ROJAS
ASESOR: DONACIANO JIMÉNEZ VÁZQUEZ

_________________________ Asesor Donaciano Jiménez Vázquez

________________________ Alumna María Eugenia Calva Rojas

Julio de 2008

ÍNDICE

Introducción…………………………………………………………. 1 Antecedentes………………………………………………………… 2 Creando una GUI en Matlab………………………………… 3 Propiedades de los controles………………………………… 3 Tipos de Objetos…………………………………………….. 4 Editor de Menús……………………………………………... 5 Objetivo……………………………………………………………… 6 Descripción de la inteface………………………………………….... 6 Interface Gráfica (ECG Portátil)……………………………….......... 8 Resultados…………………………………………………………... 21 Comentarios……………………………………………………….... 27 Conclusiones………………………………………………………... 28 Anexo A…..……………………………………………………….... 29 Bibliografía…………………………………………………………. 38

2

INTRODUCCIÓN La herramienta Matlab nos proporciona la posibilidad de aprovechar todo su potencial operativo pero con gráficos orientados al usuario. Sin duda esto presenta una ventaja para usuarios que no tienen experiencia en trabajar con Matlab debido a la sencillez de la interface gráfica. Por parte del programador, todas las funciones se pueden implementar en dichos entornos. Las variables o valores se pueden asignar a funciones a través de botones, barras de desplazamiento, checkbox, etc. Y los resultados se pueden mostrar en un cuadro de textos, en una lista de valores o incluso en una gráfica enmarcada de la propia interface. El propósito de este proyecto consiste en desarrollar una interface gráfica para un electrocardiógrafo portátil*. El cual cuenta con las siguientes características: 1. Adquisición de la señal. Mediante una terminal de 3 electrodos conectados al paciente y a la placa mediante un cable trenzado. 2. Etapa de amplificación analógica. Una de las partes más destacadas, puesto que la señal que recibe es muy débil y debe ser amplificada, evitando el ruido. 3. Funcionamiento del microcontrolador PIC18F452. Se ha elaborado un programa escrito en ensamblador para hacer la conversión analógica-digital de la señal del ECG y configurado la USART del PIC para enviar los datos a la PC. 4. Interfaz de comunicación entre el PC y la placa. Se utilizo el protocolo de comunicación RS-232. Dentro de las características indispensables de la interface se encuentran las siguientes: Fácil manejo. Contar con las instrucciones adecuadas en tiempo de ejecución. Amigable para el usuario final. Con esto aseguraremos un manejo óptimo y adecuado del software.

3

ANTECEDENTES MATLAB es un lenguaje de alto desempeño diseñado para realizar cálculos técnicos. MATLAB integra el cálculo, la visualización y la programación en un ambiente fácil de utilizar donde los problemas y las soluciones se expresan en una notación matemática. MATLAB es un sistema interactivo cuyo elemento básico de datos es el arreglo que no requiere de dimensionamiento previo. Esto permite resolver muchos problemas computacionales, específicamente aquellos que involucren vectores y matrices, en un tiempo mucho menor al requerido para escribir un programa en un lenguaje escalar no interactivo tal como C o Fortran. MATLAB se utiliza ampliamente en: Cálculos numéricos Desarrollo de algoritmos Modelado, simulación y prueba de prototipos Análisis de datos, exploración y visualización Graficación de datos con fines científicos o de ingeniería. Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI, Graphical User Interface). En el ámbito académico y de investigación, es la herramienta estándar para los cursos introductorios y avanzados de matemáticas, ingeniería e investigación. En la industria MATLAB es la herramienta usada para el análisis, investigación y desarrollo de nuevos productos tecnológicos. La ventaja principal de MATLAB es el uso de familias de comandos de áreas específicas llamadas toolboxes. Lo más importante para los usuarios de MATLAB es que los toolboxes le permiten aprender y aplicar la teoría. Los toolboxes son grupos de comandos de MATLAB (archivos M) que extienden el ambiente de MATLAB para resolver problemas de áreas específicas de la ciencia e ingeniería. Por ejemplo, existen toolboxes para las áreas de Procesamiento Digital de Señales, Sistemas de Control, Redes Neuronales, Lógica Difusa, Wavelets, etc. Acerca de GUIDE Las interfaces gráficas de usuario (GUI-Graphical User Interface en Inglés), es la forma en que el usuario interactúa con el programa o el sistema operativo de una computadora. Una GUI contiene diferentes elementos gráficos tales como botones, campos de texto, menús, gráficos, etc. Existen diferentes lenguajes de programación que permiten crear una GUI tales como: C, Visual Basic, TK, etc., solo por mencionar algunos. Todos ellos permiten usar diferentes controles y maneras de programarlos, Matlab nos permite realizar GUI’s de una manera sencilla usando GUIDE (Graphical User Interface Development Enviroment).

4

Seleccionaremos la opción Default GUI. es la creación de GUI’s. En la pantalla se aparecerá la un área de diseño similar a la de la Figura 2.Creando una GUI en Matlab Una de las tantas herramientas con las que cuenta Matlab.M: Contiene las funciones y los controles del GUI así como el callback. Figura 1 Figura 1. Iniciando GUIDE Para crear una GUI en Matlab tecleemos guide en la ventana de comandos de Matlab. a eso se le conoce como la función del callback. suponga que en una ventana existe un botón el cual al presionarlo ejecutará una serie de acciones. Un archivo *. Un callback se define como la acción que llevará a cabo un objeto de la GUI cuando el usuario lo active. 5 . Para ejemplificarlo.FIG: Contiene la descripción de los componentes que contiene la interfase. Al usar GUIDE obtendremos dos archivos: Un archivo *. La forma de implementar las GUI con Matlab es crear los objetos y definir las acciones que cada uno va a realizar.

a continuación se explican las más comunes (Figura 3): Background Color: Cambia el color del fondo del control. es el texto que muestra el control. Tag: Otra de las propiedades más importantes ya que con este es posible regresar datos o identificar al control. ya que le dice al control que hacer cuando este se active. en la parte izquierda se aprecian los diferentes controles y en la parte central el área de diseño donde pondremos los controles a usar. Enable: Activa o desactiva un control String: En el caso de botones. Figura 3. cajas de texto.Figura 2. Callback: La propiedad más importante del control. texto estático. Propiedades de los controles: Las propiedades varían dependiendo del control a usar. 6 . En la parte superior se encuentran los menús y opciones de GUIDE.

Para enmarcar los objetos con funciones relacionadas.Tipos de Objetos: Activar Adquisición Procesar ECG Identificar complejos QRS Desplegar FFT Para seleccionar que ventana de gráfico quiero limpiar. la de ECG o FFT. Editor de Menús Nuevo Submenú Nombre que aparece en la interface Nuevo menú Nombre que se maneja en el código de programación 7 . Para desplegar el valor calculado de VFC Para visualizar todas las muestras del registro en la ventana. Para colocar el nombre de la ventana de adquisición.

Objetivo: Este proyecto es la continuación de la tesis “Electrocardiógrafo Portátil*”. Mejía González Jaime. Electrocardiógrafo Portátil. * Jiménez Santiago Gonzalo. Tipo de extensiones y direcciones donde se leerán los archivos en el Load y donde se almacenarán en el Save. la cual debe ser confiable. Se emplearán botones para activar las funciones. Ing. Biomédica UAM-I 2007 8 . Tesis Lic. clara y amigable para el usuario: Descripción de la Interface Invocación de la portada de presentación del ECG Inicia la inteface del ECG portátil Nueva adquisición (Cargar/Guardar) Adquisición Procesar adquisición Inicialización del objeto (puerto) para la adquisición Definición del menú de opciones (Cargar/Guardar) Definición de los objetos para el procesamiento Definición de características: -Tipo de puerto -Nombre del puerto -Modo de adquisición -Tamaño del buffer de entrada Definición de los tipos de archivos que se pueden cargar (Load) y Guardar (Save). El objetivo es el desarrollo de una interface gráfica en Matlab para este electrocardiógrafo portátil. ejes para desplegar gráficos y cuadros de texto estático para desplegar valores obtenidos del procesamiento.

o Salir: Cierra la interfase y regresa a la pantalla principal de Matlab. o Save: Pantalla: Guarda un archivo con *.DAT con los datos adquiridos del ECG Portátil. o Se podrá guardar la pantalla desplegada en un archivo de imagen con extensión *.Adquirir un nuevo registro o El usuario elegirá el tiempo de adquisición con un tiempo límite de 10 minutos.dat. Procesamiento de la señal o Filtrado de la señal (para eliminar la mayor cantidad de interferencia posible) o Reconocer los complejos QRS a través de un filtro tipo ventana o Graficar la Transformada Rápida de Fourier (FFT) o Calcular la Variabilidad de la Frecuencia Cardiaca (VFC) Con el editor de Menús construimos el que será necesario para llevar a cabo las siguientes funciones: o Load: Carga un archivo que contenga datos que puedan graficarse o procesarse. Datos: Guarda un archivo *. o Procesar el nuevo registro Cargar un archivo de datos (Registro de ECG) con extensión *. 9 . o Desplegar la gráfica en pantalla o Procesar la señal como si hubiera sido recién adquirida Guardar archivos o Se guardará en un archivo el registro de la señal como una tabla de números.bmp.BMP con la imagen actual en la interface.

Codigo del menu principal Options function Options_Callback(hObject. eventdata.INTERFACE GRÁFICA (ECG PORTATÍL) % -------------------------------------------------------------------Menú principal Options % -------------------------------------------------------------------% --.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Submenú Pantalla % -------------------------------------------------------------------% --. handles) % hObject handle to Save (see GCBO) % eventdata reserved . handles) % hObject handle to Opciones (see GCBO) % eventdata reserved .to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Submenú Save % -------------------------------------------------------------------function Save_Callback(hObject. handles) % hObject handle to Screen (see GCBO) % eventdata reserved . msgbox(' Imagen en el portapapeles') 10 . eventdata. eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) print -dbitmap.Guarda una impresion de la pantalla actual function Screen_Callback(hObject.

to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. grid on.handles). 11 . % Se habilita el botón para procesar la señal handles.'Fontsize'.'File Selector').original=ECG1. [filename. handles) % hObject handle to Load (see GCBO) % eventdata reserved . end. %prepara el axes1 para una nueva gráfica colordef black. guidata(hObject.'Fontsize'.'on').'b'). axis([0 3000 (min(ECG1)-1) (max(ECG1)+200)]). eventdata.8).axes1) newplot.Procesa.dat'}. %Permite al usuario elegir el archivo de los datos que desea desplegar en pantalla. ECG1=load(archivo).8).'enable'. xlabel('\bf Muestras'. % Se etiquetan los ejes y se define el tamaño de la letra ylabel('\bf Amplitud'. if(filename~=0) archivo=[pathname filename]. set(handles.% -------------------------------------------------------------------Submenú Load % -------------------------------------------------------------------function Load_Callback(hObject.%Carga el archivo de datos a la variable ECG1 plot(ECG1. pathname] = uigetfile({'*.

'-ascii').path] = uiputfile({'*.Pide al usuario el nombre para el archivo de datos y el path para guardarlo [file.'Aviso') end 12 . if(file~=0) nom=[path file]. end if(file~=0) save(nom.'ecg'. % --.original.% -------------------------------------------------------------------Submenú Datos % -------------------------------------------------------------------function Datos_Callback(hObject. handles) % hObject handle to Datos (see GCBO) % eventdata reserved . eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ecg=handles.dat'}. msgbox(' Archivo Listo!!'.'Save as').

eventdata. if strcmp(ans.Solicita al usuario el tiempo de adquisición en minutos % --.El tiempo en minutos se transforma en numero de muestras 13 .'No').la respuesta se almacena en la variable resp % answer = inputdlg({'Tiempo de Adquisición'}).Executes on button press in Play.'SALIR'.Solicita la confirmación de salida ans=questdlg('¿Desea salir del programa?'.clc. resp = str2num(answer{1}).'No') return.'No'. % --. end clear.close all % -------------------------------------------------------------------- Botón para iniciar adquisición % -------------------------------------------------------------------% --. handles) % hObject handle to Untitled_1 (see GCBO) % eventdata reserved .'Si'.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -. % % --.% -------------------------------------------------------------------- Submenú Salir % -------------------------------------------------------------------function Salir_Callback(hObject.

%Limpiamos la variable ‘s’ después de cerrar el puerto handles.'BackgroundColor'. %Deshabilitar el botón PLAY para no interrumpir la adquisición if ~isempty(answer) i=0.753]).'ADQUIRIENDO'). set(hObject.'ReadAsyncMode'. grid on.Configuración del puerto % s=serial('COM1').'off'). if i==1 data=datos. % % --. set(gcf. fclose(s). end end senial=reshape(data. % % Regresamos la etiqueta original PLAY % set(hObject.'b'). set(s. handles. end if i>1 data=cat(2.y este valor se almacena en la variable tam % numc=resp/0.'String'. % Cierra el puerto delete(s).[0 0. end 14 .'on').502 0. tam=numc*3000.tam=tam.'*IND?').05.% --.original=senial.'doublebuffer'.3000).'InputBufferSize'.'enable'. set(hObject. %vector del mismo tamaño que le buffer fopen(s). % Habilitamos el botón set(handles. set(s. 'continuous').[0. set(hObject. i=i+1.datos).handles).Procesa. %tamaño del buffer de entrada tiempo=[0:2999]. %Cambiando el color del botón PLAY % %Cambiando la etiqueta PLAY por ADQUIRIENDO % set(hObject. %Habilitamos el botón para procesar la señal guidata(hObject.'String'. while i<numc datos=fread(s).'PLAY'). %se abre el puerto fprintf(s.tam).1. % % Regresamos el botón PLAY a su color original % set(hObject. plot(datos.'BackgroundColor'.'enable'.data.99 0 0]).'enable'.'on').'on') drawnow.

'on'). % Habilita el botón para calcular la frecuencia cardiaca % Habilita el botón para graficar las ventanas que identican los complejos QRS set(handles.'on').'g'). ECG1=handles.FFT. %Se grafica s1 set(handles.Executes on button press in Procesa.senial=s1. handles. A=[1 -2 1].QRS.'enable'.FC. function Procesa_Callback(hObject. hold on. colordef black.% -------------------------------------------------------------------- Botón para procesar la señal % -------------------------------------------------------------------% --. plot(s1/max(s1).'enable'.A.axes1) newplot.ECG).handles).to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.ecg=ECG. N=size(ECG1). guidata(hObject. grid on. handles. %s1 es la señal resultante del primer filtrado s1=filter(B. eventdata.'enable'. % Habilita el botón para graficar el FFT set(handles. 15 .'on'). handles) % hObject handle to Procesa (see GCBO) % eventdata reserved . ECG=(ECG1-mean(ECG1))/(500). B=[1 0 0 0 0 0 -2 0 0 0 0 0 1].original.

B=[0. B=ones(1. colordef black.axes1) newplot.s1)-filter(B.s2).delay=30. function QRS_Callback(hObject. C(17)=1.2 0.Executes on button press in QRS. %Se grafica la ventana de tiempo hold off. %s2 es la señal resultante del segundo filtrado %Filtro Derivador %Definimos las características del filtro derivador.^2.ecg. 16 .%s4 es la señal resultante del segundo filtrado %Filtro Ventana (Duracion del QRS) %En este grafico podemos visualizar a través de ventanas de tiempo la curva QRS.% -------------------------------------------------------------------- Botón para identificar los complejos QRS % -------------------------------------------------------------------% --. s4=s3. handles) % hObject handle to QRS (see GCBO) % eventdata reserved . %s3 es la señal resultante del tercer filtrado %Area bajo la curva QRS %Gráfica para mostrar el área bajo la curva QRS N=30. s2=filter(C.1. det=s4>(0.senial. %Filtro Pasa-altas %Definimos las características del filtro pasa-bajas %Sabemos que un filtro puede ser definido con un par de %polinomios que caracterizaran %los polos y ceros de este y así definimos A. ECG=handles.1 0 -0.s4).2].'m:'). B=zeros(1. s1=handles. s3=filter(B.A.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. s4=filter(B.N)/N. %Se define el retardo para que ocurra una nueva ventana plot(max(ECG)*det.125*(max(s4)/2)).17). %Comando para generar una matriz de tamaño 1* 33 B(1)=1. eventdata.%Operación para definir el tiempo de duración de la ventana det(1:delay)=[].1 -0.1.s1)/32. %Se definen el primer y ultimo elemento como 1 y -1 A=[1 -1]. B(33)=-1. B y C.33).A. C=zeros(1.

handles) % hObject handle to VFC (see GCBO) % eventdata reserved . s4=handles. eventdata. t1=0. cuenta=0. aint=int16(5000/NumInt). for i=1:NumInt for n=ini:fin if may<s4(n+1) may=s4(n+1). %%%Calcula la variabilidad de la frecuencia cardiaca % Utilizando un algoritmo de detección de ondas R function VFC_Callback(hObject.Executes on button press in VFC. if dif==max(s) cuenta=cuenta+1.% -------------------------------------------------------------------- Botón para calcular la VFC y desplegarla en el cuadro de texto estático en Lat/min % -------------------------------------------------------------------% --. may=s4(1). 17 .ventana. fin=aint. ini=fin. j=1. t0=0. R(j)=t0. end end NumInt=cuenta. ini=1. for n=1:5000 dif=s(n+1)-s(n).segunda.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s=handles. t0=n+1. fin=fin+aint. end end may=s4(1).

end VFC=median(FC). end l=1. function FFT_Callback(hObject. l=l+1.Executes during object deletion.VFC). handles) % hObject handle to FFT (see GCBO) % eventdata reserved .Executes on button press in CLEAR. for i=1:sup-1 FC(l)=60/(double(R(2*i)-R(2*i-1))/500).'string'. % -------------------------------------------------------------------- % -------------------------------------------------------------------% Ventana de Despedida % --. before destroying properties.Executes on button press in FFT.text2. function Pantalla_DeleteFcn(hObject. 18 . sup=int16(NumInt/2). colordef black. handles) % hObject handle to Pantalla (see GCBO) % eventdata reserved . eventdata.'.axes2) newplot.'help') % -------------------------------------------------------------------% --. eventdata. eventdata.'Despedida'.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. function CLEAR_Callback(hObject..to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Botón para desplegar gráfico FFT % -------------------------------------------------------------------% --. set(handles. handles) % hObject handle to CLEAR (see GCBO) % eventdata reserved .j=j+1.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox('Buena Suerte.

n=length(s1). handles) % hObject handle to Rango (see GCBO) % eventdata reserved .to be defined in a future version of MATLAB % handles empty .xlabel('\bf Frecuencia'.9 . See ISPC and COMPUTER. handles) % hObject handle to Rango (see GCBO) % eventdata reserved .9 .'BackgroundColor'.8).get(0.'Min') and get(hObject.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject. ylabel('\bf Amplitud'.'Max') to determine range of slider value=get(hObject. 19 . title('\bf FFT').value). after setting all properties.[. stem(freq. else set(hObject. function Rango_CreateFcn(hObject.9]). end % -------------------------------------------------------------------% --. eventdata.'string'.handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background.text5. function Rango_Callback(hObject. freq=(1:n/2)/(n/2)*nyquist.8). s1=s(1:250).'value').Executes during object creation.Executes on slider movement. power=abs(s1(1:floor(n/2))).'defaultUicontrolBackgroundColor')). % -------------------------------------------------------------------% --. usewhitebg = 1.s=handles.power.'Fontsize'.'c'). if usewhitebg set(hObject. set(handles.'BackgroundColor'.'Fontsize'.senial. change % 'usewhitebg' to 0 to use default.'Value') returns position of slider % get(hObject. eventdata. nyquist=250.^2.

to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject.'Value') returns toggle state of ECG axes(handles.ECG. newplot.1) set(handles. function ECG_Callback(hObject.0) 20 . hold off.'value'.RFFT.'value'.0) %-------------------------------------------------------------------------Limpiar ejes del FFT %-------------------------------------------------------------------------% --. handles) % hObject handle to RFFT (see GCBO) % eventdata reserved .1) set(handles. set(handles.%-------------------------------------------------------------------------- Limpiar ejes del ECG %-------------------------------------------------------------------------% Limpia axes de ECG % --.RFFT.Executes on radiobutton press in ECG. set(handles.axes1) %con esto selecciona el eje a utilizar. eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. handles) % hObject handle to ECG (see GCBO) % eventdata reserved . eventdata. newplot.Executes on radiobutton press in RFFT.'value'.ECG.axes2) %con esto selecciona el eje a utilizar. hold off. function RFFT_Callback(hObject.'value'.

% Valor mínimo que puede adquirir el slider (0.slider1= handles. handles) % hObject handle to slider1 (see GCBO) % eventdata reserved .slider1=handles.handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background.get(0.axes1.[handles.%-------------------------------------------------------------------------- Barra de desplazamiento del ECG % Hint: get(hObject.to be defined in a future version of MATLAB % handles empty . eventdata.'defaultUicontrolBackgroundColor')). usewhitebg = 1.753]).'Xlim'. function slider1_CreateFcn(hObject. guidata(hObject.'Max') to determine range of slider %value=get(handles.to be defined in a future version of MATLAB % Hints: get(hObject.1) end set(handles. 0.502.slider1*tam.1.slider1. end %-------------------------------------------------------------------------% --.slider1==0 handles.'Value'). eventdata. function slider1_Callback(hObject.handles). after setting all properties. if handles.'Min') and get(hObject. handles. 21 . change % 'usewhitebg' to 0 to use default.'value'). tam=length(handles.slider1 handles.'Value') returns toggle state of RFFT %-------------------------------------------------------------------------% --.'BackgroundColor'.original). handles. if usewhitebg set(hObject.'Value') returns position of slider % get(hObject.Executes during object creation.Executes on slider movement. 0.slider1=get(hObject. See ISPC and COMPUTER.[0.slider1+2000]).'BackgroundColor'.slider1+0. handles) % hObject handle to slider1 (see GCBO) % eventdata reserved . else set(hObject.

Nótese que se hizo una breve descripción del funcionamiento y del código de cada elemento en la interface. Para obtener finalmente una pantalla como la siguiente: Ejes del ECG Ejes del FFT Interface completa del ECG Portátil 22 . considerando los elementos más relevantes de la interface.

RESULTADOS Para invocar a la interfase tecleemos ECG en la ventana de comandos de Matlab. Entrar al ECG Portátil Ventana de introducción a la interface del ECG Portátil. o Tecleamos el nombre del archivo de bienvenida en este caso fue ‘presentación’. o En seguida aparecerá la pantalla de la siguiente ventana. Con el botón CONTINUAR ingresaremos a la interfase que se muestra el la siguiente ventana: Muestra todos los botones de la interface activados 23 .

1 Cargando un archivo *.dat que contiene los datos de un individuo corriendo en una bicicleta fija durante un período de 5 minutos. 24 . Botones Desactivados Como podemos observar al cargar o realizar una nueva adquisición el archivo se grafican los datos y se activa el botón PROCESA para aplicarle los filtros correspondientes a la señal.CASO No.

regularidades. forma de onda y estructura de la señal. pudiéndose detectar rápidamente cambios en la frecuencia. Ventana después de procesar la señal La figura muestra cuales son los resultados obtenidos después de filtrar la señal.Después de procesar la señal se activan los botones restantes para detectar el complejo QRS de la señal. calcular la Variabilidad de la Frecuencia Cardiaca (VFC) del individuo y determinar la FFT. 25 . amplitud. calcular su transformada rápida de Fourier (FFT) y la variabilidad de la frecuencia cardiaca (VFC). El análisis tiempo frecuencia de un ECG refleja segundo a segundo las variaciones en la frecuencia fundamental.

2 En este caso el individuo se encuentra en reposo. 26 .CASO No.

Ruido ECG Original ECG Filtrado Podemos observar claramente como se eliminó de las componentes de ruido en la señal sin alterar la forma de la señal. 27 .

364 lat/min t1 t2 VFC = 64.4933 lat/min 28 . ECG).Tanto el análisis temporal como frecuencial de la variabilidad de la frecuencia cardiaca (VFC) están basados en la medida directa de la duración del intervalo RR (tiempo entre dos ondas R consecutivas en el electrocardiograma. t1 t2 VFC = 136.

Comentarios: Los datos de muestra para presentar los resultados fueron facilitados por el departamento de FISIOLOGÍA CARDIOVASCULAR. diferenciar o determinar valores específicos de funciones que requieran aproximaciones numéricas de la solución deseada. Estos algoritmos permiten el estudio de las bioseñales en el dominio de la frecuencia y constituyen una herramienta adicional para el diagnóstico médico. 29 . El sistema y lenguaje MATLAB simplifica los cálculos del álgebra lineal. Los filtros digitales representan alternativas útiles para el análisis digital del ECG. Se dispone también de las herramientas necesarias para resolver algunos problemas en los que resulta difícil integrar.RESPIRATORIA de la UAM Iztapalapa. El enfoque matricial de su estructura permite diversas maneras de procesamiento de los arreglos de datos.

La capacidad de poder visualizar las imágenes desde cualquier PC que opere con el sistema operativo Windows.Conclusiones: El objetivo de este proyecto fue desarrollar una interface con características específicas como es la precisión en la medición de la Variabilidad de la Frecuencia Cardiaca ya que este valor representa una variable fisiológica de gran importancia para el diagnostico que el médico está realizando. 30 . y portabilidad. El sistema que se ha desarrollado destaca por su bajo costo. En cuanto a la confiabilidad en la medición de la Variabilidad de la Frecuencia Cardiaca (VFC) tenemos que se encuentra en un 99% lo cual es aceptable para el usuario pero los requerimientos en cuanto a la memoria de la PC son considerables utilizando la identificación de las ondas R. También es importante que el usuario final encuentre un ambiente amigable en el equipo que está manejando lo cual conlleva a que tenga una mayor confianza en lo que está realizando y reducir así el error en el manejo del equipo y por consiguiente también reducir el error en el diagnóstico.

Apéndice A Electrocardiógrafo. al músculo ventricular. por el sistema de Purkinje. Figura 2. El electrocardiógrafo es el equipo que permite registrar la actividad eléctrica del corazón a partir de una serie de terminales o electrodos metálicos de Ag/AgCl (Plata / Cloruro de Plata) conectados en la superficie de cuerpo del paciente. La señal es amplificada y posteriormente registrada en un tira de papel que se mueve a velocidad constante. las vías auriculares internodales. antes de que éstas descarguen espontáneamente. el marcapasos cardiaco y su frecuencia de descarga determina la frecuencia a la que late el corazón. Sin embargo. son capaces de descarga espontánea. de este nodo al haz de His. Las partes del corazón normalmente laten en sucesión ordenada: la contracción auricular (sístole auricular) va seguida de la contracción de los ventrículos (sístole ventricular) y durante la diástole las cuatro cámaras están relajadas. 31 . Las estructuras que constituyen el sistema de conducción son el nodo sinoauricular (nodo SA). y el sistema de Purkinje. en condiciones anormales. Electrocardiógrafo. por tanto. y a través de las ramas del haz de His. El nodo SA es. Los impulsos generados en el nodo SA pasan a través del músculo auricular al nodo AV. el haz de His y sus ramas. partes del miocardio. el nodo SA normalmente descarga de manera más frecuente propagándose la despolarización desde él a las cuatro regiones. el nodo auriculoventricular (nodo AV). El latido cardiaco se origina en un sistema cardiaco de conducción especializado y se propaga a través de este sistema a todas las partes del miocardio. Las diversas partes del sistema de conducción y. Estructura física del corazón. Latido cardiaco y la actividad eléctrica del corazón.

Su duración debe estar comprendida entre 120 y 200 ms. apareciendo al final del segmento ST. Puede construirse aproximadamente un triangulo (triángulo de Einthoven) con el corazón en su centro colocando electrodos en ambos brazos y en la pierna izquierda. A causa de que los líquidos corporales son buenos conductores (es decir. En un conductor de volumen.5 mV. El ECG puede ser registrado usando un electrodo activo o explorador conectado a un electrodo indiferente de potencial cero (registro unipolar) o entre dos electrodos activos (registro bipolar). pueden ser registradas extracelularmente. Figura 3: Sistema de conducción del corazón y su correlación con el ECG 32 . Intervalo QT: Comprende desde el inicio del QRS hasta el final de la onda T y representa la despolarización ventricular. Onda T: Corresponde a la repolarización ventricular. Complejo QRS: Representa la despolarización de ambos ventrículos. por que el cuerpo es un conductor de volumen). Intervalo PR: Es el período de inactividad eléctrica. Segmento ST: Desde el final del QRS hasta el inicio de la onda T.Electrocardiograma. las fluctuaciones en el potencial. El registro de estas fluctuaciones de los potenciales durante el ciclo cardiaco es el electrocardiograma (ECG). que representan la suma algebraica de los potenciales de acción de las fibras del miocardio. Producida por la despolarización de ambas aurículas. es la primera marca reconocible en el ECG. la suma de los potenciales en los vértices en un triángulo equilátero con una fuente de corriente en el centro es cero en todo tiempo. Los nombres de las diversas ondas del ECG y su cronología en los seres humanos se muestran a continuación: Onda P: En condiciones normales. Estas son tres derivaciones estándar de los miembros que se usan en electrocardiografía. su duración es menor de 100 ms y su voltaje no excede los 5. corresponde al retraso fisiológico que sufre el estímulo en el nodo arterioventricular. Su duración estará comprendida entre los 320 y 400 ms. Su duración debe estar comprendida entre los 80 y 100 ms.

Derivación I: entre brazo izquierdo (+) y brazo derecho (-).2 milivolts equivalentes a 2mmm y una duración menor de 0. los electrodos están en el brazo derecho y en la pierna izquierda. pulso débil. siendo la pierna positiva. En la derivación I. 33 . Derivación III: entre pierna izquierda (+) y brazo derecho (-). tendrá una amplitud menor a 0. Debido a que la corriente sólo fluye en los líquidos corporales. Bradicardia: Se caracteriza por el descenso del ritmo cardiaco por debajo 60 lpm. Las derivaciones estándar de los miembros I.Derivaciones bipolares. Algunas arritmias cardiacas.12 segundos. Esta derivación es la más adecuada para el análisis de la onda P. Arritmias del Nodo SA. dolor de pecho. y en la derivación III. Derivación II: entre pierna izquierda (+) y brazo derecho (-). Figura 4. los electrodos están en el brazo izquierdo y en la pierna izquierda con está positiva. La sintomatología puede ser falta de oxigenación. Taquicardia: Se caracteriza por un aumento del ritmo cardiaco por arriba de los 90 lpm. para los tres tipos de derivaciones. En la derivación II. se conectan de manera que una desviación hacia arriba sea inscrita cuando el brazo izquierdo se vuelva positivo con respecto al derecho (brazo izquierdo positivo). La sintomatología es parecida a la bradicardia. no importa donde se coloquen los electrodos de las extremidades. II y III son registros de la diferencias de potencial entre dos miembros. No cambia la morfología de ECG. Triángulo de Einthoven. los registros obtenidos son aquéllos que se obtendrían si los electrodos estuvieran en los puntos de fijación de las extremidades. No cambia la morfología del ECG.

Interrupción del paso del estímulo generado en el nódulo sinusal hacia el tejido específico auricular de conducción. infarto al miocardio de la cara inferior. Bloqueo permanente de la actividad generada en el nodo sinusal. Bloqueo del Nodo AV. Bloqueo AV de Primer Grado. Paro o Pausa Sinusal. Existe depresión intensa de la actividad del nódulo sinusal. miocarditis. No es muy importante desde el punto de vista clínico. hipotensión arterial sistémica y algunas veces bloqueo cardiaco) o la liberación del potasio y adenosina por las células miocárdicas isquémicas. fibrosis degenerativa. lipotimias y aumento del número de extrasístoles ventriculares. hiperpotasemia. tono vagal excesivo. etc.Bloqueo del Nodo SA. Segundo grado. la estimulación de los reflejos de Bezold-Jarisch (cuando la isquemia estimula los nervios aferentes adyacentes al nódulo AV. 34 . El cuarto complejo corresponde a un latido de escape de la unión. Causas: cardiopatía isquémica. Es un síndrome clínico que se caracteriza por una función anormal del nódulo sinusal por alteraciones orgánicas y funcionales de las células que la componen. cambios degenerativos del nodo AV. Falta de formación de un impulso en el nódulo sinusal. El paciente debe ser examinado minuciosamente para descartar la presencia de hipotensión arterial. reconociéndose en el ECG por un paro sinusal de duración generalmente doble del ciclo RR precedente. Tercer grado. Se trata de una prolongación de la conducción AV en la que se transmiten todas las ondas P y todos los intervalos PR tienen la misma longitud. El SSE se produce con mayor frecuencia en el infarto agudo del miocardio inferior (por isquemia del nodo atrioventricular). ya que estas son las únicas razones para tratar este tipo de arritmia. su transmisión y conducción. Las causas pueden ser: infarto del miocardio que afecta el tejido SA. fármacos depresores del nodo AV. ya que existen latidos de escape de la unión durante las pausas excesivas de la actividad SA. La ausencia de ondas P y un ritmo de escape funcional ó ventricular sustituirán al marcapasos principal. Los hay de tres grados: Primer grado. fiebre reumática aguda. esporádicamente un estímulo queda bloqueado. Paro o pausa sinusal. Síndrome del Seno Enfermo. Pausa sinusal. dando como resultado final una alteración en la formación del impulso nodal senoatrial. Figura 5. no se identificable en el ECG convencional. el incremento del tono vagal resultante produce bradicardia sinusal.

Figura 8. Bloqueo AV de 2°. de tal modo que el impulso auricular no puede pasar. miocarditis. Figura 7. Bloqueo AV de tercer grado. enfermedad degenerativa del nodo AV. Bloqueo AV de Tercer Grado. En este tipo de bloqueo no todos los impulsos auriculares son conducidos a los ventrículos. Se produce cuando el impulso auricular es incapaz de pasar a los ventrículos. Bloqueo AV de Segundo Grado. Figura 9. El bloqueo tipo Mobitz II es un retraso de la conducción a nivel de la rama del haz de His (infranodal y dentro del sistema His-Purkinje). y sus causas pueden ser: enfermedad grave degenerativa del sistema de conducción.Figura 6. en forma transitoria o definitiva. En el Mobitz I existe un retraso creciente de la conducción AV hasta que una onda P no es conducida (alargamiento progresivo de los intervalos PR) y sus causas pueden ser: digital. 35 . aumento del tono vagal (deportistas). Bloqueo AV de 2°. infarto del miocardio de la pared anterior. haz de His o las ramas del haz. Bloqueo AV de primer grado. tipo Mobitz II. tipo Mobitz II. Existen dos tipos diferentes: tipo I (Mobitz I o Wenckebach) y tipo II (Mobitz II). miocarditis y posterior a cirugía cardiaca. cardiopatía isquémica (frecuente en la evolución del infarto al miocardio de la cara inferior por isquemia del nodo AV). Tanto aurículas como ventrículos laten con ritmos independientes. Existe patología a nivel del nódulo AV.

La despolarización es tardía. Ya no se trasmiten de forma adecuada el impulso eléctrico a través de las ramas del has de his. Se refiere al complejo electrocardiográfico (auricular. Bloqueo bifacicular: Consiste en el bloqueo de la rama derecha y cualquiera de los fascículos de la rama izquierda. en la tromboembolia pulmonar y miocarditis. que puede hacer que los latidos sean demasiado rápidos o demasiado lentos o que tengan una velocidad irregular. nodal ó ventricular) que "salta" ante la ausencia de estímulos provenientes del marcapasos natural (nódulo sinusal). no doloroso y relativamente barato. Trastornos de conducción: Disfunción del sistema de conducción eléctrica del corazón. 36 . Bloqueos troncales. Escape. Dado que el ECG es un examen rápido. Los ECG también se hacen como exploraciones físicas de rutina para poder compararlos con ECG anteriores y determinar si una enfermedad oculta o no detectada puede causar los cambios en el ECG. como tiene dos fascículos se cae en un hemibloqueo sea anterior o posterior. sencillo.Flútter (aleteo) Auricular. Flútter Auricular. ¿Para qué se hace un ECG? Muchas condiciones de salud pueden causar cambios en el ECG. Ritmo auricular rápido y regular. Bloqueo trifacicular: Consiste en el bloqueo de la rama derecha y ambos fascículos. Causas: cualquier forma de cardiopatía (más común en la fiebre reumática. se puede utilizar como parte inicial de un examen para ayudar al médico a reducir las posibilidades en el proceso de diagnóstico. menos frecuente en la insuficiencia cardiaca congestiva. pero no se limitan a las siguientes: Isquemia: Disminución del flujo de sangre oxigenada a un órgano debido a la obstrucción de una arteria. El bloqueo puede estar antes de la bifurcación en cualquiera de los dos fascículos. Ataque al corazón (también llamado infarto de miocardio): Lesión del músculo cardiaco debida a un suministro insuficiente de sangre. Se debe a un circuito de reentrada único dentro de la aurícula derecha. habitualmente de 300 por minuto. pero no las dos al mismo tiempo. Figura 10. Las condiciones que pueden causar cambios en el patrón del ECG pueden incluir. Bloqueo de la rama derecha del has de his: No hay transmisión del impulso eléctrico a través de la rama derecha pero si en la rama izquierda y debido a una contracción reflejo vuelve a haber transmisión en la rama derecha después de un intervalo de tiempo (ms) Bloqueo de la rama izquierda del has de his: La rama izquierda esta sin conducir el impulso eléctrico.

puede ser debida a diversos factores. Podemos destacar: la red eléctrica. para la adquisición de la señal electrocardiográfica. Dilatación cardiaca: Condición en la que el corazón es mucho más grande de lo normal. y aparatos como luces. Los potenciales bioeléctricos del ser humano son magnitudes que varían con el tiempo. Electrocardiograma de esfuerzo Utiliza los parámetros hermodinámicos.0. tales como el potasio. o sustancias químicas de la sangre. El conocimiento acerca del ruido. Electrocardiografía transteléfonica. es prácticamente inevitable.100 DC .5. que pueden seguir una evolución temporal en el tiempo y espacio. Pericarditis: Inflamación de la bolsa (revestimiento fino) que rodea al corazón.0002 . El principal objetivo. El termino interferencia. Los parámetros biomédicos pueden ser transferidos en señales capaces de ser transmitidas por un canal de comunicación. como los trastornos de las válvulas. En la actualidad. la insuficiencia cardiaca congestiva.5. El físico Norma Holter inventó un electrocardiógrafo que permitía un registro continúo del ECG aunque era una cinta magnética.1 .10000 Tabla Señales Bioeléctricas 37 . Señal ECG EEG EMG Amplitud Rango (mV) 0. La presencia de ruido en el registro de este tipo de señales. que se define como una señal ajena a la señal de estudio. ha pasado a un soporte sólido.05 . Destacamos. como cuando el conductor se golpea contra el volante en un accidente automovilístico.3 0. Enfermedad valvular cardiaca: Una o más de las cuatro válvulas del corazón está defectuosa o tiene una malformación congénita. Tipos de Electrocardiógrafos. o propias del sistema. el magnesio o el calcio. provocando errores en el sistema de medición. citamos el concepto de ruido.0 0. En primer lugar. los trastornos de conducción. la presión alta de la sangre. Traumatismos en el pecho: Traumatismo directo en el pecho. fluorescentes. y las causas que lo propician. Holter La historia comenzó en 1961. motores. Los valores de dichos potenciales pueden variar entre distintos individuos por diversos factores. para referirse a las señales externas a nuestro sistema. también es utilizado en este documento. Frecuencia (Hz) 0. etc. es conseguir un sistema con muy poco ruido. duración del ejercicio y capacidad aerodinámica (máximo consumo de oxígeno). Bicicleta ergométrica y la cinta sin fin: subir y bajar escalones. el problema que conlleva la amplitud tan pequeña de las señales bioeléctricas. Adquisición señales bioeléctricas.Trastornos electrolíticos: Desequilibrio en los niveles de electrolitos.150 DC .02 . Ya sea por causas ajenas. ayudarán al procesado y eliminación de éste.

1. La transmisión de la parte digital añade ruido a la parte analógica. Cargas electrostáticas. 38 . movimiento del paciente. siendo responsable de las alteraciones del equipo. Debido al bajo nivel de la señal. Potenciales de contacto El hecho de colocar un electrodo en contacto con la piel a través de un electrolito conlleva a una distribución de cargas entre el interfaz electrodo-electrolito dando lugar a la aparición de un potencial. Citaremos los siguientes: Ruido provocado por el exterior. etc. 4. incluyendo. 5. Para ello debemos respetar los siguientes puntos: Reposo y relajación del paciente en ambiente adecuado para estas dos condiciones. es preciso amplificarla. La principal a destacar es producida por el contacto entre el electrodo y la piel del paciente. Ruido provocado por el interior. Potenciales bioeléctricos. provocan alteraciones en la línea e incluso saturaciones en los amplificadores. Provoca cambios de amplitud que alteran el registro del ECG. Causadas por la fuente de alimentación y los propios componentes eléctricos. Este problema surge por el movimiento del sujeto en estudio. Respiración. Fuentes internas de ruido. etc. Causadas por la circulación sanguínea. limpiar la superficie con alcohol. En el momento en que la posición del electrodo se mueve respecto al electrolito producirá una alteración en la distribución de la carga alterando la señal del ECG. Para solventar este problema se deberían utilizar componentes de calidad debido al limitado ancho de banda del sistema. También podemos citar otros motivos como la red o cargas electrostáticas entre otros. las capacitivas como son el acoplamiento con el paciente. 2. las baterías reducen el ruido además de aumentar la seguridad del paciente. e incluso el ruido generado por los propios componentes electrónicos. y entre los conductores y el equipo. Añadiremos las inductivas. 3. y que el paciente se encuentre en un perfecto estado de reposo.Ruido en la etapa de amplificación. También se pueden descartar. La red. otros aspectos bioeléctricos o fisiológicos. a) Fuente de alimentación. La solución sería fijar bien los electrodos. de la masa muscular. pero para conseguirlo de manera correcta para futuros tratamientos de dicha señal es preciso tener en cuenta distintos factores que pueden dar lugar a señales de ruido que interfieren con la señal deseada. puede llegar a generar hasta 50Hz. como puede ser la respiración. Interferencias (Ruido).

Frecuencia. 39 . asfixia.Características eléctricas del paciente. La corriente que circula por el cuerpo humano depende de los siguientes factores: Magnitud de la corriente que circula. Los valores de dichas corrientes deben estar entre los estándares (entre 0. Duración del paso de la corriente. pues a superiores a estos podrían provocar contracciones involuntarias de los músculos. etc.5-10mA). Variabilidad de la superficie a zonas interiores.

José Jaime Esqueda Elizondo Universidad Autónoma de Baja California.Facultad de Cs. .Monzón. Manuel Mazo. Unidad Tijuana -Análisis Espectral del Electrocardiograma Agretti. Hernán G. David Provencio Dpto.edu/investigacion/episteme/numero1-05/reportes/a_diseno. de Electrónica. Depto. Luciano Boquete. Biomédica UAM-I 2007. C. Jorge E.Bibliografía: -Jiménez Santiago M. Exactas y Naturales y Agrimensura UNNE. -Estudio de la Transformada de Fourier y La Transformada Wavelet como Herramienta de Análisis y Clasificación De Señales EEG José L. Universidad de Alcala. Tesis Lic.asp 40 . -Matlab e Interfaces Gráficas CONATEC 2002 M. Mejía González Jaime.uvmnet. de Ingeniería Eléctrica . Sira Palazuelos. Martín. Gonzalo. Electrocardiógrafo Portátil. Ing. http://www. Escuela Politécnica.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->