We can all contribute our skills and ideas to help overcome COVID-19!
Many parts of the world do not have the health resources to provide ventilators for remote areas to the patients needing them.
This ventilator design is based on parts that are readily available or easily obtainable for minimal cost. In fact, I haven't been to a hardware store since before March 13th! (It's now May 1st). I built this with items I found in my workshop!. It can be done!
It's built around an automotive windshield wiper motor. These motors are plentiful in scrap yards all over the world and cost between $50 and $0. They are high torque, quiet, reliable and run off 12 volts DC.
The ventilator is controlled by an inexpensive Arduino Nano (or Uno) microcontroller.
Both the breaths-per-minute and pause time between breaths can be adjusted to suit the patient. You can also adjust the air volume per breath.
Power can be provided by inexpensive or free computer AT-type computer power supplies, wall AC power adapters and even 12 Volt car batteries.
The device uses a standard size bag-valve-mask (BVM) manual resuscitator, aka Ambu-bag (TM).
The frame is built from scrap plywood or whatever material is available.
This project can be built for well under $50US in a few hours without the need for specialized tools or skills.
To paraphrase the great Dr. 'Bones' McCoy, "Darn it Jim! I'm a maker, not a doctor! I can only use what I got!"
Let's get building!
DISCLAIMERI am a hobbyist maker, not a professional engineer. I have no training in medicine, bio-engineering or healthcare.
This prototype is a proof-of-concept design. IT IS NOT INTENDED FOR HUMAN USE! The designer makes no claims to the SAFETY, EFFICACY, or appropriateness for your use. USE AT OWN RISK!!!!
Let's build it!This project is based around a manual resuscitator bag (BVM), an Arduino and a windshield wiper motor. If you can get a motor that draws between 4 and 6 amps, it will have plenty of power to compress the resuscitator bag.
The ventilator consists of a plywood base, a compressor assembly for compressing the bag and a motor mount and base for driving the compressor.
All parts are built from 5/8" (16mm) plywood. Fasteners are mostly 2" wood screws and 3/4" wood screws for attaching the hinge and L-brackets. Sample drawings of the parts are supplied.
The provided parts diagrams are for the specific prototype I built. Size and shapes may vary based on the size and mounting method for your wiper motor and the size of your resuscitator bag. They are a guideline. Vcarve files are provided but they are minimal. You'll have to specify your part dimensions and toolpaths etc.
CompressorThe compressor assembly will press against the resuscitator bag to force air into the patient's lungs. It then retracts to allow the bag to re-inflate.
The compressor holds a firm foam ball (like a Nerf(tm) ball). A piece of tubing is inserted through the diameter of the ball. The tubing rolls on a 1/4" steel rod which acts as an axle to prevent the ball from abrading the resuscitator bag during prolonged cycles of compression and retraction.
The compressor is finally mounted on a rectangular plywood base that can be located on the ventilator base frame to give maximum compression of the bag.
You may find it's helpful to double the thickness of the base to get more downforce on the bag.
Two small modified L-brackets are mounted on the back of the compressor that serve as the mounting point for the shaft that connects the motor to the compressor. A simple nut and machine screw with washers attach the shaft to the compressor.
You’ll notice that the compressor has beveled edges on the top and bottom parts of the assembly. These angles allow the assembly to flex backwards without binding, on the retraction/exhale portion of the breath cycle.
Motor MountThe motor mount is made from two pieces of plywood. The base has 3 slots cut in it that receive machine bolts and wingnuts (that come up from under the ventilator frame) allowing the base to be slid forwards/backwards to increase or decrease the volume of air delivered to the patient for each cycle of the motor.
The motor mount plate will be modified to fit your particular wiper motor. My motor had a built in transmission that handled the reciprocating motion of the connecting shaft. Your motor may just have a circular motion and you can build a suitable connecting shaft to connect the motor to the compressor.
Now we need to fabricate and install sensors to detect the position of the motor in either full-inhale or full-exhale position.
We determine the position of the motor with two Light Dependent Resistors (LDRs), 2 LEDs and a cardboard disk mounted on the motor shaft. Two slots cut in the disk coincide with the maximum forward and rear positions of the motor. When the light shines through the slots, the Arduino microcontroller can determine the position of the motor. The Arduino then stops the motor until the full-inhale or full-exhale duration has passed. Then it restarts the motor for the next breath cycle.
Start by cutting a cardboard disk of sufficient radius that it won't hit the motor base.
Now fabricate two cardboard mounts for the LDRs and the LEDs. The LDR mount will go behind the disk and has the LDR's revealed through two holes to represent the full-inhale and full-exhale positions of the motor. The LEDs will be mounted in the correspondingly same positions to shine on the LDRs through the slots in the disk.
It takes some trial and error to get these items aligned.
The LDR and LED mounts are just hot-glued in place.
Here's how you can align the sensors.
With the motor connected directly to the power supply, let it run and stop it at its full-inhale (full compression/forward) position.
Supply power to the front LED and mark the bright spot on the disk.
Do the same for the full-exhale (full retraction/rearward) position of the disk.
In the Arduino code, there are some Serial.println() statements that you can uncomment to display the LDR values as the motor rotates. You can do the tuning after you've built the control panel and uploaded the Arduino sketch.
Cut out small slots around the marked points on the disks. These slots will allow light to fall on the LDRs. The Arduino will see the high intensity value as the indication that the motor has reached its full inhale/exhale positions.
The LEDs and LDRs have short lengths of two-conductor speaker wire attached. They will eventually be connected to the control panel. I used male and female header pins on the wires and the control panel circuit board so the wires can be connected/disconnected as needed.
A connecting shaft of 1/8" x 3/4" aluminium bar stock is cut to join the machine screw on the motor shaft to the L-brackets on the back of the compressor.
It's easiest to temporarily fix both the motor arm and the compressor in the full vertical position. Then measure, cut and drill your connecting shaft and mount it on the motor arm and compressor with machine screws, washers and nuts.
You should temporarily affix the motor base and the compressor base to your workbench and try running the motor with the power supply directly to check the motion of your motor and compressor. Adjust the length of the connecting shaft and/or the heights of the motor and compressor bases as necessary to get the motion that maximized the compression of the resuscitator bag.
Control PanelThe control panel contains the push buttons, LCD display, n-channel power MOSFET for controlling the motor and the Arduino Nano. The Arduino Nano is mounted in female header pin sockets so it can be removed/replaced if it's defective. It can be permanently soldered to the prototype board if you wish.
The panel contains the following functions:
Inhale Duration in seconds
Exhale Duration in seconds
Backlight Power On/Off
Breath Power - Inhale (in % of full motor power)
Breath Power - Exhale (in % of full motor power)
Run - Set machine to the desired duration and power values and run motor.
Stop - Retract the motor to the full-exhale position and turn off the power.
The panel should be wired according to the provided circuit schematic.
Looking at the reverse side of the panel, you'll see the Exhale-LDR and Inhale-LDR connections as well as the 12 volt connections to the power supply +12V(Red), power supply Ground (Green), motor positive (+) wire (Red) and motor negative (-) wire (Black). The 12 volt wires are of 14-16 gauge.
To mount the panel on the ventilator I just used some wood screws with short lengths of water supply hose as standoffs.
It gives a nice slant to the panel and cost nothing.
The Arduino SketchThe Arduino code for this ventilator is included with this project. It uses basic Arduino programming concepts for reading button presses, LDR values and driving the LCD display and controlling the motor through the MOSFET using pulse-wave-modulation (PWM) to adjust the speed.
You may also notice some timer adjustments in the void setup() block. This statement adjusts the frequency of the PWM timing so you don't hear the annoying whine of the motor as it's being controlled by PWM.
Because there are variations in motors and the preferences of the physicians using this machine, there are several settings at the top of the sketch that you can set to make it work with your motor.
Start by hooking the motor up to the power supply without the Arduino. Then run it and count the number of revolutions of the motor in one minute.
Then, set the 'strokesPerMinuteFullOn' value to that number.
You can also set the maximum and minimum power values for inhale and exhale cycles ('Pwr' variables) and the maximum and minimum durations for the inhale and exhale portions of a breath.
Save the sketch and upload it to your Arduino.
Double and triple-check your wiring and connections and connect the machine to your power supply. The two red wires are interchangeable. Either can go to the power supply and motor as they both connect to the cathode side of the diode on the Drain pin of the MOSFET.
Power everything up and give it a try!
A word about motors. My motor is a very light-duty ATV motor from a kit. It draws less than 1 amp. As it's a relatively low current motor, it has a hard time fully compressing the resuscitator bag on the inhale stroke. A standard motor out of a car or pickup truck will work great as it's got higher torque and runs at currents between 4 and 6 amps. It will easily be able to compress the bag fully.
I hope this project can serve as an inspiration for makers to build devices that can help people in remote areas get better health care. We can all do our part!
It was an immensely satisfying project.
NOW GO OUT AND MAKE SOMETHING WONDERFUL!
Comments