In this article we are going to learn how to interface air quality sensor MQ-135 with Arduino. We will see overview of the sensor and construct a project which detects LPG gas leakage and see some relevant readings in serial monitor.

By: Girish Radhakrishnan

What is MQ-135 sensor?

MQ-135 is an air quality or air pollution measuring sensor device. It can detect various chemical contents in air and give appropriate voltage variation at the output pin depending on the chemical concentration in air.

It can detect alcohol, Benzene, smoke, NH3, butane, propane etc. if anyone of the stated chemical concentration rises, the sensor convert the chemical concentration in air to appropriate voltage range, which can be processed by Arduino or any microcontroller. It cannot tell what kind of chemical concentration rose in the air.

Typical MQ-135 sensor:

It is 6 terminal device which is symmetric in terminal placement; both the sides of the terminal are interchangeable. Here is the illustration of pins:

Here is a basic connection diagram:

Two ‘A’ pins are shorted internally and two ‘B’ pins are shorted internally. H and H pins is heater coil of the sensor. The heater coil is used to heat up the air around the sensor, so that it can detect the chemical content in the air optimally.

The sensor can take up to few minutes to heat up to reach optimal working condition. It not advisable to touch the sensor while operating because it can get pretty warm.

The sensor has an operating voltage of 5V; the sensor must be powered from external sources only, as it consumes about 200mA for heating. The arduino voltage regulator can’t deliver this much current.

For testing, you can connect a ammeter in mA range at the output pin B and bring a cigar gas lighter. Try to leak the gas without igniting it near the sensor. As the concentration of gas rises around the sensor, the current flow through ammeter increases. If this works, your sensor is working normally.

Now, you know quite a bit about MQ-135 Sensor, let’s move ahead and learn how to interface the MQ-135 with Arduino interfacing.

The circuit:

Make the connections as per the diagram, and check the gas sensor wire connection etc. Rest of the circuit is self explanatory.

The analogue pin of Arduino measures the voltage from the gas sensor. When the gas concentration rises above preset threshold in the program, the buzzer starts beeps.

The sensor takes a couple of minutes or so to warm up to reach optimal operating condition. Until it reaches optimal working temperature, the values in the serial monitor fluctuates high and low. It stabilizes after few minutes.

In the program the user can set the threshold value, it must be done only after careful observation on normal ambient concentration value in the serial monitor. For instants, if the value fluctuates from 400 to 430, the threshold must set well above, like 500. It must not trigger the buzzer falsely.

The values displayed in the serial monitor are NOT ‘ppm’ level of chemical concentration or anything like that. It is mere measure of voltage level from the sensor; Arduino interprets the value from 0 to 1023. So we can say, higher the chemical concentration, higher the values get displayed.


//-------------------Program Developed by R.Girish-----------------//
int input = A0;
int output = 7;
int th=500; // Set threshold level.
void setup()
void loop()
//-------------------Program Developed by R.Girish-----------------//

The serial monitor is not mandatory in this project it also works as standalone; we need it only to calibrate the threshold value in the program.

Set the threshold value by changing:

int th=500; // Set threshold level.

Replace 500 with your value.

This concludes the article regarding how to interface MQ-135 air quality sensor with Arduino, for further queries you can post your thoughts through your comments.

Need Help? Please send your queries through Comments for quick replies!