¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Capnógrafo COVID19
by TCRobotics
En esta página se exponen los resultados del proyecto Capnógrafo, que forma parte del movimiento maker Coronavirusmakers.org y ha sido desarrollado durante el confinamiento por la pandemia de COVID19. En este artículo se recoge el fruto del trabajo de todos los colaboradores del proyecto. Los materiales para la fabricación del prototipo “BricoLabs” han sido financiados por BricoLabs.
<note warning>El Capnógrafo derarrollado en este proyecto no es un dispositivo médico Actualmente no cuenta con ninguna certificación médica y no es previsible que la llegue a tener. La responsabilidad en el uso del dispositivo debe ser asumida por quien decida construirlo y usarlo.</note>
Historia
El 14 de Marzo de 2020 comienza el confinamiento por la crisis del COVID19 en España y se crea el grupo de telegram Coronavirus Makers. Los esfuerzos se centran en crear viseras impresas en 3D y un respirador. Mi impresora está parada por el fallo de una pieza y el grupo del respirador ya está cerrado, por lo que buscando otros proyectos donde colaborar encuentro el grupo de Capnógrafo. Me pongo a colaborar con la busqueda de sensores y entro en contacto con la empresa Gas Sensing Solutions UK. Después de decidirnos a comprar un sensor desde BricoLabs, Gas Sensing me comunica que nos envían uno sin coste! Compramos desde BricoLabs materiales accesorios y se fabrica el primer prototipo.
Que es un capnógrafo?
Un capnógrafo es un instrumento de medida para medir la concentración de CO2 expirado.
Este proyecto implementa alternativas a los capnógrafos comerciales, rápidas, de bajo coste y open source .
Más información sobre la capnografía: https://en.wikipedia.org/wiki/Capnography
Software
Toda la documentación del proyecto así como el software más actual se encuentra en GitHub. Hemos tenido problemas con los permisos de los diferentes repositorios por lo que hemos ido haciendo forks. Por ello la versión más actual es la marcada en rojo de TCRobotics.
- Repositorio original: https://github.com/CoronavirusMakers/capnografo
- Fork de Miguel Fernandez: https://github.com/muit/capnograph
- Fork de TCRobotics(rama sensor): https://github.com/TCRobotics/capnograph/tree/sensor
El prototipo BricoLabs utiliza concretamente el siguiente proyecto realizado en Platformio: https://github.com/TCRobotics/capnograph/tree/sensor/Source%20simple/BricoCapnograph
Intentamos que el proyecto sea fácilmente replicable por lo que el código se ha hecho de manera que sea hackeable para utilizar los componentes hardware que tengas disponibles. Revisa la seccion de hardware para entender que materiales pueden funcionar antes de modificar el software o colaborar con el proyecto.
Estamos abiertos a la colaboración por lo que esperamos tus pull request en el git!
Hardware
En el proyecto se han explorado diferentes aproximaciones. La investigación sobre cada uno de los elementos también forma parte del proyecto por lo que también incluimos lo aprendido, pero lo particularizaremos para el prototipo BricoLabs
En general el hardware de un capnógrafo se compone de los siguientes elementos:
- Sensor CO2
- Microcontrolador
- Display
- Adquisición de aire
- Tubos de aire
- Trampa de agua
- Filtro de partículas hidrofóbico
- Bomba de aire
Sensor CO 2
Los sensores de CO2 para utilizar en un capnógrafo necesitan estas características:
- Capacidad de medir directamente la concentración de CO2. Los sensores Non dispersive infrared sensors (NDIR) sirven, los Metal Oxide sensors (MOS) no, porque solo estiman la concentración del CO2 mediante medidas indirectas.
- Deben tener un rango de medida de MÁS del 5% (MÁS de 50000ppm).
- El tiempo de respuesta debe ser menos de 1s con un flujo de aire de 500ml/min.
- El tiempo de muestreo debe ser menor o igual de 0.1s (10Hz)
Sensor prototipo BricoLabs
Para este prototipo hemos seleccionado el sensor SprintIR-R-20 por las siguientes razones:
- Es el sensor tope de gama en velocidad de muestreo (50 muestras/s).
- Tiene un buen rango para esta aplicación (20%).
- Tamaño compacto con entrada y salida para tubos.
- Posee salida digital con comunicación serie.Maybe slower versions (SprintIR-WF or SprintIR-6S) with 20Hz also work, but we have one shot ;)
Por lo experimentado durante este proyecto consideramos que el sensor SprintIR-6S-20 tambien puede funcionar correctamente. Este sensor se puede conseguir por menos de 100€ en pequeñas cantidades comprando directamente a su fabricante Gas Sensing.
Otros sensores válidos
En el proyecto otros miembros han intentado realizar otros prototipoc con el sensor I2C Pyreos epy12231. Otro grupo también ha trabajado con el sensor analógico Pyreos PY2343. Estas otras opciones son más complejas ya que requieren el desarrollo de PCBs, circuiteria adicional y la integración mecánica en el canal de ventilación. Puedes encontrar más información el los canales de Slack #sensor-epy12231 and #py2343_sensor
Sensores comprobados
En esta tabla se muestran los sensores evaludados y sus características:
| Modelo | Rango | Muestras/s | Calentamiento | Respuesta | Exactitud | Valido? | Precio |
|---|---|---|---|---|---|---|---|
| SprintIR-W-5 | 5% | 0.05s | <30s | 3s | 70ppm+5% | NO | ? |
| SprintIR-WF-20 | 20% | 0.05s | <30s | 3s | 70ppm+5% | maybe | 270€ |
| SprintIR-W-20 | 20% | 0.05s | <30s | 3s | 70ppm+5% | maybe | 138€ |
| SprintIR-W-60 | 60% | 0.05s | <30s | 3s | 70ppm+5% | maybe | 138€ |
| SprintIR-W-100 | 100% | 0.05s | <30s | 3s | 70ppm+5% | maybe | 138€ |
| SprintIR-6S-5 | 5% | 0.05s | <30s | <1s | 70ppm+5% | NO | 231€ |
| SprintIR-6S-20 | 20% | 0.05s | <30s | <1s | 70ppm+5% | SI | 231€ |
| SprintIR-6S-60 | 60% | 0.05s | <30s | <1s | 70ppm+5% | SI | 231€ |
| SprintIR-6S-100 | 100% | 0.05s | <30s | <1s | 70ppm+5% | SI | 231€ |
| SprintIR-R-5 | 5% | 0.02s | ? | <1s | 70ppm+5% | NO | 370€ |
| SprintIR-R-20 | 20% | 0.02s | ? | <1s | 70ppm+5% | SI | 370€ |
| SprintIR-R-60 | 60% | 0.02s | ? | <1s | 70ppm+5% | SI | 370€ |
| SprintIR-R-100 | 100% | 0.02s | ? | <1s | 70ppm+5% | SI | 370€ |
| ExploIR-W-5 | 5% | 0.5s | <10s | 10s | 70ppm+5% | NO | 101€ |
| ExploIR-W-20 | 20% | 0.5s | <10s | 10s | 70ppm+5% | NO | 101€ |
| ExploIR-W-60 | 60% | 0.5s | <10s | 10s | 70ppm+5% | NO | 101€ |
| ExploIR-W-100 | 100% | 0.5s | <10s | 10s | 70ppm+5% | NO | 101€ |
| ExploIR-M-20 | 20% | 0.5s | <10s | 10s | 70ppm+5% | NO | 222€ |
| ePY12231 | ? | 0.001s | ? | ? | ? | ? | 30€ |
| PY2343 | ? | ? | ? | ? | ? | ? | 60€ |
| K30 | 0.5% | 0.5s | 60s | 20s | 30ppm+3% | NO | 79€ |
| MH-Z19 | 0.5% | 5s | 180s | <60s | 50ppm+5% | NO | 27€ |
| MH-Z14A | 1% | ? | 189s | <120s | 10% | NO | 37€ |
| LI-820 | 2% | ? | 90m | ? | ? | NO | ? |
| DS-CO2-20 | 0.5% | ? | ? | ? | ? | NO | 27€ |
| SGP-30 | MOS | 1s | ? | ? | ? | NO | 20€ |
| MQ-135 | MOS | ? | ? | ? | ? | NO | 6€ |
| CCS811 | MOS | 1s | ? | ? | ? | NO | 21€ |
Enlaces a las datasheets en: https://github.com/TCRobotics/capnograph/blob/sensor/HW_co2sensors.md
Microcontrolador
No se necesitan especiales características ya que solo se necesitaría un puerto serie y comunicación SPI para la pantalla. Pero la velocidad de procesamiento si que puede ser un cuello de botella para poder tratar cada una de las puestras del sensor. Por si acaso en el prototipo BricoLabs elegimos utilizar el ESP32 que tiene todo lo necesario con una velocidad buena y además dispone de WiFi y Bluetooth para posibles expansiones.
Display
Es necesario un display para mostrar el gráfico de CO2 y las medidas de respiraciones por minuto (bpm) y End Tidal CO2 (etCO2). Se planteó prescindir del display y utilizar un ordenador portatil para mostrar la información, y aunque se podría utilizar facilmente, se descartó por sencillez de uso y ahorro de coste.
La elección del display se realizó por la facilidad de adquirir rapidamente y la universalidad de la libreria Adafruit_GFX y Adafruit_ST77XX que los soporta, al usar esta librería cualquier pantalla con driver ST77XX puede ser utilizada con pequeños cambios en el código.
El software https://github.com/TCRobotics/capnograph/tree/sensor utiliza por defecto el display FeiYang TFT LCD IPS GMT130-V1.0
Displays Soportados
-
- Resolución 128×160
- 262K colores
- 1.8 pulgadas
- Control por SPI
- Driver ST7735
-
- Resolución 240×240
- 65K colors
- 1.3 inch
- SPI control
- ST7789 driver
Pinado
| ST7735 pin | Function | ESP32 pin |
|---|---|---|
| VCC | Power | 3V3 |
| GND | Power | GND |
| SCK | SPI clock | 18 |
| SDA | SPI data | 23 |
| DC | SPI Data Command | 2 |
| CS | Chip select | 5 |
| RST | Reset | 4 |
| BLK | Back light | 3V3/NC |
| ST7789 pin | Function | ESP32 pin |
|---|---|---|
| VCC | Power | 3V3 |
| GND | Power | GND |
| SCK | SPI clock | 18 |
| SDA | SPI data | 23 |
| DC | SPI Data Command | 2 |
| RES | Reset | 4 |
| BLK | Back light | 3V3 |
Adquisición de Aire
Hay dos métodos para acceder a la respiración del paciente y poder medir:
- Main-stream
- Side-sream
Main stream
En este método el sensor está localizado entre el paciente y el circuito de respiración. El sensor “ve” a través de unas ventanas transparentes de un adaptador especial, la luz infraroja de un emisor situado en el lado opuesto. para prevenir la condensación, el aire es calentado un poco más que la temperatura del cuerpo humano.
Ventajas
- No hay obstrucción
- No crea cambios de presión
- Normalmente no hay problemas con la esterilizaciión ya que el sensor no tiene contacto con la respiración
- No introduce polución
- No hay retardo en el gráfico
- Adecuado para uso en niños
Desventajas
- Las ventanas del sensor se pueden ensuciar con las secreciones
- Dificil de utilizar en posiciones inusuales como (prono)
- Algunos modelos son pesados
- Solo puede ser utilizado en pacientes intubados
- Dificil de crear un adaptador y ventanas de manera DiY
Algunos miembros del proyecto están intentando utilizar este método con los sensores epy12231 y py2343. Más información el los canales de Slack #sensor-epy12231 and #py2343_sensor
Side stream
Este método utiliza un tubo de muestra conectado a un a pieza en forma de T. El sensor está localiazado en la unidad principal y una pequeña boma aspira una pequeña muestra de la expiración para medirla. Si el paciente tiene una enfermedad contagiosa por la respiración como COVID19 o tiene gases anestésicos en el canal de aire, la salida de la bomba de aire debe ser devuelta al canal de aire o llevada a un filtro de gases.
Ventajas
- Fácil de conectar
- Puede ser utilizada en pacientes despiertos y no intubados
- Facil de utilizar en posiciones inusuales (prono)
Desventajas
- Posible obstrucción del tubo
- El vapor de agua puede afectar a la medida del sensor si llega al mismo
- Algo de retraso en el gráfico debido al transporte de gases
Adquisición de aire en el prototipo "BricoLabs"
En el prototipo se utiliza el método de side stream de la siguiente manera:
PACIENTE > FILTRO DE PARTÍCULAS > TRAMPA DE AGUA > FILTRO HIDROFÓBICO > SENSOR > BOMBA
Toda la sección de adquisición de aire debe ser esteril y no compartirse entre pacientes. Habitualmente todos sus elementos (salvo el sensor y la bomba que no se cambiarían) suelen estar disponibles en los hospitales por que se utilizan para los sistemas de respiración, anestesia etc. Por lo que no entrarían en el alcance del proyecto, sin embargo para realizar pruebas hemos tenido que conseguir este material, por lo que a continuación se expone lo que hemos utilizado.
Tubos
Utilizamos principalmente tubos de diámetro interno 6mm para la linea de aire y de 8mm para usarlos como adaptadores para las entradas de filtros y bomba.
Trampa de agua
La trampa de agua es necesaria para eliminar tanto vapor de agua como sea posible por que afecta al correcto funcionamiento del sensor. No encontramos ninguna trampa de agua que pudieramos comprar a nivel particular pero puede realizarse con un pequeño tarro de cristal con un par de agujeros en su tapa donde entran y salen dos tubos.
Filtro de partículas hidrofóbico
Parece que es necesario primero un filtro de partículas de 150 micrones y despues de la trampa de agua un filtro hidrofóbico de 0.22 micrones. Para el prototipo de BricoLabs no encontramos filtro de particulas, pero encontramos un filtro de 1 micron con membrana hidrofóbica de EPTFE. En los test sin trampa de agua vimos que casi todo el vapor de agua se contenía en el filtro, pero definitivamente se necesita una filtración correcta.
Bomba
Es recomendable una bomba de succión de 500ml/min, pero solo conseguimos rapidamente con envio local una de Sparkfun que tiene 12-15l/min. Para conseguir menos caudal la alimentamos con menos voltaje.
Lista de materiales prototipo "BricoLabs"
- Sensor CO2</sub>SprintIR-R-20 (sustituible por SprintIR-6S-20)
- TTGO MINI 32 tarjeta ESP32 (sustituible por cualquiera que utilize ESP32)
- 1.3" TFT IPS 240x240 65k ST7735 Display (o similar con driver ST77XX)
- Adquisición de aire
- Trampa de agua (pendiente de encontrar)
- Bomba de aire ROB-10398 Sparkfun (sobredimensionada! mejor una de 500ml/min)
Pinado
| Pin ESP32 | Función | Pin dispositivo |
|---|---|---|
| 3V3 | LCD Power | LCD VCC |
| 3V3 | LCD Back light | LCD BLK |
| GND | LCD Power | LCD GND |
| 18 | LCD SPI clock | LCD SCK |
| 23 | LCD SPI data | LCD SDA |
| 2 | LCD SPI Data Command | LCD DC |
| 4 | LCD Reset | LCD RES |
| 3V3 | CO2 Sensor Power | LCD VCC |
| GND | CO2 Sensor Power | LCD GND |
| 16 | CO2 Sensor TX | Sensor TX |
| 17 | CO2 Sensor RX | Sensor RX |
Equipo
- Otros colaboradores del grupo CoronavirusMakers Capnógrafo
Recursos externos del proyecto
- Web principal del proyecto para recursos, resúmenes y canales de colaboración: https://capnography.zyrosite.com/
- Grupo de Telegram del proyecto: https://t.me/joinchat/AHkqjBnI4c5RSNvks5OjxA
Enlaces de interés
- Real-time human respiration carbon dioxide measurement device for cardiorespiratory assessment - Om Prakash Singh: https://www.researchgate.net/publication/319942280_Real_time_human_respiration_carbon_dioxide_measurement_device_for_cardiorespiratory_assessment
- Diseño de un Capnógrafo - Milton Andrés Piedra Avecillas: http://dspace.uazuay.edu.ec/bitstream/datos/2199/1/09661.pdf
Agradecimientos
Gas Sensing Solutions UK por proporcionarnos de manera gratuita un sensor para este proyecto.
Om Prakash Singh por su investigación en instrumentación médica low cost y su ayuda personal.
A todos los miembros del grupo de Telegram CoronavirusMakers Capnógrafo por todas sus contribuciones
