---
---
# Oxygen Purification Using PSA
# [Portable oxygen concentrator, capable of use during surgery]
For my thesis i developed an Oxygen purifer, this open source give an detailed insights about all components, measurements and potential scheme used. As i am unable to follow up on this project at the end an proposition of a new setup is delivered.
**Challenge Description:**
In this challenge, we will develop a portable oxygen concentrator. Oxygen concentrators are used to produce oxygen-enriched air for patients when a supply from gas cylinders or bulk tanks is unavailable, such as during patient transport, or in areas without suitable infrastructure. In previous projects, we have developed prototypes of such systems (see figure). This device is more compact and capable of producing a safe and reliable oxygen stream.
**Objectives:**
The oxygen concentrator will need to meet the following requirements:
Minimum 70% oxygen concentration
Production of 20-30 L/min
Maximum 230V/16A power supply
Maximum 65dB sound production
Furthermore, the footprint of the device should be small enough to fit in along with a patient in an ambulance. The design should be reproducible in developing countries, using widely available or easily manufactured parts.
In this document the build, design choices and results of an oxygen purifier are presented. All cad models, code and hardware datasheets can be found clicking this link:
https://drive.google.com/drive/folders/1Lx95stzCWTc8c8OlPM1t0XKPxdueGCik?usp=drive_link
The theoretical principles are shortly mentioned, if interested in an more in depth explanation about adsorption theorem and modelling an paper describing this oxygen purifier is found here: html 0verleaf..
---
# Theorem
The main principle this machine is based on is difference in adsorption charasteristics of materials at different pressures. Nitrogen (adsorbate) has an higher desire to adsorb onto certain materials (adsorbent) compared to oxygen (adsorbate). When flow containing adsorbates passes the adsorbent, Nitrogen adheres and Oxygen and Argon pass realising an oxygen pure flow for some time. After a while the adsorbent becomes saturated and nitrogen passes as well, at this point the process needs to be cutt off.
The left figure below, visualising adsorption behaviour, displays the difference in capacity of Oxygen and Nitrogen onto an specific adsorbent at a fixed temperature (loading q). Observed is the difference in loading behaviour, specifically the differing slope. To the right the partial pressure at the end of the column is displayed, at first the mixture exiting mainly consist of oxygen and argon, after some time nitrogen molecules are also found in the mixture exiting the column.
<div style="display: flex; justify-content: space-between;">
<img src="https://hackmd.io/_uploads/HJrhUGLfA.png" width="300">
<img src="https://hackmd.io/_uploads/BJZ4Dm8f0.png" width="300">
</div>
To optimize the purifiers production the most important thing to look into is the time it takes to get to the desired adsorption pressure (pressurizing time), the adsorption time and the corresponding desorption time due to the adsorption process happening before. The adsorption pressure is theoretically located at the highest slope differences between the different adsorbates, needing the least amount of time to create the biggest difference in loading.
A more detailed explanation about adsorption can be found in this paper: html ...
# Currently working on
Currently an one column adsorption cycle is being developed. Able to accurately measure the breakthrough curves of the column, pressure los mass flow rates an temperature differences.
These measurements are later compared to theoretical models from where leakage and temperature influence can be defined. Furthermore, when creating an multicolumn system less sensors can be added to reduce leakage and still cutting of at correct times.
- Flowmodel
The flow inside the system is visualised in the figure below, starting at the H2O filter. Water is removed from the air to realise dry air preventing H2O contamination of the zeolite.
Following up in the cycle are 5 different stages:
-- Adsorption Pressurizing (Stage 1):
Pressure inside the column is being build up to the desired pressure, chosen using the zeolites isotherm.
-- Adsorption Oxygen Output (Stage 2):
The desired pressure is reached, an outlet flow at the bottom is opened containing an high percentage of oxygen, equal to the inlet flow of the column minus leakages to remain at an constant pressure inside the tank.
-- Desorption quick pressure release (Stage 3):
When Oxygen concentration lowers shuttting of adsorption and starting the desorption process. To quickly reduce the pressure inside the column an extra outlet flow is opened.
-- Desorption Vacuumizing (Stage 4):
When the pressure inside the column <= Patm only one outlet is opened to clean the column using an vacuum. When an specific pressure is reached it goes to the last state.
--Desorption, constant pressure
In the arduino code the amount of total desorption time, state 4+5, can be changed. According to this timerate the amount of time the system in this state is controlled. When finished the whole cycle repeats.



# Single Cycle Simulation
Using open source software RUPTURA an single column cycle is developed. Included are Adsorption, Desorption and Purging, all happening at different pressures. This simulation tool can be used to compare to measurements and improve the setup.
The model consist of option to differ: column lengths, flowrates, pump charasteristics, zeolites, cut-off concentrations and with or without purge function.
The python code and corresponding RUPTURA codes can be found in the google drive linked before. For more information about RUPTURA click here:
(https://docs.google.com/document/d/1T4MBivtxJhPzLVNghta2LZFzyGVJjabVt649_a6LaYs/edit)
Underneath two simulations are displayed, one including purge, the other without purge, clearly visualizing enormous increase in oxygen concentration possibilites:
<div style="display: flex; justify-content: space-between;">
<img src="https://hackmd.io/_uploads/HyJqS7D3C.png" width="300">
<img src="https://hackmd.io/_uploads/BySXS7vhC.png" width="300">
</div>
This simulation can be used to compare different settings to highest concentrations peak values as seen below, usefull to improve the purifier.
Note, an detailed explanantion about the changes made to RUPTURA can be found in the paper. It is important to realise that the graphs represent a look a like structure but do not predict the behaviour of the concentrations flowing out of the columns. To further develop this model within RUPTURA a pressure difference options must be implemented. Currently it is done by a change made in the boundary conditions. To create a realistic pressure increase inside the column I advise to model the column as a CSTR tank with a decreased volume to represent the packing. This CSTR has one closed end. As soon as the desired pressure is reached make it run like RUPTURA does with two open ends and not CSTR.
# Product
The Purifier consists of 4 components; Base, Adsorption column, Pipingplate, Electrical wiring. Using M6 and M8 bolts the plates and column are connected to the base. Underneath all components are explained.
<div style="display: flex; justify-content: space-between;">
<img src="https://hackmd.io/_uploads/ByjGcVA-C.png" width="300">
<img src="https://hackmd.io/_uploads/SJRQ5NAWA.png" width="300">
</div>
**Base**
The base consist of aluminium BSB profiles. These can easily be connected towards eachother due to their modulair design using corner profiles. The Base is the core of the device on wich all PMMA plates and column are attached. The PMMA plates are directly connected using M6 bolts while the column is attached by drilling an M8 hole in the middle of the aluminium profile. If another flow scheme is wanted the PMMA plate is easily detached and another one can be put in place. In the design given an 50X50 profile is used, any other size can be used as well, note, the connections hole sizes might be different.
<img src="https://hackmd.io/_uploads/Syy7uwwzC.png" width="200">
**Column**
The adsorption column consists of multiple pvc components sandwiched together. The top picture shows the components of the column column in 3d. Below is an 2d picture of the column. Taking a look at the 2d picture each components is numbered and has its own function.
-- Components 2 till 7 and 11 till 16 are filters at respectively the bottem and top of the column. These filters consist of metal sieves (5,12), PMMA poreus holders (4,6,11,13), spacers with differing thickness (2,3,14,15) all held together with 4 m4 bolts. The filter makes sure the zeolite stays inside the column and the spacers enable an thight fit to hold the zeolites particles together inside the column decreasing its void fraction while flow is passing and to leave some space above the adapter.
--Component 8 is the tube itself, an hollow cylinder in wich zeoltie is placed.
-- Component 1 closes the column and is permanently glued to the tube. To connect the tubing to the column an G1/4 thread is tapped to connect an adapter.
-- Components 10 and 17 close the column using an screwcap. Component 17 is the screwcap and component 10 enable screwthread for the cap to screw on to. This screwcap realises replacement of zeolite inside to be regenerated. To make sure nothing leaks an rubbersealing is placed on the side of component 17 and in between the threads of 10 and 17 nylon sealing tape is placed. Just like at components 1 an thread is tapped to connect the column to the flow tubes.
-- Component 9 seals components 8 and 10 together. Using glue it is permantly fixed. If needed epoxy can be added preventing leakage.
All the components in the filters are lasercut, either from an PMMA plate or the wired metal sheet. All other parts are directly store bought and can be found in the material list.

<img src="https://hackmd.io/_uploads/S1_z1OzG0.jpg">
**Piping**
On the plate all valve and sensors are mounted as described in the flow scheme shown before. In the picture below the valves are numbered as in the flow scheme. The parts present on the PMMA plate are: 3-2 solenoid valves, T splitters, sensor mounts and wiring mounts. All mounted on the PMMA plated using either m4 or m3 bolts. Cad models of the mounts can be found in the drive. The tubes used are 8mm OD, using different adapters everything can be attached.
Both manual mass flow controllers are not present on the plate, these are directly attached to the aluminum frame.
<img src="https://hackmd.io/_uploads/B1d7nQzM0.png" width="700">
**Electrical wiring and sensors**
In order to control the valves and accurately measure the flowrate, oxygen concentration, pressure and temperature sensors the electrical system is wired according to the scheme below. For ease of reading, this scheme represents the connection of just one piece of equipment with connections to relevant arduino pins (note, lots of ground pins are visible connecting to the arduino, Arduino does not have these amounts but these grounds can be connected to eachother before pinning them to the Arduino, furthermore). G, D, A being respectively Ground, Digital, Analog.

-- Arduino Mega 2560
Arduino is an well known microcontroller able to read and control electronics. Using the Arduino Mega (large amount of connections) the Oxygen purifer is controlled and measurements are taken directly safed into computer files using excel. Note, lots of prot connect to the ground port on the arduino, there are not enough connections therefore all wires should be connected together before being connected to only 1 ground port.
-- Fuse
In order to safely connect the system to the grid a fuse is placed first. The grid has an ampere output of 16A. Both pumps need 4 ampere each to work at full capacity. Therefore an fuse limiting the imput current to 10A is attached.
-- Transformer
Appart from both pumps nothing else nees an input of 230VAC. The transformer creates an 24VDC input voltage on wich al other parts canbe connected.
-- Relay module
Some parts in the system can either be turned on or off. To control these high voltage inputs an relay is used(24VDC or 230VAC). The module can easily be connected to the arduino digital output pins to control on and off. More information can be found in the drive.
-- 3-2 Solenoid valves
The Solenoid valves are powered by 24VDC and can be either turned on or off, switching direction. Connecting the 24volt input to the relay module enables control ofthe valves.
-- Pumps
The Pumps are powered by 230 VAC and like the valves can either be turned on or off, controlled using the relay.
-- Temperature sensor
Using Adafruitmax31865 PT100 temperature sensors are red out. More information about the Max31865 can be found in the drive.
-- Pressure sensor
The pressure sensor uses and 24VDC input voltage and has an output signal of 4-20ma. Using an 250 Ohm resistance the current is transfered to an 1-5 VDC signal able to be read out using the arduino. 4ma (1 volt) representing -1 bar abs and 20ma (5 volt) 5 bar abs. More information about the output current is found in the drive.
-- Oxygen sensor
The Oxgen sensor uses an 24VDC input and give like the pump an output signal between 4-20ma. More information about the output current is found in the drive.
-- Mass flow sensor
The input current is 24VDC. Its output is between 0 to 5 volt representing 0 to 100 l/min air. and can be directly read out on an arduino analog pin. Using difference in K factors this is recalculated to the mass flow of the mixture passing by. More information can be found in the drive.
-- Proportional control valve
This valve is not implemented in this design, but used in the second design.
The valve is powered using an 24VDC input and can be controlled by applying an signal between 0 to 10 Vdc.
Using an pwm to 0-10V converter the arduinos 0 to 5 PWM digital output signal can be differed between o to 10 volt and control the proportional control valve.
-- PWM to analoog (0-10V) convertermodul (mosfet in the picture but is not a mosfet)
https://opencircuit.shop/product/pwm-to-analog-0-10v-converter-module
**Software**
Arduino code
The Arduino code can be found in the drive, below an short explanation is given.
-- The program first delays for a while to heat up the oxygen and flow sensors.
-- Next up the column is fully cleaned to remove any impurities by vacuumizing.
-- Now the process starts, and 2 different codes are given:
- Pressure based code:
1. The column is pressured to P1.
2. When P1 is reached stage 2 starts untill P2 is reached.
3. When P2 is reached stage 3 starts until close to Patm.
4. When close to Patm stage 4 starts until P3 is reached.
5. Repeat the cycle
- Oxygen concentration based code:
1. The column is pressured to P1.
2. When P1 is reached stage 2 starts, in this stage the Oxygen concentration rises and false down again.
3. When the concentrations gets below an certain value stage 3 starts until close to Patm.
4. When close to Patm stage 4 starts until P3 is reached, and the cycle repeats again.
5. Repeat the cycle.
**Component List**
In the table below all Hardware is shown in the drive an excel sheet with html links can be found. It is not needed to buy the exact same product, swapping is always possible however note that you should check the distance on the connection pins on the PMMA plate.

# Production
- Build plan
- Column
All dimensions can be found in the google drive map attached.
-- At first tap a screw thread, size G1/4 on the tops of component 1 and 17.
-- Glue the rubber circles to component 1 and 17, this creates an sealing ring.
-- Using epoxy attach component 1 and 8 together and 9 and 10. make sure it is completely sealed disabeling leakage.
-- Attach components 2 t/m 7 and 11 t/m 16 to eachother, creating the zeolite 'filters', respectively lower and upper. The top and bottom filter have different sizes due to different innner diameters of component 1 and 10.
-- When the epoxy is hardened slide the lower filter inside the column, with the spacers going in first and push it completely to the bottom. Due to the spacers there is room left to not bump into the G1/4 adapter.
-- Attach component 8 to component 9 with epoxy, make sure everything is completely sealed.
-- At this stage the zeolite can be added, completely fill the tank until it touches the inner diameter of component 10 and add an extra layer of 1 cm.
-- Add the upper filter, with the spacers pointing up. If the spacers do not touch to top of component 10 add either an extra spacer or add more zeolite. This is needed to keep the zeolite together when pressurizing the tank. If not done the void fraction of the zeolite bed increases, decreasing the columns adsorption charasteristics.
-- Finnaly screw the top, component 17 to the screwthread of component 10. To airthight the thread apply teflontape in between, sealing the column.
-- Attach the G1/4 adapters again using nylon to components 1 and 17.
- Base
-- Cut the BSB aluminum profiles in the sizes found in the cad files on the drive. Also drill 5 m8 holes in the longest profile. These holes function as attachments of the Column to the base. Only 2 holes are needed, however, having multiple attachments points creates more options if something does not fit.
-- Connect the aluminum profiles together using BSB connecters, at every corner 1 to disably wiggling.
- Piping
-- Attach the T splitters, valves and sensor holders a to the PMMA plates preferably using inbus screws and bolts. Place spacers in between the plate and T splitters to align the splitters with the valves.
-- Fit the plastic pipes to the T splitters and valves. Make sure to fully attach the pipes, it can be helpfull to detach some parts to get to the accurate pipe sizes.
- Sensors
-- Attach the adapters below to each sensor:
Pressure sensor: G1/4 - 8mm_tube
Temperature sensor: 12mm_tube -> 12mm_tube - 8mm_tube
Oxygen sensor: G1/2 - G1/2 -> G1/2 - 8mm_tube
Flow sensor: 1/4VCR - 1/4NPT -> 1/4NPT - G1/4 -> G1/4 - 8mm_tube
-- Label every sensor wire and give each sensor an different name.
-- Plug the sensors in the 3d printed holders attached to the PMMA piping plate, and connect them to the pipes.
- Electrical
-- Make the 24 voltage hub on an perfboard.
-- Make the 4 to 20Ma converter to 1 to 5 volt subsystem on an perfboard, needed to read out the pressure and oxygen sensors. Earlier on the wiring for an single component sytem is given. Use 250 Ohm resistance (4 * 250 = 1V, 20 * 250 = 5V). For an one column system 3 sensor attachments are needed. The picture below gives an idea about the shape.
-- Either use an breadboard or perfboard and attach the adafruit sensors (see drive for detailed information).
-- Attach the relay, arduino, and 24vdc -> 8vdc converter to the electrical PMMA plate.
-- See the overview below to have an indication about the places for all components on the PMMA plate.
- Combining all sub parts creating the full machine.
-- Attach the column holder to the base at the 8mm pins.
-- Attach the Piping PMMA plate to the base using m6 bolts.
-- Attach the Vacuumpump on its PMMA plate and attach it to the base.
-- Attach the electrical plate to the base using m6 bolts.
-- Wire al electrical components to the electrical plate.
-- Upload the arduino code.
- Expected fabrication time
- -------
- Potential pain points
-- Creating an leak free adsorption column. Make sure to fully test the column for leaks, especially during vacuum this is something to look at.
I stumbled upon a lot of leak problems therefore i advice to create an leak free column instead of the screwthread connection one.
-- Attaching al sensor using different bolts sizes. G, NPT, VCR etc. There are a lot of different threadsizes on the market. Make sure to really figure out the neede ones. The piping in this system is mainly G1/4, however the sensors have other connection threads therefore adapters are necesarry.
-- Make sure to go through the datasheet of each component and have a look how to connect each part.
- Maintenance
- Over time the zeolite will get contaminated with H2O. To regenerate the zeolite and almost fully recover its charasteristics it can be put into an vacuum oven. In the vacuum oven the zeolite is undergoing pressure swing adsorption and temperature swing adsorption at the same time, removing most of the water. Everytime the zeolite has been put into the vacuum over it slowly deteriates. According to Gerald P. Douglas, regenarating in an vacuum oven with an flow rate of 20 l/min is possible at 550 celsius, -21 Hg (0.3 bar). The duration of this process is in between 3 to 6 hours. Lower working temperatures are possible, but only if the pressure is reduced. The results showed that dirty zeolite, showing oxygen generation charasteristics of 25% before regeneration. Produced high grade oxygen of 93% with only minor degradation signs compared to new bought zeolite.
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4477225
# Results
- Measurements:
To get an full idea about the performance of the adsorbtion column the following parts are measured:
Oxygen, Pressure, Mass flow and temperature. Temperature and mass flow are not manually changed and only measured, the pressure and oxygen working conditions are changed. To realise constant pressure the valves can be adjusted until the equilibrium pressure is reached. At certain oxygen concentration the desorption process is started, note, when running the adsorption process longer, more nitrogen is adsorbed therefore the desorption process will take more time. Underneath the oxygen cutt off concentrations are changed from 40 to 60%, adsorption pressure from 2 to 3 bar and desorption processes from 0.2 to 0.5 bar.
- Pump charasteristics:





## Multi Column model, including single column measuremts and simulation.
To make sure the final product meets the neccesary concentration and flow demand of an patient multiple columns can be used and work together on after the other. This system consists of an storage tank, to store purified oxygen for an short time to generate an constant flow containing an constant amount of oxygen. The output flow of an single column can be used and assumed every column behaves the same. Either the simulation or measured data can be used as input.

This part is still an work in process but i looks like the following: using the last picture the time for each state can be deducted and plugged into the control scheme below. Keep in mind not all pumps can distribute to one column at the same time but can only handle one. If more flow is needed only adding columns wont help, more pumps need to be added as well.


# Following up
The model shown above has some flaws. For instance the outlet flow amount cannot be changed digital but has to be done manually, limiting automation. Furthermore, the one column systems is not seperating different qualities of oxygen wich might be occuring due to flow being stuck in the piping, this influences the captured oxygen concentration inside the tank, the measurements later on give an indication if this is happening. Thirdly, no product tank is present within the system. And lastly, the goal of this project is suplying enough oxygen to an patient, multiple columns need to be working together taking over the oxygen flow inside the tank while another column is regenerating its zeolite. Below an improved version for an one column system is shown and further on an purifier with an extra column is added.
**Improved one column**
Differing from the current design is the use of 3 valves instead of 4, when vacuumizing the upper one way flow valve blocks the inlet flow. Furthermore an digital flow control valve is added directly after the mass flow sensor, to pressurize the column the flowcontrolvalve is shut down digitally making valve 3 and 4 usefull to seperate high oxygen concentration flow from low oxygen concentration flow. Lastly, the vacuumpump is put earlier inside the system, vacuumizing is the bottleneck inside the purifier, by placing it closer to the the collumn less leakage spot are present improving the overall performance.

| Stage | Pump | VacPump |Valve1 | Valve2 | Valve3 | Valve4 |
| -------- | -------- | -------- |-------- | -------- | -------- |-------- |
| 1 | On | Off | 1-2 | Closed | 1-2 |1-2 |
| 2 | On | Off | 1-2 | ConstantPressure | 1-2 |1-2 |
| 3 | Off | On |2-3 | Fully open | 2-3 |- |
| 4 | Off | On | 2-3 | Fully open | 2-3 |-|
**Pressure equalisation setup**
The one column systems shown before are mainly used to accurately determine the oygen concentration values and other charasteristics to be used inside models. An oxygen purifier to be used on the market needs to supply higher amounts of oxygen. An constant Oxygen flow towards the patient is already achieved by implementing an tank, the correct amount should be done by implementing multiple columns. A one column system does not supply any oxygen towards the tank while desorbing and the pump in the system is idle. There is potential to increase the oxygen production within the system, easily done by making the pump constantly providing pressure. When another column is added both processes, adsorption and desorption can be running at the same time (always having an idle state somewhere) one after the other in the opposite column. This slightly increases the machine size while almost doubling the oxygen output.
The figure below displays the proposed flow scheme. It has an same flow behaviour as the improved one column scheme. In this scheme the oxygen tank is directly connected to valve 1 from the one column model. This is an feature wich can be used to let small amount of oxygen pass trough the column during the desorption process to fully clean out the nitrogen, this cleaning out is best to do with an material with an low adsorbtion rate to not contaminate the adsorbate.
Note, stage 1 (PressureBuildUp) and stage 3 (PressureRelease) happen at the same time in the Table. In practice stage 1 takes way more time to complete then stage 3 does. Just like stage 2 (Productoutflow) and stage 4 (Vacuumizing) happen at the same time while stage 4 takes way longer to complete then stage 2. To optimize this flowscheme starting with stage 1-3 the following stage combination in the right order is proposed:
1-3 -> 1-4 -> 2-4 ...(idletocompleteprocess2-4)...
3-1 -> 4-1 -> 4-2 ...(idletocompleteprocess4-2)...
Repeat cycle.


# Notmade, worked out hardware proposal.
Safety is an important factor. For the measurements the perspex column is used, however, with these dimensions it will eventually break, although it could handle 10bar like calcualted perspex is brittle, tensions can cause small fracture eventually leading to failure creating sharp parts. PVC is advised. But in order to still make use of the easiliy detachable cap the following design is proposed. On top there is still an lasercut 20mm thick end cap. Using draaddeind the capiss hold together while pressurizing. FOr full safety an metalwire can be attached around the draadeind to fully secure the system when exploding.

# Useful research
- Zeolite lifetime expectancy.
- Zeolite regeneration temperature and pressures.
- Oxygen measurements
Oxygen sensors on the market give accurate results at constant pressure. Most of them for easy use are made for atmospheric pressure only but sensors for higher constant pressure are also available. To correctly measure the outlet flow at high pressure the sensor must be placed within the storage tank. Unfortunately this way no breakthrough curves will be measured and only the mix of the end product can be measured, realising less information to optimise the adsorption and desorption times.
- Air with high CO2 and O2 (polluted and moist areas) inlet concentrations on zeolite lifetime expectancy.