Grove - Gas Sensor(MQ5)

From Wiki
Jump to: navigation, search


The Grove - Gas Sensor(MQ5) module is useful for gas leakage detecting(in home and industry). It can detect H2, LPG, CH4, CO, Alcohol. Based on its fast response time. Measurements can be taken as soon as possible. Also the sensitivity can be adjusted by the potentiometer.

400px-Twig-Gas Sensor.bmp.png


Wide detecting scope Stable and long life Fast response and High sensitivity Application Ideas

Gas leakage detecting Toys Mechanic Dimensions

Electronic Characteristics Items Parameter name Min Type Max Unit System Characteristics VCC Working Voltage 4.9 5 5.1 V

PH	  Heating consumption	 0.5	 -	  800	 mW
RL	  Load resistance	  	  can adjust	  	  
RH	  Heater resistance	 -	  31±10%	 -	  Ω
Rs	 Sensing Resistance	  10	 -	  60	   kΩ
Scope	 Sensing Resistance	  200	 -	  10000	   ppm


Suggest Reading for Starter Download Arduino and install Arduino driver Getting Started with How to choose a Gas Sensor What's LEL Hardware Installation Grove products have a eco system and all have a same connector which can plug onto the Base Shield. Connect this module to the A0 port of Base Shield, however, you can also connect Gas sensor to Arduino without Base Shield by jumper wires. Arduino UNO Gas Sensor 5V VCC GND GND NC NC Analog A0 SIG

You can gain the present voltage through the SIG pin of sensor. The higher the concentration of the gas, the bigger the output voltage of the SIG pin. Sensitivity can be regulated by rotating the potentiometer. Please note the best preheat time of the sensor is above 24 hours. For the detailed information about the MQ-5 sensor please refer to the datasheet.

500px-Read Gas Sensor data.jpg

How to use There're two steps you need to do before getting the concentration of gas.

First, connect the module with Grove Shield using A0 like the picture above. And put the sensor in a clear air and use the program below.

void setup() {



void loop() {

 float sensor_volt; 
 float RS_air; //  Get the value of RS via in a clear air
 float R0;  // Get the value of R0 via in H2
 float sensorValue;

/*--- Get a average data by testing 100 times ---*/

   for(int x = 0 ; x < 100 ; x++)
   sensorValue = sensorValue + analogRead(A0);
 sensorValue = sensorValue/100.0;


 sensor_volt = sensorValue/1024*5.0;
 RS_air = (5.0-sensor_volt)/sensor_volt; // omit *RL
 R0 = RS_air/6.5; // The ratio of RS/R0 is 6.5 in a clear air

 Serial.print("sensor_volt = ");

 Serial.print("R0 = ");


Then, open the monitor of Arduino IDE, you can see some data are printed, write down the value of R0 and you need to use it in the following program. During this step, you may pay a while time to test the value of R0.

Second, put the sensor in one gas where the environment you want to test in. However, don't forget to replace the R0 below with value of R0 tested above

void setup() {



void loop() {

 float sensor_volt;
 float RS_gas; // Get value of RS in a GAS
 float ratio; // Get ratio RS_GAS/RS_air
 int sensorValue = analogRead(A0);
 RS_gas = (5.0-sensor_volt)/sensor_volt; // omit *RL

 /*-Replace the name "R0" with the value of R0 in the demo of First Test -*/
 ratio = RS_gas/R0;  // ratio = RS/R0 

 Serial.print("sensor_volt = ");
 Serial.print("RS_ratio = ");
 Serial.print("Rs/R0 = ");




Now, we can get the concentration of gas from the below figure

Gas Sensor 4.png

500px-Gas Sensor 4.png

According to the figure, we can see that the minimum concentration we can test is 200ppm and the maximum is 10000ppm, in a other word, we can get a concentration of gas between 0.02% and 1%. However, we can't provide a formula because the relation between ratio and concentration is nonlinear. Support

Ask questions on forum.

Version Tracker

Revision Descriptions Release v0.9b Initial public release 16,Aug,2011 v1.4 Replace some components 27,Aug,2014