COSV - Cam Open Source Ventilator

Cam based ventilator designed to fit directly on an BVM, on the patient.

Similar projects worth following
COVID-19 sucks. Ventilators are needed.
This is our take for turning a bag-valve-mask (BVM) into a ventilator.

Compresses the bag much like a hand would to reduce the stress on it.

Simple/robust mechanism.

Lightweight at just 360g (12oz) for the BLDC version, so it can be positioned on the bag itself, on the patient.
This eliminates needing to extend the tube from the bag to the mask, which eliminates CO2 buildup while still allowing the use of the most common BVMs.

Can also be used off the patient with bags which extend the inlet instead, like the L770 Disposable Confined Space Manual Resuscitator, or by stealing the tubes/valve from an actual ventilator.

Laser cuts in about 10 min, or 3D prints in about 6-8 hours (not including the VISP sensor) The parts are all interchangeable.

Files are up on GitHub now.
Some hacking and slashing was used on the source to generate the laser cut parts, so use the rendered files unless you are willing to work for it.

Hardware is done until testing reveals issues with it.  

Source and rendered files are up on Github.  Laser cut files are here.  3D printable files are here.

So far you can use a BLDC gear motor, a small worm drive gear motor, or a Nema 23 stepper to drive this.

Torque requirement is 15-30 kg/cm and speed requirement is 22 to 30 rpm.

We need to deliver a faster inhale stroke than previously specified, so torque requirement is now 30 kg/cm and speed requirement is 48 rpm.  This may put it beyond what our Nema 23 can do and puts my first pick for the BLDC out of the running as well.  The previous number for inhale time was 1.5s.  I picked the parts based on 1s.  The actual time from the UK document is now 0.3s.  Ooof.  Everything gets harder.

Electronics and sensing are sorted, but not completed.  Still missing some parts.

Software is in progress.  With the sensor stack in place, will be capable of assist ventilation, or static rate ventilation.

Pressure and volume delivered will be directly adjustable.  Maximum pressure will be configurable.

MPEG-4 Video - 2.50 MB - 03/25/2020 at 19:55


  • The A team, or at least, a team.

    Daren Schwenke4 hours ago 0 comments

    The ranks of this project have grown a lot recently, along with the work that needs to be done to bring this to completion.

    We are getting organized and a team with clear roles and defined objectives that can work on issues in parallel is happening.  I'm pretty excited about that.

    So say hello to the team.  Group photos will have to wait.  :)

    Also if you joined and have not shown up at least once in the next 24 hours, you are getting removed so we can stay focused here.

  • Sensor assembly body work

    Daren Schwenke3 days ago 0 comments

    We changed the sensor assembly for #VISP - Ventilator Inline Sensor Package so that it can now use either the BMP280 or BMP388 sensors for any position.

    I cleaned a bunch of stuff up, generated a cover for it, added a spot for an OLED, and here we are.

  • New project split off: VISP

    Daren Schwenke4 days ago 0 comments

    We split our efforts to generate a sensor package into its own project now as it seems this is something pretty much every ventilator project will need to do the job right.

    It also may be useful standalone to make dumb ventilators smart.

    #VISP - Ventilator Inline Sensor Package 

  • Absolute is relative

    Daren Schwenke6 days ago 9 comments

    We were looking at using cheap barometric pressure sensors, but the issue is they are absolute pressure sensors.  They are exceedingly sensitive and work within the range we need for both positive and negative pressure, but they read the pressure applied to them relative to a vacuum within the device. 

    Because of this, to determine where '0' is with regards to your current ambient pressure, you need to take a sample with no pressure above or below ambient pressure applied.  Where you are in the world (altitude) will move this number as well.

    But... if you were already connected to a patient, and providing pressure, and lost power for a split second you would no longer know where '0' was.  You would take your sample and your 'relative to startup' number would be offset then, and that is dangerous as now you could be doubling the airway pressure of the patient!

    We just solved that.  Use four of them.

    Put three on one side of a PCB and epoxy that board into the ports on the pitot tube we have already designed.  That gives you forward flow, reverse flow and pressure.  Now the trick is have a fourth sensor, and point it back at atmospheric pressure.

    Now you have your zero point independent of what you read at startup and can accurately calculate what each of the sensors is reading relative to that.  You have just turned all your absolute pressure sensors into relative ones.

    One remaining issue is that all of the sensors share an I2C address, but they also have a pin to change that address by 1.  So if we pull those all those pins low with resistors, and then cycle through pulling them high with something like an LED driver also on the same I2C bus, then we can read all of the sensors from the same address. 

    Better solution, use a proper I2C translator such as the LTC4316. We have enough unique addresses with just one as we can hang two sensors off the I2C bus before the translator, and two off after it by setting the SDO pin on every other one. We added a second bus translator to do level shifting and allow moving the address of the whole package so you can have two of them on the same bus, or avoid something else with a static I2C address

    Four wires, better resolution, faster updates, and the sensors are $3 each.

    Still working on the best way to flip that address pin.

    We are working on spinning up a PC board for this. Right now it looks like it's 16 mm by 40 mm to house the four sensors, two I2C bus translators, an Eeprom, and a voltage regulator. 

    Those components will allow the device to work with both 5 volts and 3.3 volts seamlessly, and if needed, put more than one completed device on the same bus.  Thanks to @Steven.Carr for brainstorming this with me and coming up with this layout, and @harit trivedi for also working on the schematic and parts placement.

  • Resin printed pitot

    Daren Schwenke6 days ago 0 comments

    @Steven.Carr printed out the current pitot tube on his resin printer.  They look great, are strong, and are airtight.

    However, it is very likely we're going to redesign this so we can plug the sensor directly into it.

    Stay tuned.

  • MPXV7002DP Sensors

    Steven.Carr7 days ago 0 comments

    I want to put a shout out to Stefan from Williamstown, NJ who let me pick up these sensors this afternoon.   This sensor is used by quadrocopter and drone enthusiasts for it's compact size and robust capabilities.   If you are having trouble locating some, reach out to your local drone enthusiast club, they might have a couple on hand!

  • Files are up

    Daren Schwenke03/25/2020 at 19:40 0 comments

    Finalised the design, rendered the output, and the files are up on Github.

    All the parts can be 3D printed or laser cut, and are all interchangeable.

  • Vape sensors

    Daren Schwenke03/25/2020 at 16:30 0 comments

    Did an experiment a few days ago.  Gutted a vape and stole the sensor.

    Applied 3.3v and ground to the appropriate two pins to match the setup in the vape. Given it runs directly from the battery this is probably a 2.6-5v device.

    The signal pin went from 0 to Vcc on inhale.

    I don't know if this is an analog or a digital signal, but I will find out today.  

    If it is analog, it is going rail to rail with < 0.3 psi of input.  I am hoping it is...

    If it is an analog device, two of them sealed side by side, facing opposite with a voltage divider on the output pin would give me a sensor capable of -0.3 psi to 0.3psi.  That is what I need to measure the flow using my pitot tubes.

    <EDIT> Um.. that would suck as my output would be centered around 0v and go down to -Vcc.  Just reading them both as to ADC inputs would work though.  I did not get to testing if these are analog or digital yesterday.  Perhaps today. </EDIT>

    Cross your fingers.

  • 3D printable S type pitot

    Daren Schwenke03/25/2020 at 02:17 0 comments

    Works.  Airtight.  Stronger than it needs to be by a whole lot.  

    This takes care of the requirement of measuring the volume and pressure of air being delivered.

    Moves a water column +/-1 cm at normal respiratory rates, so within the range I need.  Blowing as hard as you can you can get 10cm of movement.

    Three ports.  Outer two go to the pitot tubes.  Center is for reading the pressure with regards to ambient.

    Now if I only could get some pressure sensors to hook it up to.

  • Motor.

    Daren Schwenke03/24/2020 at 22:35 0 comments

    The BLDC motor arrived.  

    Same torque...

View all 15 project logs

Enjoy this project?



Ocelot wrote 2 days ago point

Hi, I don't know if you were able to find an up-to-standard motor yet. I found this company, based in *Corona*, CA, that might carry what you need.

  Are you sure? yes | no

racoon wrote 03/25/2020 at 10:48 point

Have you looked into automotive MAP Sensors? a lot a older car model were using these before MAF sensors. They mesure absolute vacuum and pressure.

  Are you sure? yes | no

Daren Schwenke wrote 03/25/2020 at 16:04 point

And work by heating resistive wire and measuring the amount of power required to maintain a certain resistance.  The heated wire part, in my opinion, made it unsuitable for O2 use.  But thank you for your suggestion.

  Are you sure? yes | no

racoon wrote 03/25/2020 at 16:22 point

no that is a MAF (Mass air flow) sensor. The heated wire react to the flow of air making if colder.

A MAP sensor is a pressure sensor and work just like your differential pressure sensor but measure the absolute value. So at rest It would have a measure of the atmospheric pressure. But you could log that value at startup and then go on with measuring pressure when the system is working. Look at the section in the link called "Analog Map Sensor"

You can tell the difference between the two type of sensor by their shape. A MAP sensor only has a small input tube without output

A MAF(the wrong one) is made to fit into the intake tube to be exposed to the airflow

Example found on amazon:

Typical shape, usually 3 wires, 5v GND and signal (analog)

  Are you sure? yes | no

Daren Schwenke wrote 03/25/2020 at 19:38 point

@racoon Ah.. that is more useful.  Wonder if they got one in 22mm, or one where the sensor and the pitot are split....  The latter would be very, very useful.

  Are you sure? yes | no

racoon wrote 03/25/2020 at 21:05 point

Unfortunatly there is no pitot in those sensor, it has a internal reference chamber and the input chamber so if you need two test points, you need two sensors. They are used to measure absolute pressure since its necessary for an engine to know if air is more dense or no (read different altitude)

  Are you sure? yes | no

diego.diez wrote 03/25/2020 at 22:04 point

A think that @racoon was thinking in one of those:

you should be carefull in the selection of the sensor, cause there are absolute, relative (with two inputs) and relative to ambient pressure and everyone is for an specific purpose.  For the small research I have been doing, the more usefull for medic purposes are the absolute (but please do some research), if the absolute sensor gives you "real" readings that you do not need to calibrate, thats a huge bonus, cause you can inform that in the GUI and a health carer could understand easily. Mind that the unit used is  cmH2O.
Sorry about my english. 

  Are you sure? yes | no

clive wrote 03/24/2020 at 08:34 point

Deeply impressed with your project.
I will be building it and try writing some software.
Is there a stl for the latest modifications?
Or openscad files?
Great work guys!

  Are you sure? yes | no

Daren Schwenke wrote 03/24/2020 at 15:48 point

The stl's that are attached are the latest, but missing two files I forgot to post.  I need to get around to actually pushing this up to github.

  Are you sure? yes | no

amd_athlonxp wrote 03/24/2020 at 04:49 point

Do you have make a simulation? The arm does not looks so stable.

It needs a slightly more organic shape.

You need to heat the air up a bit and increase the humidity of the air.

It feels very bad if the air is dry and cold.

  Are you sure? yes | no

Daren Schwenke wrote 03/24/2020 at 05:11 point

Thank you for your comments.  In PLA, the arms are at least 10x stronger than they need to be.  The members under only tension are 2.4mmx7mm.  The members under compression are 7.2x7mm.  In acrylic this number is lower, but I can increase/decrease the wall size with a single variable if needed.  I do have the means to have a finite element analysis performed, and I do have someone testing them to destruction as well.

Yes, it does need a better shape.  Once the cover is on the motor it will be more organic.  I was more concerned right now though with not wrapping up peoples hair on the cam.

Humidity was to be provided by bubbling the input O2 through water.  For warming the air, I was going to warm the water with a fish tank heater, only exposing the sealed glass area to it.  This doesn't help if the patient is not on any O2, but I'll cross that bridge when I get there.

  Are you sure? yes | no

Muhammad Bin Sohail wrote 03/23/2020 at 22:33 point

hello anyone help plzzz

  Are you sure? yes | no

Nazaret García wrote 03/23/2020 at 19:33 point

Really nice work!!! I love it! I'm a programmer myself, so it would be an honor to help you with this project! Let me know how I can help please!

  Are you sure? yes | no

Nazaret García wrote 03/23/2020 at 19:34 point

Plus: I have a medical doctor in my family so she can help us if we get stucked with something.

  Are you sure? yes | no

Daren Schwenke wrote 03/23/2020 at 21:00 point

Responded in PM.

  Are you sure? yes | no

Dan Maloney wrote 03/23/2020 at 16:54 point

Nice work, I like the design. Good luck with further development.

  Are you sure? yes | no

Daren Schwenke wrote 03/24/2020 at 04:32 point

Thank you.  Hoping to have this ready for DOD Project VULCAN Hack-a-Ventilator Hackathon.  Deadline is Wed at midnight.

  Are you sure? yes | no

TyGuy wrote 03/23/2020 at 05:07 point

@Daren Schwenke I might be interesed/able to help with some software - I will message you directly.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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