Легочный вентилятор COVID-19 с открытым исходным кодом
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
| ||||
|
Приложения и онлайн-сервисы
| ||||
| ||||
|
Об этом проекте
Неинвазивный аппарат ИВЛ с открытым исходным кодом Недорогой и простой в изготовлении респиратор для неотложной помощи для борьбы с кризисом здоровья, вызванным вирусом Covid19, если нет доступных аппаратов ИВЛ и пока пациенту не вводят седативные препараты и не интубируют.
Этот проект стал результатом проблемы, начатой моим бывшим учителем и другом Серафимом Пиресом, который связался со мной, чтобы показать испанский проект, и сказал, что было бы хорошо, если бы я мог разработать проект, чтобы помочь в борьбе с этим мировым кризисом.
После нескольких исследований и исследований по теме неинвазивной вентиляции я построил этот функциональный прототип на основе 2 существующих технологий,
Все тесты прошли успешно, с функциональным тестом, продолжавшимся более 20 дней без каких-либо проблем или перерывов.
Неинвазивная вентиляция легких осуществляется с использованием лицевых масок и носовых масок, которые нагнетают заданное количество сжатого воздуха в легкие. Это поддерживает естественный процесс дыхания, когда болезнь вызывает отказ легких, позволяя организму бороться с инфекцией и поправляться.
Основываясь на исследованиях, проведенных в Италии, я использовал эту технологию в своем проекте, который превращает маску для снорклинга Decathlon в аппарат экстренной вентиляции для пациентов, страдающих COVID-19, чтобы помочь уменьшить нехватку вентиляторов во время пика пандемии коронавируса.>
Эти маски адаптированы и используются по всему миру из-за их низкой стоимости и простоты адаптации.
Результаты были очевидны, и недавно эту технологию также использовали здесь, в Португалии, в больнице Сантарен.
https://www.prosaude.org.br/noticias/hospital-regional-de-santarem-utiliza-mascaras-de-mergulho-no-tratamento-da-covid-19/?fbclid=IwAR36UVLXCztk0zSSJwTCBQ1lgb4b5i_qyqyqq1lgb5jtqyqqq1lgb5jtqqqq1lgb5jtxqqqq1lgb5jtqqqqq1lgb5jqqqqqqq1lgb5jtqqqqqq1lgb5jqxqq P>
Новости в газете в португалии.
Интервью на местном радио стало вирусным в социальных сетях Португалии.
.
Первый рабочий тест с использованием небольшого объема воздуха и 15 циклов дыхания с изменением частоты дыхания и звукового сигнала для демонстрации.
ВНИМАНИЕ! Этот прототип еще не прошел проверку каким-либо официальным органом, и я снимаю с себя всякую ответственность за его использование.
Кроме того, оно будет использоваться в крайнем случае, и обученным медицинским персоналом это оборудование предназначено для спасения жизней в экстремальной пиковой ситуации.
Некоммерческий проект можно тиражировать в массовом порядке, если он одобрен компетентными органами Португалии.
Код
- INOVT_COVID19_Version_2.2.ino
- INOVT_COVID19_Version_2.2.rar
INOVT_COVID19_Version_2.2.ino Arduino
/ * Программа легочного аппарата ИВЛ INOVT COVID-19 Версия 2.2 * Автор:Дэвид Паскоал * Оборудование протестировано и проверено, безопасность с датчиком давления, * Тревожный выход для включения зуммера или жука. * / # 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 # определить SENSOR_FLOW A3 # определить EXPIRANDO 0 # определить INSPIRANDO 1 # определить 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; беззнаковое долгое время; 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}; байт a1 [8] ={B11000, B01100, B00110, B00011, B00001, B00000, B00000}; байт a4 [9] ={B00000 , B00000, B00000, B00001, B00011, B00110, B01100, B11000}; байт a5 [9] ={B00000, B01110, B11111, B10001, B00000, B00000, B00000, B01110, B00000,}; байт a6 [8] ={ B00000, B00000, B00000, B10000, B11000, B01100, B00110, B00011}; байт a7 [10] ={B00000, B01110, B11111, B10001, B00000, B00000, B00000, B00000,}; байт a8 [8] ={B00100 , B01110, B00100, B00000, B10001, B11111, B01110}; lcd.print ("* COVID19 *"); lcd.setCursor (0,1); lcd.print (".. ИНОВТ .."); 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 (байт (3)); lcd.write (байт (4)); lcd.write (байт (5)); lcd.write (байт (3)); lcd.write (байт (6)); lcd.write (байт (5)); lcd.setCursor (10,1); lcd.write (байт (0)); lcd.write (байт (1)); lcd.write (байт (2)); lcd.write (байт (0)); lcd.write (байт (7)); lcd.write (байт (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); задержка (х); lcd.setCursor (1, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); lcd.setCursor (2, 2); lcd.write (3); задержка (х); lcd.setCursor (3, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (4, 2); lcd.write (3); задержка (х); lcd.setCursor (5, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, LOW); lcd.setCursor (6, 2); lcd.write (3); задержка (х); lcd.setCursor (7, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED2, LOW); lcd.setCursor (8, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (9, 2); lcd.write (3); задержка (х); myServo.write (100); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor (10, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (11, 2); lcd.write (3); задержка (х); myServo.write (110); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor (12, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (13, 2); lcd.write (3); задержка (х); myServo.write (115); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor (14, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (15, 2); lcd.write (3); задержка (х); myServo.write (120); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor (16, 2); lcd.write (3); задержка (х); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); lcd.setCursor (17, 2); lcd.write (3); задержка (х); myServo.write (130); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); lcd.setCursor (18, 2); lcd.write (3); задержка (х); lcd.setCursor (19, 2); lcd.write (3); задержка (x);} void maobc () {thumbdownA (); задержка (х); lcd.clear (); пальцы вверх(); задержка (х); thumbdownA (); задержка (х); lcd.clear (); пальцы вверх(); задержка (х); thumbdownA (); задержка (х); lcd.clear (); пальцы вверх(); задержка (х); thumbdownA (); задержка (х); lcd.clear (); пальцы вверх(); задержка (1000); lcd.clear ();} void thumbdownA () {byte thumb1 [8] ={B00001, B00010, B00011, B00100, B00011, B00100, B00011, B00100}; байт thumb2 [8] ={B00011, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; байт thumb3 [8] ={B11110, B00001, B00000, B00000, B00000, B00000, B00000, B00000}; байт thumb4 [8] ={B00000, B11110, B01000, B10001, B10010, B10010, B01100, B00000}; байт thumb5 [8] ={B00000, B10000, B01110, B00010, B00010, B00010, B00010, B00010}; байт thumb6 [8] ={B00110, B01000, B10000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar (6, thumb1); 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.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}; байт thumb2 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; байт thumb3 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B11110}; байт thumb4 [8] ={B00000, B01100, B10010, B10010, B10001, B01000, B11110, B00000}; байт thumb5 [8] ={B00010, B00010, B00010, B00010, B00010, B01110, B10000, B00000}; байт thumb6 [8] ={B00000, B00000, B00000, B00000, B00000, B10000, B01000, B00110}; lcd.createChar (6, thumb1); 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.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) {// Передать вдохновение digitalWrite (PIN_LED2, LOW); digitalWrite (PIN_LED, HIGH); myServo.write (MIN_ANGLE); время =миллис () + (валиИнспира * 100); estado =ВДОХНОВЕНИЕ; lcd.setCursor (8, 2); lcd.print ("ЭКСПИРАНДО>"); } else if (estado ==INSPIRANDO) {// P0asar истечение срока digitalWrite (PIN_LED2, HIGH); digitalWrite (PIN_LED, LOW); myServo.write (MAX_ANGLE - valPeep); время =миллис () + (valExpira * 100); estado =ЭКСПИРАНДО; lcd.setCursor (8, 2); lcd.print ("ВДОХНОВЕНИЕ <"); }}} установка void () {myServo.attach (PIN_SERVO); myServo.write (92); // digitalWrite (PIN_LED, LOW); pinMode (PIN_FREQ, INPUT_PULLUP); pinMode (PIN_PEEP, INPUT_PULLUP); pinMode (SENSOR_FLOW, INPUT); pinMode (PIN_LED, ВЫХОД); pinMode (PIN_LED2, ВЫХОД); pinMode (PIN_Alarm_Relay, ВЫХОД); pinMode (PIN_Safety_Valve, ВЫХОД); lcd.init (); lcd.backlight (); lcd.clear (); lcd.setCursor (0,0); логотип (); lcd.setCursor (4,2); lcd.print («ОТКРЫТЫЙ ИСТОЧНИК»); lcd.setCursor (0,3); lcd.print («Легочный вентилятор»); задержка (4000); lcd.clear (); lcd.print (".... Инициализация ...."); initior (); задержка (500); lcd.clear (); maobc (); lcd.clear (); если (digitalRead (SENSOR_FLOW) ==LOW) {thumbsup (); lcd.setCursor (0,0); lcd.print («СИСТЕМА»); lcd.setCursor (2,1); lcd.print («ОК»); задержка (5000); lcd.clear (); } еще {myServo.write (139); thumbdownA (); lcd.setCursor (0,0); lcd.print («СИСТЕМА»); lcd.setCursor (1,1); lcd.print ("ОТКАЗ"); задержка (5000); lcd.clear (); Serial.begin (9600); время =миллис (); frecuencia_ant =-1; valPeep_ant =-1; } задержка (500); estado =ЭКСПИРАНДО; } недействительный цикл () {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 =карта (доп., 0,1023, 0, 10); if ((frecuencia_ant! =frecuencia) || (valPeep_ant! =valPeep)) {// Отслеживайте значения частот и PEEP, которые используются для отображения серии монитора для Arduino IDE. Serial.print ("Frecuencia:"); Serial.println (frecuencia); Serial.print («Инспира:»); Serial.println (валиИнспира); Serial.print ("Срок действия:"); Serial.println (valExpira); Serial.print ("Пип:"); Serial.println (valPeep); lcd.setCursor (1, 0); lcd.print ("ЧАСТОТА:"); lcd.setCursor (13, 0); lcd.print (frecuencia); lcd.setCursor (1, 1); lcd.print ("PEEP:"); lcd.setCursor (13, 1); lcd.print (valPeep); // задержка (500); lcd.setCursor (0, 2); lcd.print ("ЭСТАДО:"); lcd.setCursor (0, 3); lcd.print ("ВЕНТИЛАДОР Д. ПАСКУЛЬ"); frecuencia_ant =frecuencia; valPeep_ant =valPeep; } если (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 («СИСТЕМА»); lcd.setCursor (1,1); lcd.print ("ОТКАЗ"); lcd.setCursor (1,2); lcd.print ("******************"); lcd.setCursor (3,3); lcd.print («Проверить поток AR»); lcd.setCursor (12,1); lcd.print («ТРЕВОГА»); digitalWrite (PIN_LED, HIGH); digitalWrite (PIN_LED2, HIGH); задержка (500); lcd.setCursor (12,1); lcd.print (""); задержка (500); lcd.setCursor (12,1); lcd.print («ТРЕВОГА»); digitalWrite (PIN_LED, LOW); digitalWrite (PIN_LED2, LOW); задержка (1000); lcd.clear (); } else {digitalWrite (PIN_Alarm_Relay, LOW); digitalWrite (PIN_Safety_Valve, LOW); setServo (); задержка (10);}}
INOVT_COVID19_Version_2.2.rar C / C ++
Нет предварительного просмотра (только загрузка).
Изготовленные на заказ детали и корпуса
Их нужно распечатать на 3D-принтере.Требуется некоторая точность. Полные пошаговые инструкции по замене маски для дайвинга и превращению ее в респираторную маску под давлением. Требуется некоторая точность.
3D-принтер высокого разрешения inovt_covid19_version_2_0_david_pascoal_0mbFUa0ce1.rar
Схема
Схема автономной версии,не нуждается в больничной воздушной колонне. Версия 2.2.
С охранной решеткой и тревожным выходом. Версия 2.2.
С охранной решеткой и тревожным выходом.
Производственный процесс