scieee AI-readable full text Open interactive document viewer

Sistema vestible para medida de biomarcadores

García Ávila, Álvaro

Abstract

Este Trabajo de Fin de Grado tiene como objetivo el desarrollo de un dispositivo que ofrezca suficiente flexibilidad y reprogramabilidad como para ser utilizado en diversas aplicaciones enfocadas a la adquisición de bioseñales y biomarcadores, es decir, se pretende crear un único dispositivo que mediante modificaciones de software y las mínimas posibles de hardware, se pueda utilizar en la adquisición de distintos parámetros y señales presentes en el cuerpo humano. En concreto, se va a ejemplificar como dicho dispositivo se puede emplear en la adquisición de la señal cardíaca y en el calculo del porcentaje del nivel de saturación de oxígeno en sangre, haciendo cambios mínimos al apartado físico. Se pretende que según la aplicación, el dispositivo diseñado pueda ser utilizado en su función de dispositivo vestible. Para lograr estos objetivos, el proyecto está basado en la tecnología SoC (System on a chip), la cual permite aglutinar gran cantidad de componentes electrónicos en un mismo empaquetado de reducido tamaño. Con la intencionalidad de simplificar el uso para un usuario final, se desarrolla una aplicación Android, la cual es capaz de comunicarse con el dispositivo creado vıa Bluetooth Low Energy, mostrar los resultados obtenidos para la medida concreta que se esté realizando y almacenar estos para su posible consulta a futuro.

Full text

TRABAJO FIN DE GRADO GRADO EN INGENIER´ IA DE TECNOLOG´ IAS DE TELECOMUNICACI ´ ON Sistema vestible para medida de biomarcadores Autor ´ Alvaro Garc´ıa ´ Avila Directores Almudena Rivadeneyra Torres V´ıctor Toral L´opez Escuela T´ ecnica Superior de Ingenier ´ ıas Inform´ atica y de Telecomunicaci´ on — Granada, Julio de 2023 Sistema vestible para medida de biomarcadores Autor ´ Alvaro Garc´ıa ´ Avila Directores Almudena Rivadeneyra Torres V´ıctor Toral L´opez SISTEMA VESTIBLE PARA LA MEDIDA DE BIOMARCADORES ´ Alvaro Garc´ıa ´ Avila PALABRAS CLAVE: Vestible, Biose˜nal, Reprogramabilidad, Flexible, Filtrado de se˜nal, PSoC, Electrocardiograma, Fotopletismograf´ıa, Porcentaje de saturaci´on de ox´ıgeno en sangre, SpO2 RESUMEN Este Trabajo de Fin de Grado tiene como objetivo el desarrollo de un dispositivo que ofrezca suficiente flexibilidad y reprogramabilidad como para ser utilizado en diversas aplicaciones enfocadas a la adquisici´on de biose˜nales y biomarcadores, es decir, se pretende crear un ´unico dispositivo que mediante modificaciones de software y las m´ınimas posibles de hardware, se pueda utilizar en la adquisici´on de distintos par´ametros y se˜nales presentes en el cuerpo humano. En concreto, se va a ejemplificar como dicho dispositivo se puede emplear en la adquisici´on de la se˜nal card´ıaca y en el c´alculo del porcentaje del nivel de saturaci´on de ox´ıgeno en sangre, haciendo cambios m´ınimos al apartado f´ısico. Se pretende que seg´un la aplicaci´on, el dispositivo dise˜nado pueda ser utilizado en su funci´on de dispositivo vestible. Para lograr estos objetivos, el proyecto est´a basado en la tecnolog´ıa SoC (System on a chip), la cual permite aglutinar gran cantidad de componentes electr´onicos en un mismo empaquetado de reducido tama˜no. Con la intencionalidad de simplificar el uso para un usuario final, se desarrolla una aplicaci´on Android, la cual es capaz de comunicarse con el dispositivo creado v´ıa Bluetooth Low Energy, mostrar los resultados obtenidos para la medida concreta que se est´e realizando y almacenar estos para su posible consulta a futuro. WEARABLE SYSTEM FOR BIOSIGNAL MEASUREMENTS ´ Alvaro Garc´ıa ´ Avila KEYWORDS: Wearable, Biosignal, Reprogrammability, Flexible, Signal filtering, PSoC, Electrocardiogram, Photoplethysmography, Percentage of oxygen saturation in blood, SpO2 ABSTRACT This Bachelor’s Thesis aims to develop a device that offers enough flexibility and reprogrammability to be used in various applications focused on the acquisition of biosignals and biomarkers, that is, it is intended to create a single device that through software modifications and the minimum possible modifications of hardware can be used in the acquisition of different parameters and signals present in the human body. Specifically, it is going to be exemplified how this device can be used in the acquisition of the cardiac signal and in the calculation of the percentage of oxygen saturation level in blood, making minimal changes to the physical section. It is intended that depending on the application, the designed device can be used in its function as a wearable device. To achieve these goals, the project is based on SoC (System on a chip) technology, which allows to agglutinate a large number of electronic components in the same small package. With the intention of simplifying the use for an end user, an Android application is developed, which is able to communicate with the device created via Bluetooth Low Energy, display the results obtained for the specific measurement being performed and store them for possible future reference. D˜na. Almudena Rivadeneyra Torres, Profesora del ´ Area de Electr´onica del Departamento de Electr´onica y Tecnolog´ıa de Computadores de la Universidad de Granada. D. V´ıctor Toral L´opez, Investigador con Cargo a Proyecto del Departamento de Electr´onica y Tecnolog´ıa de Computadores de la Universidad de Granada. Informan: Que el presente trabajo, titulado SISTEMA VESTIBLE PARA LA MEDIDA DE BIOMARCADORES, ha sido realizado bajo su supervisi´on por ´ Alvaro Garc´ıa ´ Avila, y autorizamos la defensa de dicho trabajo ante el tribunal que corresponda. Y para que conste, expiden y firman el presente informe en Granada a 13 de Julio de 2023 . Los directores: Almudena Rivadeneyra Torres V´ıctor Toral L´opez ´ Indice de Figuras 1.1. Edad media de la poblaci´on en Europa y el C´aucaso en 2021. Datos disponibles en la p´agina oficial de la Oficina Europea de Estad´ıstica [4]. ............... 3 1.2. Edad media de la poblaci´on por comunidades aut´onomas espa˜nolas en 2022. Datos disponibles en la p´agina oficial del Instituto Nacional de Estad´ıstica (INE) [3]. . . . 3 1.3. Ejemplo de dispositivo vestible parcialmente flexible para medida del EMG [48]. . 8 1.4. Capas con texto para identificar el PSoC 5LP y dos condensadores en la PCB. . . 9 1.5. Ejemplo de a˜nadir y configurar componentes en un esquem´atico de PSoC Creator. 11 1.6. Listado con algunos de los m´etodos que se pueden emplear en el control del bloque UART en PSoC Creator. Cr´editos [58]. ......................... 11 1.7. Ejemplo gen´erico del men´u de asignaci´on para los pines de entrada/salida en un PSoC mediante PSoC Creator. ............................. 11 2.1. Diagrama de bloques del sistema central de procesamiento y transmisi´on. ..... 17 2.2. Diagrama de bloques de la alimentaci´on del sistema central y los componentes conectados en los puertos. ................................. 17 2.3. Secci´on transversal de las capas de una PCB [63]. ................... 19 2.4. Empaquetado de los PSoCs usados. ........................... 20 2.5. Modelo gen´erico de un amplificador de instrumentaci´on. ............... 27 2.6. Gr´aficas del CMRR y PSRR en dB en funci´on de la frecuencia del INA333 [87]. . . 28 2.7. Ilustraci´on del funcionamiento de un condensador de bypass.............. 30 2.8. Ejemplo de un cable plano flexible [97]. ........................ 31 2.9. ICs. ............................................ 32 2.10. Puertos de I/O y pines macho para reprogramaci´on de los PSoCs. ......... 32 2.11. Componentes pasivos. .................................. 32 3.1. Mapa de pines del PSoC 5LP CY8C5868LTI-LP039 usando el empaquetado QFN-68 [67]. ............................................ 40 3.2. Esquema de la configuraci´on de la alimentaci´on del PSoC 5LP CY8C5868LTI-LP039 [67]. ............................................ 40 3.3. Esquema de la configuraci´on de la alimentaci´on del PSoC 5LP CY8C5868LTI-LP039 implementado en Altium. ................................ 41 3.4. Esquema de la conexi´on de los pines de entrada y salida del PSoC 5LP CY8C5868LTILP039 implementado en Altium. ............................ 41 3.5. Esquema de la conexi´on de los pines de entrada y salida del CYBLE-022001-00 implementado en Altium. ................................ 43 3.6. Recomendaciones para la colocaci´on del m´odulo CYBLE-022001-00 en una PCB seg´un el fabricante [110]. ................................. 43 3.7. Diagrama de configuraci´on del regulador de tensi´on LP8340C (salida fija de 3.3 V). 44 3.8. Esquem´atico de los agujeros pasantes usados para la entrada de alimentaci´on externa. 45 3.9. Esquema simplificado del interior del INA333 [87]. .................. 46 3.10. Diagrama de configuraci´on del amplificador de instrumentaci´on INA333. ...... 46 3.11. Esquema de conexiones de los load switch que controlan la alimentaci´on hacia los puertos de entrada de la PCB [80]. ........................... 47 3.12. Esquema de conexiones de los puertos de entrada a la PCB [93]. .......... 48 3.13. Conexiones de los puertos de programaci´on. ...................... 48 3.14. Modelo 3D de la PCB que forma el dispositivo de procesamiento central vista desde varios ´angulos. ...................................... 50 xvii xviii ´ INDICE DE FIGURAS 3.15. PCB del dispositivo de procesamiento central con las partes que lo componen resaltadas. ........................................... 51 3.16. Conexiones de la PCB en los planos superior e inferior. ................ 52 4.1. Cavidades del coraz´on y conducci´on el´ectrica a trav´es de ´el [111]. .......... 56 4.2. Se˜nal card´ıaca con los intervalos y puntos de inter´es resaltados. El eje vertical representa voltaje, mientras que el horizontal es el tiempo [111]. ............ 57 4.3. Tri´angulo de Einthoven. Se puede ver que las polaridades coinciden con la propagaci´on de la se˜nal el´ectrica proveniente del N´odulo sinoauricular mostrado en la Figura 4.1. ............................................. 58 4.4. Colocaci´on de electrodos en el torso para la realizaci´on de ECG seg´un la t´ecnica de 3 derivaciones [117]. ................................... 58 4.5. Esquema l´ogico seguido para la obtenci´on y transmisi´on de las se˜nales del ECG mediante el dispositivo de procesamiento central. ................... 59 4.6. Esquem´atico de PSoC Creator para la interconexi´on de los componentes que implementan la adquisici´on y tratamiento de la se˜nal de coraz´on mediante un ECG. . . 60 4.7. Sensor BlueSensor L usado para la adquisici´on del ECG [120]. ............ 62 4.8. Colocaci´on del fotodiodo usado a medo de receptor seg´un si se quiere medir la cantidad de luz transmitida o reflejada. ........................ 63 4.9. Gr´afico de la absorci´on espectral de la hemoglobina en el caso de sangre oxigenada (rojo) y desoxigenada (azul). Cr´editos: [124]. ..................... 64 4.10. Cambios en la absorci´on lum´ınica debido a la s´ıstole y di´astole del coraz´on. Cr´editos: [122]. ............................................ 65 4.11. Ejemplo de la se˜nal obtenida tras realizar un PPG. Se obtendr´ıan dos de esta se˜nales, una para la frecuencias de luz roja y otra para infrarrojos. Cr´editos: [24]. ..... 65 4.12. Curva de calibraci´on est´andar de la pulsioximetr´ıa, la cual representa el porcentaje de SpO2en funci´on de el ´ındice de absorbancia (R). ................. 66 4.13. Diagrama de bloques del pulsiox´ımetro. Imagen creada a partir de la informaci´on disponible en [126]. .................................... 67 4.14. Diagrama de la conexi´on del hardware externo necesario para pulsioximetr´ıa a la PCB del dispositivo de procesamiento central. ..................... 68 4.15. Esquem´atico de PSoC Creator para la interconexi´on de los componentes que implementan la adquisici´on del nivel de saturaci´on de ox´ıgeno en sangre. N´otese que los elementos resaltados en azul como los resistores o los diodos son s´olo representativos para un mejor entendimiento del sistema y no se encuentran en el interior del PSoC 5LP. ............................................ 69 4.16. Corrientes generadas por el fotodiodo de banda ancha del SFH7072 seg´un la intensidad y longitud de onda de la luz incidente. Cr´editos: [127]. ............. 70 4.17. M´odulo ILE-BI01-GGRIRICBD-SC201, en el centro de ´el se encuentra el chip SFH7072. Cr´editos: [128]. ...................................... 71 4.18. Sistema equivalente de un fotodiodo real. ....................... 71 4.19. Diagrama de Bode de un amplificador de transimpedancia gen´erico sin condensador Cfque asegure la estabilidad del circuito. Cr´editos: [129]. .............. 72 4.20. Diagrama de Bode de un amplificador de transimpedancia gen´erico con condensador de compensaci´on (Cf). Cr´editos: [129]. ......................... 72 4.21. Esquema de un amplificador de transimpedancia gen´erico. El fotodiodo se encuentra orientado de manera que la tensi´on de salida sea positiva. .............. 73 5.1. Diagrama de flujo de la aplicaci´on desarrollada en Android. ............. 76 5.2. Men´us y actividades de la aplicaci´on dise˜nada con Android Studio ......... 77 6.1. Espectro de la se˜nal del ECG sin filtrado. ....................... 88 6.2. Se˜nal del coraz´on aplicando un filtro de Notch a 50 Hz de 2 º orden. ........ 88 6.3. Se˜nal del coraz´on aplicando un filtro de Notch a 50 Hz de 6 º orden, donde adicionalmente se ha resaltado el complejo PQRST. ..................... 89 6.4. Espectro de la se˜nal del ECG sin filtrado. ....................... 89 6.5. Espectro de la se˜nal del ECG con filtro de Notch de 2 º orden. ............ 90 6.6. Espectro de la se˜nal del ECG con filtro de Notch de 6 º orden. ............ 90 6.7. Se˜nal del ECG extra´ıda de la persona 1. ........................ 93 6.8. Se˜nal del ECG extra´ıda de la persona 2. ........................ 94 6.9. Se˜nal del ECG extra´ıda de la persona 3. ........................ 95 6.10. fig:Resultados del porcentaje de SpO2obtenidos con dispositivo fabricado para este trabajo y el comercial. .................................. 96 B.1. Configuraci´on del ADC delta-sigma para la adquisici´on del ECG en PSoC Creator. 113 B.2. Configuraci´on de los filtros digitales usados en el tratamiento de las se˜nales del ECG.114 B.3. Configuraci´on del bloque UART para la adquisici´on del ECG en PSoC Creator. . . 114 B.4. Configuraci´on de los pines digitales empleados para el control del encendido y apagado de los LEDs. .................................... 115 B.5. Configuraci´on del bloque TIA. ............................. 115 B.6. Configuraci´on del filtro digital paso baja empleado para la adquisici´on del nivel de ox´ıgeno en sangre. .................................... 115 F.1. Comparativa del tama˜no del dispositivo de procesamiento central desarrollado respecto de una moneda de 2 euros. ............................ 149 F.2. Dispositivo de procesamiento central con dos cables flexibles conectados a sus puertos de entrada. ...................................... 150 F.3. Ejemplo de adquisici´on de la se˜nal del ECG. ...................... 150 ´ Indice de Tablas 1.1. Comparativa entre varios proyectos de dispositivos m´edicos vestibles. ........ 8 2.1. Especificaciones t´ecnicas del PSoC 5LP CY8C5868LTI-LP039. ........... 22 2.2. Especificaciones t´ecnicas del m´odulo CYBLE-022001-00. ............... 23 2.3. Comparativa de reguladores de tensi´on. ........................ 25 2.4. Comparativa de reguladores de tensi´on. ........................ 26 2.5. Comparativa de amplificadores de instrumentaci´on. .................. 28 2.6. Resumen componentes necesarios para dispositivo de procesamiento central. . . . . 31 3.1. S´ımbolos de los ICs y elementos pasivos usados en la PCB del dispositivo de procesamiento central - Parte 1 de 2. ............................. 34 3.2. S´ımbolos de los ICs y elementos pasivos usados en la PCB del dispositivo de procesamiento central - Parte 2 de 2. ............................. 35 3.3. Footprints de los ICs y elementos pasivos usados en la PCB del dispositivo de procesamiento central - Parte 1 de 2. ............................ 36 3.4. Footprints de los ICs y elementos pasivos usados en la PCB del dispositivo de procesamiento central - Parte 2 de 2. ............................ 37 3.5. Listado de la asignaci´on de pines hecha en el PSoC 5LP CY8C5868LTI-LP039. . . 42 3.6. Listado de la asignaci´on de pines hecha en el PSoC 5LP CY8C5868LTI-LP039 para el control de la alimentaci´on de los puertos mediante los switches digitales. . . . . 42 A.1. Costes de los componentes electr´onicos individuales para la fabricaci´on de uno de los dispositivos de procesamiento central desarrollados en este trabajo. . . . . . . . 112 A.2. Costes de fabricaci´on de la PCB y el ensamblaje de los componentes en ella. . . . . 112 A.3. Costes totales de las 3 PCBs encargadas. ....................... 112 Acr´onimos A|B|C|E|F|G|H|I|J|L|M|N|P|R|S|T|U|W|X A AC Alternating Current (Corriente alterna) ADC Analog to Digital Converter (Conversor anal´ogico-digital) ASIC Application Specific Integrated Circuit (Circuito integrado para aplicaci´on espec´ıfica) B Bio-MEMS Biological MEMS (Sistemas microelectromec´anicos biol´ogicos) BIO-Z Bioelectrical impedance (Impedancia bioel´ectrica) BLE Bluetooth Low Energy (Bluetooth de baja energ´ıa) BOMs Bill of Materials (Lista de materiales) C CMM Common Mode (Modo com´un) CMRR Common Mode Rejection Ratio (Factor de rechazo al modo com´un) CNT Carbon Nanotube (Nanotubos de carbono) CPU Central Processing Unit (Unidad central de procesamiento) CRC Cyclic Redundancy Check (Verificaci´on de redundancia c´ıclica) D DAC Digital to Analog Converter (Conversor digital-anal´ogico) DAP Die Attach Paddle (Paleta de fijaci´on) DC Cirect Current (Corriente continua) DMA Direct Memory Access (Acceso directo a memoria) DSB Double-sided Bond (Enlace de doble cara) E ECG Electrocardiogram (Electrocardiograma) EDA Electronic Design Automation (Automatizaci´on de dise˜no electr´onico) EEPROM Electrically Erasable Programmable Read-Only Memory (Memoria de solo lectura programable y borrable el´ectricamente) EMG Electromyography (Electromiograf´ıa) EMI Electromagnetic Interference (Interferencia electromagn´etica) EOG Electroocoulogram (Electrooculograma) F FFC Flexible Flat Cable (Cable plano flexible) FPA Filtro Paso Alta FPB Filtro Paso Baja G GPIO General Purpose Input/Output (Entrada/Salida de prop´osito general) GSR Galvanic Skin Response (Respuesta galv´anica de la piel) I I2CInter-Integrated Circuit (Circuito inter-integrado) I/O Input/Output (Entrada/Salida) IC Integrated Circuit (Circuito integrado) IDE Integrated development environment (Entorno de desarrollo integrado) IEEE Institute of Electrical and Electronics Engineers (Instituto de ingenieros el´ectricos y electr´onicos) IIR Infinite Impulse Response (Respuesta infinita al impulso) IoT Respuesta infinita al impulso (Internet de las cosas) IR Infrared (Infrarrojo) J JTAG Joint Test Action Group (Grupo de Acci´on de Pruebas Conjuntas) L LA Left Atrium (Aur´ıcula izquierda) LED Light Emitting Diode (Diodo emisor de luz) LV Left Ventricle (Ventr´ıculo izquierdo) M Matlab MATrix LABoratory (Laboratorio de matrices) MCU Microcontroller Unit (Microcontrolador) MEMS Micro-Electromechanical Systems (Sistemas microelectromec´anicos) MLB Multi-layer bond (Enlace multicapa) N NASA National Aeronautics and Space Administration (Administraci´on Nacional de la Aeron´autica y del Espacio) NC No Connection (Sin conexi´on) P PCB Printed Circuit Board (Placa de circuito impreso) PDMS Polydimethylsiloxane (Polidimetilsiloxano) PET Polyethylene Terephthalate (Polietileno Tereftalato) PI Polyimide (Poliimida) PPG Photoplethysmography (Fotopletismograf´ıa) PSoC Programable System on Chip (Sistema programable en chip) PSRR Power Supply Rejection Ratio (Factor de Rechazo a Fuente de Alimentaci´on) PWM Pulse Width Modulated (Modulaci´on por ancho de pulsos) R RA Right Atrium (Aur´ıcula Derecha) RAM Random Access Memory (Memoria de acceso aleatorio) RMS Root Mean Square (Media cuadr´atica) RV Right Ventricle (Ventr´ıculo Derecho) S SaO2Oxygen Saturation of Arterial Blood (Saturaci´on arterial de ox´ıgeno) SMD Surface Mounting Device (Dispositivo de montaje en superficie) SMT Surface Mount Technology (Tecnolog´ıa de montaje en superficie) SoC System on a Chip (Sistema en chip) SpO2Oxygen Saturation (Saturaci´on de ox´ıgeno) SPI Serial Peripheral Interface (Interfaz perif´erica serie) SPICE Simulation Program with Integrated Circuits Emphasis (Programa de simulaci´on con ´enfasis en circuitos integrados) SSB Single-sided bond (Enlace en una sola cara) SWD Serial Wire Debugging (Depuraci´on de cable serie) T THT Through Hole Technology (Tecnolog´ıa de agujeros pasantes) TIA Transimpedance amplifier (Amplificador de transimpedancia) U UART Universal Asynchronous Receiver-Transmitter (Receptor-transmisor as´ıncrono universal) UDBS Universal Digital Blocks (Bloque digital universal) USB Universal Serial Bus (Bus serie universal) UUID Universally Unique Identifier (Identificador ´unico universal) W WBAN Wireless Body Area Network (Red inal´ambrica de ´area corporal) WBSN Wireless Body Sensor Network (Red inal´ambrica de sensores corporales) WMSN Wireless Medical Sensor Network (Red inal´ambrica de sensores m´edicos) X XML Extensible Markup Language (Lenguaje de marcado extensible) 6 1.3. Estado del Arte Biocompatibilidad. Debido a que los sensores se van a encontrar en contacto directo con el cuerpo humano, es necesario favorecer materiales que no causen una respuesta negativa por parte de este, induciendo por tanto a posibles lesiones como irritaci´on de la piel, o incluso respuestas inmunes, esto ´ultimo sobre todo se puede dar en el caso de que los sensores sean implantes [31]. Capacidad de postprocesado de datos. Los sensores extraen se˜nales sin procesar, es necesario que el dispositivo las acondicione y muestre de forma que sea interpretable por una persona de manera gr´afica o num´erica. Para ello, se tienen que incluir, por ejemplo, algoritmos para realizar filtrado de las se˜nales captadas y posteriormente amplificar el resultado [10,29, 32]. Adicionalmente, se espera del sistema tambi´en que sea capaz de trabajar en tiempo real [32]. Robustez para minimizar dentro de lo posible el mantenimiento [10]. Bajo coste para tratar de generar accesibilidad para la mayor cantidad posible de personas. Esto se relaciona directamente con la caracter´ıstica de la robustez, ya que el disponer de un dispositivo robusto y confiable abarata los costes en reemplazos o reparaciones. Un componente imprescindible a tener en cuenta es el factor humano. Hay que asegurar que el dispositivo final resulte ergon´omico y c´omodo de vestir para tratar de evitar el rechazo de su uso por parte de los usuarios [2,33]. Adicionalmente, el uso de dispositivos poco ergon´omicos pueden afectar a los resultados obtenidos [34]. Como consideraci´on adicional, es recomendable dise˜nar el aparato de manera discreta, con la intenci´on de intentar interferir m´ınimamente en el d´ıa a d´ıa de un paciente que necesite de supervisi´on constante. Como gu´ıas generales se pueden tener en mente los principios de dise˜no universal. Estos son [35]: 1. Igualdad de uso: El dispositivo no debe de suponer un estigma para los usuarios. 2. Flexibilidad de uso: El dise˜no se acomoda a un rango de preferencias y habilidades personales. 3. Uso simple e intuitivo: El uso del dispositivo es f´acil de entender, independientemente de la experiencia o conocimientos del usuario. 4. Informaci´on perceptible: El dispositivo comunica la informaci´on necesaria de manera efectiva al usuario. 5. Tolerancia de errores: El dise˜no minimiza riesgos y consecuencias adversas de acciones involuntarias o accidentales. 6. M´ınimo esfuerzo f´ısico: El dise˜no se puede usar de manera efectiva y c´omoda con un m´ınimo de fatiga. 7. Forma y tama˜no adecuados: La forma y tama˜no deben de ser adecuadas para el uso planteado, independientemente del tama˜no corporal, postura o movilidad del usuario. Debido a la naturaleza de los datos con los que se trabaja en este tipo de aplicaciones, es imprescindible hacer ´enfasis en unas condiciones adecuadas de seguridad, privacidad y confidencialidad de los datos del usuario [23,30]. Por ejemplo, hay que disponer de medios para asegurar que la integridad de los datos recibidos desde el lado del paciente, es decir, se tiene que poder detectar si un tercero ha modificado los datos originales durante el proceso de transmisi´on de los mismos [18]. 1.3.3. Sensores Los sensores empleados pueden ser tanto flexibles como r´ıgidos. En cuanto a los r´ıgidos, suelen estar basados en silicio, debido a lo cual se puede reutilizar t´ecnicas de fabricaci´on en masa ya conocidas, abaratando los costes en tiradas grandes. Entre ellos podemos mencionar los sensores MEMS (Micro-Electromechanical Systems), quienes se pueden dividir a su vez en sensores piezoel´ectricos, capacitivos, electromagn´eticos y piezoresistivos. Cuando se utilizan para detecci´on de par´ametros biol´ogicos, como por ejemplo glucosa, pasan a ser conocidos como Bio-MEMS (Biological MEMS) [36,37,38]. Introducci´on 7 En cuanto a los flexibles, presentan ciertas ventajas como: ser m´as finos y ligeros que sus contraparte, lo que los hace m´as c´omodos de portar, costes reducidos, tanto de fabricaci´on como de gastos energ´eticos, y en general mayor resistencia a golpes [18,39]. Debido a estas ventajas, el uso de sensores flexibles resulta preferible cuando sea posible su implementaci´on y es en ellos en los que nos centramos a continuaci´on. Por flexible entendemos un sensor fabricado con materiales que le permiten cierta maleabilidad sin cambiar sus propiedades [39]. Es necesario seleccionar los materiales adecuados de manera que se alcance un compromiso entre el coste de fabricaci´on y el desempe˜no obtenido. Se emplean dos materiales, por un lado un sustrato sobre el que se imprimir´a el material conductor, y por el otro, el propio electrodo. Para la elaboraci´on del sustrato se pueden usar pol´ımeros org´anicos, inorg´anicos y sint´eticos, mencionamos el polidimetilsiloxano (PDMS), el tereftalato de politileno (PET) y la poliimida (PI). Para los electrodos se pueden escoger nanotubos de carbono (CNT), grafeno o aluminio [40]. Otros materiales a contemplar para el electrodo pueden ser plata u oro, pero estos se suelen descartar debido al alto coste que supone emplear metales preciosos [40,41]. Los elementos aqu´ı mencionados son solo una peque˜na selecci´on de la variedad de materiales que se pueden emplear para la manufacturaci´on del sustrato y del electrodo. En la literatura se dividen las tecnolog´ıas de impresi´on usadas en dos grupos, la impresi´on sin contacto (Non-Contact Printing Technologies) y con contacto (Contact Printing Technologies). Entre las t´ecnicas de fabricaci´on que caen dentro de la categor´ıa de impresi´on sin contacto, podemos mencionar: Screen Printing eInkjet Printing. Respecto a m´etodos usados en tecnolog´ıas con contacto, se citan: Gravure Printing,Gravure-Offset Printing,Flexographic Printing,Micro-Contact (uCP) y Nano-Imprinting (NI) [39,41]. 1.4. Comparativa entre este trabajo y otros proyectos de vestibles En la tabla 1.1 se presenta una comparativa entre el dise˜no con dispositivos vestibles que se ha realizado durante este trabajo y otras alternativas desarrolladas en proyectos similares. Dado que una de las principales biose˜nales que se pretenden obtener en este trabajo es la del coraz´on mediante un ECG, en la tabla comparativa se ha hecho especial ´enfasis en incluir otros trabajos que tambi´en realicen esta medida. La mayor´ıa de los casos estudiados emplean circuitos integrados de aplicaci´on espec´ıfica o ASIC (Application Specific Integrated Circuit), es decir, se dise˜na una circuiter´ıa a medida que ´unicamente es capaz de procesar se˜nales o par´ametros concretos y donde no es posible realizar modificaciones para a˜nadir funcionalidades adicionales. Cuando en la tabla se indica que un dispositivo es parcialmente flexible, se viene a referir a que como ocurre, por ejemplo, en [48], los sensores que se usan para tomar las medida si que son flexibles, pero el dispositivo incluye tambi´en una parte r´ıgida que alberga los circuitos para el procesamiento de la se˜nal y las comunicaciones. En la Figura 1.3, se puede consultar una imagen de dicho proyecto a modo de ejemplo. La columna “Seco/H´umedo” hace referencia, respectivamente, a si los sensores pueden tomar medidas directamente sobre la piel o si previamente hay que aplicar un gel para reducir la impedancia entre esta y el sensor. Todos los proyectos comparados optan por el empleo de sensores “secos”, ya que esto hace el uso del dispositivo mucho m´as c´omodo y atractivo de cara al usuario. El empleo de este tipo de sensores presenta adem´as la ventaja de prevenir posibles reacciones al´ergicas que puede causar el uso de geles [50,51]. La adquisici´on del ECG se ha validado utilizando parches h´umedos fabricados por Ambu, debido a la alta disponibilidad de estos durante el desarrollo del proyecto. M´as informaci´on al respecto de dichos parches se puede localizar en el apartado Obtenci´on del electrocardiograma (ECG) del Cap´ıtulo 4. Por otra parte, para la estimaci´on de la saturaci´on de ox´ıgeno si que se usa un sensor seco. Por este motivo, se ha mencionado en la Tabla 1.1 que el hecho de que el que los sensores sean secos o h´umedos depende enteramente de la aplicaci´on concreta. 8 1.5. Introducci´on a las herramientas software utilizadas Flexible Tipo de vestible Seco/ H´umedo Medidas Reconfigurable Ref No Pulsera Seco ECG/PPG/BIO-Z/GSR No [42] No Pulsera Seco ECG/PPG/Temp/ Humedad de la piel No [43] Parcial Camiseta Seco ECG/PPG No [44] Si Parche Seco ECG/PPG/Temp No [45] No Pulsera Seco ECG No [46] Si Parche Seco ECG/GSR/Temp No [47] Parcial Parche Seco EMG Si [48] Si Lente Seco Glucosa No [49] Parcial Parche Depende de medida ECG/SpO2Si Este trabajo Tabla 1.1: Comparativa entre varios proyectos de dispositivos m´edicos vestibles. Figura 1.3: Ejemplo de dispositivo vestible parcialmente flexible para medida del EMG [48]. 1.5. Introducci´on a las herramientas software utilizadas En esta secci´on se encuentra la informaci´on relevante al respecto del software que se ha utilizado para el desarrollo del trabajo. Esto incluye a las herramientas usadas para el dise˜no y simulaci´on de circuitos, as´ı como el desarrollo de firmware y de la aplicaci´on Android. Adem´as del programa utilizado para tratar y representar las muestras una vez almacenadas en un ordenador. 1.5.1. Altium Designer Un software EDA (Electronic Design Automation) es un programa utilizado para el dise˜no asistido de circuiter´ıa por ordenador. Para el desarrollo de este trabajo se ha escogido Altium Designer (en su versi´on 21.1.1) como software sobre el que desarrollar el dise˜no de la PCB que sintetiza el proyecto. Altium Designer es un software de dise˜no profesional que posibilita la simulaci´on de circuitos, su representaci´on l´ogica mediante esquem´aticos, el dise˜no asistido de PCBs y la generaci´on de documentaci´on y archivos de fabricaci´on tales como BOMs (Bill Of Materials), modelos 3D de la PCB, archivos Gerber, etc [52]. A la hora de a˜nadir un componente en Altium es necesario crear su s´ımbolo y su footprint. El s´ımbolo refleja la funcionalidad de un componente y las conexiones con las que cuenta. Estos se utilizan en la creaci´on de esquem´aticos, los cuales vienen a ser una representaci´on l´ogica de un circuito Introducci´on 9 electr´onico donde se asignan las conexiones entre componentes y se definen los nodos del circuito. Por otra parte, un footprint consiste en un patr´on que representa los agujeros (si se usa tecnolog´ıa de agujero pasante) o zonas de cobre expuestas (si se usa montaje superficial) necesarias para soldar el componente a la placa. En los footprints se pueden tambi´en definir capas de material no conductor que se pueden utilizar, por ejemplo, para a˜nadir siglas que permitan identificar r´apidamente los componentes en la PCB. En la Figura 1.4 se puede consultar un ejemplo de estos identificadores. Los s´ımbolos y los footprints se almacenan respectivamente en librer´ıas SchLib y PcbLib, de modo que una vez creado un componente se puede reutilizar en otros proyectos. En la librer´ıa SchLib, se pueden asociar a cada s´ımbolo uno o varios footprints. Adicionalmente, en la librer´ıa PcbLib se puede asociar tambi´en modelados en 3D a cada footprint, de manera que se pueden obtener modelados orientativos de la PCB previamente a su montaje. Las librer´ıas suelen estar proporcionadas por los propios fabricantes de componentes, aunque tambi´en se pueden crear o modificar de manera manual. En este trabajo se han utilizado tanto componentes de librer´ıas disponibles en repositorios p´ublicos, tales como Ultra Librarian [53], como otros creados manualmente a partir de la informaci´on disponible en las hojas de datos de cada uno. Una vez finalizado el esquem´atico, el circuito planteado de manera l´ogica se puede exportar al editor de PCBs para su dise˜no f´ısico. Para ello se exporta, de manera autom´atica, cada s´ımbolo presente en el esquem´atico como su footprint correspondiente. Durante el dise˜no de la PCB, Altium asiste mostrando que puntos deben de conectarse seg´un se estipul´o en el esquem´atico previo y resaltando posibles errores. De hecho, en circuitos sencillos se puede utilizar la funci´on de Altium para enrutamiento autom´atico de los nodos. Figura 1.4: Capas con texto para identificar el PSoC 5LP y dos condensadores en la PCB. 1.5.2. LTspice A la hora de comprobar el correcto funcionamiento de algunos dise˜nos hardware se ha utilizado LTspice, el cual viene a ser un software gratuito para simulaci´on de circuitos anal´ogicos basado en SPICE (Simulation Program with Integrated Circuit Emphasis) [54]. De manera resumida, LTspice permite dise˜nar el esquema de un circuito electr´onico y visualizar las formas de onda y niveles de voltaje y corriente en todos los nodos de este. Entre otras cosas da la posibilidad de simular: barridos de tensi´on o frecuencia, respuesta en funci´on del tiempo, operaci´on en corriente continua, etc. Las simulaciones se pueden correr usando componentes ideales o a˜nadiendo no idealidades, como, por ejemplo, limitaciones en el ancho de banda de un amplificador o los elementos par´asitos en un componente pasivo como puede ser una resistencia, un condensador o una bobina. El programa permite crear y descargan el modelado de componentes electr´onicos reales, de manera que se puedan conseguir simulaciones lo m´as parecido a la realidad posible. El programa no soporta, eso si, el dise˜no de PCBs. 10 1.5. Introducci´on a las herramientas software utilizadas 1.5.3. MATLAB MATLAB, cuyo nombre nombre viene a ser la abreviatura de MATrix LABoratory o laboratorio de matrices, es un software privativo de c´alculo num´erico que posibilita la manipulaci´on de matrices y la representaci´on de funciones. Esto permite que MATLAB se pueda utilizar para el dise˜no e implementaci´on de sistemas de control, el procesamiento de se˜nales digitalizadas, machine learning, procesamiento de im´agenes, etc [55]. Durante la realizaci´on de este proyecto se ha utilizado la versi´on de MATLAB R2018b. En este trabajo, MATLAB se utilizar´a para la visualizaci´on y el tratamiento de las se˜nales adquiridas desde el dispositivo de procesamiento central. Aunque en la aplicaci´on desarrollada en Android tambi´en se har´an dichas acciones, resulta m´as c´omodo utilizar Matlab durante las fases experimentales del proyecto. Adicionalmente, permite hacer de manera sencilla pruebas con diversos filtrados previamente a implementarlos. 1.5.4. PSoC Creator Toda la programaci´on hecha en los dispositivos PSoC usados se ha desarrollado empleando la herramienta PSoC Creator (versi´on 4.4), en esta secci´on del cap´ıtulo se hace una breve introducci´on a este programa. PSoC Creator es un entorno de desarrollo integrado o IDE (Integrated Design Environment) concebido para la creaci´on y depurado de firmware en dispositivos PSoC y FM0+ y creado por Cypress Semiconductor Corporation. Para el desarrollo de software con este programa se puede utilizar el lenguaje C, aunque tambi´en es posible emplear Verilog para ciertas tareas. [56,57]. El empleo de esta herramienta facilita la producci´on de firmware gracias a que cuenta con librer´ıas de componentes prefabricados que permiten configurar elementos internos de los PSoCs de manera sencilla, como lo pueden ser temporizadores (timers), contadores o multiplexores por poner un ejemplo. Estos componentes se a˜naden de manera gr´afica en esquem´aticos que permiten asignar las conexiones entre dichos elementos, los cuales incluyen tambi´en a los pines de entrada y salida. Posteriormente, se puede acceder a cada componente usado en el esquem´atico para configurar sus propiedades. Para clarificar estos conceptos, en la Figura 1.5 se ha incluido un ejemplo de un bloque UART conectado a varios pines en un esquem´atico y el men´u de configuraci´on del mismo. Una vez creado el esquem´atico, se puede hacer la programaci´on del procesador mediante c´odigo C. Cuando se a˜nade un bloque al esquem´atico y se compila el proyecto, el programa genera autom´aticamente una serie de librer´ıas en C que permiten el control de los bloques mediante firmware. Para ello, en el c´odigo principal se puede hacer llamada a los m´etodos generados para cada elemento. En la Figura 1.6 se puede consultar una lista con algunos de los m´etodos que se pueden usar con el bloque UART, la lista completa se puede consultar en [58]. Finalmente, una vez se ha creado un esquem´atico y el c´odigo C necesario, se realiza la asignaci´on de pines en caso de que se usen entradas y salidas, lo cual es habitual en la gran mayor´ıa de aplicaciones. En la Figura 1.7 se muestra un ejemplo gen´erico del men´u de asignaci´on. Otras caracter´ısticas destacables de este programa son: El acceso inmediato a documentaci´on extensa, ya que al seleccionar un elemento en el esquem´atico se proporciona la opci´on de abrir la hoja de datos del mismo, la cual en muchas ocasiones incluye ejemplos de uso. Un registro del n´umero de componentes totales usados y cuantos restantes quedan disponibles seg´un el modelo y familia de PSoC sobre el que se indique que se est´a trabajando. Introducci´on 11 (a) Bloque UART con conexiones a pines de entrada y salida. (b) Configuraci´on del bloque UART. Figura 1.5: Ejemplo de a˜nadir y configurar componentes en un esquem´atico de PSoC Creator. Figura 1.6: Listado con algunos de los m´etodos que se pueden emplear en el control del bloque UART en PSoC Creator. Cr´editos [58]. Figura 1.7: Ejemplo gen´erico del men´u de asignaci´on para los pines de entrada/salida en un PSoC mediante PSoC Creator. 12 1.6. Estructura del proyecto 1.5.5. Android Studio Para el dise˜no de una aplicaci´on en Android se ha utilizado el software Android Studio (versi´on 2022.1.1). Este es el entorno de desarrollo integrado (IDE) oficial para la creaci´on de aplicaciones en dispositivos Android en el lenguaje Java o Kotlin, aunque se incluye tambi´en compatibilidad para desarrollo en el lenguaje C++. Entre las funciones que incluye este IDE se encuentran [59]: La posibilidad de realizar la gesti´on de la apariencia de la aplicaci´on de manera gr´afica. Esto permite a˜nadir de manera r´apida diversas caracter´ısticas a la aplicaci´on, tales como: botones, vista de im´agenes, diversidad de widgets, etc y configurar de manera r´apida el apartado visual de estos elementos y sus funciones. Todas las propiedades de los elementos editados quedan almacenadas en un archivo en formato XML (Extensible Markup Language) y se pueden modificar tambi´en mediante desde ´el en caso de resultar m´as c´omodo para el desarrollador. Emulador que permite hacer pruebas sobre la app en estado de desarrollo en cualquier versi´on de Android. Esto tambi´en incluye la posibilidad de modificar los tama˜nos de las pantallas que muestran la aplicaci´on, para asegurar que el apartado gr´afico de la misma es correcto entre dispositivos de diversos tama˜nos. En caso de desearse hacer pruebas en un entorno real sobre un dispositivo f´ısico, se incluye la posibilidad de instalar las apps en desarrollo en dicho dispositivo mediante conexi´on USB. Esto tambi´en da acceso a herramientas de depuraci´on desde una terminal y a la consulta de un registro de los eventos ocurridos en el dispositivo. Los proyectos en Android Studio se organizan mediante un sistema de ficheros que separa estos en las carpetas [59]: manifests: Aqu´ı se incluye el archivo “AndroidManifest.xml”. Este ´ultimo se trata de la ra´ız fuente del proyecto y por tanto en el se declaran: el nombre del paquete de la aplicaci´on, los componentes de la app, lo cual incluye actividades, servicios, receptores de emisiones y proveedores de contenido y los permisos que la aplicaci´on precisa para su funcionamiento (estos var´ıan seg´un la versi´on de Android) [60]. java: Incluye el c´odigo fuente Java o Kotlin. res: Alberga el resto de recursos, como puden venir a ser: dise˜nos XML, cadenas de IU e im´agenes de mapa de bits. 1.6. Estructura del proyecto En esta secci´on se puede consultar la organizaci´on general que siguen los cap´ıtulos de este documento, as´ı como un breve resumen de que informaci´on concreta de trata en cada uno de ellos. Cap´ıtulo 1:Introducci´on.En este cap´ıtulo se puede encontrar una descripci´on en t´erminos generales del trabajo desarrollado y las razones que motivan el inter´es en seguir trabajando en dispositivos m´edicos vestibles. Tambi´en se puede consultar un resumen del estado del arte de la tecnolog´ıa actual, una comparativa entre este trabajo y otros similares, las herramientas software usada para el desarrollo del firmware yhardware creado y, para acabar, que organizaci´on temporal se ha seguido para la elaboraci´on del proyecto. Cap´ıtulo 2:Especificaciones del dispositivo de procesamiento central.En este cap´ıtulo se tratan los objetivos que se plantean cumplir con el dispositivo de procesamiento central, as´ı como que tareas se desea que realice, que componentes electr´onicos ser´an necesarios para poder realizar dichas tareas y el proceso de selecci´on de estos ´ultimos. Cap´ıtulo 3:Dise˜no hardware del dispositivo de procesamiento central.En esta secci´on del trabajo se hace un dise˜no f´ısico, mediante tecnolog´ıa PCB, del circuito planteado en el cap´ıtulo anterior. Entre la informaci´on aportada se encuentra: las consideraciones hechas para cada componente electr´onico como, por ejemplo, que componentes pasivos necesitan de manera externa para funcionar correctamente o como se les proporciona alimentaci´on, las conexiones entre dichos componentes y finalmente el enrutado y colocaci´on de todos los elementos en la PCB. Introducci´on 13 Cap´ıtulo 4:Dise˜no firmware y hardware para la obtenci´on de adquisiciones.Este cap´ıtulo trata el dise˜no de aplicaciones espec´ıficas usando el dispositivo desarrollado en los dos cap´ıtulos anteriores. Se cubre tanto el desarrollo firmware, como el hardware externo que sea necesario a˜nadir. Cap´ıtulo 5:Dise˜no de aplicaci´on compatible en Android.En esta parte se puede consultar la aplicaci´on Android desarrollada para comunicarse mediante Bluetooth Low Energy con el dispositivo creado y posteriormente representar y almacenar los valores transmitidos desde este. Cap´ıtulo 6:Resultados y adquisiciones.Aqu´ı se trata la informaci´on respectiva a las biose˜nales que se han medido en personas reales utilizando el dispositivo desarrollado en este proyecto. Cap´ıtulo 7:Conclusiones y lineas de trabajo futuras.En este ´ultimo cap´ıtulo se tratan los objetivos logrados durante la realizaci´on del proyecto y que l´ıneas de trabajo futuras se plantean. Se incluyen tambi´en varios anexos con informaci´on complementaria al trabajo, como puede ser: el c´odigo fuente de las aplicaciones desarrolladas o fotograf´ıas del sistema f´ısico. Cap´ıtulo 2 Especificaciones del dispositivo de procesamiento central Este cap´ıtulo se trata de establecer que objetivos se pretenden cumplir con el dispositivo de procesamiento central y que componentes electr´onicos son necesarios para ello. El cap´ıtulo se distribuye de la siguiente forma: En la secci´on S´ıntesis de las capacidades del dispositivo se proyectan los objetivos a cumplir con el dispositivo, as´ı como que requerimientos se exigen bas´andonos en lo que se plante´o en el Cap´ıtulo 1:Introducci´on. Esta informaci´on se complementa con los esquemas de alto nivel que ilustra la l´ogica del sistema en el apartado Arquitectura l´ogica del sistema. En el apartado Placas de circuito impreso (PCB) se puede encontrar un breve resumen el estado del arte de la tecnolog´ıa PCB, acompa˜nado de la elecci´on del tipo m´as adecuado para este proyecto. En la secci´on Selecci´on de componentes se mencionan los componentes electr´onicos necesarios, el fundamento te´orico de cada uno y el proceso de selecci´on de un modelo concreto para cada caso. El listado final de los componentes seleccionados se encuentra de manera resumida en el apartado Listado de componentes. 2.1. S´ıntesis de las capacidades del dispositivo Se plantea un dispositivo empleado como centro de recepci´on, procesamiento y transmisi´on de la informaci´on adquirida desde sensores. El objetivo de este aparato es plantear una plataforma reprogramable que, con los m´ınimos cambios posibles, se pueda reconfigurar para diversas aplicaciones de adquisici´on de biomarcadores y se˜nales que puedan resultar de utilidad en aplicaciones m´edicas. Este enfoque presenta la ventaja de que cada vez que se desee a˜nadir capacidades para adquirir un nuevo par´ametro, no sea necesario realizar un redise˜no completo del hardware, a diferencia de lo que ocurre, por ejemplo, en los sistemas ASIC, con lo cual se consiguen ahorrar costes y se acortan tiempos de desarrollo de cara a trabajos futuros. El dispositivo en s´ı no cuenta capacidad de sensorizaci´on, en su lugar se hace uso de cuatro puertos de entrada para conectar, mediante cableado, los sensores usados para la adquisici´on de muestras. Por un lado, el procesador encargado del tratamiento de la informaci´on recibe por los puertos la se˜nal (anal´ogica o digital) proveniente de los sensores, y por el otro, tambi´en se usan para proporcionar alimentaci´on a dichos sensores caso de que sea necesario. Hay que tener en cuenta que aunque el dispositivo principal s´olo tiene que ser reconfigurado por software para cada nueva aplicaci´on, si que es cierto que el hardware necesario para la adquisici´on de cada se˜nal o valor si que ser´a diferente. Sin embargo, las capacidades de estos puertos permiten que se puedan dise˜nar kits de expansi´on, de manera que solo hay que construir el hardware espec´ıfico para la muestra concreta sin tener que alterar el sistema completo, el cual se podr´ıa seguir usando para otras aplicaciones con no m´as que cambiando el kit o sensor conectado a los puertos y cargando en este dispositivo central el nuevo firmware. 22 2.4. Selecci´on de componentes PSoC 5LP CY8C5868LTI-LP039 [67] CPU 32-bit Arm Cortex-M3 Velocidad CPU Hasta 80 MHz SRAM 64 kB Flash 256 kB EEPROM 2 kB Comunicaci´on inal´ambrica No Comunicaci´on UART Si Comunicaci´on I2CSi Comunicaci´on SPI Si CapSense Si (1) N º de GPIO 38 N º de SIO 8 N º de ADC 1 canal de 20 bits (Delta-Sigma) 2 canales de 12 bits (SAR) N º de DAC 4 canales de 8 bits N º de UDBS 24 canales (2) N º de USBIO 2 N º de TIMERs 4 de 16 bits N º de Amplificadores Operacionales 4 N º de Comparadores 4 Rango Temp Ambiente -40 - 85 º C Rango Voltaje Alimentaci´on 1.71 - 5.5 V Consumo de corriente seg´un modo de funcionamiento Activo 1.9 - 25.5 mA Sleep 1.9 - 3.6 µA Hibernaci´on 0.2 µA - 21 mA (3) Empaquetado 68-QFN (68 pines) Tabla 2.1: Especificaciones t´ecnicas del PSoC 5LP CY8C5868LTI-LP039. (1) CapSense consiste en un sistema integrado en el PSoC que permite medir capacitancias en aplicaciones tales como botones t´actiles o detectores de proximidad. Se puede utilizar con cualquier pin GPIO. (2) Los pines UDBs (Universal Digital Blocks) se pueden utilizar para comunicaciones (UART, SPI e I2C), timers, contadores, verificaci´on de redundancia c´ıclica (CRC), generadores de secuen- Especificaciones del dispositivo de procesamiento central 23 cias pseudo aleatorias (PRS) y PWM (Pulse Width Modulator). (3) Los rangos de consumo de corriente son orientativos. Estos se ven influenciados por la frecuencia de funcionamiento del procesador, la temperatura y, en los modos sleep e hibernaci´on, tambi´en debido a que bloques del sistema se mantienen en uso. Por ejemplo, en el modo sleep se puede apagar la CPU pero mantener un comparador en funcionamiento. El rango de consumo en modo activo se proporciona asumiendo que ´unicamente la CPU se encuentra en uso, caso de usarse otros bloques del PSoC el consumo de corriente se puede incrementar. CYBLE-022001-00[68] CPU 32-bits Arm Cortex-M0 Velocidad CPU Hasta 48 MHz SRAM 16 kB Flash 128 kB EEPROM - Comunicaci´on inal´ambirca Bluetooth 5.1 (BLE) Tipo de antena Antena en chip (2.4 – 2.5 GHz) Velocidad de conexi´on 1 MByte/s Comunicaci´on UART Si Comunicaci´on I2CSi Comunicaci´on SPI Si N º de GPIO 16 N º de SIO - N º de ADC 1 N º de DAC 2 N º de SCB 2(1) N º de TCPWM 4 de 16 bits (2) Rango Temp Ambiente -40 - 85 º C Rango Voltaje Alimentaci´on 1.9 - 5.5 V Consumo de corriente seg´un modo de funcionamiento Activo 1.7 - 13.4 mA Deep-Sleep 1.5 µA Hibernaci´on 150 nA Empaquetado 21-pad SMT Tabla 2.2: Especificaciones t´ecnicas del m´odulo CYBLE-022001-00. 24 2.4. Selecci´on de componentes (1). Los SCBs (Serial Communication Blocks) hacen referencia a un bloque hardware que se puede configurar para ser utilizado en comunicaci´on I2C, SPI, UART, o EZI2C. (2). Los TCPWMs son bloques que se pueden configurar para ser utilizados a modo de timer, contador o generador de PWM. 2.4.2. Regulador de tensi´on Se va a alimentar desde una fuente de alimentaci´on externa, por ejemplo una bater´ıa port´atil, al PSoC 5LP CY8C5868LTI-LP039, al m´odulo CYBLE-022001-00, al resto de componentes del dispositivo central y a los sensores que se conecten a cada uno de los cuatro puertos de entrada, a este fin se usa un regulador de tensi´on. Estos dispositivos pueden recibir como entrada un cierto rango de nivel de tensi´on y en su lugar devuelven un valor de voltaje constante deseado, lo que permite estabilizar el voltaje del circuito. Algunos modelos s´olo devuelven valores de tensi´on configurados en f´abrica, mientras que otros se pueden ajustar para conseguir valores concretos. Se han barajado varios modelos de regulador de tensi´on de Texas Instruments, se puede encontrar una comparativa entre algunos de ellos en la Tabla 2.3. A la hora de elegir un regulador para esta situaci´on, el primer par´ametro que se busca es que acepte un rango amplio de voltajes de entrada (VIN), para de dicha forma dar m´as flexibilidad a como se puede alimentar el circuito. Adicionalmente, tiene que poder dar de corriente de salida (IOUT) del orden de amperios; esto se hace con la intenci´on de utilizar un ´unico regulador para alimentar simult´aneamente todos los componentes en lugar de tener que emplear varios reguladores de baja corriente, ya que de dicha forma se optimiza la cantidad de componentes usados y con ello el espacio ocupado. Finalmente, se debe de buscar un dispositivo que cumpliendo los anteriores requerimientos, tenga la menor corriente IQ, tambi´en llamada corriente de reposo o quiescent current. Este par´ametro consiste en la corriente que se sigue consumiendo a´un cuando el integrado no tiene una carga conectada, pero el regulador si que se encuentra activado. Valores bajos de IQ permiten prolongar la autonom´ıa de dispositivos port´atiles o vestibles [72]. De la comparativa entre los varios modelos se ha concluido que el dispositivo que mejor se adapta a los requerimientos buscados es el LP8340 [73]. Este dispositivo tiene una versi´on que proporciona valores de tensi´on fijo y otra que permite una salida de tensi´on ajustable, dentro de ellos se ha seleccionado la variante que proporciona un valor fijo de 3.3 V. Cabe destacar que adicionalmente existe una variaci´on del LP8340 seg´un el rango de temperatura en el cual se puede operar. Ya que se planea que el dispositivo final no tenga que funcionar en situaciones t´ermicas extremas, se escoge la variante LP8340C, la cual puede operar en el rango 0-125 º C. El modelo seleccionado tiene un voltaje de dropout (VIN-VOUT) t´ıpico de 420 mV, 800 mV en el peor caso posible. Este par´ametro viene a significar cual es la m´ınima diferencia que puede existir entre las tensiones de entrada y de salida de modo que el regulador aun consigue obtener el nivel de tensi´on de salida deseado. Es importante conocer este par´ametro, ya que de manera efectiva acota por abajo el voltaje externo con el cual se puede alimentar el circuito, es decir, aunque el integrado se puede alimentar seg´un el fabricante entre los 2.7 y los 10 V, debido a que queremos regular a 3.3 V, en el mejor caso posible habr´ıa que alimentar el sistema con como m´ınimo 3.72 V, 4.1 V en el peor caso posible [74]. Aun as´ı, el rango de voltaje que se puede usar para la alimentaci´on del regulador es suficiente como para proporcionar cierta flexibilidad al usuario final a la hora de alimentar el dispositivo. Especificaciones del dispositivo de procesamiento central 25 Modelo LP8340 [73]TPS72733DSER [75]TPS7A03 [76]TPS785-Q1 [77]TLV767-Q1 [78] VIN (V) 2.7 - 10 2 - 5.5 1.5 - 6 1.7 - 6 2.5 - 16 VOUT (V) 3.3 (Fijo) 3.3 (Fijo) 3.3 (Fijo) 3.3 (Fijo) 3.3 (Fijo) IOUT M´ax (A) 1 0.25 0.2 1 1 IQT´ıpica (µA) 19 7.9 0.2 25 60 IQM´ax (µA) 50 - (2) - - 95 VIN-VOUT T´ıpico (mV) (1) 420 162.5 - - 940 VIN-VOUT M´ax (mV) 800 200 270 350 1500 Tabla 2.3: Comparativa de reguladores de tensi´on. (1) Los voltajes de dropout tanto t´ıpicos como m´aximos que se proporcionan en la tabla 2.3 se dan asumiendo que el regulador est´a proporcionando la m´axima corriente de salida (IOUT) posible, o en su defecto, el mayor valor dado por el fabricante en la documentaci´on, al tiempo que se selecciona un voltaje de salida de 3.3 V. (2) Algunos par´ametros no se han podido incluir en la tabla comparativa ya que no est´an proporcionados por el fabricante en la documentaci´on oficial. 26 2.4. Selecci´on de componentes 2.4.3. Load Switch Se desea disponer de un m´etodo que permita, mediante software, mantener el control sobre que puertos se est´an alimentando desde el regulador de tensi´on. A este fin, se emplea un load switch o interruptor de carga, el cual consiste en un circuito integrado que permite desde uno de sus pines, llamado de enable, controlar abertura o cierre de una l´ınea. Seg´un si el nivel de tensi´on que haya en este pin se considera alta o baja, el switch permitir´a el paso de corriente o por el contrario lo cortar´a. Normalmente, una tensi´on alta en el pin enable supone que el switch cierre el circuito, aunque hay modelos que operan de manera inversa. A pesar de que el funcionamiento de estos dispositivos pueda ser similar al del un rel´e, hay que tener en cuenta que no tienen piezas m´oviles, ya que se basan en transistores para abrir o cortar el paso de corriente. En resumen, el uso de este dispositivo permitir´a mantener un mayor control sobre el consumo y los puertos de entrada a la PCB desde el PSoC, activando o desactivando la alimentaci´on hacia ellos. Cuando el switch cierre el circuito, esto es, permita el paso de corriente, en ´el se disipar´a un cierto valor de potencia. Esto se puede representar como que el switch se trata de una resistencia muy peque˜na de valor RON, se busca por tanto que esta resistencia equivalente sea lo m´as peque˜na posible para optimizar el consumo de potencia. Al igual que ocurr´ıa durante la selecci´on del regulador de tensi´on (Regulador de tensi´on), hay que tener en cuenta el valor de la corriente de reposo (IQ). Adicionalmente, tambi´en resulta relevante la corriente de apagado o shutdown current (ISD); esta determina la potencia que el switch sigue consumiendo a´un cuando est´a apagado desde el pin de enable [79]. Dado que se ha elegido un regulador de tensi´on que puede proporcionar un m´aximo de 1 A de corriente (IOUT), el load switch debe de al menos ser capaz de soportar este mismo nivel de intensidad. Adem´as, dado que se proporciona un voltaje de 3.3 V, bastar´a con que el dispositivo sea compatible con este valor de tensi´on de entrada (VIN). En la Tabla 2.4 se puede consultar una comparativa entre varios load switches. Se ha escogido el modelo TCK106AG debido a ser el que presenta la corrientes par´asitas m´as peque˜nas. Modelo TCK106AG [80]TPS22908 [81]TPS22934 [82]ADP198 [83] VIN (V) 1.1 - 5.5 1 - 3.6 1.5 - 3.6 1.65 - 6.5 IOUT M´ax (A) (1) 1 1 1 1 IQT´ıpica (nA) 110 190 3500 2500 IQM´ax (nA) 230 1000 20000 - ISD T´ıpica (nA) 14 120 2500 1100 ISD M´ax (nA) 1000 1000 5000 2000 RON T´ıpica (mΩ)42.0 28.2 63.0 90.0 RON M´ax (mΩ)68 32.1 77 - Tabla 2.4: Comparativa de reguladores de tensi´on. (1) Dado que se pretende trabajar a un valor de tensi´on de 3.3 V, los valores de IOUT y RON que aparecen en la taba 2.4, son los proporcionados por el fabricante para esta tensi´on. En caso de que no se indiquen los par´ametros para este valor de voltaje, se usan los que se si que se proporcionen para el valor de tensi´on m´as cercano a 3.3 V. Especificaciones del dispositivo de procesamiento central 27 2.4.4. Amplificador de instrumentaci´on Un amplificador diferencial es un dispositivo que realiza la operaci´on de amplificar, por un cierto valor de ganancia G, la resta de dos se˜nales de entrada (V1y V2). Este comportamiento se puede describir mediante la siguiente ecuaci´on [84]: VOut =G(V2−V1) (2.1) Figura 2.5: Modelo gen´erico de un amplificador de instrumentaci´on. Este dispositivo se emplea en este proyecto para la amplificaci´on de se˜nales diferenciales, tales como la se˜nal del coraz´on obtenida durante un ECG. Una se˜nal diferencial se caracteriza por desdoblarse en dos se˜nales con polaridad opuesta, la se˜nal que contiene la informaci´on se obtiene a partir de la resta de estas dos. Esto presenta la ventaja de poder eliminar el ruido en modo com´un, esto es, si asumimos que a las dos se˜nales que viajan por conductores distintos se ven afectadas por exactamente la misma se˜nal de ruido externo, al resta ambas el valor de ruido de las se˜nales se elimina mutuamente. [85]. A la hora de elegir un amplificador de instrumentaci´on, resulta ideal disponer de los valores m´as elevados posibles de CMRR (relaci´on de rechazo al modo com´un), PSRR (relaci´on de rechazo a la variaci´on de la alimentaci´on) e impedancia de entrada. As´ı mismo, es preferible tener la menor impedancia de salida posible. Idealmente estos amplificadores devolver´ıan un valor 0 a la salida en caso de estar en modo com´un, es decir, si se da que V1=V2. En la pr´actica esto no ocurre; el CMRR es un par´ametro que representa como de ideal es la respuesta del amplificador en el modo com´un, cuanto mayor sea dicho par´ametros, m´as cercana a 0 es la salida en dicho modo. Otro par´ametro estrechamente relacionado es el voltaje de correcci´on o de offset (VOS), este se define como la tensi´on que hay que aplicar en los terminales de entrada de modo que la salida sea 0. Esto implica que si, por ejemplo, fu´esemos a conectar ambas entradas del dispositivo a tierra, a la salida seguir´ıa existiendo cierto nivel de tensi´on distinto de 0, este nivel de tensi´on es el voltaje de offset. Adicionalmente, debido a la degradaci´on de los dispositivos electr´onicos, este par´ametro cambia con el tiempo [84,86]. Variaciones en el voltaje de alimentaci´on debido a una mala regulaci´on alteran tambi´en la salida, el PSRR es un par´ametro que se usa para especificar la habilidad del dispositivo para suprimir estas variaciones. Tanto el CMRR como el PSRR decaen a medida que aumenta la frecuencia y son tambi´en dependientes del nivel de ganancia G que se emplee. Respecto a las impedancias de entrada (ZIn) y de la salida (ZOut), son respectivamente la impedancia que se ve desde los pines de entrada hacia el dispositivo y la impedancia que se ve desde la salida hacia el dispositivo. Debido a los componentes par´asitos que albergan los dispositivos no ideales, ambos valores son dependientes tambi´en de la frecuencia [84]. Los amplificadores ven limitado el rango de voltaje que pueden proporcionar como salida, en caso de querer obtener un valor de tensi´on superior al l´ımite, la salida se satura. Estos valores m´aximos para la amplificaci´on de tensi´on positiva y negativa est´an fijados por el voltaje de alimentaci´on (+Vsy -Vs) y por las limitaciones f´ısicas del propio dispositivo. Hay que seleccionar un dispositivo de manera que el nivel de amplificaci´on deseado quede dentro del rango que permite el amplificador. En la pr´actica, el valor de la amplificaci´on m´axima es algo inferior a la tensi´on +Vs, y de igual manera ocurre con el m´ınimo valor posible y -Vs. 28 2.4. Selecci´on de componentes En la tabla 2.5 se pueden consultar la informaci´on de algunos amplificadores de instrumentaci´on barajados. Finalmente, se ha escogido el INA333 debido a que presenta un nivel de offset muy bajo y un buen valor de IQ. Dado que las se˜nales que se extraen del cuerpo humano tienen frecuencias bajas, para este trabajo el comportamiento del amplificador a altas frecuencias no resulta tan relevante. En la Figura 2.6 se pueden encontrar gr´aficas de la evoluci´on del PSRR y el CMRR en funci´on de la ganancia y de la frecuencia para este modelo de amplificador. Modelo INA333 [87]INA317 [88]AD8235 [89] Voltaje de alimentaci´on (V) 1.8 - 5.5 1.8 - 5.5 1.8 - 5 Ganancia M´ax 1000 1000 200 VOS T´ıpica (µV) ±10 ±10 - VOS M´ax (µV) ±25 ±75 ±2500 CMRR T´ıpica (dB) G=1 →90 G=1000 →115 G=1 →90 G=1000 →115 G=5 →94 G=200 →110 ZIn (GΩ|| pF) 100 || 3 100 || 3440 || 1.6 m.d 110 || 6.2 m.c IQT´ıpica (µA) 50 50 30 IQM´ax (µA) 75 75 40 Tabla 2.5: Comparativa de amplificadores de instrumentaci´on. (a) PSRR (alimentaci´on positiva). (b) PSRR (alimentaci´on negativa). (c) CMRR. Figura 2.6: Gr´aficas del CMRR y PSRR en dB en funci´on de la frecuencia del INA333 [87]. Especificaciones del dispositivo de procesamiento central 29 2.4.5. Componentes pasivos Por componentes pasivos aquellos que no suministran potencia al circuito, pero que en cambio si que pueden disiparla o almacenarla. En esta categor´ıa entran componentes tales como resistencias, inductores o condensadores. En este trabajo se van a hacer uso de: Resistores Condensadores N´ucleos de ferrita En la 2.6 se pueden consultar los modelos usados y la cantidad necesaria de cada uno. En el Cap´ıtulo 3:Dise˜no hardware del dispositivo de procesamiento central, en el cual se trata el propio dise˜no hardware con m´as profundidad, se puede encontrar la informaci´on detalla del motivo de la elecci´on de valores para estos componentes, la cantidad necesaria y cual es el uso de cada uno de ellos. 2.4.5.1. N´ucleo de ferrita Un n´ucleo de ferrita, o filtro de ferrita, es un componente electr´onico pasivo que se utiliza para suprimir ruido electromagn´etico (EMI) de alta frecuencia, es decir, act´ua a modo de filtro paso baja. De manera ideal estos componentes no afectan a se˜nales de baja de frecuencia, en la realidad debido a que tendr´an un cierto valor de resistencia par´asita, si que causan una cierta p´erdida de potencia. En la pr´actica, se pueden tratar de manera similar a una bobina, aunque en este caso el par´ametro m´as relevante es la impedancia que desarrollan a una cierta frecuencia, en lugar de su valor de inductancia. Por tanto, a la hora de seleccionar un modelo hay que considerar que se tenga la menor impedancia posible a la frecuencia de trabajo y la mayor posible a la frecuencia que se busca filtrar, dicho de otra forma, que filtrando los componentes frecuenciales deseados, cause la menor disipaci´on de potencia posible [90]. 2.4.5.2. Condensador de bypass Un concepto muy relevante es el del condensador de bypass. Tal y como se tratar´a en la parte respectiva a cada IC en el Cap´ıtulo 3, resulta habitual a˜nadir estos condensadores de manera externa al empaquetado de algunos integrados y se emplean con doble finalidad [91,92]. Por un lado, dado que los condensadores se “oponen” a cambios bruscos de voltaje, el primero de sus usos es suprimir fluctuaciones de la fuente de alimentaci´on debido a cambios repentinos de corriente. De esta forma, si se produce una reducci´on en el nivel de tensi´on, el condensador se descarga para compensar dicho desnivel y si se produce un incremento, el condensador se carga. La segunda funcionalidad de estos componentes es eliminar parte del ruido de alta frecuencia proveniente de la alimentaci´on. Esto ocurre debido a que en alta frecuencia, un condensador se ve como una impedancia de peque˜no valor, lo que ayuda a atenuar la se˜nal de ruido que llega a la carga ya que la mayor´ıa se disipa en el condensador. En la ecuaci´on 2.2 se muestra el c´alculo de la impedancia en un condensador ideal seg´un la frecuencia. Hay que tener en cuenta que en la realidad si se supera la frecuencia de resonancia del condensador, la impedancia comienza a incrementarse en lugar de disminuir debido a que el condensador pasa a tener comportamiento inductivo en lugar de capacitivo. Por tanto, es importante tener en consideraci´on que banda de frecuencia se pretende filtrar y las propias caracter´ısticas del condensador. Adem´as, tambi´en hay que considerar que la impedancia no cambia, en la pr´actica, de manera perfectamente lineal. ZC=1 j2πfC (2.2) En la Figura 2.7 se muestra un circuito que ejemplifica el funcionamiento de un condensador de bypass. 30 2.4. Selecci´on de componentes Figura 2.7: Ilustraci´on del funcionamiento de un condensador de bypass. 2.4.6. Puertos de I/O Se necesita elegir el conector que se va a utilizar como puerto de entrada para conectar la placa central y los sensores externos, as´ı como puertos que permiten acceder a los pines de programaci´on del PSoC 5LP CY8C5868LTI-LP039 y del CYBLE-022001-00 con la intenci´on de poder reprogramar el firmware de ambos. Puerto de programaci´on para PSoC 5LP CY8C5868LTI-LP039: El PSoC 5LP se puede programar mediante interfaz JTAG o SWD [67]. Se plantea usar la interfaz JTAG, para lo cual cuenta con 7 pines a los que hay que tener acceso, por este motivo se ha escogido una tira de pines macho tipo SMD con 2 filas de 5 conectores cada una. El modelo concreto escogido es el M50-3600542 [94]. Aunque se tengan conectores sobrantes, se consigue aprovechar mejor el espacio disponible en la PCB de esta forma que si se usase una tira de 7 pines distribuidos en una ´unica fila. Adem´as, el empleo de este tipo de tira de pines facilita tambi´en uso del MiniProg3 [95], el cual es el dispositivo que se va a emplear para reprogramar ambos PSoC. Puerto de programaci´on para CYBLE-022001-00: Este m´odulo se puede programar ´unicamente mediante interfaz SWD, con lo cual se tienen 5 pines de programaci´on [68]. Bastar´a con emplear para acceder a los pines de programaci´on una fila de 5 pines macho SMD. El modelo es el M52-040000P0545 [96]. Conectores para sensores y kits de expansi´on: Para la conexi´on con los sensores o kits de expansi´on se ha elegido el conector 84953-4 [93]. Cuenta con 4 conexiones, de las cuales 2 se emplean para alimentaci´on (Vin y GND) y los otros dos se puede utilizar para recepci´on de informaci´on, n´otese que seg´un el sensor o kit de expansi´on conectado puede ser que sean necesarios ambas conexiones de comunicaci´on o s´olo una de los dos. En total se emplean 4 de estos conectores. Estas entradas est´an concebidas para ser usadas con cables planos flexibles o FFC (Flexible Flat Cable). En la Figura 2.8, se puede consultar un ejemplo de este tipo de cables. Los usados para este trabajo son de un ancho de cuatro pistas, de manera que coincidan con el tama˜no de los conectores. Especificaciones del dispositivo de procesamiento central 31 Figura 2.8: Ejemplo de un cable plano flexible [97]. 2.5. Listado de componentes A modo de resumen, se puede consultar la Tabla 2.6, la cual incluye los componentes utilizados, los modelos escogidos y la cantidad necesaria. Respecto a los condensadores, resistencia y n´ucleos de ferrita, la informaci´on detallada a su respecto se puede encontrar en el Cap´ıtulo 3. En las Figuras 2.9,2.10 y2.11 se pueden hallar im´agenes orientativas de los distintos componentes. Componente Modelo Fabricante Cantidad Procesador PSoC 5LP CY8C5868LTI-LP039 Cypress Semiconductor 1 Transmisor BLE CYBLE-022001-00 Cypress Semiconductor 1 Regulador de tensi´on LP8340C (3.3 V) Texas Instruments 1 Load switch TCK106AG Toshiba 2 Amplificador de instrumentaci´on INA333 Texas Instruments 1 Conectores para sensores/kits 84953-4 TE Connectivity 4 Puerto programaci´on PSoC 5LP M50-3600542 Harwin 1 Puerto programaci´on m´odulo BLE M52-040000P0545 Harwin 1 Condensadores C0402C104J4RACTU KEMET 9 CC0402KRX5R6BB105 YAGEO 4 Resistencias ERA2AED102X Panasonic 2 ERA-2AEB104X Panasonic 1 N´ucleo de ferrita MMZ1005Y301CT000 TDK 2 Tabla 2.6: Resumen componentes necesarios para dispositivo de procesamiento central. 38 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs Es habitual que para el correcto funcionamiento de un circuito integrado (IC) sea necesario a˜nadir componentes pasivos externos, un caso muy habitual consiste en a˜nadir condensadores de bypass. En esta secci´on se tratan los elementos pasivos requeridos por el fabricante que hay que a˜nadir de manera externa para el correcto funcionamiento de los integrados seleccionados en el Cap´ıtulo 2:Especificaciones del dispositivo de procesamiento central, as´ı como los nodos a los que se encuentran conectados las patillas de cada uno de los componentes usados. En la p´agina 49, se puede consultar el esquem´atico completo dise˜nado en Altium Designer. En los subapartados siguientes se realiza una disecci´on de dicho esquem´atico. 3.2.1. PSoC 5LP CY8C5868LTI-LP039 Como se expon´ıa en la Tabla 2.1, el PSoC 5LP se puede alimentar con un rango de voltaje que va de los 1.71 a los 5.5 V. Por otra parte, el PSoC 5LP no tiene por qu´e tener un mismo valor de alimentaci´on para: el n´ucleo o core y los componentes digitales, los anal´ogicos y los pines de entrada/salida. A continuaci´on se tratan las tensiones de alimentaci´on con mayor detalle [67]: En la documentaci´on se utiliza el distintivo VDDD para identificar al voltaje que alimenta a todos los perif´ericos digitales y al core. Esta tensi´on se debe de encontrar en el rango de alimentaci´on mencionado anteriormente. Los pines de entrada/salida (I/O) se dividen en grupos que pueden ser alimentados a distintos voltajes, de manera que un ´unico PSoC puede suministrar distintos niveles de tensi´on a componentes externos. Los voltajes a los que se alimenta cada grupo de pines I/O se identifican como VDDIO0, VDDIO1, VDDIO2 y VDDIO3. Su nivel m´ınimo y m´aximo de tensi´on es tambi´en de 1.71 y 5.5 V. El voltaje de alimentaci´on de los perif´ericos anal´ogicos puede ser diferente del usado para los perif´ericos digitales, el core y los pines I/O y se identifica como VDDA. Se tiene que cumplir que VDDA sea mayor o igual que las tensiones de VDDD y VDDIOX. Otros valores de tensi´on son VCCD, que viene a ser el voltaje de entrada/salida del regulador digital y VCCA que es el del anal´ogico. Como consideraciones adicionales a la hora de dise˜nar la PCB, el fabricante recomienda que la pista que conecte los dos pines de VCCD sea lo m´as corta posible. Dado que usa un ´unico regulador de tensi´on de 3.3 V para alimentar todos los dispositivos presentes en la PCB, todos los niveles de tensi´on vistos se encontrar´an a este valor. Para suministrar de manera correcta la tensi´on al PSoC, se tienen que a˜nadir varios condensadores de bypass como se muestra en la Figura 3.2 extra´ıda de la documentaci´on del PSoC 5LP oficial proporcionada por Cypress. En la Figura 3.3 se encuentra la configuraci´on de la alimentaci´on hecha en Altium y creada a partir de la informaci´on proporcionada en la Figura 3.2. Dado que como ya se ha dicho, todos los niveles de tensi´on para alimentar los componentes del PSoC est´an al mismo valor y provienen de la salida del mismo regulador de tensi´on, se han conectado todos los condensadores provenientes de VDDD requeridos en la Figura 3.2 en paralelo. Aunque todos los condensadores est´an conectados a VDDD, se han usado el componente de Alitum marcado como J2 para que sea m´as sencillo identificar las distintas entradas aunque en realidad sean el mismo nodo. Exactamente de igual manera que se hace con las entradas, se hace con las tierras usando J1. En la Figura 3.3 se muestran ´unicamente los pines del PSoC 5LP referidos a la alimentaci´on, la conexi´on de los pines respectivos a los puertos de entrada y salida se puede encontrar en la Figura 3.4. Se procede a identificar cada uno de los nodos o redes conectados a los pines del PSoC: Dise˜no hardware del dispositivo de procesamiento central 39 OutX Y se refieren a los puertos de entrada desde los que se reciben informaci´on de los sensores, donde “X” identifica al puerto e “Y” a cada uno de los pines dentro de dicho puerto. Bas´andonos en la Figura 3.1, se ha tratado de hacer las asignaciones de los pines GPIO de entrada de manera que las pistas que se lancen hacia los puertos de entrada a la PCB sean lo m´as cortas posibles. En la subsecci´on Asignaci´on de pines se puede encontrar m´as informaci´on al respecto de las asignaciones hechas. EN1 y EN2 se usan para controlar el estado ON/OFF de los switches TCK106AG. EN1 permite controlar la alimentaci´on hacia los puertos 3 y 4 y el amplificador diferencial y EN2 hacia los puertos 1 y 2. Identificamos el switch controlado por EN1 como el swtich 1 y el controlado por EN2 como el switch 2. /XRES, TMS, TCK, TDO y TDI son los pines usados por la interfaz JTAG para reprogramar el firmware. Aunque aqu´ı s´olo se mencionan 5 pines, en el apartado Puertos de I/O se comentaba que se necesitan 7 para la programaci´on mediante JTAG. Esto se debe a que los dos pines que faltan son de alimentaci´on.. UART TX y UART RX comunican el PSoC 5LP con el m´odulo BLE CYBLE-022001-00 mediante protocolo UART. INA p e INA n son las entradas del amplificador de instrumentaci´on. Respectivamente, la primera se refiere a la entrada positiva y la segunda a la negativa. Por otro lado, INA out recibe la salida obtenida desde dicho amplificador. CMM se usa para poder medir el modo com´un del amplificador diferencial. TP1 y TP2 est´an conectados a pads que no se encuentran soldados a ning´un componente, es decir, en principio estos pines se dejan en abierto. Se han a˜nadido para poder ser utilizados en pruebas que permitan comprobar el correcto estado del PSoC o de la PCB en caso de que sea necesario. 3.2.1.1. Asignaci´on de pines Para la elecci´on de los pines a los que se deben de conectar las entradas, se ha utilizado el esquem´atico proporcionado en la Figura 3.1, el cual muestra la asignaci´on de pines para los modelos de la familia PSoC 5LP que usan el empaquetado QFN de 68 pines. Aunque en principio se puede usar cualquier puerto de pines GPIO para acceder tanto a la parte digital como anal´ogica del PSoC, si que es cierto que el fabricante recomienda utilizar ciertos puertos seg´un la funcionalidad prevista con la intenci´on de optimizar el rendimiento. Por ejemplo, en la familia PSoC 5LP se recomienda el uso de los sets de pines P0[7:0], P3[7:0] y P4[7:0] para aplicaciones anal´ogicas [108]. Se ha planteado disponer del protocolo de comunicaci´on I2C en caso de que sea necesario para la transmisi´on hacia o la recepci´on desde los kits de expansi´on. Al igual que ocurr´ıa en el caso anterior, se puede utilizar cualquier par de GPIOs para comunicaci´on mediante este protocolo, sin embargo, hay pines que resultan m´as adecuados. En concreto, se recomienda el uso de las parejas P12[4] y P12[5] o P12[0] y P12[1]. El motivo de preferirse usar uno de estos dos d´uos, es el hecho de que permiten enviar una se˜nal de “despertar” a una direcci´on en la que se encuentre un dispositivo operando modo de bajo consumo o sleep, acci´on que no se puede hacer desde GPIOs diferentes a los mencionados [67]. El disponer de la posibilidad de usar bajo consumo resulta ventajoso desde el punto de vista de la optimizaci´on del consumo. En la Tabla 3.5 se pueden consultar las lista completa de la asignaci´on de pines. Esta lista se puede consultar a modo de recomendaci´on a la hora de desarrollar firmware y conectar dispositivos externos al dispositivo central. La columna “Uso recomendado” indica el uso que el fabricante aconseja para cada pin, como se puede leer en la tabla, no se ha seleccionado ninguno de los pines recomendados para uso anal´ogico. El motivo viene a ser que la localizaci´on de dichos pines no resultaba adecuada para el enrutado de las pistas en la PCB. Esto no implica a´un as´ı que los m´odulos anal´ogicos del PSoC 5LP no se puedan usar de manera efectiva. 40 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs Figura 3.1: Mapa de pines del PSoC 5LP CY8C5868LTI-LP039 usando el empaquetado QFN-68 [67]. Figura 3.2: Esquema de la configuraci´on de la alimentaci´on del PSoC 5LP CY8C5868LTI-LP039 [67]. Dise˜no hardware del dispositivo de procesamiento central 41 Figura 3.3: Esquema de la configuraci´on de la alimentaci´on del PSoC 5LP CY8C5868LTI-LP039 implementado en Altium. Figura 3.4: Esquema de la conexi´on de los pines de entrada y salida del PSoC 5LP CY8C5868LTILP039 implementado en Altium. 42 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs Pines Uso recomendado Puerto 1 P2[1] (63) Digital P2[2] (64) Puerto 2 P2[6] (1) Digital P2[7] (2) Puerto 3 P12[4] (3) Digital e I2C P12[5] (4) Puerto 4 P12[0] (38) Digital e I2C P12[1] (39) Tabla 3.5: Listado de la asignaci´on de pines hecha en el PSoC 5LP CY8C5868LTI-LP039. y el uso recomendado para cada puerto. Pin Puertos controlados Switch 1 (ON/OFF) P15[1] (28) 3 y 4 Switch 2 (ON/OFF) P2[0] (62) 1 y 2 Tabla 3.6: Listado de la asignaci´on de pines hecha en el PSoC 5LP CY8C5868LTI-LP039 para el control de la alimentaci´on de los puertos mediante los switches digitales. 3.2.2. CYBLE-022001-00 El m´odulo BLE [68] dispone de dos entradas de alimentaci´on. Por un lado se tiene VDD, qui´en suministra la tensi´on para la alimentaci´on de los perif´ericos anal´ogicos y digitales. Por el otro, se encuentra VDDR, que suministra a la comunicaci´on radio. Para asegurar el correcto funcionamiento del m´odulo, se debe de cumplir que la alimentaci´on de VDD sea mayor o igual que la de VDDR y el rizado de la alimentaci´on no sea de m´as de 100 mV. Dado que como ya se ha visto, se recurre a un ´unico regulador de tensi´on de 3.3 V, ambos valores son iguales. La supresi´on del rizado se consigue desde el propio regulador y de los condensadores de bypass a la entrada y salida de este. Para la alimentaci´on, se hace necesario a˜nadir tambi´en varios componentes pasivos de manera externa. En primer lugar, se deber´ıan de a˜nadir varios condensadores de bypass, sin embargo, dado que estos capacitores son los mismos que ya se emplearon para el PSoC 5LP CY8C5868LTI-LP039, no ser´a necesario volver a a˜nadirlos, ya que los nodos VDD y VDDR son el mismo punto que los nodos VDDD, VDDA y VDDIOX en el caso del PSoC 5LP. En la Figura 3.3 se puede consultar la colocaci´on de estos componentes pasivos en el esquem´atico. Adicionalmente, se a˜naden tambi´en dos n´ucleos de ferrita a la entrada de los pines de alimentaci´on, tal y como mostrado en la Figura 3.3, donde aparecen identificados como L1 y L2. El fabricante recomienda colocar los n´ucleos de ferrita lo m´as cercano posible a los pines, adem´as proporciona como sugerencia que este elemento tenga un valor de 330 Ω a una frecuencia de 100 MHz. En el momento de dise˜nar la PCB, se seleccion´o el modelo MMZ1005Y301CT000 [109], el cual proporciona 300 Ω a 100 MHz, debido a la disponibilidad del stock de los distribuidores durante el dise˜no de la PCB. Dise˜no hardware del dispositivo de procesamiento central 43 Figura 3.5: Esquema de la conexi´on de los pines de entrada y salida del CYBLE-022001-00 implementado en Altium. 3.2.2.1. Consideraciones respecto de la antena Para maximizar el desempe˜no en radio frecuencia, el fabricante recomienda situar la antena del CYBLE-022001-00 en uno de los extremos de la PCB y que, de manera adicional, el ´area inmediatamente por debajo de la antena quede despejado de pistas que conecten con tierra o que transporten se˜nales, ya que en caso contrario se limita la propagaci´on de la se˜nal [68,110]. En la Figura 3.6 se muestran posibles posicionamientos del m´odulo en una PCB seg´un el fabricante. En la PCB no ha sido posible cumplir la segunda condici´on, ya que se ha preferido condensar los componentes en el menor ´area posible. Se ha tomado esta decisi´on, ya que se espera que el dispositivo a el cual se va a transmitir la informaci´on de manera inal´ambrica se encuentre en las inmediaciones del circuito, con lo cual se ha considerado m´as importante que el dispositivo final sea m´as peque˜no en lugar de que pueda transmitir a mayor distancia. Figura 3.6: Recomendaciones para la colocaci´on del m´odulo CYBLE-022001-00 en una PCB seg´un el fabricante [110]. 44 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs 3.2.3. LP8340C Para el adecuado funcionamiento del regulador de tensi´on, el fabricante aconseja utilizar dos condensadores de bypass que se encuentren en el rango de valores de 1 a 10 µF, consigui´endose el nivel de tensi´on m´as estable en caso de que ambos sean de 10 µF [73]. Se ha optado por usar dos de 1 µF ya que se encuentran dentro del rango de valores sugerido y permiten reutilizar el mismo modelo de condensador que ya se emplearon para el bypass de la alimentaci´on de los PSoCs. Dado que se ha escogido la versi´on del LP8340C que proporciona un valor prefijado de tensi´on usando el empaquetado NGD0006A, se tienen que cortocircuitar las patillas 4 y 5 por un lado, y las patillas 1 y 6 por el otro. La patilla 3, indicada como NC (No Connection), se deja al aire debido a que no se usa en este integrado. La patilla 7, la cual aparece referida en la Figura 3.7b como DAP (Die Attach Paddle) se conecta a tierra, su objetivo es servir como disipador de calor del integrado. (a) Mapa de pines del empaquetado NGD0006A [73]. (b) Esquem´atico de Altium. Figura 3.7: Diagrama de configuraci´on del regulador de tensi´on LP8340C (salida fija de 3.3 V). 3.2.3.1. Entrada de alimentaci´on externa Como resulta l´ogico, se necesita un punto de entrada para la fuente de alimentaci´on externa y que vaya hacia el regulador. Aunque en el Cap´ıtulo 2:Especificaciones del dispositivo de procesamiento central se mencionaba que se prefer´ıa el uso de dispositivos SMD se han dispuesto dos agujeros pasantes para la entrada de alimentaci´on. Aunque esta soluci´on pueda no resultar adecuada para un producto final. Sin embargo, s´ı que es cierto que para el prototipo que se implementa en esta trabajo, este tipo de entrada resulta ´util a la hora de hacer series de pruebas con variedad de fuentes de alimentaci´on, como lo podr´ıan ser fuentes de laboratorio. El en esquem´atico se ha usado el s´ımbolo de la Figura 3.8 para representar esta entrada, su footprint no se ha incluido en la Tablas 3.3 y3.4, ya que se han utilizado agujeros pasantes gen´ericos disponibles en Altium. Dise˜no hardware del dispositivo de procesamiento central 45 Figura 3.8: Esquem´atico de los agujeros pasantes usados para la entrada de alimentaci´on externa. 3.2.4. INA333 Se busca una ganancia de aproximadamente 50 V/V. El valor m´as cercano que se puede alcanzar usando resistencias de valor comercial a˜nadiendo los m´ınimos componentes es 51 V/V, para lo cual se necesita una resistencia 2 kΩ, este valor se puede extraer a partir de la expresi´on 3.1. Se ha optado por dividir el resistor en 2 de 1 kΩ, de manera que se tenga un punto en el cual sea posible medir el modo com´un. En la Figura 3.10 este punto se ha referido como CMM y es al que est´a conectado el test point, tambi´en llamado CMM, mencionado en el apartado anterior PSoC 5LP CY8C5868LTI-LP039. El motivo de seleccionar este nivel de amplificaci´on es el hecho de que las se˜nales extra´ıdas del cuerpo humano tienden a valores de amplitud relativamente peque˜nos. Por ejemplo, en el caso de la se˜nal del coraz´on se esperan amplitudes del rango de los µV o de apenas unos pocos mV [111]. A la hora de amplificar, hay que tener en cuenta tambi´en que la se˜nal debe de ser posteriormente muestreada por un convertidor anal´ogico-digital. Estos ´ultimos tienen su resoluci´on comprendida entre un rango de valores m´aximo y m´ınimo, hay que amplificar teniendo presente que no se pueden superar este rango si se desea que la se˜nal captada sea recuperada correctamente. La informaci´on relativa a la configuraci´on del ADC del PSoC y los conceptos relacionados se puede encontrar de manera m´as detallada en el Cap´ıtulo 4:Dise˜no firmware y hardware para la obtenci´on de adquisiciones. En la Figura 3.10 se puede consultar el empaquetado usado para el INA333, as´ı como un esquem´atico de las conexiones de sus patillas. Se procede a clarificar cada una de estas conexiones, a modo ilustrativo, se ha incluido tambi´en un esquema simplificado del interior del INA333 proporcionado por el fabricante y el cual se puede consultar en la Figura 3.9 [87]. Las patillas 4 y 7 (V+y V-) establecen los l´ımites superior e inferior que puede tomar la se˜nal de salida. Estas est´an conectadas a, respectivamente, la salida del load switch 1, el cual se utiliza para abrir o cerrar la alimentaci´on a 3.3 V proveniente del regulador de tensi´on, y tierra. En el apartado Amplificador de instrumentaci´on nos refer´ıamos a estos voltajes como +Vsy -Vs. Los pines 2 y 3, denominados como VIN+ y VIN-, son los puntos de entrada de las dos componentes de las se˜nales diferenciales a amplificar. Estas se˜nales se introducen en el PSoC 5LP directamente desde los puertos de entrada a la PCB y se redirigen a los pines del PSoC conectados al INA333. Entre los pines 1 y 8 se conecta el resistor que ajusta la ganancia del amplificador. El punto REF (pin 5) se usa para la referencia de entrada, la cual permite establecer un offset para la se˜nal de salida. Por como se configura el ADC del PSoC 5LP (rail-to-rail), este no tiene resoluci´on negativa, es decir, no es capaz de muestrear valores negativos de tensi´on. Por tanto, el desplazamiento vertical de la se˜nal que se a˜nade a trav´es del pin REF, permite que si sea posible muestrear valores negativos de se˜nales como podr´ıa ser la del coraz´on. G= 1 + 100kΩ RG (3.1) 46 3.2. Configuraci´on, conexi´on y alimentaci´on de los ICs Figura 3.9: Esquema simplificado del interior del INA333 [87]. (a) Mapa de pines del empaquetado DGK [87]. (b) Esquem´atico de Altium. Figura 3.10: Diagrama de configuraci´on del amplificador de instrumentaci´on INA333. Dise˜no hardware del dispositivo de procesamiento central 47 3.2.5. TCK106AG Tal y como ya se ha establecido, el interruptor de carga se utiliza para activar o desactivar la alimentaci´on que va hacia los puertos de entrada a la PCB. Se utilizan dos TCK106AG, controlando cada uno de ellos la alimentaci´on de dos puertos. Adicionalmente, el switch controlado desde la entrada EN1 habilita y deshabilita tambi´en el funcionamiento del amplificador de instrumentaci´on. Esta informaci´on se puede consultar en los diagramas de bloques de la secci´on Arquitectura l´ogica del sistema del Cap´ıtulo 2. El pin B2, etiquetado como EN1 y EN2, se encuentra conectado a dos pines del PSoC 5LP. En caso de que estos pines se establezcan a un valor de tensi´on considerado como alto, esto es una tensi´on de 0.9 V o m´as, el switch permite el paso de corriente. Por otra parte, VDD viene a ser el nodo de salida del regulador de tensi´on, mientras que en VDDX est´a al voltaje que proporciona dicho regulador (en caso de que ENX = HIGH), menos la tensi´on que se disipe debido a la resistencia presentada por el propio switch. Aunque el fabricante asegura que es dispositivo el capaz de operan con normalidad sin necesitar de un condensador de bypass [80], si que recomienda tambi´en usar uno en caso de que sea posible en el pin A2. Dado que este pin se encuentra conectado a la salida del regulador y este ´ultimo ya cuenta con un pin de bypass en esta, no se hace necesario a˜nadir otro. Figura 3.11: Esquema de conexiones de los load switch que controlan la alimentaci´on hacia los puertos de entrada de la PCB [80]. 3.2.6. Puertos de I/O y de programaci´on Los puertos est´an configurados de manera de que dos de sus pines est´en conectados a GPIOs del PSoC 5LP, mientras que los otros dos se usan para alimentaci´on (en caso de que sea necesario) de los kits de expansi´on o los sensores conectados al dispositivo central de procesamiento. Los voltajes de alimentaci´on provienen de la salidas de los load switch. Los puertos s´olo tienen 4 posibles conectores, los conectores 5 y 6 est´an cortocircuitados a tierra y en el modelo f´ısico se usan para la soldadura a la PCB. Respecto a los pines usados para la programaci´on del PSoC 5LP, dado que se tienen m´as pines de los necesarios para la programaci´on mediante interfaz JTAG. Lo pines sobrantes se han cortocircuitado a tierra tal y como se indica en la documentaci´on del MiniProg3 [95], el cual se utiliza para reprogramar ambos PSoCs. Cap´ıtulo 4 Dise˜no firmware y hardware para la obtenci´on de adquisiciones El objetivo de este cap´ıtulo es tratar el dise˜no del software con para la placa central y el hardware externo que sea necesario a˜nadir para poder adquirir medidas de cuerpo humano. Se recuerda que para la implementaci´on de firmware sobre los PSoCs se usa el programa PSoC Creator. El cap´ıtulo se ha dividido en las siguientes secciones: En Obtenci´on del electrocardiograma (ECG) se puede consultar toda la informaci´on relativa a la obtenci´on de la se˜nal del coraz´on mediante un electrocardiograma, ello incluye un resumen te´orico de esta t´ecnica y el desarrollo firmware para implementarla mediante el dispositivo de procesamiento central expuesto en los cap´ıtulos anteriores. Obtenci´on del nivel de saturaci´on de oxigeno alberga la misma informaci´on que la secci´on anterior, pero relativa a la adquisici´on del nivel de saturaci´on de ox´ıgeno en sangre mediante t´ecnicas de fotopletismograf´ıa. 4.1. Obtenci´on del electrocardiograma (ECG) En esta secci´on se trata el firmware desarrollado para obtener un electrocardiograma o ECG (electrocardiogram) mediante el sistema construido a partir del PSoC 5LP CY8C5868LTI-LP039, as´ı como un repaso a los conceptos relacionados con la obtenci´on de la se˜nal del coraz´on. Para la adquisici´on de esta medida se usar´an sensores comerciales directamente conectados a los puertos de entrada de la placa principal, sin que sea necesario desarrollar un kit de expansi´on con su correspondiente circuiter´ıa. 4.1.1. Fundamento te´orico del ECG El coraz´on est´a compuesto por tejido card´ıaco, a su vez formado por c´elulas, conocidas como cardiomiocitos, capaces de polarizarse y despolarizarse en cada ciclo card´ıaco para causar las contracciones que permiten el bombeo de sangre por el cuerpo. La se˜nal el´ectrica generada durante este proceso se puede captar mediante sensores colocados en la superficie del pecho o de las extremidades, el ECG consiste en la obtenci´on y representaci´on lineal del voltaje en funci´on del tiempo de la actividad el´ectrica card´ıaca captada mediante dichos sensores [111,114]. La se˜nal card´ıaca a menudo se puede encontrar referida como se˜nal PQRST, en la Figura 4.2 se puede encontrar una representaci´on de esta. 56 4.1. Obtenci´on del electrocardiograma (ECG) 4.1.1.1. Funcionamiento del coraz´on y la se˜nal card´ıaca El coraz´on est´a compuesto por cuatro c´amaras, siendo las dos superiores conocidas como aur´ıculas y las dos inferiores ventr´ıculos [114]. En la Figura 4.1 se pueden consultar una imagen de la fisiolog´ıa del coraz´on, donde RA (right atrium) y RV (right ventricle) son respectivamente la aur´ıcula y ventr´ıculo derechos. LA (left atrium) y LV (left ventricle) son la aur´ıcula y ventr´ıculo izquierdo. Respecto de la se˜nal card´ıaca, esta se puede interpretar de la siguiente forma [111,114]: La onda P es el resultado de la despolarizaci´on de la aur´ıcula. El complejo QRS es el correspondiente de la despolarizaci´on ventricular y marca el inicio de la contracci´on ventricular. La onda T se produce debido a la repolarizaci´on del ventr´ıculo. El intervalo QT se mide desde el principio del complejo QRS hasta el final de la onda T. Al final del ciclo card´ıaco se produce la se˜nal U, cuyo origen a´un no se tiene del todo claro, aunque existen varias teor´ıas entre las que apuntan a que es debida a un potencial de repolarizaci´on. A partir de la amplitud de las se˜nales anteriores y de la duraci´on de algunos segmentos de inter´es se puede realizar el diagn´ostico de multitud de anomal´ıas. Entre los segmentos que resulta de inter´es estudiar se tienen [111]: El intervalo temporal de los puntos P a Q corresponde con la trasmisi´on de impulsos el´ectricos a trav´es del nodo sinoauricular o nodo SA (Sinoatrial node), dicho de otra forma, el intervalo PQ se corresponde con el tiempo trascurrido desde la despolarizaci´on de la aur´ıcula hasta el comienzo de la despolarizaci´on ventricular. Esto va desde el comienzo de P hasta el inicio del complejo QRS. El intervalo QT se mide desde el final del complejo QRS, en el punto identificado como J, hasta el final de la onda T. El segmento ST se toma desde el final del complejo QRS hasta el comienzo de la onda T. El segmento de tiempo que va desde R al siguiente R, llamado intervalo RR, representa un ciclo card´ıaco y se emplea para el c´alculo del ritmo card´ıaco. Figura 4.1: Cavidades del coraz´on y conducci´on el´ectrica a trav´es de ´el [111]. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 57 Figura 4.2: Se˜nal card´ıaca con los intervalos y puntos de inter´es resaltados. El eje vertical representa voltaje, mientras que el horizontal es el tiempo [111]. 4.1.1.2. Adquisici´on de la se˜nal card´ıaca La instrumentaci´on usada para la adquisici´on de un ECG debe de trabajar a frecuencias bajas, en [114] se recomienda un ancho de banda de 0.5 a 150 Hz, aunque en la bibliograf´ıa se pueden encontrar varios rangos mencionados como adecuados para el filtrado paso banda de la se˜nal card´ıaca. Por ejemplo, en [115] se recomienda un filtrado paso banda en el rango de 0.1 a 100 Hz o uno paso baja con frecuencia de corte 30 Hz entre otros. Este filtrado es necesario para lidiar con multitud de interferencias provenientes de otros equipos m´edicos que se pueden encontrar presentes en la inmediaciones del paciente, las propias interferencias generadas por el resto de m´usculos, el ruido de la alimentaci´on (50 o 60 Hz), ruido causado por un mal contacto entre la piel y los sensores, etc [111,115]. La se˜nal del coraz´on se adquiere de manera diferencial entre dos puntos del cuerpo. De forma habitual, la adquisici´on ocurre en el brazo derecho (RA o right arm) e izquierdo (LA o left arm) y la pierna izquierda (LL o left leg). Estas posiciones se conocen como el tri´angulo de Einthoven. En la pierna derecha se a˜nade un electrodo que act´ua a modo de referencia para reducir el ruido de la medida. A continuaci´on, se exponen los pares que representan las tres posibles combinaciones para extraer la se˜nal del coraz´on de manera diferencial [114]: I = VLA - VRA II = VLL - VRA III = VLL - VLA Estas medidas est´an relacionadas entre ellas y de hecho se tiene que cumplir la condici´on de que II = I + III [114]. Existen varios m´etodos para la adquisici´on del ECG, siendo una de uso muy extendido la conocida como ECG de 12 derivaciones (o “12-lead ECG”) [116], la cual en adici´on a los sensores presentes en el tri´angulo de Einthoven a˜nade tambi´en varios puntos de adquisici´on en las costillas. Para este trabajo se utiliza la t´ecnica de 3 derivaciones (“3-lead”), el motivo de esta elecci´on es el hecho de que permite la obtenci´on de la se˜nal del coraz´on con no m´as de tres puntos de adquisici´on, a diferencia de la de 12 derivaciones que precisa de 12. Adem´as, esta ´ultima necesita de personal especializado y resulta muy aparatosa para una medida a obtener desde un dispositivo portable. En la t´ecnica de 3 derivaciones, como su nombre indica, se usan 3 electrodos. Dos de ellos son para la adquisici´on de la se˜nal diferencial y el tercero es la referencia. La medida de la se˜nal diferencial se realiza en las mu˜necas derecha (RA) e izquierda (LA) y la referencia se coloca en el tobillo derecho (RL). En resumen, se utiliza el primer par del tri´angulo de Einthoven. Tambi´en es posible acercar los puntos de medida al torso, tal y como se muestra en la Figura 4.4. En este ´ultimo caso, la se˜nal diferencial se toma por debajo de las clav´ıculas derecha e izquierda y la referencia se coloca en el extremo inferior izquierdo de las costillas (LL). 58 4.1. Obtenci´on del electrocardiograma (ECG) Figura 4.3: Tri´angulo de Einthoven. Se puede ver que las polaridades coinciden con la propagaci´on de la se˜nal el´ectrica proveniente del N´odulo sinoauricular mostrado en la Figura 4.1. Figura 4.4: Colocaci´on de electrodos en el torso para la realizaci´on de ECG seg´un la t´ecnica de 3 derivaciones [117]. 4.1.2. Sistema para la adquisici´on del ECG En este apartado se trata el firmware concreto desarrollado sobre el PSoC 5LP que permite la obtenci´on de la se˜nal card´ıaca haciendo uso de la t´ecnica de 3 derivaciones. Se ha planteado un sistema que adquiera la se˜nal del coraz´on durante, aproximadamente, 1 minuto. La PCB que incluye al dispositivo de procesamiento central ya dispone de todo el hardware que pudiera resultar necesario para el tratamiento de la se˜nal card´ıaca, por tanto, ´unicamente ser´a necesario conectar a los puertos de entrada del dispositivo los electrodos para la toma de las se˜nales provenientes del coraz´on. Usando los componentes disponibles en el interior del propio PSoC 5LP y el amplificador de instrumentaci´on INA333, se ha planteado el diagrama de bloques de la Figura 4.5 que representa el flujo para el tratamiento de la se˜nal diferencial. La se˜nal extra´ıda del cuerpo se ve afectada por varias fuentes de ruido [118,119]: Ruido de baja frecuencia conocido como baseline wander (BW) y que viene a estar causado de manera habitual por el movimiento y la respiraci´on de la persona sobre la que se est´an adquiriendo las medidas. Este ruido se suele encontrar en las frecuencias de 0.15 Hz a 0.3 Hz. Ruido de 50 o 60 Hz proveniente de la alimentaci´on, el cual tiene un ancho de banda de aproximadamente 1 Hz. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 59 Ruido de alta frecuencia causado por equipos electr´onicos cercanos. Profundizando en el diagrama de la Figura 4.5, el procesamiento sigue el siguiente orden: 1. Desde un puerto de entrada se reciben las dos componentes de la se˜nal diferencial captadas desde dos electrodos. Estas se pasan por dos amplificadores de ganancia programables (PGA) [121], disponibles en el interior del PSoC, en caso de que sea necesario a˜nadir amplificaci´on extra previa al INA333. En principio, se mantienen a ganancia 1, es decir, salvo que se indique lo contrario no amplifican la se˜nal previamente al amplificador de instrumentaci´on. 2. Se redirigen ambas componentes de la se˜nal card´ıaca desde el PSoC 5LP hacia el INA333 colocado de manera externa. Aqu´ı, a la componente proveniente del PGA1 se le resta la que sale del PGA2, el resultado se amplifica y se le a˜nade un cierto desplazamiento vertical u offset. El motivo de a˜nadir este offset es que, como se ver´a a continuaci´on, el ADC usado no tienen resoluci´on para valores de tensi´on negativos, con lo cual se a˜nade el desplazamiento de manera que todos los valores de tensi´on muestreados sean positivos. 3. La se˜nal amplificada se devuelve al PSoC 5LP, donde se ha usado un seguidor de tensi´on para desacoplar impedancias. 4. El ADC Delta-Sigma del PSoC muestrea la se˜nal y el resultado se pasa por un filtro paso baja para eliminar el ruido proveniente de componentes frecuenciales no deseadas. 5. Para acabar, las muestras de la se˜nal se env´ıan al m´odulo Bluetooth Low Energy mediante comunicaci´on UART, y desde este hac´ıa un dispositivo m´ovil con una aplicaci´on compatible para reconstruir las muestras, mostrarlas al usuario y almacenarlas. Dado que la m´axima cantidad de bits que se pueden transmitir mediante el bloque UART son 9 y las muestras que se est´an tomando son de 16 bits, para cada muestra se separan sus 8 bits m´as y menos significativos y se env´ıan por separado. M´as tarde, en la aplicaci´on Android, ambas partes se volver´an a unir para reconstruir la informaci´on. Adicionalmente, esta comunicaci´on se usa tambi´en para recibir ordenes desde la aplicaci´on. En el estado actual, desde la app se env´ıa la orden para comenzar a adquirir muestras. Figura 4.5: Esquema l´ogico seguido para la obtenci´on y transmisi´on de las se˜nales del ECG mediante el dispositivo de procesamiento central. El INA333 tiene una entrada de referencia (REF) que posibilita a˜nadir un offset a la salida. Dado que los componentes que se tiene el PSoC 5LP no son capaces de operar con valores de tensi´on negativos, se a˜nade este desplazamiento vertical con el pretexto de asegurar que todos los valores que lleguen al ADC sean positivos. El algoritmo tambi´en a˜nade un sistema de realimentaci´on a trav´es del electrodo de referencia para tratar de minimizar el efecto del ruido de modo com´un del amplificador. El objetivo de dicha realimentaci´on es introducir en el cuerpo la se˜nal de ruido con la amplitud invertida, de este modo al obtener la salida del amplificador el ruido de modo com´un se suma a ´el mismo pero con amplitud inversa, quedando te´oricamente suprimido. Esta secci´on sigue la siguiente l´ogica: 60 4.1. Obtenci´on del electrocardiograma (ECG) 1. Se dispone de un pin de entrada (Vcm) al PSoC 5LP, a trav´es del cual se capta la se˜nal de ruido de modo com´un del INA333. Esta se˜nal se localiza en el nodo existente entre los dos resistores que ajustan la ganancia del amplificador de instrumentaci´on, como ya se trat´o en el Cap´ıtulo 3. 2. La se˜nal de ruido se pasa por un amplificador inversor de ganancia 1, de modo que se obtiene la se˜nal de ruido com´un invertida. 3. La se˜nal obtenida en el amplificador se introduce en el cuerpo mediante el electrodo de referencia. En la Figura 4.6 se muestran los esquem´aticos desarrollados en PSoC Creator para la programaci´on del PSoC 5LP que implementan la l´ogica descrita en la Figura 4.5. Se procede en los subapartados a continuaci´on al estudio de la configuraci´on individual de los bloques m´as relevantes que componen el esquem´atico. En el Anexo B:Configuraci´on de los m´odulos en PSoC Creator se puede consultar la pesta˜na de configuraci´on de cada bloque en PSoC Creator. Por otra parte, en el Anexo Firmware usado en el PSoC 5LP se ha incluido el c´odigo C que se ha programado en el PSoC y que funciona en conjunto con los elementos a˜nadidos como bloques gr´aficamente. (a) P´agina 1. (b) P´agina 2. Figura 4.6: Esquem´atico de PSoC Creator para la interconexi´on de los componentes que implementan la adquisici´on y tratamiento de la se˜nal de coraz´on mediante un ECG. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 61 4.1.2.1. Configuraci´on: ADC Delta-sigma Se ha configurado el conversor anal´ogico-digital para que muestre a una velocidad de 2006 muestras/segundo. Seg´un el teorema de muestreo de Nyquist-Shannon, para que una se˜nal anal´ogica se puede digitalizar recuperando toda la informaci´on, se debe de muestrear a una frecuencia de al menos el doble del m´aximo componente en frecuencia de dicha se˜nal. En la pr´actica, debido al ruido y al empleo de filtros no ideales, se puede usar una frecuencia de muestreo de 5 o 10 veces m´as de la frecuencia de la se˜nal anal´ogica. El ADC no se puede configurar con menos de una frecuencia de 2006 muestras/segundo. Para evitar sobremuestreo, previamente a enviar la se˜nal al m´odulo BLE, se hace un diezmado de las muestras eliminando del vector que las almacena una de cada dos, con lo cual en la pr´actica la se˜nal recuperada va a estar muestreada a una frecuencia de aproximadamente 1000 muestras/segundo. Es relevante no sobremuestrear las se˜nales ya que se incrementa el espacio necesario para almacenar las muestras y los tiempos de transmisi´on. El rango de las frecuencias de muestreo que se pueden seleccionar est´a directamente relacionado con el n´umero de bits de la resoluci´on de ADC. En caso de incrementar el n´umero de bits se podr´ıa reducir el frecuencia de muestreo sin tener que eliminar a posteriori una de cada dos muestras. Sin embargo, la resoluci´on extra que se consigue no es realmente necesaria y por contra incrementa tambi´en los tiempos de transmisi´on y el espacio ocupado por la se˜nal digitalizada. Adicionalmente, el ADC se ha configurado de manera rail-to-rail, esto quiere decir que el rango de valores que puede muestrear se encuentra comprendido entre sus niveles de alimentaci´on, en este caso de 0 a 3.3 V. Sin embargo, no es habitual que los ADCs lleguen hasta los valores m´aximos y m´ınimos te´oricamente posibles. En su lugar, en muchas ocasiones no son capaces de muestrear estos valores tan extremos. Como se puede consultar en la Figura B.1, PSoC Creator indica que en la pr´actica el ADC s´olo es capaz de muestrear valores que se encuentren aproximadamente 250 mV por debajo del valor de alimentaci´on y 100 mV por encima del m´ınimo. La resoluci´on del ADC es de 16 bits, con lo cual se pueden tener 216 −1 valores distintos de tensi´on medidos sin contar el cero. Resolviendo por tanto cual es la tensi´on m´ınima que causa un incremento en 1 bit del valor digitalizado, que viene a ser lo mismo que la sensibilidad del ADC, se obtiene: Sensibilidad ADC =Vmax −Vmin 2n−1=3.3−0 216 −1= 50.35477 ∗10−6V= 50.35477 µV (4.1) Para acabar, el modo de conversi´on continuo que se puede leer en la Figura B.1, viene a referirse a que el ADC se configura para muestrear una ´unica se˜nal de entrada de manera constante desde el momento en que se indica al ADC que comience a operar. A la salida del conversor se ha colocado un bloque conocido como DMA (Direct Memory Access). Este se utiliza para transmitir datos desde o hacia la memoria RAM, los componentes internos del PSoC como lo son el propio ADC o registros. En este caso se utiliza para enviar los bytes de salida del conversor hacia el filtro digital. 4.1.2.2. Configuraci´on: Filtros digitales Se utilizan dos filtrados digitales. Ambos reciben como entrada la se˜nal digitalizada a la salida del ADC, uno de ellos se emplea para la realimentaci´on a trav´es de la referencia y el otro para eliminar ruido de alta frecuencia de la se˜nal que contiene al ECG previamente a transmitirla a trav´es del m´odulo BLE. Identificamos respectivamente estos filtros como canal A y canal B. A continuaci´on, se trata la configuraci´on de cada uno, esta informaci´on tambi´en se puede consultar en las Figura B.2. Filtro A: Se configura como un filtro paso baja de Butterworth de orden 1, con una frecuencia de corte de 0.5 Hz. La salida de este filtro se env´ıa al conversor digital-anal´ogico de 8 bits, “VDAC8 1”, de la Figura 4.6. 62 4.1. Obtenci´on del electrocardiograma (ECG) Filtro B: Se trata de un filtro paso baja de Bessel de orden 4 y con frecuencia de corte de 35 Hz. La salida de este filtro se transmite mediante comunicaci´on UART al m´odulo BLE para su env´ıo. A la salida del filtro se colocan dos DMAs, los cuales tienen el prop´osito de: DMA2: Es el encargado de mover las muestras filtradas extra´ıdas del canal A del filtro al conversor digital-anal´ogico. Este valor es el que indica el nivel de tensi´on DC a generar en el convertidor. DMA3: Se emplea en enviar las muestras a memoria RAM para que se almacenen en vectores desde los que poder operar con ellas. Este DMA tiene una interrupci´on asociada en el punto “nrq”, de forma que cuando env´ıe el n´umero indicado de bytes, en este caso 4000 bytes, se genera una interrupci´on. Esto da lugar a que se llene un vector de 2000 posiciones de 2 bytes cada una. 4.1.2.3. Configuraci´on: UART Como ya se ha comentado, para poder transmitir la informaci´on de cada muestra tomada en dos bloques distintos, se ha configurado que el UART transmita grupos de 8 bits con una velocidad de 115200 bits/segundo. Dado que el mismo bloque se emplean para la transmisi´on y recepci´on de informaci´on, se ha seleccionado el modo de operaci´on Full UART. En caso de usarse el modo Half Duplex tambi´en se podr´ıan realizar ambas operaciones aunque con menos recursos disponibles, con lo cual habr´ıa que transmitir la informaci´on en paquetes de 4 bits [58]. La entrada del bloque UART “rx interrupt” permite que salte una interrupci´on cuando se reciban instrucci´on desde la aplicaci´on. La pesta˜na de configuraci´on del bloque UART se puede encontrar tambi´en en la Figura B.3. 4.1.3. Electrodos usados para la adquisici´on de la se˜nal Los parches que se han utilizado para la adquisici´on de la se˜nal en bruto del ECG son el modelo “BlueSensor L” fabricados por Ambu. Estos sensores de un ´unico uso cuentan con gel conductor para la toma adecuada de la se˜nal y conectores que permiten llevar esta hacia el dispositivo de procesamiento. En cuanto a las dimensiones, el ´area de contacto con la piel tiene un di´ametro de aproximadamente 55 mm [120]. Figura 4.7: Sensor BlueSensor L usado para la adquisici´on del ECG [120]. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 63 4.2. Obtenci´on del nivel de saturaci´on de oxigeno Se ha desarrollado un kit de expansi´on para la obtenci´on del nivel de ox´ıgeno en sangre mediante t´ecnicas de fotopletismograf´ıa. En esta parte del cap´ıtulo se estudia que es la fotopletismograf´ıa y se trata el dise˜no y la construcci´on de un pulsiox´ımetro que permita la adquisici´on de la saturaci´on de ox´ıgeno en sangre y del ritmo card´ıaco. Aunque en el apartado Campos de aplicaci´on y par´ametros extra´ıbles de manera no invasiva del Cap´ıtulo 1 ya se hizo una breve menci´on de la fotopletismograf´ıa o PPG (photoplethysmography), en esta secci´on se tratan en m´as profundidad los conceptos relacionados con esta t´ecnica no invasiva. 4.2.1. Fundamento te´orico del la fotopletismograf´ıa Cuando se transmite una luz a trav´es de un tejido blando del cuerpo humano, una parte se absorber´a, otra se ver´a reflejada y el restante atravesar´a la zona incidida. El PPG consiste en, mediante un fotodetector, medir la intensidad de luz obtenida, a partir de este valor se puede extraer, por ejemplo, la saturaci´on de oxigeno en sangre o el ritmo card´ıaco que son los par´ametros que nos resultan de inter´es en este trabajo. Seg´un la zona del cuerpo donde se vaya a tomar la medida, se busca adquirir o bien la cantidad reflejada o bien la que se ha transmitido a trav´es del tejido. En el caso de que la medida se tome en la punta de los dedos o el l´obulo de la oreja se adquiere la transmisi´on, mientras que en el resto de partes del cuerpo se mide la cantidad reflejada. En la Figura 4.8 se muestra como se colocar´ıan el transmisor y el receptor seg´un si se adquiere la transmisi´on o la reflexi´on. En este proyecto se tiene especial inter´es en usar t´ecnicas para la adquisici´on de la reflexi´on, dado que se pretende tomar la medida en las mu˜necas, tal y como suelen hacer los dispositivos de actividad comerciales. Para la transmisi´on se suelen emplear LEDs (light emitting diodes) y para la recepci´on fotodiodos [24]. Figura 4.8: Colocaci´on del fotodiodo usado a medo de receptor seg´un si se quiere medir la cantidad de luz transmitida o reflejada. Aquella longitud de onda para la cual la intensidad del LED es m´axima se identifica como la longitud de onda de pico (λp). Seg´un el par´ametro del cuerpo a medir se seleccionan una o varias longitudes de onda diferentes. En los apartados siguientes se tratan los pormenores de las t´ecnicas para adquisici´on del ritmo card´ıaco y de la saturaci´on de oxigeno. 4.2.1.1. Medida de la saturaci´on de oxigeno en sangre Cuando se desea conocer el nivel de saturaci´on de ox´ıgeno en sangre se utiliza la t´ecnica conocida como pulsioximetr´ıa. En este m´etodo se emplean dos LEDs, uno de ellos emitiendo a 660 nm (luz roja) y otro a 940 nm (infrarrojo) y se va alternando de manera secuencial el uso de uno u otro [24], esto viene a referirse a que se tiene que producir una multiplexaci´on entre las dos luces incidentes, ya que no es posible obtener medidas correctas con ambas en funcionamiento de manera simultanea. La utilizaci´on de dos longitudes de onda se debe a que tal y como se muestra en la Figura 4.9, la absorci´on lum´ınica de la sangre var´ıa seg´un si se encuentra oxigenada o no. La hemoglobina oxigenada (HbO2) tiene una menor absorci´on de luz para longitudes de onda correspondientes a luz roja, mientras que es mayor para longitudes de onda del rango de los infrarrojos. 70 4.2. Obtenci´on del nivel de saturaci´on de oxigeno Se utilizan los LEDs rojo e IR y el fotodiodo de banda ancha, ya que su rango de operaci´on incluye las dos longitudes de onda de inter´es. En la Figura 4.16 se puede consultar la corriente generada por dicho fotodiodo seg´un la intensidad y la longitud de onda de la luz incidente. De manera t´ıpica, si la luz incidente es roja la corriente generada tiene una intensidad de 0.6 µA, mientras que si esta es IR la intensidad es de 1.1 µA. El LED rojo necesita una diferencia de tensi´on de 2.1 V entre su ´anodo y c´atodo para estar polarizado y es capaz de resistir hasta 40 mA de corriente, mientras que el infrarrojo necesita una diferencia 1.3 V y resiste hasta 60 mA. De la hoja t´ecnica del m´odulo [127] se extrae que las corrientes que atraviesan a los LEDs para el comportamiento t´ıpico, son de 20 mA. Se ha tratado de elegir resistencias de polarizaci´on que fuercen una corriente de entorno a este valor. Dado que durante las pruebas que se ha realizado se ha alimentado al SFH7072 con una fuente de 5 V, cada uno de los LEDs se polariza mediante una resistencia de 220 Ω en serie, como se ha representado en la Figura 4.15. Esto proporciona una corriente algo menor a 20 mA, con lo cual los LEDs lucir´an con menor intensidad, aunque es m´as que suficiente para adquirir las medidas. Para el prototipo construido en este trabajado, el integrado SFH7072 se encuentra montado sobre el m´odulo ILE-BI01-GGRIRICBD-SC201. Este ´ultimo no es m´as que un soporte que permite acceder a los pines del SFH7072 mediante pines macho-macho o macho-hembra. En la Figura 4.17 se ha incluido una imagen de este m´odulo. Figura 4.16: Corrientes generadas por el fotodiodo de banda ancha del SFH7072 seg´un la intensidad y longitud de onda de la luz incidente. Cr´editos: [127]. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 71 Figura 4.17: M´odulo ILE-BI01-GGRIRICBD-SC201, en el centro de ´el se encuentra el chip SFH7072. Cr´editos: [128]. 4.2.2.2. Configuraci´on: Conversor V-I Para la conversi´on de la corriente generada en el fotodiodo a una se˜nal de tensi´on, se una un amplificador de transimpedancia o TIA (Transimpedance Amplifier). Se tiene una resistencia (Rf) que es la que permite el control de la transformaci´on a voltaje mediante la relaci´on: Vout =If∗Rf(4.7) Donde Ifrepresenta la corriente emitida desde el fotodiodo (fotocorriente) cuando este recibe luz incidente en un momento determinado y cuya polaridad depende de la orientaci´on del fotodiodo. Hay que tener en cuenta que los fotodiodos reales no se comportan como fuentes de corriente ideales, si no que tienen una capacitancia par´asita de valor Ctcomo se muestra en la Figura 4.18. Es importante compensar este elemento reactivo para logra un correcto funcionamiento del TIA, para lo cual se a˜nade un condensador (Cf) en paralelo a la resistencia Rf. En caso de no seleccionar el valor del condensador de compensaci´on de manera adecuada, se puede dar el caso de que el circuito oscile o sea m´as ruidoso [24,129]. Figura 4.18: Sistema equivalente de un fotodiodo real. En la Figura 4.19 se muestra el diagrama de Bode ganancia del amplificador operacional en lazo abierto (curva AVOL), es decir, cuando s´olo se encuentra el amplificador sin m´as componentes presentes y el del sistema de realimentaci´on con su funci´on de transferencia invertida (1/β), donde este ´ultimo es el sistema formado por el diodo, su capacitor par´asito Cfy la resistencia Rf. El valor 1/βse mantiene aproximadamente constante a valor 1 a bajas frecuencias hasta que alcanza la “frecuencia de esquina” (fcorner o fF), a partir de cuyo instante tiene un crecimiento en ganancia de 20 dB/dec. En la ecuaci´on 4.8 se puede consultar la funci´on de transferencia del sistema de realimentaci´on [129]. β(s) = XCt ZF+XCt =1 1 + sRfCt (4.8) 72 4.2. Obtenci´on del nivel de saturaci´on de oxigeno Cuanto mayor sea el ritmo al que las dos curvas se aproximen una a la otra, mayor ser´a la inestabilidad del sistema. En el caso representado en la Figura 4.19, ambas curvas se aproximan a una velocidad de 40 dB/dec, lo que hace que el sistema sea inestable. El condensador de compensaci´on (Cf) permite aplanar la respuesta de 1/β, haciendo que el sistema se estabilice. Se consigue una compensaci´on ´optima si el cero que a˜nade Cfcoincide con la frecuencia de corte entre las dos curvas (fiointercept frequency). Caso de que se use un condensador m´as grande de lo necesario, se dice que el sistema se encuentra sobrecompensado, en cuyo caso este sigue siendo estable, pero se reduce el ancho de banda del sistema. En la Figura 4.20 en caso de a˜nadirse un condensador para estabilizar el sistema. Para el c´alculo del valor del condensador ´optimo, se puede recurrir a la expresi´on 4.9 [129]: Cf=1 + p1+8πRfCifGBW P 4πRffGBW P (4.9) Donde fGBWP es el ancho de banda del amplificador operacional en ganancia unitaria, dicho de otra forma, la frecuencia a la que la respuesta en ganancia del amplificador sufre una ca´ıda de -3 dB. Por otra parte, Cirepresenta la capacidad par´asita del fotodiodo (Ct) en paralelo con la capacidad de entrada del amplificador operacional [130]. Ci=Ct+Cin(AmpOp)(4.10) Figura 4.19: Diagrama de Bode de un amplificador de transimpedancia gen´erico sin condensador Cfque asegure la estabilidad del circuito. Cr´editos: [129]. Figura 4.20: Diagrama de Bode de un amplificador de transimpedancia gen´erico con condensador de compensaci´on (Cf). Cr´editos: [129]. En la Figura 4.21 se muestra la configuraci´on de un amplificador de transimpedancia gen´erico. N´otese que tambi´en es posible utilizar este circuito invirtiendo la orientaci´on del fotodiodo. En este caso se ha elegido esta orientaci´on ya que el ADC utilizado s´olo tiene resoluci´on para valores positivos de tensi´on. Dise˜no firmware y hardware para la obtenci´on de adquisiciones 73 Figura 4.21: Esquema de un amplificador de transimpedancia gen´erico. El fotodiodo se encuentra orientado de manera que la tensi´on de salida sea positiva. Dado que las frecuencias de inter´es en este caso son relativamente peque˜nas, el ancho de banda no es un factor limitante, con lo cual no resulta cr´ıtico que el sistema se sobrecompense. Este factor, unido al hecho de que no se conoce el ancho de banda del amplificador integrado en el interior del PSoC 5LP, ha hecho que se elija el mayor valor de Cfdisponible en el TIA, el cual viene a ser 4.6 pF. Se ha escogido tambi´en el mayor valor de resistor Rfposible con la intenci´on de cubrir el m´aximo rango del ADC, en este caso 1 MΩ [131]. Con lo cual, en caso de que se recibiese la corriente proveniente del fotodiodo IR o rojo, en funci´on del valor m´aximo de corriente que genera cada uno, la tensi´on m´axima del TIA ser´ıa para ambos casos: Vout,IR =If∗Rf= 1.1µA ∗106Ω=1.1V Vout,RED =If∗Rf= 0.6µA ∗106Ω=0.6V(4.11) Mediante la entrada de referencia del bloque del TIA se ha introducido un offset de 0.256 V, ya que el ADC no tiene en resoluci´on para valores de tensi´on cercanos a los l´ımites de alimentaci´on. A˜nadiendo este desplazamiento nos aseguramos de que todo el rango de valores pueda ser muestreado. 4.2.2.3. Configuraci´on: ADC Delta-Sigma Para el muestreo de los datos se ha utilizado un conversor anal´ogico-digital Delta-Sigma, manteniendo la misma configuraci´on que la empleada para la adquisici´on del ECG en el apartado Sistema para la adquisici´on del ECG de este mismo cap´ıtulo. Referirse a este apartado para consultar los pormenores de la configuraci´on. Hay que tener en cuenta que nuevamente se ha sobremuestreado la se˜nal, debido a que en esta ocasi´on lo que se va a transmitir mediante comunicaci´on Bluetooth es ´unicamente el resultado final (R), no es necesario emplear ning´un diezmado de los datos. A la salida del ADC se ha colocado un DMA para transmitir los bytes obtenidos al filtro digital. 4.2.2.4. Configuraci´on: Filtro paso baja En [24] se recomienda que la frecuencia de corte del filtrado paso baja se encuentre en el rango de los 10 a los 40 Hz. Se ha escogido un filtro Butterworth de orden 4 con frecuencia de corte de 10 Hz. La salida del filtro se env´ıa a la memoria RAM mediante un DMA para hacer los c´alculos correspondientes a partir de las muestras. Adem´as, cada vez que el filtro env´ıa una cierta cantidad de bits, se activa una interrupci´on. Conociendo la frecuencia de muestreo se puede extraer que tiempo ha transcurrido a partir de la cantidad de bytes transmitidos. Se utiliza este procedimiento para 74 4.2. Obtenci´on del nivel de saturaci´on de oxigeno que al transcurrir 4 segundos se permuten los LEDs encendido y apagado, estando en funcionamiento el sistema 8 segundos en total aproximadamente. Se ha configurado que la interrupci´on se produzca cada vez que se env´ıen 4000 bytes, teniendo en cuenta que el ADC obtienen las muestras con una precisi´on de 16 bits (2 bytes) a una frecuencia de 2000 muestras/segundo, esto supone que la interrupci´on se produce aproximadamente cada 1 segundo. 4.2.2.5. Compensaci´on de la fluctuaci´on en las medidas Varias medidas seguidas en la misma zona del dedo en un instante temporal dado, pueden dar como resultado un valor de SpO2que oscila entorno a un valor central, lo cual se puede deber a factores tales como ruido externo, el artefacto del movimiento o incluso la presi´on ejercida sobre el propio sensor [132]. Para compensar este hecho, se a˜nade a la salida una realimentaci´on de los resultados previos utilizando la siguiente expresi´on: R= 0,8∗RActual + 0,2∗RAnterior (4.12) Donde RActual es el ratio de absorci´on que se ha obtenido en el instante temporal actual y RAnterior es el ratio que se obtuvo en la medida previa. Esto hace que hasta que no se han calculado varios valores de R, la medida no se estabilice. Cap´ıtulo 5 Dise˜no de aplicaci´on compatible en Android Se ha dise˜nado una aplicaci´on para smartphones basados en el sistema operativo Android. El objetivo de esta es controlar el funcionamiento de la parte f´ısica de proyecto, en concreto cuando se toman una nueva adquisici´on. Adem´as de mostrar los resultados obtenidos y almacenarlos para poder ser consultados en el futuro u operar con ellos desde otro software como lo puede ser MATLAB o incluso Python. La aplicaci´on en s´ı est´a programada en el lenguaje Java. La aplicaci´on esta enfocada para su uso en la adquisici´on de la se˜nal del coraz´on mediante un ECG, con lo cual todos los m´etodos dise˜nados est´an enfocados a esta medida en espec´ıfico. En este cap´ıtulo se puede encontrar la informaci´on relevante a dicha app, habi´endose organizado esta de la siguiente manera: El diagrama se flujo que sigue la aplicaci´on se ha comentado en Diagrama de flujo de la aplicaci´on. En la secci´on Actividades y apartado gr´afico se trata como se presenta la aplicaci´on de manera gr´afica al usuario, las actividades Android que se han incluido y el manifiesto de la app. En C´odigo Java se discute el c´odigo fuente de la aplicaci´on. Aqu´ı se puede encontrar en que archivos se ha dividido el c´odigo java y un resumen de algunos de los m´etodos m´as importantes. En este cap´ıtulo se han incluido ´unicamente algunas secciones del c´odigo Java, en el Anexo D:C´odigo fuente de la aplicaci´on Android se puede encontrar el c´odigo fuente completo. 5.1. Diagrama de flujo de la aplicaci´on En la Figura 5.1 se puede consultar el diagrama de flujo seguido por la aplicaci´on. En primer lugar, se verifica que el dispositivo sobre el que est´a instalada la app es compatible con el Bluetooth LE y que el usuario ha concedido todos los permisos necesarios para el funcionamiento de la misma. Cuando se presione el bot´on para acceder a la acci´on de conectarse a un dispositivo, se mostrar´a una lista con todos los equipos con conexi´on BLE presentes al alcance. Hay que tener en cuenta, que s´olo es posible establecer conexi´on con el dispositivo f´ısico desarrollado en este trabajo. No se lograr´a habilitar una comunicaci´on caso de tratar de usar la app con un sistema distinto. Cuando se consigue la comunicaci´on, se le indica al usuario mediante un mensaje en el parte superior de su pantalla. En este caso se muestra la ventana donde se pueden solicitar adquisiciones y consultar la ´ultima recibida. Si no se solicita una adquisici´on, el sistema se encuentra a la espera en esta pantalla. Cuando se solicite una medida, el sistema no mostrar´a el resultado hasta que haya pasado todo tiempo de adquisici´on configurado en el dispositivo f´ısico. 76 5.1. Diagrama de flujo de la aplicaci´on Figura 5.1: Diagrama de flujo de la aplicaci´on desarrollada en Android. Dise˜no de aplicaci´on compatible en Android 77 5.2. Actividades y apartado gr´afico En este apartado se pueden consultar las distintas actividades que se han dise˜nado para la aplicaci´on. En Android las acciones que el usuario puede realizar con una aplicaci´on se dividen en diversas ventanas, que pueden o bien ocupar la pantalla completa o bien permanecer flotantes sobre otra. Podr´ıamos definir en este contexto una actividad como la ventana sobre la cual la aplicaci´on dibuja una interfaz gr´afica para un funcionalidad concreta. Por poner un ejemplo, la actividad principal es la ventana que el usuario visualiza cuando accede por primera vez a la aplicaci´on, pudi´endose tratar esto del men´u principal o similar [133]. Se han dise˜nado tres actividades, la primera es el men´u principal de la aplicaci´on, el cual permite acceder al resto de actividades o cerrar la app. La segunda se utiliza para escanear los dispositivos disponibles y solicitar conexi´on al indicado. Para acabar, se tiene una ventana que permite visualizar los resultados provenientes dispositivo vestible y ordenar que se tomen nuevas medidas. Estas tres se pueden consultar en la Figura 5.2. Para configurar el apartado gr´afico de la aplicaci´on, y con esto nos venimos a referir a la colocaci´on de pulsadores y otros elementos as´ı como el aspecto visual de estos, se emplean archivos de configuraci´on en formato XML. El qu´e y c´omo se deben de mostrar estas pesta˜nas se ha desarrollado de manera gr´afica, y la informaci´on relativa a cada caso ha quedado almacenada en tres archivos XML generados autom´aticamente por Android Studio. En caso de desearse, tambi´en se pueden editar directamente el texto de estos archivos para modificar aspecto visuales de la app. A continuaci´on, se muestra como ejemplo el texto descriptivo XML generado para configurar el men´u principal, caso de que se desee se pueden encontrar todos los dem´as en los anexos del trabajo. (a) Men´u principal. (b) Listado de dispositivos Bluetooth a los que solicitar conexi´on. El dispositivo denominado “BLE Serial” es el desarrollado en este trabajo. (c) Actividad que muestra los resultados obtenidos en el dispositivo vestible y que permite solicitar la toma de nuevas medidas. Figura 5.2: Men´us y actividades de la aplicaci´on dise˜nada con Android Studio 78 5.2. Actividades y apartado gr´afico 1<? xml version = "1.0 " encoding = "utf -8 "? > 2< androidx . cons train tlayo ut . widget . C onstr aintL ayout xmlns : android =" http :// schemas . android . com / apk / res / android " 3xmlns : app =" http :// schemas . android . com / apk /res - auto " 4xmlns : tools = " http :// schemas . android . com / tools " 5android:layout_width="match_parent" 6android : layout_height =" match_parent " 7android : background = " @color / divider " 8tools : context =". presentation . MainActivity "> 9 10 11 <Button 12 android : id ="@ +id / main_ menu_butto n_1 " 13 android : layout_width = "250 dp " 14 android : layout_height =" wrap_content " 15 android : layout_marginTop =" 228 dp " 16 android : onClick =" conectar " 17 android:text="@string/connect" 18 app : l ayo ut_ con straintE nd_ toE ndO f =" parent " 19 app:layout_constraintHorizontal_bias="0.497" 20 app:layout_constraintStart_toStartOf="parent" 21 app : l ayo ut_ con straintT op_ toT opO f =" parent " /> 22 23 <Button 24 android : id ="@ +id / main_ menu_butto n_2 " 25 android : layout_width = "0 dp " 26 android : layout_height =" wrap_content " 27 android : layout_marginTop =" 8dp " 28 android : onClick =" co nfigura cion " 29 android : text =" @string / config " 30 app : layout_constraintEnd_toEndOf ="@+ id / main_menu_button_1 " 31 app:layout_constraintHorizontal_bias="0.0" 32 app : layout_constraintStart_toStartOf ="@+id / main_menu_button_1 " 33 app : layout_constraintTop_toBottomOf ="@+ id / main_menu_button_1 " /> 34 35 <Button 36 android : id ="@ +id / main_ menu_butto n_3 " 37 android : layout_width = "0 dp " 38 android : layout_height =" wrap_content " 39 android : layout_marginTop =" 8dp " 40 android : layout_marginBottom ="46 dp " 41 android : onClick =" data " 42 android : text =" @string / ex tract _meas ures " 43 app : layout_constraintBottom_toTopOf ="@+ id / main_menu_button_4 " 44 app : layout_constraintEnd_toEndOf ="@+ id / main_menu_button_2 " 45 app:layout_constraintHorizontal_bias="0.0" 46 app : layout_constraintStart_toStartOf ="@+id / main_menu_button_2 " 47 app : layout_constraintTop_toBottomOf ="@+ id / main_menu_button_2 " /> 48 49 <Button 50 android : id ="@ +id / main_ menu_butto n_4 " 51 android : layout_width = "0 dp " 52 android : layout_height =" wrap_content " 53 android : layout_marginTop =" 24 dp " 54 android : onClick =" salir " 55 android : text =" @string / button_exit " 56 app : layout_constraintEnd_toEndOf ="@+ id / main_menu_button_3 " 57 app : layout_constraintStart_toStartOf ="@+id / main_menu_button_3 " 58 app : layout_constraintTop_toBottomOf ="@+ id / main_menu_button_3 " /> 59 60 </ androidx . co nstra intl ayout . widget . ConstraintLayout > Listing 5.1: Texto descriptivo XML para dise˜no de la actividad del men´u principal. 5.2.1. Manifiesto C´omo ya se describi´o en la secci´on Android Studio del Cap´ıtulo 1, las aplicaciones en Android incluyen un manifiesto, llamado “AndroidManifest.xml”, necesario para declarar los permisos, las actividades, las funcionalidades software yhardware necesarias, etc. Hay que tener en cuenta, que seg´un la versi´on de Android sobre la que se instale la aplicaci´on, la app se puede ver sometida a diferentes restricciones y por tanto, cambian los permisos a solicitar. Principalmente, se producen cambios de seguridad significativos a partir de Android 11 (nivel de API 30) respecto de versiones anteriores del SO. Se ha intentado que la aplicaci´on sea, en la medida de lo posible, compatible con versiones anteriores y posteriores a Android 11 [134,135]. A continuaci´on, se muestra el manifiesto de la aplicaci´on creada: Dise˜no de aplicaci´on compatible en Android 79 1<? xml version = "1.0 " encoding = "utf -8 "? > 2< manifest xmlns : tools =" http :// schemas . android . com / tools " 3xmlns : android =" http :// schemas . android . com / apk / res / android " > 4 5<uses - permission android : name =" android . permission . BLUETOOTH " 6android : ma xSdkVersion =" 30 "/> 7<uses - permission android : name =" android . permission . BLUET OOTH_AD MIN " 8android : ma xSdkVersion =" 30 "/> 9<uses - permission android : name =" android . permission . BLUETOOTH_CONNEC T " /> 10 <uses - permission android : name =" android . permission . BLUETOOTH _SCAN " /> 11 <uses - permission android : name =" android . permission . ACCESS_C OARS E_LO CATI ON " /> 12 <uses - permission android : name =" android . permission . ACCES S_FI NE_L OCAT ION " /> 13 <uses - permission android : name =" android . permission . BLUETOOTH " android : maxSdkVersion =" 30 " /> 14 <uses - permission android : name =" android . permission . WRITE_EX TERN AL_S TORA GE " /> 15 <uses - feature android : name =" android . hardware . bluetooth_le " android : required =" true "/> 16 17 <application 18 an droi d : al lowBac kup = " true " 19 android : icon =" @mipmap / ic_launcher " 20 android:label = " @string / app_name " 21 android : roundIcon = " @mipmap / ic _launc her_r ound " 22 an droi d : su pports Rtl = " true " 23 android : theme =" @style / Theme . FisoApp " > 24 25 <service 26 android : name =". services . Bl uetoot hLeService " 27 android : enabled =" true " 28 android : exported =" true " /> 29 <activity 30 android : name =". presentation . ScanActivity " 31 android:label = " Dispositivos Disponibles " /> 32 <activity 33 android : name =". presentation . ConnectedActivity " 34 android:label = " EMG Scan " /> 35 <activity 36 android : name =". presentation . MainActivity " 37 android : exported =" true " 38 android:label = " @string / app_name " 39 android : theme =" @style / Theme . FisoApp . NoActionBar " > 40 <intent - filter > 41 < action android : name =" android . intent . action . MAIN " / > 42 < category android : name =" android . intent . category . LAUNCHER " / > 43 </ intent - filter > 44 </activity > 45 </application > 46 </manifest > Listing 5.2: Manifiesto de la aplicaci´on. 5.3. C´odigo Java El c´odigo fuente de la aplicaci´on, escrito en el lenguaje Java, se ha dividido en varios ficheros. En esta secci´on se va a tratar que funcionalidad implementa cada uno de ellos. Acquisition.java GattAttributes.java ConnectedActivity.java MainActivity.java ScanActivity.java BluetoothLeService.java “GattAttributes.java” guarda los UUID (Universally Unique Identifier) o identificador ´unico universal) del servicio del dispositivo vestible para acceder f´acilmente a ellos. Por otra parte, “BluetoothLeService” es un servicio que gestiona la comunicaci´on Bluetooth LE. Los archivos “ConnectedActivity.java”, “MainActivity.java” y “ScanActivity.java” sintetizan las tres actividades representadas en la Figura 5.2. En los siguientes subapartados se estudian estos tres con m´as detalle. Cap´ıtulo 6 Resultados y adquisiciones En este cap´ıtulo se tratan las medidas que se han conseguido obtener usando el dispositivo de procesamiento central junto con los dise˜nos hechos en el Cap´ıtulo 4:Dise˜no firmware y hardware para la obtenci´on de adquisiciones. En la secci´on Adquisiciones ECG se pueden consultar los resultados conseguidos mediante el electrocardiograma, mientras que en Adquisiciones SpO2se pueden consultar las medidas del porcentaje de saturaci´on de ox´ıgeno. 6.1. Adquisiciones ECG En esta secci´on se trata las se˜nales medidas del ECG, as´ı como el postprocesado que se ha hecho en Matlab. Hay que tener en cuenta que las muestras tomadas tienen un nivel de ruido considerable superpuesto a ellas, debido a que al tomarse todas las medidas en uno de los laboratorios de la Universidad de Granada exist´ıan multitud de equipos electr´onicos, presentes tanto la propia habitaci´on como en laboratorios contiguos, lo que a˜nade una cantidad de EMI considerable a los resultados. En la Figura 6.1 se puede consultar la se˜nal que se extrae directamente del CSV generado por la aplicaci´on Android. Tal y como se muestra en la representaci´on temporal de la se˜nal, se tiene superpuesta una se˜nal sinusoide de 50 Hz de amplitud considerable. Esto se puede encontrar tambi´en en el espectro de la se˜nal, el cual se representa en la Figura 6.4. Para eliminar dicho ruido se dise˜nal un filtro de Notch, tambi´en llamado filtro ranura, con la intenci´on de eliminar ´unicamente esta banda de frecuencia particular. En primer lugar se ha intentado conseguir el filtrado mediante un filtro de 2 º orden, cuyo resultado se puede consultar en la Figura 6.2. Al considerarse este como insuficiente, se ha probado tambi´en a realizar el filtrado haciendo uso de un filtro de 6 º orden. En la Figura 6.3 se pueden consultar los resultados, donde adem´as se han resaltado, para este caso, los puntos de inter´es de la se˜nal card´ıaca que ya se mencionaron en la secci´on Fundamento te´orico del ECG del cap´ıtulo Dise˜no firmware y hardware para la obtenci´on de adquisiciones. Los espectros de frecuencia para los tres casos mencionados se pueden visualizar en las Figuras 6.4,6.5 y6.6. Ambos Notch se han dise˜nado como filtros IIR, ya que de dicha forma se consigue una mayor atenuaci´on con un menor orden del filtro. Adicionalmente, se ha configurado que el ancho de banda de la banda suprimida sea de 1 Hz. Los coeficientes de los dos filtros se han obtenido utilizando funcionalidades integradas de Matlab. El ritmo normal del coraz´on en reposo se encuentra en el rango de 60 a 100 pulsaciones por minuto, tambi´en llamadas BPM (Beats Per Minute). Resulta sencillo extraer este valor a partir de la se˜nal del ECG. Para ello, se comienza extrayendo los instantes en los que se dan el primer y ´ultimo pico R de la se˜nal card´ıaca. A continuaci´on, se restan ambos valores de tiempo, teniendo en cuenta que ambos se encuentran en unidades de segundos, el resultado de esta operaci´on se le divide a la cantidad de picos R detectados. El resultado nos proporciona las pulsaciones por segundo, con lo cual solo hay que multiplicar por 60 segundos para conocer el ritmo card´ıaco en unidades de pulsaciones/minuto. 88 6.1. Adquisiciones ECG BPM =N◦de picos R Instante primer pico −Instante ´ultimo pico ∗60 (6.1) Por poner un ejemplo, se ha calculado que la se˜nal card´ıaca representada en la Figura 6.3 tiene una frecuencia de aproximadamente 76 pulsaciones/minuto. En la secci´on Script de Matlab se puede consultar el script empleado para el tratamiento de las muestras y el c´alculo del BPM. Figura 6.1: Espectro de la se˜nal del ECG sin filtrado. Figura 6.2: Se˜nal del coraz´on aplicando un filtro de Notch a 50 Hz de 2 º orden. Resultados y adquisiciones 89 Figura 6.3: Se˜nal del coraz´on aplicando un filtro de Notch a 50 Hz de 6 º orden, donde adicionalmente se ha resaltado el complejo PQRST. Figura 6.4: Espectro de la se˜nal del ECG sin filtrado. 90 6.1. Adquisiciones ECG Figura 6.5: Espectro de la se˜nal del ECG con filtro de Notch de 2 º orden. Figura 6.6: Espectro de la se˜nal del ECG con filtro de Notch de 6 º orden. 6.1.1. Script de Matlab En esta secci´on se puede consultar el script de Matlab empleado para la representaci´on gr´afica de la se˜nal card´ıaca y su filtrado de la banda de 50 Hz, as´ı como el c´alculo del ritmo card´ıaco. N´otese que en el script presente en este apartado se ha suprimido el c´odigo Matlab respectivo a la propia graficaci´on de la se˜nales al no considerarse relevante, el c´odigo completo se puede consultar en el Anexo E. Para el dise˜no del filtro de orden 2, se emplea la funci´on “iirnotch()”, que devuelve directamente como resultado los coeficientes de un filtro IIR de Notch centrado a la frecuencia indicada. En Resultados y adquisiciones 91 cambio, para la obtenci´on de los coeficientes del filtro de 6 º se ha utilizado la herramienta integrada de Matlab: “Filter Designer” [136]. Los valores de amplitud se representan en funci´on del tiempo en un rango de 0 a 60 segundos. Dado que se usa una frecuencia de muestreo de 1000 m/s, se representa una muestra cada 0.001 segundos. Para el trazado de la amplitud de las muestras, hay que hacer la conversi´on a valores de tensi´on que tambi´en se realiz´o en la aplicaci´on de Android del Cap´ıtulo 5. En cuanto al c´alculo de las pulsaciones por minuto, se utiliza la funci´on de Matlab findpeaks(), habi´endose configurado un valor m´ınimo de voltaje para ser considerado como pico y una distancia m´ınima entre dichos picos de modo que no se contabilicen falsos puntos R. 1%% Script that plots and filters the ECG data from a CSV file 2 3clc; clear vars; close all; format long ; 4 5%% Read data from CSV file 6filename = ' Name of the CSV file ' ; 7filedir = strcat ( ' AdquisicionesECG/ ' ,filename ); 8filedir = strcat ( filedir , ' .csv ' ); 9data = csvread ( filedir ); 10 11 fs = 1000; % Sampling frequency 12 13 %% Spectrum of the raw signal 14 y = fft(data ' ); % Fast Fourier transform 15 n = length ( data ); % Number of samples 16 f = (0: n -1) *( fs /n); % Frequency range 17 power = abs(y) .^2/n; % Power of the DFT 18 power (1 ,1) = 0; 19 20 %% Choose filter 21 n = 3; 22 switch n 23 case 1 24 disp( ' No filter ' ) 25 case 2% 50 Hz filter (2 order ) 26 f = 50; % Frequency to filter 27 BW = 1; % Bandwidth 28 [num , den ] = iirnotch (f /( fs /2) ,BW /( fs /2) ); 29 fvtool (num ,den , ' Fs ' ,fs); 30 data = filter (num ,den , data ); 31 case 3% 50 Hz filter (6 order ) 32 % Filter coeficients 33 num = [0.987512174869590 , -5.63519056682043 , ... 34 13.6815175263959 , -18.0667531080674 , ... 35 13.6815175263959 , -5.63519056682043 , ... 36 0.987512174869590]; 37 den = [1 , -5.68254876635053 , 13.7387485793903 , ... 38 -18.0664564757185 , 13.6241305276252 , ... 39 -5.58812899963934 , 0.975180295515611]; 40 data = filter (num ,den , data ); 41 otherwise 42 disp( ' No filter ' ) 43 end Listing 6.1: Scritp de Matlab para representaci´on, filtrado rechazo banda de la se˜nal card´ıaca y c´alculo del ritmo card´ıaco. (Parte 1 de 2). 92 6.1. Adquisiciones ECG 1%% Spectrum of the filtered signal 2y = fft(data ' ); 3n = length ( data ); % Number of samples 4f = (0: n -1) *( fs /n); % Frequency range 5power = abs(y) .^2/n; % Power of the DFT 6power (1 ,1) = 0; 7 8%% RMS and mean 9% ADC 10 ADC_resolution = 16; % Bits of the ADC 11 ADC_top_limit = 3.3; 12 ADC_bottom_limit = 0; 13 14 mV_data = zeros (1 , length ( data )); 15 16 for i = 1:1: length ( data ) 17 mV_data (i) = (( data (i) * ADC_top_limit ) / (2^ ADC_resolution - 1) + ... 18 ADC_bottom_limit ) * 1000/51; 19 end 20 21 fprintf( ' Mean : %f mV\n ' , mean ( mV_data )); 22 fprintf( ' RMS: %f mV\n ' , rms ( mV_data )); 23 24 mV_data = mV_data - mean ( mV_data ); % Remove offset 25 26 %% Calculate heart rate (BPM ) 27 min_amp = 0.4; % Minimun amplitud (0.4 mV) 28 min_dis = 30e -3; % Minimun distante between peaks (30 ms) 29 30 [pks , locs ] = findpeaks ( mV_data , fs , ' MinPeakHeight ' , min_amp ,... 31 ' MinPeakDistance ' , min_dis ); 32 BPM = length ( locs) / ( locs ( end)- locs (1)) * 60; % Beats per minute 33 fprintf( ' BPM: %f \n ' , BPM); Listing 6.2: Scritp de Matlab para representaci´on, filtrado rechazo banda de la se˜nal card´ıaca y c´alculo del ritmo card´ıaco. (Parte 2 de 2). 6.1.2. Recopilaci´on de medidas Se ha adquirido la medidas de la se˜nal del coraz´on a varios voluntarios. Dado que, como ya se ha comentado, las muestras se tomaron en uno de los laboratorios de la Universidad de Granada, con la intenci´on de preservar la intimidad de los voluntarios se opt´o por situar los electrodos en las mu˜necas derecha e izquierda y en la pierna derecha, en lugar de colocarlos en el torso como tambi´en se sugiri´o como posible en el Cap´ıtulo 4:Dise˜no firmware y hardware para la obtenci´on de adquisiciones. A todos los resultados se les ha aplicado un filtrado ranura de 6 º orden antes de ser representados. Las se˜nales extra´ıdas para estos casos se pueden consultar en las Figuras 6.7, 6.8 y6.9. Se puede apreciar una cantidad de ruido considerable en los resultados extra´ıdos del voluntario 3 en la Figura 6.9 en comparaci´on al resto de medidas. Esto se puede deber a una mala colocaci´on de los electrodos. Por ejemplo, se puede haber dado el caso de que al colocarlos estos quedasen flojos, con lo cual no hubo un contacto adecuado entre la piel y el electrodo, increment´andose con ello el ruido. Resultados y adquisiciones 93 (a) Medida 1. (b) Medida 2 (c) Medida 3 Figura 6.7: Se˜nal del ECG extra´ıda de la persona 1. 94 6.1. Adquisiciones ECG (a) Medida 1. (b) Medida 2 (c) Medida 3 Figura 6.8: Se˜nal del ECG extra´ıda de la persona 2. Resultados y adquisiciones 95 (a) Medida 1. (b) Medida 2 (c) Medida 3 Figura 6.9: Se˜nal del ECG extra´ıda de la persona 3. 102 BIBLIOGRAF´ IA [13] Klepin, K., Wing, D., Higgins, M., Nichols, J., & Godino, J. G. (2019). Validity of cardiorespiratory fitness measured with Fitbit compared to V˙O2max. Medicine and Science in Sports and Exercise, 51(11), 2251–2256. https://doi.org/10.1249/mss.0000000000002041 [14] M¨uhlen, J. M., Stang, J., Lykke Skovgaard, E., Judice, P. B., Molina-Garcia, P., Johnston, W., Sardinha, L. B., Ortega, F. B., Caulfield, B., Bloch, W., Cheng, S., Ekelund, U., Brønd, J. C., Grøntved, A., & Schumann, M. (2021). Recommendations for determining the validity of consumer wearable heart rate devices: expert statement and checklist of the INTERLIVE Network. British Journal of Sports Medicine, 55(14), 767–779. https://doi.org/10.1136/ bjsports-2020-103148 [15] James, D. A., & Petrone, N. (2016). Sensors and wearable technologies in sport: Technologies, trends and approaches for implementation (1st ed.). Springer. [16] Zieniewicz, M. J., Johnson, D. C., Wong, C., & Flatt, J. D. (2002). The evolution of Army wearable computers. IEEE Pervasive Computing,1(4), 30–40. https://doi.org/10.1109/ mprv.2002.1158276 [17] LifeGuard: Wireless physiological monitor. NASA. https://www.nasa.gov/centers/ames/ research/technology-onepagers/life-guard.html. Accedido: Diciembre 2022 [18] Chandra, S. (2017). Wearable Sensors: Applications, design and implementation (S. Mukhopadhyay & T. Islam, Eds.). Institute of Physics Publishing. [19] Mukhopadhyay, S. C. (2015). Wearable electronics sensors: For safe and healthy living. Springer International Publishing. [20] Khan, Y., Ostfeld, A. E., Lochner, C. M., Pierre, A., & Arias, A. C. (2016). Monitoring of vital signs with flexible and wearable medical devices. Advanced Materials (Deerfield Beach, Fla.), 28(22), 4373–4395. https://doi.org/10.1002/adma.201504366 [21] Latifo˘glu, F., Esas, M. & Demirci, E. (2020). Diagnosis of attention-deficit hyperactivity disorder using EOG signals: a new approach. Biomedical Engineering / Biomedizinische Technik, 65(2), 149-164. https://doi.org/10.1515/bmt-2019-0027 [22] Chowdhury, R. H., Reaz, M. B. I., Ali, M. A. B. M., Bakar, A. A. A., Chellappan, K., & Chang, T. G. (2013). Surface electromyography signal processing and classification techniques. Sensors (Basel, Switzerland), 13(9), 12431–12466. https://doi.org/10.3390/ s130912431 [23] Krishnan, S. (2021). Biomedical Signal Analysis for Connected Healthcare. Academic Press. [24] Kyriacou, P. A., & Allen, J. (Eds.). (2021). Photoplethysmography: Technology, Signal Analysis and Applications. Academic Press. [25] Duun, S., Haahr, R. G., Hansen, O., Birkelund, K., & Thomsen, E. V. (2010). High quantum efficiency annular backside silicon photodiodes for reflectance pulse oximetry in wearable wireless body sensors. Journal of Micromechanics and Microengineering: Structures, Devices, and Systems, 20(7), 075020. https://doi.org/10.1088/0960-1317/20/7/075020 [26] Hao, Y., & Foster, R. (2008). Wireless body sensor networks for health-monitoring applications. Physiological Measurement, 29(11), R27-56. https://doi.org/10.1088/0967-3334/ 29/11/R01 [27] Panescu, D. (2008). Wireless communication systems for implantable medical devices. IEEE Engineering in Medicine and Biology Magazine: The Quarterly Magazine of the Engineering in Medicine & Biology Society, 27(2), 96–101. https://doi.org/10.1109/EMB.2008. 915488 [28] W. Tesema, B. Da Silva, W. Jimma and J. Stiens, ”Power Saving Techniques for Wearable Devices in Medical Applications,”IECON 2022 – 48th Annual Conference of the IEEE Industrial Electronics Society, 2022, pp. 1-8, doi: 10.1109/IECON49645.2022.9968977 [29] Raad, H. (2021). Fundamentals of IoT and wearable technology design. Wiley-Blackwell. BIBLIOGRAF´ IA 103 [30] Kumar, P., & Lee, H.-J. (2012). Security issues in healthcare applications using wireless medical sensor networks: a survey. Sensors (Basel, Switzerland), 12(1), 55–91. https:// doi.org/10.3390/s120100055 [31] Wang, L., Lou, Z., Jiang, K., & Shen, G. (2019). Bio-multifunctional smart wearable sensors for medical devices. Advanced Intelligent Systems (Weinheim an Der Bergstrasse, Germany), 1(5), 1900040. https://doi.org/10.1002/aisy.201900040 [32] Webster, J. G. (2009). Medical Instrumentation: Application and Design (J. G. Webster, Ed.; 4th ed.). John Wiley & Sons. [33] International Conference on Advances in Human Factors and Wearable Technologies (2017. Los Angeles, California). (2017). Advances in human factors in wearable technologies and game design: Proceedings of the AHFE 2017 international conference on advances in human factors and wearable technologies, July 17-21, 2017, the Westin Bonaventure hotel, Los Angeles, California, USA (T. Ahram & C. Falcao, Eds.; 1st ed.). Springer International Publishing. [34] Leonhardt, S., Falck, T., & Mahonen, P. (Eds.). (2007). 4th international workshop on wearable and implantable body sensor network (bsn 2007). Springer. [35] Steinfeld, E., & Maisel, J. (2012). Universal Design. Wiley. [36] Khoshnoud, F., & de Silva, C. W. (2012). Recent advances in MEMS sensor technology – biomedical applications. IEEE Instrumentation & Measurement Magazine, 15(1), 8–14. https://doi.org/10.1109/mim.2012.6145254 [37] Bogue, R. (2007). MEMS sensors: past, present and future. Sensor Review, 27(1), 7–13. https://doi.org/10.1108/02602280710729068 [38] Grayson, A. C. R., Shawgo, R. S., Johnson, A. M., Flynn, N. T., Li, Y., Cima, M. J., & Langer, R. (2004). A BioMEMS review: MEMS technology for physiologically integrated devices. Proceedings of the IEEE. Institute of Electrical and Electronics Engineers, 92 (1), 6–21. https://doi.org/10.1109/jproc.2003.820534 [39] Nag, A., Mukhopadhyay, S. C., & Kosel, J. (2019). Printed flexible sensors: Fabrication, characterization and implementation (1st ed.). Springer Nature. [40] Mukhopadhyay, S. C., & Nag, A. (2021). Printed and Flexible Sensor Technology: Fabrication and applications (S. Mukhopadhyay & A. Nag, Eds.). Institute of Physics Publishing. https: //doi.org/10.1088/978-0-7503-3439-6 [41] Khan, S., Lorenzelli, L., & Dahiya, R. S. (2015). Technologies for printing sensors and electronics over large flexible substrates: A review. IEEE Sensors Journal, 15(6), 3164–3185. https://doi.org/10.1109/jsen.2014.2375203 [42] M. Konijnenburg et al., ”28.4 A battery-powered efficient multi-sensor acquisition system with simultaneous ECG, BIO-Z, GSR, and PPG,”2016 IEEE International SolidState Circuits Conference (ISSCC), San Francisco, CA, USA, 2016, pp. 480-481, doi: 10.1109/ISSCC.2016.7418116. [43] V. Randazzo, E. Pasero and S. Navaretti, ”VITAL-ECG: A portable wearable hospital,”2018 IEEE Sensors Applications Symposium (SAS), Seoul, Korea (South), 2018, pp. 1-6, doi: 10.1109/SAS.2018.8336776. [44] F. A. Ferreira Marques, D. M. D. Ribeiro, M. F. M. Colunas and J. P. Silva Cunha, .A real time, wearable ECG and blood pressure monitoring system,”6th Iberian Conference on Information Systems and Technologies (CISTI 2011), Chaves, Portugal, 2011, pp. 1-4. [45] Zaman, M. S., & Morshed, B. I. (2021). A low-power portable scanner for body-worn Wireless Resistive Analog Passive (WRAP) sensors for mHealth applications. Measurement: Journal of the International Measurement Confederation, 177(109214), 109214. https://doi.org/ 10.1016/j.measurement.2021.109214 104 BIBLIOGRAF´ IA [46] V. Randazzo, J. Ferretti and E. Pasero, ECG WATCH: a real time wireless wearable ECG, 2019 IEEE International Symposium on Medical Measurements and Applications (MeMeA), Istanbul, Turkey, 2019, pp. 1-6, doi: 10.1109/MeMeA.2019.8802210. [47] B. M. G. Rosa and G. Z. Yang, A Flexible Wearable Device for Measurement of Cardiac, Electrodermal, and Motion Parameters in Mental Healthcare Applications, in IEEE Journal of Biomedical and Health Informatics, vol. 23, no. 6, pp. 2276-2285, Nov. 2019, doi: 10.1109/JBHI.2019.2938311. [48] A. Moin et al., An EMG Gesture Recognition System with Flexible High-Density Sensors and Brain-Inspired High-Dimensional Classifier, 2018 IEEE International Symposium on Circuits and Systems (ISCAS), Florence, Italy, 2018, pp. 1-5, doi: 10.1109/ISCAS.2018.8351613. [49] Park, J., Kim, J., Kim, S.-Y., Cheong, W. H., Jang, J., Park, Y.-G., Na, K., Kim, Y.-T., Heo, J. H., Lee, C. Y., Lee, J. H., Bien, F., & Park, J.-U. (2018). Soft, smart contact lenses with integrations of wireless circuits, glucose sensors, and displays. Science Advances, 4 (1), eaap9841. https://doi.org/10.1126/sciadv.aap9841 [50] Taguchi, N., Taguchi, S., Ishizuki, S., & Ito, H. (2020). Contact dermatitis associated with the Bispectral indexTM sensor: a case report. JA Clinical Reports, 6(1), 87. https://doi. org/10.1186/s40981-020-00393-w [51] Xiao, X., Wu, G., Zhou, H., Qian, K., & Hu, J. (2017). Preparation and property evaluation of conductive hydrogel using poly (vinyl alcohol)/polyethylene glycol/graphene oxide for human electrocardiogram acquisition. Polymers, 9(7), 259. https://doi.org/10.3390/ polym9070259 [52] Altium Designer Documentation. Altium. https://www.altium.com/documentation/ altium-designer. Accedido: Febrero 2023. [53] Ultra Librarian main page. Ultra Librarian. https://www.ultralibrarian.com [54] LTspice - All things LTspice. Analog Devices. https://www.analog.com/en/ design-center/design-tools-and-calculators/ltspice-simulator.html. Accedido: Abril 2023. [55] MATLAB. MathWorks. https://es.mathworks.com/products/matlab.html. Accedido: Abril 2023. [56] Cypress, PSoC Creator User Guide, Agosto 2022, https://www.infineon.com/ dgdl/Infineon-PSoC_Creator_User_Guide-UserManual-v14_00-EN.pdf?fileId= 8ac78c8c7ddc01d7017ddd0a1f485c96 [57] PSoC  Creator. Infineon. https://www.infineon.com/cms/en/design-support/tools/ sdk/psoc-software/psoc-creator/. Accedido: Marzo 2023. [58] Cypress, Universal Asynchronous Receiver Transmitter (UART),https://www.infineon. com/dgdl/Infineon-Component_UART_V2.50-Software%20Module%20Datasheets-v02_ 05-EN.pdf?fileId=8ac78c8c7d0d8da4017d0e7fcaf71181 [59] Introducci´on a Android Studio. Developers Android. https://developer.android.com/ studio/intro?hl=es-419. Accedido: Abril 2023. [60] Descripci´on general del manifiesto de una app. Developers Android. https:// developer.android.com/guide/topics/manifest/manifest-intro?hl=es-419. Accedido: Abril 2023. [61] Ho, W., & Ji, P. (2007). Optimal Production Planning for PCB Assembly. Springer. [62] Bhunia, S., & Tehranipoor, M. (2018). Hardware security: A hands-on learning approach. Morgan Kaufmann. [63] RMP354 Multilayer Press. Fortex. http://www.fortex.co.uk/product/ rmp13-multilayer-pcb-press/. Accedido: Febrero 2023. BIBLIOGRAF´ IA 105 [64] Ben Abdallah, A. (2017). Advanced multicore systems-on-chip: Architecture, on-chip network, design (1st ed.). Springer. [65] M. Siekkinen, M. Hiienkari, J. K. Nurminen and J. Nieminen, ”How low energy is bluetooth low energy? Comparative measurements with ZigBee/802.15.4,”2012 IEEE Wireless Communications and Networking Conference Workshops (WCNCW), Paris, France, 2012, pp. 232-237, doi: 10.1109/WCNCW.2012.6215496. [66] Garcia-Espinosa, E., Longoria-Gandara, O., Pegueros-Lepe, I., & Veloz-Guerrero, A. (2018). Power consumption analysis of Bluetooth low energy commercial products and their implications for IoT applications. Electronics, 7(12), 386. https://doi.org/10.3390/ electronics7120386 [67] Infineon Technologies AG, PSoC ® 5LP: CY8C58LP Family Datasheet, Julio 2012 [Revisado Noviembre 2019], https://www.infineon.com/dgdl/Infineon-PSoC_5LP_CY8C58LP_ Family_Datasheet_Programmable_System-on-Chip_(PSoC_)-DataSheet-v15_00-EN. pdf?fileId=8ac78c8c7d0d8da4017d0ec547013ab9 [68] Infineon Technologies AG, CYBLE-022001-00, EZ-BLE  Creator Module, Febrero 2015 [Revisado Marzo 2021], https://www.mouser.es/datasheet/2/196/CYPR_S_A0011804390_ 1-3004892.pdf [69] Johanson Technology, 2450AT18B100E Datasheet Ver 2.0, Agosto 2016, https://www. farnell.com/datasheets/2173873.pdf [70] CY8C5868LTI-LP039. Digi-Key. https://www.digikey.es/es/products/ detail/infineon-technologies/CY8C5868LTI-LP039/3829540?s= N4IgTCBcDaIMYE8AccCsSBsSA2AXAlgLTYAOADAMwCcIAugL5A. Accedido: Febrero 2023. [71] CYBLE-022001-00. Digi-Key. https://www.digikey.es/es/products/detail/ cypress-semiconductor-corp/CYBLE-022001-00/5355485. Accedido: Febrero 2023. [72] Op Amps and the Importance of Low Quiescent Current. Analog Devices. https://www.analog.com/en/design-notes/ op-amps-and-the-importance-of-low-quiescent-current.html. Accedido: Febrero 2023. [73] Texas Instruments, LP8340 Low Dropout, Low IQ, 1.0A CMOS Linear Regulator datasheet, Febrero 2003 [Revisado Abril 2013], https://www.ti.com/lit/ds/symlink/lp8340.pdf? ts=1675941098092&ref_url=https%253A%252F%252Fwww.google.com%252F [74] Day, M. (2006). Understanding low drop out (LDO) regulators.https://www.ti.com/lit/ ml/slup239a/slup239a.pdf?ts=1675877207745&ref_url=https%253A%252F%252Fwww. google.com%252F#:~:text=The%20dropout%20voltage%20is%20the,element%20equals% 20the%20output%20voltage. [75] Texas Instruments, TPS727 250-mA, Ultralow IQ, Fast Transient Response, RF LowDropout Linear Regulator datasheet, Junio 2009 [Revisado 2015], https://www.ti.com/ lit/ds/symlink/tps727.pdf?HQS=dis-mous-null-mousermode-dsf-pf-null-wwe&ts= 1675948763451&ref_url=https%253A%252F%252Fwww.mouser.fr%252F [76] Texas Instruments, TPS7A03 Nanopower IQ, 200-nA, 200-mA, Low-Dropout Voltage Regulator With Fast Transient Response, Julio 2019 [Revisado Septiembre 2022], https://www.ti.com/lit/ds/symlink/tps7a03.pdf?ts=1675963418340&ref_url= https%253A%252F%252Fwww.google.com%252F [77] Texas Instruments, PS785-Q1 Automotive, 1-A, High-PSRR Low-Dropout Voltage Regulator With High Accuracy and Enable datasheet, Enero 2021 [Revisado Enero 2022], https://www.ti.com/lit/ds/symlink/tps785-q1.pdf?ts=1675964620233& ref_url=https%253A%252F%252Fwww.google.com%252F [78] Texas Instruments, TLV767-Q1 1-A, 16-V Linear Voltage Regulator datasheet, Abril 2020 [Revisado Diciembre 2020], https://www.ti.com/lit/ds/symlink/tlv767-q1.pdf? ts=1675925981144 106 BIBLIOGRAF´ IA [79] Benjamin Mak. (2014). Basics of Load Switches.https://www.ti.com/lit/an/slva652a/ slva652a.pdf?ts=1676062198335&ref_url=https%253A%252F%252Fwww.google.com% 252F [80] Toshiba, TCK106AG, TCK107AG, TCK108AG, Octubre 2015, https://www.mouser.es/ datasheet/2/408/TCK106AG_datasheet_en_20151005-1916439.pdf [81] Texas Instruments, TPS22908 3.6-V, 1-A, 28-mΩOn-Resistance Load Switch with Controlled Rise Time, Julio 2012 [Revisado Abril 2015], https://www.ti.com/lit/ds/symlink/ tps22908.pdf?ts=1676118396318&ref_url=https%253A%252F%252Fwww.ti.com% 252Fpower-management%252Fpower-switches%252Fload-switches%252Fproducts.html [82] Texas Instruments, Ultra-Small, Low-Input-Voltage, Low rON Load Switch With Hysteresis Control Input, Agosto 2010 [Revisado Abril 2015], https://www.ti.com/lit/ds/ symlink/tps22934.pdf?ts=1676119728496&ref_url=https%253A%252F%252Fwww.ti. com%252Fproduct%252FTPS22934 [83] Analog Devices, Logic Controlled, 1 A, High-Side Load Switch with Reverse Current Blocking, Octubre 2011 [Revisado Agosto 2013], https://www.analog.com/media/en/ technical-documentation/data-sheets/ADP198.pdf [84] Granda Miguel, M., & Mediavilla Bolado, E. (2015). Instrumentaci´on electr´onica: transductores y acondicionadores de se˜nal. Editorial de la Universidad de Cantabria. [85] ¿Qu´e son los pares diferenciales y las se˜nales diferenciales?. Altium. https://resources. altium.com/es/p/what-are-differential-pairs-and-differential-signals. Accedido: Febrero 2023. [86] Jim Karki, Understanding Operational Amplifier Specifications, Enero 2018 [Revisado Julio 2021], https://www.ti.com/lit/an/sloa011b/sloa011b.pdf?ts=1676382850724& ref_url=https%253A%252F%252Fwww.google.com%252F [87] Texas Instruments, INA333 Micro-Power (50 µA), Zero-Drift, Rail-to-Rail Out Instrumentation Amplifier, Julio 2008 [Revisado Diciembre 2015], https://www.ti.com/lit/ds/ symlink/ina333.pdf?ts=1676393490906&ref_url=https%253A%252F%252Fwww.ti.com% 252Fproduct%252FINA333 [88] Texas Instruments, INA317 Micro-Power (50 µA), Zero-Drift, Rail-to-Rail-Out Instrumentation Amplifier, Noviembre 2017, https://www.ti.com/lit/ds/symlink/ina317.pdf?ts= 1676410511904&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FINA317 [89] Analog Devices, 40 µA Micropower Instrumentation Amplifier in WLCSP Package, Agosto 2009 [Revisado Septiembre 2016], https://www.analog.com/media/en/ technical-documentation/data-sheets/AD8235.pdf [90] Daniel Nordwood. The Use and Benefits of Ferrite Beads in Gate Drive Circuits. Diciembre 2021. https://www.ti.com/lit/an/sluaai2/sluaai2.pdf [91] Rohm Semiconductor, Impedance Characteristics of Bypass Capacitor, Septiembre 2020, https://fscdn.rohm.com/en/products/databook/applinote/common/bypass_ capacitor_impedance_characteristics_an-e.pdf [92] Bowick, C., Ajluni, C., & Blyler, J. (2007). RF Circuit Design (2nd ed.). Newnes. [93] TE Connectivity, FPC Connector Family, Mayo 2006, https://www.te.com/commerce/ DocumentDelivery/DDEController?Action=srchrtrv&DocNm=1-1773440-6&DocType= Data+Sheet&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 [94] Harwin, M50-360xx42 Customer Information Sheet,https://www.mouser.es/datasheet/ 2/181/M50_360-1133637.pdf [95] Cypress, PSoC ® MiniProg3 Program and Debug Kit Guide,https://www.infineon. com/dgdl/Infineon-CY8CKIT-002_MiniProg3_Kit_Guide-UserManual-v01_00-EN.pdf? fileId=8ac78c8c7d0d8da4017d0eec544077af BIBLIOGRAF´ IA 107 [96] Harwin, M52-040000Pxx45,https://www.mouser.es/datasheet/2/181/ M52-040000PXX45-1273472.pdf [97] Wurth Elektronik 0.5mm 40 Way FFC Ribbon Cable, White Sheath, 20.5 mm Width, 200mm Length. RS Components. https:// export.rsdelivers.com/es/product/wurth-elektronik/687640200002/ wurth-elektronik-05mm-40-way-ffc-ribbon-cable-205/7635596. Accedido: Mayo 2023. [98] LP8340ILDX-ADJ/NOPB. Mouser Electronics. https://www.mouser.es/ProductDetail/ Texas-Instruments/LP8340ILDX-ADJ-NOPB?qs=8uBHJDVwVqwyikeCAqBNUA%3D%3D. Accedido: Febrero 2023. [99] TCK106AG,LF. Digi-Key. https://www.digikey.es/es/products/detail/ toshiba-semiconductor-and-storage/TCK106AG-LF/5409283. Accedido Febrero 2023. [100] INA333. Texas Instruments. https://www.ti.com/product/INA333?keyMatch=INA333& tisearch=search-everything&usecase=GPN. Accedido: Febrero 2023. [101] 84953-4. Digi-Key. https://www.digikey.es/es/products/detail/ te-connectivity-amp-connectors/84953-4/1122095. Accedido: Febrero 2023. [102] M52-040000P0545. Farnell. https://es.farnell.com/harwin/m52-040000p0545/ macho-vertical-1fila-5-v-as/dp/1099569. Accedido: Febrero 2023. [103] M50-3600542. Farnell. https://es.farnell.com/harwin/m50-3600542/ conector-macho-smt-r-a-1-27-mm/dp/1022310?ost=m50-3600542. Accedido: Febrero 2023. [104] MMZ1005Y301CT000. Farnell. https://es.farnell.com/tdk/mmz1005y301c/ inductor-0-38ohm-250ma-0402/dp/1669677?st=MMZ1005Y301CT000. Accedido: Febrero 2023. [105] ERA2AED102X. Farnell. https://es.farnell.com/panasonic/era2aed102x/ res-1k-0-5-0-063w-0402-pel-c-metal/dp/2324716?st=era2aed102x. Accedido: Febrero 2023. [106] ERA-2AEB104X. Farnell. https://es.farnell.com/panasonic/era-2aeb104x/ sistor-metal-film-100kohm-63mw/dp/2394316?st=era-2aeb104x. Accedido: Febrero 2023. [107] C0402C104J4RACTU. Farnell. https://es.farnell.com/kemet/c0402c104j4ractu/ conden-0-1-f-16v-5-x7r-0402/dp/2429353?st=C0402C104J4RACTU. Accedido: Febrero 2023. [108] Cypress, PSoC ® 3 and PSoC 5LP – Pin Selection for Analog Designs, https://www.infineon.com/dgdl/Infineon-AN58304_PSoC_3_and_PSoC_5LP_Pin_ Selection_for_Analog_Designs-ApplicationNotes-v09_00-EN.pdf?fileId= 8ac78c8c7cdc391c017d072e43f252d4 [109] TDK, MMZ Series MMZ1005 Type,https://www.farnell.com/datasheets/84898.pdf [110] Cypress, Getting Started with EZ-BLE  Creator Modules,https: //www.infineon.com/dgdl/Infineon-AN96841_GETTING_STARTED_WITH_ EZ-BLE_CREATOR_MODULES-ApplicationNotes-v10_00-EN.pdf?fileId= 8ac78c8c7cdc391c017d073ff52c637b&utm_source=cypress&utm_medium=referral& utm_campaign=202110_globe_en_all_integration-application_note [111] Gacek, A., & Pedrycz, W. (Eds.). (2014). ECG signal processing, classification and interpretation: A comprehensive framework of computational intelligence (2012th ed.). Springer. [112] N. L. Eastman, “Considerations for mixed analog/digital PCB design” Wescon/96, Anaheim, CA, USA, 1996, pp. 297-301, doi: 10.1109/WESCON.1996.554004. 108 BIBLIOGRAF´ IA [113] S. Muralikrishna and S. Sathyamurthy, “An overview of digital circuit design and PCB design guidelines - An EMC perspective” 2008 10th International Conference on Electromagnetic Interference & Compatibility, Bangalore, India, 2008, pp. 567-573. [114] Bronzino, J. D., & Peterson, D. R. (2018). Biomedical Engineering Fundamentals (2nd ed.). CRC Press. [115] Kaplan Berkaya, S., Uysal, A. K., Sora Gunal, E., Ergin, S., Gunal, S., & Gulmezoglu, M. B. (2018). A survey on ECG analysis. Biomedical Signal Processing and Control, 43, 216–235. https://doi.org/10.1016/j.bspc.2018.03.003 [116] Crawford, Jacqui, & Doherty, L. (2012). Practical aspects of ECG recording. M&K Update. [117] ECG Lead positioning. Life in the fastline. https://litfl.com/ecg-lead-positioning/. Accedido: Abril 2023. [118] Castillo, E., Morales, D. P., Botella, G., Garc´ıa, A., Parrilla, L., & Palma, A. J. (2013). Efficient wavelet-based ECG processing for single-lead FHR extraction. Digital Signal Processing, 23(6), 1897–1909. https://doi.org/10.1016/j.dsp.2013.07.010 [119] Toral, V., Garc´ıa, A., Romero, F. J., Morales, D. P., Castillo, E., Parrilla, L., G´omez-Campos, F. M., Morillas, A., & S´anchez, A. (2019). Wearable system for biosignal acquisition and monitoring based on reconfigurable technologies. Sensors (Basel, Switzerland), 19(7), 1590. https://doi.org/10.3390/s19071590 [120] BlueSensor L. Ambu ® .https://www.ambu.es/cardiologia/electrodos-ecg/producto/ ambu-bluesensor-l. Accedido: Mayo 2023. [121] Infineon, Programmable Gain Amplifier (PGA), Noviembre 2017, https://www.infineon. com/dgdl/Infineon-Component_Programmable_Gain_Amplifier_(PGA)_V2.0-Software% 20Module%20Datasheets-v02_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0e8c76dd1b2a [122] Chan, E. D., Chan, M. M., & Chan, M. M. (2013). Pulse oximetry: understanding its basic principles facilitates appreciation of its limitations. Respiratory Medicine, 107(6), 789–799. https://doi.org/10.1016/j.rmed.2013.02.004 [123] Tsiakaka O, Gosselin B, Feruglio S. Source-Detector Spectral Pairing-Related Inaccuracies in Pulse Oximetry: Evaluation of the Wavelength Shift. Sensors (Basel). 2020 Jun 10;20(11):3302. doi: 10.3390/s20113302. PMID: 32532116; PMCID: PMC7309008. [124] Dise˜nar un ox´ımetro de pulso de bajo costo usando componentes de venta. DigiKey. https://www.digikey.com/es/articles/ design-a-low-cost-pulse-oximeter-using-off-the-shelf-components. Accedido: Abril 2023. [125] Petersen, C. L., Chen, T. P., Ansermino, J. M., & Dumont, G. A. (2013). Design and evaluation of a low-cost smartphone pulse oximeter. Sensors (Basel, Switzerland), 13(12), 16882–16893. https://doi.org/10.3390/s131216882 [126] G. Di, X. Tang and W. Liu, .AReflectance Pulse Oximeter Design Using the MSP430F149,”2007 IEEE/ICME International Conference on Complex Medical Engineering, Beijing, China, 2007, pp. 1081-1084, doi: 10.1109/ICCME.2007.4381907. [127] BIOFY, SFH7072 Sensor Version 1.2, Julio 2020, https://docs.rs-online.com/5112/ A700000007243436.pdf [128] Intelligent LED Solutions BIOFY Sensor Version 1.0 for SFH 7072. RS Components. https: //uk.rs-online.com/web/p/sensor-development-tools/1757444. Accedido: Abril 2023. [129] Akshay Bhat, Stabilize Your Transimpedance Amplifier, Febrero 2012, https://pdfserv. maximintegrated.com/en/an/TUT5129.pdf [130] How to Design Stable Transimpedance Amplifiers for Automotive and Medical System. DigiKey. https://www.digikey.es/es/articles/ how-to-design-stable-transimpedance-amplifiers-automotive-medical-systems. Accedido: Abril 2023. BIBLIOGRAF´ IA 109 [131] Cypress, Trans-Impedance Amplifier (TIA), Noviembre 2011, https://www.infineon.com/ dgdl/Infineon-Component_TIA_V1.80-Software%20Module%20Datasheets-v02_00-EN. pdf?fileId=8ac78c8c7d0d8da4017d0e7e89831085 [132] Banik, P. P., Hossain, S., Kwon, T.-H., Kim, H., & Kim, K.-D. (2020). Development of a wearable reflection-type pulse oximeter system to acquire clean PPG signals and measure pulse rate and SpO2 with and without finger motion. Electronics, 9(11), 1905. https:// doi.org/10.3390/electronics9111905 [133] Introducci´on a las actividades. Developers Android. https://developer.android. com/guide/components/activities/intro-activities?hl=es-419#:~:text=An% 20activity%20provides%20the%20window,one%20screen%20in%20an%20app. Accedido: Mayo 2023. [134] Introducci´on a las actividades. Developers Android. https://developer.android.com/ google/play/requirements/target-sdk?hl=es-419. Accedido: Mayo 2023. [135] Permisos en Android. Developers Android. https://developer.android.com/guide/ topics/permissions/overview?hl=es-419. Accedido: Mayo 2023. [136] Introducci´on a Filter Designer. MathWorks. https://es.mathworks.com/help/signal/ug/ introduction-to-filter-designer.html. Accedido: Mayo 2023. [137] The electronic part search engine. Octopart. https://octopart.com. Accedido: Mayo 2023. Ap´endice A Costes del proyecto En este anexo se recopila el coste monetario del proyecto, esto incluye tanto el precio estimado de los componentes individuales, lo cual se puede consultar en el apartado Componentes electr´onicos, como el coste total incluyendo a la PCB y el ensamblaje de la circuiter´ıa en ella, as´ı como otros gastos en Total. A.1. Componentes electr´onicos Para la estimaci´on del coste de los componentes individuales se ha utilizado la herramienta en l´ınea para generaci´on de listas de materiales o BOMs (Bill of materials) disponible en la web “Octopart” [137]. Esta no es m´as que una lista de todos los componentes necesarios, modelos en espec´ıfico y cantidad necesaria de cada uno, para la construcci´on de un circuito electr´onico, a˜nadiendo una estimaci´on del coste de cada uno. La lista de materiales para este trabajo se puede consultar en la Tabla A.1. Los gastos estimados en este apartado se refieren a ´unicamente los componentes electr´onicos para la fabricaci´on de un ´unico dispositivo de procesamiento central dise˜nado en los cap´ıtulos 3y4. A dichos costes habr´a que a˜nadir los gastos fabricaci´on de la PCB y ensamblaje de los componentes en esta, as´ı como los posteriores costes de env´ıo. A.2. Total La PCB se ha encargado al fabricante PCBWay, habi´endose solicitado un total de 3 PCBs m´as el respectivo ensamblaje de los componentes en cada una de ellas y las tasas de env´ıo. En la Tabla A.2 se proporcionan los gastos de fabricaci´on de la propia PCB sin componentes y el posterior precio de compra y ensamblaje de estos. Dado que el fabricante ´ındica la factura en dolares estadounidenses (USD), se puede consultar los costes tanto en esta moneda, como en euros (EUR). Hay que tener en cuenta que la conversi´on entre monedas se ha realizado a Mayo de 2023 y puede cambiar en el futuro, al igual que ocurre con el precio de componentes y fabricaci´on indicados en este trabajo. Los gastos totales se encuentran resumidos en la Tabla A.3, donde se incluyen al margen de los propios coste de fabricaci´on, el resto de tasas. Es importante tener en cuenta que los costes se ven influenciados a la alta debido a que al ser un tirada peque˜na para prototipaje, el precio de cada dispositivo individual se incrementa. En caso de tiradas a gran escala para, por ejemplo, comercializaci´on, el precio unitario se reducir´ıa de manera considerable. 118 C.1. Firmware: ECG 54 CyDma TdSe tAddr ess ( DMA_2_TD [0] , LO16 (( uint32 ) Filter_1 _HOL DAM_ PTR ) , LO16 (( uint32 ) VDAC8_1_Data_PTR)); 55 CyDm aChS etIn iti alTd ( DMA_2_Chan , DM A_2_TD [0]) ; 56 CyDmaCh Enabl e ( DMA_2_Chan , 1) ; 57 } 58 59 60 void DMA_3_Startup(void){ 61 /* Defines for DMA_3 */ 62 # define DM A_3_ BYT ES_P ER_BU RST 2 63 #define DMA_3_REQUEST_PER_BURST 1 64 # define DMA _3_SRC _BASE ( C YDEV _PERIP H_BA SE ) 65 # define DMA _3_DST _BASE ( C YDEV_ SRAM_ BASE ) 66 67 /* Variable declarations for DMA_3 */ 68 uint8 DMA_3_TD [2]; 69 70 /* DMA Configuration for DMA_3 */ 71 DMA_3_Chan = DMA_3_DmaInitialize ( DMA_3_BYTES_PER_BURST , DMA_3_REQUEST_PER_BURST , 72 HI16(DMA_3_SRC_BASE), HI16(DMA_3_DST_BASE)); 73 DMA_3_TD [0] = CyDmaTdAllocate () ; 74 DMA_3_TD [1] = CyDmaTdAllocate () ; 75 76 CyDmaTdSetConfiguration ( DMA_3_TD [0] , 4000 , DMA_3_TD [1] , CY_DMA_TD_INC_DST_ADR | DMA_3__TD_TERMOUT_EN); 77 CyDmaTdSetConfiguration ( DMA_3_TD [1] , 4000 , DMA_3_TD [0] , CY_DMA_TD_INC_DST_ADR | DMA_3__TD_TERMOUT_EN); 78 79 CyDma TdSe tAddr ess ( DMA_3_TD [0] , LO16 (( uint32 ) Filt er_1 _HOL DB_P TR ) , LO16 (( uint32 )& out_array [0]) ); 80 CyDma TdSe tAddr ess ( DMA_3_TD [1] , LO16 (( uint32 ) Filt er_1 _HOL DB_P TR ) , LO16 (( uint32 )& out_array2 [0]) ) ; 81 82 CyDm aChS etIn iti alTd ( DMA_3_Chan , DM A_3_TD [0]) ; 83 } 84 85 86 CY_ISR ( Filter_isr ){ 87 /* 88 Adapt the 16 bits to 8 bits and send the 5000 samples of the array by the UART 89 */ 90 91 if( Rec_flac == 0) { // Takes 1 of each 2 samples (fs /2) and adapt to 8 bits 92 for (int i =0; i <2000; i +=2) { 93 94 uart_array [i] = out_array [i]>> 8 ; 95 uart_array [ i+1] = ( uint8 ) out_array [ i]; 96 } 97 Rec_flac = 1; 98 } 99 else{// Takes 1 of each 2 samples (fs /2) and adapt to 8 bits 100 for (int i =0; i <2000; i +=2) { 101 102 uart_array [2000 + i] = out_array2 [i]>> 8 ; 103 uart_array [2000 + i +1] = ( uint8 ) o ut_array2 [ i]; 104 } 105 Rec_flac = 0; 106 send_flag = 1; 107 j++; 108 } 109 if(j == 30) { // Each iteration represent 2 seconds of the signal 110 CyDmaChDisable ( DMA_3_Chan ) ; 111 j = 0; 112 } 113 } 114 115 116 CY_ISR ( Uart_input ){ 117 /* 118 Adapt the 16 bits to 8 bits and send the 5000 samples of the array by the UART 119 */ 120 121 char rec ; 122 rec = UART_1_GetByte(); 123 124 switch (rec){ 125 case ’a ’: 126 Filter_1_ClearInterruptSource(); 127 CyDmaCh Enabl e ( DMA_3_Chan ,1) ; 128 break ; 129 } 130 131 UART_1_ReadRxStatus(); 132 UART_1_ClearRxBuffer(); 133 } 134 135 Firmware usado en el PSoC 5LP 119 136 int main ( void){ 137 138 CyGlobalIntEnable; /* Enable global interrupts . */ 139 140 ADC_DelSig_1_Start(); 141 PGA_1_Start (); 142 PGA_2_Start (); 143 Opamp_1_Start (); 144 PGA_Inv_1_Start (); 145 PGA_Inv_3_Start (); 146 VDAC8_1_Start (); 147 Filter_1_Start(); 148 UART_1_Start(); 149 150 Filter_1_SetCoherency ( Filter_1_CHANNEL_A , Filter_1_KEY_MID ); 151 Filter_1_SetCoherency ( Filter_1_CHANNEL_B , Filter_1_KEY_MID ); 152 153 DMA_1_Startup (); 154 DMA_2_Startup (); 155 DMA_3_Startup (); 156 157 Filter_end_StartEx ( Filter_isr ); 158 uart_isr_StartEx(Uart_input); 159 160 ADC_DelSig_1_StartConvert(); 161 162 for (;;){ 163 if( send_flag == 1) { 164 // Envio 2000 muestras de 16 bits a ( Fs /2) 165 uart_array [4000]= 10; 166 uart_array [4001]= 13; 167 UART_ 1_Put Arra y ( uart_array , ( uint16 ) 4000) ; 168 send_flag = 0; 169 } 170 } 171 } Listing C.1: C´odigo fuente C para implementaci´on del ECG C.2. Firmware: SpO2 Se hace necesario hacer un anotaci´on respecto del comportamiento que sigue la interrupci´on que se activa cuando el filtro ha enviado 4000 bytes, denominada como CY ISR(FilterDone) en el c´odigo fuente: Para empezar, se utilizan dos vectores distintos para almacenar las muestras filtradas: samples1[] ysamples2[], de una longitud de 2000 posiciones cada uno. El motivo de que los vectores sean de este tama˜no, es el hecho de que se est´a muestreado con una resoluci´on de 16 bits a una frecuencia de 2000 muestras/segundo, lo que implica que cada uno de estos vectores es capaz de almacenar 1 segundo de adquisici´on. Se han configurado adicionalmente otros dos vectores, RED samples[] eIR samples[], de una longitud de 8000 posiciones cada uno, esto implica que en total se guardan 4 segundos de se˜nal en los cuales se encontraba en operaci´on el LED rojo y otros 4 en los que se utilizaba el infrarrojo. Se comienza almacenando el primer segundo de adquisici´on en el vector samples1[], cuando este se ha llenado, se empiezan a copiar sus muestras en los vectores RED samples[] oIR samples[] seg´un corresponda, y se indica que el siguiente segundo de se˜nal se grabe sobre el vector samples2[]. De esta manera se consigue dar mayor fluidez al programa, ya que mientras un conjunto de muestras se est´a copiando en el vector intermedio (samples1[] osamples2[]), el conjunto anterior se copia al vector final correspondiente (RED samples[] oIR samples[]) que se usar´a para las operaciones del c´alculo del ratio de absorci´on (R). La variable last index tiene el objetivo de almacenar hasta que posici´on se han rellenado los dos vectores finales, de manera que no se sobrescriban las muestras m´as antiguas. La variable count se utiliza para saber cuantos segundos de adquisici´on han transcurrido, cada vez que se suma 1 a esta variable es que ha pasado 1 segundo. Adicionalmente, si su valor es par, las muestras se copian en samples1[], mientras que si es impar se copian en samples2[]. El valor del contador tambi´en se utiliza para saber si las muestras se tienen que copiar en RED samples[] o en IR samples[]. Durante los primeros 4 segundos se almacenan muestras provenientes del LED 120 C.2. Firmware: SpO2 rojo y durante los 4 siguientes del infrarrojo, cada conjunto en su vector correspondiente. Al transcurrir 4 segundos se apaga el LED rojo y se enciende el infrarrojo. Cuando transcurren 8, se hace el c´alculo del ratio de absorci´on, se vuelve a intercambiar que LEDs est´an encendido y apagado y se resetean las variables de manera que se tome una nueva adquisici´on de 8 segundos autom´aticamente. 1/* 2This program allows the acquisition of the SpO2 using 2 LEDs and 1 3photodiode . The result is send through UART communication . 4*/ 5 6#include "project.h" 7#include <math .h> 8#include <stdbool.h> 9 10 #define LED_ON 0u 11 #define LED_OFF 1u 12 #define LENGTH_ALL_SAMPLES 2000 // Length of the array send from DMA2 13 #define LENGTH_SEPARATED_SAMPLES 8000 // Length of the complete array of samples for one of the LEDs 14 #define A 110 // Coeficients used to calculate R 15 #define B 25 16 17 volatile uint16 samples1 [ LENGTH_ALL_SAMPLES ]; 18 volatile uint16 samples2 [ LENGTH_ALL_SAMPLES ]; 19 20 bool send_fla g = false ; // Control if the value of R is ready 21 bool a cqu isit ion_ acti ve = false ; // Control if the adquisition of values is ON 22 23 uint16 RED_samples[LENGTH_SEPARATED_SAMPLES]; // Stores samples only from the RED LED 24 uint16 IR_samples[LENGTH_SEPARATED_SAMPLES]; // Stores samples only from the IR LED 25 uint16 R = 0; // Ratio of absorbance 26 uint16 count = 0; // Count how many times 2000 samples has been stored 27 28 float last_measure = 0; // Measure from the last adquisition 29 30 // Variables declaration for DMA_1 and DMA_2 31 uint8 DMA_1_Chan ; 32 uint8 DMA_1_TD [1]; 33 uint8 DMA_2_Chan ; 34 uint8 DMA_2_TD [2]; 35 36 37 void DMA_1_Init () { 38 /* Defines for DMA_1 */ 39 40 # define DM A_1_ BYT ES_P ER_BU RST 2 41 #define DMA_1_REQUEST_PER_BURST 1 42 # define DMA _1_SRC _BASE ( C YDEV _PERIP H_BA SE ) 43 # define DMA _1_DST _BASE ( C YDEV _PERIP H_BA SE ) 44 45 /* DMA Configuration for DMA_1 */ 46 DMA_1_Chan = DMA_1_DmaInitialize ( DMA_1_BYTES_PER_BURST , DMA_1_REQUEST_PER_BURST , 47 HI16(DMA_1_SRC_BASE), HI16(DMA_1_DST_BASE)); 48 DMA_1_TD [0] = CyDmaTdAllocate () ; 49 CyDm aTd Set Con fig ura tio n ( DMA_1_T D [0] , 2, DMA_1_TD [0] , 0) ; 50 CyDmaTdSetAddress ( DMA_1_TD [0] , LO16 (( uint32 ) ADC_DelSig_DEC_SAMP_PTR ) , LO16 (( uint32 ) Filter_1_STAGEA_PTR)); 51 CyDm aChS etIn iti alTd ( DMA_1_Chan , DM A_1_TD [0]) ; 52 CyDmaCh Enabl e ( DMA_1_Chan , 1) ; 53 } 54 55 56 void DMA_2_Init () { 57 /* Defines for DMA_2 */ 58 59 # define DM A_2_ BYT ES_P ER_BU RST 2 60 #define DMA_2_REQUEST_PER_BURST 1 61 # define DMA _2_SRC _BASE ( C YDEV _PERIP H_BA SE ) 62 # define DMA _2_DST _BASE ( C YDEV_ SRAM_ BASE ) 63 64 /* DMA Configuration for DMA_2 */ 65 DMA_2_Chan = DMA_2_DmaInitialize ( DMA_2_BYTES_PER_BURST , DMA_2_REQUEST_PER_BURST , 66 HI16(DMA_2_SRC_BASE), HI16(DMA_2_DST_BASE)); 67 DMA_2_TD [0] = CyDmaTdAllocate () ; 68 DMA_2_TD [1] = CyDmaTdAllocate () ; 69 CyDmaTdSetConfiguration ( DMA_2_TD [0] , 4000 , DMA_2_TD [1] , DMA_2__TD_TERMOUT_EN | CY_DMA_TD_INC_DST_ADR); 70 CyDmaTdSetConfiguration ( DMA_2_TD [1] , 4000 , DMA_2_TD [0] , DMA_2__TD_TERMOUT_EN | CY_DMA_TD_INC_DST_ADR); 71 CyDma TdSe tAddr ess ( DMA_2_TD [0] , LO16 (( uint32 ) Filt er_1 _HOL DA_P TR ) , LO16 (( uint32 )& samples1 [0]) ); Firmware usado en el PSoC 5LP 121 72 CyDma TdSe tAddr ess ( DMA_2_TD [1] , LO16 (( uint32 ) Filt er_1 _HOL DA_P TR ) , LO16 (( uint32 )& samples2 [0]) ); 73 CyDm aChS etIn iti alTd ( DMA_2_Chan , DM A_2_TD [0]) ; 74 } 75 76 77 float calcula teMean ( uint16 samp les_arr ay []) { 78 /* Calculates the mean of the samples vector 79 80 Inputs -> 81 - Array of samples for one light 82 */ 83 84 uint32 sum = 0; 85 86 for (int i = 0; i < LENGTH_SEPARATED_SAMPLES; i++){ 87 sum += samples_array [i ]; 88 } 89 90 return (float ) sum/LENGTH_SEPARATED_SAMPLES; 91 } 92 93 94 float calculateR MS ( uint16 samp les_array [] , float DC ){ 95 /* Calculates the RMS of the signal 96 97 Inputs -> 98 - Array of samples from the filter 99 - Mean of the samples 100 */ 101 102 uint32 sum = 0; 103 104 for (int i = 0; i < LENGTH_SEPARATED_SAMPLES; i++){ 105 sum += pow ( samples_array [i] - DC , 2); 106 } 107 108 return (float ) sqrt(sum/LENGTH_SEPARATED_SAMPLES); 109 } 110 111 112 float calculateOxygen (){ 113 /* Calculate the percentaje of oxigen in blood using the coef R ( ratio of ratios ) */ 114 115 float DC_RED , DC_IR , AC_RED , AC_IR ; 116 117 DC_RED = calculateMean ( RED_samples ); 118 DC_IR = calculateMean ( IR_samples ); 119 120 AC_RED = calculateRMS ( RED_samples , DC_RED ); 121 AC_IR = calculateRMS ( IR_samples , DC_IR ); 122 123 return A - (B * ( AC_RED / DC_RED ) / ( AC_IR / DC_IR )) ; 124 } 125 126 127 CY_ISR ( UARTInput ) { 128 /* Recieved the start order from the UART conection . This interrupt is call when 129 an instruction is received from the BLE module */ 130 131 char order ; 132 133 if ( UA RT_1 _Re adRx Stat us () & ( uint8 ) U AR T_1 _RX _ST S_F IFO _NO TEM PTY ){ 134 order = ( char) UART_1_ReadRxData (); 135 136 switch( order ) { 137 case ’a ’: 138 UART_1_ PutString (" Starting Adquisition ...\ r\ n" ); 139 140 Filter_1_ClearInterruptSource(); 141 CyDmaCh Enabl e ( DMA_2_Chan , 1) ; 142 143 // Both LEDs turn off at the start 144 Out1_1_Write(LED_ON); 145 Out1_2_Write ( LED_OFF ); 146 147 count = 0; // Restart timer counter 148 last_measure = 0; 149 acqu isi tion _ac tiv e = true ; 150 151 break ; 152 153 case ’s ’: 154 UART_1_ PutString (" Stopping Adquisition ...\ r\ n" ); 155 156 Out1_1_Write ( LED_OFF ); 157 Out1_2_Write ( LED_OFF ); 122 C.2. Firmware: SpO2 158 159 CyDmaChDisable ( DMA_2_Chan ) ; 160 161 acqui sit ion_ acti ve = false ; 162 163 break ; 164 165 }// end switch 166 } 167 168 UART_1_ClearRxBuffer(); 169 } 170 171 172 CY_ISR ( FilterDone ){ 173 /* Stores the data from each LED in a different array . 174 175 This interrupt is call each time the filter has send 4000 bytes , 176 so this interrupt is call each 1 seconds (2000 samples / second of 2 bytes / sample ) . */ 177 178 static uint16 i, j, last_index = 0; 179 float R_aux ; 180 181 // Turn ON LED IR 182 if( count == 4 && ac qui siti on_ acti ve ) { 183 Out1_1_Write ( LED_OFF ); // RED 184 Out1_2_Write ( LED_ON ); // IR 185 } 186 187 // Fill samples arrays 188 if( count % 2 == 0 && count < 8){ // " count " is even 189 j = 0; 190 for (i = last_index ; i < last_index + LENGTH_ALL_SAMPLES ; i ++) { 191 if( count <= 3) { // Red 192 RED_samples [i] = samples1 [ j]; 193 } 194 else{// IR 195 // select _LED = LED_IR ; 196 IR_samples [ i] = samples1 [ j]; 197 } 198 j++; 199 }// end for 200 201 last_index += LENGTH_ALL_SAMPLES ; 202 count ++; 203 204 if( count > 3) { // Reset the index for the IR LED array 205 last_index = 0; 206 } 207 } 208 209 else if ( count % 2 != 0 && count < 8){ // " count " is odd 210 j = 0; 211 for (i = last_index ; i < last_index + LENGTH_ALL_SAMPLES ; i ++) { 212 if( count <= 3) { // Red 213 RED_samples [i] = samples2 [ j]; 214 } 215 else{// IR 216 IR_samples [ i] = samples2 [ j]; 217 } 218 j++; 219 }// end for 220 221 // If 8 seconds has passed 222 if( count == 7) { 223 224 // Activates the sending flag 225 send_flag = true ; 226 227 // Reset samples acquisition 228 last_index = 0; 229 if(acquisition_active){ 230 Out1_1_Write ( LED_ON ); 231 Out1_2_Write ( LED_OFF ); 232 } 233 234 // Calculate R 235 R_aux = calculateOxygen (); 236 R = 0.8 * R_aux + 0.2 * last_measure ; // Feeds the value of previous measures 237 238 last_measure = R; // Saves the result for the next acquisition 239 count = 0; // Restart the loop 240 241 if ((R > 100 || R < 95) && acquisition_active ){ 242 UART_ 1_Pu tStr ing ( " Error in the measure \ r\ n" ); 243 } Firmware usado en el PSoC 5LP 123 244 } 245 246 last_index += LENGTH_ALL_SAMPLES ; 247 count ++; 248 } 249 250 } 251 252 253 int main ( void){ 254 CyGlobalIntEnable; // Enable global interrupts 255 256 uint8 uart_array [2]; 257 258 // Initialize the hardware components 259 TIA_Start (); 260 ADC_DelSig_Start(); 261 ADC_DelSig_StartConvert(); 262 UART_1_Start(); 263 Filter_1_Start(); 264 265 Filter_1_SetCoherency ( Filter_1_CHANNEL_A , Filter_1_KEY_MID ); 266 267 DMA_1_Init () ; 268 DMA_2_Init () ; 269 270 Out1_1_Write ( LED_OFF ); // RED 271 Out1_2_Write ( LED_OFF ); // IR 272 273 // Initialize interrupts 274 isr_UART_StartEx(UARTInput); 275 isr_Filter_End_StartEx ( FilterDone ); 276 277 UART_1_PutString (" UART Comunication : ON LINE \r\n"); 278 279 // Main loop 280 for (;;){ 281 if( send_flag == true && acquisiti on_act ive ) { 282 283 UART_1_PutString("R: "); 284 285 send_flag = false ; 286 287 // Separate bytes from R 288 uart_array [0] = R >> 8 ; 289 uart_array [1] = ( uint8 ) R; 290 291 // Send result 292 UART_ 1_Put Arra y ( uart_array , ( uint8 ) 2) ; 293 294 UART_1_PutString("\r\n"); 295 } 296 } 297 298 } Listing C.2: C´odigo fuente C para implementaci´on de la adquisici´on del SpO2 Ap´endice D C´odigo fuente de la aplicaci´on Android En este cap´ıtulo se puede consultar el c´odigo fuente completo respectivo a la aplicaci´on desarrollada en Android y que se trato en el Cap´ıtulo 5:Dise˜no de aplicaci´on compatible en Android. En Actividades se puede consultar el c´odigo fuente de las actividades Android usadas por la app, mientras que Librer´ıas propias incluye el c´odigo Java de la librer´ıa desde donde se pueden llamar a los m´etodos creados para el tratamiento de las muestras recibidas.La gesti´on de la comunicaci´on Bluetooth y los UUID se pueden localizar en respectivamente Servicios yIdentificadores ´unicos universales (UUID). D.1. Actividades D.1.1. MainActivity.java 1package com . example . fisoapp . presentation ; 2 3import androidx . appcompat . app . AppCompatActiv ity ; 4import android . bluetooth . BluetoothAdapter ; 5import android . bluetooth . BluetoothManager ; 6import android.content.Context; 7import android . content . Intent ; 8import android . content . pm . PackageMana ger ; 9import android . os . Bundle ; 10 import an dro id . view . View ; 11 import android . widget . Button ; 12 import android . widget . Toast ; 13 import com . example . fisoapp .R ; 14 15 16 public class MainActivity extends AppCompatActivity { 17 18 private BluetoothAdapter mBluetoothAdapter; 19 private static final int REQUEST_ENABLE_BT = 1; 20 21 @Override 22 protected void onCreate ( Bundle sa vedI nsta nceS tate ) { 23 super . onCreate ( s avedIn stanceState ); 24 setContentView (R. layout . activity_main ); 25 26 // Determine whether BLE is supported on the device . 27 // Then you can selectively disable BLE - related features . 28 if (! getPackageManager (). hasSystemFeature ( PackageManager . FEATURE_BLUETOOTH_LE )) { 29 Toast . makeText ( this , R. string . ble_not_supported , Toast . LEN GTH_SHORT ) . show () ; 30 finish(); 31 } 32 33 // Initializes a Bluetooth adapter . For API level 18 and above , get a reference to 34 // BluetoothAdapter through BluetoothManager. 35 final BluetoothManager bluetoothManager = 36 (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); 37 mBluetoothAdapter = bluetoothManager.getAdapter(); 38 126 D.1. Actividades 39 // Checks if Bluetooth is supported on the device . 40 if (mBluetoothAdapter == null ) { 41 Toast . makeText ( this , R. string . ble_not_supported , Toast . LEN GTH_SHORT ) . show () ; 42 finish(); 43 } 44 45 } 46 47 48 public void conectar ( View view ) { 49 // Access to the connect to BLE devices menu 50 51 Intent intent = new Intent(this , ScanActivity.class ); 52 startAc tivity ( intent ); 53 } 54 55 public void salir ( View view ){ 56 // Closes the app 57 58 finish(); 59 } 60 61 public void configuracion ( View view ){ 62 } 63 64 public void data(View view){ 65 66 // Access to the data display activity after clicking the " measures " button 67 68 Intent intent = new Intent ( g etA ppli cat ion Con tex t () , C onn ecte dAct ivit y . class ); 69 startAc tivity ( intent ); 70 } 71 72 }// End main activity Listing D.1: MainActivity.java D.1.2. ConnectedActivity.java 1package com . example . fisoapp . presentation ; 2 3import android . annotation . SuppressLint ; 4import android . bluetooth . B luetoothGattCharacter istic ; 5import android . bluetooth . BluetoothGattService ; 6import android . content . BroadcastReceiver ; 7import android . content . ComponentName ; 8import android.content.Context; 9import android . content . Intent ; 10 import android . content . IntentFilter ; 11 import android . content . ServiceConnection ; 12 import android . content . SharedPreferences ; 13 import android . graphics . Color ; 14 import android . os . Bundle ; 15 import android.os.IBinder; 16 import android . util . Log ; 17 import an dro id . view . Menu ; 18 import android . view . MenuItem ; 19 import an dro id . view . View ; 20 import android . widget . Button ; 21 import android . widget . ImageView ; 22 import android . widget . TextView ; 23 24 import androidx . appcompat . app . AppCompatActiv ity ; 25 import androidx . preference . PreferenceManager ; 26 27 import com . example . fisoapp .R ; 28 import com . example . fisoapp . data . Acquisition ; 29 import com . example . fisoapp . domain . GattAttribute s ; 30 import com . example . fisoapp . services . Bl uetoothLeS ervice ; 31 import com . github . mikephil . charting . charts . LineChart ; 32 import com . github . mikephil . charting . components . XAxis ; 33 import com . github . mikephil . charting . components . YAxis ; 34 import com . github . mikephil . charting . data . Entry ; 35 import com . github . mikephil . charting . data . LineData ; 36 import com . github . mikephil . charting . data . LineDataSet ; 37 38 import java . io . IOException ; 39 import java . util . ArrayList ; 40 import java . util . Arrays ; 41 import java.util.List; 42 import java.util.UUID; C´odigo fuente de la aplicaci´on Android 127 43 44 45 public class ConnectedActivity extends AppCompatActivity { 46 private final static String TAG = Conn ecte dAct ivit y . class . getSimpleName (); 47 48 public static final String EXTRAS_DEVICE_NAME = " DEVICE_NAME "; 49 public static final String EXTRAS_DEVICE_ADDRESS = " DEVICE_ADDRESS " ; 50 51 private TextView mConnectionState; 52 private String mDeviceName ; 53 private String mDeviceAddress; 54 private BluetoothLeService mBluetoothLeService; 55 private ArrayList < ArrayList < BluetoothGattCharacteristic >> mGattCharacteristics = 56 new ArrayList < ArrayList < BluetoothGattCharacteristic >>(); 57 private boolean mConnected = false ; 58 private BluetoothGattCharacteristic mNotifyCharacteristic ; 59 private BluetoothGattCharacteristic mCommandCharacteristic; 60 61 private com . github . mikephil . charting . charts . LineChart m LineChart ; 62 private View mBottomConnect; 63 private View mBottomQuit ; 64 65 private PreferenceManager mPrefManager ; 66 private SharedPreferences mPreferences ; 67 68 private final static ArrayList < String > prefs = 69 new ArrayList < >( Arrays . asList (" front " ," back "," coolant " ," oil " ," brakeL " ," brakeP " , 70 " wasser ") ); 71 72 private Acquisition mAcquisition; 73 74 TextView rms_value_display ; // RMS value display 75 76 77 @SuppressLint("RestrictedApi") 78 @Override 79 public void onCreate ( Bundle sav edIn stan ceSt ate ) { 80 super . onCreate ( s avedIn stanceState ); 81 setContentView (R. layout . activity_connected ); 82 83 // Creates LineChart use for plotting the data 84 mLineChart = new LineChart ( this); 85 mLineChart = ( LineChart ) findViewById (R. id. linechart_1 ) ; 86 mLineChart . setTouchEnabled ( true); 87 mLineChart . s etPinc hZoom ( false ); 88 mLineChart . setScaleEnabled ( true); 89 90 mBottomConnect = findViewById (R. id . connectButton ); 91 mBottomQuit = findViewById ( R. id . back_button ); 92 93 final Intent intent = getIntent (); 94 mDeviceName = intent . getStringExtra ( EXTRAS_DEVICE_NAME ); 95 mDeviceAddress = intent . getStringExtra ( EXTRAS_DEVICE_ADDRESS ); 96 97 // Sets up UI references . 98 mConnectionState = ( TextView ) findViewById (R. id . connection_state ); 99 100 mPrefManager= new PreferenceManager(this); 101 mPreferences = mPrefManager . getSharedPreferences () ; 102 103 // Set acquisition 104 mAcquisition = new Acquisition (); 105 106 Intent gattServiceIntent = new Intent(this, Bluet ooth LeS ervi ce . class ); 107 bindService ( gattServiceIntent , mServiceConnection , BIND_AUTO_CREATE ); 108 109 // Defines the used methods 110 renderData () ; 111 quit () ; 112 startAcq () ; 113 } 114 115 116 public void connect ( View view ){ 117 if( ! mConnected ) { 118 mBluet ooth LeService . connect ( mDevi ceAddr ess ) ; 119 } 120 } 121 122 123 public void quit (){ 124 // Stops Bluetooth connection and goes back to main menu 125 126 Button back_b utton = ( Button ) findVie wById ( R. id . back_button ); 127 back_button . setOnClickListener ( new View . OnClickListener () { 128 @Override 129 public void onClick ( View view ) {