SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

199
SISTEMA PORTABLE PARA LA ADQUISICION Y PROCESAMIENTO DE SEÑALES ECG, CON APLICABILIDAD EN DISPOSITIVOS MOVILES SANTIAGO VILLAFUERTE ECHEVERRI - 1125634 HARBY TORRES AVILA - 1135083 UNIVERSIDAD DE SAN BUENAVENTURA CALI FACULTAD DE INGENIERÍAS PROGRAMA DE INGENIERÍA ELECTRÓNICA SANTIAGO DE CALI 2017

Transcript of SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Page 1: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICION Y PROCESAMIENTO DE

SEÑALES ECG, CON APLICABILIDAD EN DISPOSITIVOS MOVILES

SANTIAGO VILLAFUERTE ECHEVERRI - 1125634

HARBY TORRES AVILA - 1135083

UNIVERSIDAD DE SAN BUENAVENTURA CALI

FACULTAD DE INGENIERÍAS

PROGRAMA DE INGENIERÍA ELECTRÓNICA

SANTIAGO DE CALI

2017

Page 2: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICION Y PROCESAMIENTO DE

SEÑALES ECG, CON APLICABILIDAD EN DISPOSITIVOS MOVILES

SANTIAGO VILLAFUERTE ECHEVERRI - 1125634

HARBY TORRES AVILA - 1135083

Trabajo de Grado

Director

Ing. José Fernando Valencia Murillo, Ph.D.

UNIVERSIDAD DE SAN BUENAVENTURA CALI

FACULTAD DE INGENIERÍAS

INGENIERÍA ELECTRÓNICA

SANTIAGO DE CALI

2017

Page 3: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

DEDICATORIA

A nuestros padres, eje fundamental para iniciar la carrera de ingeniería electrónica, no sólo

limitándose a lo académico sino también como apoyo moral y psicológico, además de ser un

soporte incondicional en todas las etapas de la vida.

A nuestras familias, por apoyarnos en éste camino y siempre creer que era posible, además

de darnos aliento en los momentos más difíciles.

A nuestros profesores, que representan todo lo que hemos aprendido y de quienes hemos

tomado ejemplo en el ámbito profesional, siempre con la mira en el objetivo principal de

nuestro camino en la carrera.

AGRADECIMIENTOS

Agradecemos a todos los que de alguna manera nos apoyaron aportando conocimientos,

materiales o simplemente con palabras de aliento para seguir adelante con el proyecto que

desde un principio se caracterizó por ser un reto a nivel personal y académico bastante grande.

Finalmente a Dios gracias, por darnos vida y oportunidades para llegar a este punto de nuestra

existencia, próximos a recibir un título que representa todos nuestros logros académicos.

Page 4: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Este trabajo de grado, en la modalidad de

proyecto de investigación, es aceptado como

uno de los requisitos para obtener el título de

Ingeniero Electrónico en la Universidad de San

Buenaventura Cali.

__________________________________________________

ING. JOSE FERNANDO VALENCIA MURILLO, PhD

__________________________________________________

ING. VLADIMIR TRUJILLO OLAYA, PhD

__________________________________________________

ING. MARIO ANDRES GONZALEZ GUTIERREZ

Santiago de Cali, 20 de Noviembre del 2017

Page 5: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

TABLA DE CONTENIDO

RESUMEN ........................................................................................................................... 17

CAPITULO 1. INTRODUCCIÓN ....................................................................................... 20

1.1. Introducción .............................................................................................................. 20

1.2. Definición del problema ........................................................................................... 20

1.3. Justificación .............................................................................................................. 22

1.4. Objetivos ................................................................................................................... 24

1.4.1. General .............................................................................................................. 24

1.1.1. Específicos ........................................................................................................ 24

1.2. Metodología .............................................................................................................. 24

1.2.1. Etapa de investigación y fundamentación ......................................................... 25

1.2.2. Etapa de desarrollo ............................................................................................ 26

1.2.3. Etapa de ejecución............................................................................................. 26

1.2.4. Etapa de implementación .................................................................................. 27

1.2.5. Etapa de resultados ............................................................................................ 27

CAPITULO 2. MARCO REFERENCIAL ........................................................................... 28

2.1. Marco teórico ............................................................................................................ 29

2.1.1. Señales Biomédicas ........................................................................................... 29

2.1.2. Señales Bioeléctricas ......................................................................................... 29

2.1.3. Electrocardiograma (ECG)................................................................................ 30

2.1.4. Derivaciones ...................................................................................................... 32

2.1.4.1. Derivaciones de plano frontal ........................................................................ 33

2.1.4.1.1. Derivaciones bipolares clásicas del electrocardiograma ............................. 33

Page 6: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

2.1.4.1.2. Derivaciones monopolares aumentadas ...................................................... 34

2.1.4.2. Derivaciones del plano horizontal .................................................................. 35

2.1.4.2.1. Derivaciones precordiales ........................................................................... 36

2.1.5. Dispositivos de aplicación específica (ASIC’s) ................................................ 37

2.1.5.1. Tipos de ASIC’s: ............................................................................................ 37

2.1.5.2. ASIC’s utilizados para mediciones ECG: ...................................................... 38

2.1.6. Filtro Antialiasing ............................................................................................. 39

2.1.6.1. Efecto Aliasing ............................................................................................... 40

2.1.6.2. Descripción Filtro........................................................................................... 41

2.1.7. Interferencias de las señales electrocardiográficas ........................................... 41

2.1.7.1. Filtros digitales ............................................................................................... 42

2.1.7.2. Tipos de filtros ............................................................................................... 42

2.1.8. Funcionamiento principal de un filtro digital.................................................... 45

2.1.9. Filtros digitales básicos para señales electrocardiográficas .............................. 46

2.1.10. Sistemas de adquisición de señales biomédicas .............................................. 47

2.1.11. Amplificadores de biopotenciales ................................................................... 48

2.1.12. Norma internacional para equipos electromédicos ......................................... 49

2.2. Marco histórico ......................................................................................................... 49

2.2.1. Historia del ECG ............................................................................................... 49

2.2.2. Origen de los ASIC’s ........................................................................................ 51

CAPITULO 3. CAPTURA Y PROCESAMIENTO DE LA SEÑAL ECG ......................... 53

3.1. Consideraciones para el diseño ................................................................................. 53

3.1.1. Matriz de necesidades ....................................................................................... 53

3.1.2. Diagrama de Pareto ........................................................................................... 54

Page 7: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

3.2. Elección de materiales (electrodos y ASIC) ............................................................. 55

3.2.1. Integrado ADS1298 .......................................................................................... 57

3.3. Elección del medio de transmisión ........................................................................... 59

3.3.1. PIC32MX795F512H ......................................................................................... 61

3.4. Elección cable de paciente ........................................................................................ 63

3.5. Protección del paciente ............................................................................................. 65

3.6. Aislamiento del circuito ............................................................................................ 68

3.7. Alimentación del ADS1298 ...................................................................................... 72

3.8. Puertos de comunicación .......................................................................................... 73

3.8.1. Bus de comunicación SPI ................................................................................. 74

3.8.2. UART ................................................................................................................ 75

3.8.3. USB ................................................................................................................... 76

3.9. Listado de componentes ........................................................................................... 78

CAPITULO 4. DISEÑO DEL CIRCUITO DEL SISTEMA PORTABLE. ........................ 80

4.1. Diagrama de bloques del esquema del circuito ........................................................ 80

4.1.1. Primera etapa: Diseño de circuito de protección de pacientes y filtros antialiasing

..................................................................................................................................... 80

4.1.2. Segunda etapa: Circuito del ADS1298 ............................................................. 83

4.1.3. Tercera etapa: Fuentes de alimentación análogas para el ADS1298 ................ 85

4.1.4. Cuarta etapa: Circuito del PIC32MX795F512H ............................................... 87

4.1.5. Quinta etapa: Circuito de alimentación ............................................................. 89

4.2. Diseño del circuito físico .......................................................................................... 90

CAPITULO 5. PRUEBAS PRELIMINARES ..................................................................... 94

Page 8: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

5.1. Conversión del dato binario a voltaje ....................................................................... 94

5.2. Visualización de resultados con diferentes pruebas en MATLAB® ........................ 97

5.2.1. Señal cuadrada .................................................................................................. 97

5.2.2. Señal sinusoidal ................................................................................................. 99

5.3. Pruebas con ADS1298 ............................................................................................ 101

5.3.1. Frecuencia de muestreo ideal .......................................................................... 101

5.3.2. Pruebas con señales externas .......................................................................... 102

5.3.3. Ganancia ideal ................................................................................................. 104

5.4. Filtros digitales desarrollados en MATLAB® ....................................................... 108

CAPITULO 6. PROGRAMACIÓN ................................................................................... 111

6.1. Inicializaciones ....................................................................................................... 111

6.1.1. Definiciones .................................................................................................... 111

6.1.2. Variables ......................................................................................................... 113

6.1.3. Entradas y salidas ............................................................................................ 115

6.1.4. UART .............................................................................................................. 115

6.1.5. Serial Peripheral Interface (SPI) ..................................................................... 116

6.1.6. Interrupciones .................................................................................................. 120

6.1.7. Funciones para trabajar con el puerto SPI....................................................... 122

6.1.8. Registros del ADS1298 ................................................................................... 124

6.2. Diagrama de flujo ................................................................................................... 131

6.2.1. Función Complete_trama ................................................................................ 132

6.2.1.1. Función crc16 ............................................................................................... 134

6.2.2. Función SendDataBuffer ................................................................................. 135

Page 9: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

6.2.3. Función interrupción ....................................................................................... 136

6.2.3.1. Función ADS_updateDataCH8 .................................................................... 137

6.2.3.2. Función ADS_updateDataCHx .................................................................... 139

6.2.3.3. Función de complemento a 2 (C2DATA) .................................................... 140

6.3. Programación interfaz de usuario en MATLAB® ................................................. 141

CAPITULO 7. RESULTADOS ......................................................................................... 144

7.1. Conexión de electrodos ........................................................................................... 144

7.2. Puesta en funcionamiento del programa ................................................................. 146

7.3. Gráficas de funcionamiento en tiempo real ............................................................ 148

7.3.1. Todas las derivaciones trazándose de manera óptima..................................... 148

7.3.2. Electrodo RA desconectado ............................................................................ 149

7.3.3. Electrodo LA desconectado ............................................................................ 150

7.3.4. Electrodo RL desconectado............................................................................. 150

7.3.5. Electrodo LL desconectado ............................................................................. 151

7.3.6. Electrodo V1 desconectado ............................................................................. 152

7.3.7. Electrodo V2 desconectado ............................................................................. 152

7.3.8. Electrodo V3 desconectado ............................................................................. 153

7.3.9. Electrodo V4 desconectado ............................................................................. 153

7.3.10. Electrodo V5 desconectado ........................................................................... 154

7.3.11. Electrodo V6 desconectado ........................................................................... 154

7.3.12. Detección de error por CRC16 ...................................................................... 155

7.4. Comparación con graficas estándar del ECG ......................................................... 155

7.5. Costos ..................................................................................................................... 159

Page 10: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

CAPITULO 8. CONCLUSIONES E IMPACTO DEL PROYECTO ................................ 160

8.1. Conclusiones ........................................................................................................... 160

8.2. Impacto del proyecto (salud, social, económico) ................................................... 163

8.2.1. Impacto en salud ............................................................................................. 163

8.2.2. Impacto social ................................................................................................. 163

8.2.3. Impacto económico ......................................................................................... 164

BIBLIOGRAFIA ................................................................................................................ 165

ANEXOS ............................................................................................................................ 169

Page 11: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

LISTA DE TABLAS

Tabla 1. Guía para matriz de necesidades ............................................................................ 53

Tabla 2. Evaluación de necesidades ..................................................................................... 54

Tabla 3. Matriz de necesidades ............................................................................................ 54

Tabla 4. ASIC para la captura de señales biomédicas. ......................................................... 56

Tabla 5. TABLA COMPARATIVA PIC ............................................................................. 60

Tabla 6. Características PIC32MX795F512H ...................................................................... 62

Tabla 7. Características integrado PESD5V0S2BT. ............................................................ 66

Tabla 8. Características integrado OPA376AIDCKT .......................................................... 68

Tabla 9. Características integrado ADUM3160BRWZ ........................................................ 69

Tabla 10. Corrientes integrados principales. ........................................................................ 70

Tabla 11. características integrado NCM6S0505EC ............................................................ 71

Tabla 12. Características fuentes de alimentación................................................................ 72

Tabla 13. Características integradoADM7154ARDZ. ......................................................... 73

Tabla 14. Tabla de componentes completa .......................................................................... 78

Tabla 15. Valores ideales del código de salida. ................................................................... 94

Tabla 16. Comparación de los valores de entrada vs el código de salida............................. 95

Tabla 17. Comparación de los valores de entrada vs el código de salida aplicando a

complemento a 2. .................................................................................................................. 96

Tabla 18. Cantidad de bits en comunicación SPI. .............................................................. 119

Tabla 19. Valor Registro CONFIG3................................................................................... 125

Tabla 20. Valor Registro CONFIG1................................................................................... 125

Tabla 21. Valor Registro CONFIG2................................................................................... 126

Tabla 22.Valor Registro CONFIG4.................................................................................... 126

Tabla 23. Valor Registro LOFF .......................................................................................... 127

Tabla 24. Valor Registro LOFF_SENS(P/N) ..................................................................... 127

Tabla 25. Valor Registro RLD_SENS(P/N) ....................................................................... 128

Tabla 26. Valor Registro CHxSET ..................................................................................... 129

Tabla 27. Valor Registro WCT1......................................................................................... 131

Tabla 28. Valor Registro WCT2......................................................................................... 131

Page 12: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Tabla 29. Paquetes de datos de lectura ADS1298 .............................................................. 139

Tabla 30. Costo total de fabricación. .................................................................................. 159

Page 13: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

LISTA DE FIGURAS

Figura 1. Diseño metodológico general ................................................................................ 25

Figura 2. Esquema general para el desarrollo del proyecto .................................................. 28

Figura 3. Ondas de la señal ECG .......................................................................................... 31

Figura 4. Triángulo de Einthoven ......................................................................................... 31

Figura 5. Electrodos médicos. .............................................................................................. 32

Figura 6. Esquema de las derivaciones monopolares. .......................................................... 35

Figura 7. Esquema de las derivaciones precordiales. ........................................................... 36

Figura 8. Tipos de filtros ...................................................................................................... 44

Figura 9. Diagrama de bloques de un filtro digital tipo FIR ................................................ 45

Figura 10. Diagrama de bloques de un filtro digital tipo IIR ............................................... 46

Figura 11. Diagrama de sistema generalizado para la adquisición de biopotenciales .......... 48

Figura 12. Diagrama de Pareto: Necesidades ....................................................................... 55

Figura 13. Integrado ADS1298 ............................................................................................ 58

Figura 14. PIC32MX795F512H ........................................................................................... 62

Figura 15. Conductor de 10 derivaciones tipo pinza fija. ..................................................... 64

Figura 16. Tipos de conectores para enlace cable - equipo. ................................................. 64

Figura 17. Tipos de conectores para derivaciones. ............................................................... 64

Figura 18. Cable de 10 conductores de derivación tipo presión. .......................................... 65

Figura 19. Encapsulado SOT32 integrado PESD5V0S2BT. ................................................ 67

Figura 20. Símbolo integrado PESD5V0S2BT. ................................................................... 67

Figura 21. Integrado ADUM3160BRWZ ............................................................................. 69

Figura 22. Integrado NCM6S0505EC. ................................................................................. 71

Figura 23. Integrado ADM7154ARDZ. ............................................................................... 73

Figura 24. Configuración de un bus SPI con un dispositivo maestro y 3 esclavos. ............. 75

Figura 25. Diagrama de bloques UART. .............................................................................. 76

Figura 26. Pines y conector estándar USB. .......................................................................... 77

Figura 27. Circuito protección de pacientes. ........................................................................ 82

Figura 28. Circuito ADS1298. .............................................................................................. 84

Figura 29. Fuentes de alimentación ADS1298. .................................................................... 86

Page 14: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Figura 30. Circuito PIC32MX795F512H. ............................................................................ 87

Figura 31. Circuito externo para programar PIC32MX ....................................................... 88

Figura 32. Pines cableados externamente para la configuración del ADS1298 ................... 89

Figura 33. Circuito alimentación .......................................................................................... 90

Figura 34. PCB capa TOP y BOTTOM. .............................................................................. 91

Figura 35. Placa entregada por Microcircuitos. .................................................................... 92

Figura 36. Placa terminada. .................................................................................................. 93

Figura 37. Valores análogos vs binarios. .............................................................................. 95

Figura 38. Valores análogos vs datos binarios con complemento a 2. ................................. 96

Figura 39. Código para graficar la señal generada en MATLAB®. .................................... 97

Figura 40. Gráficas generadas. ............................................................................................. 98

Figura 41. Gráficas de los 4 canales en MATLAB®. .......................................................... 99

Figura 42. Señal de entrada al ADS1299 en osciloscopio. ................................................. 100

Figura 43. Señal de medida con el ADS1299 y graficada en MATLAB®. ....................... 100

Figura 44. Circuito para la adquisición de datos. ............................................................... 101

Figura 45. Pruebas a diferentes frecuencias de muestreo. .................................................. 102

Figura 46. Señal triangular de 1Hz muestreada .................................................................. 103

Figura 47. Señal triangular de 2Hz muestreada .................................................................. 103

Figura 48. Señal triangular de 5Hz muestreada .................................................................. 104

Figura 49. Señal ECG, G=1 ................................................................................................ 105

Figura 50. Señal ECG, G=2 ................................................................................................ 105

Figura 51. Señal ECG, G=3 ................................................................................................ 106

Figura 52. Señal ECG, G=4 ................................................................................................ 106

Figura 53. Señal ECG, G=6 ................................................................................................ 107

Figura 54. Señal ECG, G=8 ................................................................................................ 107

Figura 55. Señal ECG, G=12 .............................................................................................. 108

Figura 56. Filtro pasa bajas para eliminar ruidos por respiración en MATLAB® ............ 109

Figura 57. Filtro Notch en MATLAB® ............................................................................. 109

Figura 58. Filtro pasa altas para eliminar nivel DC en MATLAB® .................................. 110

Figura 59. Registro SPIxCON ............................................................................................ 118

Page 15: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Figura 60. Gráfico de configuración SPI ............................................................................ 120

Figura 61. Envío de registro de lectura al ADS1298 .......................................................... 123

Figura 62. Envío de escritura de datos al ADS1298........................................................... 123

Figura 63. Funcionamiento del terminal central de Wilson (WCT) ................................... 130

Figura 64. Diagrama de flujo principal para PIC32MX795F512H .................................... 132

Figura 65. Función Complete_trama .................................................................................. 133

Figura 66. Función crc16 .................................................................................................... 135

Figura 67. Función interrupción ......................................................................................... 137

Figura 68. Función ADS_updateDataCH8 ......................................................................... 138

Figura 69. Función de actualizar datos para canales pares ................................................. 140

Figura 70. Función de actualizar datos para canales impares ............................................. 140

Figura 71. Función de complemento a 2 ............................................................................ 141

Figura 72. Interfaz gráfica de usuario ................................................................................. 142

Figura 73. Diagrama de flujo del funcionamiento de la interfaz de usuario. ..................... 143

Figura 74. Electrodos pegados en las extremidades ........................................................... 144

Figura 75. Electrodos pegados al tórax .............................................................................. 145

Figura 76. Cable ECG conectado al paciente ..................................................................... 145

Figura 78. Puesta en funcionamiento de la tarjeta "ECG Device". .................................... 146

Figura 79. Interfaz ECG en MATLAB® ............................................................................ 147

Figura 80. Interfaz lista para iniciar a graficar ................................................................... 147

Figura 81. Error por comunicación por el cable serial ....................................................... 148

Figura 82. Gráfica de 12 derivaciones tomada con “ECG device”. ................................... 149

Figura 83. Prueba electrodo RA desconectado. .................................................................. 149

Figura 84. Prueba electrodo LA desconectado. .................................................................. 150

Figura 85. Prueba electrodo RL desconectado. .................................................................. 151

Figura 86. Prueba electrodo LL desconectado. .................................................................. 151

Figura 87. Prueba electrodo V1 desconectado. .................................................................. 152

Figura 88. Prueba electrodo V2 desconectado. .................................................................. 152

Figura 89. Prueba electrodo V3 desconectado. .................................................................. 153

Figura 90. Prueba electrodo V4 desconectado. .................................................................. 153

Page 16: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

Figura 91.Prueba electrodo V5 desconectado. ................................................................... 154

Figura 92. Prueba electrodo V6 desconectado. .................................................................. 154

Figura 93. Detección de error por CRC16. ......................................................................... 155

Figura 93. ECG de 12 derivaciones tomado con prototipo diseñado por los autores. ....... 156

Figura 95. Electrocardiograma paciente en estado normal tomado con ECG clínico. ....... 157

Figura 96. Electrocardiograma paciente en estado normal tomado con ECG clínico. ....... 157

Figura 97. EGG graficado con sistema portable................................................................. 158

Page 17: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…17

RESUMEN

La toma de un electrocardiograma es de vital importancia a la hora de realizar diagnósticos

de enfermedades cardiovasculares, ya que puede revelar el estado y las condiciones actuales

del corazón del paciente al cual se le realice dicho procedimiento. En la actualidad, las

diferentes competencias de la ingeniería, en este caso de la ingeniería electrónica, ha

incentivado al desarrollo de aplicaciones en el campo de la biomedicina implementando

dispositivos que nos permiten la adquisición y el procesamiento de señales bioeléctricas, lo

que permite un control más específico y puntual de diferentes órganos en el cuerpo humano,

facilitando y agilizando los procedimientos médicos y mejorando las condiciones del

paciente en intervenciones. En este proyecto se plantea el diseño de un sistema portable para

la adquisición y procesamiento de señales ECG, con aplicabilidad en dispositivos móviles,

el cual se caracteriza principalmente por ser un dispositivo portable y de fácil implementación

tanto para pacientes en lugares como su residencia, y para personal médico en centros

asistenciales de salud.

El primer paso para el desarrollo del prototipo es realizar el diseño de la tarjeta electrónica

basado en el circuito integrado de aplicación específica ADS1298 de la compañía Texas

Instruments, diseñado principalmente para trabajar con señales ECG, el cual cuenta con 8

canales para capturar señales y puerto de comunicación SPI. La tarjeta trabaja con el

PIC32MX795F512H de la empresa Microchip como procesador general del sistema que

también cuenta con puerto de comunicación SPI para la trasferencia de datos con el

ADS1298. La programación del dispositivo se realiza directamente desde el IDE de

microchip usando librerías específicamente diseñadas para configurar las funciones

primarias del dispositivo. Finalmente, se utiliza una interfaz gráfica de usuario realizada en

MATLAB® para la visualización de las señales obtenidas.

Las pruebas que se realizaron para la validación del correcto funcionamiento demuestran que

se cumple con lo planteado en el desarrollo del sistema tanto en la parte de hardware como

en software y se implementan los requerimientos necesarios de acuerdo con las normas

internacionales para equipos biomédicos. Finalmente, se obtuvo un dispositivo que registra

Page 18: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…18

12 derivaciones del ECG (Lead I, Lead II, Lead III, aVF, aVR, aVL, V1, V2, V3, V4, V5 y

V6) con una frecuencia de muestreo de 250 muestras por segundo, las cuales se pueden

visualizar y registrar en MATLAB®.

Palabras claves: señales bioeléctricas, circuito integrado de aplicación específica,

electrocardiograma, enfermedades cardiovasculares, interfaz gráfica de usuario.

Page 19: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…19

ABSTRACT

The acquisition of electrocardiogram (ECG) signals is vital for diagnosing cardiovascular

diseases, as it can reveal the actual state and conditions of the heart in patients under study.

Currently, the fast advance of the electronic engineering had allowed the development of

applications on the biomedicine field, implementing devices that allow bioelectrical signal

acquisition and processing, leading to a specific and punctual monitorization of several

organs of the human body. This makes easier, faster and better the medical procedures,

improving the patients’ conditions during the medical interventions. In this project, a design

of a portable system for ECG signal acquisition and processing, with applicability in mobile

devices, is proposed, which is characterized principally for being a portable device that is

easy to implement, both in the patient’s residences, as well as health care centers.

The first step to develop the prototype is to build the electronic board based on the ADS1298

application-specific integrated circuit, by Texas Instruments Company, designed principally

for ECG signals that counts with eight channels for data acquisition and a SPI communication

port. The board works with the PIC32MX795F512H by the Microchip Company as the main

processor of the system, which also has a SPI port for data transference between the

ADS1298 and the PIC. The device programming is done through the MPLAB interface

programming environment (MPLAB IPE), using libraries that were especially designed for

the main code of the proposed device. Finally, a graphical user interface made in MATLAB®

was implemented to display the recorded signals.

The performed tests to validate the correct functionality of the ECG device shows that the

planned development system has been accomplished, both in hardware and software. The

needed requirements have been implemented in accordance with international rules of

biomedical equipment. Finally, a device that registers twelve leads of ECG (Lead I, Lead II,

Lead III, aVF, aVR, aVL, V1, V2, V3, V4, V5 y V6) has been obtained with a sample

frequency of 250SPS, which can be visualized and registered in MATLAB®.

Key words: Biomedical signals, application-specific integrated circuit, ECG, cardiovascular

diseases, graphical user interface

Page 20: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…20

CAPITULO 1. INTRODUCCIÓN

1.1. Introducción

Hoy en día principalmente se busca realizar diagnósticos más óptimos en el área de la

biomedicina, por lo tanto, se hace primordial el estudio de las señales bioeléctricas que genera

el cuerpo humano. Estas señales entregan diferentes tipos de información que pueden llegar

a facilitar a un médico a establecer diferentes enfermedades y en casos muy puntuales

enfermedades cardiovasculares que son las generadas por deficiencias en el corazón.

Concretamente en la medicina existe un campo de amplio interés que es la

electrocardiografía, existiendo diferentes tecnologías asociadas a este tipo de enfoque

médico, que por medio de sistemas de capturas y procesamientos de señales ECG permiten

obtener resultados que son de vital importancia para la investigación de enfermedades

cardiovasculares.

En este proyecto se pretende el desarrollo de un sistema de adquisición, procesamiento y

visualización de señales ECG, usando a la ingeniería electrónica como una herramienta

tecnológica que permita el desarrollo investigativo en el área de las aplicaciones biomédicas.

1.2. Definición del problema

En el mundo actual, las enfermedades cardiovasculares (ECV) han tomado fuerza atacando

a gran parte de la población en todo el mundo, desde jóvenes hasta adultos mayores. Sus

causas se deben a muchos factores como lo son la degeneración del corazón, mala

alimentación, estrés de la vida diaria, etc. Se pueden caracterizar las ECV en 3 grandes grupos

según su naturaleza: eléctricas (fibrilación auricular y ventricular, función anormal del

nódulo sinusal, sincope, etc.), circulatorias (infarto del miocardio, angina de pecho, etc.) y

problemas estructurales (insuficiencia cardíaca, problemas en las válvulas del corazón) [1].

Page 21: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…21

Para controlar una ECV se debe hacer un debido reconocimiento, diagnóstico y tratamiento

de la patología. Paradójicamente muchas de los decesos causados por enfermedades de esta

índole, podrían ser evitadas si se reconocen a tiempo.

En cuanto a los métodos de diagnóstico, se pueden hacer diferentes estudios en base a los

resultados de pruebas de la química sanguínea, de presión arterial, electrocardiograma

(ECG), radiografías del tórax, Eco cardiograma Doppler a color y pruebas de esfuerzo físico,

siendo el ECG una de las pruebas más rutinarias por ser de tipo no invasivo y de relativamente

fácil adquisición. Estás técnicas (Salvo las pruebas de presión arterial), requieren de

máquinas costosas y tiempos de respuesta bastante amplios para ser realizadas y evaluadas,

lo que puede alargar el tiempo de espera que puede ser vital para un paciente que está

padeciendo una enfermedad [1].

El ECG es la representación gráfica en dos dimensiones de la señal eléctrica producida por

los impulsos de los latidos del corazón (eje vertical) en función del tiempo (eje horizontal).

Comúnmente la señal se obtiene a través de unos electrodos conectados a un instrumento que

encuentra la diferencia de potencial entre ellos. Este voltaje es guardado y procesado con

ciertas especificaciones para graficar finalmente una señal ECG [2].

Una situación problemática se presenta en el caso de aquellas personas que sufren de algún

tipo de ECV y que por alguna razón se les dificulta estar en constante evaluación de su

condición cardíaca, ya sea porque viven en zonas remotas lejos de los centros asistenciales

de salud, por congestión en los centros de salud, demoras en la asignación de citas, o porque

simplemente no tienen acceso a un centro de salud. Por lo tanto, es pertinente contar con

algún medio que permita hacer una lectura del ECG de estos pacientes para que luego pueda

ser analizada por un especialista.

Partiendo del hecho que hoy en día los dispositivos móviles son asequibles para la mayoría

de la población, y el mercado global ha llevado a que sean un requisito para muchas personas,

resulta bastante conveniente utilizarlo para este proyecto. Con un dispositivo móvil se

posibilita la adquisición y el procesamiento de las señales ECG (ya digitalizadas) debido a

que tienen unas características de procesamiento bastante altas, una capacidad de

Page 22: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…22

almacenamiento de datos expandible que permite guardar mucha información, además de

fácil comunicación por internet por medio de redes WIFI o plan de datos.

Se espera que el proyecto que se propone en este documento deje la base para capturar y

procesar señales ECG de manera portátil, que faciliten graficarlas y compartirlas

remotamente, para que posteriormente puedan ser estudiadas por un especialista que se

encargue de su debido control. Para ello se plantea la siguiente pregunta ¿cómo se puede

implementar un sistema portable para la adquisición y procesamiento de señales ECG, con

aplicabilidad en dispositivos móviles?

1.3. Justificación

En 2011 murieron más de 50.000 personas por ECVs en Colombia, cifra que aumentó en

comparación a años anteriores (En 1998 fallecieron alrededor de 38000 personas) [3]. En

países como Estados unidos, 1 de cada 6 personas mueren anualmente por causas cardiacas.

[4]. Esta situación coloca a las ECV como uno de los temas prioritarios en salud que deben

ser abordados a nivel mundial.

Con el estudio de las señales ECG se pueden detectar diferentes ECV (Aproximadamente 30

enfermedades diferentes relacionadas con el corazón) como lo son: anomalías en el sistema

de conducción, cardiopatía isquémica, insuficiencia cardiaca, infarto del miocardio,

hipertensión, arritmia, entre otras [5]. Ahora bien, si los pacientes que padecen estas

enfermedades son tratados con las respuestas obtenidas por un ECG a tiempo, se podría poner

en alerta al médico encargado y así evitar problemas más graves. En este trabajo se propone

llegar a ser el puente entre el médico y el paciente, pues precisamente la idea no es realizar

la regulación de medicamentos para un afectado, si no llevar la información lo más rápido

posible al especialista para que él se encargue de su debido proceso.

En Colombia, la cobertura del sistema de salud para el 2012 ya era del 90,8%, sin embargo,

a pesar de que la cifra había mejorado en referencia a 1997 cuando era del 56,9%, el acceso

de los pacientes a las redes de salud había decaído del 79,1% al 75,5% en los mismos años

[6]. Se debe resaltar la diferencia entre cobertura y acceso, la cual radica en que cobertura es

Page 23: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…23

la cantidad de personas que están aseguradas por algún sistema de salud, mientras acceso es

lo que indica la población que tiene la posibilidad de ser atendido por alguna entidad de salud.

Algunas de las barreras que impiden el acceso de las personas a un sistema de salud, es la

falta de centros de atención, falta de dinero o mala calidad de servicio, en esta última trata de

referirse al hecho de que los tiempos de atención o la congestión por una gran cantidad de

pacientes impiden que todas las personas sean atendidos de manera óptima, lo que genera

caos y puede ser fatal en el momento de requerir exámenes que son de alta prioridad, como

el caso de las personas que sufren alguna ECV. Con el dispositivo propuesto se podría llegar

a mejorar el acceso y la calidad de servicio de los centros médicos.

Por otra parte, a 2014, tan solo en Colombia habían más de 14.4 millones de usuarios de

celulares inteligentes [7], también se estima que para ese año el 40% de las búsquedas en

Google se hicieron desde un dispositivo móvil. El gerente de Mercado Libre, Martin Gallone

dijo “Solo la aplicación de Mercado Libre Colombia genera el 35% de sus ventas por medio

de Smartphones” [8]. Como se puede notar, el alcance al trabajar con este medio tecnológico

es bastante amplio y está en continua evolución.

Los dispositivos móviles traen consigo procesadores que han hecho que sean un computador

portátil con capacidad telefónica integrada. Se encuentran en el mercado procesadores desde

2 hasta 8 núcleos integrados (dual-core y octa-core respectivamente), además de tener

memorias RAM de hasta 4 y 8 GB, con almacenamientos expandibles hasta 128GB, y todas

estas características juntas posibilitan hacer una gran cantidad de funciones en un solo

instante de tiempo [9].

Lo anterior justifica la presente propuesta de trabajo de grado, la cual pretende aprovechar

las potencialidades de los dispositivos móviles para crear un sistema de captura y

procesamiento de señales ECG, el cual reúna condiciones técnicas que permitan su aplicación

real en pacientes con ECV. Sin embargo, debido a la complejidad del proyecto, se plantea

dejar el desarrollo de la aplicación móvil para un futuro desarrollo, y en el trabajo actual se

pretende realizar una interfaz de usuario en un software de programación conocido como lo

es MATLAB®.

Page 24: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…24

Adicionalmente, esta propuesta se relaciona con un proyecto de investigación liderado por el

profesor José Fernando Valencia, el cual está dedicado a la adquisición, procesamiento y

análisis de señales biomédicas con sistemas electrónicos embebidos.

1.4. Objetivos

1.4.1. General

Implementar un sistema portable para la adquisición y procesamiento de señales ECG, con

aplicabilidad en dispositivos móviles.

1.1.1. Específicos

Caracterizar los sistemas de adquisición de señales ECG en cuanto a tipo y número

de derivaciones.

Detallar diferentes dispositivos de aplicación específica (ASIC’s) para la adquisición

de señales ECG.

Diseñar el sistema electrónico para la adquisición y comunicación de las señales

ECG.

Diseñar una aplicación para controlar la adquisición, el procesamiento y la

visualización de la señal ECG.

Validar el funcionamiento global del sistema diseñado.

Publicar los resultados del proyecto por medio de un artículo o con la participación

en eventos de divulgación.

1.2. Metodología

El proyecto que se va a desarrollar es de tipo investigación aplicada, en el cual se plantea

como objetivo principal implementar un sistema portable para la adquisición y procesamiento

de señales ECG, con aplicabilidad en dispositivos móviles. Para ello se llevará a cabo una

metodología compuesta por varias etapas las cuales serán parte del orden a seguir para la

construcción de la investigación e implementación del proyecto. En la figura 1 se observa un

Page 25: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…25

diagrama general de la metodología y a continuación, se explica en detalle cada una de estas

etapas.

1.2.1. Etapa de investigación y fundamentación

En esta etapa, que es la primera de la metodología, se realizará una búsqueda de información

referente al proyecto, en la cual se consultarán artículos, publicaciones, tesis, investigaciones,

páginas web y estudios anteriores, a nivel mundial, con el fin de clasificar y obtener una

documentación y base de datos precisa y extensa, que sea de vital importancia como

Figura 1. Diseño metodológico general

Page 26: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…26

referencia para el desarrollo del proyecto. Posteriormente se realizará una investigación más

profunda de los documentos encontrados enfatizando de manera puntual en los temas

específicos del proyecto, la cual asentará una base para tomar como punto de partida en la

etapa de desarrollo. Los avances obtenidos se almacenarán en el documento.

1.2.2. Etapa de desarrollo

Con la documentación y fundamentación recopilada en la etapa anterior, se procederá a

identificar los procedimientos, aplicaciones, equipos y circuitos que serán útiles para la

construcción del proyecto, tales como la caracterización del sistema de adquisición de señales

ECG, las diferentes etapas que requiere el sistema del hardware de nuestro sistema portable

para la adquisición, procesamiento y visualización de estas señales.

Se escogerán y definirán los procedimientos, aplicaciones y equipos a trabajar, los cuales

deben ser los adecuados y que permitan desarrollar de una manera más fácil el dispositivo,

realizando un análisis de funcionalidad específica, eficiencia y costos, ya que se pretende

realizar el modelo del circuito base y el diseño de la aplicación para la investigación en curso.

Para esta etapa también se realizará la publicación de los resultados obtenidos en un

documento.

1.2.3. Etapa de ejecución

Con el modelo del circuito y el diseño de la aplicación finalizado en la etapa anterior, se

procederá a implementar de manera física el sistema para realizar las diferentes pruebas de

laboratorio, verificando la funcionalidad de los elementos escogidos para el desarrollo del

dispositivo. Al llevar a cabo estas pruebas se obtendrán datos e información que será útil para

identificar los errores de la unidad piloto y el desarrollo de la aplicación del proyecto, con el

fin de que sean corregidos y lograr la funcionalidad óptima que se espera del dispositivo en

los plazos de tiempo deseados. Finalmente, cuando se compruebe el funcionamiento de cada

uno de los elementos y se integren en un dispositivo que trabaje de la mejor manera, se

realizarán más pruebas simulando las condiciones reales en las que se verá requerido el

Page 27: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…27

sistema, recopilando siempre los datos para adecuar el sistema y así definir un prototipo final.

En esta etapa se compilarán los resultados obtenidos en un documento.

1.2.4. Etapa de implementación

Con la información obtenida en la etapa anterior, partiendo de que se realizaron las

correcciones y pruebas tanto en el circuito del sistema como en el desarrollo de la aplicación,

se procederá a la implementación del prototipo final del dispositivo en el lugar de trabajo real

y se llevaran a cabo pruebas finales para detectar problemas que en esta fase del proyecto

deben ser mínimas. Posteriormente se reunirá la información y todos los datos que entregue

el dispositivo funcional de manera real en un documento.

1.2.5. Etapa de resultados

Como se detallaba anteriormente en cada etapa y en el diagrama metodológico de la fig. 1,

los resultados parciales se transcribían en un documento cada que se terminaba una fase del

proyecto. Ya con el prototipo terminado y los objetivos de la investigación cumplidos, se

finaliza con un escrito final que integre todos los resultados previos, demostrando así que se

ha cumplido con todos los requisitos propuestos en el proyecto de grado.

Page 28: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…28

CAPITULO 2. MARCO REFERENCIAL

En esta sección se presentan los conceptos generales que se relacionan para el desarrollo del

proyecto, con la intención de facilitar la comprensión de los temas específicos que se

involucran en la investigación, tales como señales biomédicas, señales bioeléctricas, señales

electrocardiográficas (ECG), derivaciones del ECG, dispositivos de aplicación específica

(ASIC’s), filtro antialising y sistemas de adquisición de señales.

La forma en que se piensa diseñar el sistema está detallada en la fig. 2, donde se muestran

los bloques generales del desarrollo del trabajo propuesto, compuesto por la parte de

adquisición del ECG, posteriormente por un conversor A/D (Análogo a digital) que se

conectará a un módulo de transmisión, que se encargará de hacer llegar la información digital

al dispositivo, que finalmente graficará la señal ECG y tendrá la posibilidad de manipular la

señal obtenida

Figura 2. Esquema general para el desarrollo del proyecto

Page 29: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…29

2.1. Marco teórico

2.1.1. Señales Biomédicas

El cuerpo humano presenta diferentes etapas de funcionamiento en las cuales se ven

reflejadas varios tipos de señales, como, por ejemplo: eléctricas, químicas o acústicas. Estas

señales en su interior son portadoras de información bastante útil para el desarrollo de la

medicina, pero en muchas ocasiones esta información no puede ser identificada de forma

inmediata, por tanto, necesitan ser decodificadas para así de alguna manera poder extraer de

forma segura los datos que entregan e interpretarlos fácilmente. [10]

2.1.2. Señales Bioeléctricas

Las señales que describen la actividad del corazón, los músculos y el cerebro se denominan

como bioeléctricas y se catalogan como las más importantes provenientes del cuerpo

humano. Específicamente las señales cardiacas y cerebrales registran una actividad constante

y espontánea mientras que las señales musculares aparecen cuando se le aplica un estímulo

externo a una zona designada. Las señales bioeléctricas, por las amplias características y

propiedades que presentan, requieren para su procesamiento varias técnicas específicas, ya

que por los diferentes tipos de onda que manejan, se pueden diagnosticar patologías distintas

por cada análisis.

Los tipos de señales bioeléctricas más conocidas son:

El electroencefalograma (EEG): refleja la actividad eléctrica del cerebro registrada

colocando varios electrodos sobre el cuero cabelludo.

El electrocardiograma (ECG): refleja la actividad eléctrica del corazón y se obtiene

colocando electrodos sobre el pecho, manos y pies.

El electromiograma (EMG): registra la actividad eléctrica de los músculos

esqueléticos, los cuales producen una corriente eléctrica.

Los potenciales evocados (EPs): constituyen una forma de actividad cerebral, la cual

es usualmente evocada por un estímulo sensorial de origen tal como visual o acústico.

Page 30: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…30

El electroneurograma (ENG): resulta de la estimulación de un nervio periférico con

impulso eléctrico.

El electroretinograma (ERG): se usa para estudiar los potenciales eléctricos

generados por la retina del ojo durante una estimulación luminosa [10].

2.1.3. Electrocardiograma (ECG)

Al hablar del electrocardiograma (ECG) se está aduciendo a una representación gráfica de

los latidos del corazón, donde se puede apreciar la magnitud y dirección de la actividad

eléctrica emitida. Con el estudio del ECG se han podido llegar a establecer ciertos

parámetros, dando lugar a las mediciones de ritmo y regularidad cardiaca. Para graficar la

señal, la amplitud de la onda se toma en mili voltios (mV) y normalmente se le asigna un

rango de los 0.5 a 2 mV. Para el estudio del ECG se pueden definir las siguientes ondas que

componen la señal [11]:

La onda “P”: Es la onda de menor elevación, indica que las aurículas son estimuladas

de forma eléctrica para enviar la sangre hacia los ventrículos. Duración: 0.11

segundos. Ancho de banda: 9Hz.

Complejo “QRS”: Es un conjunto de las elevaciones mayores, lo que indica es que

los ventrículos son estimulados eléctricamente para bombear sangre hacia afuera.

Duración: 0.09 segundos. Ancho de banda: 11Hz.

Segmento “ST”: Conformado por una pequeña cantidad de armónicos, indica la

cantidad de tiempo que ocurre desde el final de una contracción de los ventrículos

hasta el comienzo del periodo de reposo.

Onda “T”: Es una onda ascendente. Muestra el periodo de recuperación de los

ventrículos. Duración: 0.15 segundos. Ancho de banda: 6.6Hz.

En la figura 3 se pueden observar las diferentes ondas que componen la señal ECG.

El procedimiento para realizar un ECG de manera convencional se define en 2 etapas: captura

y trazado. Para la captura se ubican pequeños transductores llamados electrodos sobre la piel

de los brazos, de las piernas y del tórax, tratando de formar el triángulo de Einthoven,

Page 31: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…31

esquematizado en la fig. 4. Posteriormente, estos electrodos están conectados a una maquina

a la que envían las señales en mili voltios y ésta se encarga de trazar el registro que se obtiene

de cada señal. Cada trazado representa el registro de la actividad cardíaca en una parte

específica del corazón, lo que se define como derivaciones [11].

Figura 3. Ondas de la señal ECG

Tomado de: https://goo.gl/BV8A6X. Portal web y revista impresa con publicaciones dirigidas

a profesionales del sector de la salud en américa latina, para influenciar en la compra de

tecnologías y equipos médicos. Estos medios hacen parte del grupo empresarial Carvajal.

Figura 4. Triángulo de Einthoven

Tomado de: G. F. Salazar, Manual de electrocardiografía y electroencefalografía, Manual

Moderno, 2007.

Page 32: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…32

Una forma para capturar las señales iónicas que emiten los latidos del corazón y poder

convertirlas en ondas eléctricas para obtener el comportamiento cardiaco, es utilizando unos

dispositivos transductores llamados electrodos (Fig. 5), los cuales están hechos con una cinta

especial que actúa como pegante, aduciendo a un esparadrapo, que tiene una superficie para

contacto cutáneo con el pecho del paciente [12].

En los electrocardiogramas, los electrodos serán utilizados para capturar y medir los impulsos

eléctricos provenientes del corazón en diferentes estados del cuerpo humano. Estos

electrodos se ubican en la zona pectoral del paciente típicamente, dependiendo de la

distribución de las derivaciones que se vayan a utilizar. A continuación, se describirán los

tipos de derivaciones existentes para las señales ECG.

2.1.4. Derivaciones

La información sobre derivaciones se tomó de: [11].

Figura 5. Electrodos médicos.

Tomado de: https://goo.gl/LgjehL. Portal web de CARDIOMED empresa dedicada a la importación y

comercialización de equipos médico – quirúrgicos y la asesoría en temas específicos del sector de la salud

en Colombia.

Page 33: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…33

En el electrocardiograma (EKG o ECG), cuando se obtienen el registro de la diferencia de

potencial entre dos puntos eléctricos se le da el nombre de derivaciones cardiacas. Estas

derivaciones se pueden dar entre dos electrodos conectados en el cuerpo del paciente y se

denomina derivación bipolar o también entre un punto virtual y un electrodo conectado las

cuales se denominan derivaciones monopolares.

Se debe tener muy en cuenta que cuando se vaya a realizar un análisis de cualquier tipo de

derivaciones cardiacas se debe hacer en conjunto con todos los datos que me entregue el

electrocardiograma, puesto que cada derivación es un punto de vista diferente en cuanto el

mismo estimulo eléctrico.

Dependiendo de la zona del plano eléctrico del corazón que se registre en el

electrocardiograma, encontramos diferentes tipos de derivaciones que son:

Derivaciones de las extremidades (plano frontal).

Derivaciones precordiales (plano horizontal).

2.1.4.1. Derivaciones de plano frontal

Se les denomina así, a los tipos de derivaciones del electrocardiograma que se adquieren de

los electrodos ubicados en las extremidades del paciente, las cuales aportan solamente datos

electrocardiográficos del plano frontal.

Estas derivaciones de plano frontal se dividen en dos:

Derivaciones bipolares, las cuales también reciben el nombre de derivaciones clásicas

o derivaciones de Einthoven.

Derivaciones monopolares aumentadas.

2.1.4.1.1. Derivaciones bipolares clásicas del electrocardiograma

Las derivaciones bipolares clásicas o estándares del electrocardiograma son las derivaciones

primarias las cuales fueron representadas en un principio por Einthoven y que básicamente

Page 34: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…34

registran la diferencia de potencial entre dos electrodos colocados en extremidades

diferentes.

“Se tienen tres derivaciones bipolares que son:

D1 ó I: Diferencia de potencial entre brazo derecho y brazo izquierdo. Su vector está

en dirección a 0º.

D2 ó II: Diferencia de potencial entre brazo derecho y pierna izquierda. Su vector

está en dirección a 60º.

D3 ó III: Diferencia de potencial entre brazo izquierdo y pierna izquierda. Su vector

está en dirección a 120º.” [11].

Triangulo y ley de Einthoven:

El triángulo de Einthoven (se denomina así en honor a su inventor) es el conjunto de las tres

derivaciones bipolares mencionadas anteriormente, las cuales generan una ecuación

matemática que se obtienen de la ley de Einthoven: D2=D1+D3.

Para la interpretación de un electrocardiograma, ésta ley obtenida por Einthoven fue de gran

utilidad ya con ella se puede determinar si los electrodos de las extremidades están bien

ubicados, como se esquematiza en la fig. 5, puesto que si se llegara al caso de que uno de los

electrodos variara de posición no se estaría cumpliendo esta ley llegando a la conclusión de

que el electrocardiograma está arrojando datos erróneos.

2.1.4.1.2. Derivaciones monopolares aumentadas

Las derivaciones monopolares de las extremidades registran en el ECG la diferencia de

potencial entre un punto teórico en el centro del triángulo de Einthoven, con valor de 0 y el

electrodo de cada extremidad, permitiendo conocer el potencial absoluto en dicho electrodo.

Inicialmente a estas derivaciones se los dio el nombre de VR, VL y VF.

Page 35: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…35

La V tiene como significado vector, y las letras R, L, F significa derecha, izquierda y pie (por

su significado inglés), luego se le incorporo la letra minúscula a que significa amplificada

(Fig. 6).

“Las derivaciones monopolares aumentadas son:

aVR: Potencial absoluto del brazo derecho. Su vector está en dirección a -150º.

aVL: Potencial absoluto del brazo izquierdo. Su vector está en dirección a -30º.

aVF: Potencial absoluto de la pierna izquierda. Su vector está en dirección a 90º.”

[11].

2.1.4.2. Derivaciones del plano horizontal

Las derivaciones precordiales del electrocardiograma son seis (Fig. 7). Se denominan con

una V mayúscula y se numeran del 1 al 6.

Son las mejores derivaciones del electrocardiograma para precisar alteraciones del ventrículo

izquierdo, sobre todo de las paredes anterior y posterior.

Figura 6. Esquema de las derivaciones monopolares.

Tomado de: G. F. Salazar, Manual de electrocardiografía y

electroencefalografía, Manual Moderno, 2007.

Page 36: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…36

“En el electrocardiograma normal, en las derivaciones precordiales, los complejos QRS son

predominantemente negativos en las derivaciones V1 y V2 (tipo rS) y predominantemente

positivos en V4 a V6 (tipo Rs).” [11].

2.1.4.2.1. Derivaciones precordiales

“V1: Esta derivación del electrocardiograma registra potenciales de las aurículas, de parte

del tabique y pared anterior del ventrículo derecho. El QRS presenta una onda R pequeña

seguida de una onda S profunda.

V2: El electrodo de esta derivación precordial, está encima de la pared ventricular derecha,

por tanto, la onda R es ligeramente mayor que en V1, seguida de una onda S profunda.

V3: Derivación transicional entre potenciales izquierdos y derechos del ECG, por estar el

electrodo sobre el septo interventricular. La onda R y la onda S suelen ser casi iguales.

V4: El electrodo de esta derivación está sobre el ápex del ventrículo izquierdo, donde es

mayor el grosor. Presenta una onda R alta seguida de una onda S pequeña.

V5 y V6: Estas derivaciones del electrocardiograma están situadas sobre el miocardio del

Ventrículo Izquierdo, cuyo grosor es menor al de V4. Por ello la onda R es menor que en V4,

aunque sigue siendo alta. La onda R está precedida de una onda Q pequeña.” [13]

Figura 7. Esquema de las derivaciones precordiales.

Tomado de: G. F. Salazar, Manual de electrocardiografía y electroencefalografía, Manual Moderno, 2007.

Page 37: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…37

2.1.5. Dispositivos de aplicación específica (ASIC’s)

Definido como un integrado de aplicación específica (Por sus siglas en inglés Aplication

Specific Integrate Circuit), es un dispositivo que, como su nombre lo indica, tiene un

propósito o una aplicación específica para un fin determinado.

Existe en el mercado una amplia gama de ASIC’s de diferentes fabricantes, referencias y

especificaciones. Se pueden encontrar dispositivos con 5000 compuertas lógicas, llegando a

alcanzar también los 100 millones, con diferentes herramientas integradas como

procesadores, memorias RAM y flash, con capacidad de almacenamiento por medio de ROM

y EEPROM, convertidores análogos a digital y digital a análogos, DSP, amplificadores, y

muchos otros módulos que mejoran su rendimiento y funcionalidad [14].

Según el fabricante, para realizar la configuración y poner a funcionar un ASIC, se pueden

utilizar diferentes lenguajes de descripción de hardware como VHDL o verilog. De la misma

manera, con estos dispositivos, se pueden realizar configuraciones cambiando el hardware

de una aplicación o tan solo por el software (por ejemplo, aunque se pueden tener

procesadores físicos integrados a un ASIC, se puede configurar un procesador por software,

tal como se hace cuando se trabaja con una FPGA en un dispositivo de Altera, configurando

un procesador virtual Nyos).

2.1.5.1. Tipos de ASIC’s:

Según la construcción del circuito, el ASIC puede tomar cierto nivel de capacidad, de esta

manera se clasifican en diferentes grupos. Los integrados están construidos físicamente por

varias capas en una misma pastilla, logrando hasta 10 y 15 capas conformadas por cableado

y transistores, que son los que definen las compuertas.

Completamente configurables: Como se define en su mismo nombre, estos

dispositivos están diseñados para que todos los elementos que lo componen sean

programables.

Page 38: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…38

Semi-Configurables: Para este tipo de dispositivos, se han predeterminado ciertos

parámetros de las celdas lógicas que ya no se podrán cambiar, sin embargo, las

interconexiones si se pueden configurar. Difieren en base a celdas estándar o en

arreglos de compuertas.

Dispositivos lógicos programables (PLD por sus siglas en inglés): Los PLDs son

programables para crear partes configurables para una aplicación específica. Se

caracterizan porque no poseen máscaras o capas y tienen un solo gran bloque de

interconexiones programables.

Arreglo de compuertas programables de campo (FPGA por sus siglas en inglés Field

Programmable Gate Array): Es un tipo de PLD que tiene una gran cantidad de

compuertas programables en comparación con otros, y por esto recibe su nombre. Sus

máscaras no se pueden programar, y solo está disponible para el usuario configurar

las interconexiones y celdas lógicas bajas.

2.1.5.2. ASIC’s utilizados para mediciones ECG:

Al ver la gran cantidad de dispositivos que se implementan para diferentes campos de la

electrónica, resulta algo complejo para el desarrollo del proyecto la elección de uno en

especial, por eso también se realizaron consultas de diferentes trabajos realizados en los

cuales hacían mediciones de ECG, basados en dispositivos ASIC’s.

Sistema para la adquisición de señales electrocadiográficas usando MATLAB®

[15]: En este trabajo, utilizaron una tarjeta de National Instruments de referencia NI

USB-6215 [16], un ASIC que tiene diferentes características como un bus de

conexión USB, 16 entradas análogas con resolución de 16 bits, entre otros. Con este

dispositivo lograron captar y digitalizar las entradas de señales obtenidas con

electrodos y posteriormente amplificadas.

Sistema para transmisión inalámbrica de señales ECG y de temperatura para

ambientes hospitalarios [17]: En este trabajo de grado, no se preocuparon por

digitalizar la información en ningún momento, ellos querían transmitir la información

para que posteriormente alguien más la utilizara para sus propios fines. Para esto

Page 39: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…39

consultaron diferentes ASIC para transmisión de datos, finalmente eligiendo un

PIC18F2550, para hacer una programación basada en codificación BER. Vale aclarar

que las entradas de los transductores fueron amplificadas para poder ser leídas como

entradas análogas en el procesador.

Monitor de señales de electrocardiografía y frecuencia cardiaca mediante un

teléfono móvil con el protocolo de comunicación Bluetooth [18]: En este trabajo,

también utilizaron el procesador de referencia PIC18F2550 para hacer la

digitalización y codificación de la señal.

A portable Real-time ECG Recognition System Based on Smartphone [19]: En

este trabajo realizaron una conversión análoga a digital de las señales ampliadas

obtenidas por medio del microprocesador MSP430FG4618 de Texas Instruments.

Algunas de sus características es su convertidor A/D de 12 bits, diseñado para

alimentarse con baterías portables. Vale aclarar que antes de entrar al controlador, las

señales fueron enviadas a un amplificador operacional LM358-OP de Texas

Instruments.

2.1.6. Filtro Antialiasing

En la actualidad es muy común la implementación de conversores análogos-digitales y

digitales-análogos ya que su implementación no conlleva a un costo muy elevado y permite

realizar de forma concreta un análisis del mundo analógico en interfaces digitales

garantizando una alta precisión. Sin embargo, para alcanzar un nivel alto de confiabilidad en

estos procesos de digitalización de señales es necesario primero que todo realizar un

acondicionamiento de las señales analógicas presentes para así cumplir con los

requerimientos establecidos que permitan obtener resultados productivos. Esta fase analógica

presenta requerimientos de precisión, rechazo a ruido y velocidad que corresponden a las

características que se deben cumplir desde un punto de vista orientado al desarrollo del

circuito.

Un conversor análogo-digital es un elemento que me permite convertir una señal análoga a

una palabra o señal digital, es decir, pasar una señal que es continua en el tiempo en una señal

Page 40: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…40

discreta o muestreada. La señal análoga se introduce al conversor y se muestrea a una tasa

determinada adquiriendo medidas de la amplitud de la señal aproximándolas a valores

enteros de cuantificación establecidos por el número de bits y el voltaje de referencia del

conversor.

Cuando se convierten señales análogas se pueden obtener diferencias en aspectos como la

amplitud, el rango de frecuencias, offset entre muchas otras. Debido a esto y de manera

indispensable se debe realizar el acondicionamiento de la señal para que esta parte en

cualquier dispositivo que utilice etapa de conversión mantenga las características propias de

las señales originales del proceso [20].

2.1.6.1. Efecto Aliasing

Como se menciona en [20], la frecuencia propia de la señal (Fa) y la frecuencia de muestro

(Fs) son dos de las características más importantes en un proceso de digitalización. Si Fs es

menor o igual al doble de Fa cuando se requiera reconstruir la señal principal las componentes

de frecuencia de muestreo intervienen en el proceso y producen una pérdida de datos, a tal

efecto se le conoce como aliasing.

Para lograr evitar estos efectos que se producen por el uso de una frecuencia de muestreo

incorrecta es necesario cumplir con el criterio de muestreo de Nyquist el cual me indica que

la frecuencia para la adquisición y digitalización de datos debe ser al menos el doble de la

frecuencia de corte de la señal a muestrear:

Fs > 2 Fa

En un amplio número de casos, la determinación de una frecuencia que cumpla con los

criterios de Nyquist no es suficiente para evitar que se distorsione la señal y que se pierdan

los datos debido al efecto aliasing, por lo que es necesario adaptar antes de la digitalización

filtros pasabajas o antialising que me permitan atenuar los componentes en frecuencias fuera

del rango de interés y reduzcan el ruido.

Page 41: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…41

2.1.6.2. Descripción Filtro

El filtro antialising es un filtro pasabajas cuya respuesta debe ser en su máxima expresión

plana, tanto en la banda de atenuación, como en la frecuencia de esquina relacionada con la

banda de paso, es decir el rizado en este tipo de señales debe ser el mínimo. Tal como se

menciona en [20] estos filtros son de tipo activo y su finalidad es atenuar o remover los

componentes de alta frecuencia de la señal reduciendo las señales reflejadas o sobrepuestas

a la señal fundamental obteniendo una resolución y un muestreo apropiado en la banda de

interés.

2.1.7. Interferencias de las señales electrocardiográficas

La interferencia que comúnmente se presenta en cualquier tipo de señal bioeléctrica que se

desea adquirir y procesar está definida como una perturbación, la cual es una señal

inadecuada que se adhiere a la señal fundamental y generar que los resultados esperados no

sean los deseados.

Como se menciona en [21] las señales electrocardiográficas presentan diferentes tipos de

perturbaciones, a continuación, describiremos las más comunes:

Interferencia eléctrica (línea de potencia)

Es una señal de 60 Hz y sus armónicos, los cuales se modelan como sinusoides y

combinaciones de sinusoides, es producida debido a la red eléctrica a la cual se conecta la

línea de alimentación del dispositivo, esta puede contener interferencia electromagnética de

aparatos conectados a esta misma red como electrodomésticos, sistemas computacionales,

radares o entre otras fuentes que me pueden afectar la señal ECG que se está adquiriendo.

Interferencia por contacto de electrodos o movimientos inesperados

Se denomina como una perturbación transitoria debido a la desconexión que causa la perdida

de contacto entre algún electrodo y la piel del paciente, esta desconexión puede llegar a ser

permanente o intermitente y es causada generalmente por el movimiento o la vibración de la

Page 42: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…42

persona en intervención o por un mal estado en el sistema de adherencia del electrodo, posee

una frecuencia que oscila entre los 60 Hz y se evita principalmente usando siempre electrodos

nuevos cuando se efectúa una toma de datos y logrando que el paciente esté en condiciones

de alto reposo.

Ruido del ECG debido a la respiración

Se produce una modulación de la señal debido a la variación de la amplitud del ECG por la

componente de la respiración que es agregada a la línea base de la señal. Esta señal

contaminante es de especial cuidado y tratamiento ya que se encuentra localizada en la zona

de componentes importantes del ECG y su filtrado puede generar la eliminación de datos de

la señal base.

2.1.7.1. Filtros digitales

Un filtro digital como su nombre lo indica es un filtro que trabaja sobre señales especialmente

digitalizadas, se genera mediante un proceso computacional o un algoritmo en el cual una

señal digital de entrada (secuencia de muestras) se modifica obteniendo otra secuencia de

muestras digitalizadas como señal de salida cuyo objetivo puede ser aumentar, atenuar o

rechazar características de la señal principal de entrada.

Este tipo de filtros digitales pueden ser implementados en software de procesamiento digital

de señales con un loop dentro del programa principal tanto como en un circuito integrado

dentro de un sistema digital [22].

2.1.7.2. Tipos de filtros

Los filtros más comunes son:

Filtro paso bajo (low pass, LP): Deja pasar las frecuencias las cuales sus valores

estén por debajo de un rango determinado de frecuencia.

Filtro paso alto (high pass, HP): Deja pasar las frecuencias las cuales sus valores

estén por encima de un rango determinado de frecuencia.

Page 43: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…43

Filtro paso de banda (band pass, BP): Deja pasar las frecuencias las cuales sus

valores estén situados entre dos determinados rangos de frecuencias.

Filtro rechazo de banda (band reject, band stop o notch): Deja pasar las

frecuencias excepto las cuales sus valores estén situados entre dos determinados

rangos de frecuencias [22].

En la figura 8 se puede observar los cuatro tipos de filtros más comunes mediante su respuesta

en frecuencia.

Page 44: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…44

Figura 8. Tipos de filtros

Tomado de: Acoustics and Psychoacoustics: Introduction to sound. [44].

Page 45: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…45

2.1.8. Funcionamiento principal de un filtro digital

Como se menciona en [22] el funcionamiento base de un filtro digital es prácticamente

sencillo, existen dos principios fundamentales los cuales se mencionarán a continuación:

Filtros FIR (Finite Impulse Response): Esquematizado en la figura 9, en éste caso

se retarda ligeramente una muestra de la señal de entrada (de uno o varios periodos

de muestreo) y se combina la señal de entrada en atraso con la nueva señal de entrada,

también se puede decir que se realiza una convolución de la señal de entrada y

respuesta al impulso del filtro. A este tipo de filtro se le conoce como filtro digital

FIR.

Filtros IIR (Infinite Impulse Response): Esquematizado en la figura 10, para éste

caso se retarda una muestra de la señal de salida y se combina con la nueva señal de

entrada, este filtro se realiza mediante la ecuación en recurrencia y se define por los

coeficientes de recursión. A este tipo de filtros se le conoce como filtro digital IIR.

Figura 9. Diagrama de bloques de un filtro digital tipo FIR

Tomado de: Introducción al filtrado digital, Departamento de sonologia, Escuela superior

de música de Cataluña.

Page 46: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…46

2.1.9. Filtros digitales básicos para señales electrocardiográficas

Las señales electrocardiográficas están contenidas en un espectro frecuencial que oscila entre

los 0.05 Hz a los 100 Hz, con una amplitud que va desde 0,02 mV hasta 5 mV y un ancho de

banda de 125 Hz lo cual indica que este tipo de señal está dentro del rango de una señal

bioeléctrica típica.

Debido a estos valores de frecuencia en los cuales se encuentran esta señal ECG es muy

fácilmente que se adhiera ruido a esta y que en su procesamiento y visualización no se pueda

identificar de manera clara los datos que se quieren obtener en el resultado esperado por esta

razón y teniendo claro los factores principales que hacen que este tipo de interferencias

aparezcan, se destacan tres clases de filtros básicos para tratar los problemas de

perturbaciones más comunes en un ECG.

Filtro para eliminar ruido de respiración y movimientos musculares: Es un filtro

de tipo pasa baja, el cual contiene una frecuencia de corte de 100 Hz y se encarga de

descartar perturbaciones ocasionadas principalmente por la respiración.

Filtro de red (Filtro notch): Es un filtro rechaza banda el cual es el encargado de

filtrar el ruido ocasionado por la línea de potencia (alimentación) a la cual está

conectado un dispositivo. Su rango de frecuencia esta entre los 55 Hz a los 65 Hz.

Figura 10. Diagrama de bloques de un filtro digital tipo IIR

Tomado de: Introducción al filtrado digital, Departamento de sonologia, Escuela

superior de música de Cataluña.

Page 47: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…47

Filtro para eliminar nivel de DC: Es un filtro pasa altas y se encarga de eliminar el

nivel de DC y dejar la señal alrededor de un punto de referencia 0. Su frecuencia de

corte oscila entre 0.05 Hz y 1Hz.

2.1.10. Sistemas de adquisición de señales biomédicas

Generalmente en la instrumentación médica existen varios sistemas de adquisición de señales

que cuentan con alguna de estas características de funcionalidad: propiedad y cantidad física,

sensor o transductor, acondicionamiento de la señal y sistema de visualización. De acuerdo

con [23], para el caso de la adquisición de señales biomédicas la cantidad física es el

biopotencial medido, es decir, la corriente iónica que circula por la membrana debido al

intercambio de iones a través de las células excitables y los sensores o transductores son los

electrodos conectados al cuerpo del paciente. El acondicionamiento de la señal se puede

dividir en dos grupos principales, tal como se muestra en la figura 11: la amplificación de la

señal y el procesamiento de la señal (conversión análoga a digital). Finalmente, la etapa de

acondicionamiento se lleva a la visualización donde el usuario puede observar por medio de

una interfaz los resultados obtenidos en el procesamiento de estas señales.

Los sistemas de adquisición de señales cuentan con ventajas que los hacen de mucha utilidad

y las cuales son: precisión, repetibilidad, confiabilidad, inmunidad al ruido, costo y

usualmente no requieren calibración. Un claro ejemplo de un dispositivo con las

características mencionadas son los ASIC’s de la familia ADS129x de Texas Instruments,

los cuales son dispositivos especialmente diseñados para el trabajo de la biomedicina. Estos

elementos comparados con sistema básicos de capturas de ECG como monitores holter,

ayudan a reducir en un 92% el tamaño requerido en el circuito impreso reduce en un 94% el

consumo de energía y reduce en un 92% los componentes necesarios para la captura de

señales biomédicas. Actualmente la adquisición de señales se realiza con dispositivos de bajo

costo los cuales han sido implementados en diferentes tipos de aplicaciones y protocolos a

nivel hospitalario en el mundo.

Usualmente es suficiente usar de 12 a 14 bits para el proceso de digitalización de la señal, lo

cual cubre un rango dinámico en la cuantificación. La amplitud de onda varía entre 0.1

Page 48: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…48

milivoltios después de haber sido sometidas a procesos de reducción de ruidos hasta los 5

milivoltios en señales ECG.

2.1.11. Amplificadores de biopotenciales

Los amplificadores se reconocen como una de las partes más importantes en el proceso de

digitalización de señales biomédicas. Su función principal es, como su nombre lo indica,

amplificar y filtrar señales biológicas las cuales son de muy bajo potencial para luego así

poder procesarlas de una manera más óptima. Para que su funcionalidad sea aceptable se

deben cumplir con unos mínimos requerimientos los cuales son: su impedancia en la entrada

debe ser alta con un valor mínimo de 10Mohm para que de esta manera no haya una carga

representativa en la señal que se está capturando. Debe tener unos ciertos niveles de

protección para evitar en ambientes clínicos corrientes eléctricas que produzcan

microchoques o macrochoques en el paciente. Otras características de vital importancia son:

poseer un alto CMRR para atenuar la interferencia ocasionada por las señales de frecuencia

de 50 o 60 HZ, filtrar el offset DC diferencial entre electrodos, aumentar el SNR y finalmente

contar con ganancias y filtros configurables.

Figura 11. Diagrama de sistema generalizado para la adquisición de biopotenciales

Tomado de: https://goo.gl/nWe7iP. Portal web de TEXAS INSTRUMENTS empresa dedicada al diseño,

fabricación y distribución de elementos semiconductores y circuitos integrados a nivel mundial.

Page 49: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…49

2.1.12. Norma internacional para equipos electromédicos

Los equipos para medir señales biomédicas que estén conectados directamente al cuerpo

humano están sujetos a cumplir con diferentes tipos de normas y reglamentos exigidos a nivel

internacional con los cuales se garantiza principalmente la seguridad física del paciente. La

normatividad está orientada a evaluar los diseños de los sistemas de aislamiento y protección

del dispositivo final como a su vez a validar los datos obtenidos en los registros de las

personas que utilicen este tipo de equipos de manera continua.

De acuerdo con [24], la norma internacional IEC 60601-1, establece los requisitos generales

que se deben cumplir para la construcción de equipos biomédicos para efectos de la seguridad

del paciente y la norma internacional IEC 60601- 25 hace referencia a equipos biomédicos

para trabajo de electrocardiografía.

Estas dos normas son adoptadas a nivel nacional por el instituto nacional de normas técnicas

ICONTEC y se estandarizan en el país con las siguientes siglas NTC IEC 60601 y NTC IEC

60601-25 sirviendo como referencia a fabricantes y diseñadores en la verificación de sus

equipos electromédicos.

En el dispositivo final a desarrollar en este proyecto, se llevará a cabo la implementación del

diseño buscando cumplir con los estándares generales y normativas específicas que se

establece en ICONTEC para la fabricación de equipos electromédicos y de

electrocardiografía, con el objetivo principal de lograr un resultado final integral que sea

optimo desde el punto de vista de la ingeniera para el sector de la salud.

2.2. Marco histórico

2.2.1. Historia del ECG

La información es tomada de: [25]

Dese hace más de tres siglos se han llevado a cabo estudios sobre la electricidad en los tejidos

humanos y animales. Estos estudios se realizaban con diferentes tipos de animales los cuales

Page 50: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…50

fueron arrojando unos resultados que fueron de gran aporte para la implementación de estos

procesos en los seres humanos y que contribuyo a un gran avance en esta rama de la medicina,

logrando así implementar sistemas para la detección de diferentes enfermedades como lo es

hoy en día el electrocardiograma.

A continuación, se hará mención a algunos acontecimientos importantes que ocurrieron entre

el año 1840 y el actual que fueron de vital importancia para la creación del electrocardiógrafo.

Uno de los primeros en aportar un avance en este tema fue el físico italiano Carlo Matteucci,

profesor en la Universidad de Pisa, que en el año 1842 demostró cómo la corriente eléctrica

acompaña a cada latido cardíaco. Para comprobar los resultados de su estudio, usó una rana

la cual de su anca extrajo un nervio el cual utilizo con sensor de electricidad. Cuando se

aplicaba electricidad el nervio del anca de la rana se contraía, con lo cual este científico lo

asocio como signo visual de la actividad eléctrica.

“Los anatomistas Rudolph von Koelliker y Heinrich Muller, confirmaron en 1856 que una

corriente eléctrica acompaña a cada latido, al aplicar un galvanómetro en la base y ápice

de un ventrículo expuesto, haciendo una prueba semejante a la de Matteucci pudieron

observar una pequeña convulsión del músculo justo antes de la sístole ventricular y una

mucho más pequeña después de la sístole. Esas sacudidas son causadas por las corrientes

eléctricas, que en el electrocardiograma figuran como complejo QRS y ondas T.” [25].

Hacia finales del siglo XIX, Auguste Waller, fisiólogo británico, fue el primero en llevar a

cabo un estudio más referente al corazón humano tratando de verlo desde el punto de vista

eléctrico con lo cual pudo crear lo que en ese entonces fue llamado el primer

electrocardiograma humano, el cual fue registrado como un galvanómetro capilar.

“William Bayliss y Edward Starling, fisiólogos británicos, del University College de Lóndres

mejoran el galvanómetro capilar. Al conectarlo a la mano derecha muestran una “variación

trifásica” que acompaña a cada latido (P, QRS y T). Además, señalaron un retraso de 0.13

segundos entre la estimulación atrial y la despolarización de los ventriculos (intervalo PR)”.

[25].

Page 51: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…51

Willem Einthoven, por medio de un estudio en 1895 pudo diferenciar cinco ondas, las cuales

el denomino P, Q, R, S y T, utilizando un voltímetro mejorado.

“En 1901, Einthoven inventa un galvanómetro a cuerda utilizando un filamento fino de

cuarzo revestido en plata para producir electrocardiogramas. Publica su primer artículo

científico para comunicar la experiencia con el nuevo galvanómetro y su utilidad para

registrar los potenciales cardíacos.” [25].

“Einthoven en 1912 describe un triángulo equilátero formado por sus derivaciones estándar

I, II, III que más adelante sería llamado el "Triángulo de Einthoven"”. [25].

“En el año 1928, la compañía Frank Sanborn produce el primer electrocardiógrafo portátil.

Pesaba unos 25 Kg. y funcionaba con una batería de automóvil de 6 V.” [25].

El medico Norman Holter implementa, en 1949, una especie de maletín, que pesaba unos 37

Kg, con el cual se puede registrar un electrocardiograma de la persona que lo lleva y a su vez

transmitir una señal. Esta especie de electrocardiograma fue conocido posteriormente como

monitor Holter, que en la actualidad ha ido reduciendo su tamaño a la vez que se aumenta la

capacidad tecnológica del mismo. Este monitor es utilizado para el registro ambulatorio de

electrocardiogramas.

2.2.2. Origen de los ASIC’s

Desde la década del 70, se ha trabajado en el desarrollo de la microelectrónica aplicando

conocimientos para crear nuevas tecnologías que sean de gran aporte en la evolución de esta

rama de la electrónica. En el año 1980 la compañía Ferranti, comenzó a investigar sobre las

ventajas del diseño de un microcontrolador configurable o adaptable para un sistema o

aplicación en particular más allá de usar circuitos integrados estándar.

La tecnología VLSI (Very Low Scale Integration) permite realizar la construcción de un

sistema con muchos componentes más pequeños donde se pueden combinar IC's estándares

en gran cantidad dentro de un IC configurable.

Page 52: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…52

“Ferranti, una empresa de Ucrania fue la primera en producir los primeros arreglos de

compuertas. La adaptación del arreglo se produce cuando es cambiada la máscara de

interconexión metálica. Las ULA (Uncommitted Logic Array) consideradas como uno de los

primeros ICs semi-configurables desarrolladas, en principio tenían unos cientos de

compuertas para luego extender la gamma y hacer otros modelos que incluyen elementos de

memoria RAM.” [14]

Page 53: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…53

CAPITULO 3. CAPTURA Y PROCESAMIENTO DE LA SEÑAL ECG

3.1. Consideraciones para el diseño

Antes de iniciar la investigación para llegar a definir todas las consideraciones respecto al

proyecto en curso, se debe dejar claro cuáles son las necesidades que debemos suplir para

tener en cuenta las prioridades al momento de diseñar el circuito y seleccionar los mejores

componentes para llegar a cumplir los objetivos del sistema.

Por ende, se decide trabajar con la matriz de necesidades que se va a explicar a continuación

3.1.1. Matriz de necesidades

Para entender la matriz de necesidades, primero se debe ver la tabla 1, la cual muestra las

características que debe tener el sistema y se le asigna una guía según las letras del abecedario

para luego ser ingresadas en la matriz. Se define que el sistema portable para la adquisición

y procesamiento de señales ECG, con aplicabilidad en dispositivos móviles debe ser:

Portable, preciso, rápido (Ya que grafica en tiempo real señales del corazón), económico,

fácil de usar por el usuario, fácil de programar (así como también de cambiar su código), con

alta funcionalidad (que trabaje con muchas funciones al mismo tiempo) y finalmente que

tenga compatibilidad con otras tecnologías para tener aplicabilidad en dispositivos móviles.

Tabla 1. Guía para matriz de necesidades

Guía

A: Portable

B: Preciso

C: Rápido

D: Económico

E: Fácil de usar

F: Fácil de programar

G: Funcionalidad

H: Compatibilidad con otras tecnologías

I: Seguridad del paciente

Page 54: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…54

En la tabla 2 se muestra la evaluación que se deberá ingresar en la matriz, se trata de una

puntuación según el nivel de prioridad de la característica a evaluar.

Tabla 2. Evaluación de necesidades

Valor de necesidad Puntaje

Iguales 1

Más necesario 5

Mucho más necesario 10

Menos necesario 1/5

Mucho menos necesario 1/10

La matriz de necesidades se muestra en la tabla 3, la cual indica las prioridades de cada una

de las características del sistema, y esta puntuación se debe sumar y sacar en un porcentaje.

Como se puede notar las necesidades que más porcentaje tiene son que sea preciso (23.40%),

portable (19.08%) y económico (18.36%), seguidas por las que menos tienen las cuales son:

funcional y compatible (ambas con 11.16%), fácil de usar (9.54%), rápido (6.66%) y por

último fácil de programar (0.63%).

Tabla 3. Matriz de necesidades

A B C D E F G H I Suma Porcentaje

A 1/5 1 5 5 10 5 5 1/5 21,2 11,71%

B 5 1 5 5 10 5 5 1/5 26 14,36%

C 1 1 1/5 1/5 5 1 1 1/10 7,4 4,09%

D 1/5 1/5 5 5 10 1 1 1/10 20,4 11,26%

E 1/5 1/5 5 1/5 5 1/5 1/5 1/10 10,6 5,85%

F 1/10 1/10 1/5 1/10 1/5 1/5 1/5 1/10 0,7 0,39%

G 1/5 1/5 1 1 5 5 1 1/10 12,4 6,85%

H 1/5 1/5 1 1 5 5 1 1/10 12,4 6,85%

I 5 5 10 10 10 10 10 10 70 38,65%

181,1 100%

3.1.2. Diagrama de Pareto

Ahora se realiza el diagrama de Pareto (Figura 12) para visualizar de una manera más

intuitiva lo que se muestra en la matriz de necesidades. Sintetizando, el diagrama quiere decir

que se debe tener como prioridad trabajar sobre los aspectos de seguridad del paciente, la

Page 55: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…55

precisión, la portabilidad, y la economía del dispositivo para graficar ECG. Otros dos

aspectos a tener en cuenta son la multifuncionalidad y compatibilidad con otros dispositivos.

3.2. Elección de materiales (electrodos y ASIC)

Con el objetivo de cumplir con los requisitos principales en el diseño del dispositivo se debe

tener en cuenta la señal que se quiere adquirir, pues será de vital importancia a la hora de

considerar, escoger y determinar los elementos electrónicos que serán utilizados en el

desarrollo de este proyecto. La señal y los circuitos electrónicos deben enlazarse de una

manera óptima para así garantizar que el dispositivo final trabaje eficazmente.

Una breve explicación electrónica para el proceso de adquisición de señales biomédicas es

la siguiente: se toma la señal que entregan los electrodos, la cual es generada por el cuerpo

humano, luego se amplifica y se filtra, se lleva a un conversor análogo digital para

digitalizarla y la entrega a un procesador que se encarga de procesarla para así poder

visualizarla o decidir el uso específico que se le dará a la señal.

Figura 12. Diagrama de Pareto: Necesidades

38,65%

14,36% 11,71% 11,26%6,85% 6,85% 5,85% 4,09%

0,39%

38,65%

53,01%

64,72%

75,98%82,83%

89,67%95,53%

99,61%100,00%

0,00%

20,00%

40,00%

60,00%

80,00%

100,00%

120,00%

I B A D G H E C F

Diagrama de Pareto: Necesidades

Porcentaje Acomulado

Page 56: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…56

Anteriormente, los circuitos electrónicos utilizados para realizar este proceso de captura de

señales biomédicas eran diseñados de manera discreta, con circuitos integrados elaborados

por diferentes fabricantes los cuales se acoplan para lograr un sistema de adquisición

eficiente. En la actualidad los avances tecnológicos en el área de la electrónica han crecido

de una manera muy alta, logrando acoplar la parte médica y tecnológica. Una gran mayoría

de fabricantes de circuitos electrónicos han puesto en el mercado diferentes clases de

dispositivos de aplicación específica, conocidos comúnmente como ASIC’s, para trabajar la

parte de captura de señales biomédicas. Los ASIC presentan unas características especiales

y su función principal es acondicionar la señal tomada para realizar una conversión análoga

a digital segura.

Tomando en consideración lo dicho anteriormente, se escogerá y se implementará un ASIC

adecuado para el diseño del dispositivo que se plantea en el proyecto. Se llevó a cabo un

estudio específico de las características de algunos procesadores para tomar una decisión de

cuál se va a utilizar y los resultados se ven reflejados en la siguiente tabla:

Tabla 4. ASIC para la captura de señales biomédicas.

Page 57: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…57

Como se ve en la Tabla 4, estos ASIC presentan unas características sobresalientes para la

adquisición de señales ECG. Para la elección del ASIC se debe tener en cuenta el módulo de

comunicación con otros dispositivos que se puede realizar por medio de diferentes

protocolos, debido a que así se determina cómo debe ser programado por un procesador

externo (el cual se debe elegir conforme al módulo de comunicación) que permitirá la

configuración del ASIC, su activación en el proceso de adquisición de señales y la lectura de

los datos de conversión que se obtienen.

El fabricante Texas Instruments ha desarrollado y puesto en el mercado actual una familia de

dispositivos de aplicación específica diseñados para el trabajo de adquisición de señales

biomédicas que presentan diferentes características y funciones. Se pueden encontrar

integrados para trabajar con señales del corazón, señales del cerebro, señales musculares,

entre otras. En la Tabla 4 se observan ASIC con diferentes características de resolución,

número de canales, comunicación y precios en el mercado comercial.

Al hacer el estudio de los diferentes tipos de ASIC de la familia ADS129X que trabajan con

señales biomédicas, se seleccionó el ADS1298 como conversor análogo digital, ya que

cumple con todos los requerimientos mencionados anteriormente y tiene la característica

especial de trabajar con señales ECG que es la principal en el desarrollo del dispositivo.

Además, permite la captura simultanea de 8 canales con los cuales se realiza las 12

derivaciones del ECG, acopla y reduce el ruido en la captura de señal, tiene ganancia

ajustable, usa comunicación SPI para su comunicación y programación y el precio en el

mercado es accesible.

Se describirá un poco más a fondo el ADS1298.

3.2.1. Integrado ADS1298

Texas Instruments [26] describe el ADS1298 (Figura 13) como un conversor análogo digital

(ADC) con resolución de 24 bits de tipo delta-sigma (ΔΣ), el cual realiza muestreo simultáneo

con bloques de programadores integrados, señal de referencia interna y un oscilador

integrado. El ADS1298 integra las características que se necesitan principalmente en

Page 58: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…58

electrocardiografía (ECG) y aplicaciones del EEG con altos niveles de inclusión y

rendimiento eficaz. El ADS1298 permite el desarrollo de sistemas de ECG en cuanto a

tamaño, potencia y costo totales.

El ADS1298 posee un multiplexor de entrada flexible (MUX) en cada canal que puede

conectarse de manera independientemente a las señales generadas internamente para la

detección y derivación del ECG. El ADS1298 funciona con una tasa de muestreo desde 250

muestras por segundo (SPS por sus siglas en inglés “samples per second”) hasta 32 kSPS.

Tres amplificadores integrados generan el terminal central de Wilson (WCT) y los terminales

centrales de Goldberger (GCT) requeridos para un ECG estándar de 12 derivaciones. El

ADS1298 puede conectarse en cascada con otros ADS1298 para realizar una configuración

en cadena. El empaquetado del integrado elegido es de tipo TQFP-64 y se especifican en el

rango de temperatura industrial de -40 ° C a + 85 ° C.

Características:

ADC de 8 canales de alta resolución

Baja potencia: 0,75 mW / canal

Ruido de entrada: 4 μVPP (150 Hz BW, G = 6)

Figura 13. Integrado ADS1298

Tomado de: https://goo.gl/nWe7iP. Portal web de TEXAS INSTRUMENTS empresa dedicada al diseño,

fabricación y distribución de elementos semiconductores y circuitos integrados a nivel mundial.

Page 59: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…59

Corriente de polarización de entrada: 200 pA

Velocidad de muestreo: 250 SPS a 32 kSPS

CMRR: -115 dB

Ganancia programable: 1, 2, 3, 4, 6, 8 o 12

Soporta sistemas que cumplen con los estándares AAMI EC11, EC13, IEC60601-1,

IEC60601-2-27 e IEC60601-2-51

Fuente Unipolar o Bipolar

AVDD = 2,7 V a 5,25 V

DVDD = 1,65 V a 3,6 V

Amplificador de la pierna derecha incorporado, detección del plomo, terminal del

centro de Wilson, detección del paso, señales de prueba

Oscilador incorporado y referencia

SPI ™ Interfaz de serie compatible

3.3. Elección del medio de transmisión

Un dispositivo de captura y lectura de señales electrocardiográficas digital está compuesto

por tres etapas fundamentales que son: captura, digitalización y procesamiento de la señal

ECG. Para la parte de captura se tienen los electrodos, para el acoplamiento y la

digitalización, el ADS1298. Ahora se realizará un estudio para determinar y elegir el

elemento electrónico adecuado que se encargue del procesamiento de la señal obtenida y la

configuración de todos los elementos electrónicos utilizados en el dispositivo que se plantea

desarrollar en este trabajo de grado.

Se tienen varias soluciones para determinar el elemento que se encargue de la parte del

procesamiento. En el mercado existen diferentes fabricantes de microcontroladores que

pueden manejar puertos de entrada y salida, amplia capacidad de memoria de datos, módulos

de comunicación, entornos de programación conocidos, una buena resolución y que pueden

lograr el acople perfecto para el procesamiento de la señal y la configuración de la placa a

diseñar.

Page 60: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…60

El procesador, como cerebro principal del dispositivo debe primero que todo realizar las

configuraciones iniciales del ADS1298 y luego guardar los datos del muestreo para

posteriormente procesarlos y como función final mostrar la gráfica de la señal capturada.

A continuación, en la tabla 5 se describen las características principales de algunos

procesadores que se encuentran en el mercado actual y del cual se escogerá uno para el

desarrollo del dispositivo.

Tabla 5. TABLA COMPARATIVA PIC

Después de analizar los datos que se obtuvieron en la tabla comparativa de los diferentes

procesadores existentes en el mercado, se decidió que para el proyecto a realizar se va a

utilizar el PIC32MX795F512H, el cual se integrará en el diseño del dispositivo con el

ADS1298 para así poder construir la plataforma de desarrollo propuesta.

La elección del procesador se debe a sus características, ya que nos ofrece una capacidad

óptima de procesamiento de información con una memoria RAM de 128 KB y una memoria

Page 61: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…61

de programa de 512 KB, con una velocidad de alta reacción de 80 MHZ y diferentes puertos

de comunicación hacia otros dispositivos. Al contar con un puerto de comunicación SPI se

logra la posibilidad de enlazamiento con el ADS1298 que es parte fundamental en el proceso

y el puerto USB que también maneja el PIC32MX nos permite trasmitir los datos obtenidos

al dispositivo móvil final, así como también servirá de fuente de voltaje para alimentar la

plataforma de desarrollo a construir. No limitado a un puerto USB para la comunicación con

el computador o el dispositivo móvil, también se tiene la capacidad para manejar otros buses

de comunicación como es una UART.

Los procesadores constan de dos partes principales para su uso: la parte del software que es

el entorno de programación dónde se desarrolla, se compila y se carga el código fuente para

configurarlo y la parte del hardware que es el procesador físico como tal. La interfaz de

programación es importante a la hora de elegir este procesador. Se puede observar que en la

tabla 5 hay otros dispositivos con más capacidad de memoria y más velocidad de

procesamiento, sin embargo, no se escogieron porque en la investigación se pudo observar

que para estos procesadores no existen librerías necesarias para que el software pudiera

trabajar de una manera adecuada. Por ende, se decidió utilizar el PIC32MX795F12H que

tiene las librerías y se pueden instalar en el software de programación con el que se va a

trabajar. Concluyendo se puede decir que el software de programación es una de las

consideraciones importantes a la hora de elegir un procesador.

3.3.1. PIC32MX795F512H

En MICROCHIP [27] describen al PIC32MX795F512H como un procesador de 32 bits con

una configuración de memoria grande, un amplio conjunto de periféricos de comunicación

integrados de bajo costo y desde el cual se pueden abordar aplicaciones de uso tanto general

como avanzado, cuenta con una aceptación amplia en el mercado y es totalmente compatible

con el software de programación MPLAB. Cuenta con la facilidad de programar en lenguaje

C.

Page 62: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…62

Sus principales características se pueden observar en la tabla 6. En la figura 14 se muestra el

hardware del procesador seleccionado.

Tabla 6. Características PIC32MX795F512H

PARAMETER NAME VALUE

Family PIC32MX7XX

Max speed MHZ 80

Program memory size (KB) 512

Ram (KB) 128

Auxiliary flash (KB) 12

Operating voltage range (V) 2.3 to 3.6

SPI 3

I2C 4

USB FS Device/Host/OTG

USB Interface 1, FS Device/Host/OTG

CAN 12

A/D Channels 16

Max A/D Resolution 10

Max A/D Sample rate (KSPS) 1000

Internal oscillator 8 MHZ, 32 KHZ

I/O Pins 53

Pin count 64

Parallel port PMP

Tomado de: https://goo.gl/diFrH9. Portal web de MICROCHIP proveedor líder de microcontroladores y

semiconductores analógicos [27].

Figura 14. PIC32MX795F512H

Tomado de: https://goo.gl/b2ksIj. Portal web de MICROCHIP proveedor líder de microcontroladores y

semiconductores analógicos.

Page 63: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…63

Se propone el PIC32MX795F512H como una solución óptima para el trabajo a desarrollar

buscando, con su capacidad de procesamiento y especialmente con su puerto de

comunicación SPI, se logrará desarrollar el sistema para transmitir y recibir datos del ECG

de un cuerpo humano.

3.4. Elección cable de paciente

Como parte fundamental en la etapa de captura de la señal ECG se encuentra el cable

denominado “cable de paciente” el cual actúa como un mecanismo conductor de señales entre

el dispositivo final y los electrodos conectados en las diferentes partes del cuerpo del paciente

y que también me permite instaurar una conexión segura entre electrodos y equipo.

Está compuesto por dos partes principales que son: la primera un conector que permite

establecer la conexión con el dispositivo y la segunda una base que se ubica en el paciente y

se encarga de recibir el número de conductores de derivación con el que se esté trabajando el

cual puede ser de tres, seis o diez conductores. Estos conductores de derivación son fijos o

desconectables y se encuentran de tipo banana, de presión o pinzas dependiendo de los

electrodos utilizados.

Este tipo de cables se controlan durante y al final de su proceso de fabricación con la norma

internacional IEC 60601-1 y pueden ser utilizados en la adquisición larga, corta y media del

ECG, en pruebas de esfuerzo tipo ambulatorio, en sala de operaciones quirúrgicas o en

cualquier campo donde se esté monitorizando la señal electrocardiográfica [28].

Page 64: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…64

Figura 15. Conductor de 10 derivaciones tipo pinza fija.

Tomado de: Manual de instrucciones cables ECG para pacientes, INTEGRAL PROCESS empresa francesa

especializada en el diseño, fabricación y distribución de accesorios médicos.

Figura 16. Tipos de conectores para enlace cable - equipo.

Tomado de: Manual de instrucciones cables ECG para pacientes, INTEGRAL PROCESS empresa francesa

especializada en el diseño, fabricación y distribución de accesorios médicos.

Figura 17. Tipos de conectores para derivaciones.

Tomado de: Manual de instrucciones cables ECG para pacientes, INTEGRAL PROCESS empresa francesa

especializada en el diseño, fabricación y distribución de accesorios médicos.

Page 65: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…65

Para el proyecto a realizar se decidió trabajar con un cable de 10 conductores (figura 15),

debido a que para tomar un ECG de 12 derivaciones se requieren electrodos en las 4

extremidades del cuerpo, así como 6 electrodos en el tórax de la persona a evaluar. El cable

contiene un conector DB15 (figura 16, imagen del centro) para el enlace con el dispositivo y

con el cual se busca dar una mayor precisión en la señal a medir. Para la conexión al cuerpo

se utiliza un electrodo de presión (figura 17, imagen del centro). A continuación, en la figura

18, se puede observar el cable que se adquirió para el desarrollo del prototipo.

3.5. Protección del paciente

Es de vital importancia que cada una de las derivaciones que estén conectadas de manera

directa al paciente contenga una protección de sobrecargas óptima y que en caso de alguna

eventualidad garanticen un correcto aislamiento sobre los electrodos conectados.

Figura 18. Cable de 10 conductores de derivación tipo presión.

Page 66: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…66

Para esto el dispositivo cuenta conectada en cada uno de sus canales una protección

bidireccional de descarga electrostática (EDS) de baja capacitancia, la cual se encuentra en

el circuito integrado PESD5V0S2BT (El esquema del integrado en la figura 20) de la empresa

Nexperia USA Inc., Los datos de fabricante de ésta referencia se muestran en la tabla 7. Posee

diodos de protección diseñados para proteger dos líneas de datos contra descargas

electrostáticas de hasta 30KV, picos de potencia de hasta 130 W y viene fabricado en un

encapsulado SOT23 (Figura 19) [29].

Tabla 7. Características integrado PESD5V0S2BT.

Integrado PESD5V0S2BT

Canales bidireccionales 2

Voltaje Interruptor inverso 5V

Corriente pico de pulso (10 / 1000μs) 12A (8/20µs)

Potencia pico de pulso 130W

Temperatura de operación -65°C ~ 150°C

EDS 30KV

Package SOT23

Tomado de: datasheet Integrado PESD5V0S2BT, Nexperia USA Inc. Empresa líder global dedicada a dispositivos

Discretos, Lógicos y MOSFETs.

Como punto importante a la hora de escoger y utilizar esta referencia es que esté integrado

cumple en su funcionamiento y fabricación con las normas internacionales para descargas

electrostáticas para dispositivos electromédicos IEC 61000-4-2 nivel 4 e IEC 61000-4-5 lo

cual garantiza una buena protección al paciente.

Page 67: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…67

Para el electrodo que está conectado en la pierna derecha que actúa como la referencia

principal (neutro) de las derivaciones utilizada y que por ende es una de las líneas de señal

más importantes en el correcto funcionamiento del circuito se encuentra un amplificador

operacional el cual me permite obtener una señal más limpia y de mejor ganancia para así

garantizar un ECG estable y consecuente. El amplificador operacional que se utilizó para esta

función es el OPA376AIDCKT de la empresa Texas Instruments el cual pertenece a una

Figura 19. Encapsulado SOT32 integrado PESD5V0S2BT.

Tomado de: datasheet Integrado PESD5V0S2BT, Nexperia USA Inc. Empresa líder

global dedicada a dispositivos Discretos, Lógicos y MOSFETs.

Figura 20. Símbolo integrado PESD5V0S2BT.

Tomado de: datasheet Integrado PESD5V0S2BT, Nexperia USA Inc. Empresa líder

global dedicada a dispositivos Discretos, Lógicos y MOSFET.

Page 68: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…68

nueva generación de amplificadores operacional de bajo ruido para el trabajo de aplicaciones

de precisión y portátiles [30].

Este integrado se describe un poco más en la tabla 8:

Tabla 8. Características integrado OPA376AIDCKT

Integrado OPA376AIDCKT

Numero de amplificadores 1

Ancho de banda 5.5 MHZ

Voltaje Max 7 V

Corriente Max 10 mA

Temperatura de operación -40°C ~ 105°C

Package SOT23

Tomado de: Datasheet integrado OPA376AIDCKT, Texas Instruments empresa dedicada al diseño, fabricación

y distribución de elementos semiconductores y circuitos integrados a nivel mundial.

3.6. Aislamiento del circuito

El aislamiento que debe contener el dispositivo también es importante a la hora de determinar

la protección con la que debe contar el paciente, ya que el dispositivo cuenta con conexiones

de baja impedancia y es fundamental impedir el paso de corrientes y tensiones peligrosas al

cuerpo. Como se hace énfasis en la norma para equipos de electrocardiografía mencionada

anteriormente, el paciente debe permanecer aislado contra cualquier circuito externo que

brinde alimentación eléctrica al dispositivo.

En este proyecto se plantea alimentar el dispositivo por medio de un conector de toma USB

por lo cual se escoge el integrado de referencia ADUM3160BRWZ (Datos en la tabla 9) de

la empresa Analog Devices el cual es un aislador de puerto USB y cuenta con la capacidad

de aislar y entregar en su salida de 4.5V a 5.5V [31].

Page 69: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…69

Tabla 9. Características integrado ADUM3160BRWZ

Integrado ADUM3160BRWZ

Número de canales bidireccionales 2

Aislamiento de voltaje 2500Vrms

Velocidad de datos 12Mbps

Voltaje de operación 4.5V – 5.5V

Temperatura de operación -40°C ~ 105°C

Corriente Max 2.3mA

Package 16-SOIC

Tomado de: Datasheet integrado ADUM3160BRWZ, Analog Devices empresa dedicada al diseño, fabricación

y comercialización de circuitos integrados a nivel mundial.

Para desarrollos futuros el dispositivo cuenta con una interfaz de comunicación de datos USB

por el cual con este mismo integrado se realiza el aislamiento necesario para la etapa de

trasferencia ya que el ADUM3160BRWZ (Figura 21) proporciona mecanismos para detectar

la dirección del flujo de datos y control sobre el estado de su salida.

Las corrientes que consumen los integrados principales del circuito también son importantes

a la hora de obtener un aislamiento completo de todas las etapas que componen el dispositivo

Figura 21. Integrado ADUM3160BRWZ

Tomado de: Datasheet integrado ADUM3160BRWZ, Analog Devices empresa dedicada

al diseño, fabricación y comercialización de circuitos integrados a nivel mundial.

Page 70: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…70

a diseñar y cumplir con las especificaciones a las que hace referencia la norma internacional

para equipos de electrocardiografía. A continuación, en la tabla 10 se detallan los integrados

principales con su consumo máximo de corriente:

Tabla 10. Corrientes integrados principales.

INTEGRADOS PRINCIPALES CORRIENTE (mA)

ADS1298 100

PIC32MX795F512H 300

TPS60403DBVR 60

TPS73201DBVT 250

TPS72301DBVT 200

ADM7154ARDZ 600

TOTAL 1510

Como se puede observar en la tabla 10 la suma de las corrientes máximas de los integrados

principales es de 1510 mA. Estos valores con los cuales se hace este cálculo son los máximos

obtenidos de las hojas de datos técnicos de cada uno, pero en realidad estos elementos cuando

se encuentran en etapa de operación no llegan a su pico de consumo de corriente, por lo que

se puede dar un manejo adecuado en este punto a la hora de escoger el aislador principal del

circuito. Se escoge un aislador que entregue un máximo de 1.2 Amp, teniendo en cuenta que

los componentes no serán utilizados en su máxima capacidad, por lo que el valor calculado

nunca llegará al límite.

Para obtener un asilamiento completo del sistema se escoge el integrado NCM6S0505EC

(Figura 22) de la empresa Murata Power Solutions Inc. Este es un módulo de aislamiento de

propósito específico que contiene un convertidor DC / DC de 5V con una potencia de 6W,

que cuenta con una entrada de voltaje doble y una tensión de salida simple y con el cual se

logra aislar de manera óptima todas las etapas de potencia del circuito general que me puedan

inducir corrientes peligrosas al paciente [32].

Page 71: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…71

Esta referencia de módulo de aislamiento es muy utilizada en el diseño y construcción de

dispositivos médicos y en la tabla 11 se pueden observar algunas de las especificaciones

principales de este integrado:

Tabla 11. características integrado NCM6S0505EC

Integrado NCM6S0505EC

Tipo Modulo aislado

Número de salidas 1

Voltaje entrada Min 4.5V

Voltaje entrada Max 9V

Voltaje salida 5V

Corriente salida Max 1.2A

Voltaje de aislamiento 5.2kv

Temperatura de operación -40°C ~ 85°C

Tomado de: Datasheet integrado NCM6S0505EC, Murata Power Solutions Inc. Líder mundial en el diseño, fabricación y

suministro de materiales electrónicos avanzados, componentes electrónicos de vanguardia y módulos multifuncionales de

alta densidad.

Figura 22. Integrado NCM6S0505EC.

Tomado de: Datasheet integrado NCM6S0505EC, Murata Power Solutions Inc. Líder mundial en el

diseño, fabricación y suministro de materiales electrónicos avanzados, componentes electrónicos de

vanguardia y módulos multifuncionales de alta densidad.

Page 72: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…72

3.7. Alimentación del ADS1298

Para la alimentación y el correcto funcionamiento del ASIC ADS1298 se deben generar unos

niveles de voltaje análogos específicos, aparte de la alimentación de todo el sistema, por el

cual se utilizan diferentes fuentes de alimentación que adecuen los 5V de entrada en dos

niveles de tensión positivo y negativo llamados AVDD y AVSS que entregan +2.5V y -2.5V.

Estos tipos de fuentes encargadas de adecuar los voltajes para el ADS1298 vienen en distintas

referencias de circuitos integrados de la empresa Texas Instruments de las cuales se eligen

tres y se describen sus características en la tabla 12.

Tabla 12. Características fuentes de alimentación.

Integrado Package Vin Vout Iout Aplicaciones Descripción

TPS60403DBVR SOT-23

(5)

1,6V a

5,5V

-1.6V a

-5.5V 60mA

Instrumentación

médica, fuente

portable

Inversor de

Voltaje de 1,6V

a 5,5V

TPS73201DBVT SOT-23

(5)

1,7V a

5,5V 2,5V 250mA

Regulador para

DSPs, ASIC’s y

Microprocesadore

s

Regulador de

voltaje de 5V a

2.5V

TPS72301DBVT SOT-23

(5)

-1.2 V

a - 10V -2.5V 200mA

Optical

networking,

Optical Drivers

Regulador de

voltaje de -5V

a -2.5V

Tomado de: Datasheet integrados TPS60403DBVR, TPS73201DBVT, TPS72301DBVT, Texas Instruments

empresa dedicada al diseño, fabricación y distribución de elementos semiconductores y circuitos integrados a

nivel mundial.

Para la alimentación del PIC32MX795F512H y el ADS1298 se requiere una fuente de voltaje

digital a 3.3V, para ello se utiliza un integrado regulador el cual se encarga de reducir el

voltaje digital de alimentación de entrada del dispositivo que es 5V a 3.3V, lo requerido para

el buen funcionamiento de estos elementos.

El regulador utilizado para acondicionar esta señal de voltaje es el integrado

ADM7154ARDZ (Figura 23) de la empresa Analog Devices, que como su nombre lo indica

Page 73: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…73

es un regulador de voltaje lineal que posee un rango de trabajo de entrada de 2.3V hasta 5.5V

con una salida estándar de 3.3V y proporciona hasta 600mA de corriente de carga. Para más

información de datos de fábrica revisar tabla 13 [33].

Tabla 13. Características integradoADM7154ARDZ.

Integrado ADM7154ARDZ

Número de reguladores 1

Voltaje entrada Min 2.3V

Voltaje entrada Max 5.5V

Voltaje salida 3.3V

Corriente salida 600mA

Package 8-SOIC

Temperatura de operación -40°C ~ 125°C

Tomado de: Datasheet integrado ADM7154ARDZ, Analog Devices empresa dedicada al diseño, fabricación y

comercialización de circuitos integrados a nivel mundial.

3.8. Puertos de comunicación

Los puertos de comunicación son aquellas herramientas que me permiten realizar un

intercambio y un manejo del flujo de datos entre dos o más dispositivos electrónicos. El

avance tecnológico que existe hoy en día ha permitido que el enviar y recibir datos de un

dispositivo a otro sea cada vez más eficiente en cuanto a sus capacidades de trasmisión y de

Figura 23. Integrado ADM7154ARDZ.

Tomado de: Datasheet integrado ADM7154ARDZ, Analog Devices empresa

dedicada al diseño, fabricación y comercialización de circuitos integrados a nivel

mundial.

Page 74: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…74

manera más sencilla en cuanto a su configuración y conexión. Entre los dispositivos más

comunes en los cuales se puede establecer una comunicación con otro elemento está el

computador el cual maneja diferentes puertos de comunicación y me permite realizar un

mejor manejo de los datos debido a su gran capacidad de procesamiento.

Para el desarrollo de este proyecto se manejan diferentes puertos de comunicación con los

cuales se pretende realizar el intercambio de los datos obtenidos en la señal

electrocardiográfica digitalizada, para así llegar a realizar un grafica en tiempo real de esta

señal. Estos puertos de comunicación también se utilizan en el proyecto para realizar la

configuración del integrado de aplicación específica. A continuación, mencionaremos

brevemente los puertos de comunicación utilizados y el por qué se escogieron para el

desarrollo.

3.8.1. Bus de comunicación SPI

SPI (Serial Peripherical Interface) es un estándar de comunicación síncrona de 4 hilos en el

cual se trasmiten paquetes de información en serie de longitud de 2 a 16 bits y es

principalmente utilizado entre integrados electrónicos. Cada dispositivo o integrado

conectado por medio del bus SPI puede trabajar tanto como maestro como esclavo ya que

este tipo de comunicación serial es full dúplex y se puede realizar configuraciones en cascada

entre 2 o más dispositivos.

Tal como se ve en la figura 24 las 4 líneas de señales de configuración que maneja el bus SPI

son:

SCLK (Reloj)

MOSI (Maestro es salida, esclavo es entrada) por sus siglas en inglés: Master Out

Slave In

MISO (Maestro es entrada, esclavo es salida) por sus siglas en inglés: Master In Slave

Out

SS (Slave select)

La línea SCLK es la línea de reloj, se genera por el maestro y es la encargada de sincronizar

la trasmisión de los datos; la línea MOSI es la que trasmite los datos del maestro al esclavo;

Page 75: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…75

la línea MISO transmite los datos del esclavo al maestro y; la línea SS es la que selecciona

el dispositivo al cual se va a trasmitir.

Las aplicaciones más comunes de este bus integran interfaces a E/S externas o expansión

periférica a través de dispositivos tales como registros de desplazamiento, controladores de

pantalla, SPI EPROMS y convertidores análogo - digital [34].

Se escoge trabajar con una comunicación SPI (Figura 24) ya que uno de los integrados

principales del proyecto para la captura de señales ECG, que es el ADS1298, utiliza solo este

medio de comunicación para la trasmisión de los datos obtenidos y también lo requiere para

realizar su configuración inicial.

3.8.2. UART

Uart (Universal Asynchronous Reciver/Trasmitter) es uno de los elementos más importantes

en los sistemas de comunicaciones en serie y para el proyecto se utilizará como canal de

comunicación entre el dispositivo periférico y el ordenador, es full dúplex y en su ejecución,

para recibir información convierte los datos de serie a paralelo y para la trasmisión convierte

de paralelo a serie. En la figura 25 se detalla que la UART está compuesta de varios bloques

donde se distinguen de manera principal los registros de datos de trasmisión y recepción, los

Figura 24. Configuración de un bus SPI con un dispositivo maestro y 3 esclavos.

Tomado de: Protocolo SPI, Ingeniería de microcontroladores, institución mexicana enfocada en el campo

de la investigación, capacitación y enseñanza de electrónica.

Page 76: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…76

registros de desplazamientos, los registros de control y señales de sincronización para el

comienzo de la trasmisión. Este tipo de comunicación es de trasmisión síncrona, aunque por

tradición se le ha conocido como asíncrona ya que hace referencia a la flexibilidad en la

trasmisión de la siguiente palabra de datos. En la siguiente figura se puede observar el

diagrama general de una UART [35].

Las aplicaciones básicas de la UART son principalmente las comunicaciones con el PC o las

PDA’s, las trasmisiones de audio, las trasmisiones de video, las comunicaciones vía

Bluetooth y maneja protocolos como RS-232, RS-485, LIN 1.2 e IrDA®.

3.8.3. USB

Por sus siglas en inglés (Universal Serial Bus) el USB es un bus estándar de comunicación

de los más usados a nivel mundial en el sector industrial y de las telecomunicaciones. Su

principal función es la de comunicar computadoras, periféricos y dispositivos electrónicos

trasmitiendo solo una unidad de información a la vez como además brindar energía eléctrica

Figura 25. Diagrama de bloques UART.

Tomado de: Datasheet PIC32MX795F512H, Microchip, proveedor líder de microcontroladores y

semiconductores analógicos.

Page 77: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…77

a los diferentes equipos conectados por este medio. Fue diseñado en 1996 y en 2004 se

popularizo y se convirtió en uno de los principales canales a la hora de realizar intercambio

de datos.

El bus USB maneja dos tipos de operación:

Baja velocidad: 1,5 Mbps, para dispositivos como teclados, ratones, que no manejan

grandes cantidades de información

Alta velocidad: 12 Mbps, para dispositivos como unidades de CDROM, altavoces,

módems RTC (Red Telefónica Conmutada), etc.

En cuanto a su construcción, el bus USB se compone de cuatro hilos (Figura 23), dos para

datos y dos para alimentación y su simplicidad es una de sus principales características.

Cualquier evento de trasmisión o intercambio de datos que emplee este bus involucra por lo

menos tres paquetes de datos. La operación inicia cuando el controlador del host decide que

dispositivo conectado a la red va a utilizar para la comunicación para ello envía un mensaje

con un código de identificación a todos los equipos de la red para que el equipo que logre

reconocerlo establezca un canal de comunicación entre los dos [36].

El conector y los pines estándares se detallan en la figura 26.

Figura 26. Pines y conector estándar USB.

Tomado de: Puertos USB - Bus Serie Universal y descripción de la norma IEEE 1394, Intef, Instituto

nacional de tecnologías educativas y de formación del profesorado.

Page 78: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…78

3.9. Listado de componentes

Los principales integrados necesarios para la construcción del dispositivo se seleccionan de

acuerdo con la hoja de datos del kit de desarrollo del ASIC, llamada ADS1298ECG-FE

(ADS1298 Front-End Performance Demonstration Kit) y de la hoja de datos del procesador

PIC32MX795F512H. Los demás componentes como resistencias, condensadores,

inductores, diodos y cristales también se obtienen de los circuitos esquemáticos encontrados

en estas hojas de datos. La tabla 14 muestra los dispositivos comprados.

Tabla 14. Tabla de componentes completa

CANTIDAD DESCRIPCIÓN N. PIEZA DEL FABRICANTE N. PIEZA DIGIKEY FABRICANTE

20 Condensador 1 uF GRM188R61E105KA12D 490-3897-1-ND

Murata Electronics

North America

20 Condensador 0.1 Uf GRM188R71E104JA01J 490-9691-1-ND

Murata Electronics

North America

20 Condensador 10 uF GRM188R61C106KAALD 490-10728-1-ND

Murata Electronics

North America

10 Condensador 22 uF GRM188R61A226ME15D 490-10476-1-ND

Murata Electronics

North America

10 Condensador 2.2 uF GRM188R61E225KA12D 490-10731-1-ND

Murata Electronics

North America

10 Condensador 0.01 uF GRM1857U1A103JA44D 490-8269-1-ND

Murata Electronics

North America

30 Condensador 47 pF GRM1885C1H470FA01J 490-9687-1-ND

Murata Electronics

North America

10 Condensador 15 pF GRM1885C1H150FA01D 490-9715-1-ND

Murata Electronics

North America

10 Condensador 22 pF GRM1885C1H220FA01J 490-9685-1-ND

Murata Electronics

North America

10 Condensador 12 pF GRM1885C1H120FA01D 490-10704-1-ND

Murata Electronics

North America

10 Condensador 100 pF GRM1885C1H101JA01D 490-1427-1-ND

Murata Electronics

North America

20 Resistencia 10 Kohm MCR03ERTF1002 RHM10.0KCFCT-ND Rohm Semiconductor

20 Resistencia 22.1 Kohm MCR03ERTF2212 RHM22.1KCFCT-ND Rohm Semiconductor

10 Resistencia 24 ohm MCR03ERTJ240 RHM24CGCT-ND Rohm Semiconductor

10 Resistencia 392 Kohm MCR03ERTF3923 RHM392KCFCT-ND Rohm Semiconductor

10 Resistencia 48.7 Kohm MCR03ERTF4872 RHM48.7KCFCT-ND Rohm Semiconductor

10 Resistencia 100 Kohm MCR03ERTF1003 RHM100KCFCT-ND Rohm Semiconductor

10 Resistencia 49.9 Kohm MCR03ERTF4992 RHM49.9KCFCT-ND Rohm Semiconductor

10 Resistencia 46.4 Kohm MCR03ERTF4642 RHM46.4KCFCT-ND Rohm Semiconductor

10 Resistencia 47.5 Kohm MCR03ERTF4752 RHM47.5KCFCT-ND Rohm Semiconductor

Page 79: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…79

10 Resistencia 43.2 Kohm MCR03ERTF4322 RHM43.2KCFCT-ND Rohm Semiconductor

10Bobina 3.3 uH LQM31PN3R3M00L 490-6705-1-ND

Murata Electronics

North America

4Diodo rectificador CR

S08 CRS08(TE85L,Q,M) CRS08QMCT-ND

Toshiba Semiconductor

and Storage

2Conector USB Hembra

orificios pasantes 61400416021 732-2106-ND Wurth Electronics Inc

1integrado aislador

NCM6S0505C NCM6S0505EC 811-2987-5-ND

Murata Power Solutions

Inc.

1Integrado aislador USB

ADUM3160BRWZ ADUM3160BRWZ ADUM3160BRWZ-ND Analog Devices Inc.

1Integrador regulador

lineal ADM7154 ADM7154ARDZ-3.3-R7

ADM7154ARDZ-3.3-

R7CT-ND Analog Devices Inc.

1Integrado procesador

PIC32MX795F512H PIC32MX795F512H-80I/PT

PIC32MX795F512H-

80I/PT-ND Microchip Technology

1Integrado fuente

TPS60403 TPS60403DBVR 296-27005-1-ND Texas Instruments

1Integrado fuente

TPS73201DBVT TPS73201DBVT 296-15807-1-ND Texas Instruments

1Integrado fuente

TPS72301DBVT TPS72301DBVT 296-15798-1-ND Texas Instruments

1Integrado oscilador

2.048 MHZ SG-615P 2.0480MC0:ROHS SER2218CT-ND EPSON

1Integrado amplificador

OPA376AIDCKT OPA376AIDCKT 296-22191-1-ND Texas Instruments

1Integrado conversor

A/D ADS1298IPAG ADS1298IPAG 296-27734-ND Texas Instruments

6

Integrado diodo de

protección ESD doble

bidireccional

PESD5V0S2BT PESD5V0S2BT,215 568-4056-1-ND NXP USA Inc.

1Conector DB-15 hembra 5747845-4 A32121-ND

TE Connectivity AMP

Connectors

2 Cristal 8 MHZ ECS-80-20-5PXDU-TR XC1526CT-ND ECS Inc.

2 Cristal 32 MHZ 9C-32.000MAAJ-T 887-1494-1-ND TXC CORPORATION

1Pulsador N.O montaje

superficial 1.141.005.030.000 1715-1676-1-ND RAFI USA

1

Conector 10 POS 2H

montaje superficial

JTAG SFM210-LPSE-D05-SP-BK S9268-ND

Sullins Connector

Solutions

1Conector 6 POS 1H patas

pasantes UART PPTC061LFBN-RC S7004-ND

Sullins Connector

Solutions

Todos los elementos mencionados en esta lista fueron adquiridos en la página web de la

empresa Digi-key electronics company (www.digikey.com) la cual es la quinta empresa más

grande del mundo en la comercialización y distribución de componentes electrónicos. Para

los elementos que se necesitaron en más de 5 unidades se pidieron en cantidades grandes ya

que de esa manera sale con un costo menor

Page 80: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…80

CAPITULO 4. DISEÑO DEL CIRCUITO DEL SISTEMA PORTABLE.

4.1. Diagrama de bloques del esquema del circuito

Para organizar el trabajo, se decidió dividir el diseño en 5 etapas principales, en las cuales se

tuvieron en cuenta todas las consideraciones para lograr los objetivos descritos del proyecto.

Se tiene una etapa de protección al paciente, la cuál es la encargada que no se genere un sobre

voltaje y de esta manera protegerlo de cualquier problema que se pueda generar. Paso

seguido, la señal entra a un conversor A/D (Análogo a digital), que se encarga de enviar la

información binaria al procesador utilizado. La tercera etapa es la encargada de generar los

voltajes para las fuentes de poder análogas del procesador ADS1298. Hasta esta parte del

diseño, se utilizó la hoja de datos del kit de desarrollo del procesador, llamada

ADS1298ECG-FE (ADS1298 Front-End Performance Demonstration Kit), el cuál indicaba

como conectar los electrodos, que integrados requería para las fuentes y el circuito para la

puesta en marcha y comunicación SPI.

La siguiente etapa contiene el circuito para el correcto funcionamiento del

PIC32MX795F512H, teniendo en cuenta las interfaces de comunicación que se han de

conectar. La quinta y última etapa, contiene las interfaces externas del circuito embebido

(tanto de comunicación como de alimentación).

4.1.1. Primera etapa: Diseño de circuito de protección de pacientes y filtros antialiasing

Se parte de la base de que el conector del cable ECG es un DB15, por eso se realiza la

conexión de manera que funcione con éste cable (Figura 27a).

En el punto 2.1.6 del marco teórico se definió el fenómeno de aliasing y de qué manera

evitarlo, y por ello se agregaron al proyecto filtros pasivos para minimizar la entrada de

señales de ruido en el sistema conversor análogo a digital. Tal como se muestra en la figura

27b cada una de las derivaciones se lleva a un filtro conformado por 2 resistencias y 2

condensadores.

Page 81: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…81

Por otro lado, como se ha mencionado en el marco teórico, en la sección 2.1.9 “Norma

internacional para equipos electromédicos”, la tarjeta para el proyecto debe seguir cierta

normatividad para funcionar de manera óptima protegiendo a los pacientes que se les solicitó

hacer las pruebas y desarrollo del equipo. Se decidió agregar diodos, como se ve en la figura

27c para prevenir sobre voltajes que podrían afectar al paciente.

Gran parte del diseño del circuito de protección y filtros antialiasing se tomó de la hoja de

datos de la tarjeta de desarrollo del ADS1298, llamada “ADS1298ECG-FE/ADS1198ECG-

FE ECG Front-End Performance Demonstration Kit”.

Page 82: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…82

a. Conector DB15 de cable ECG

a. Filtro pasivo de entrada de electrodo

b. Circuito de protección paciente con diodos

Figura 27. Circuito protección de pacientes.

Page 83: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…83

4.1.2. Segunda etapa: Circuito del ADS1298

El circuito de puesta en marcha del ADS1298 consta de un cristal de 2.048MHz (Figura 28a)

para su correcto funcionamiento. La salida de los filtros del circuito de protección de paciente

(Sección 4.1.1) llega a la entrada de los canales del integrado ADS1298 (Figura 28b). Por

otro lado, se dejan indicado el bus SPI que se conecta al bus de entrada del integrado

programador PIC32MX (Sección 4.1.3). Se conecta la alimentación del integrado con unos

filtros pasivos para disminuir el ruido de entrada de la fuente de 60Hz.

Por otro lado, se utiliza un amplificador OPA376 para dar salida al cable blindado y así

disminuir el valor de voltaje DC que se obtiene a causa de diferentes factores. La pierna

derecha (que se utiliza como voltaje de referencia del sistema) se conecta a la entrada del

amplificador y también a la salida del ADS1298 (RLDOUT), para mejorar la respuesta del

sistema.

El circuito de puesta en marcha del ADS1298 se tomó de la hoja de datos de la tarjeta de

desarrollo del ADS1298, llamada “ADS1298ECG-FE/ADS1198ECG-FE ECG Front-End

Performance Demonstration Kit”.

Page 84: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…84

a. Circuito del cristal de 2.048MHz

b. Circuito de puesta en marcha ADS1298

Figura 28. Circuito ADS1298.

Page 85: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…85

4.1.3. Tercera etapa: Fuentes de alimentación análogas para el ADS1298

El ADS1298 requiere para su funcionamiento una fuente de voltaje análogo que entregue -

2.5V y 2.5V, además de una fuente digital de 3V. Por esto se decide trabajar con los

integrados que entreguen esos valores de tensión. Primero, la señal de 5 voltios de la fuente

principal de alimentación del circuito, detallada en la quinta etapa, es invertida para obtener

-5V (Figura 29a) por medio del integrado TPS60403, luego la salida va al acondicionador de

voltaje TPS72301DBVT que se encarga de entregar -2.5V (Figura 29c), o lo que se llamará

AVSS. Los 5V también van al integrado acondicionador TPS73201DBVT, que tiene como

salida 2.5V (Figura 29b) o lo que se llamará AVDD.

El circuito de las fuentes de alimentación del ADS1298 se tomó de la hoja de datos de la

tarjeta de desarrollo del ADS1298, llamada “ADS1298ECG-FE/ADS1198ECG-FE ECG

Front-End Performance Demonstration Kit”.

Page 86: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…86

a. Fuente inversora (De 5V a -5V)

b. Acoplamiento de señal (5V a 2.5V)

c. Acoplamiento de señal (-5V a -2.5V)

Figura 29. Fuentes de alimentación ADS1298.

Page 87: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…87

4.1.4. Cuarta etapa: Circuito del PIC32MX795F512H

Para ésta etapa se diseñó el circuito de puesta en marcha del procesador que actúa como

programador del ADS1298 y también como el interfaz de comunicación. Importante resaltar

que utiliza un cristal para trabajar a 8MHz, qué será importante a la hora del desarrollo del

código con el que se programará el PIC. También se instala un pulsador de RESET para

facilitar la interacción con el usuario.

Adicionalmente, como se ve en la figura 30, se dejan indicados los buses de comunicación,

como lo son el bus SPI, que se conecta directamente con el del ADS1298, el bus USB

(diseñado para futuros desarrollos), se cablea también una UART (Inicialmente diseñado

para tener comunicación con un módulo de bluetooth o con un puerto COM de un

computador) y finalmente, un bus JTAG, el cual se diseñó con el propósito de programar el

PIC.

Figura 30. Circuito PIC32MX795F512H.

Page 88: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…88

Cuando se decidió inicialmente que se programaría por medio de JTAG, no se tuvo en cuenta

que el material que se tenía para utilizar este medio (H-JTAG), no tiene las librerías para

trabajar con el procesador seleccionado, por ende, cuando se tiene la tarjeta finalizada se debe

hacer un circuito aparte para lograr programar el procesador de otra manera. Como solución

se propuso el circuito se muestra en la figura 31, que requiere de un programador PICkit3 y

trabaja con un bus ICSP. Los pines del PIC utilizados para este fin son el 17 y 18, además de

trabajar con el pin /MCLR (pin 7). De esta manera se monta el circuito externo.

Otro de los errores cometidos en el diseño del circuito, fue que se olvidó conectar los pines

de RESET y PWDN al procesador PIC, por ende, se cableó externamente a los pines 13 y 16

de la manera como se muestra en la figura 32.

Figura 31. Circuito externo para programar PIC32MX

Tomado de: MICROCHIP [27]

Page 89: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…89

4.1.5. Quinta etapa: Circuito de alimentación

El circuito de alimentación principal se muestra en la figura 33. Consta de dos integrados de

aislamiento, uno para el bus USB, llamado ADUM3160 y otro como fuente de todo el

sistema, el cual es el NCM6S0505C que entrega 5V a la salida. El integrado ADM7154

funciona para acondicionar la señal de 5V a 3.3V, requerido para alimentar las fuentes

digitales tanto del PIC32MX795F512H como del ADS1298.

Figura 32. Pines cableados externamente para la configuración del ADS1298

Page 90: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…90

4.2. Diseño del circuito físico

Después de tener todo el circuito lógico realizado, se procede a cablear cada parte del mismo.

Se decide que se va a montar sobre una plaqueta con dos caras, las cuales son nombradas

TOP y BOTTOM (Superior e inferior en español).

Un dato importante para resaltar es la malla contra ruido que se le adiciona para prevenir

corrientes intrusas en el circuito, y como se puede ver en la figura 34 se conecta a la tierra

análoga definida en la sección de fuentes de alimentación del ADS1298, todo para asegurar

que la entrada del conversor análogo a digital sea lo más libre de ruido posible.

Figura 33. Circuito alimentación

Page 91: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…91

Después de tener el diseño del cableado de la plaqueta finalizado, se procede a realizar la

placa sobre la cual se montarán los materiales. Para esto se generan los “gerber” (Utilizados

para la manufactura de las plaquetas) y se envían a Microcircuitos, empresa encargada de

realizar ésta parte del trabajo. En la figura 35 se puede ver el resultado final. Se elige un color

azul para la plaqueta por gusto de los desarrolladores.

a. Parte TOP

b. Parte BOTTOM

Figura 34. PCB capa TOP y BOTTOM.

Page 92: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…92

Finalizada la placa y con los materiales listos, se procedió a soldar cada uno de los integrados,

resistencias, condensadores y diodos (Figura 36). Para esta parte sólo se requirió la unidad

de soldadura que tiene la universidad en el laboratorio LEA.

a. Placa parte TOP

b. Placa parte BOTTOM

Figura 35. Placa entregada por Microcircuitos.

Page 93: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…93

a. Placa finalizada parte TOP

b. Placa finalizada parte BOTTOM

Figura 36. Placa terminada.

Page 94: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…94

CAPITULO 5. PRUEBAS PRELIMINARES

Antes de realizar la tarjeta propuesta en el proyecto, se hicieron pruebas para aprender a

manejar de manera correcta el circuito integrado de aplicación específica (ASIC)

seleccionado. En el laboratorio se tenía disponible una tarjeta de desarrollo con el ADS1299,

por lo cual se realizaron las pruebas preliminares con esta tarjeta.

Cuando se terminó el diseño de la tarjeta “ECG Device”, se empezaron a realizar pruebas de

las gráficas del ECG, con diferentes filtros, funciones y empezando primero almacenando

datos para obtener una respuesta ideal, para después aplicar el código desarrollado en tiempo

real.

5.1. Conversión del dato binario a voltaje

Se realiza un programa en MATLAB® que grafica una señal caudrada simulada por el

ADS1299. Hay que resaltar que las mismas operaciones encontradas para hallar el dato, son

las que se usan para el ADS1298.

Primero se aplicaron las ecuaciones correspondientes para convertir los datos de las muestras

obtenidas en los voltajes de la señal real. Para esto se graficaron las rectas en excel con los

valores que el datasheet mostraba los cuales se resumen en la tabla 15.

Tabla 15. Valores ideales del código de salida.

Fuente: ADS1299 Datasheet. Pg.39.

Page 95: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…95

Con los valores de la tabla mostrados en la tabla 16 se obtiene la figura 37, la cual muestra

el comportamiento de la recta de la conversión analoga a digital:

Tabla 16. Comparación de los valores de entrada vs el código de salida.

Señal análoga de

entrada (V)

Codigo binario

(Convertido a

decimal) de salida

4,5 8388607

5,72205E-07 1

0 0

-5,72205E-07 16777215

-4,500000536 8388608

La figura 37 denota el comportamiento de los datos binarios obtenidos (eje y) vs el voltaje al

que corresponde (eje x). Como se puede ver inicialmente lo que se obtiene es que los valores

después de 8388607 son los valores de voltaje negativo, y los que están antes son positivos.

Figura 37. Valores análogos vs binarios.

0

2000000

4000000

6000000

8000000

10000000

12000000

14000000

16000000

18000000

-6 -4 -2 0 2 4 6

Valores análogos vs binarios

Page 96: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…96

Ahora se realiza complemento a 2 para facilitar los cálculos de conversión de datos cuando

se reciban en la interfaz, y se muestra en la tabla 17, para obtener los valores negativos de la

gráfica, y así trazar una línea recta.

Tabla 17. Comparación de los valores de entrada vs el código de salida aplicando a complemento a 2.

Señal análoga de

entrada (V)

Codigo binario

(Convertido a

decimal) de salida

4,5 16777215

5,722E-07 8388609

0 8388608

-5,722E-07 8388607

-4,5 0

Con los valores de la tabla 6 se realiza la gráfica 38, que muestra la recta de la cual se requiere

la ecuación para convertir los datos binarios en los valores equivalente a los voltages de

entrada.

Figura 38. Valores análogos vs datos binarios con complemento a 2.

0

2000000

4000000

6000000

8000000

10000000

12000000

14000000

16000000

18000000

-6 -4 -2 0 2 4 6

Voltaje vs complemento a 2

Page 97: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…97

5.2. Visualización de resultados con diferentes pruebas en MATLAB®

Como resultado de realizar complemento a 2 en el programa inicial, se desarrolló el codigo

de la figura 39 en MATLAB® para adecuar el dato obtenido (con complemento a 2 aplicado)

al valor de voltaje que es lo que se debe graficar.

5.2.1. Señal cuadrada

Antes de graficar la señal cuadrada en MATLAB®, se configuraron los registros para que el

ADS1299 generará una señal cuadrada con una frecuencia 0.97Hz, por medio de CONFIG2

con el valor hexadecimal 0xD0. El canal 1 se le da una ganancia de 1 con una señal de prueba

generada internamente asignando el valor 0x05 a CH1SET.

Al ejecutar el programa se obtiene la figura 40, que es una señal cuadrada de prueba generada

internamente en el ADS1299. Como se puede notar hay una diferencia de 1024 muestras

cada ciclo por lo que es acorde teniendo en cuenta que en los registros se parametrizó para

trabajar con ésta frecuencia de muestreo. Para mayor información sobre los registros

Figura 39. Código para graficar la señal generada en MATLAB®.

Page 98: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…98

configurados se debe revisar la sección 6.1.8 “Registros del ADS1298” que también aplican

en la mayoría de casos para el ADS1299.

Posteriormente se realiza la configuración de la lectura de 4 canales en el ADS1299,

parametrizando las señales de prueba generadas internamente en el software LPCXpresso,

con una ganancia de 24 (Figura 41).

Como resultado se obtiene el correcto funcionamiento de los 3 primeros canales (El cuarto

canal está dañado en la tarjeta que se tenía a disposición), y se gráfican ingresando los datos

en el programa realizado en MATLAB®. Las gráficas se muestran en la figura 41.

Figura 40. Gráficas generadas.

Page 99: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…99

5.2.2. Señal sinusoidal

La siguiente prueba se trata de conectar una señal externa producida por un generador de

señales a un canal del ADS1299, y graficar la señal obtenida de la conversión análoga a

digital por MATLAB®. Para éste caso los registros CONFIG2 y CH1SET se les asignará

0xC0 (Señal de muestreo externa) y 0x00 (Señal de electrodo con ganancia 1)

respectivamente.

Se logra simular con el generador una señal sinusoidal de 200mV pico a pico a una frecuencia

de 2,1575Hz (Figura 42), de modo que se adquieren los datos y se grafican en el programa

desarrollado en MATLAB®.

Figura 41. Gráficas de los 4 canales en MATLAB®.

Page 100: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…100

Como resultado se observa una señal muy similar en la gráfica de MATLAB®, a la medida

en el osciloscopio. Difieren un poco debido a que al hacer el muestreo se agrega un valor de

voltaje DC que en éste punto no se ha erradicado. Posteriormente se verá que se aplican los

filtros digitales para superar éste obstáculo. Como resultado se grafican las muestras en

MATLAB® y se obtiene la figura 43.

Figura 42. Señal de entrada al ADS1299 en osciloscopio.

Figura 43. Señal de medida con el ADS1299 y graficada en MATLAB®.

Page 101: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…101

Para hacer la simulación se realizó el circuito de la figura 44.

5.3. Pruebas con ADS1298

Al haber realizado las pruebas con un procesador diferente al seleccionado, cuando se

finalizó la construcción de la tarjeta, se vio la necesidad de iniciar las pruebas

correspondientes que ya se habían realizado anteriormente. La idea era buscar: La frecuencia

de muestreo ideal para trabajar con la señal ECG, la amplitud que mejor responda a una

excitación por electrodo y finalmente las frecuencias de los filtros.

5.3.1. Frecuencia de muestreo ideal

Antes que nada, se debía asegurar que el circuito funcionará correctamente, por ende, lo

principal era generar las señales de prueba internas cuadradas para cada uno de los ocho

canales que tiene el ASIC. Se hicieron pruebas de funcionamiento en tiempo real de manera

que se graficara la señal cuadrada generada internamente con 250, 500 y 1000 muestras

(Figura 45), funcionando correctamente con las primeras 2, sin embargo, al hacer la prueba

con 1000 muestras, debido a la velocidad que requería el sistema, se perdieron muestras por

lo que se decidió, que, para aplicar la interfaz gráfica, filtros y demás operaciones, lo ideal

era trabajar con 250 muestras por segundo. Para aclarar, solo se ha aplicado complemento a

Figura 44. Circuito para la adquisición de datos.

Page 102: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…102

dos en la prueba de 250 SPS, en las de 500 y 1000 muestras no se aplicó, sin embargo, sirve

para explicar el por qué se eligió la frecuencia de muestreo seleccionada.

Para seleccionar la frecuencia de muestreo primero se debe tener en cuenta que el rango de

frecuencias típicas de una señal ECG es de 0.5Hz a 100Hz, por ende, si se tiene una

frecuencia de 250 muestras por segundo se cumple el teorema de Nyquist para evitar el efecto

Aliasing descrito en la sección 2.2.6, que dice principalmente que la frecuencia de las

muestras debe ser más de 2 veces mayor que la frecuencia de la señal. Del mismo modo las

muestras de 500 y 1000 cada segundo también funcionarían para tomar la señal del

electrocardiograma.

5.3.2. Pruebas con señales externas

Se probó el muestreo una señal triangular dada por un generador de señales a diferentes

frecuencias, las respuestas que se obtuvieron se pueden ver a continuación.

Figura 45. Pruebas a diferentes frecuencias de muestreo.

-0,002

-0,001

0

0,001

0 100 200 300

Am

plit

ud

(V

)

Muestras

Señal de prueba 250 SPS

-2

-1

0

1

2

0 200 400 600

Am

plit

ud

(V

)

Muestras

Señal de prueba 500 SPS

-2

0

2

0 500 1000 1500

Am

plit

ud

(V

)

Muestras

Señal de prueba 1000 SPS

Page 103: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…103

Primero se generó una señal de 1 Hz se frecuencia tal como se muestra en la figura 46,

aclarando que se sigue trabajando con 250 muestras por segundo.

Ahora se prueba una señal de 2Hz de frecuencia (Figura 47), igualmente con un muestro de

250 muestras por segundo.

Figura 46. Señal triangular de 1Hz muestreada

-0,228125361

0,23391643

-0,3

-0,2

-0,1

0

0,1

0,2

0,3

0 100 200 300 400 500

Am

plit

ud

(V

)

Muestras

Señal triangular de 1Hz

Figura 47. Señal triangular de 2Hz muestreada

0,23306456

-0,229910759

-0,3

-0,2

-0,1

0

0,1

0,2

0,3

0 50 100 150 200 250 300 350

Am

plit

ud

(V

)

Muestras

Señal triangular de 2Hz

Page 104: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…104

Para finalizar ésta etapa de pruebas, se generó un muestreó una señal de 5Hz de frecuencia

(Figura 48).

5.3.3. Ganancia ideal

Ahora, se prueba el ECG, con diferentes ganancias para ver cuál es mejor y por qué se elige

la ganancia con la que finalmente se trabajó.

Figura 48. Señal triangular de 5Hz muestreada

-0,221055057

0,231171993

-0,25

-0,2

-0,15

-0,1

-0,05

0

0,05

0,1

0,15

0,2

0,25

0,3

0 50 100 150 200 250 300 350Am

plit

ud

(V

)

Muestras

Señal triangular 5Hz

Page 105: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…105

La figura 49 es la señal ECG sin ganancia muestreada a 250 SPS.

La figura 50 es la señal ECG con ganancia de 2 muestreada a 250 SPS.

Figura 49. Señal ECG, G=1

Ganancia (G)=1

Figura 50. Señal ECG, G=2

Ganancia (G)=2

Page 106: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…106

La figura 51 es la señal ECG con ganancia de 3 muestreada a 250 SPS.

La figura 52 es la señal ECG con ganancia de 4 muestreada a 250 SPS.

Figura 51. Señal ECG, G=3

Ganancia (G)=3

Ganancia (G)=1

Figura 52. Señal ECG, G=4

Ganancia (G)= 4

Page 107: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…107

La figura 53 es la señal ECG con ganancia de 4 muestreada a 250 SPS.

La figura 54 es la señal ECG con ganancia de 8 muestreada a 250 SPS.

Figura 53. Señal ECG, G=6

Ganancia (G)= 6

Figura 54. Señal ECG, G=8

Ganancia (G)= 8

Page 108: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…108

La figura 55 es la señal ECG con ganancia de 12 muestreada a 250 SPS.

Como se puede apreciar en las diferentes imágenes, la respuesta que se acopla mejor a lo que

se quiere llegar en el proyecto, disminuyendo al máximo el ruido que se pueda percibir, es la

de la figura 55, la cual tiene una ganancia de 12. Los filtros que se aplicaron se explicarán a

continuación.

5.4. Filtros digitales desarrollados en MATLAB®

Se desarrollan los 3 filtros mencionados en el apartado 2.2.7.2 “Tipos de filtros” (Filtro pasa

bajo, pasa alto y notch) para que el sistema de visualización de ECG funcione correctamente.

En la figura 56 se evidencia el funcionamiento del filtro butter de MATLAB®. La forma en

que se aplica es guardando los valores del filtro en b1 y a1.

%FILTRO PASO BAJO

[b,a] = cheby2(10,60,100/(Fs/2)); %%//Filtro paso bajo de orden 10, con

corte en 60Hz para eliminar ruido de alimentación. La frecuencia de muestreo

Fs=250SPS.

Figura 55. Señal ECG, G=12

Ganancia (G)= 12

Page 109: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…109

Luego se guardan los valores del siguiente filtro butter (en éste caso rechaza banda tipo notch)

en 2 variables c1 y d1. El filtro rechaza banda se muestra en la figura 57.

%FILTRO RECHAZA BANDA

[c1,d1] = butter(10,[58 62]/(Fs/2),'stop'); %% Filtro rechaza banda, de

orden 10, con frecuencia de corte inferior de 49 Hz y superior de 51Hz

(Elimina componente de 60Hz)

La figura 58 muestra el filtro que deja pasar las frecuencias altas para eliminar el voltaje DC

y dejar la señal lista para ser graficada.

%FILTRO PASO ALTO

Figura 56. Filtro pasa bajas para eliminar ruidos por respiración en MATLAB®

Figura 57. Filtro Notch en MATLAB®

Page 110: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…110

[b1,a1] = butter(2,1/(Fs/2),'high'); %%Filtro de orden 2.

Finalmente se aplican los filtros por medio de la función “filtfilt()” de MATLAB®. Primero

se aplica el pasa altas, luego el pasa bajas y finalmente el rechaza banda para todos los

canales.

X_FILax=filtfilt(b1,a1,CHx); X_FILbx=filtfilt(b,a,X_FILax); X_FILrx=filtfilt(c1,d1,X_FILbx);

Figura 58. Filtro pasa altas para eliminar nivel DC en MATLAB®

Page 111: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…111

CAPITULO 6. PROGRAMACIÓN

La interfaz de programación para el PIC32MX con la que se trabajó fue el entorno de

desarrollo integrado MPLAB X IDE (integrated development environment) v3.51.

Posteriormente se descarga el instalador del compilador para aplicaciones de MICROCHIP.

Una vez con el software MPLAB instalado con el compilador, se descarga la librería para

procesadores de 32 bits llamada XC32 y se instala en la carpeta del compilador.

Para programar el PIC, al instalar el software MPLAB, automáticamente se instala el

ambiente de programación integrado MPLAB X IPE, que se encarga de comunicarse con el

PICkit 3 y transferir el archivo “.hex” generado por el compilador al procesador.

Por otro lado, para el desarrollo de la interfaz de usuario se utilizó la versión R2016a de

MATLAB®, aspecto importante debido a que en ésta existen ciertas funciones que en

versiones anteriores no existen.

6.1. Inicializaciones

Al trabajar con el procesador PIC32MX795F512H, se debe tener en cuenta realizar bien las

inicializaciones de las interfaces de comunicación, interrupciones y de entradas y salidas con

las que se va a trabajar.

6.1.1. Definiciones

Antes de hacer las inicializaciones se definen ciertas constantes para facilitar el código:

El reloj de los periféricos tiene 10 veces la frecuencia del cristal seleccionado, por lo que se

escribe la siguiente línea:

#define GetPeripheralClock() (80000000L)

Las salidas se deben escribir como LAT, debido a requerimientos del sistema, por ende, se

definen los pines y se les asigna el mismo nombre al que se conectará en el ADS1298:

Page 112: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…112

#define CS LATGbits.LATG9

#define nPWDN LATBbits.LATB0

#define nRESET LATBbits.LATB3

#define nSTART LATDbits.LATD10

La lectura de las entradas se debe hacer con PORT. A continuación, se muestra la entrada

para detectar la señal de dato listo (En el ADS1298, el pin DRDY se conecta al pin RD11 del

PIC32MX):

#define nDRDY PORTDbits.RD11

Las direcciones de los registros del ADS1298 se toma de la hoja de datos del mismo, y se

definen en el programa como se muestra a continuación:

#define _WAKEUP 0x02

#define _STANDBY 0x04

#define _RESET 0x06

#define _START 0x08

#define _STOP 0x0A

#define _RDATAC 0x10

#define _SDATAC 0x11

#define _RDATA 0x12

#define _RREG 0x20

#define _WREG 0x40

#define ID 0x00

#define CONFIG1 0x01

#define CONFIG2 0x02

#define CONFIG3 0x03

#define LOFF 0x04

#define CH1SET 0x05

#define CH2SET 0x06

#define CH3SET 0x07

Page 113: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…113

#define CH4SET 0x08

#define CH5SET 0x09

#define CH6SET 0x0A

#define CH7SET 0x0B

#define CH8SET 0x0C

#define RLD_SENSP 0x0D

#define RLD_SENSN 0x0E

#define LOFF_SENSP 0x0F

#define LOFF_SENSN 0x10

#define LOFF_FLIP 0x11

#define LOFF_STATP 0x12

#define LOFF_STATN 0x13

#define GPIO 0x14

#define PACE 0x15

#define RESP 0x16

#define CONFIG4 0x17

#define WCT1 0x18

#define WCT2 0x19

El tiempo de espera se define según la frecuencia del reloj del SPI, para éste caso se considera

ideal el valor asignado a continuación, ya que es 10 veces el tiempo de ciclo del cristal de

2.048MHz seleccionado en el circuito:

#define tCLK 0.00000486

6.1.2. Variables

Las variables son fundamentales pues indicarán el tamaño de cada uno de los datos con los

que se trabajarán y así mismo serán importantes a la hora de entender el diagrama de flujo

del programa.

Page 114: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…114

“leadoff” sólo contará con 2 bytes que son los necesarios para obtener la detección de todos

los electrodos desconectados.

unsigned short leadoff=0;

Las variables en las cuales se guardarán temporalmente los datos de los canales, luego de ser

organizados, serán de tipo entero puesto que se requieren 3 bytes para almacenarlas. Se debe

aclarar que son 8 variables iguales (x=1…8 canales).

int adqCHx_Temp24bit = 0;

Los vectores en los cuales se guardarán los datos temporalmente se llamarán

incomming_samples_CHNx definidos de tipo entero largo (long) de 4 bytes. De igual manera

x=1…8.

long int incomming_samples_CHNx[250];

Se tienen los vectores para trabajar con los datos de las muestras llamada

“incomming_samples24bit_CHNx”, en los cuales se guardarán los datos de los canales

anteriormente obtenidos, pero ahora para realizar el entramado y enviar los datos, mientras

en las variables anteriores se guardan los datos que van llegando. Se llama 24bit debido a que

el dato tiene sólo 3 bytes a pesar que se define como un entero largo con 4 bytes. De igual

manera se crean 8 vectores (x=1…8).

long int incomming_samples24bit_CHNx[250]

La variable que cuenta las muestras “indexBuffer” será de tipo entero sin signo.

unsigned int indexBuffer = 0;

La bandera “Band_RDY” indica cuando se ha completado 1 segundo de muestras.

unsigned char Band_RDY = 0;

Page 115: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…115

El vector para guardar las muestras en forma de trama, incluyendo encabezado y leadoff, se

llamará “send_samples” y requiere un tamaño de 8005 bytes (3 bytes de encabezado, 8000

de los datos de los canales y 2 de detección de leadoff), mientras que el vector

“crc16_samples” tendrá 2 bytes más que son para guardar el dato de CRC16.

char send_samples[8005], crc16_samples[8007];

6.1.3. Entradas y salidas

Se debe definir si son entradas y salidas cada uno de los puertos nombrados anteriormente,

por ésta razón se incluye al inicio del programa las siguientes líneas:

TRISGbits.TRISG9 = 0; (configura CS como salida)

TRISBbits.TRISB3 = 0; (configura nRESET como salida)

TRISBbits.TRISB0 = 0; (configura nPWDN como salida)

TRISDbits.TRISD10 = 0; (configura START como salida)

TRISDbits.TRISD11 = 1; (configura nDRDY como entrada)

Se debe tener en cuenta que si se define cualquier TRIS en valor lógico “1” será una entrada

y si es “0” será una salida.

6.1.4. UART

Para inicializar la UART se utiliza la librería <plib.h> que tiene macros que facilitan la

configuración, se explican a continuación:

UARTconfigure indica sobre cuál puerto de UART se va a configurar y cuales pines se

utilizarán. Por ejemplo, en el programa del proyecto solo se necesitan los pines de

transmisión y recepción de la UART1.

UARTConfigure(UART1, UART_ENABLE_PINS_TX_RX_ONLY);

Page 116: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…116

UARTSetFifoMode define que la comunicación será tipo FIFO (Primero en entrar, primero

en salir) siempre que haya una interrupción por UART habilitada, por ejemplo, en el

programa siempre que se envié o reciba algo, el buffer no se utilizará hasta que se hayan leído

o enviado los datos.

UARTSetFifoMode(UART1,UART_INTERRUPT_ON_TX_NOT_FULL|UART_I

NTERRUPT_ON_RX_NOT_EMPTY);

UARTSetLineControl permite seleccionar el tamaño deseado de los datos UART, la

generación de parámetros de paridad y tramas de datos.

UARTSetLineControl(UART1,UART_DATA_SIZE_8_BITS|UART_PARITY_N

ONE | UART_STOP_BITS_1);

UARTSetDataRate define fácilmente la rata de datos de la comunicación. Utiliza el reloj de

periféricos definido anteriormente.

UARTSetDataRate(UART1, GetPeripheralClock(), 460800);

Finalmente, UARTEnable habilita o inhabilita el bus de comunicación por UART.

UARTEnable(UART1,UART_ENABLE_FLAGS(UART_PERIPHERAL|UART_R

X | UART_TX));

6.1.5. Serial Peripheral Interface (SPI)

Para configurar la interfaz serial por periférico, se debe primero que todo crear una variable

para limpiar el buffer como se muestra a continuación

int rData;

Page 117: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…117

Ahora se deben inhabilitar todas las interrupciones que tengan que ver con el puerto SPI a

trabajar (En éste caso el SPI2). La función CLR, pone en cero lógico el registro al que se le

aplique, de ésta manera se facilita la programación. SPI2CON, es la configuración del puerto

SPI2, se explicará a continuación.

IEC0CLR=0x03800000; (Inhabilita interrupciones)

SPI2CON = 0; (Para la comunicación por el SPI2)

Se debe limpiar el buffer leyéndolo.

rData=SPI2BUF; (Vacía el Buffer de la comunicación)

Ahora se limpian los registros IFS0 e IPC5. Por otro lado, la función SET, se encarga de

poner en uno lógico al registro al que se le aplique.

IFS0CLR=0x03800000; (Se encarga de cualquier evento que esté ocurriendo)

IPC5CLR=0x1f000000; (IPC5 se encarga de las prioridades)

IPC5SET=0x0d000000; (Configura la prioridad IPL=3, con sub-prioridad 1)

IEC0SET=0x03800000; (Habilita RX, TX e interrupciones de error)

La constante SPI2BRG se obtiene de la siguiente formula:

𝐵𝐴𝑈𝐷 =𝐹𝑝𝑏

2(𝑆𝑃𝐼2𝐵𝑅𝐺 + 1)

La velocidad deseada para la comunicación es de 1MHz (BAUD), y la frecuencia del

periférico Fpb=80MHz, como se definió inicialmente, por lo que al despejar la constante

SPI2BRG:

𝑆𝑃𝐼2𝐵𝑅𝐺 =𝐹𝑝𝑏

2(𝐵𝐴𝑈𝐷)− 1 =

80𝑀𝐻𝑧

2(1𝑀𝐻𝑧)− 1 = 39

Al pasar a un valor hexadecimal se obtiene que el registro debe ser:

SPI2BRG=0x0027; (Frecuencia de comunicación = 1Mhz)

Page 118: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…118

Ahora se limpia el sobre flujo para posteriormente realizar la configuración:

SPI2STATCLR=0x40; (Limpia el sobre flujo)

La configuración del SPI2 se realiza teniendo en cuenta la figura 59.

SPI2CON=0x8220; // SPI ON, 8 bits transfer, SMP=1, Master mode

Los bits del registro que se habilitan son el 15 (ON: SPI Peripheral On bit), que se encarga

de encender la comunicación y el puerto SPI2, el 9 (SMP: SPI Data Input Sample Phase bit),

que si está en “1” realiza el muestreo de datos al final del tiempo del dato, en “0” lo hace

justo en la mitad del tiempo de dato. Y el bit 5 (MSTEN: Master Mode Enable bit) indica

que está en modo maestro. Los bits 10 y 11 indican el tamaño de dato que se utilizará, que

en el caso del proyecto son 8 bits, como se muestra en la tabla 18.

Figura 59. Registro SPIxCON

Tomado de: Datasheet PIC32MX795F512H Pg. 191, MICROCHIP [27]

Page 119: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…119

Tabla 18. Cantidad de bits en comunicación SPI.

MODE<32,16>: 32/16-Bit Communication Select bits

MODE32 MODE16 Communication x 32-bit

1 x 32-bit

0 1 16-bit

0 0 8-bit

Los bits 6 (CKP: Clock Polarity Select bit) y 8 (CKE: SPI Clock Edge Select bit), se

seleccionan según cómo funciona el ADS1298, que debe tener el selector de polaridad de

reloj CKP en “0”, pues cuando no esté funcionando la comunicación, el reloj del SPI debe

estar en bajo. El selector de flanco de reloj CKE también debe ser “0” pues sólo leerá el dato

cuando el reloj pase de estado común (si CKP=0, el estado común será bajo, de lo contrario

será alto) al estado activo. En la figura 60 se muestra la manera cómo funciona la

comunicación según la configuración establecida.

Page 120: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…120

6.1.6. Interrupciones

Para la inicialización de la interrupción se utiliza la librería de interrupciones del compilador

XC32 <int.h>. Vale aclarar que la salida del ADS1298 llamada DRDY (Data Ready) y a la

Figura 60. Gráfico de configuración SPI

Tomado de: PIC32 Family Reference Manual, Section 23. Serial Peripheral Interface (SPI) Pg. 20,

MICROCHIP [27]

Page 121: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…121

cual se le ha llamado nDRDY en el programa, se conecta al PIC32MX por medio del pin 45

(RD11), que también es la interrupción 4, y se puede ver en el datasheet del procesador.

La función INTSetVectorPriority define la prioridad del vector de interrupción, en éste caso

se define con 7, más adelante se indica para que se utiliza. INTSetVectorSubPriority define

a su vez la sub-prioridad como 0.

INTSetVectorPriority(INT_EXTERNAL_4_VECTOR,INT_PRIORITY_LEVEL_7);

INTSetVectorSubPriority(INT_EXTERNAL_4_VECTOR,INT_SUB_PRIORITY_LEVEL

_0);

INTClearFlag limpia la bandera de interrupción (en éste caso la INT4) que se activa cada que

entra un dato.

INTClearFlag(INT_INT4);

La función INTEnable habilita la interrupción 4.

INTEnable(INT_INT4, INT_ENABLED); // configure for multi-vectored mode

La rutina INTConfigureSystem configura el núcleo para recibir peticiones de interrupción en

el modo Multi-vectored o Single Vectored. En éste caso se configura para tener varias

interrupciones, es decir, con múltiples vectores.

INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);

Con la siguiente función se inhabilitan las interrupciones para inicializar el ADS1298, que se

explicará en la sección 5.2.1, para posteriormente habilitarlas con la función

INTEnableInterrupts().

INTDisableInterrupts();

El bucle de interrupción se debe definir de la siguiente manera:

void __ISR(_EXTERNAL_4_VECTOR, IPL7AUTO) DRDY_interrupt(void){ }

Page 122: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…122

Indicando primeramente que será una interrupción (ISR), luego el vector de interrupción con

el que se trabajará (INT4), y la prioridad definida anteriormente (Prioridad “7”, subprioridad

“0”). Ahora se define el nombre definido por el programador, el cual es DRDY_interrupt, y

finalmente se han configurado todas las inicializaciones que tienen que ver con el

PIC32MX795F512H.

6.1.7. Funciones para trabajar con el puerto SPI

- ADSsetup: Realiza la configuración inicial y puesta en marcha del ADS1298. Es el

primer paso de las inicializaciones que se verán en el siguiente punto.

Las siguientes funciones están diseñadas para enviar registros y tienen un pequeño retardo

de 20 veces el reloj de la comunicación tCLK definido en el encabezado de definiciones.

Antes de enviar cualquier registro, el pin de “chip select” CS, se debe poner en nivel lógico

bajo, y al terminar de enviar el registro en nivel lógico alto.

- ADS1298_RESET: Se encarga de enviar el registro _RESET definido anteriormente,

al bus SPI2.

- AD1298_START: Envía el registro _START, definido anteriormente.

- ADS1298_WAKEUP: Envía el registro _WAKEUP. No se utiliza.

- S_DATAC: Envía el registro para detener el modo de lectura de datos continuo.

- ADS_RDATA: Envía el registro de _RDATA cuando se requiera leer el dato listo,

ya que previamente se ha detenido la comunicación continua con la función

S_DATAC.

Las siguientes funciones están diseñadas para configurar un registro específicamente con

valores definidos por el programador.

- ADS_RREG: Para leer un registro se debe tener en cuenta enviar 2 bytes llamados

“opcode”, tal como se muestra en la figura 61. La función de leer registro solo posee

1 entrada, que indica la dirección del registro a leer, y una salida que es el valor actual

del mismo.

Page 123: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…123

o Opcode1: 001r rrrr, donde r rrrr es la dirección inicial del registro.

o Opcode2: 000n nnnn, donde n nnnn es el número de registros a leer – 1.

- ADS_WREG: Para escribir en un registro cierto parámetro deseado, se deben enviar

previamente 2 bytes que indican qué se hará una escritura y la dirección del registro

deseado, además de la cantidad de registros que se modificarán, para luego enviar el

valor del registro, tal como se muestra en la figura 62. En la función de escribir

registro se tienen 2 entradas, una que es la dirección o registro a modificar y otra el

cual es el valor que se desea en éste.

o Primer opcode: 010r rrrr, donde r rrrr es la dirección inicial del registro.

o Segundo opcode: 000n nnnn, donde n nnnn es el número de registros a leer – 1.

Figura 61. Envío de registro de lectura al ADS1298

Tomado de: TEXAS INSTRUMENTS, DATASHEET ADS1298, Pg. 64.

Figura 62. Envío de escritura de datos al ADS1298

Tomado de: TEXAS INSTRUMENTS, DATASHEET ADS1298, Pg. 64.

Page 124: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…124

- SPI2_transfer_REG: Para las funciones de leer o escribir registros al ADS1298, se

crea ésta función. En ella se ingresan los 2 “opcodes” a enviar, paso seguido se

mandan al buffer SPI2, y se leen 2 datos previos. Para éste punto se debe aclarar que

por cada vez que se manda un danto al buffer SPI2, se debe leer, si no se crea un

sobreflujo y el programa de detiene. Luego se mandan 2 caracteres de 8 bits, en el

caso de lectura serán “ceros” simplemente para realizar la lectura de lo que envíe el

ADS1298. Para el caso de la escritura se deben ingresar los valores que se desean

modificar en el registro.

- SPI2_transfer_DATA: La función para leer datos se utiliza en la rutina que se verá

más adelante ADS_updateDataCH8. Se utiliza para enviar por el SPI2 2 caracteres

de 8 bits con ceros, para poder leer 2 bytes de la misma manera, recordando que cada

vez que se envía un dato se recibe otro. De ésta manera se asegura la lectura de los

canales cada vez que éste lista una muestra.

6.1.8. Registros del ADS1298

Una vez definidas las funciones para configurar el ADS1298, se asignan los valores de cada

registro para que funcione el programa de manera idónea. A continuación, se explica el

porqué de los valores establecidos.

El registro CONFIG 3 (tabla 19), se encarga de las operaciones de la función integrada del

ADS, llamada RLD (right leg drive, controlador de pierna derecha en español), para reducir

la interferencia de modo común de en un sistema ECG, que aparece como resultado de las

líneas de potencia y otras fuentes ruido. También se encarga de configurar las diferentes

fuentes conectadas.

Se activa el buffer de referencia interna, por medio del bit /PD_REFBUF en “1” lógico. El

voltaje de referencia positivo, VREFP, se configura en 2.4V, debido a qué de ése valor es la

fuente conectada. Ahora se activan la medición de RLD, RLD_MEAS, la referencia de RLD

interna, RLDREF_INT, RLD se habilita, /PD_RLD, así como la función de sensor RLD,

RLS_LOFF_SENS y el estado de RLD, RLD_STAT.

Page 125: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…125

Tabla 19. Valor Registro CONFIG3

7 6 5 4 3 2 1 0

/PD_REFBUF 1 VREF_4V RLD_MEAS RLDREF_INT /PD_RLD RLD_LOFF_SENS RLD_STAT

1 1 0 1 1 1 1 0

ADS_WREG(CONFIG3, 0xDE);

Los valores del registro de configuración 1 se muestran en la tabla 20. El bit HR (high

resolution, alta resolución en español) en “cero lógico” indica que se trabajará en baja

resolución. Con /DAISY_EN inhabilitado significa que no se conectarán más integrados en

cascada. El bit CLK_EN, indica que se tiene un reloj externo por lo que no se activa la salida

de reloj del integrado. Los pines 2, 1 y 0, son los pines DR (Data Rate) para establecer la tasa

de muestreo de datos, y como se está trabajando en baja resolución se establece que se tendrá

una frecuencia de 250 muestras por segundo.

Tabla 20. Valor Registro CONFIG1

7 6 5 4 3 2 1 0

HR /DAISY_EN CLK_EN 0 0 DR[2:0]

0 0 0 0 0 1 1 0

ADS_WREG(CONFIG1, 0x06);

El registro CONFIG2 (Tabla 21) configura las señales de prueba generadas. El bit

WCT_CHOP determina que la frecuencia del terminal central de Wilson WCT varíe según

la tasa de muestreo configurada en el registro CONFIG3. INT_TEST en “0” determina si la

señal de prueba dada es externa. La amplitud de la señal de prueba se calibra según la

siguiente ecuación para cuando se selecciona en bajo el bit TEST_AMP:

−(𝑉𝑅𝐸𝐹𝑃 − 𝑉𝑅𝐸𝐹𝑁)

2400𝑉

Page 126: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…126

Finalmente la frecuencia de la señal está dada según la combinación de los primeros bits del

registro, que para éste caso sería 𝑓𝐶𝐿𝐾

221, siendo fCLK, la frecuencia del reloj del integrado

(2.048MHz).

Tabla 21. Valor Registro CONFIG2

7 6 5 4 3 2 1 0

0 0 WCT_CHOP INT_TEST 0 TEST_AMP TEST_FREQ[1:0]

0 0 0 0 0 0 0 0

ADS_WREG(CONFIG2, 0x00);

El parámetro de configuración 4 (tabla 22), tiene integradas varías funciones. Por un lado, se

encarga de determinar la frecuencia de modulación de la respiración con los bits 7 a 5

(RESP_FREQ). Se encarga de establecer el modo de conversión continua con el bit

SINGLE_SHOT en “0”. Con el bit WCT_TO_RLD desconecta el terminal central de Wilson

del controlador de pierna derecha, para efectos que se verán en los registros de WCT qué se

verán más adelante. Por último, habilita por medio de /PD_LOFF_COMP, el comparador de

derivaciones para posteriormente determinar conexión o desconexión de los mismos.

Tabla 22.Valor Registro CONFIG4

7 6 5 4 3 2 1 0

RESP_FREQ[2:0] 0 SINGLE_SHOT WCT_TO_RLD /PD_LOFF_COMP 0

0 0 0 0 0 1 1 0

ADS_WREG(CONFIG4, 0x02);

Por consideraciones del programa se decide no trabajar con los puertos GPIO que ofrece el

integrado, por ende, el registro de GPIO se pone todo en “0”.

ADS_WREG(GPIO, 0x00); //GPIO de salida

Page 127: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…127

El registro LOFF (tabla 23) es el registro de control para detectar desconexión de terminales.

El umbral de comparación de desconexión de terminales (COMP_TH) se configura en el

máximo nivel para el lado positivo (95%) y en el lado negativo un 5%. Se habilita la fuente

de corriente a modo de detección de lead-off (desconexión de terminal) por medio del bit 4

(VLEAD_OFF_EN) en “cero”. La magnitud de la corriente ILEAD_OFF será de 12nA (01),

para la fuente anterior. Por último, la frecuencia de detección de lead-off se enciende por

medio del registro FLEAD_OFF, que en “11” indica que la detección DC está encendida.

Tabla 23. Valor Registro LOFF

7 6 5 4 3 2 1 0

COMP_TH[2:0] VLEAD_OFF_EN ILEAD_OFF[1:0] FLEAD_OFF[1:0]

0 0 0 0 0 1 1 1

ADS_WREG(LOFF, 0x07);

El registro LOFF_FLIP controla la dirección de la corriente usada para la detección de

desconexión de terminales. En el caso actual, simplemente los canales positivos se conectan

a la fuente positiva de voltaje y los canales negativos a la fuente negativa de voltaje.

ADS_WREG(LOFF_FLIP, 0x00);

Los registros LOFF_SENSP y LOFF_SENSN (Tabla 24), habilitan la detección de

desconexión de electrodos conectados a la entrada de los canales, en los terminales positivo

y negativo, respectivamente. Para el programa realizado se decidió habilitar la detección por

todos los terminales de entrada.

Tabla 24. Valor Registro LOFF_SENS(P/N)

7 6 5 4 3 2 1 0

LOFF8P/N LOFF87P/N LOFF6P/N LOFF5P/N LOFF4P/N LOFF3P/N LOFF2P/N LOFF1P/N

1 1 1 1 1 1 1 1

Page 128: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…128

ADS_WREG(LOFF_SENSP, 0xFF);

ADS_WREG(LOFF_SENSN, 0xFF);

Los registros que controlan la selección de los canales, por cada uno de sus terminales

positivo y negativo (RLD_SENSP y RLD_SENSN, respectivamente) de la tabla 25, sirven

para, como se menciona en la hoja de datos del ADS1298, “contrarrestar la interferencia de

modo común en un sistema de ECG como resultado de líneas eléctricas y otras fuentes,

incluyendo luces fluorescentes”. Para el programa se aplica éste modo común por el

controlador de pierna derecha (RLD) para todos los terminales conectados.

Tabla 25. Valor Registro RLD_SENS(P/N)

7 6 5 4 3 2 1 0

RLD8P/N RLD7P/N RLD6P/N RLD5P/N RLD4P/N RLD3P/N RLD2P/N RLD1P/N

1 1 1 1 1 1 1 1

ADS_WREG(RLD_SENSP, 0xFF);

ADS_WREG(RLD_SENSN, 0xFF);

El registro PACE, encargado de proporcionar los controles de ritmo que configuran la señal

de canal utilizada para alimentar el circuito de detección de ritmo externo y el registro RESP,

encargado de proveer el control del circuito de respiración (utilizado solamente en

ADS1298R), no se utilizan en el programa, por eso se dejan en nivel lógico bajo.

ADS_WREG(PACE, 0x00);

ADS_WREG(RESP, 0x00);

Para cada uno de los canales se realiza la misma configuración para tener cierta igualdad. En

la tabla 26 se muestra las funciones de cada uno de los bits de los registros de “CHxSET”. El

bit más significativo PDn, se encarga de encender el canal en nivel lógico bajo (“0”). La

ganancia del canal se acomoda con los bits 6 a 4, para éste caso se da la máxima ganancia, la

cual es de 12 para tener un resultado y una visualización más acertada, pues en las pruebas

Page 129: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…129

que se realizaron se decidió que el mejor resultado se obtenía con la máxima ganancia. Ahora

bien, el multiplexor en los bits menos significativos (0 a 3) se encarga de establecer que la

señal de entrada del canal es un electrodo conectado externamente, para esto se pone “000”.

Tabla 26. Valor Registro CHxSET

7 6 5 4 3 2 1 0

PDn GAINn[2:0] 0 MUXn[2:0]

0 1 1 0 0 0 0 0

ADS_WREG(CH1SET, 0x60);

ADS_WREG(CH2SET, 0x60);

ADS_WREG(CH3SET, 0x60);

ADS_WREG(CH4SET, 0x60);

ADS_WREG(CH5SET, 0x60);

ADS_WREG(CH6SET, 0x60);

ADS_WREG(CH7SET, 0x60);

ADS_WREG(CH8SET, 0x60);

Por último, uno de los pasos más importantes para obtener las derivaciones V1 a V6,

establecidas en el marco teórico, y una de las razones por las cuales se seleccionó el

ADS1298, es que tiene integrado el terminal central de Wilson (Wilson central terminal)

WCT, definido como el promedio del voltaje del brazo derecho (RA), brazo izquierdo (LA),

y pierna izquierda (LL) y los registros para configurar su puesta en marcha son los WCT1

(tabla 27) y WCT2 (Tabla 28). La forma en que trabaja es con multiplexores que conducen a

cada una de las entradas de los canales, y se conectan a constantes llamadas WCTA, WCTB

y WCTC. Por el registro se debe seleccionar cual será la derivación LA, LL y RA que se

conectará a las constantes mencionadas. En la figura 63 se puede apreciar lo descrito

anteriormente.

Page 130: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…130

Ahora bien, el WCT1 de la tabla 27, tiene integradas ciertas funciones que permiten trabajar

con otras derivaciones (aVL, aVF, aVR) por medio del WCT, sin embargo, no se utilizarán

estas funciones (bits 4 a 7 de WCT1). Por otro lado, se habilita PD_WCTA, y se selecciona

que WCTA se conectará a la entrada negativa del canal 2, con el valor “011”. Si se revisa el

circuito, se puede notar que éste es el electrodo del brazo derecho.

Figura 63. Funcionamiento del terminal central de Wilson (WCT)

Tomado de: TEXAS INSTRUMENTS, DATASHEET ADS1298, Pg. 36.

Page 131: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…131

Tabla 27. Valor Registro WCT1

7 6 5 4 3 2 1 0

aVF_CH6 aVL_CH5 aVR_CH7 aVR_CH4 /PD_WCTA WCTA[2:0]

0 0 0 0 1 0 1 1

ADS_WREG(WCT1, 0x0B); // WCTA Powered on; CHN2N (RA) TO WCTA

WCT2 (tabla 28) se encarga de las constantes WCTB y WCTC, que los habilitan los bits

PD_WCTB y PD_WCTB respectivamente. WCTB será “010”, que indica que se conectará

a la entrada positiva del canal 2, que es el electrodo del brazo izquierdo LA. WCT (“100”),

indica que se conecta a la entrada positiva del canal 3, la cual es la pierna izquierda (LL).

Tabla 28. Valor Registro WCT2

7 6 5 4 3 2 1 0

/PD_WCTC /PD_WCTB WCTB[2:0] WCTC[2:0]

1 1 0 1 0 1 0 0

ADS_WREG(WCT2, 0xD4);

Ahora bien, el promedio será: WCT =RA+LA+LL

3

6.2. Diagrama de flujo

Para realizar la programación principal, se consideró un bucle infinito (figura 64) que envía

los datos por el bus de UART, por medio de la función SendDataBuffer, cada que se active

la bandera llamada “Band_Rdy” en un segundo de muestras (que son 1000 muestras para el

programa), dicha bandera se activa por medio de la interrupción cuando se completen las 250

muestras en 1 segundo. Previo al bucle, se realizan las inicializaciones vistas anteriormente

en la sección 6.1.1. La función S_DATAC() para detener la lectura de datos de manera

continua se explica también en la misma sección.

Page 132: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…132

Como se puede observar, las funciones que utiliza el programa principal son Complete_trama

y SendDataBuffer, que son explicadas a continuación. Otra de las funciones que es externa

al bucle madre, es el de la interrupción.

6.2.1. Función Complete_trama

A la función “Complete_trama” (Diagrama de flujo figura 65) se le otorga su nombre debido

a que se encarga de tomar los datos de todos los canales que se tienen en 1 segundo de

muestras, es decir, 250 muestras por canal, y como en total son 8, serían 2000 datos. Las

variables para almacenar dichos datos son definidas como enteros largos (long int),

Figura 64. Diagrama de flujo principal para PIC32MX795F512H

Page 133: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…133

compuestas por 4 bytes, por lo que serían en total 8000 bytes. Se agregan después 3 bytes de

encabezado (variable “header”). Los 8003 bytes son guardados en la variable

“send_samples” definida de tipo carácter (char). Los últimos 2 bytes que se agregan son los

de detección de desconexión de electrodos (variable “SEND_LEADOFF”).

Después de enlazar el encabezado a la trama de 8002 datos, se utiliza la función crc16 para

obtener 2 bytes adicionales para detección de errores en la comunicación. Se selecciona de

la misma manera el protocolo CRC16, y se desarrolla la función con su mismo nombre

“crc16” para obtener de la manera más eficiente el valor de la variable “a”. Después de

obtener “a”, se organizan los 2 bytes obtenidos y se enlazan a la trama. Finalmente, el vector

de enviar llamado Muestras_crc16 guarda 8007 bytes en total.

Figura 65. Función Complete_trama

Page 134: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…134

6.2.1.1. Función crc16

La función crc16 funciona de manera convencional cómo funciona el protocolo. Se tiene

como entrada el puntero hacia el vector al cual se le quiere aplicar el código (send_samples).

Posteriormente se realiza la definición de ciertas variables locales (contadores y variables

temporales).

La variable “crctmp” inicia con el valor “0” se le aplica la operación “or exclusiva” (xor) con

el dato actual del vector send_samples (definido por “i1”) que es realmente el valor del

puntero data_p. Se compara el calor obtenido con el dato 0x8000 para aplicar simplemente

una rotación hacia la izquierda de 1, si son iguales, o si se hace la operación xor con el

polinomio de CRC16 (POLY) definido en las inicializaciones. El valor de POLY es estándar

para el protocolo CRC16. Se hacen las mismas operaciones hasta que finaliza el tamaño del

vector y finalmente se obtienen los datos. El diagrama de flujo para aplicar el protocolo

CRC16 (Figura 66), es el mismo que se utiliza para el código de MATLAB® que se utilizará

para detectar errores.

Page 135: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…135

6.2.2. Función SendDataBuffer

La función SendDataBuffer está diseñada para enviar una cadena de cualquier tamaño,

siempre que no sea infinito, pues envía byte por byte de una cadena, por ende, la entrada del

Figura 66. Función crc16

Page 136: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…136

arreglo a enviar es de tipo carácter (char), y tiene una entrada del tamaño de la cadena a

enviar.

Su funcionamiento es básico, con la función defenida por la librería de UART, llamada

“UARTTransmitterIsReady”, espera hasta que el buffer éste listo para enviar un nuevo dato.

Se envía cada carácter con la macro “UARTSendDataByte”. Finalmente, cuando ha

terminado de enviar todo el arreglo, espera hasta que la comunicación se haya completado

por medio de “UARTTransmissionHasCompleted”.

6.2.3. Función interrupción

Se le asignó como nombre DRDY_interrupt (Fig. 67), debido a que está ligada al pin DRDY,

salida del ADS1298, que se activa cada que un dato se lee y se envía por el SPI. Una vez

dentro de la interrupción, lo primero es limpiar la bandera de interrupción para que no se

quede estancado el código.

En las variables adqCHx_Temp24bit se toman los datos de cada canal, provenientes de las

funciones para adquisición de los datos ADS_updateDataCH8 y ADS_updateDataCHx.

Al obtener el dato, se debe guardar en el vector de cada canal, los cuales han sido nombrados:

“incomming_samples_CHNx[]”. El contador de datos se llama indexDataBuffer, que suma

un digito cada que llega un dato. Al llegar a las 250 muestras, los vectores de cada canal se

copian mediante la función “memcpy” de la librería <string.h>, a otros vectores nombrados:

“incomming_samples24bit_CHNx”. Esto se hace con el fin de facilitar el manejo de los datos

mientras en la interrupción se leen nuevas muestras. Finalmente se guarda el valor de la

detección de desconexión de electrodos en la variable “LEADOFF”.

Page 137: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…137

6.2.3.1. Función ADS_updateDataCH8

La función de actualización del canal 8 (Figura 68) es la única en el que se leen todos los

datos de los canales, que entrarán posteriormente en las otras funciones para actualizar los

demás datos. El primer paso para leer un dato del SPI que envía el ADS1298, es dejar el pin

CS en nivel bajo, y luego enviar el carácter de lectura de dato por medio de la función

Figura 67. Función interrupción

Page 138: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…138

ADS_RDATA(). Los paquetes de datos se guardan en variables tipo short (2 bytes), llamadas

paqueteDatox.

Ahora bien, la manera como se deben manejar estos paquetes una vez se obtienen se muestra

en la tabla 29, que indica cómo se debe descomprimir el paquete para obtener el dato de un

canal en específico.

Figura 68. Función ADS_updateDataCH8

Page 139: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…139

Tabla 29. Paquetes de datos de lectura ADS1298

Canal # Paquete

Status B1 B2 paqueteDato1

Status/CH1 B3 B4 paqueteDato2

CH1 B5 B6 paqueteDato3

CH2 B7 B8 paqueteDato4

CH2/CH3 B9 B10 paqueteDato5

CH3 B11 B12 paqueteDato6

CH4 B13 B14 paqueteDato7

CH4/CH5 B15 B16 paqueteDato8

CH5 B17 B18 paqueteDato9

CH6 B19 B20 paqueteDato10

CH6/CH7 B21 B22 paqueteDato11

CH7 B23 B24 paqueteDato12

CH8 B25 B26 paqueteDato13

CH8 B27 paqueteDato14

Byte

6.2.3.2. Función ADS_updateDataCHx

Las funciones de actualización de datos de los demás canales realizan lo mismo que la

función anteriormente vista (ADS_updateDataCH8), solo que ahora ya se tienen los paquetes

de datos y sólo es organizarlos para que se obtengan en cada canal. Por eso se nota que existe

una constante entre los canales pares y entre los impares. Por esta razón se realiza la misma

programación dependiendo si es par o impar.

- Canal par

Para los canales pares se realiza el siguiente flujo (Fig. 70), en el cuál se organizan los 3 bits

de cada canal.

Para el canal 2, el paqueteDato(X), será con X=4. Canal 4, X=7; Canal 6, X=10.

Page 140: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…140

- Canal impar

Con los canales impares sucede lo mismo (Fig. 71), para el canal 1, X=2; Canal 3, X=5;

Canal 5, X=8; Canal 7, X=11.

6.2.3.3. Función de complemento a 2 (C2DATA)

En el siguiente capítulo se encontrará la necesidad de tener una función que realiza el

complemento a 2. Se requiere para crear una recta y así obtener fácilmente los valores

Figura 69. Función de actualizar datos para canales pares

Figura 70. Función de actualizar datos para canales

impares

Page 141: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…141

negativos y positivos muestreados. En la figura 71 se detalla el diagrama de flujo del

complemento a 2, utilizada en la función de interrupción.

6.3. Programación interfaz de usuario en MATLAB®

Para desarrollar la aplicación con la que el usuario debe interactuar para evidenciar el

funcionamiento del proyecto en cuestión, se empieza con la interfaz de usuario desarrollada

en un archivo “Guide” de MATLAB® R2016a. En la figura 72 se muestran las partes de la

aplicación con su respectiva función.

Figura 71. Función de complemento a 2

Page 142: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…142

Por otro lado, en la figura 73 se muestra el diagrama de flujo del funcionamiento de la

aplicación. Para iniciar primero se chequea que haya puertos seriales disponibles, si no los

hay, el programa muestra un programa de error y se debe iniciar de nuevo la comunicación.

Una vez lista la comunicación, el programa pregunta si se quiere conectar y se puede ajustar

la tasa de datos de la comunicación. Cuando éste el sistema conectado, se espera a que el

usuario presione el botón “start” para empezar a graficar. Una vez lo presione, el programa

abre la ventana “Figure1” en dónde se graficarán los datos que ingresen y adicionalmente

empieza a recibir la comunicación serial. Luego entra a la subrutina CRC16 (Que en esencia

es el mismo flujo mostrado en la sección 5.2.1.1.) y si se detecta error en la comunicación, el

programa se detiene y espera a que el usuario presione click sobre la pantalla “Figure1”. Si

no se detectan errores, se sigue el curso y se empieza a graficar y también a mostrar si los

electrodos están conectados o desconectados. En este punto es importante resaltar que es aquí

donde se aplican los filtros para obtener una señal clara y limpia del ECG, que se explicarán

a continuación. El programa sigue graficando hasta que se presione “STOP”, momento en el

que se habilitarán de nuevo todos los botones para que el usuario elija cuál será su siguiente

movimiento.

Figura 72. Interfaz gráfica de usuario

Page 143: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…143

Figura 73. Diagrama de flujo del funcionamiento de la interfaz de usuario.

Page 144: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…144

CAPITULO 7. RESULTADOS

7.1. Conexión de electrodos

Son 10 los electrodos que van conectados al cuerpo del paciente al que se le va a realizar una

prueba de gráfica de ECG con 12 derivaciones. En cada una de las extremidades (fig. 74) se

debe pegar un electrodo, de esta manera se obtienen las derivaciones frontales, que son 6 y

se mostrarán en la sección 7.3 del funcionamiento en tiempo real. Las derivaciones

precordiales también son 6, sin embargo, para obtenerlas los electrodos que deben estar

pegados al cuerpo se deben acomodar en el pecho como se muestra en la figura 75.

Figura 74. Electrodos pegados en las extremidades

Page 145: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…145

Ahora se conecta el paciente al cable ECG de 10 terminales (Fig. 76), paso previo para poner

en funcionamiento el sistema de procesamiento y trazado de las derivaciones del ECG.

Figura 75. Electrodos pegados al tórax

Figura 76. Cable ECG conectado al paciente

Page 146: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…146

7.2. Puesta en funcionamiento del programa

Lo primero es alimentar el circuito por medio del cargador USB, luego conectar el terminal

DB15 del cable ECG a la tarjeta y finalmente conectar el cable serial en el terminal UART

de la tarjeta y al puerto USB del computador (Fig. 78).

Figura 77. Puesta en funcionamiento de la tarjeta "ECG Device".

Page 147: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…147

En el computador desde MATLAB® se abre la interfaz del “ECG device” (Fig. 79) para

comenzar a interactuar con el programa.

Una vez se conecta el sistema a la tarjeta, se habilitan los botones “start” y “stop” del

programa tal como se muestra en la figura 80. Ahora bien, “connect” cambia su función a

“disconnect” para desconectar el sistema.

Figura 78. Interfaz ECG en MATLAB®

Figura 79. Interfaz lista para iniciar a graficar

Page 148: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…148

Una vez se presiona “START” se abre la ventana “Figure 1” con las gráficas del ECG y se

empiezan a recibir los datos de los diferentes canales, en éste punto el sistema se habrá puesto

en marcha.

En caso de que no se haya conectado el cable serial, el programa no arrancará y mostrará el

error de la figura 81:

7.3. Gráficas de funcionamiento en tiempo real

A continuación, se muestra la prueba de funcionamiento de todas las derivaciones, también

se mostrará cuando se desconecta cada uno se los electrodos:

7.3.1. Todas las derivaciones trazándose de manera óptima

Cuando todos los electrodos están bien conectados, el resultado obtenido será el que se

muestra en la figura 82. Más adelante se verá la comparación de las gráficas obtenidas con

las que comúnmente son graficadas por un electrocardiograma habitual.

Figura 80. Error por comunicación por el cable serial

Page 149: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…149

7.3.2. Electrodo RA desconectado

Se desconecta el electrodo RA (right arm) y se toman las muestras del electrocardiograma,

como se puede notar en la figura 83, todas las derivaciones dependen del brazo derecho por

ende cuando éste se desconecta ninguna de las gráficas muestra un resultado.

Figura 81. Gráfica de 12 derivaciones tomada con “ECG device”.

Figura 82. Prueba electrodo RA desconectado.

Page 150: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…150

7.3.3. Electrodo LA desconectado

El electrodo LA (left arm) está involucrado en todas las derivaciones excepto en la derivación

2, y como se puede notar en la figura 84, se indica que el electrodo está desconectado y sólo

se grafíca “LEAD II”.

7.3.4. Electrodo RL desconectado

RL (Right Leg) funciona como referencia del sistema, por ende, todos los electrodos aparecen

desconectados menos el del brazo derecho, además que se puede notar en la figura 85 un

aumento en el ruido de las gráficas, a pesar de que todas las derivaciones muestran una forma

coherente.

Figura 83. Prueba electrodo LA desconectado.

Page 151: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…151

7.3.5. Electrodo LL desconectado

El electrodo de la pierna izquierda (LL) también se ve involucrado en todas las derivaciones

excepto en “LEAD I” (figura 86). Se logra ver que las derivaciones frontales “LEAD III”,

“aVR”, “aVL” y “aVF”, como dependen del resultado de “LEAD I” y “LEAD II”, no son

válidas y por ende no se deben tener en cuenta en caso de detección de desconexión del

electrodo LL.

Figura 84. Prueba electrodo RL desconectado.

Figura 85. Prueba electrodo LL desconectado.

Page 152: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…152

7.3.6. Electrodo V1 desconectado

A la desconexión del electrodo V1 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig 87).

7.3.7. Electrodo V2 desconectado

A la desconexión del electrodo V2 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig 88).

Figura 86. Prueba electrodo V1 desconectado.

Figura 87. Prueba electrodo V2 desconectado.

Page 153: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…153

7.3.8. Electrodo V3 desconectado

A la desconexión del electrodo V3 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig 89).

7.3.9. Electrodo V4 desconectado

A la desconexión del electrodo V4 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig 90).

Figura 88. Prueba electrodo V3 desconectado.

Figura 89. Prueba electrodo V4 desconectado.

Page 154: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…154

7.3.10. Electrodo V5 desconectado

A la desconexión del electrodo V5 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig. 91).

7.3.11. Electrodo V6 desconectado

A la desconexión del electrodo V6 sólo reacciona la gráfica del mismo pues no interviene en

ninguna otra. (Fig. 92).

Figura 90.Prueba electrodo V5 desconectado.

Figura 91. Prueba electrodo V6 desconectado.

Page 155: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…155

7.3.12. Detección de error por CRC16

Al detectar un error por medio del algoritmo diseñado CRC16, se muestra el mensaje de error

en la parte de abajo del programa principal y adicionalmente las gráficas pasan de ser azules

a rojas en el mismo instante que se detecta (Fig. 93).

La forma de solucionarlo es presionar click sobre cualquiera de las dos pantallas del

programa, así se reinicia la comunicación y se toman de nuevo los datos. Comúnmente al

iniciar recientemente el programa toma cierto tiempo en empezar a graficar de manera

continua.

7.4. Comparación con graficas estándar del ECG

Después de realizar la captura de la señal con el dispositivo diseñado, se generan varias

graficas de resultados donde se obtienen las derivaciones principales utilizadas en la toma

del ECG, con la finalidad de realizar un análisis básico de resultados se realiza una

comparación entre las gráficas obtenidas de un paciente con el prototipo desarrollado y las

gráficas típicas de un electrocardiograma en estado normal de un paciente adulto, generadas

con un dispositivo ECG clínico estándar.

Figura 92. Detección de error por CRC16.

Page 156: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…156

A continuación, en las gráficas 94, 95, 96 y 97 se muestran las gráficas obtenidas con el

prototipo desarrollado en este proyecto y los resultados de un ECG típico estándar con un

dispositivo clínico.

Figura 93. ECG de 12 derivaciones tomado con prototipo diseñado por los autores.

Page 157: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…157

Figura 94. Electrocardiograma paciente en estado normal tomado con ECG clínico.

Tomado de: https://goo.gl/ocRwMT, Foto de archivo, Inna Yazykova Ogando, 123RF blog.

Figura 95. Electrocardiograma paciente en estado normal tomado con ECG clínico.

Tomado de: https://goo.gl/nGa6Lf, Electrocardiograma – clase teórica y práctica, Departamento de

Fisiología, Facultad de Medicina, Universidad de Murcia. 1º de Enfermería – Curso 2013/14.

Page 158: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…158

Cabe resaltar que para este tipo de análisis se debe tener en cuenta que los resultados de un

electrocardiograma en estado normal pueden tener algún tipo de variación dependiendo de la

persona a la cual se le va a tomar el examen y de las condiciones tanto médicas como físicas

en las cuales se encuentre el paciente.

En las figuras anteriores se logra apreciar que las amplitudes y las formas de onda en la

mayoría de las derivaciones son similares a las señales estándar de un ECG normal, sin

embargo, algunas derivaciones difieren un poco debido al estado del paciente al que se le

realizan las pruebas, porque como se mencionó anteriormente la condición médica y física

son muy relevantes, sumando otros factores como la calidad y precisión de los diferentes

dispositivos utilizados para obtener una imagen limpia del ECG. También, para la toma de

un electrocardiograma, puede afectar que no se realice de forma óptima el procedimiento

para llevar a cabo la adquisición de muestras, es decir, que no se ubiquen los electrodos en

la zona correcta, que estén en mal estado o que el paciente no se encuentre en completo

reposo.

Figura 96. EGG graficado con sistema portable

Tomado de: Sistema para la adquisición de señales electrocardiográficas usando MATLAB®, Pablo

Andrés Carmona, Vladimir Mayoral, Pablo Andrés Muñoz, Universidad tecnológica de Pereira.

Page 159: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…159

7.5. Costos

Como complemento a los resultados mostrados, se debe mencionar el costo total en la

fabricación del dispositivo ya que es un punto importante para trabajos futuros en cuanto a

la posibilidad de la comercialización de este prototipo, que, aunque en esta ocasión su

desarrollo fue de un interés 100 % investigativo no se puede perder la visión de poder

convertir este diseño en uno de los sistemas de captura y visualización de señales ECG

presentes en el mercado medico a nivel nacional e internacional.

A continuación, se verá reflejado en la tabla 30 los costos de cada uno de los procesos

involucrados en la fabricación y su inversión total en la finalización del dispositivo.

Tabla 30. Costo total de fabricación.

CONCEPTO COSTO

Fabricación de plaqueta en la empresa

Microcircuitos S.A.

$ 193.000

Pedido de componentes electrónicos en

www.digikey.com

$ 500.000

Cable de paciente $ 100.000

Programador PicKit 3 $ 80.000

Cargador USB $ 10.000

Caja contenedora plaqueta $ 65.000

TOTAL $ 948.000

Page 160: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…160

CAPITULO 8. CONCLUSIONES E IMPACTO DEL PROYECTO

8.1. Conclusiones

Con base a diferentes libros relacionados con la medicina y el electrocardiograma, se

consultó qué cambios importantes se pueden apreciar al trabajar con las diferentes

derivaciones, observando que se caracterizan en 2 grupos: las derivaciones de plano frontal,

entre las cuales están las bipolares clásicas y las monopolares aumentadas; y de plano

horizontal, que también son conocidas como precordiales. Una vez con las derivaciones

definidas, se realiza un análisis de los materiales que se requieren para determinar con cuántas

derivaciones trabajar. Finalmente se piensa que el proyecto debe lograr el mayor alcance que

sea posible dentro de los límites establecidos, y al trabajar con una mayor cantidad de

derivaciones, en próximos desarrollos de éste proyecto se podría llegar a determinar gran

cantidad de enfermedades cardiovasculares (Aproximadamente 30 disfunciones del

corazón). Por las anteriores razones se decide graficar 12 derivaciones, sustentado en que se

logra una mayor capacidad de detección de anomalías, siendo así el sistema más útil para los

especialistas.

Consultando en las páginas oficiales de los diferentes fabricantes de dispositivos

electrónicos (Como lo son Microchip, Texas Instruments, National Instruments, entre otros)

se han consultado una gran cantidad de dispositivos de aplicación específica (ASIC por sus

siglas en inglés) y se ha creado una base de datos detallando diferentes dispositivos

electrónicos para aplicaciones biomédicas. Con ellos se ha hecho una comparación en cuánto

a buses de comunicación, velocidad de transmisión, capacidad de memoria, precio, tipo de

soldadura del integrado (Esto se relaciona con el hardware) y todas las especificaciones

técnicas que tengan que ver con disminuir el circuito externo y tener una puesta en marcha

rápida. Se ha seleccionado el que mejor de ellos funcione para el proyecto planteado,

encontrando el ADS1298, circuito integrado de aplicación específica de Texas Instruments

desarrollado para trabajar con señales ECG, con 8 canales de toma de datos, y frecuencias de

Page 161: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…161

muestreo de hasta 32000 muestras por segundo, además de contar con un bus de

comunicaciones SPI ideal para desarrollar el proyecto planteado.

Para diseñar el sistema electrónico para la adquisición y comunicación de señales

ECG se utilizó el software EAGLE®. Se debió realizar todo el cableado tal y como quedó al

finalizar la tarjeta, dibujando todas las pistas de la misma. Previo al desarrollo del hardware

se seleccionaron todos los componentes con los que se iba a trabajar. Para el sistema de

comunicación de la tarjeta hacia el exterior se hizo una base de datos con diferentes

procesadores con gran capacidad y se comparó el precio y los beneficios que ofrecía cada

uno. Se seleccionó para llevar a cabo ésta tarea el PIC32MX795F512H, microcontrolador de

MICROCHIP® que cuenta con el bus SPI (para comunicarse con el ASIC seleccionado),

USB, UART, ETHERNET (Aunque no se utiliza ésta función), ICSP, JTAG, entre otros.

Como resultado del proyecto se diseña el sistema embebido, y se realiza una caja protectora,

obteniendo un dispositivo para obtener y transmitir en tiempo real señales ECG, el cual se ha

llamado “ECG DEVICE”, que permite la integración de tecnologías de comunicación

compatibles con dispositivos móviles, como lo es Bluetooth o USB, para en un futuro

utilizarlos y llegar a desarrollar un programa para graficar desde un celular o tableta.

Aprovechando la capacidad de comunicación por medio de bus serial UART de la

tarjeta desarrollada, se utiliza un cable serial-USB para comunicar la tarjeta con un

computador de escritorio o laptop y así enviar los datos capturados de una señal ECG de un

paciente a un software con capacidad de procesamiento y visualización. De ésta manera se

aprovecha MATLAB® que tiene la ventaja de leer el puerto serial del computador y recibir

los datos enviados por la tarjeta “ECG DEVICE”, de manera que se pueden hacer diferentes

operaciones como detección de errores por medio de CRC16, detección de desconexión de

electrodos y finalmente visualización de las señales ECG en una interfaz de usuario a la que

se ha nombrado “ECG INTERFACE”, la cual es fácil de utilizar, y se puede interactuar con

los pacientes de manera intuitiva y así obtener las gráficas de las 12 derivaciones, mostrando

errores en caso de que los haya e indicando al paciente si un electrodo se ha desconectado.

Page 162: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…162

Por medio de pruebas realizadas en diferentes pacientes voluntarios de la toma del

ECG, se ha validado el funcionamiento del sistema portable para la adquisición y

procesamiento de éste tipo de señales. Se ha llevado a cabo una serie de pruebas en diferentes

computadores para verificar el correcto funcionamiento de los softwares, así como se ha

comparado cada una de las 12 derivaciones con señales comúnmente obtenidas del ECG,

llegando a demostrar que se ha completado el proyecto planteado. Con ayuda del doctor

Edgar H. Dominguez se ha llegado a concluir que las gráficas del electrocardiograma

tomadas son útiles en las zonas de difícil acceso médico, recibiendo también sugerencias para

mejorar el dispositivo y que sea de más utilidad. Las opiniones se han agregado a los anexos

del documento.

El proyecto “Sistema portable para la adquisición y procesamiento de señales ECG,

con aplicabilidad en dispositivos móviles” se ha presentado en el semillero interno de

investigación de la universidad San Buenaventura seccional Cali, siendo evaluado con una

calificación de 91 por los jurados, de manera que se ha clasificado al XIV encuentro

departamental de semilleros de investigación, organizado por RedCOLSI, Nodo Valle del

Cauca, realizado los días 18 y 19 de Mayo de 2017 en el colegio Freinet de Cali. Ha entrado

en competencia con diferentes proyectos y se ha obtenido una calificación también de 91,

demostrando una gran aceptación por parte de los jurados. Así se ha clasificado también al

XX Encuentro Nacional y XIV Internacional de Semilleros de Investigación –

BARRANQUILLA 2017.

En el presente trabajo de grado se logró diseñar y construir una tarjeta de adquisición

de muestras de un electrocardiograma, para procesar los datos obtenidos y visualizarlos en

un dispositivo con capacidad de interactividad con un usuario. Se implementó el sistema

portable para la adquisición y procesamiento de señales ECG, graficando las señales

obtenidas en un computador por medio del software MATLAB®. Resaltando que el

dispositivo tiene la compatibilidad con protocolos de transferencia de datos como USB o

Bluetooth, de modo que en un futuro tenga aplicabilidad en dispositivos móviles.

Page 163: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…163

8.2. Impacto del proyecto (salud, social, económico)

Al realizar este prototipo para la adquisición de señales ECG se logró comprobar el gran

avance tecnológico que se vive en la época actual a nivel mundial y en el cual los objetivos

fundamentales hacia el futuro son poder brindar a las personas dispositivos prácticos y de

gran funcionalidad que logren tener un alto impacto en la sociedad y que permitan llevar y

hacer más fácil posible el entorno personal y laboral.

En el proyecto realizado se logra cumplir con 3 importantes características de impacto, las

cuales se mencionan a continuación:

8.2.1. Impacto en salud

En el sector de la salud se logra tener un gran impacto con el proyecto desarrollado ya que se

obtiene un dispositivo que es práctico y de gran facilidad de usar a la hora de realizar un

procedimiento para la toma de un electrocardiograma, esto conlleva a un importante

beneficio e impacto ya que el prototipo diseñado contiene una alta precisión la cual permite

tener un buen diagnóstico ante enfermedades de tipo cardiovascular y así poder evitar

muertes por este tipo de eventos.

8.2.2. Impacto social

Crear un sistema portable fue uno de los objetivos fundamentales planteados en la

elaboración del dispositivo, con esto se busca tener la facilidad de que las personas que vivan

en lugares lejanos a centros médicos, personas que no tenga un buen acceso a los sistemas de

salud puedan realizarse un ECG, esto involucra un impacto en lo social ya que permite

brindar un beneficio importante para las personas de cualquier comunidad o y de los

diferentes niveles socioeconómicos.

Page 164: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…164

8.2.3. Impacto económico

Al realizar la documentación y análisis de las diferentes formas de poder adquirir señales

biomédicas también se tiene en cuenta los costos de los materiales que se van a utilizar en la

construcción del prototipo esto con el fin de poder tener en completo funcionamiento un

dispositivo de bajo consto. El interés de este proyecto es de nivel investigativo, pero en un

futuro se puede convertir en un sistema comercial dependiendo de las necesidades del

mercado por este motivo se realiza un análisis de costos los cuales permitan un beneficio

económico tanto para los desarrolladores como para los clientes.

Page 165: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…165

BIBLIOGRAFIA

[1] M. E. Moura, «Salud Y Medicina,» Salud Y Medicina, 19 05 2011. [En línea].

Available: https://goo.gl/UzuBhj. [Último acceso: 11 03 2016].

[2] M. M. F. Jordan M Prutkin, «UpToDate,» 29 10 2015. [En línea]. Available:

https://goo.gl/LbPMCn. [Último acceso: 07 03 2016].

[3] Instituto Nacional de Salud, «Enfermedad Cardiovascular: principal causa de muerte

en Colombia,» Observatorio Nacional de Salud, Bogotá D.C., 2013.

[4] X. Boscha, F. Alfonsoa y J. Bermejoa, «Revista española de cardiología,» Revista

española de cardiología, [En línea]. Available: https://goo.gl/N1pl9f. [Último acceso:

11 03 2016].

[5] Fundación Del Corazón, «Fundación Del Corazón,» 02 2015. [En línea]. Available:

https://goo.gl/GJc7wW. [Último acceso: 07 03 2016].

[6] J. A. García, «Documentos de Trabajo sobre Economía Regional,» Banco de La

República, Cartagena, 2014.

[7] El Tiempo, «El Tiempo,» 2014. [En línea]. Available: https://goo.gl/FRUcVT. [Último

acceso: 24 02 2016].

[8] Redacción Tecnosfera, «El Tiempo,» Redacción Tecnosfera, 11 03 2015. [En línea].

Available: https://goo.gl/Hvbmn1. [Último acceso: 11 03 2016].

[9] D. N. Dillwyn, «Verizon,» Verizon, [En línea]. Available: https://goo.gl/HVgTzh.

[Último acceso: 11 03 2016].

[10] P. A. Carrión Pérez , J. Ródenas García y J. J. Rieta Ibañez, Procesador de señales

biomédicas, Castilla: Ediciones de la Universidad La Castilla - La Mancha, 2007.

Page 166: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…166

[11] H. Velez, W. Rojas, J. Borrero y J. Restrepo, Endocrinologia (Fundamentos de

Medicina), Corporacion Para Investigaciones Biologicas, 2006.

[12] Cardiomed, «Cardiomed,» [En línea]. Available: https://goo.gl/LgjehL. [Último

acceso: 20 05 2016].

[13] G. F. Salazar, Manual de electrocardiografía y electroencefalografía, Manual Moderno,

2007.

[14] E. MARLINDA, . J. GUEVARA y L. J. LÓPEZ, «Circuitos Integrados configurables

ASIC,» 2007. [En línea]. Available: https://goo.gl/sRAvwg. [Último acceso: 25 05

2016].

[15] P. A. Cardona, V. Mayoral y P. A. Muñoz, «SISTEMA PARA LA ADQUISICIÓN DE

SEÑALES ELECTROCADIOGRÁFICAS USANDO MATLAB®,» Scientia et

Technica, Pereira, 2010.

[16] National Instruments, «NI USB-621x User Manual,» National Instruments, 2009.

[17] H. E. Melo León y A. J. Maya Quintero, «Dispositivo para telemetría de señales

biológicas que permitela utilización de diferentes tecnologías,» Universidad Militar

Nueva Granada, Bogotá, 2009.

[18] B. Becerra Luna, R. Dávila García, P. Salgado Rodriguez, R. Martínez Memije y Ó.

Infante Vázquez, «- Monitor de señales de electrocardiografía y frecuencia cardiaca

mediante un teléfono móvil con el protocolo de comunicación Bluetooth,» Instituto

Tecnológico y de Estudios Superiores de Monterrey Campus Ciudad de México,

México D.F., 2012.

[19] Y. Tzu-Hao, C. Chung-Yu y Y. Sung-Nien, «A Portable Real-time ECG Recognition

System Based on,» IEEE, Osaka, Japan, 2013.

Page 167: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…167

[20] F. Jímenez López y P. F. Cárdenas, «Diseño e implementación de filtros antialiasing

para la adquisición de armónicos de corriente y tensión en un FAP,» Revista

Colombiana de Tecnologías de Avanzada, vol. Volumen 2, nº Número 18, pp. 12-13,

2011.

[21] L. L. Alvarez, R. Henao y E. Duque, «ANÁLISIS DE ESQUEMAS DE FILTRADO

ANALOGO PARA SEÑALES ECG,» Scientia et Technica Año XIII, nº 37, p. 6, 2007.

[22] E. G. Gutiérrez, «Universitat Pompeu Fabra Barcelona,» 2 11 2009. [En línea].

Available: https://goo.gl/vHMnaF. [Último acceso: 12 7 2017].

[23] J. C. Montoya Cardona, Sistema de adquisición de biopotenciales para entronos

académicos, Envigado: Universidad CES, 2013.

[24] NORMA TÉCNICA COLOMBIANA, «Equipos electromédicos. Parte 2: Requisitos

particulares para la seguridad de electrocardiógrafos,» Instituro Colombiano de Normas

Técnicas y Certificación (ICONTEC), Bogotá, 2002.

[25] Centro Medico Escuela, «Técnico en Electrocardiograma,» Centro Medico Escuela,

[En línea]. Available: https://goo.gl/CWIBMU. [Último acceso: 01 06 2016].

[26] TEXAS INSTRUMENTS, «TEXAS INSTRUMENTS,» TEXAS INSTRUMENTS,

2016. [En línea]. Available: https://goo.gl/oDGUJ5. [Último acceso: 15 06 2017].

[27] MICROCHIP, «MICROCHIP,» MICROCHIP, 2017. [En línea]. Available:

https://goo.gl/BdDhuQ. [Último acceso: 15 06 2017].

[28] INTEGRAL PROCESS, «INTEGRAL PROCESS,» [En línea]. Available:

https://goo.gl/JXVksh. [Último acceso: 12 7 2017].

Page 168: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…168

[29] Nexperia USA Inc., «Nexperia USA Inc.,» 9 2 2009. [En línea]. Available:

https://goo.gl/NuAGb3. [Último acceso: 12 7 2017].

[30] Texas Instruments , «Texas Instruments,» 6 2007. [En línea]. Available:

https://goo.gl/p6YYde. [Último acceso: 12 7 2017].

[31] Analog Devices , «Analog Devices,» [En línea]. Available: https://goo.gl/U3fWxC.

[Último acceso: 12 7 2017].

[32] Murata Power Solutions Inc., «Murata Power Solutions Inc.,» [En línea]. Available:

https://goo.gl/nty3KJ. [Último acceso: 12 7 2017].

[33] Analog Device, «Analog Device,» [En línea]. Available: https://goo.gl/4hX34L.

[Último acceso: 12 7 2017].

[34] Ingenieria en microcontroladores , «Ingenieria en microcontroladores,» [En línea].

Available: https://goo.gl/fMnvSr. [Último acceso: 12 7 2017].

[35] Microchip, «Microchip,» [En línea]. Available: https://goo.gl/w97xNx. [Último

acceso: 12 7 2017].

[36] Intef, «Intef,» [En línea]. Available: https://goo.gl/avbxvs. [Último acceso: 12 7 2017].

[37] O. E. VERA, E. DUQUE CARDONA y J. RIVERA PIEDRAHITA, «EXTRACCIÓN

DE CARACTERÍSTICAS DE LA SEÑAL ELECTROCARDIOGRÁFICA

MEDIANTE SOFTWARE DE ANÁLISIS MATEMÁTICO,» Scientia Et Technica,

2006.

[38] P. P. J., «COOPEANDE,» COOPEANDE, [En línea]. Available:

https://goo.gl/80KlyE. [Último acceso: 11 03 2016].

Page 169: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…169

[39] MINSALUD, «MINSALUD,» MINSALUD, 21 03 2014. [En línea]. Available:

https://goo.gl/fmGXDD. [Último acceso: 11 03 2016].

[40] ECRI Institute, «El Hospital,» ECRI Institute, Octubre 2011. [En línea]. Available:

https://goo.gl/BV8A6X. [Último acceso: 06 01 2016].

[41] Universidad De Murcia, «Universidad De Murcia,» 2013. [En línea]. Available:

https://goo.gl/nGa6Lf. [Último acceso: 15 7 2017].

[42] V. M. P. A. M. Pablo Andrés Carmona, «SISTEMA PARA LA ADQUISICIÓN DE

SEÑALES ELECTROCADIOGRÁFICAS USANDO MATLAB®,» Scientia et

Technica Año XVI, nº 44, p. 6, 2010.

[43] H. David y A. Jamie, «embedded,» embedded, 06 Abril 2008. [En línea]. Available:

https://goo.gl/P2mg5P. [Último acceso: 17 11 2017].

ANEXOS

ANEXO 1: Código principal implementado en MPLAB

1 /*

2 * File: ADS1298_MAIN.c

3 * Author: Santiago Villafuerte

4 *

5 * Created on 4 de abril de 2017, 09:45 AM

6 */

7

8 // Configuration Bit settings

9 // SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)

10 // PBCLK = 80 MHz

11 // Primary Osc w/PLL (XT+,HS+,EC+PLL)

12 // WDT OFF

13 // Other options don't care

14 //

15 #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1

16 #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_1, FWDTEN = OFF

17

18 #include <stdio.h>

19 #include <stdlib.h>

20 #include <plib.h>

Page 170: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…170

21 #include <string.h>

22 //#include <int.h>

23 #include "definitions.h"

24 #include "functions.h"

25 /*

26 *

27 */

28 unsigned short leadoff=0;

29 int adqCH1_Temp24bit = 0;

30 int adqCH2_Temp24bit = 0;

31 int adqCH3_Temp24bit = 0;

32 int adqCH4_Temp24bit = 0;

33 int adqCH5_Temp24bit = 0;

34 int adqCH6_Temp24bit = 0;

35 int adqCH7_Temp24bit = 0;

36 int adqCH8_Temp24bit = 0;

37 int CH1_DATA = 0;

38 int CH2_DATA = 0;

39 int CH3_DATA = 0;

40 int CH4_DATA = 0;

41 int CH5_DATA = 0;

42 int CH6_DATA = 0;

43 int CH7_DATA = 0;

44 int CH8_DATA = 0;

45 int adqCH_Temp16bit = 0;

46 char adqCH_Temp8bit = 0;

47

48 unsigned int indexBuffer = 0;

49 unsigned char Band_RDY = 0;

50 unsigned short IDgot=0;

51

52

53 unsigned int Dato1=0,Dato2=0,Dato3=0, Dato4=0, Dato5=0, Dato6=0;

54 unsigned int DATAstatus=0, DataCHN=0;

55 //SpiChannel chn = SPI_CHANNEL2;

56 UINT8 buf[1024];

57 void main(void) {

58

59 CS=0;

60

61

62 //UART settings

63 UARTConfigure(UART1, UART_ENABLE_PINS_TX_RX_ONLY);

64 UARTSetFifoMode(UART1, UART_INTERRUPT_ON_TX_NOT_FULL |

65 UART_INTERRUPT_ON_RX_NOT_EMPTY);

66 UARTSetLineControl(UART1, UART_DATA_SIZE_8_BITS |

67 UART_PARITY_NONE | UART_STOP_BITS_1);

68 UARTSetDataRate(UART1, GetPeripheralClock(), 460800);

69 UARTEnable(UART1, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));

70

71 //Ports settings

72 TRISGbits.TRISG9 = 0; // make CS an output

73 // TRISGbits.TRISG6 = 0; // make SCK an output

74 // TRISGbits.TRISG8 = 0; // make SDO an output

Page 171: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…171

75 TRISGbits.TRISG7 = 1; // make SDI an input

76

77 TRISBbits.TRISB3 = 0; // make nRESET an output

78 TRISBbits.TRISB0 = 0; // make nPWDN an output

79

80 TRISDbits.TRISD10 = 0; // make START an output

81 TRISDbits.TRISD11 = 1; // make nDRDY an input

82

83 // CKP (clock polarity control) = 0

84 // CKE (clock edge control) = 1

85 // 16-bit, Master Mode

86 // Baud = 1MHz = Fpb/( 2*( SPI1BRG+1)) = 80MHz/( 2*( 39+1))

87 // SPI2CON = 0;

88 // waitSEC(0.1);

89 // SPI2CON = 0x8420;

90 // SPI2BRG = 0x0027;

91 int rData;

92 IEC0CLR=0x03800000; // disable all interrupts

93 SPI2CON = 0; // Stops and resets the SPI1.

94 rData=SPI2BUF; // clears the receive buffer

95 IFS0CLR=0x03800000; // clear any existing event

96 IPC5CLR=0x1f000000; // clear the priority

97 IPC5SET=0x0d000000; // Set IPL=3, Subpriority 1

98 IEC0SET=0x03800000; // Enable RX, TX and Error interrupts

99 // SPI2BRG=0x000A; // Max frec: 3.63MHz

100 SPI2BRG=0x0027; // use FPB/4 clock frequency

101 SPI2STATCLR=0x40; // clear the Overflow

102 SPI2CON=0x8220; // SPI ON, 8 bits transfer, SMP=1, Master mode

103

104 /*

105 The following code example will set INT4 to trigger on a high-to-low

106 transition edge. The CPU must be set up for either multi or single vector

107 interrupts to handle external interrupts

108 */

109 // ConfigINT4(EXT_INT_PRI_7 | FALLING_EDGE_INT | EXT_INT_ENABLE);

110 INTSetVectorPriority(INT_EXTERNAL_4_VECTOR, INT_PRIORITY_LEVEL_7);

111 INTSetVectorSubPriority(INT_EXTERNAL_4_VECTOR, INT_SUB_PRIORITY_LEVEL_0);

112 INTClearFlag(INT_INT4);

113 INTEnable(INT_INT4, INT_ENABLED);

114 // configure for multi-vectored mode

115 INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);

116

117 INTDisableInterrupts();

118

119 //Inicialización ADS1298

120 ADSsetup();

121 waitSEC(20*tCLK);

122 ADS1298_RESET();

123 waitSEC(1);

124

125 ADS_WREG(CONFIG3, 0xDE);

126 ADS_WREG(CONFIG1, 0x06); //250 SPS

127 ADS_WREG(CONFIG2, 0x00); //14 para generar una señal de prueba interna.

128 //00 para externa.--

Page 172: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…172

129

130 ADS_WREG(CONFIG4, 0x02); //0x02 Lead-off comparators enabled. 0x00

131 //Lead-off comparators disabled.

132

133 ADS_WREG(GPIO, 0x00); //GPIO de salida

134

135 ADS1298_START();

136

137 ADS_WREG(LOFF, 0x07); ////0xE4 24 nA, 70% pos 30% neg;

138 ADS_WREG(LOFF_FLIP, 0x00);

139 ADS_WREG(LOFF_SENSP, 0xFF);

140 ADS_WREG(LOFF_SENSN, 0xFF);

141 ADS_WREG(RLD_SENSP, 0xFF);

142 ADS_WREG(RLD_SENSN, 0xFF);

143 ADS_WREG(PACE, 0x00);

144 ADS_WREG(RESP, 0x00);

145

146 ADS_WREG(CH1SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

147 ADS_WREG(CH2SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

148 ADS_WREG(CH3SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

149 ADS_WREG(CH4SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

150 ADS_WREG(CH5SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

151 ADS_WREG(CH6SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

152 ADS_WREG(CH7SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

153 ADS_WREG(CH8SET, 0x60); // PGA = 12; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

154

155 // ADS_WREG(CH1SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

156 // ADS_WREG(CH2SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

157 // ADS_WREG(CH3SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

158 // ADS_WREG(CH4SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

159 // ADS_WREG(CH5SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

160 // ADS_WREG(CH6SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

161 // ADS_WREG(CH7SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

162 // ADS_WREG(CH8SET, 0x65); // PGA = 1; 5 FOR TEST SIGNAL; 0 FOR ELECTRODE

163

164 ADS_WREG(WCT1, 0x0B); // WCTA Powered on; CHN2N (RA) TO WCTA

165 ADS_WREG(WCT2, 0xD4); // WCTC Powered on; WCTB Powered on; CHN2P (LA) TO

166 //WCTB; CHN3P (LL) TO WCTC

167 //With this configuration WCT=(RA+LA+LL)/3

168

169 S_DATAC();

170 // enable interrupts

171 INTEnableInterrupts();

172

173 // const uint8_t example[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

174 // const uint8_t send_example[13], send_example_crc16[15];

175 int i;

176 // int tam=8005;

177 // char cadena_prueba[tam];

178 // for(i=0;i<tam;i++){

179 // cadena_prueba[i]=i;

180 // }

181 while(1){

182

Page 173: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…173

183 if(Band_RDY>=1)

184 {

185 Band_RDY=0;

186

187 complete_trama(1);

188 SendDataBuffer(crc16_samples, sizeof(crc16_samples));

189

190

191 }

192 }

193

194 }

195

196 void __ISR(_EXTERNAL_4_VECTOR, IPL7AUTO) DRDY_interrupt(void){

197

198 // Clears the interrupt flag so we don't immediately enter the interrupt again.

199 INTClearFlag(INT_INT4); // clear the interrupt flag

200

201 adqCH8_Temp24bit = ADS_updateDataCH8();

202 adqCH7_Temp24bit = ADS_updateDataCH7();

203 adqCH6_Temp24bit = ADS_updateDataCH6();

204 adqCH5_Temp24bit = ADS_updateDataCH5();

205 adqCH4_Temp24bit = ADS_updateDataCH4();

206 adqCH3_Temp24bit = ADS_updateDataCH3();

207 adqCH2_Temp24bit = ADS_updateDataCH2();

208 adqCH1_Temp24bit = ADS_updateDataCH1();

209

210

211 incomming_samples24bit_CHN1[ indexBuffer ] = C2_DATA(adqCH1_Temp24bit);

212 incomming_samples24bit_CHN2[ indexBuffer ] = C2_DATA(adqCH2_Temp24bit);

213 incomming_samples24bit_CHN3[ indexBuffer ] = C2_DATA(adqCH3_Temp24bit);

214 incomming_samples24bit_CHN4[ indexBuffer ] = C2_DATA(adqCH4_Temp24bit);

215 incomming_samples24bit_CHN5[ indexBuffer ] = C2_DATA(adqCH5_Temp24bit);

216 incomming_samples24bit_CHN6[ indexBuffer ] = C2_DATA(adqCH6_Temp24bit);

217 incomming_samples24bit_CHN7[ indexBuffer ] = C2_DATA(adqCH7_Temp24bit);

218 incomming_samples24bit_CHN8[ indexBuffer ] = C2_DATA(adqCH8_Temp24bit);

219 indexBuffer++;

220

221 if( indexBuffer >= 250){

222 indexBuffer = 0;

223 Band_RDY = 1;

224 memcpy((void*) (&(incomming_samples_CHN1[0])),(const void*)

225 (&(incomming_samples24bit_CHN1[0])),

226 sizeof(incomming_samples24bit_CHN1));

227 memcpy((void*) (&(incomming_samples_CHN2[0])),(const void*)

228 (&(incomming_samples24bit_CHN2[0])),

229 sizeof(incomming_samples24bit_CHN2));

230 memcpy((void*) (&(incomming_samples_CHN3[0])),(const void*)

231 (&(incomming_samples24bit_CHN3[0])),

232 sizeof(incomming_samples24bit_CHN3));

233 memcpy((void*) (&(incomming_samples_CHN4[0])),(const void*)

234 (&(incomming_samples24bit_CHN4[0])),

235 sizeof(incomming_samples24bit_CHN4));

236 memcpy((void*) (&(incomming_samples_CHN5[0])),(const void*)

Page 174: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…174

237 (&(incomming_samples24bit_CHN5[0])),

238 sizeof(incomming_samples24bit_CHN5));

239 memcpy((void*) (&(incomming_samples_CHN6[0])),(const void*)

240 (&(incomming_samples24bit_CHN6[0])),

241 sizeof(incomming_samples24bit_CHN6));

242 memcpy((void*) (&(incomming_samples_CHN7[0])),(const void*)

243 (&(incomming_samples24bit_CHN7[0])),

244 sizeof(incomming_samples24bit_CHN7));

245 memcpy((void*) (&(incomming_samples_CHN8[0])),(const void*)

246 (&(incomming_samples24bit_CHN8[0])),

247 sizeof(incomming_samples24bit_CHN8));

248

249 //the 24 status bits is: (1100 + LOFF_STATP + LOFF_STATN

250 //+ bits[4:7] of the GPIO register).

251 leadoff = ((paqueteDato1 <<4) & 0xFFF0)|

252 ((paqueteDato2 >> 12) & 0x000F);

253 memcpy((void*) (&(SEND_LEADOFF)),(const void*)

254 (&(leadoff)), sizeof(leadoff));

255

256 }

257

258

259 } // END INT4 ISR

Anexo 2: Definiciones del ANEXO 1.

1 #define GetPeripheralClock() (80000000L)

2 #define GetSystemClock() (80000000L)

3 #define POLY 0x1021

4

5 //Asignación de byte a los comandos definidos SPI (Datasheet, pg. 35)

6 #define _WAKEUP 0x02 //Wake-up desde el modo Standby

7 #define _STANDBY 0x04 //Entra en modo Standby

8 #define _RESET 0x06 //Reset TI_ADS1299

9 #define _START 0x08 //Start and restart

10 //(Sincronización) ADC

11 #define _STOP 0x0A //Stop ADC

12 #define _RDATAC 0x10 //Habilita el modo de lectura

13 //continuo (modo default Encendido)

14 #define _SDATAC 0x11 //DesStop el modo de lectura

15 //continuo

16 #define _RDATA 0x12 //Lee el dato pormedio del comando;

17 //soporta miltiple relectura

18

19 #define _RREG 0x20 //(tambien = 0010 0000) es el

20 //primer opcode(direccion) que debe

Page 175: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…175

21 //ser agregada para a RREG

22 #define _WREG 0x40 //b01000000 (Datasheet, pg. 35)

23 //Register Addresses

24 #define ID 0x00

25 #define CONFIG1 0x01

26 #define CONFIG2 0x02

27 #define CONFIG3 0x03

28 #define LOFF 0x04

29 #define CH1SET 0x05

30 #define CH2SET 0x06

31 #define CH3SET 0x07

32 #define CH4SET 0x08

33 #define CH5SET 0x09

34 #define CH6SET 0x0A

35 #define CH7SET 0x0B

36 #define CH8SET 0x0C

37 #define RLD_SENSP 0x0D

38 #define RLD_SENSN 0x0E

39 #define LOFF_SENSP 0x0F

40 #define LOFF_SENSN 0x10

41 #define LOFF_FLIP 0x11

42 #define LOFF_STATP 0x12

43 #define LOFF_STATN 0x13

44 #define GPIO 0x14

45 #define PACE 0x15

46 #define RESP 0x16

47 #define CONFIG4 0x17

48 #define WCT1 0x18

49 #define WCT2 0x19

50 #define tCLK 0.00000486

51

52 #define CS LATGbits.LATG9

53 #define nPWDN LATBbits.LATB0

54 #define nRESET LATBbits.LATB3

55 #define nSTART LATDbits.LATD10

56 #define nDRDY PORTDbits.RD11

57 int ayuda;

Anexo 3: Funciones de ANEXO 1.

1 #include <stdio.h>

2 #include <stdlib.h>

3 #include <plib.h>

4 #include <string.h>

5 #include "definitions.h"

6

7 // *****************************************************************************

8 // *****************************************************************************

9 // Section: Function Prototypes

10 // *****************************************************************************

11 // *****************************************************************************

12 char send_samples[8005], crc16_samples[8007];

13 long int incomming_samples_CHN1[250],incomming_samples_CHN2[250],

Page 176: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…176

14 incomming_samples_CHN3[250],incomming_samples_CHN4[250];

15 long int incomming_samples_CHN5[250],incomming_samples_CHN6[250],

16 incomming_samples_CHN7[250],incomming_samples_CHN8[250];

17 unsigned short SEND_LEADOFF;

18

19 long int incomming_samples24bit_CHN1[250],incomming_samples24bit_CHN2[250],

20 incomming_samples24bit_CHN3[250],incomming_samples24bit_CHN4[250];

21 long int incomming_samples24bit_CHN5[250],incomming_samples24bit_CHN6[250],

22 incomming_samples24bit_CHN7[250],incomming_samples24bit_CHN8[250];

23

24

25 void SendDataBuffer(const char *buffer, UINT32 size);

26 UINT32 GetDataBuffer(char *buffer, UINT32 max_size);

27 void waitSEC(WORD delay);

28 void ADSsetup(void);

29 void ADS1298_RESET();

30 void ADS1298_WAKEUP();

31 unsigned int ADS1298_getDeviceID();

32 void ADS1298_START();

33 void ADS_WREG(char _address, char _value);

34 void ADS_RDATA();

35 unsigned int ADS_updateDataCH1();

36 unsigned int ADS_updateDataCH4();

37 unsigned int ADS_updateDataCH3();

38 unsigned int ADS_updateDataCH2();

39 unsigned int ADS_updateDataCH5();

40 unsigned int ADS_updateDataCH6();

41 unsigned int ADS_updateDataCH7();

42 unsigned int ADS_updateDataCH8();

43 unsigned short SPI2_transfer_REG(char a, char b, char c, char d);

44 unsigned short SPI2_transfer_Data(char a, char b);

45 int C2_DATA(int adqCH_Temp24bit);

46

47 unsigned int paqueteDato1 =0,paqueteDato2 =0, paqueteDato3 =0, paqueteDato4 =0,

48 paqueteDato5 =0, paqueteDato6 =0 , paqueteDato7 =0;

49 unsigned int paqueteDato8 =0,paqueteDato9 =0,paqueteDato10 =0,paqueteDato11=0,

50 paqueteDato12 =0, paqueteDato13 =0, paqueteDato14 =0;

51 unsigned int nsalidaDeDato = 0;

52

53

54

55 SpiChannel chn = SPI_CHANNEL2;

56 // *****************************************************************************

57 // void UARTTxBuffer(char *buffer, UINT32 size)

58 // *****************************************************************************

59 void SendDataBuffer(const char *buffer, UINT32 size)

60 {

61 while(size)

62 {

63 while(!UARTTransmitterIsReady(UART1));

64

65 UARTSendDataByte(UART1, *buffer);

66

67 buffer++;

Page 177: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…177

68 size--;

69 }

70

71 while(!UARTTransmissionHasCompleted(UART1));

72 }

73 // *****************************************************************************

74 // void send_array(int max, long int array[])

75 // *****************************************************************************

76 void send_array(int max, long int array[]){

77 int i;

78 UINT8 buf1[1024];

79 for(i=0; i<max; i++){

80 sprintf(buf1,"%i", array[i]);

81 SendDataBuffer(buf1, strlen(buf1));

82 }

83 }

84

85 // *****************************************************************************

86 // UINT32 GetDataBuffer(char *buffer, UINT32 max_size)

87 // *****************************************************************************

88 UINT32 GetDataBuffer(char *buffer, UINT32 max_size)

89 {

90 UINT32 num_char;

91

92 num_char = 0;

93

94 while(num_char < max_size)

95 {

96 UINT8 character;

97

98 while(!UARTReceivedDataIsAvailable(UART1));

99

100 character = UARTGetDataByte(UART1);

101

102 if(character == '\r')

103 break;

104

105 *buffer = character;

106

107 buffer++;

108 num_char++;

109 }

110

111 return num_char;

112 }

113

114 unsigned short SPI2_transfer_REG(char a, char b, char c, char d)

115 {

116 // SPI2BUF = b; // write to shift register to begin

117 //transmission

118 // while(!SPI2STATbits.SPIRBF); // wait for transfer to complete

119 // return SPI2BUF; // read the shift register value

120

121 unsigned short rxData;

Page 178: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…178

122

123 SpiChnPutC(chn, a);

124 SpiChnPutC(chn, b); // send data

125 SpiChnGetC(chn);

126 SpiChnGetC(chn);

127

128

129 SpiChnPutC(chn, c);

130 SpiChnPutC(chn, d);

131 rxData = SpiChnGetC(chn);

132 SpiChnGetC(chn);

133

134 return rxData;

135 }

136

137 unsigned short SPI2_transfer_Data(char a, char b)

138 {

139 unsigned short rxData;

140

141 SpiChnPutC(chn, a);

142 SpiChnPutC(chn, b); // send data

143 rxData=SpiChnGetC(chn);

144 rxData=((rxData<<8)&0xFF00)|(SpiChnGetC(chn)&0x00FF);

145

146 return rxData;

147 }

148

149 void ADSsetup(void){

150 nSTART = 0;

151 nRESET = 1;

152 waitSEC(20*tCLK);

153 nRESET = 0;

154 waitSEC(20*tCLK);

155 nRESET = 1;

156 waitSEC(20*tCLK);

157 nPWDN = 1;

158 waitSEC(20*tCLK);

159 CS=0;

160 }

161

162

163 void ADS1298_RESET()

164 {

165 CS = 0;

166 SpiChnPutC(chn, _RESET);

167 SpiChnPutC(chn, 0x00);

168 SpiChnGetC(chn);

169 SpiChnGetC(chn);

170 waitSEC(20*tCLK);

171 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

172 //poner en 1 CS.

173 CS = 1;

174 }

175

Page 179: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…179

176 void ADS1298_WAKEUP()

177 {

178 CS = 0;

179 SpiChnPutC(chn, _WAKEUP);

180 SpiChnPutC(chn, 0x00);

181 SpiChnGetC(chn);

182 SpiChnGetC(chn);

183 waitSEC(20*tCLK);

184 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

185 //poner en 1 CS.

186 CS = 1;

187 }

188

189 void ADS1298_START(){

190 CS = 0;

191 SpiChnPutC(chn, _START);

192 SpiChnPutC(chn, 0x00);

193 SpiChnGetC(chn);

194 SpiChnGetC(chn);

195 waitSEC(32777*tCLK);

196 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

197 //poner en 1 CS.

198 CS = 1;

199 }

200

201 unsigned int ADS1298_getDeviceID(){

202

203 CS = 0;

204 SpiChnPutC(chn, _RREG + 0x00);

205 SpiChnPutC(chn, 0x00);

206 unsigned short ID_ADS =SpiChnGetC(chn);

207 ID_ADS = (ID_ADS<<8)& 0xFF00;

208 ID_ADS = ID_ADS | (SpiChnGetC(chn)& 0x00FF);

209 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

210 //poner en 1 CS.

211 CS=1;

212 return ID_ADS;

213 }

214

215 void ADS_RDATA()

216 {

217 SpiChnPutC(chn, _RDATA);

218 SpiChnGetC(chn);

219 }

220

221 void S_DATAC(){

222 CS=0; //Para leer registros se necesita parar el data continuous

223 SpiChnPutC(chn, _SDATAC);

224 SpiChnPutC(chn, 0x00);

225 SpiChnGetC(chn);

226 SpiChnGetC(chn);

227 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

228 //poner en 1 CS.

229 CS=1;

Page 180: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…180

230 }

231 void ADS_WREG(char _address, char _value)

232 { CS=0;

233 char opcode1 = _WREG + _address;

234 SPI2_transfer_REG(opcode1, 0x00, _value, 0x00);

235 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

236 //poner en 1 CS.

237 CS=1;

238 }

239 unsigned short ADS_RREG(char _address)

240 {

241 CS=0;

242 char opcode1 = _RREG + _address;

243 unsigned short response = SPI2_transfer_REG(opcode1, 0x00, 0x00, 0x00);

244 //waitSEC(4*tCLK); //Se debe esperar 4 o más ciclos de reloj para poder

245 //poner en 1 CS.

246 CS=1;

247 return response;

248 }

249 unsigned int ADS_updateDataCH1()

250 {

251 nsalidaDeDato = 0;

252 nsalidaDeDato = paqueteDato2 & 0x000000FF;

253 nsalidaDeDato = nsalidaDeDato & 0x000000FF;

254 nsalidaDeDato = nsalidaDeDato << 16;

255 nsalidaDeDato = nsalidaDeDato | (paqueteDato3 & 0x0000FFFF);

256

257 return nsalidaDeDato;

258 }

259

260 unsigned int ADS_updateDataCH2()

261 {

262 nsalidaDeDato = 0;

263 nsalidaDeDato = paqueteDato4 & 0x0000FFFF;

264 nsalidaDeDato = nsalidaDeDato & 0x0000FFFF;

265 nsalidaDeDato = nsalidaDeDato << 8;

266 nsalidaDeDato = nsalidaDeDato |

267 (((paqueteDato5 & 0x0000FF00)>>8) & 0x000000FF);

268 return nsalidaDeDato;

269 }

270

271

272 unsigned int ADS_updateDataCH3()

273 {

274 nsalidaDeDato = 0;

275 nsalidaDeDato = paqueteDato5 & 0x000000FF;

276 nsalidaDeDato = nsalidaDeDato & 0x000000FF;

277 nsalidaDeDato = nsalidaDeDato << 16;

278 nsalidaDeDato = nsalidaDeDato | (paqueteDato6 & 0x0000FFFF);

279 return nsalidaDeDato;

280 }

281 unsigned int ADS_updateDataCH4()

282 {

283 nsalidaDeDato = 0;

Page 181: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…181

284 nsalidaDeDato = paqueteDato7 & 0x0000FFFF;

285 nsalidaDeDato = nsalidaDeDato & 0x0000FFFF;

286 nsalidaDeDato = nsalidaDeDato << 8;

287 nsalidaDeDato = nsalidaDeDato | (((paqueteDato8 & 0x0000FF00)>>8) & 0x000000FF);

288 return nsalidaDeDato;

289 }

290

291 unsigned int ADS_updateDataCH5()

292 {

293 nsalidaDeDato = 0;

294 nsalidaDeDato = paqueteDato8 & 0x000000FF;

295 nsalidaDeDato = nsalidaDeDato & 0x000000FF;

296 nsalidaDeDato = nsalidaDeDato << 16;

297 nsalidaDeDato = nsalidaDeDato | (paqueteDato9 & 0x0000FFFF);

298 return nsalidaDeDato;

299 }

300

301 unsigned int ADS_updateDataCH6()

302 {

303 nsalidaDeDato = 0;

304 nsalidaDeDato = paqueteDato10 & 0x0000FFFF;

305 nsalidaDeDato = nsalidaDeDato & 0x0000FFFF;

306 nsalidaDeDato = nsalidaDeDato << 8;

307 nsalidaDeDato = nsalidaDeDato | (((paqueteDato11 & 0x0000FF00)>>8) & 0x000000FF);

308 return nsalidaDeDato;

309 }

310

311 unsigned int ADS_updateDataCH7(){

312

313 nsalidaDeDato = 0;

314 nsalidaDeDato = paqueteDato11 & 0x000000FF;

315 nsalidaDeDato = nsalidaDeDato & 0x000000FF;

316 nsalidaDeDato = nsalidaDeDato << 16;

317 nsalidaDeDato = nsalidaDeDato | (paqueteDato12 & 0x0000FFFF);

318 return nsalidaDeDato;

319 }

320

321 unsigned int ADS_updateDataCH8()

322 {

323

324 paqueteDato1 =0, paqueteDato2 =0, paqueteDato3 =0, paqueteDato4 =0,

325 paqueteDato5 =0, paqueteDato6 =0, paqueteDato7 =0;

326 paqueteDato8 =0, paqueteDato9 =0, paqueteDato10 =0, paqueteDato11 =0,

327 paqueteDato12 =0, paqueteDato13 =0, paqueteDato14 =0;

328

329 CS=0;

330 ADS_RDATA();

331 paqueteDato1 = SPI2_transfer_Data(0x00,0x00);

332 paqueteDato2 = SPI2_transfer_Data(0x00,0x00);

333 paqueteDato3 = SPI2_transfer_Data(0x00,0x00);

334 paqueteDato4 = SPI2_transfer_Data(0x00,0x00);

335 paqueteDato5 = SPI2_transfer_Data(0x00,0x00);

336 paqueteDato6 = SPI2_transfer_Data(0x00,0x00);

337 paqueteDato7 = SPI2_transfer_Data(0x00,0x00);

Page 182: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…182

338 paqueteDato8 = SPI2_transfer_Data(0x00,0x00);

339 paqueteDato9 = SPI2_transfer_Data(0x00,0x00);

340 paqueteDato10 = SPI2_transfer_Data(0x00,0x00);

341 paqueteDato11= SPI2_transfer_Data(0x00,0x00);

342 paqueteDato12 = SPI2_transfer_Data(0x00,0x00);

343 paqueteDato13 = SPI2_transfer_Data(0x00,0x00);

344 paqueteDato14 = SPI2_transfer_Data(0x00,0x00);

345 CS=1;

346

347 nsalidaDeDato = 0;

348 nsalidaDeDato = paqueteDato13 & 0x0000FFFF;

349 nsalidaDeDato = nsalidaDeDato & 0x0000FFFF;

350 nsalidaDeDato = nsalidaDeDato << 8;

351 nsalidaDeDato = nsalidaDeDato | (((paqueteDato14 & 0x0000FF00)>>8)

352 & 0x000000FF);

353 return nsalidaDeDato;

354 }

355 // *****************************************************************************

356 // Delay 1 sec

357 // *****************************************************************************

358

359 int C2_DATA(int adqCH_Temp24bit){

360 int result;

361 adqCH_Temp24bit = adqCH_Temp24bit & 0x00FFFFFF; // a partir de aquí se

362 //traza en una línea recta,

363 //haciendo complemento a 2.

364 if(adqCH_Temp24bit > 8388607){ // 8388608 (decimal) = 0x800000 (HEX)

365 adqCH_Temp24bit = ~adqCH_Temp24bit;

366 adqCH_Temp24bit = adqCH_Temp24bit + 1;

367 adqCH_Temp24bit = adqCH_Temp24bit & 0x00FFFFFF;

368 adqCH_Temp24bit = 8388608 - adqCH_Temp24bit ;

369 }else{

370 adqCH_Temp24bit = 8388608 + adqCH_Temp24bit ;

371 }

372

373 result=adqCH_Temp24bit;

374

375 return result;

376

377

378 }

379

380 void waitSEC(WORD delay){

381 unsigned int int_status;

382 delay=delay*1000; //Esto es porque es diseñado para milisegundos

383 while( delay-- )

384 {

385 int_status = INTDisableInterrupts();

386 OpenCoreTimer(GetSystemClock() / 2000);

387 INTRestoreInterrupts(int_status);

388 mCTClearIntFlag();

389 while( !mCTGetIntFlag() );

390 }

391 mCTClearIntFlag();

Page 183: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…183

392 }

393

394

395

396 /*

397 // 16 12 5

398 // this is the CCITT CRC 16 polynomial X + X + X + 1.

399 // This works out to be 0x1021, but the way the algorithm works

400 // lets us use 0x8408 (the reverse of the bit pattern). The high

401 // bit is always assumed to be set, thus we only use 16 bits to

402 // represent the 17 bit value.

403 */

404

405 unsigned short crc16(const char *data_p, unsigned short length)

406 {

407 unsigned int i1,i2;

408 unsigned short data;

409 unsigned short crctmp = 0x0000;

410

411 // if (length == 0) return (crctmp);

412

413 for(i1=0; i1 < length; i1++){

414 data = data_p[i1];

415 crctmp = crctmp ^ (data<<8);

416 for (i2=0; i2 < 8; i2++){

417 if (crctmp & 0x8000) crctmp = (crctmp << 1) ^ POLY;

418 else crctmp <<= 1;

419

420 crctmp= crctmp & 0xFFFF;

421 }

422 }

423

424 return (crctmp);

425 }

426

427

428 void complete_trama(int sel){

429

430

431 char v1, v2;

432

433 char header[3]={0,0,1};

434

435 unsigned short a=0;

436

437 memcpy((void*) (&(send_samples[0])),(const void*)

438 (&(header[0])), sizeof(header));

439 memcpy((void*) (&(send_samples[3])),(const void*)

440 (&(incomming_samples_CHN1[0])), sizeof(incomming_samples_CHN1));

441 memcpy((void*) (&(send_samples[1003])),(const void*)

442 (&(incomming_samples_CHN2[0])), sizeof(incomming_samples_CHN1));

443 memcpy((void*) (&(send_samples[2003])),(const void*)

444 (&(incomming_samples_CHN3[0])), sizeof(incomming_samples_CHN1));

445 memcpy((void*) (&(send_samples[3003])),(const void*)

Page 184: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…184

446 (&(incomming_samples_CHN4[0])), sizeof(incomming_samples_CHN1));

447 memcpy((void*) (&(send_samples[4003])),(const void*)

448 (&(incomming_samples_CHN5[0])), sizeof(incomming_samples_CHN1));

449 memcpy((void*) (&(send_samples[5003])),(const void*)

450 (&(incomming_samples_CHN6[0])), sizeof(incomming_samples_CHN1));

451 memcpy((void*) (&(send_samples[6003])),(const void*)

452 (&(incomming_samples_CHN7[0])), sizeof(incomming_samples_CHN1));

453 memcpy((void*) (&(send_samples[7003])),(const void*)

454 (&(incomming_samples_CHN8[0])), sizeof(incomming_samples_CHN1));

455 memcpy((void*) (&(send_samples[8003])),(const void*)

456 (&(SEND_LEADOFF)), sizeof(SEND_LEADOFF));

457

458 a=crc16(send_samples,sizeof(send_samples));

459 v1=(a>>8) & 0xff;

460 v2= a & 255;

461

462 memcpy((void*) (&(crc16_samples[0])),(const void*)

463 (&(send_samples[0])), sizeof(send_samples));

464 memcpy((void*) (&(crc16_samples[8005])),(const void*) (&(v1)), sizeof(v1));

465 memcpy((void*) (&(crc16_samples[8006])),(const void*) (&(v2)), sizeof(v2));

466

467 }

Anexo 4: Código principal implementado en MATLAB®

function varargout = ECG_INTERFACE(varargin) % ECG_INTERFACE MATLAB code for ECG_INTERFACE.fig % ECG_INTERFACE, by itself, creates a new ECG_INTERFACE or raises

the existing % singleton*. % % H = ECG_INTERFACE returns the handle to a new ECG_INTERFACE or the

handle to % the existing singleton*. % % ECG_INTERFACE('CALLBACK',hObject,eventData,handles,...) calls the

local % function named CALLBACK in ECG_INTERFACE.M with the given input

arguments. % % ECG_INTERFACE('Property','Value',...) creates a new ECG_INTERFACE

or raises the % existing singleton*. Starting from the left, property value pairs

are % applied to the GUI before ECG_INTERFACE_OpeningFcn gets called.

An

Page 185: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…185

% unrecognized property name or invalid value makes property

application % stop. All inputs are passed to ECG_INTERFACE_OpeningFcn via

varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only

one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help ECG_INTERFACE

% Last Modified by GUIDE v2.5 22-Jun-2017 11:25:38

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @ECG_INTERFACE_OpeningFcn, ... 'gui_OutputFcn', @ECG_INTERFACE_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end

if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before ECG_INTERFACE is made visible. function ECG_INTERFACE_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to ECG_INTERFACE (see VARARGIN)

serialPorts = instrhwinfo('serial'); if (isempty(serialPorts.SerialPorts)) error('Check the connection of the UART->USB Port.'); end nPorts = length(serialPorts.SerialPorts); set(handles.portList, 'String', ... [{'Select a port'} ; serialPorts.SerialPorts ]); set(handles.portList, 'Value', 2);

Page 186: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…186

set(handles.start, 'Enable', 'Off'); set(handles.stop, 'Enable', 'Off');

% Choose default command line output for ECG_INTERFACE handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes ECG_INTERFACE wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = ECG_INTERFACE_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure varargout{1} = handles.output;

% --- Executes on button press in start. function start_Callback(~, ~, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

set(handles.connectButton, 'Enable', 'Off'); set(handles.start, 'Enable', 'Off');

global myVariable1;

rep=1; fclose(handles.serConn); bandr=0; contador=1;

%Ciclo para ir realizando la grafica paso a paso Fs=250; %FILTRO PASO ALTO [b1,a1] = butter(2,1/(Fs/2),'high'); %%//Filtro paso alto de orden 10,

corte en 30Hz, Fs=256Hz %FILTRO RECHAZA BANDA [c1,d1] = butter(10,[58 62]/(Fs/2),'stop'); %% Filtro rechaza banda, de

orden 1, con freceuncia de corte inferior de 49 Hz y superior de 51Hz

(Elimina componente de 50Hz) %FILTRO PASO BAJO

Page 187: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…187

[b,a] = cheby2(10,60,100/(Fs/2)); %%//Filtro paso bajo de orden 10, con

60db de rizado y corte en 110Hz, Fs=256Hz

myVariable1 = 0;

while myVariable1 ~= 1; if (rep==1) if(bandr==1) %cierra el puerto utilizado fclose(handles.serConn); waitforbuttonpress string1 = sprintf(''); set(handles.comm_status, 'String', string1); end fopen(handles.serConn); figure(1) rep=0; end

valorADC1 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC2 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC3 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC4 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC5 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC6 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC7 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC8 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC9 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC10 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC11 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC12 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC13 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC14 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC15 = fread(handles.serConn,512); % or just myData =

fread(s,16); valorADC16 = fread(handles.serConn,327); % or just myData =

fread(s,16);

trama=vertcat(valorADC1,valorADC2,valorADC3,valorADC4,valorADC5,valorADC6

Page 188: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…188

,valorADC7,valorADC8,valorADC9,valorADC10,valorADC11,valorADC12,valorADC1

3,valorADC14,valorADC15,valorADC16);

crc=Compute_CRC(trama); leadoff=trama(8004:8005); header= trama(1:3); rh=[0;0;1];

v1=bitshift(bitand(leadoff(2),128),-7); v2=bitshift(bitand(leadoff(2),8),-3); v3=bitshift(bitand(leadoff(2),16),-4); v4=bitshift(bitand(leadoff(2),32),-5); v5=bitshift(bitand(leadoff(2),64),-6); v6=bitand(leadoff(2),1); ll=bitshift(bitand(leadoff(2),4),-2); ra=bitshift(bitand(leadoff(1),2),-1); la=bitshift(bitand(leadoff(2),2),-1);

if v1==1 set(handles.v1,'BackgroundColor','r') else set(handles.v1,'BackgroundColor','g') end

if v2==1 set(handles.v2,'BackgroundColor','r') else set(handles.v2,'BackgroundColor','g') end

if v3==1 set(handles.v3,'BackgroundColor','r') else set(handles.v3,'BackgroundColor','g') end

if v4==1 set(handles.v4,'BackgroundColor','r') else set(handles.v4,'BackgroundColor','g') end

if v5==1 set(handles.v5,'BackgroundColor','r') else set(handles.v5,'BackgroundColor','g') end

if v6==1 set(handles.v6,'BackgroundColor','r') else set(handles.v6,'BackgroundColor','g') end

Page 189: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…189

if ll==1 set(handles.ll,'BackgroundColor','r') else set(handles.ll,'BackgroundColor','g') end

if ra==1 set(handles.ra,'BackgroundColor','r') else set(handles.ra,'BackgroundColor','g') end

if la==1 set(handles.la,'BackgroundColor','r') else set(handles.la,'BackgroundColor','g') end

if (header~=rh) string1 = sprintf('Bad HEADER. Press click!'); set(handles.comm_status, 'String', string1); rep=1; bandr=1; end

if (crc~=0) string1 = sprintf('Bad CRC. Press click on the "Figure 1"

screen!'); set(handles.comm_status, 'String', string1); color='r'; rep=1; bandr=1; else color='b'; end

valorADC_CH1=trama(4:1003); valorADC_CH2=trama(1004:2003); valorADC_CH3=trama(2004:3003); valorADC_CH4=trama(3004:4003); valorADC_CH5=trama(4004:5003); valorADC_CH6=trama(5004:6003); valorADC_CH7=trama(6004:7003); valorADC_CH8=trama(7004:8003);

i=1; while i <= 1000 bytepack=

bitor((bitshift(int32(valorADC_CH1(i+2)),16)),(bitshift(int32(valorADC_CH

1(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH1(i))); salida1(contador) = ((double(bytepack))-8388608)./((2^23)-1);

Page 190: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…190

bytepack=

bitor((bitshift(int32(valorADC_CH2(i+2)),16)),(bitshift(int32(valorADC_CH

2(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH2(i))); salida2(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH3(i+2)),16)),(bitshift(int32(valorADC_CH

3(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH3(i))); salida3(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH4(i+2)),16)),(bitshift(int32(valorADC_CH

4(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH4(i))); salida4(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH5(i+2)),16)),(bitshift(int32(valorADC_CH

5(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH5(i))); salida5(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH6(i+2)),16)),(bitshift(int32(valorADC_CH

6(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH6(i))); salida6(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH7(i+2)),16)),(bitshift(int32(valorADC_CH

7(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH7(i))); salida7(contador) = ((double(bytepack))-8388608)./((2^23)-1);

bytepack=

bitor((bitshift(int32(valorADC_CH8(i+2)),16)),(bitshift(int32(valorADC_CH

8(i+1)),8))); bytepack=bitor(bytepack,int32(valorADC_CH8(i))); salida8(contador) = ((double(bytepack))-8388608)./((2^23)-1);

i=i+4; contador=contador+1; end

X_FILa1=filtfilt(b1,a1,salida1); X_FILb1=filtfilt(b,a,X_FILa1); X_FILr1=filtfilt(c1,d1,X_FILb1);

X_FILa2=filtfilt(b1,a1,salida2);

Page 191: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…191

X_FILb2=filtfilt(b,a,X_FILa2); X_FILr2=filtfilt(c1,d1,X_FILb2);

X_FILa3=filtfilt(b1,a1,salida3); X_FILb3=filtfilt(b,a,X_FILa3); X_FILr3=filtfilt(c1,d1,X_FILb3);

X_FILa4=filtfilt(b1,a1,salida4); X_FILb4=filtfilt(b,a,X_FILa4); X_FILr4=filtfilt(c1,d1,X_FILb4);

X_FILa5=filtfilt(b1,a1,salida5); X_FILb5=filtfilt(b,a,X_FILa5); X_FILr5=filtfilt(c1,d1,X_FILb5);

X_FILa6=filtfilt(b1,a1,salida6); X_FILb6=filtfilt(b,a,X_FILa6); X_FILr6=filtfilt(c1,d1,X_FILb6);

X_FILa7=filtfilt(b1,a1,salida7); X_FILb7=filtfilt(b,a,X_FILa7); X_FILr7=filtfilt(c1,d1,X_FILb7);

X_FILa8=filtfilt(b1,a1,salida8); X_FILb8=filtfilt(b,a,X_FILa8); X_FILr8=filtfilt(c1,d1,X_FILb8);

for x=1:length(X_FILr2) LEAD3(x)=X_FILr2(x)-X_FILr1(x); aVR(x)=-(X_FILr2(x)+X_FILr1(x))/2; aVL(x)=X_FILr1(x)-(X_FILr2(x)/2); aVF(x)=X_FILr2(x)-(X_FILr1(x)/2); end

t1=0:1/Fs:(length(X_FILr1)-1)/Fs; t2=0:1/Fs:(length(X_FILr2)-1)/Fs; t3=0:1/Fs:(length(X_FILr3)-1)/Fs; t4=0:1/Fs:(length(X_FILr4)-1)/Fs; t5=0:1/Fs:(length(X_FILr5)-1)/Fs; t6=0:1/Fs:(length(X_FILr6)-1)/Fs; t7=0:1/Fs:(length(X_FILr7)-1)/Fs; t8=0:1/Fs:(length(X_FILr8)-1)/Fs;

clf('reset')

figure(1) subplot(3,4,1); plot(t2,X_FILr2,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('LEAD I');

Page 192: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…192

figure(1) subplot(3,4,5) plot(t3,X_FILr3,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('LEAD II');

figure(1) subplot(3,4,9) plot(t2,LEAD3,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('LEAD III');

figure(1) subplot(3,4,2) plot(t2,aVR,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('aVR');

figure(1) subplot(3,4,6) plot(t2,aVL,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('aVL');

figure(1) subplot(3,4,10) plot(t2,aVF,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('aVF');

figure(1) subplot(3,4,3) plot(t8,X_FILr8,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('V1');

figure(1) subplot(3,4,7) plot(t4,X_FILr4,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('V2');

figure(1) subplot(3,4,11) plot(t5,X_FILr5,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y

Page 193: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…193

xlim([0 6]); %Limites del eje x title('V3');

figure(1) subplot(3,4,4) plot(t6,X_FILr6,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('V4');

figure(1) subplot(3,4,8) plot(t7,X_FILr7,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('V5');

figure(1) subplot(3,4,12) plot(t1,X_FILr1,color); %Grafica el voltaje ylim([-0.007 0.007]); %Limites del eje y xlim([0 6]); %Limites del eje x title('V6');

drawnow

if(contador>=1500) contador=1; i=1; end end

% --- Executes on button press in stop. function stop_Callback(hObject, eventdata, handles) % hObject handle to stop (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.connectButton, 'Enable', 'On'); set(handles.start, 'Enable', 'On'); global myVariable1; myVariable1 = 1;

% --- Executes on button press in reset. function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

function comm_status_Callback(hObject, eventdata, handles) % hObject handle to comm_status (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

Page 194: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…194

% Hints: get(hObject,'String') returns contents of comm_status as text % str2double(get(hObject,'String')) returns contents of

comm_status as a double

% --- Executes during object creation, after setting all properties. function comm_status_CreateFcn(hObject, eventdata, handles) % hObject handle to comm_status (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on selection change in portList. function portList_Callback(hObject, eventdata, handles) % hObject handle to portList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns portList

contents as cell array % contents{get(hObject,'Value')} returns selected item from

portList

% --- Executes during object creation, after setting all properties. function portList_CreateFcn(hObject, eventdata, handles) % hObject handle to portList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

% Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on button press in connectButton. function connectButton_Callback(hObject, eventdata, handles) % hObject handle to connectButton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

Page 195: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…195

% handles structure with handles and user data (see GUIDATA) delete(instrfindall); if strcmp(get(hObject,'String'),'Connect') % currently disconnected serPortn = get(handles.portList, 'Value'); if serPortn == 1 errordlg('Select valid COM port'); else serList = get(handles.portList,'String'); serPort = serList{serPortn}; serConn = serial(serPort, 'TimeOut', 1, ... 'BaudRate', str2num(get(handles.baudRateText, 'String')));

try fopen(serConn); handles.serConn = serConn;

% enable Tx text field and Rx button set(handles.start, 'Enable', 'On'); set(handles.stop, 'Enable', 'On');

set(hObject, 'String','Disconnect') catch e errordlg(e.message); end

end else set(handles.start, 'Enable', 'Off'); set(handles.stop, 'Enable', 'Off');

set(hObject, 'String','Connect') fclose(handles.serConn); end guidata(hObject, handles);

function baudRateText_Callback(hObject, eventdata, handles) % hObject handle to baudRateText (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of baudRateText as text % str2double(get(hObject,'String')) returns contents of

baudRateText as a double

% --- Executes during object creation, after setting all properties. function baudRateText_CreateFcn(hObject, eventdata, handles) % hObject handle to baudRateText (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

Page 196: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…196

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on selection change in history_box. function history_box_Callback(hObject, eventdata, handles) % hObject handle to history_box (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns history_box

contents as cell array % contents{get(hObject,'Value')} returns selected item from

history_box

% --- Executes during object creation, after setting all properties. function history_box_CreateFcn(hObject, eventdata, handles) % hObject handle to history_box (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

% Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

Anexo 5: Función de anexo 4.

function crc_computed = Compute_CRC(vInputData)

nBytes = length(vInputData); polynomial = 4129;

crctmp=0;

for iBytes=1:nBytes crctmp=bitxor(crctmp,bitshift(vInputData(iBytes),8)); for ibits=1:8 if bitand(crctmp,32768) crctmp=bitshift(crctmp,1); crctmp=bitxor(crctmp,polynomial); else

Page 197: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…197

crctmp=bitshift(crctmp,1); end crctmp=bitand(crctmp,65535); end end

crc_computed=crctmp;

ANEXO 6: Opiniones y recomendaciones del medico Edgar H. Domínguez.

Page 198: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…198

Page 199: SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO …

SISTEMA PORTABLE PARA LA ADQUISICIÓN Y PROCESAMIENTO DE SEÑALES ECG, CON…199