Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Open-source COVID-19 longbeademingsapparaat

Componenten en benodigdheden

Arduino UNO
Voor versie met Arduino
× 1
Arduino 4 relaisschild
Voor versie met Arduino
× 1
Digitale servo MG995
Voor alle versies
× 1
LM2596S-module
Voor alle versies
× 2
10k lineaire multi-turn potentiometer
Voor alle versies
× 1
Digilent 60W PCIe 12V 5A voeding
Voor alle versies
× 1
5 mm LED:rood
Voor alle versies
× 1
5 mm LED:groen
× 1
Alfanumeriek LCD-scherm, 20 x 4
Voor alle versies
× 1
schakelknop 220v
Voor alle versies
× 1
snorke full face
× 1
Magneetventiel, 2-weg
× 1

Benodigde gereedschappen en machines

3D-printer (algemeen)
A8
300-001 - Lightbox, UV-blootstelling

Apps en online services

Arduino IDE
PcB-elegantie
Autodesk Fusion 360

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

  1. Opensource-referentiebord richt zich op snelle inzet van medische ventilatoren
  2. Arduino Spybot
  3. FlickMote
  4. Zelfgemaakte tv B-Gone
  5. Hoofdklok
  6. Vind mij
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Arduino-joystick
  11. CNC-machine