Dispositivo di ventilazione open source low-cost

Questo articolo spiega come l'elettronica ed il making possano fornire un valido aiuto in situazioni emergenziali. E' possibile, infatti, costruire un ventilatore rudimentale a basso costo che potrebbe aiutare con la respirazione durante un attacco respiratorio acuto. E' opportuno sottolineare che è sempre necessario consultare un medico con un'adeguata configurazione dell'attrezzatura da parte di personale qualificato e che l'ideatore di questo progetto non è un medico ma un maker. 

Il ventilatore è un apparecchio elettromedicale utilizzato per insufflare nei polmoni una determinata miscela di gas e di consentirne l’espirazione, rispettando una determinata frequenza ed un appropriato regime di pressioni, per far fronte ad una funzionalità respiratoria parzialmente o completamente danneggiata. Durante la respirazione normale, nella fase inspiratoria la pressione alveolare è minore di quella atmosferica, mentre nella fase espiratoria la pressione alveolare è maggiore di quella atmosferica. Un ventilatore polmonare effettua il seguente loop di funzionamento:

  • insufflare nei polmoni quantità controllate di aria o miscele gassose;
  • bloccare l’insufflazione;
  • far espirare i gas insufflati.

La pandemia virale di SARS-CoV-2 sta letteralmente mettendo in ginocchio molte strutture sanitarie ormai al collasso e spesso sprovviste delle necessarie apparecchiature salvavita per pazienti che presentano sintomi gravi a causa dell'infezione respiratoria da coronavirus. I ventilatori polmonari sono ormai merce rara, eppure rappresentano una strumentazione medica preziosa ed estremamente importante in situazioni emergenziali. Potrebbe accadere che in un momento di emergenza sanitaria di livello mondiale, i ricoveri ospedalieri COVID-19 esauriscano la disponibilità di ventilatori approvati dalla FDA, a seguito di ritardi nella supply chain.

L'apparecchiatura qui proposta può aiutare quando non è possibile disporre di una migliore assistenza. Si tratta di un dispositivo hand made che può avere la sua efficacia come ultima risorsa disponibile. Questo design rudimentale potrebbe fornire una frequenza respiratoria target ed una pressione espiratoria positiva, Positive End-Expiratory Pressure (PEEP), ma non può garantire un volume corrente specifico e non regola la frazione inspirata di O2 (FiO2), che indica la percentuale di ossigeno (O2) inspirata da un paziente e che in aria atmosferica è pari a 0.21 (21%), mentre la maggior parte dei ventilatori polmonari ha la possibilità di modificare la FiO2.

I fattori chiave legati alla disponibilità attuale di ventilatori polmonari sono:

  • numero di ventilatori attualmente disponibili;
  • numero di ventilatori necessari nel tempo;
  • numero di ventilatori che possono essere prodotti nel tempo. 

Questi parametri variano in base alle esigenze di ogni regione a livello globale.

Descrizione del progetto

Il sistema completo è dotato di maschera facciale, tubi, pompa, batteria 12 V e swtich per l'input. Il ventilatore è guidato da un motore BLDC (Brushless Direct Current). E' consigliabile il funzionamento con un alimentatore DC dal momento che la durata della batteria è solo di circa 3-4 ore, inoltre questa particolare batteria utilizzata nel progetto può caricare e fornire energia allo stesso tempo, fungendo da backup in linea della batteria per l'alimentazione a parete. I dispositivi Continuous Positive Airway Pressure (CPAP) sono comunemente utilizzati dagli individui per trattare l'apnea notturna. Questo dispositivo rudimentale rappresenta una conversione di un comune CPAP. In molti di questi dispositivi, il soffiatore è un semplice motore BLDC che può essere pilotato con un Electronic Speed Controller (ESC), in sostanza un regolatore elettronico di velocità. Nel progetto viene utilizzata la scheda Arduino Nano per controllare la velocità del motore, i cicli di respirazione e gestire l'input dell'utente. Si rende necessario scaricare l'IDE di Arduino per programmare il software del microcontrollore. I componenti principali sono: un motore brushless DC senza spazzole per il controllo elettronico della velocità con corrente minima di 10A, un pulsante o interruttore per il controllo dell'ingresso, un alimentatore 12 V in corrente continua in grado di gestire almeno 5 A, tubi e maschera facciale ed una batteria di backup in linea 12V opzionale. Il ventilatore funziona abbastanza bene ed i cicli di respirazione possono creare cadute di tensione che resettano l'Arduino se l'alimentazione non è abbastanza forte. La maschera integrale copre sia bocca che naso ed ha permesso un aumento della pressione nei polmoni. In alternativa, vedere nella sezione "Riferimenti" le parti stampabili in 3D.

Figura 1. Primo piano del dispositivo

Il software esegue una breve sequenza di inizializzazione per configurare l'ESC, quindi inizia con l'impostazione CPAP più bassa. È possibile utilizzare l'interruttore per scorrere i livelli di pressione e fare doppio clic per scorrere le modalità operative.

Di seguito lo sketch per il controllo del ventilatore:

#include <Servo.h>

Servo myservo;

//some variables to tweek

#define version "20201603.1"

#define rate 16 // breathing cycles per minute

#define enable_motor true // useful for debugging without noise

#define max_speed 180

#define min_speed 0

#define PEEP_speed 40 //approx 5cm/H2O

#define led_pin 13

#define button_pin A5

#define current_pin A0

#define servo_pin 3

#define serial_baud 9600

int buttonState = 1;

int buttonStatePrev = 1;

int speed_state = 0;

int loop_count = 0;

int click_loop_count = 0;

int click_count = 0;

int target_speed_high = 0;

int target_speed_low = 0;

int cycle_counter = 0;

int cycle_phase = 0;

int mode = 0;

int current = 0;

void setup() {

Serial.begin(serial_baud);

Serial.print("Version:\t");

Serial.println(version);

pinMode(led_pin, OUTPUT);

pinMode(current_pin, INPUT);

analogReference(INTERNAL); // sets reference to 1.1v

pinMode(button_pin, INPUT_PULLUP);

digitalWrite(led_pin, HIGH);

if(enable_motor){

myservo.attach(servo_pin,1000,2000); // some motors need min/max setting

Serial.print("Initializing ESC...");

myservo.write(max_speed);

delay(3000); // wait for esc to boot, and sample maximum

myservo.write(min_speed);

digitalWrite(led_pin, LOW);

delay(2000); // wait for esc to sample minimum

digitalWrite(led_pin, HIGH);

myservo.write(PEEP_speed);

Serial.println("Done");

} else {

Serial.println("Motor disabled. Bypassing initialization");

}

}

void loop() {

buttonStatePrev = buttonState;

buttonState = digitalRead(button_pin);

// button down event, accumulate number of clicks and time of first click

if(buttonState == 0 and buttonStatePrev == 1){

click_loop_count = loop_count;

click_count += 1;

}

if(click_count > 0){

// past click count timeout

if(click_loop_count + 30 < loop_count){

if(click_count == 1){ // single click

speed_state = (speed_state + 1)%5;

if(mode == 0){

cycle_counter = 10000; // if in CPAP mode update immediately

}

}

if(click_count == 2){ // double click

mode = (mode +1)%2;

// if entering PEEP mode, update immediately in exhale cycle

// otherwise, maintain phase

cycle_phase = 0;

cycle_counter = 10000;

}

// blink LED

digitalWrite(led_pin, LOW);

delay(50);

digitalWrite(led_pin, HIGH);

// print state

Serial.print(loop_count/100.0);

if(mode == 0){

Serial.print("\tset to CPAP level: ");

Serial.println(speed_state);

}

if(mode == 1){

Serial.print("\tset to PEEP level: ");

Serial.print(speed_state);

Serial.print("\tforced rate: ");

Serial.print(rate);

Serial.println("/min");

}

click_count = 0;

}

}

// approximate pressure mapping fro original blower. Other blowers will vary

// 40 ~= 5cm/H2O

// 60 ~= 10cm/H2O

// 90 ~= 18cm/H2O

// 120 ~= 32cm/H2O

if (speed_state == 0) {

target_speed_high = 60;

target_speed_low = PEEP_speed;

}

if (speed_state == 1) {

target_speed_high = 70;

target_speed_low = PEEP_speed;

}

if (speed_state == 2) {

target_speed_high = 80;

target_speed_low = PEEP_speed;

}

if (speed_state == 3) {

target_speed_high = 90;

target_speed_low = PEEP_speed;

}

if (speed_state == 4) {

target_speed_high = 100;

target_speed_low = PEEP_speed;

}

//CPAP mode, both speed are the same

if(mode == 0)

target_speed_low = target_speed_high;

// handle breath in/out cycle at target rate/min

cycle_counter += 1;

if( (30*100)/rate < cycle_counter){

cycle_phase = (cycle_phase+1)%2;

cycle_counter = 0;

Serial.print(loop_count/100.0);

Serial.print("\tphase speed:");

if(cycle_phase == 0){

if(enable_motor)

myservo.write(target_speed_high);

Serial.println(target_speed_high);

} else {

if(enable_motor)

myservo.write(target_speed_low);

Serial.println(target_speed_low);

}

}

// for debugging breathing back pressure sensing

// current = analogRead(current_pin);

// Serial.print(current);

// Serial.print(",");

// Serial.println(digitalRead(button_pin));

loop_count += 1;

delay(10); // approximately 100 cycles per second

}

In Figura 2 è mostrato lo schema elettrico del dispositivo. Una versione leggermente modificata in grado di rilevare la corrente del ventilatore è disponibile qui.  

Figura 2. Schema elettrico del ventilatore

La maschera Resmed AirFit F20 è abbastanza comoda e copre sia naso che bocca garantendo una buona tenuta. Come copricapo possono essere utilizzate delle cinghie elastiche, ma per ottenere una buona tenuta d'aria ed una pressione positiva sufficiente si può utilizzare del nastro adesivo. Un po' di perdita è effettivamente desiderabile per consentire alla CO2 di fuoriuscire ed espellere l'aria nel tempo piuttosto che rimanere bloccata nel tubo. Il banco di prova per misurare la pressione di uscita (Figura 3) è un tubo a forma di U con nastro di misurazione attaccato per controllare lo spostamento dell'acqua. Le linee guida per i ventilatori per i pazienti COVID-19 richiedono fino a 20 cm/H20. Il progetto è interamente visionabile su GitHub. Johnny Lee, ideatore di questo dispositivo, ha fornito appunti relativi ad una lunga conversazione con un medico specialista in pneumologia per discutere circa le specifiche tecniche funzionali di un ventilatore polmonare adeguato.

Figura 3. Banco di prova per misurazione della pressione di uscita

Ovviamente un ventilatore ad aria aperta nelle vie aeree non è il massimo, è preferibile, quindi, avere una certo livello di filtrazione dell'aria. Tuttavia, l'aggiunta di un filtro influirà sicuramente sulla pressione di uscita, dipende dal ventilatore che si ha e se il motore è in grado di gestire il carico aggiuntivo. La custodia di questo soffiatore non è a tenuta d'aria, quindi è difficile garantire che il 100% dell'aria arrivi solo attraverso il filtro.

Figura 4a. Piastra adattatrice per una cartuccia filtro 3M P100 o N95

 

Figura 4b. Piastra adattatrice per una cartuccia filtro 3M P100 o N95

 

Figura 5a. Piastra adattatrice per una cartuccia filtro per maschera antigas NATO da 40 mm

 

Figura 5b. Piastra adattatrice per una cartuccia filtro per maschera antigas NATO da 40 mm

Questi installatori sono disponibili con rating CBRN necessari per la difesa virale e batterica simili a quelli approvati dal CDC/NIOSH.

Figura 6. Johnny Lee - Applicazione del ventilatore

Considerazioni conclusive

Anche un ventilatore simile degli anni '60 è molto complesso e necessita di uno specialista adeguato per funzionare. L'idea è calda, ma è necessario analizzare le informazioni di feedback: livelli di pO2 e pCO2, prova del respiro in completa ventilazione artificiale, livello di CPAP e molto altro. Qualsiasi specialista di medicina respiratoria può spiegarlo. Una macchina CPAP disponibile in commercio è elettronicamente semplice (vedi alibaba.com), ma configurarla è difficile per i non specialisti. Makers, dobbiamo stare attenti con progetti come questi, poiché possono facilmente scivolare nella categoria "potrebbe essere più pericoloso di niente". La maggior parte delle spiegazioni che ho visto sulla situazione del ventilatore CPAP - BiPAP in relazione alla infezione da COVID sottolinea due problemi:

1) che la CPAP standard non fornisce un supporto di ossigeno sufficiente per i pazienti più colpiti, perché non aumenta l'ossigeno nell'aria respirata, solo la pressione di quell'aria (motivo per cui è buono per russare/apnea).

2) CPAP e BiPAP soffiano entrambe molta aria intorno, a causa di questa strategia di aumento della pressione dell'aria soffiata, che estenderebbe la gamma di particelle di virus contagiose. Pertanto, le soluzioni devono effettivamente aumentare il livello di ossigeno nell'aria e rilevare attentamente la caduta di pressione associata ad un respiro per aumentare la pressione mentre diminuisce il soffio, oppure avere un qualche tipo di N95 o un filtro migliore per l'aria espirata. Ancora una volta, "keep hacking y'all", ma per favore fate del vostro meglio per incorporare le migliori pratiche che abbiamo nei vostri progetti.

Avvertente e precauzioni

Indossare questo sigillato alla bocca con nastro adesivo senza alimentazione può causare un pericoloso accumulo di CO2. Indossare la maschera con una batteria scarica potrebbe causare un pericoloso accumulo di CO2. Non utilizzare informazioni casuali che hai trovato su Internet. Esistono rischi significativi associati all'uso di un BiPAP ad alta pressione come ventilatore fai da te senza controllo medico. Come funzionalità hardware, questo design rudimentale potrebbe fornire una frequenza respiratoria target programmabile (10-16/min), una Positive End-Expiratory Pressure target (PEEP) ed il ventilatore è fisicamente in grado di colpire una pressione di picco delle vie aeree fino a 45 cmH20, tuttavia, andare oltre i 20 cmH20 può essere pericoloso.

In alternativa alla costruzione di un ventilatore polmonare fai da te, questo dispositivo può anche diventare un ragionevole respiratore ad aria purificata, noto anche come Powered Air Purifying Respirator (PAPR) se viene applicato un filtro e viene utilizzata una maschera a pieno facciale. Consultare la parte inferiore del file README per i collegamenti per gli adattatori delle cartucce filtranti. I PAPR sono molto meno rischiosi e meno controversi rispetto alla costruzione di un ventilatore fai da te.

Riferimenti

Coronavirus Makers: https://github.com/CoronavirusMakers

Assemblaggio componenti: https://youtu.be/n57u1NvXBgw

Riferimenti di medici specifici sui requisiti tecnici del ventilatore (specificamente per COVID-19): https://mobile.twitter.com/aribindi/status/1238629714069032961

Riferimenti sulle modalità del ventilatore CPAP/BiPAP/PEEP:

Lung Mechanics: PEEP,PEP,ACMV

Ventilator Modes Explained! PEEP, CPAP, Pressure vs. Volume

Modelli 3D: https://github.com/jcl5m1/ventilator/tree/master/3dmodels 

Video della soffiante: https://photos.app.goo.gl/b3yMPE5QpdeduxKS6

Risorse: https://github.com/jcl5m1/ventilator/blob/master/resources.md

Michigan Instruments

CDC (Centers for Disease Control and Prevention): https://www.cdc.gov/niosh/npptl/standardsdev/cbrn/papr/default.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Scarica subito una copia gratis

9 Commenti

  1. Avatar photo davide.balducci 21 Marzo 2020
  2. Avatar photo Emanuele Bonanni 22 Marzo 2020
  3. Avatar photo Silvio 22 Marzo 2020
  4. Avatar photo Adriano Gandolfo 29 Marzo 2020
  5. Avatar photo santelectronic 8 Aprile 2020
  6. Avatar photo Giordana Francesca Brescia 10 Aprile 2020
  7. Avatar photo Alfredo.Centinaro 14 Aprile 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend