0% found this document useful (0 votes)
88 views

MQUnifiedsensor Library

This document contains code for reading gas concentration values from an MQ5 sensor using the MQUnifiedsensor library. The code initializes the sensor, calibrates it over 10 readings to determine the R0 resistance value in clean air, and enters a loop to continuously update readings from the sensor and print the results to the serial monitor every 5 seconds. Key steps include including the MQUnifiedsensor library, defining sensor parameters, initializing the sensor, calibrating it, setting the regression model and coefficients, and reading and printing values in a loop.

Uploaded by

Zia Ullah
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views

MQUnifiedsensor Library

This document contains code for reading gas concentration values from an MQ5 sensor using the MQUnifiedsensor library. The code initializes the sensor, calibrates it over 10 readings to determine the R0 resistance value in clean air, and enters a loop to continuously update readings from the sensor and print the results to the serial monitor every 5 seconds. Key steps include including the MQUnifiedsensor library, defining sensor parameters, initializing the sensor, calibrating it, setting the regression model and coefficients, and reading and printing values in a loop.

Uploaded by

Zia Ullah
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

/*

MQUnifiedsensor Library - reading an MQ5

Demonstrates the use a MQ5 sensor.


Library originally added 03 Nov 2023
by Zia Ullah

Added example
modified 07 Nov 2023
by Zia Ullah

Wiring:

Please make sure arduino A0 pin represents the analog input configured on
#define pin

This example code is in the public domain.

*/

//Include the library


#include <MQUnifiedsensor.h>

//Definitions
#define placa "Arduino UNO"
#define Voltage_Resolution 5
#define pin A0 //Analog input 0 of your arduino
#define type "MQ-5" //MQ5
#define ADC_Bit_Resolution 10 // For arduino UNO/MEGA/NANO
#define RatioMQ5CleanAir 6.5 //RS / R0 = 6.5 ppm
//#define calibration_button 13 //Pin to calibrate your sensor

//Declare Sensor
MQUnifiedsensor MQ5(placa, Voltage_Resolution, ADC_Bit_Resolution, pin, type);

void setup() {
//Init the serial port communication - to debug the library
Serial.begin(9600); //Init serial port

//Set math model to calculate the PPM concentration and the value of constants
MQ5.setRegressionMethod(1); //_PPM = a*ratio^b
MQ5.setA(1163.8); MQ5.setB(-3.874); // Configure the equation to to calculate
H2 concentration
/*
Exponential regression:
Gas | a | b
H2 | 1163.8 | -3.874
LPG | 80.897 | -2.431
CH4 | 177.65 | -2.56
CO | 491204 | -5.826
Alcohol| 97124 | -4.918
*/

/******************************** MQ Init
********************************************/
//Remarks: Configure the pin of arduino as input.

/********************************************************************************
****/
MQ5.init();
/*
//If the RL value is different from 10K please assign your RL value with the
following method:
MQ5.setRL(10);
*/
/***************************************** MQ-5 Calibration
********************************************/
// Explanation:
// In this routine the sensor will measure the resistance of the sensor
supposedly before being pre-heated
// and on clean air (Calibration conditions), setting up R0 value.
// We recomend executing this routine only on setup in laboratory conditions.
// This routine does not need to be executed on each restart, you can load your
R0 value from eeprom.
Serial.print("Calibrating please wait.");
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ5.update(); // Update data, the arduino will read the voltage from the
analog pin
calcR0 += MQ5.calibrate(RatioMQ5CleanAir);
Serial.print(".");
}
MQ5.setR0(calcR0/10);
Serial.println(" done!.");

if(isinf(calcR0)) {Serial.println("Warning: Conection issue, R0 is infinite


(Open circuit detected) please check your wiring and supply"); while(1);}
if(calcR0 == 0){Serial.println("Warning: Conection issue found, R0 is zero
(Analog pin shorts to ground) please check your wiring and supply"); while(1);}
/************************************ MQ-5 Calibration
********************************************/
MQ5.serialDebug(true);
}

void loop() {
MQ5.update(); // Update data, the arduino will read the voltage from the analog
pin
MQ5.readSensor(); // Sensor will read PPM concentration using the model, a and
b values set previously or from the setup
MQ5.serialDebug(); // Will print the table on the serial port
delay(5000); //Sampling frequency
}

You might also like