Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Componentes y suministros

ComponenteCantidadNotas
Arduino UNO1Para versión con Arduino
Shield de 4 Relés para Arduino1Para versión con Arduino
Servo Digital MG9951Para todas las versiones
Módulo LM2596S2Para todas las versiones
Potenciómetro multivuelta lineal 10k1Para todas las versiones
Fuente de alimentación PCIe 12V 5A 60W Digilent1Para todas las versiones
LED 5 mm Rojo1Para todas las versiones
LED 5 mm Verde1Para todas las versiones
LCD Alfanumérico 20x41Para todas las versiones
Interruptor 220V1Para todas las versiones
Máscara de snorkel facial completa1
Válvula Solenoide 2 Vías1

Herramientas y máquinas necesarias

Aplicaciones y servicios en línea

Sobre el proyecto

Ventilador no invasivo de código abierto. Es de bajo costo y fácil de construir, un respirador de emergencia para combatir la crisis sanitaria del COVID-19 cuando no hay ventiladores disponibles y mientras el paciente no esté sedado ni intubado.

Este proyecto surgió de un reto lanzado por mi ex profesor y amigo Serafim Pires, quien me contactó mostrando un proyecto español, sugiriendo que sería bueno desarrollar un proyecto para ayudar a combatir esta crisis mundial.

Tras varias investigaciones y estudios sobre ventilación no invasiva, construí este prototipo funcional basado en 2 tecnologías existentes.

Todas las pruebas fueron exitosas, con una prueba funcional de más de 20 días sin ningún problema o interrupción.

La ventilación no invasiva se administra mediante mascarillas faciales o nasales, que impulsan una cantidad determinada de aire presurizado hacia los pulmones. Esto apoya el proceso respiratorio natural cuando una enfermedad ha causado el fallo pulmonar, permitiendo al cuerpo combatir la infección y recuperarse.

Basado en investigaciones realizadas en Italia, utilicé esta tecnología en mi proyecto que convierte una máscara de snorkel Decathlon en un ventilador de emergencia para pacientes con COVID-19, ayudando a mitigar la falta de ventiladores durante el pico de la pandemia.

Estas máscaras se han adaptado y utilizado en todo el mundo debido a su bajo coste y fácil adaptación.

Los resultados fueron evidentes y, recientemente, esta tecnología también se utilizó en Portugal en el Hospital de Santarém.

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Noticia en periódico de Portugal

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Entrevista en una radio local que se volvió viral en redes sociales en Portugal.

Primera prueba de operación usando un pequeño volumen de aire y 15 ciclos respiratorios cambiando la frecuencia y el PEEP para demostración.

ADVERTENCIA: Este prototipo no ha sido validado por ningún organismo oficial y declino toda responsabilidad por su uso. Además, se utilizará como último recurso y por personal médico entrenado, este equipo está destinado a salvar vidas en una situación de pico extremo. El proyecto sin ánimo de lucro puede replicarse masivamente, si es aprobado por las autoridades competentes en Portugal.

Código

INOVT_COVID19_Version_2.2.ino (Arduino)

/* Programa ventilador pulmonar INOVT COVID-19 Versión 2.2
 * Autor: David Pascoal
 * El equipo ha sido probado y comprobado, seguridad con sensor de presión,
 * Salida de alarma para activar zumbador.
 */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27,20,4);
#define PIN_SERVO 6
#define PIN_FREQ A1
#define PIN_PEEP A0
#define PIN_LED 2
#define PIN_LED2 3
#define PIN_Alarm_Relay 8
#define PIN_Safety_Valve 9
#define SENSOR_FLOW A3
#define EXPIRANDO 0
#define INSPIRANDO 1
#define MIN_ANGLE 92
#define MAX_ANGLE 139

int frecuencia = 0;
int valInspira = 0;
int valExpira = 0;
int valPeep = 0;
int aux;
int x = 500;
int y = 1000;
unsigned long time;
Servo myServo;
int frecuencia_ant;
int valPeep_ant;
int estado;

// Funciones de interfaz gráfica en LCD (logo, inicio, animaciones)
void logo() { ... }
void initior() { ... }
void maobc() { ... }
void thumbdownA() { ... }
void thumbsup() { ... }

void setServo() {
  if (millis() > time) {
    if (estado == EXPIRANDO) {
      digitalWrite(PIN_LED2, LOW);
      digitalWrite(PIN_LED, HIGH);
      myServo.write(MIN_ANGLE);
      time = millis() + (valInspira * 100);
      estado = INSPIRANDO;
      lcd.setCursor(8, 2);
      lcd.print("EXPIRANDO > ");
    } else if (estado == INSPIRANDO) {
      digitalWrite(PIN_LED2, HIGH);
      digitalWrite(PIN_LED, LOW);
      myServo.write(MAX_ANGLE - valPeep);
      time = millis() + (valExpira * 100);
      estado = EXPIRANDO;
      lcd.setCursor(8, 2);
      lcd.print("INSPIRANDO < ");
    }
  }
}

void setup() {
  myServo.attach(PIN_SERVO);
  myServo.write(92);
  pinMode(PIN_FREQ, INPUT_PULLUP);
  pinMode(PIN_PEEP, INPUT_PULLUP);
  pinMode(SENSOR_FLOW, INPUT);
  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_LED2, OUTPUT);
  pinMode(PIN_Alarm_Relay, OUTPUT);
  pinMode(PIN_Safety_Valve, OUTPUT);
  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor(0,0);
  logo();
  lcd.setCursor(4,2);
  lcd.print("OPEN-SOURCE");
  lcd.setCursor(0,3);
  lcd.print("Pulmonary Ventilator");
  delay(4000);
  lcd.clear();
  lcd.print("....Initializing....");
  initior();
  delay(500);
  lcd.clear();
  maobc();
  lcd.clear();
  if (digitalRead(SENSOR_FLOW) == LOW) {
    thumbsup();
    lcd.setCursor(0,0);
    lcd.print("SYSTEM");
    lcd.setCursor(2,1);
    lcd.print("OK");
    delay(5000);
    lcd.clear();
  } else {
    myServo.write(139);
    thumbdownA();
    lcd.setCursor(0,0);
    lcd.print("SYSTEM");
    lcd.setCursor(1,1);
    lcd.print("FAIL");
    delay(5000);
    lcd.clear();
    Serial.begin(9600);
    time = millis();
    frecuencia_ant = -1;
    valPeep_ant = -1;
  }
  delay(500);
  estado = EXPIRANDO;
}

void loop() {
  digitalRead(SENSOR_FLOW);
  aux = analogRead(PIN_FREQ);
  frecuencia = map(aux, 0, 1023, 10, 60);
  valInspira = ((1.0 / frecuencia) * 600.0) * (1.0/3.0);
  valExpira = ((1.0 / frecuencia) * 600.0) * (2.0/3.0);
  aux = analogRead(PIN_PEEP);
  valPeep = map(aux, 0, 1023, 0, 10);

  if ((frecuencia_ant != frecuencia) || (valPeep_ant != valPeep)) {
    Serial.print("Frecuencia: "); Serial.println(frecuencia);
    Serial.print("Inspira: "); Serial.println(valInspira);
    Serial.print("Expira: "); Serial.println(valExpira);
    Serial.print("Peep: "); Serial.println(valPeep);
    lcd.setCursor(1, 0); lcd.print("FRECUENCIA: ");
    lcd.setCursor(13, 0); lcd.print(frecuencia);
    lcd.setCursor(1, 1); lcd.print("PEEP: ");
    lcd.setCursor(13, 1); lcd.print(valPeep);
    lcd.setCursor(0, 2); lcd.print("ESTADO: ");
    lcd.setCursor(0, 3); lcd.print("VENTILADOR D.PASCOAL ");
    frecuencia_ant = frecuencia;
    valPeep_ant = valPeep;
  }

  if (digitalRead(SENSOR_FLOW) == HIGH) {
    myServo.write(139);
    digitalWrite(PIN_Alarm_Relay, HIGH);
    digitalWrite(PIN_Safety_Valve, HIGH);
    lcd.clear();
    thumbdownA();
    lcd.setCursor(0,0); lcd.print("SYSTEM");
    lcd.setCursor(1,1); lcd.print("FAIL");
    lcd.setCursor(1,2); lcd.print("******************");
    lcd.setCursor(3,3); lcd.print("Check AR flow");
    lcd.setCursor(12,1); lcd.print("ALARM");
    digitalWrite(PIN_LED, HIGH);
    digitalWrite(PIN_LED2, HIGH);
    delay(500);
    lcd.setCursor(12,1); lcd.print(" ");
    delay(500);
    lcd.setCursor(12,1); lcd.print("ALARM");
    digitalWrite(PIN_LED, LOW);
    digitalWrite(PIN_LED2, LOW);
    delay(1000);
    lcd.clear();
  } else {
    digitalWrite(PIN_Alarm_Relay, LOW);
    digitalWrite(PIN_Safety_Valve, LOW);
    setServo();
    delay(10);
  }
}

El archivo INOVT_COVID19_Version_2.2.rar solo está disponible para descarga.

Piezas personalizadas y cajas

Deben imprimirse en una impresora 3D. Requieren cierta precisión.

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Instrucciones paso a paso completas para modificar la máscara de buceo y convertirla en una mascarilla de respiración presurizada.

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Requiere precisión. Impresora 3D de alta resolución.

inovt_covid19_version_2_0_david_pascoal_0mbFUa0ce1.rar

Esquemáticos

Diagrama de la versión autónoma, no necesita columna de aire del hospital.

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Versión 2.2. Con guardia de seguridad y salida de alarma.

Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino Ventilador Pulmonar COVID-19 de Código Abierto – Sistema DIY de Soporte Respiratorio Basado en Arduino

Proceso de manufactura

  1. Construye un Spybot controlado por Bluetooth con Arduino
  2. FlickMote: Mando IR por gestos para Smart Home
  3. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  4. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  5. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  6. Soluciones de Alimentación Optimizadas para Proyectos Arduino
  7. Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
  8. Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
  9. Construye un volante joystick personalizado con Arduino para gaming
  10. Construye una Máquina CNC Totalmente Funcional con Arduino Nano R3
  11. Placa de referencia open-source acelera desarrollo rápido de ventiladores médicos