Ventilator for Covid-19 with Arduino based processor

Dear forum members,

I built a mechanical ventilator powered by Arduino for Covid-19 8)
I started with Arduino Uno but then upgraded to Teensy 4.1 (Arduino based) due to the calculation load.

Here is some technical details:

Youtube link:

What you think of it?

Do you have any tips what to improve?

How the Magic Ventilator works

Here are the basic parts I used:

  • AC powered Air mattress inflator (120v or 220v depending on what country you are in).
  • x2 car mass flow sensors with flow temperature sensors.
  • x2 DC Direct acting solenoid valves (0-5psi).
  • Pressure sensor (I used MPX10).
  • Pressure relief valve (Can be made from parts bought from a local hardware store (Please contact me for details).
  • x2 HEPA filter.
  • 3/4 inch plumbing pipes (Can be bought from any local plumbing store).
  • Arduino based micro controller (ESP32 or Teensy). Arduino Uno is not fast enough to handle it.
  • Power supply with x3 LM317T to match to the different voltages needed by the different components.

Basic circuit diagram

Basic description of how it works

  • During inspiratory phase we control the AC air pump with the triac and pump in air at certain speed and pressure.
  • We open the inspiratory solenoid valve and let the air flow through the air flow sensor and through the HEPA filter and into the patient lungs.
  • Once inspratory phase is over (can be triggered by time, volume or pressure) we open the expiratory solenoid valve and release the air through the expiratory flow sensor and out through the expiratory HEPA filter.

Some details of the circuit


AC control circuit (120v – 220v) for the air pump


Solenoid control circuit. I used 12v solenoid but modified it to use 5v since breathing pressure is not high (never exceeds 1 psi).

Calibration tools
Low Pressure Gauge (1 psi or 30 inch of water is enough) to add to the ventilator when testing to make sure you have the pressure reading correct.
Pitot tube to calibrate the flow sensor (Pitot tubes are used on plans and boats to measure their speed).

User interface and software
I’m using a python server to run locally on a laptop and communicate with the ventilator hardware.

The user interface runs on a Chrome browser and communicates with the python server to send user command to the hardware and to display to the user graphs, alarms and the ventilator status.