open source mechanical ventilator for educational purposes
The goal of this project is to build a simple mechanical ventilator that facilitates understanding of the mechanics and technology in modern ventilators. The purpose is pedagogical; this is not intended for medical or veterinary use.
Mechanical ventilators are complex machines. Often the best way to understand the nuances of a complex machine is to tinker with a simple open-source version. Unfortunately, ventilators aren't cheap (even the lowest cost veterinary ventilator will typically set you back at least $500) and no open source ventilator exists. This makes it hard for medical personnel (physicians, nurses, respiratory therapists, etc) and biomedical engineers to fully grok the technology they are working with and depend upon.
The purpose of this project is to build a simple, open-source, mechanical ventilator (hardware, control system, and interface) that can be used as a starting point for biomedical engineers and healthcare professionals to understand mechanical ventilation.
For a primer on mechanical ventilation see here. For a history of how modern mechanical ventilators have evolved see here.
There are three key components of the open-ventilator:
- the hardware - servo to force air into/out of a cylinder, solenoid valves to control airflow, and pressure sensors
- the control system - a microcontroller (e.g. Arduino Micro that controls the hardware; ideally this should be a realtime system to enable quick and reliable responses
- the user interface - a single board computer (e.g. RasPi 4) connected to a touchscreen LCD display
The ideal project would be able to:
- provide mandatory volume control ventilation - deliver a
tidal volume
at a setrate
- provide mandator pressure control ventilation - deliver a
inspiratory pressure
for ainspiratory time
at a setrate
- allow triggered breathing, such as pressure support - deliver an
inspiratory pressure
every time a breath is detected using a pressure trigger - perform simple respiratory maneuvers such as plateau pressure - deliver a breath and measure the pressure
- alert to unsafe conditions (e.g. alarms): peak pressure alarm, low volume alarm, etc
- stream the data over a serial connection to an attached computer
- display data and allow settings to be changed on a touchscreen display
- use an open source pump as a starting point; for example the programmable-air project includes a simple hardware and arduino compatible software package.
- another option is to use an open source syringe pusher which includes files for 3d printing and the arduino code
- will likely use an Arduino and build a
open-ventilator
library to control the system. The library that controls the microcontrolled would be extremely useful for understanding a operation of a mechanical ventilator. The library could enable commands at different levels of abstraction:- direct control of components - e.g.
inspiratoryValve == OPEN
(set the valve on the inspiratory circuit to open) - coordinated activation of components - e.g.
deliverPressureBreath (pressure = 30, iTime = 1, alarms = TRUE)
(deliver a breath with a pressure of 30 cmH2O over 1 second) - automated delivery of ventilation - e.g.
volumeControlStart (rate = 12, volume = 500)
(begins volume control ventilation at a rate of 12 breaths per minute and a tidal volume of 500cc per breath) - administering advanced ventilatory maneuvers - e.g.
inspiratoryHold()
(deliver a breath, close the inspiratory and expiratory valves, and measure the airway pressure continuously)
- direct control of components - e.g.
- the ideal user interface should be intuitive and straightforward
- ideas
- A Portable Ventilator with Integrated Physiologic Monitoring for Hyperpolarized 129Xe MRI in Rodents
- Open-Source Syringe Pump Library
- Programmable Air https://i2.wp.com/makerfaire.com/wp-content/uploads/gravity_forms/208-6bb1cbe29fec28d54a67e4aeaf9487ea/2018/09/Programmable-Air-PCB-Render.jpg?fit=750%2C500&strip=all&ssl=1
- Advanced Ventilator Modes