Last Updated
This device only operates in Volume Control (VC) mode and should only be used on patients who are chemically paralyzed. Tidal volume is set mechanically (see Mechanical). BPM, I/E ratio (inspiration/expiration time ratio), and maximum and minimum pressure thresholds are set via potentiometers.
Ventilation Control Scheme
Motor Control:
The motor is controlled via pulse-width modulation (PWM). Two PWM waveforms are generated by the Arduino microcontroller, and sent to a separate motor driver module which can source the voltage (12V) and current (2-3A) required to drive the motor. The duty cycles of these PWM waveforms dictate the direction and speed of motion.
Breathing Cycle, Timing, and Open-Loop Control:
Windshield wiper motors run in open loop. While optical encoders could be used to close the position loop, these would add cost and complexity to the system. To rectify this, we have implemented a pseudo-closed-loop paradigm, wherein we sense the position of the motor at the two most important points in the respiratory cycle (full inspiration and full expiration). Once we know these positions, we assume that the motor speed is constant between these two positions for a fixed voltage (which is a good assumption so long as the motor has sufficient torque to reject disturbances presented by the Ambu® bag’s compression sequence and the back pressure generated from the lung inflation process). Therefore, if we know exactly when the motor was at full inspiration/expiration, and we assume a constant speed in between, we have a good idea of the motor’s position within the breathing cycle at any time. Further, this scheme allows us to sense absolute position at these locations, meaning we do not need to worry about position drift over time due to missed encoder counts.
To realize this motion control scheme, we have two limit switches at the extremes of travel which are mechanically triggered when the ventilator is at full inspiration and full expiration. In a single breathing cycle, the motor is driven at a constant speed (inspiration speed) to compress the Ambu® bag until the inspiration limit switch is tripped (the inspiration cycle). Once this switch is triggered, the actuator is driven backwards at a different speed (expiration speed) to relieve pressure in the Ambu® bag until the expiration limit switch is tripped (the expiration cycle). The ratio of inspiration to expiration speed comprises the I/E ratio. The sum of the inspiration and expiration cycle times equate to a full breathing cycle. The actual inspiration and expiration cycles are recorded, and the motor speed is adjusted if need be. The physician may adjust both the breathing rate and the I/E ratio independently via two potentiometers, as described in the following section.
BPM and I/E Ratio Programming:
The physician can program a new BPM and I/E ratio by holding down the ‘Program’ push-button and simultaneously turning the respective potentiometer knob. It should be noted that turning the potentiometer knobs without holding down the ‘Program’ button does nothing; this is to minimize the possibility of inadvertent cycle modifications. Once the ‘Program’ push-button is released, the breathing cycle is instantaneously updated to reflect these new parameters (by adjusting the duty cycle of the PWM signals sent to the motor), and the new BPM and I/E settings are stored in non-volatile memory (EEPROM) on the MCU in the form of a 8-bit integer. In the event of a power cycle, the ventilator program always recalls the BPM and I/E settings stored in EEPROM from the previous operation, and initialize the breathing cycle using the stored settings.
Continuous Mode: This mode is activated when the chosen BPM/IE settings result in reliable (linear) speeds for the motor that are comfortably above the motor’s deadband. In this mode, the ventilator undergoes continuous motion in both inspiration and expiration cycles. This mode is encountered for high BPM (>20) and IE (1:2 or higher).
Discontinuous Mode: It is possible to select a BPM/IE configuration that results in speeds that are too low for the motor to handle. For example, a low BPM (<20) with a low I/E ratio (1:4). In this scenario, the expiration speed commanded is in the motor’s deadband. To remedy this, a discontinuous motion profile is implemented where, on the expiration cycle, the motor pauses at full expiration for the amount of time needed to realize the BPM/IE settings, after which, normal motion is resumed.
Plateau Pressure
To measure plateau pressure, the physician presses and holds the ‘Inspiration Hold’ button, which causes the ventilator to pause and hold at the next full inspiration event (i.e. travel until the inspiration limit switch is triggered, and then stop). This gives the physician time to read the plateau pressure which is displayed on the LCD screen. Releasing the ‘Inspiration Hold’ button once more causes the ventilator to resume a normal breathing cycle. It should be noted that simply pressing and releasing the ‘Inspiration Hold’ button will NOT result in an inspiration hold event, and the normal breathing cycle will continue. This is to minimize the possibility of inadvertent inspiration hold triggering without release, which could happen if a physician accidentally presses the button and walks away. This event would be catastrophic to the patient. Thus, a hold-and-release method requires the physician to be physically near the patient and ventilator during the entire cycle hold process.
Enable/Homing
When the system is initially powered on, it is in a ‘Standby’ state (i.e. not moving). Flipping the ‘Enable’ rocker switch into an ‘on’ position puts the ventilator into a normal respiratory cycle state, and the direction of travel (inspiration or expiration) is read from EEPROM based on the last known travel direction. Flipping the ‘Enable’ switch into an ‘off’ position causes the ventilator to ‘home’, wherein the ventilator travels to full expiration, stops, and enters a ‘Standby’ state. This function was implemented to allow the physician to remove the Ambu® bag from the ventilator and take over with manual resuscitation if need be.
State Machine
The state machine for a normal respiratory cycle (both continuous and discontinuous mode) is detailed below. Stepping through the state machine:
- When the ventilator is initially powered on, it defaults to a ‘Standby’ state, where no motion is occurring. In this state, the user can choose to load saved or default BPM/IE settings (30 BPM, 1:2 I/E), or use the ‘Program’ pushbutton with the potentiometers to enter new settings. Pressing the ‘PP’ pushbutton loads these settings.
- A listener attached to the rising edge of an enable switch puts the ventilator into a ‘Normal’ state. The ventilator is commanded towards full inspiration (p_insp) at a speed (V_insp) determined by pre-set, default, or programmed BPM/IE settings.
- When the inspiration limit switch is tripped, two things can happen:
- If the inspiration hold button is not depressed, the cycle continues
- If the inspiration hold button is depressed, the inspiration position is held, and the pressure reading is printed to the LCD screen. Releasing the inspiration hold button resumes the cycle.
- The ventilator is commanded towards full expiration (p_exp) at a speed (max(V_exp,V_t)) determined by pre-set, default, or programmed BPM/IE settings (where V_t is the motor deadband voltage).
- When the expiration limit switch is tripped, two things can happen
- If in continuous mode (or if the commanded motor speed is higher than the deadband cutoff), continue to next inspiration cycle.
- If in discontinuous mode (or if the commanded motor speed is lower than the deadband cutoff), hold here until the commanded expiration time has elapsed, and continue to next inspiration cycle.
- At ANY point in the cycle, if the enable switch is tripped, the ventilator will finish the cycle and return to its home position.
- At ANY point in the cycle, if the programming button is depressed, the BPM and IE settings are instantaneously updated based on the potentiometer values.
BiPAP Control Scheme
Through consultation with our clinical collaborators at VUMC, it became clear that implementing BiPAP (Bilevel Positive Airway Pressure) capabilities could potentially open up our device for use with less at-risk patients who simply need breathing assistance, thereby freeing up clinically-approved ventilators for those who are most at risk. This would also alleviate the requirement for patient to be chemically paralyzed. In BiPAP mode, our device simply monitors the pressure sensor, and as soon as the pressure goes negative (indicating an attempt by the patient to inspirate), the device triggers an inspiration assist maneuver to compress the Ambu® bag and deliver air to the patient.
- When the ventilator is initially powered on, it defaults to a ‘Standby’ state, where no motion is occurring. In this state, the user can program a pressure threshold (i.e. the maximum inspiration pressure) as well as the timeout threshold (i.e. the amount of time between subsequent breaths that is acceptable before an alarm is sounded).
- A listener attached to the rising edge of an enable switch puts the ventilator into an ‘Enabled’ state. The ventilator is in a ‘Waiting’ state, and the pressure reading is displayed on the LCD screen. The timeout timer starts.
- When the MCU detects a negative pressure, the motor is commanded to perform a full inspiration (p_insp) at a speed (V_insp).
- Transition from inspiration to expiration happens in two ways
- The inspiration limit switch is tripped, indicating the full volume of air has been deliverd as set by the tidal volume leadscrew.
- The pressure exceeds a maximum pressure threshold set by the user.
- The ventilator is commanded towards full expiration (p_exp) at a speed (max(V_exp,V_t)).
- When the expiration limit switch is tripped, the ventilator is once again put into a ‘Waiting’ state. The timer resets.
- At ANY point in the ‘Waiting’ state, if a timeout occurs, the alarm is sounded until (a) the next breath is taken, or (b) the alarm is cleared by disabling the system.
An illustration of the state machine for BiPAP mode is shown below.
Electronics Fabrication
The wiring diagram for the control electronics is shown below. The system is powered by a 12VDC, 3A wall transformer, coupled to the Arduino’s input barrel jack through a power switch. The Arduino Uno MCU (or equivalent) is responsible for executing the controller, processing sensor/user interface data, and issuing motor commands. Various user interface features (potentiometers, buttons, switches, and an LCD screen) allow the physician to interact with the ventilator and monitor the patient. The LCD screen displays the current BPM and I/E settings, and provides a real-time reading of the output pressure as measured by A MEMS pressure sensor (assuming Option 1 from Pressure Sensing is used). An alarm is sounded (via a piezoelectric buzzer) if the pressure rises above or falls below pre-defined pressure limits. To actuate the motor, the MCU sends PWM signals to a high-power motor driver circuit (based on the BTS7960B half-bridge driver) which sources the voltage (12V) and the current (>2A) that the motor requires. All logic inputs (switches and pushbuttons) short their respective digital pins to ground when pressed, relying on the Arduino’s built-in pull-up resistors which are activated in software, to minimize the overall number of external components. The LCD screen is updated every 1000 control cycles via I2C protocol.
Electronics and Component Wiring
To create the necessary control electronics components, you will need the following materials.
- Arduino Uno (or equivalent)
- Potentiometers (10k) (x2)
- Limit Switches (x2)
- Momentary Pushbutton (Off-Mom)
- Power Switch (rocker variety)
- Enable switch (rocker variety)
- Motor Driver (BTS7960B)
- LCD Display for Feedback (with i2c backpack)
- Piezoelectric Buzzer (5-12V)
- DC Barrel Jack with Screw Terminal (Male)
- DC Barrel Jack with Screw Terminal (Female)
- 12V, 5A Power Supply
- 20-22AWG Speaker Wire
- Various Jumper Wires (24AWG) and Heat-Shrink Tubing
- Solderless Breadboard or CoV Shield (see below)
- Spiral Cable Wrap
- Adhesive-Backed Cable Brackets
Click the image below to download a comprehensive component wiring guide for the CoV:
Control Enclosure Fabrication
To fabricate and assemble the CoV control electronics enclosure, you will need the following materials.
- Laser-cut enclosure panels (dxf files downloadable here)
- (4x) No.2, ¼” long brass wood screw (McMaster: 98685A220)
- (4x) No. 4, 1-1/4” long slotted flat head screw (McMaster: 90006A117)
- (4x) Nylon unthreaded spacer, 3/16” OD, 0.115” ID, 1” long (McMaster: 90176A125)
- (4x) M12 panel-mounted cable glands, cable diameter 3mm-6mm
- (14x) 4-40, ½” long machine screws (McMaster: 90272A110)
- (14x) Size 3, ½” long slotted wood screw (McMaster: 92407A096)
- (14x) 4-40 square nut (McMaster: 94855A281)
Click the image below to download a comprehensive fabrication and assembly guide for the CoV control electronics enclosure:
The CoV Uno Shield
To simplify wiring and minimize the amount of soldering to be done, we have designed a custom stackable shield for the Arduino UNO that breaks out the necessary connections into screw terminals and pin headers for easy interfacing. It also includes through-holes for a piezo buzzer which is driven with one of the PWM pins. Click the image below to download the Gerber files (they can also be downloaded on the Downloads page). NOTE: This is OPTIONAL. The control electronics connections can still be made without it using a solderless breadboard or a protoboard.
Final Control Enclosure Assembly
The enclosure for CoV version 3.1 is shown below:
Software
The software is written in the Arduino environment, using a language derivative of C/C++. The Arduino IDE can be downloaded from here. We are in the process of finalizing the code, and will provide a link to the .ino as soon as possible.
Relationship of bag to plunger can be adjusted to change tidal volume.
Question – Since I do not have the ability to program myself – can an adjustable power supply be used to change the CPM count of the motor. The motor will drive only in one direction.
That would have the same rate for intake and exhale – but that is the only drawback I can see – but I think this would make a much simpler to device to build and use.
Is a variable I/E ratio a must for the device to be useful?
The physicians on our team have indicated that it is important to be able to choose the ratio of inhale to exhale in a single breath. Typically inhale will be faster. 1/3 of the time for inhale and 2/3 for exhale is a good nominal starting point, from what we’re hearing. But the physicians would like to be able to adjust it for a given patient. We provide them with a knob attached to a potentiometer to enable that.