Open-source COVID-19 longbeademingsapparaat
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
| ||||
|
Apps en online services
| ||||
| ||||
|
Over dit project
Open source niet-invasief beademingsapparaat Het is goedkoop en eenvoudig te bouwen, een noodbeademingsapparaat om de gezondheidscrisis Covid19 te bestrijden als er geen beademingsapparatuur beschikbaar is en zolang de patiënt niet verdoofd of geïntubeerd is.
Dit project was het resultaat van een uitdaging die werd gelanceerd door mijn ex-leraar en vriend Serafim Pires, die contact met me opnam met een Spaans project en zei dat het goed zou zijn als ik een project zou kunnen ontwikkelen om deze wereldcrisis te helpen bestrijden.
Na verschillende onderzoeken en studies over het onderwerp niet-invasieve beademing heb ik dit functionele prototype gebouwd op basis van 2 bestaande technologieën,
Alle tests waren succesvol en met een functionele test van meer dan 20 dagen zonder enig probleem of onderbreking.
Niet-invasieve ventilatie wordt geleverd met behulp van gezichtsmaskers, neusmaskers, die een bepaalde hoeveelheid perslucht in de longen duwen. Dit ondersteunt het natuurlijke ademhalingsproces wanneer ziekte de longen heeft doen uitvallen, waardoor het lichaam infecties kan bestrijden en beter kan worden.
Op basis van onderzoek in Italië heb ik deze technologie gebruikt in mijn project dat een Decathlon-snorkelmasker verandert in een noodventilator voor patiënten die lijden aan COVID-19, om het gebrek aan ventilatoren tijdens de piek van de coronaviruspandemie te helpen verminderen.
Deze maskers zijn aangepast en gebruikt op locaties over de hele wereld vanwege hun lage kosten en gemakkelijke aanpassing.
De resultaten waren duidelijk en onlangs werd deze technologie ook hier in Portugal in het ziekenhuis van Santarém gebruikt.
https://www.prosaude.org.br/noticias/hospital-regional-de-santarem-utiliza-mascaras-de-mergulho-no-tratamento-da-covid-19/?fbclid=IwAR36UVLXCztk0zSSJwTCBQ1lgb5iYmY1Ha_tqwITqr P>
Nieuws in de krant in portugal.
Iterview op een lokale radio ging viraal op sociale netwerken in Portugal.
.
Eerste werkingstest met een klein luchtvolume en 15 ademhalingscycli waarbij de ademhalingsfrequentie en het piepgeluid worden gewijzigd voor demonstratie.
WAARSCHUWING:dit prototype is nog niet gevalideerd door een officiële instantie en ik wijs alle verantwoordelijkheid voor het gebruik ervan af.
Bovendien zal het als laatste redmiddel worden gebruikt en door opgeleid medisch personeel is deze apparatuur bedoeld om levens te redden in een extreme pieksituatie.
Het non-profitproject kan massaal worden herhaald, indien goedgekeurd door de bevoegde autoriteiten in Portugal.
Code
- INOVT_COVID19_Version_2.2.ino
- INOVT_COVID19_Version_2.2.rar
INOVT_COVID19_Version_2.2.inoArduino
/* Programma longventilator INOVT COVID-19 Versio 2.2 * Auteur:David Pascoal * De apparatuur is getest en bewezen, beveiliging met druksensor, * Alarmuitgang om zoemer of kever in te schakelen.*/#inclusief#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 92 =0;int valInspira =0;int valExpira =0;int valPeep =0; int hulp; 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 , B0000, B00000, B00001, B00011, B00110, B01100, B11000 };byte a5[9]={ B000000, 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.schrijven (byte (3)); lcd.write(byte(4)); lcd.write(byte(5)); lcd.schrijven (byte (3)); lcd.write(byte (6)); lcd.write(byte(5)); lcd.setCursor(10,1); lcd.schrijven(byte(0)); lcd.schrijven(byte(1)); lcd.schrijven(byte(2)); lcd.schrijven(byte(0)); lcd.schrijven(byte(7)); lcd.schrijven(byte(2)); }void initior() { byte c11[8] ={B00000,B00000,B11111,B11111,B11111,B11111,B00000,B00000};lcd.createChar(3, c11);lcd.setCursor(0, 2); lcd.schrijven(3); vertraging(x);lcd.setCursor(1, 2); lcd.schrijven(3); vertraging (x); digitalWrite(PIN_LED,HIGH);lcd.setCursor(2, 2); lcd.schrijven(3); vertraging(x);lcd.setCursor(3, 2); lcd.schrijven(3); vertraging (x); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(4, 2); lcd.schrijven(3); vertraging(x);lcd.setCursor(5, 2); lcd.schrijven(3); vertraging (x); digitalWrite(PIN_LED,LOW);lcd.setCursor(6, 2); lcd.schrijven(3); vertraging(x);lcd.setCursor(7, 2);lcd.write(3); vertraging (x); digitalWrite(PIN_LED2,LOW);lcd.setCursor(8, 2); lcd.schrijven(3); vertraging (x); digitalWrite (PIN_LED, HOOG); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(9, 2); lcd.schrijven(3); vertraging (x); mijnServo.write(100); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW);lcd.setCursor(10, 2); lcd.schrijven(3); vertraging (x); digitalWrite (PIN_LED, HOOG); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(11, 2);lcd.write(3); vertraging (x); mijnServo.write(110); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW);lcd.setCursor (12, 2); lcd.schrijven(3); vertraging (x); digitalWrite (PIN_LED, HOOG); digitalWrite (PIN_LED2, HOOG); lcd.setCursor(13, 2); lcd.schrijven(3); vertraging (x); mijnServo.write(115); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW);lcd.setCursor(14, 2); lcd.schrijven(3); vertraging (x); digitalWrite (PIN_LED, HOOG); digitalWrite(PIN_LED2,HIGH);lcd.setCursor(15, 2); lcd.schrijven(3); vertraging (x); mijnServo.write(120); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW); lcd.setCursor (16, 2); lcd.schrijven(3); vertraging (x); digitalWrite (PIN_LED, HOOG); digitalWrite (PIN_LED2, HOOG); lcd.setCursor (17, 2); lcd.schrijven(3); vertraging(x);mijnServo.write(130); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW);lcd.setCursor (18, 2); lcd.schrijven(3); vertraging (x); lcd.setCursor(19, 2); lcd.schrijven(3); delay(x);}void maobc() { thumbdownA(); vertraging (x); lcd.wissen(); duimen omhoog(); vertraging (x); duim omlaagA(); vertraging (x); lcd.wissen(); duimen omhoog(); vertraging (x); duim omlaagA(); vertraging (x); lcd.wissen(); duimen omhoog(); vertraging (x); duim omlaagA(); vertraging (x); lcd.wissen(); duimen omhoog(); vertraging (1000); lcd.clear();} void thumbdownA() { byte thumb1[8] ={B00001,B00010,B00011,B00100,B00011,B00100,B00011,B00100}; byte thumb2[8] ={B00011,B00000,B00000,B00000,B00000,B00000,B00000,B00000}; byte thumb3[8] ={B11110,B00001,B00000,B00000,B00000,B00000,B00000,B00000}; byte thumb4[8] ={B00000,B11110,B01000,B10001,B10010,B10010,B01100,B00000}; byte thumb5[8] ={B00000,B10000,B01110,B00010,B00010,B00010,B00010,B00010}; byte thumb6[8] ={B00110,B01000,B10000,B00000,B00000,B00000,B00000,B00000}; lcd.createChar (6, duim1); lcd.createChar(1, thumb2); lcd.createChar(2, thumb3); lcd.createChar (3, thumb4); lcd.createChar(4, thumb5); lcd.createChar (5, thumb6); lcd.setCursor(7,0); lcd.schrijven(6); lcd.setCursor(7,1); lcd.schrijven(1); lcd.setCursor(8,0); lcd.schrijven(2); lcd.setCursor(8,1); lcd.schrijven(3); lcd.setCursor(9,0); lcd.schrijven(4); lcd.setCursor(9,1); lcd.write(5);}void thumbsup() { byte thumb1[8] ={B00100,B00011,B00100,B00011,B00100,B00011,B00010,B00001}; byte thumb2[8] ={B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00011}; byte thumb3[8] ={B00000,B00000,B00000,B00000,B00000,B00000,B00001,B11110}; byte thumb4[8] ={B00000,B01100,B10010,B10010,B10001,B01000,B11110,B00000}; byte thumb5[8] ={B00010,B00010,B00010,B00010,B00010,B01110,B10000,B00000}; byte thumb6[8] ={B00000,B00000,B00000,B00000,B00000,B10000,B01000,B00110}; lcd.createChar (6, duim1); lcd.createChar(1, thumb2); lcd.createChar(2, thumb3); lcd.createChar (3, thumb4); lcd.createChar(4, thumb5); lcd.createChar (5, thumb6); lcd.setCursor(7,1); lcd.schrijven(6); lcd.setCursor(7,0); lcd.schrijven(1); lcd.setCursor(8,1); lcd.schrijven(2); lcd.setCursor(8,0); lcd.schrijven(3); lcd.setCursor(9,1); lcd.schrijven(4); lcd.setCursor(9,0); lcd.write(5);}void setServo(){if (millis()> time) {if (estado ==EXPIRANDO) {// Pas een inspirandO digitalWrite(PIN_LED2,LOW); digitalWrite (PIN_LED, HOOG); mijnServo.write(MIN_ANGLE); tijd =millis() + (valInspira * 100); estado =INSPIRANDO; lcd.setCursor(8, 2); lcd.print("EXPIRANDO> "); } else if (estado ==INSPIRANDO) { // P0asar een expirando digitalWrite (PIN_LED2,HIGH); digitalWrite (PIN_LED, LAAG); myServo.write (MAX_ANGLE - valPeep); tijd =millis() + (valExpira * 100); estado =EXPIRANDO; lcd.setCursor(8, 2); lcd.print("INSPIRANDO <"); } }} ongeldige setup () { myServo.attach (PIN_SERVO); mijnServo.write(92); //digitalWrite (PIN_LED, LAAG); pinMode(PIN_FREQ,INPUT_PULLUP); pinMode (PIN_PEEP, INPUT_PULLUP); pinMode (SENSOR_FLOW, INPUT); pinMode (PIN_LED, UITGANG); pinMode (PIN_LED2, OUTPUT); pinMode (PIN_Alarm_Relais, UITGANG); pinMode (PIN_Safety_Valve, OUTPUT); lcd.init(); lcd.achtergrondverlichting(); lcd.wissen(); lcd.setCursor(0,0); logo(); lcd.setCursor(4,2); lcd.print("OPEN-SOURCE"); lcd.setCursor(0,3); lcd.print("Pulmonaire Ventilator"); vertraging (4000); lcd.wissen(); lcd.print("....Initialiseren......"); initiator(); vertraging (500); lcd.wissen(); maobc(); lcd.wissen(); if (digitalRead (SENSOR_FLOW) ==LAAG) { thumbsup (); lcd.setCursor(0,0); lcd.print("SYSTEEM"); lcd.setCursor(2,1); lcd.print("OK"); vertraging (5000); lcd.wissen(); } else { mijnServo.write(139); duim omlaagA(); lcd.setCursor(0,0); lcd.print("SYSTEEM"); lcd.setCursor(1,1); lcd.print("FAIL"); vertraging (5000); lcd.wissen(); Serieel.begin(9600); tijd =millis(); frecuencia_ant=-1; valPeep_ant=-1; } vertraging (500); estado=EXPIRANDO; }void loop() {digitalRead(SENSOR_FLOW); aux =analoog lezen (PIN_FREQ); frecuencia =kaart(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 =analoog lezen (PIN_PEEP); valPeep =kaart (aux, 0,1023, 0, 10); if ((frecuencia_ant!=frecuencia) || (valPeep_ant!=valPeep)) {//Pode monitorizar os valores de Frequencia en PEEP sem weergeven usando o Monitor serie do Arduino IDE. Serial.print("Frecuencia:"); Serial.println(frecuencia); Serial.print("Inspira:"); Serial.println(valInspira); Serial.print("Vervaldatum:"); Serial.println(valExpira); Serial.print("piep:"); Serial.println(valPeep); lcd.setCursor(1, 0); lcd.print("FREQUENTIE:"); lcd.setCursor(13, 0); lcd.print(frecuencia); lcd.setCursor(1, 1); lcd.print("PEEP:"); lcd.setCursor(13, 1); lcd.print(valPeep); // vertraging (500); 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) ==HOOG) { myServo.write (139); digitalWrite (PIN_Alarm_Relais, HOOG); digitalWrite (PIN_Safety_Valve, HOOG); lcd.wissen(); duim omlaagA(); lcd.setCursor(0,0); lcd.print("SYSTEEM"); lcd.setCursor(1,1); lcd.print("FAIL"); lcd.setCursor(1,2); lcd.print("********************"); lcd.setCursor(3,3); lcd.print("Controleer AR-stroom"); lcd.setCursor (12,1); lcd.print("ALARM"); digitalWrite (PIN_LED, HOOG); digitalWrite (PIN_LED2, HOOG); vertraging (500); lcd.setCursor (12,1); lcd.print(" "); vertraging (500); lcd.setCursor (12,1); lcd.print("ALARM"); digitalWrite (PIN_LED, LAAG); digitalWrite(PIN_LED2,LOW); vertraging (1000); lcd.wissen(); } else {digitalWrite(PIN_Alarm_Relay,LOW); digitalWrite (PIN_Safety_Valve, LAAG); stelServo(); vertraging(10);}}
INOVT_COVID19_Version_2.2.rarC/C++
Geen voorbeeld (alleen downloaden).
Aangepaste onderdelen en behuizingen
Ze moeten geprint zijn op een 3D-printer.Vereist enige precisie. Volledige stapsgewijze instructies voor het verwisselen van het duikmasker en het veranderen in een ademmasker onder druk Vereist enige precisie.
Hoge resolutie 3D-printer inovt_covid19_version_2_0_david_pascoal_0mbFUa0ce1.rar
Schema's
Schema van de autonome versie,heeft de luchtkolom van het ziekenhuis niet nodig. Versie 2.2 .
Met bewaker en alarmuitgang. Versie 2.2 .
Met bewaker en alarmuitgang.
Productieproces