Low Cost Ventilator

Low cost ventilator for standalone use during the Covid-19 pandemic

Similar projects worth following
Low Cost Medical Ventilator

This is a medical ventilator designed to be used for Covid-19 patients if there are a lack of ventilators.

Goals of the project are:

  • To provide a cost effective option < $1000
  • To provide the patient with a safe ventilation option.
  • To make the design as simple as possible to purchase all of the parts and assemble.
    • Controller mostly SMD to simplify electronics build and ensure quality.
    • Few, if any, custom components to ensure availability and quality.
  • To provide the necessities.  These include the following:
    • Option to add oxygen.
    • Simple pressure control.
    • Flow information for the operator of the ventilator
    • Safety for patient and operator - IE Virus filter.
    • Covid-19 ARDS pateints are almost alway intubated so additon of an off the shelf humidifier is necessary.


Details on pressure feedback:

The system pressure is monitored with 3 pressure sensors.  This is to ensure patient safety and reliability of the system.  The system is averaged and voted.  This is done so that even if one sensor drops out, the system can still run.  This is done in many mission critical systems.

The pressure sensors chosen are Amphenol NPA-300B-005D's which will measure 0-5 psi differential.  One side will be open to atmosphere to ensure differential from outside the patients body to the lung pressure is maintained in a safe range.  These are SMD components so that they can be assembled onto the PCB via pick and place for ease of mass manufacturing.  They also require 3.3Vdc to run them and send back a scaled output from 0-3.3V which is then read by the microcontroller of choice.  This works great because it is a 3.3V microcontroller.


Details on flow monitoring:

The Inspiratory and Expiratory flows will be measured via a Sensirion SFM3300-D.  This is an accurate flow meter which will give accurate information to the individual running the ventilator.  The Tidal volume or amount of air that goes into and out of the lungs per breath is critical with a Covid-19 ARDS patient who may have decreased Tidal Volumes for the same input pressures.  This could eventually lead to hypoxia if not corrected.  Without knowledge of the flows there is no way to know and correct this ahead of time.  Currently, it is not in the works to control the ventilator based on flow, this will be for monitoring only.


Details on air moving choice:

A Micronel U65MN-024KD-5 centrifugal blower was chosen as the air mover of choice for several reasons.  It is a fan and thus inherently not a positive displacement pump.  This is an engineering control to limit the possible pressure delivered to the patient's lungs.  This is a quality blower from Switzerland and will not disappoint.  

Security Safety Analysis of Low Cost Ventilator.pdf

Safety and security analysis of high-level design concept

Adobe Portable Document Format - 155.14 kB - 03/21/2020 at 18:53


PCB Board Layout.pdf

Version 1 PCB Layout- Designed for mostly SMD components for mass production

Adobe Portable Document Format - 536.25 kB - 03/19/2020 at 23:06


Ventilator Board Schematic.png

Image of Schematic Created in Eagle

Portable Network Graphics (PNG) - 71.22 kB - 03/19/2020 at 23:06


Portable Network Graphics (PNG) - 178.05 kB - 03/19/2020 at 23:06


  • 1 × Blower Micronel U65MN-024KD-5
  • 3 × Pressure Sensor Amphenol NPA-300B-005D
  • 1 × Microcontroller Particle Argon
  • 1 × TIP120 - Exhale Solenoid
  • 1 × 1N4001 Flyback Diode

View all 13 components

  • LCD and Flowmeter Testing

    Jake Wachlin2 days ago 0 comments

    In support of our PCB design, and to test out some of the more uncertain concepts, we set up a breadboarded prototype of the LCD and the flowmeter. The main components in the prototype:

    • Adafruit Feather M4 Express (SAMD51-based microcontroller development board
    • SFM3300 flowmeter (+/-250 SLM full scale range, I2C interface)
    • NHD-0420D3Z-FL-GBW-V3 LCD display (4x20 backlit LCD character display)

    The prototype was set up as shown below. The flowmeter and LCD both require 5V power, but the flowmeter is compatible with 3.3V level I2C communication. The LCD requires logic level shifting up to 5V. The LCD also can only communicate at up to 50kHz SPI. For maximum use of this project, the hope was to set up the firmware to use Arduino API's where possible. Unfortunately, for the Feather M4, the I2C speed cannot be lowered below 100kHz using the Arduino "Wire.setClock()" interface. I had to lower the rate manually. For reference, the snippet of code for setting up the SAMD51 in slower I2C is as follows (and all this on our GitHub as we update it):

    // Setup I2C at <50khz for LCD
        Wire.begin();                                     // Set-up the I2C port
        sercom2.disableWIRE();                            // Disable the I2C SERCOM
        GCLK->PCHCTRL[23].bit.CHEN = 0; // 23 is SERCOM2
        while(GCLK->PCHCTRL[23].bit.CHEN != 0);
    	GCLK->PCHCTRL[23].bit.GEN = 0x04;			// Generic clock generator 4
    	GCLK->PCHCTRL[23].bit.CHEN = 1;
    	while(GCLK->PCHCTRL[23].bit.CHEN != 1);
        // TODO what is GCLK4 actually?
        SERCOM2->I2CM.BAUD.bit.BAUD = 48000000 / (50000) - 1;   // Set the I2C clock rate slow
        sercom2.enableWIRE();                             // Enable the I2C SERCOM  

     For the Feather M4 board, the I2C is set up for SERCOM2. The peripheral index for SERCOM2 is 23. I set up SERCOM2 to be run off of GCLK4. Underneath all the layers of Arduino, I am not quite sure yet what GCLK4's rate is. Nonetheless, I was able to get about 30kHz clock rate, as confirmed by my logic analyzer.

    I set up the firmware to support:

    • Display of current information
    • Settings input mode using pushbutton to page between settings and knob to choose the particular setting's value.
    • Read flowmeter, numerically integrate it and estimate tidal volume

    The picture below shows the prototype setup and connections. The interface to the flowmeter was through a fairly long wire. In our design we will use an I2C driver specifically for long distance communication with high capacitance on the lines. This prototype does not have it, but still seemed reliable. The measurements have checksums and I did not see a checksum fail during testing. The flow measurements seem quite stable, and estimation of tidal volume from integrated flow rate seems reasonable.

  • Flow Meter Update

    Erik Wachlin4 days ago 0 comments

    We have been working hard to design a connector for the flow meter that can be made anywhere.

    The Sensirion 3300-D flow meter communicates via I2C which is typically an on PCB communication protocol.  We are using it at the patient wye which is about 1 meter from the ventilator.  The likelihood of poor data quality was high, so we designed a solution using a Texas Instruments P82B715DR I2C bus extender on the main PCB as well as one on the flow meter PCB.  This bus extender allows us to go off the board to much further distances without sacrificing data quality.  The flow meter PCB is all SMD components.  It has spring pins to connect to the pads on the flow meter, and a molex microfit 3.0 connector on top to connect to the main PCB via and off the shelf cable. 

    The PCB is held onto the flow meter by a 3D printed clip.  Here is a picture of the full assembly.

    Here is a picture of a test print and the clip on the flow meter.

  • Information Links

    Erik Wachlin03/16/2020 at 02:54 0 comments
  • To dos- rolling list

    Erik Wachlin03/16/2020 at 02:28 0 comments

    Add 2 modes of ventilation that could be useful for Covid-19

    • Pressure Control mode
      • Inputs
        • PIP- Peak Inspiratory Pressure (cmH2O)
        • PEEP- Positive End Expiratory Pressure (cmH2O
        • BPM - Breaths per minute
        • FiO2 
      • Output
        • Directs user as to flow rate setting for oxygen
    • APRV- Airway Pressure Release Ventilation
      • Inputs
        • P-high (cmH2O)
        • P-Low (cmH2O)
        • T-high (seconds)
        • T-Low (seconds)
        • FiO2
      • Output
        • Directs user as to flow rate setting for oxygen

    Add startup checks for the ventilator:

    • Tightness test
      • Turn on blower to max and ensure that the pressure increases to static pressure and hold for 1 minute to verify that flow does stop.
    • Flow meter offset calibration
      • The tubing and system will have air capacitance that needs to be subtracted to get correct tidal volumes.  Pump up the system to max pressure and create a flows table.  Do this 5 times and take average.

    Add Alarms to ventilator- alarms to be published to cloud and sent out be sent out to hospital staff.

View all 4 project logs

  • 1
    Touch Screen Installation

    The touch screen of choice for ease of integration is an Adafruit 2050 3.5" touchscreen.

    Please reference their instruction guide for soldering the and preparing the screen for communication over SPI at the below link:

    You will only need to solder on the pins for the SPI interface side of the board.

    We will utilize the four mounting hole to connect the touch screen to the enclosure.

    We will then utilize the male to female jumper wires.  The female portion will connect to the touch screen pins and the male side will be inserted into the screw terminals on the PCB.

    Please connect the following items:

    The screen will be used to display the pressure and volume trends as well as for adjusting settings.

    DescriptionPCB LabelArgon PinTouch Screen Label
    Supply voltage +3.3V+3.3V+3.3V3-5V
    SPI ClockCLKSCK (D13)CLK
    SPI Master in Slave Out ConnectionMISOMISO (D11)MISO
    SPI Master out Slave In ConnectionMOSIMOSI (D12)MOSI
    SPI Chip SelectCSD7CS
    Data or Command SelectorD/CD8D/C
    Resistive Touch Screen Y+Y+A3Y+
    Resistive Touch Screen Y-Y-TXY-
    Resistive Touch Screen X+X+RXX+
    Resistive Touch Screen X-X-A4X-

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates