Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Легочный вентилятор COVID-19 с открытым исходным кодом

Компоненты и расходные материалы

Arduino UNO
Для версии с Arduino
× 1
Arduino 4 Relays Shield
Для версии с Arduino
× 1
Цифровой сервопривод MG995
Для всех версий
× 1
модуль LM2596S
Для всех версий
× 2
линейный многооборотный потенциометр 10 кОм
Для всех версий
× 1
Блок питания Digilent 60 Вт PCIe 12 В, 5 А
Для всех версий
× 1
5 мм светодиод:красный
Для всех версий
× 1
5 мм светодиод:зеленый
× 1
Буквенно-цифровой ЖК-дисплей, 20 x 4
Для всех версий
× 1
кнопка переключения 220 В
Для всех версий
× 1
снорклинг анфас
× 1
Электромагнитный клапан, 2-ходовой
× 1

Необходимые инструменты и машины

3D-принтер (общий)
A8
300-001 - Lightbox, UV Exposure

Приложения и онлайн-сервисы

IDE Arduino
PcB Elegance
Autodesk Fusion 360

Об этом проекте

Неинвазивный аппарат ИВЛ с открытым исходным кодом Недорогой и простой в изготовлении респиратор для неотложной помощи для борьбы с кризисом здоровья, вызванным вирусом 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.
С охранной решеткой и тревожным выходом.

Производственный процесс

  1. Справочная плата с открытым исходным кодом нацелена на быстрое развертывание аппарата искусственной вентил…
  2. Arduino Spybot
  3. FlickMote
  4. Самодельный телевизор B-Gone
  5. Основные часы
  6. Найди меня
  7. Arduino Power
  8. Tech-TicTacToe
  9. Четвероногий Arduino
  10. Джойстик Arduino