Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Open-Source COVID-19 Lungenbeatmungsgerät

Komponenten und Verbrauchsmaterialien

Arduino UNO
Für Version mit Arduino
× 1
Arduino 4 Relais Schild
Für Version mit Arduino
× 1
Digital Servo MG995
Für alle Versionen
× 1
LM2596S-Modul
Für alle Versionen
× 2
10k lineares Multiturn-Potentiometer
Für alle Versionen
× 1
Digilent 60W PCIe 12V 5A Netzteil
Für alle Versionen
× 1
5 mm LED:Rot
Für alle Versionen
× 1
5 mm LED:Grün
× 1
Alphanumerisches LCD, 20 x 4
Für alle Versionen
× 1
Schalter 220v
Für alle Versionen
× 1
Schnorchel-Vollgesicht
× 1
Magnetventil, 2 Wege
× 1

Notwendige Werkzeuge und Maschinen

3D-Drucker (generisch)
A8
300-001 - Lightbox, UV-Belichtung

Apps und Onlinedienste

Arduino-IDE
PcB-Eleganz
Autodesk Fusion 360

Über dieses Projekt

Nicht-invasives Open-Source-Beatmungsgerät Sein kostengünstiges und einfach zu bauendes Notfall-Beatmungsgerät zur Bekämpfung der Gesundheitskrise Covid19, wenn keine Beatmungsgeräte verfügbar sind und der Patient nicht sediert oder intubiert ist.

Dieses Projekt war das Ergebnis einer Herausforderung, die mein Ex-Lehrer und Freund Serafim Pires ins Leben gerufen hatte

Nach mehreren Recherchen und Studien zum Thema nicht-invasive Beatmung habe ich diesen funktionalen Prototyp basierend auf 2 bestehenden Technologien gebaut,

Alle Tests waren erfolgreich und bei einem Funktionstest mit mehr als 20 Tagen ohne Probleme und Unterbrechungen.

Die nicht-invasive Beatmung erfolgt über Nasenmasken mit Gesichtsmasken, die eine bestimmte Menge Druckluft in die Lunge drücken. Dies unterstützt den natürlichen Atmungsprozess, wenn eine Krankheit zum Versagen der Lunge geführt hat, und ermöglicht dem Körper, Infektionen zu bekämpfen und sich zu erholen.

Basierend auf Forschungen in Italien habe ich diese Technologie in meinem Projekt verwendet, das eine Decathlon-Schnorchelmaske in ein Notfallbeatmungsgerät für Patienten mit COVID-19 verwandelt, um den Mangel an Beatmungsgeräten während des Höhepunkts der Coronavirus-Pandemie zu mildern.

Diese Masken wurden aufgrund ihrer geringen Kosten und einfachen Anpassung an Standorten auf der ganzen Welt angepasst und verwendet.

Die Ergebnisse waren offensichtlich und kürzlich wurde diese Technologie auch hier in Portugal im Krankenhaus von Santarém eingesetzt.

https://www.prosaude.org.br/noticias/hospital-regional-de-santarem-utiliza-mascaras-de-mergulho-no-tratamento-da-covid-19/?fbclid=IwAR36UVLXCztk0zSSJwTCBQ1lgb5iYmY1Ha_tqw-KQr P>

Nachrichten in der Zeitung in Portugal.

Iterview in einem lokalen Radio ging in den sozialen Netzwerken in Portugal viral.

.

Erster Funktionstest mit einem kleinen Luftvolumen und 15 Atemzyklen mit Änderung der Atemfrequenz und des Pieps zur Demonstration.


WARNUNG:Dieser Prototyp wurde noch von keiner offiziellen Stelle validiert und ich lehne jede Verantwortung für seine Verwendung ab.

Darüber hinaus wird es als letztes Mittel und von geschultem medizinischem Personal eingesetzt, dieses Gerät soll in einer extremen Spitzensituation Leben retten.

Das gemeinnützige Projekt kann massenhaft repliziert werden, wenn es von den zuständigen Behörden in Portugal genehmigt wird.

Code

  • INOVT_COVID19_Version_2.2.ino
  • INOVT_COVID19_Version_2.2.rar
INOVT_COVID19_Version_2.2.inoArduino
/* Programm Lungenbeatmungsgerät INOVT COVID-19 Versio 2.2 * Autor:David Pascoal * Das Gerät wurde getestet und nachgewiesen, Sicherheit mit Drucksensor, * Alarmausgang zum Einschalten von Buzer oder Käfer.*/#include  #include #include 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 define139 =0;int valInspira =0;int valExpira =0;int valPeep =0; int aux; intx =500; int y =1000;unsigned long time;Servo myServo;int frecuencia_ant;int valPeep_ant;int estado;void logo(){ byte a3[8]={ B00011, B00111, B01100, B11000, B10000, B00000, B00000 };Byte a2 [8]={B00000, B00000, B00000, B00000, B10001, B11111, B01110};Byte a1[8]={B11000, B01100, B00110, B00011, B00001, B00000, B00000};Byte a4[9]={ B00000 , B00000, B00000, B00001, B00011, B00110, B01100, B11000 };Byte a5[9]={ B00000, B01110, B11111, B10001, B00000, B00000, B00000, B01110, B00000,};Byte a6[8]={ B00000, B00000, B00000, B10000, B11000, B01100, B00110, B00011};Byte a7[10]={ B00000, B01110, B11111, B10001, B00000, B00000, B00000, B00000, };Byte a8[8]={B00100 , B01110, B00100, B00000, B10001, B11111, B01110}; lcd.print("*COVID19*"); lcd.setCursor(0,1); lcd.print("..INOVT.."); lcd.createChar(0,a1); lcd.createChar(1,a2); lcd.createChar(2,a3); lcd.createChar(7,a8); lcd.createChar(3,a4); lcd.createChar(4,a5); lcd.createChar(5,a6); lcd.createChar(6,a7); lcd.setCursor(10,0); lcd.write (byte (3)); lcd.write (byte (4)); lcd.write (byte (5)); lcd.write (byte (3)); lcd.write(byte(6)); lcd.write (byte (5)); lcd.setCursor(10,1); lcd.write (byte (0)); lcd.write(byte(1)); lcd.write (byte (2)); lcd.write (byte (0)); lcd.write (byte (7)); lcd.write (byte (2)); }void initior() { byte c11[8] ={B00000,B00000,B11111,B11111,B11111,B11111,B00000,B00000};lcd.createChar(3, c11);lcd.setCursor(0, 2); lcd.write(3); Verzögerung(x);lcd.setCursor(1, 2); lcd.write(3); Verzögerung(x); digitalWrite(PIN_LED,HIGH);lcd.setCursor(2, 2); lcd.write(3); Verzögerung(x);lcd.setCursor(3, 2); lcd.write(3); Verzögerung(x); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(4, 2); lcd.write(3); Verzögerung(x);lcd.setCursor(5, 2); lcd.write(3); Verzögerung(x); digitalWrite(PIN_LED,LOW);lcd.setCursor(6, 2); lcd.write(3); delay(x);lcd.setCursor(7, 2);lcd.write(3); Verzögerung(x); digitalWrite(PIN_LED2,LOW);lcd.setCursor(8, 2); lcd.write(3); Verzögerung(x); digitalWrite (PIN_LED, HOCH); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(9, 2); lcd.write(3); Verzögerung(x); myServo.write(100); digitalWrite (PIN_LED, LOW); digitalWrite(PIN_LED2,LOW);lcd.setCursor(10, 2); lcd.write(3); Verzögerung(x); digitalWrite (PIN_LED, HOCH); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(11, 2);lcd.write(3); Verzögerung(x); myServo.write(110); digitalWrite (PIN_LED, LOW); digitalWrite(PIN_LED2,LOW);lcd.setCursor(12, 2); lcd.write(3); Verzögerung(x); digitalWrite (PIN_LED, HOCH); digitalWrite (PIN_LED2, HOCH); lcd.setCursor(13, 2); lcd.write(3); Verzögerung(x); myServo.write(115); digitalWrite (PIN_LED, LOW); digitalWrite(PIN_LED2,LOW);lcd.setCursor(14, 2); lcd.write(3); Verzögerung(x); digitalWrite (PIN_LED, HOCH); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(15, 2); lcd.write(3); Verzögerung(x); myServo.write(120); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor(16, 2); lcd.write(3); Verzögerung(x); digitalWrite (PIN_LED, HOCH); digitalWrite (PIN_LED2, HOCH); lcd.setCursor(17, 2); lcd.write(3); delay(x);myServo.write(130); digitalWrite (PIN_LED, LOW); digitalWrite(PIN_LED2,LOW);lcd.setCursor(18, 2); lcd.write(3); Verzögerung(x); lcd.setCursor(19, 2); lcd.write(3); delay(x);}void maobc() { ThumbdownA(); Verzögerung(x); lcd.clear(); Daumen hoch(); Verzögerung(x); Daumen nach untenA(); Verzögerung(x); lcd.clear(); Daumen hoch(); Verzögerung(x); Daumen nach untenA(); Verzögerung(x); lcd.clear(); Daumen hoch(); Verzögerung(x); Daumen nach untenA(); Verzögerung(x); lcd.clear(); Daumen hoch(); Verzögerung (1000); lcd.clear();} void thumbdownA() { byte thumb1[8] ={B00001,B00010,B00011,B00100,B00011,B00100,B00011,B00100}; Byte-Daumen2[8] ={B00011,B00000,B00000,B00000,B00000,B00000,B00000,B00000}; Byte-Daumen3[8] ={B11110,B00001,B00000,B00000,B00000,B00000,B00000,B00000}; Byte-Daumen4[8] ={B00000,B11110,B01000,B10001,B10010,B10010,B01100,B00000}; Byte-Daumen5[8] ={B00000,B10000,B01110,B00010,B00010,B00010,B00010,B00010}; Byte-Daumen6[8] ={B00110,B01000,B10000,B00000,B00000,B00000,B00000,B00000}; lcd.createChar(6, Daumen1); lcd.createChar(1, Daumen2); lcd.createChar(2, thumb3); lcd.createChar(3, thumb4); lcd.createChar(4, thumb5); lcd.createChar(5, thumb6); lcd.setCursor(7,0); lcd.write(6); lcd.setCursor(7,1); lcd.write(1); lcd.setCursor(8,0); lcd.write(2); lcd.setCursor(8,1); lcd.write(3); lcd.setCursor(9,0); lcd.write(4); lcd.setCursor(9,1); lcd.write(5);}void thumbsup() { byte thumb1[8] ={B00100,B00011,B00100,B00011,B00100,B00011,B00010,B00001}; Byte-Daumen2[8] ={B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00011}; Byte-Daumen3[8] ={B00000,B00000,B00000,B00000,B00000,B00000,B00001,B11110}; Byte-Daumen4[8] ={B00000,B01100,B10010,B10010,B10001,B01000,B11110,B00000}; Byte-Daumen5[8] ={B00010,B00010,B00010,B00010,B00010,B01110,B10000,B00000}; Byte-Daumen6[8] ={B00000,B00000,B00000,B00000,B00000,B10000,B01000,B00110}; lcd.createChar(6, Daumen1); lcd.createChar(1, Daumen2); lcd.createChar(2, thumb3); lcd.createChar(3, thumb4); lcd.createChar(4, thumb5); lcd.createChar(5, thumb6); lcd.setCursor(7,1); lcd.write(6); lcd.setCursor(7,0); lcd.write(1); lcd.setCursor(8,1); lcd.write(2); lcd.setCursor(8,0); lcd.write(3); lcd.setCursor(9,1); lcd.write(4); lcd.setCursor(9,0); lcd.write (5);}void setServo () { if ( millis ()> time) { if ( estado ==EXPIRANDO ) { // Pasar a inspirandO digitalWrite (PIN_LED2,LOW); digitalWrite (PIN_LED, HOCH); myServo.write (MIN_ANGLE); Zeit =Millis() + (valInspira * 100); estado =INSPIRANDO; lcd.setCursor(8, 2); lcd.print("EXPIRANDO>"); aufrechtzuerhalten. Sonst if (estado ==INSPIRANDO) {// P0asar ein Expirando digitalWrite (PIN_LED2,HIGH); digitalWrite (PIN_LED, LOW); myServo.write(MAX_ANGLE - valPeep); Zeit =Millis() + (valExpira * 100); estado =EXPIRANDO; lcd.setCursor(8, 2); lcd.print("INSPIRANDO <"); } }}void setup () { myServo.attach (PIN_SERVO); myServo.write(92); // digitalWrite (PIN_LED, LOW); pinMode(PIN_FREQ,INPUT_PULLUP); pinMode(PIN_PEEP,INPUT_PULLUP); pinMode (SENSOR_FLOW,EINGANG); pinMode (PIN_LED, AUSGANG); pinMode (PIN_LED2, AUSGANG); pinMode (PIN_Alarm_Relay,OUTPUT); pinMode (PIN_Safety_Valve,OUTPUT); lcd.init(); LCD-Rücklicht(); lcd.clear(); lcd.setCursor(0,0); Logo(); lcd.setCursor(4,2); lcd.print("OPEN-SOURCE"); lcd.setCursor(0,3); lcd.print("Lungenventilator"); Verzögerung (4000); lcd.clear(); lcd.print("....Initialisierung...."); Initiator(); Verzögerung (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"); Verzögerung (5000); lcd.clear(); aufrechtzuerhalten. Sonst { myServo.write (139); Daumen nach untenA(); lcd.setCursor(0,0); lcd.print("SYSTEM"); lcd.setCursor(1,1); lcd.print("FEHLER"); Verzögerung (5000); lcd.clear(); Serial.begin (9600); Zeit =Millise(); frecuencia_ant=-1; valPeep_ant=-1; } Verzögerung (500); estado=EXPIRANDO; } ungültige Schleife () {digitalRead (SENSOR_FLOW); aux =analogRead (PIN_FREQ); frecuencia =map(aux,0,1023, 10, 60); valInspira =((1,0/Frequenz) * 600,0) * (1,0/3,0); valExpira =((1,0 / Frequenz) * 600,0) * (2,0/3,0); aux =analogRead (PIN_PEEP); valPeep =map(aux,0,1023, 0, 10); if ( (frecuencia_ant !=frecuencia) || (valPeep_ant !=valPeep)) {//Pode monitorizar os valores de frequencia und PEEP sem display usando oder monitor series do Arduino IDE. Serial.print ("Frecuencia:"); Serial.println (Frequenz); Serial.print("Inspira:"); Serial.println (valInspira); Serial.print("Expira:"); Serial.println (valExpira); Serial.print("Peep:"); Serial.println (valPeep); lcd.setCursor(1, 0); lcd.print("FREQUENZ:"); lcd.setCursor(13, 0); lcd.print (Frequenz); lcd.setCursor(1, 1); lcd.print("PEEP:"); lcd.setCursor(13, 1); lcd.print (valPeep); // Verzögerung (500); lcd.setCursor(0, 2); lcd.print("ESTADO:"); lcd.setCursor(0, 3); lcd.print("VENTILADOR D.PASCOAL"); frecuencia_ant =frecuencia; valPeep_ant =valPeep; aufrechtzuerhalten. Wenn (digitalRead (SENSOR_FLOW) ==HIGH) { myServo.write (139); digitalWrite (PIN_Alarm_Relay, HOCH); digitalWrite (PIN_Safety_Valve,HIGH); lcd.clear(); Daumen nach untenA(); lcd.setCursor(0,0); lcd.print("SYSTEM"); lcd.setCursor(1,1); lcd.print("FEHLER"); lcd.setCursor(1,2); lcd.print("*******************"); lcd.setCursor(3,3); lcd.print("AR-Fluss prüfen"); lcd.setCursor(12,1); lcd.print("ALARM"); digitalWrite (PIN_LED, HOCH); digitalWrite (PIN_LED2, HOCH); Verzögerung (500); lcd.setCursor(12,1); lcd.print(" "); Verzögerung (500); lcd.setCursor(12,1); lcd.print("ALARM"); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); Verzögerung (1000); lcd.clear(); aufrechtzuerhalten. Sonst { DigitalWrite (PIN_Alarm_Relay, LOW); digitalWrite (PIN_Safety_Valve,LOW); setServo(); Verzögerung(10);}}
INOVT_COVID19_Version_2.2.rarC/C++
Keine Vorschau (nur Download).

Kundenspezifische Teile und Gehäuse

Sie müssen auf einem 3D-Drucker gedruckt werden.
Erfordert etwas Präzision. Vollständige Schritt-für-Schritt-Anleitung zum Wechseln der Tauchermaske und Verwandlung in eine Druckatemmaske Erfordert eine gewisse Genauigkeit.
Hochauflösender 3D-Drucker inovt_covid19_version_2_0_david_pascoal_0mbFUa0ce1.rar

Schaltpläne

Diagramm der autonomen Version,
benötigt die Krankenhausluftsäule nicht. Version 2.2 .
Mit Sicherheitswächter und Alarmausgang. Version 2.2 .
Mit Sicherheitswächter und Alarmausgang.

Herstellungsprozess

  1. Open-Source-Referenzboard zielt auf den schnellen Einsatz medizinischer Beatmungsgeräte ab
  2. Arduino Spybot
  3. FlickMote
  4. Selbstgemachter Fernseher B-Gone
  5. Hauptuhr
  6. Finde mich
  7. Arduino-Power
  8. Tech-TicTacToe
  9. Arduino-Vierbeiner
  10. Arduino-Joystick