In the present world, highly affected by pandemic, there is a huge spike in Covid-19 infection cases in many places. With limited resources the fight against Covid-19 virus is an unexpected challenge for the whole world. As we all saw, arranging oxygen cylinders for loved ones became a difficult task a few months ago in India. The patients and their close relatives suffered badly, instead of providing moral support to the patients, when they could not arrange oxygen cylinders.
To get rid of this situation, this DIY project tries to help through details about assembling an oxygen concentrator at home. With the help of easily available parts, one can make an oxygen concentrator with enough capacity to support a Covid-19 or any other patient in need of oxygen.

Circuit and working

This oxygen concentrator can be built using an Arduino Uno, 12V DC power supply, control relay, solenoid valves, air compressor, air filtration unit, flow control valve, membrane housing as canisters, PU fittings, and zeolite sieves. Electronic control circuit is the main part of the oxygen concentrator. Oxygen is supplied (to the patient) through the solenoid valve outlets, which are controlled by the circuit presented here.
Fig. 1: Block diagram of the school bell with alert
The circuit diagram of oxygen concentrator controller is shown in Fig. 1. It is built around 15V AC step-down transformer X1, bridge rectifier BR1, 12V voltage regulator (7812) IC1, Arduino Uno Board1, solenoid valves V1 through V6, 5mm LED (LED1), 2N2222 transistors T1 through T6, and 12V relays RL1 through RL6.
Arduino Uno
Arduino Uno board is connected to control relays. It is preprogrammed with delays to switch control relays on and off as programmed.
12V power supply
This power supply is used to provide power to Arduino Uno and control relays. It comprises a 15V/2A step-down transformer, full bridge diode rectifier BR1, 1000µF/35V and 1µF/25V capacitors, 12V voltage regulator IC 7812. The step-down transformer reduces the 230V AC input to 15V AC. This AC is converted to DC by full bridge diode rectifier, which is filtered using capacitor C2. IC 7812 regulates the voltage to 12V DC.
Relay being an electromagnetic switching device, it provides electrical isolation between the controlling and output circuits. It is controlled/triggered by a low DC voltage while its contacts can handle a high current flow with total electrical isolation from the delicate low-power electronic circuit. 12V DC SPDT relay is used here to switch the solenoid valves on and off on receipt of electrical pulses.
Fig. 2: Circuit diagram of the bell with alert
Zeolite molecular sieves
The sieves have pores of precise and uniform size and structure. These separate nitrogen and oxygen in the atmospheric air by disallowing molecules of nitrogen, which are slightly larger in size than the pores. Nitrogen molecules having higher electrostatic field react with cations of zeolite that are larger than the pores and get absorbed, thus cannot pass through. Only oxygen passes through the pores as its molecules measure 292 picometres compared to 300-picometre size of nitrogen (a difference of 2.6% only!) Air compressor. It is operated by an electric motor to suck atmospheric air and compress it in its chamber.
Filtration unit
It is used to filter contamination from the compressed air and also to separate moisture from the compressed air, which is collected in a bowl attached to it. Water thus collected needs to be drained out.
Solenoid valves
These are electromechanical devices that are used to control the flow of air on receipt of electrical signals. Here 2/2 pneumatic control normally-closed valves are used, which means they have two ports for connection with two possible positions. So, they are spring loaded.
Pressure swing adsorption (PSA)
This technique is used to separate specific gases from a mixture of gases under pressure with the help of specific sieves required for the purpose. For an oxygen concentrator, 13x zeolite molecular sieves are used. For higher oxygen concentration, lithium enriched zeolite molecular sieves can be used.
In this technique, at least two canisters or towers filled with sieves are used. Compressed air is supplied to one of the canisters and the other canister gets the oxygen output from the first canister for further filtering. This is done as concentration of nitrogen gas gradually increases in the first canister, which may affect the output oxygen’s purity and concentration. The direction of the air flow is controlled using solenoid valves, which give signals as per program.
The sieves have limited adsorption capacity, so to get specific flow rate the quantity of sieves needs to be calculated. For that you need to refer sieve supplier’s datasheet to know sieve quantity required to produce, say, one litre per minute (1 LPM) oxygen at specific concentration limit. For example, 700 grams of sieves are required for 1 LPM oxygen at 94% concentration. For oxygen concentrator with 5 LPM flow, you need 700× 5=3,500gm in one canister. So, for two canisters, a total of 3,500×2= 7,000gm sieves are needed.


Arduino program oxygen_concentrator_diy.ino was used for the prototype. It must be uploaded to Arduino Uno. For this, open source software Arduino IDE is required. In the program, Arduino digital pins 2, 3, 4, 5, 6, and 7 are defined as outputs.
Main functions of the Arduino code are:
PinMode( )
Configures the specified pin to behave either as an input or an output. See the description of digital pins for functionality of the pins. They can also be used as PWM pins.
DigitalWrite( )
If the pin has been configured as an output with pinMode(), its voltage will be set to the corresponding value of 5V (or 3.3V on 3.3V boards) for high, and 0V (ground) for low.
Used for communication between the Arduino board and a computer or other devices. All Arduino boards have at least one serial port (also known as a UART or USART), and some have several.
Begin( )
Sets the data rate in bits per second (baud) for serial data transmission. For communicating with the computer, use one of these rates: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200. You can, however, specify other rates, for example, to communicate over pins 0 and 1 with a component that requires a particular baud rate.
Println( )
Prints data to the serial port as human-readable ASCII text followed by a carriage return character.
Delay( )
It is used to pause the program for the amount of time (in milliseconds) specified as parameter.
As shown in Fig. 1, six 12V DC SPDT relays are used to control six valves (V1 through V6 via their relay contacts) connected across their contacts. Six flywheel diodes (D1 through D6) are used across relays to prevent the damage of transistors from back EMF.
The Arduino is programmed to allow compressed air to enter from one of the canisters at a time. Some volume of the output of that canister is used to flush out nitrogen in the other canister while the remaining part is consumed as oxygen. After the set delay, the relays switch the role of the canisters. This is how pure oxygen is separated from the compressed air.

For better understanding valves’ (V1 through V6) and relays’ (RL1 through RL6) functioning associated with the project, please refer Table 1. Here, the two canisters are CAN1 and CAN2. The functional block diagram of CAN1 and CAN2 are shown in Fig. 3. The pneumatic arrangement is shown in Fig. 4.
Fig. 3: ISD1820 voice recorder/playback module
Fig. 4: TDA2030A 18W audio amplifier module
Working of the circuit is simple. First, you need to upload the source code to Arduino and connect the power supply. Relays RL1 through RL6 energise and de-energise according to the software. In the prototype, relays RL1, RL4, and RL5 energised for 40 seconds and relays RL2, RL3, and RL6 de-energised for 40 seconds to open and close the solenoid valves, respectively. Thereafter, the cycle repeats. You can see their status on the serial monitor of Arduino IDE as below:

Set 2 Pressurised
Set 1 Exhausting
Set 1 Pressurised
Set 2 Exhausting

Construction and testing

An actual-size PCB layout for the oxygen concentrator is shown in Fig. 5 and its component layout in Fig. 6. After assembling the circuit on PCB, connect the 15V secondary across transformer X1. Connect the primary of X1 to 230V, 50Hz AC mains at CON1 as shown in Fig. 1 (not shown in Fig. 6).
Fig. 5: Single-changeover relay module
Fig. 6: DS1307 I2C RTC module
Download PCB and Component Layout PDFs: click here
Download Source Code
Piping is done as shown in Fig. 4. As you can see in Fig. 3 and Fig. 4, there are six solenoid valves (V1 to V6), which are 2/2 normally-closed pneumatic solenoid valves. Inlet for all the solenoid valves is to be referred as port A and outlet as port B. When coil of the solenoid valve is energised, it allows air to flow from port A to port B. Else it will shut the air flow.
An oil-free air compressor should be used to compress the atmospheric air. The pressurised air is supplied to line filter to remove any contaminant from the supplied air. Also, it removes moisture from the air. From the filter unit, air flow is divided into two parts and supplied to port A of solenoid valves V1 and V2.
During operation, one of the solenoids will be turned on and the other will be turned off. Port B of both valves is the outlet, which is split into two parts. One part is connected to port A of solenoid valve V3 for V1 and port A of solenoid valve V4 for V2. The other is connected to CAN1 for V1 and CAN2 for V2.
When CAN1 is in forward bias, where it is generating oxygen, valve V3 is tuned off and the flow of air is supplied to CAN1. Some part of the air is supplied to CAN2 outlet and  that is drained from valve V4, which is turned on at that time and simultaneously valve V2 is turned off. At the same time, valve V5 is turned on to allow the purified oxygen to exit from its port B. Since normally-open relays are used, these get triggered to trigger the coils of valves as per above sequence. The same cycle is repeated, once preprogrammed cycle time is achieved for CAN2.
For better safety, you can use normally-open valves by making slight changes in the program. Thus, the air would exit the system if sudden power failure occurs.
For using this oxygen concentrator at optimum level, you should check flow rate and purity of the output oxygen and change cycle time in the program as per requirement. This is how you can make an oxygen concentrator at home. Note that purity and flow rate is to be verified and monitored continuously.
After uploading the source code to Arduino and wiring done as per circuit diagram, switch on the power supply. Relays RL1, RL4, and RL5 will energise for 40 seconds to open the valves V1, V4, and V5. Similarly, relays RL2, RL3, and RL6 will energise for 40 seconds to open valves V2, V3, and V6. This cycle will repeat again and again until the power is switched off.

EFY lab has tested the control circuit given in Fig. 1. The complete hardware assembly including piping connections, filtration unit, and compressor were tested by the author. The author’s prototype with air compressor is shown in Fig. 7.
The project described here is just a DIY hobby project successfully demonstrated by the author. However, the author and EFY are not liable for any mishap or loss that may occur due to failure of this system while using it.
Author’s Prototype

Tej Vijaykumar Patel is vice president of Non Woven Division, SKAPS Industries India Pvt Ltd, Mundra. His interests include robotics, automation, and product development

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.