Open Source Mechanical Ventilator

Introduction: Open Source Mechanical Ventilator

About: Father of 3, husband of one, I never can stand still and I am constantly either fixing something or building something.

Disclaimer:
This device has not been certified nor has been tested on any human or animal. I am sharing this project to inspire other Makers to create and develop better devices or as a starting point for companies that want to use this idea to develop for a medically approved ventilator.

This device does not include the expiratory valve nor the mask.





Supplies:

1602

display

Arduino Nano

Voltage regulator (step down)

On-off switch

Protobaord

Servo (2 servos if you need more power)

3 potentiometers

Power supply (I am using a random 12 volts power supply)

Hard plastic sheets or thin plywood for the base

M3 screws (or similar)

M3 threaded rod (2*20 cm pieces)

2 skateboard ball bearings (or 4 if you use 2 servos)

2 short pieces of 8 mm rod (mine is carbon fiber, but wood, aluminum or steel is ok too)

Some pipe (silicon if possible. I do not have any, so I used gardening pipe for my model)

3D printer

Hand drill and drill bits

150 inox chimney pipe (other diameters can be used, but you will have to modify the piston and the cylinder retainers)

Hot Glue

1010 Aluminum extrusion for the arch (you can also use wood or plastic for the arch)

Step 1: Building Steps

Watch this video first:

Building the base:

My base is 30 x 30 centimeters and 4.5 cm tall. You can make it bigger, but not smaller than this because the pipes underneath would not fit.

Wiring:

See the attached schema.

Voltage regulator steps down to 6 volts. Do not run the servo power through the Arduino. You will burn it. Ground the servo to the Arduino.

Assembling the Breather:

Watch the video to learn how to assemble the cylinder, the rods, the piston, bridge, valves and pipes.

The cylinder is a piece of standard inox chimney pipe. I cut a 14 cm chunk out of a longer piece. I used metal scissors for that.

I used felt as piston rings. It took me some time to figure out how big those rings should be to properly seal the piston to the cylinder walls. In the 3D design, I have put a center piece that can be used or not, depending on the thickness of the felt you are using or is you want to have 2 seals or just one. In any case, you put the felt between the head and the tail of the piston, and you close the whole thing with 4 M3 screws.

Make sure the 2 valves are placed in the right direction. Both valves are installed in the same direction (slanted part on top)

Please note that if your servo cannot cope with the piston, you can add a second one by installing a second bridge with another servo. The piston tail can accommodate either one piston rod or 2. Both servos can be connected to the same Arduino pin (D9).

Step 2: Code

#include <Servo.h>
//Include LCD library
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


Servo myservo;  // create servo object to control a servo

int potpinvol = 0;  // analog pin used to connect the air volume potentiometer
int potpinvel = 1;  // analog pin used to connect the speed potentiometer

int valvol;    // variable to store the volume 
int valvel;    // variable to read the value from the analog pin
int dispvol;
int dispvel;

int pos = 0;    // variable to store the servo position
int vel = 0;    // variable to store the servo speed
void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.

  lcd.print(" TLR Respirator");
  delay(3000);
  lcd.setCursor(0, 0);
  lcd.print("                ");

}
void loop() {
  valvol = analogRead(potpinvol);            // reads the value of the potentiometer (value between 0 and 1023)
  valvol = map(valvol, 0, 1023, 180, 0);     // scale it to use it with the servo (value between 0 and 180)
  //delay(15);


  for (pos = 0; pos <= valvol; pos += 2) {
    // in steps of 1 degree
    myservo.write(pos);
    velocidad ();
    delay(valvel*2 );
    pantalla();

  }
  for (pos = valvol; pos >= 0; pos -= 2) {
    myservo.write(pos);
    velocidad ();
    delay(valvel);
    pantalla();

  }
}
void velocidad () {
  valvel = analogRead(potpinvel);            // reads the value of the potentiometer (value between 0 and 1023)
  valvel = map(valvel, 0, 1023, 10, 2);     // scale it to use it with the servo
  delay(1);
}

void pantalla() {
  lcd.setCursor(0, 0);
  lcd.print("Volume: ");
  lcd.setCursor(9, 0);
  lcd.print ("   ");
  lcd.setCursor(9, 0);
  dispvol = map(valvol, 0, 178, 0, 100);

  lcd.print (dispvol, DEC);
  lcd.setCursor(13, 0);
  lcd.print("%");

  lcd.setCursor(0, 1);
  lcd.print("Speed: ");
  lcd.setCursor(7, 1);
  lcd.print ("   ");

  lcd.setCursor(7, 1);
  dispvel = map(valvel, 10, 2, 5, 30);
  lcd.print (dispvel, DEC);

}

Step 3: Print All This!

All elements are here: https://www.tinkercad.com/things/bVWfMEI9GNI

Check the video. Some pieces need to be printed twice.

3D Printed Contest

Participated in the
3D Printed Contest

Be the First to Share

    Recommendations

    • Clocks Speed Challenge

      Clocks Speed Challenge
    • Toys & Games Contest

      Toys & Games Contest
    • Big vs Small Challenge

      Big vs Small Challenge

    7 Comments

    0
    irene.olayinka
    irene.olayinka

    1 year ago on Step 3

    Hello Mr. Diaz, here are some questions I hope to ask you about your ventilator:
    - What did your design process look like, from the beginning to the creation of this model?
    - Could you give a more in-depth explanation about how the mathematics behind the motion of the asymmetrical curved rod?
    - Could you give a more in-depth explanation about how the mechanics of your ventilator work?
    - Could more of the parts of this ventilator have been printed instead?
    - How long did it take you to design all of the parts in Tinkercad?
    - How did you come up with this idea?
    - Could a similar ventilator be designed without the programming aspect?
    - What was the most difficult part of the creation process?
    - What, if anything, did you learn during creation of this model?

    Thank you so much for your interest and availability!
    Irene

    0
    pablo de paris
    pablo de paris

    Reply 1 year ago

    I will respond to the
    rest of questions in one post:

    - How long did it take you to design all of the parts in
    Tinkercad?


    About half a day. Tinkercad,
    when used correctly it is a simple yet powerful tool. I used tinkercad because
    it allows others to easily modify my design.

    - How did you come up with this idea?


    I have no clue. There
    are a lot of things going on in my head all the time. I guess it helps that I
    know mechanics and electronics, and robotics, and on and on and on…


    - Could a similar
    ventilator be designed without the programming aspect?


    Ehhhh…. Well, I guess
    it could be done, but it would be like eating watermelon without using your
    hands, or like eating spaghetti without a fork. Why would you want to do
    that???


    - What was the most
    difficult part of the creation process?


    By far, creating the
    seal between the piston and the cylinder. I used several types of rubber, Teflon,
    nylon… and ended up using felt. I remembered that church organs use felt to
    seal the valves, and I used the same technique that has been working for
    centuries. Watch the video in the instructables to better understand how the
    seal is done:

    - What, if anything, did you learn during creation of this
    model?


    Honestly, the device
    itself it is much simpler than other projects that I have done, so, form a technical
    point of view, I have not learnt much.


    What I have learnt with
    this experience is the following: Making a project “Open Source” means that
    many people, form many parts of the world, with a wide range of skills is going
    to contact you, and they are expecting help. Since I posted this project in
    LinkedIn, People from all continents have contacted me willing to know more or
    asking for help. When I thought I was done… I was not!


    Hope this helps,





    P

    0
    irene.olayinka
    irene.olayinka

    Reply 1 year ago

    Hello Mr. Diaz,
    We recently submitted out project for judging! Thank you so much for all the help and information you provided us with - we could not possibly have completed our project on time without it. My team deeply appreciates all you've done for us :)

    Thanks,
    Irene

    0
    pablo de paris
    pablo de paris

    Reply 1 year ago

    - Could more of the
    parts of this ventilator have been printed instead?


    Yes. All the parts,
    with the exception of the motor and electronics could have been 3d printed. The
    inox cylinder would have needed to be polished on the inside.


    I did not 3d print all the parts because if you can use common materials
    such as plastic boards, rubber tubes or aluminum extrusions for the arch, you
    better use that rather than 3d print those pieces. 3D printing is a painfully
    slow process!!

    0
    pablo de paris
    pablo de paris

    Reply 1 year ago

    - Could you give a more
    in-depth explanation about how the mechanics of your ventilator work?


    This is an air pumping
    device where you can vary the volume of air pumped in each stroke and the speed
    of the stroke. There is a one way valve on each end of the device to make the
    air flow one way only.

    IMG_20200504_094114.jpg
    0
    pablo de paris
    pablo de paris

    Reply 1 year ago

    - Could you give a more
    in-depth explanation about how the mathematics behind the motion of the
    asymmetrical curved rod?



    The shaft of a
    servomotor can only move 180 degrees. I made some quick calculations about the
    distance that the piston should move to displace more than 1 liter of air and I
    ended up with 8 cm of travel.


    To be able to convert a
    circular movement to a linear movement, you need some sort of double jointed arm,
    as used in any car engine. I painted the whole thing in a piece of carboard and
    with some bamboo sticks I figured out the shape of the rod and the shaft. The rod
    is curved to avoid the interference with the shaft. I could have done a straight
    rod that was attached in front of the shaft, but it would have moved in another
    plane, and created unnecessary torque forces and wear. I am afraid you were
    looking here of more a mathematical explanation, but all was done with an empty
    box of Corn Flakes.


    The key thing in all this was to work on the same plane of the head of
    the servo, no lateral forces involved.

    0
    pablo de paris
    pablo de paris

    Reply 1 year ago

    - What did your design
    process look like, from the beginning to the creation of this model?


    It starts by creating
    the whole thing in my head. I am able to visualize the whole machine in my head,
    with all the moving parts, forces, and flows. Many times, I can see in my head
    different options for the same machine. In this case, in my head, there were 3
    options:


    • Using bellows like
      those that were used in forges (google “forge bellows” and you will see what I mean)

    • Using a piston moved by
      a servo placed on the side of the machine, similar to a crude oil pump (yep,
      google that too if you do not know what I am talking about)

    • Using a vertical piston (the design
      posted here)


    Once I have
    designed the device in my head, I do a quick drawing in a piece of paper of all
    the options and I start building a quick prototype of every option. In this case,
    I started with the “forge bellows” option. I built the bellows and even if the
    bellows worked flawlessly, I realized that the building process was way too
    complicated and that there was no way to clean the inside of the bellows. I
    stopped that option and moved to the next one, the “crude oil” design. With this
    design, I was having a lot of lateral forces on the vertical shaft of the
    device, having to reinforce the device and getting a lot of wear on the moving
    parts. This option could have end up working, but it was getting way too complicated,
    so I moved on to the third option, the one that you see in this instructables.


    One key
    aspect of the design is the constraints that will limit your design. In this
    case, there were 2 major constraints:


    • The
      cylinder has to be super smooth to be able to have a good seal with the piston
      rings, it cannot be 3D printed. The surface would be too uneven for this device
      to work. Since the volume of air that you need to push has to be at least 1
      litter of air, I looked online for cylindrical objects that were made out of
      stainless steel that were about 15 cm in diameter. I found a chimney section
      that was that size and bought it.

    • The
      servomotor has a limited torque, it must be used wisely to be able to move the
      piston. Any lateral force (wasted power) must be avoided. I ended up creating a design that pushes in
      one single plane, and, as a backup plan, I even designed a version where 2
      servomotors are used if needed.


    Once you
    have in mind these constraints (in this case, size of one component and torque of
    the motor) you can design the rest of the machine.
    IMG_20200323_213728_163(1).jpg