3D Printer AS Emergency Ventilator
At Sector67, we hacked some g code to validate the concept of using an off the shelf 3D printer with a couple of blocks to actuate an Ambu bag and turn it into an Emergency Ventilator. Based on this simple test, it seems like standard 3D Printer motion systems may be capable of generating the Tidal volumes and respiratory rates required, when using all three axis simultaneously (think diagonal downwards motion) to compress the Ambu bag. We mounted a simple presser block to the print head with velcro, and taped a reaction block to the print bed... and it worked. Now we just need folks who can hack the printer firmware to make this functionality seamless, and design the printed blocks for mounting an Ambu bag onto the print bed. We'll want a simple user interface to set the tidal volume and the respitory rates, hold times and such. Then we need a simple motion plan that translates the requested tidal volume and respitory rates into the appropriate xyz motion to achieve the correct velocity and adequate force.
So far we've just hacked up a few lines of g code to run it. And it seems viable. By using all three axis, we can generate sufficient force to actuate the bag and get into the range needed for tidal volume and respiratory rate.
We need a simple test version of the firmware that will allow folks to start evaluating the motion program with different models of printer and measure the associated airflow with a test lung (don't worry, we already have a lung). We'd like to quickly start testing the range of tidal volumes, and respitory rates we can achieve using this approach. We need to quickly verify what these printers can do, and if it is sufficient, or if we are asking to much of these systems that were never intended to push against any significant resistance. For reliability testing it would be desireable to start stress testing a few printers for extend run times, to see if they have a failure mode when used like this.
Next, a simple control loop to move the printer between a starting postion (bag uncompressed) and a finish position (variable) which represents the desired volume change in the bag to represent the desired volume of air to the patient (tidal volume). We would like to be able to set the rate of this movement to establish a respiration/minute rate. The cycle would then hold for a desired length of time, and then release the bag by moving back to the starting position, again at a specified rate. Right now we're doing this with some hacked g code, and it seems workable, but we're fighting with the printer's firmware that wants to do silly things like homing and moving the platform to z min. We'll supply the test machine to run it on.
Also needed, is a simple user interface using the printer's existing display and control buttons, which would allow the Respiratory Therapist to set the following parameters for a patient:
a) Tidal volume (amount of air pumped on each cycle)
b) Respitory rate (breaths per minute)
c) Ratio between inhalation rate and expiration rate (something like say 2:1)
d) Hold times for breath in and breath out.
The user interface will be key to the acceptance, usability, and safety of the system.
Finally, the fun part for those of you who have 3D printers. Design and Print and share two pieces for your model printer:
a) A block that can be securely fastened to the print head (ideally without modification) to act as the "pusher" in the system. This will be a rounded shape that will push into the bag.
b) A reaction block that will mount on the print bed, securely holding the Ambu bag, and resisting the force of the pusher block as it deforms the bag.
Note: We will likely need all three motors engaged (moving) to create sufficient velocity and force to actuate the bag, so think of the motion as going along a diagonal (say left, back and downward), on the compression stroke, so the pusher and reaction block should be oriented along this axis. (I hope that's clear) It is likely that these components will vary between printer models. Open frame machines like the repraps should provide less constrained access for installing the Ambu bag. Closed box styles like the makerbots may be more challenging.
Why this approach? Well first off, time is short. Second, designing/building/testing new hardware is complicated and takes time. Three, off the shelf proven hardware is always desirable. Getting software done in a hurry is easier than getting custom machines built. Note on reliability, 3D printer can be run for days on end. These emergency ventilators will need to run for days on end. Typically, the failure modes on 3D printer is not the motion system, but rather the extruder/filament drive components we aren't using those for this application.
Finally, and most important; we will need a very large number of emergency ventilators. There is a very large number of 3D printers, which hopefully could perhaps be repurposed as emergency ventilators to save lives that will otherwise be lost. How would it work; people with vent cabable 3D printers would print the designed/tested adapter components, mount them on their printer, then bring them to a drop-off point where they will be flashed with the "production" version of the vent firmware, then they are cleaned and brought to a hospital in need.
When the emergency is over, you get your printer back, spotlessly clean, along with a warm fuzzy feeling, knowing that you did something to help.
What do you think?
This is an excellent idea and with ten thousands if not hundred thousands of i3 Mk3s and clones out there, it would be really worth to have a firmware developped and standardized parts designed specifically for this model. You could then print the parts needed and donate/loan the printer to the hospitals in need. The question is: are there enough ambu bags out there and are the face masks suitable or do they need to be modified, too?
My understanding is that the Ambu bags are not a limitation. They are plentiful as cheap emergency breathing intervention. The trick is to have a reliable way to actuate them. We've modified the Marlin firmware to demonstrate the basic cycle. It turned out to be very easy. Next is to get some models for the presser block to securely mount to the print head, and a reaction block to mount to the printer frame and sit on the print bed.
We're envisioning the something like this simple geometry to start with, using the X and Z axis for simplicity, pushing from the upper right to the lower left on the printer. Then we evaluate the Tidal Flow as function the motion in X and Z and verify that we can reliably achieve the needed tidal volume and respiratory rate.
If needed we can add some weight to the gantry to balance the load on the Z axis.
Next would be running a large enough group of these machines for an extended period (days on end) to develop some meaning data as to the reliability (or conversely failure modes).
Simultaneously, we need to write a robust, interface for the Respiratory Techs who would be running these.