Introduction: Covid-19 Ventilator Control Unit

About: We are a team of engineers, scientists, makers and creatives dedicated to building open-source technology to save lives

This project is the prototype build for the Ventilator Crowd, crowd-sourced ventilator.

The public-facing website for this project is here:

It is shared here so that others can build on our current work, to learn about these controllers and to understand what we are doing. Note that this project is not yet tested and has no approvals for medical use. As such this controller must not be used for any medical or safety-related purpose. In this form it is intended as a learning resource not an item of medical equipment.

This controller is intended to be the core controller for of a number of our alternate ventilator designs. The 'bench-test' demonstration version drives a small 9g servo - simple to demonstrate the control behaviour. The complete prootype unit outpus a PWM signal which can then we used as an input for other types of mechanical actuators. Adapting the software to run with a stepper-motor is relatively simple.


1. Arduino Uno SMD R3

2. Serial 2004 20x4 LCD display Module

3. KY-040 rotary encoder


5. 2 LEDs - 1 Green, 1 Red (or other contrasting colours)

6. Solderable prototype board (around 90x70mm)

7. Plastic electronics project enclosure 220 x 150 x 64mm

8. M3 bolts, nuts and stand-offs for mounting board

9. 2 x 200 ohm, current-limiting resistors for LEDs

10. 1 x 10k ohm, pull-up resistor for rotary switch

Step 1: Bread-board Version

This is the basic bread-board version of the controller - before addition of the pressure measuring transducer and before boxing.

Step 2: Bread-board Version - Schematic

This is the schematic for the bread-board version. A clearer version can be sccessed via this link but note that the rotary centre-push switch needs an additional 10k ohm pull-up resistor that is not shown on circuito:,9590,95...

This version is shown driving a servo - which acts as a reasonable visual demonstration for desk-top testing. It is, of course, not sufficient to actually drive the mechanics of the real ventilator unit - but it does help make the expected action visible for desk-top testing.

Step 3: Mount the Arduino in the Box Baseplate

Mounting the Arduino on the box baseplate results in a 'clean' and neat finish on the front side of the box. I guess that this goes without saying - but don't make the error of marking and drilling 4 holes. Rather, mark the general location of the Arduino. Mark and drill one hole. Then fit a bolt, place the Arduino on the bolt, then mark and drill the second bolt location. Repeat this for the final 2 bolts to get everything aligned.

Step 4: Mount Rotary Switch and Pressure Transducer Onto the Prototype Board

It is not ideal to have components on both sides of a prototype board. But in this cases there were few options; the vertical height of the pressure transducer is almost the same as the rotary switch. If both components were on the same side of the board, then the centre axle of the rotary controller would not extend through the face of the box.

So in this case, we mount the rotary switch on one side of the board and the pressure transducer on the other.

Step 5: Mount the LEDs Onto the Prototype Board

The LEDs are used to indicate the inhale and exhale cycles. These need to be visible through the front face of the box and are therefore on the same side of the prototype board as the rotary controller.

Step 6: Cut the Holes in the Front Face of the Box

This is an error-prone step that can easily result in a damaged box, or one in which the display and controlls are not well alligned. Take great care in measuring the box and marking the display-cut out square to the sides of the box. Check that there is enough space around the hole for the display board to fit - noting that the circuit-board for the display is several milli-metres larger than the display itself.

It is a good idea to cut paper templates for all holes that need to be cut. This ensure a good fit. Another common error is to cut holes 'back-to-front' as a result of confusing the orientation of the components. Clearly mark your template as either facing forward or backward and note the left and right as shown in this picture.

Step 7: Mount the Protoype Board on the Bottom of the Box Using Spacers

Whilst it would be easier to bolt the display and circuit board onto the front face of the box this has two disadvantages. Firstly, it makes the front of the box ugly. The method shown here results in no screws on the front face of the box - a very 'clean' design. Secondly, this method makes assembly and wiring easier. All of the components can be assembled onto the bottom of the case, then the front face can simply be placed on top of the base. Fitting components into the front face of the box can be tricky because of the restriction in space due to the box sides.

The question is .. how to drill the holes in the bottom of the box so that when everything is assembled it all lines up? My favourite method is this: fix the display board and circuit board into the front face of the box using tape. Put 'blu-Tac' or some other removable 'putty' material approximately where you think the legs will be fixed. Close the box - and the legs will make a print into the putty in the correct position. Use these marks to drill and bolt the legs of the display and the circuit board.

Step 8: Final Fix of the Circuit Board and Display Board Onto the Base-plate

These two images show the display board and circuit board mounted on the back-plate of the box. At this point the final wiring can be completed and checked.

Step 9: Wiring Diagram for the Board As Shown

The diagram here shows the physical wiring with the colour coding we used on our prototype.

Step 10: Final Check and Close Up the Box

The images here show the final stage of assembly and box closure. This particular box is held closed with 6 screws in the base, so the final effect is clean and neat.

The video provides a quick demonstration of the software.

The software for the Arduino can be obtained from the Ventilator Crowd Git Repository here:

Check the comments in each version of the software to ensure that you have the correct version for the device you are building.

As previously, note that this is a development prototype and is untested. It is not suitable for medical use. It is posted here to meet our commitment to share all of our development work on these important devices.