From d3241a1e2f3cb26c606c586f1d20f5ea92e85d88 Mon Sep 17 00:00:00 2001 From: miguel5612 Date: Mon, 21 Mar 2022 08:17:54 -0500 Subject: [PATCH] Added MQ136 Example --- README.md | 6 +++ examples/MQ-136/MQ-136.ino | 88 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 examples/MQ-136/MQ-136.ino diff --git a/README.md b/README.md index 077b3ed..853e6cd 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ We present a unified library for MQ sensors, this library allows to read MQ sign * [Sensor manufacturers](#Sensor-manufacturers) * [Contributing](#Contributing) * [Authors](#Authors) +* [Be a sponsor 💖](#sponsor) ## Getting Started @@ -130,6 +131,7 @@ You'll need Arduino desktop app 1.8.9 or later. | MQ-9 | Haoyuelectronics | [datasheet](http://www.haoyuelectronics.com/Attachment/MQ-9/MQ9.pdf) | | MQ-131 | Sensorsportal | [datasheet](http://www.sensorsportal.com/DOWNLOADS/MQ131.pdf) | | MQ-135 | HANWEI Electronics | [datasheet](https://www.electronicoscaldas.com/datasheet/MQ-135_Hanwei.pdf) | +| MQ-136 | HANWEI Electronics | [datasheet](https://github.com/miguel5612/MQSensorsLib_Docs/blob/master/Datasheets/MQ136%20-%20Hanwei.pdf) | | MQ-303A | HANWEI Electronics | [datasheet](http://www.kosmodrom.com.ua/pdf/MQ303A.pdf) | | MQ-309A | HANWEI Electronics | [datasheet](http://www.sensorica.ru/pdf/MQ-309A.pdf) | @@ -242,6 +244,10 @@ This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md } +## sponsor + +* [Paypal](https://www.paypal.com/paypalme/miguel5612) + diff --git a/examples/MQ-136/MQ-136.ino b/examples/MQ-136/MQ-136.ino new file mode 100644 index 0000000..7036e35 --- /dev/null +++ b/examples/MQ-136/MQ-136.ino @@ -0,0 +1,88 @@ +/* + MQUnifiedsensor Library - reading an MQ136 + + Demonstrates the use a MQ136 sensor. + Library originally added 01 may 2019 + by Miguel A Califa, Yersson Carrillo, Ghiordy Contreras, Mario Rodriguez + + Added example + modified 21 March 2022 + by Miguel Califa + + Wiring: + https://github.com/miguel5612/MQSensorsLib_Docs/blob/master/static/img/MQ_Arduino.PNG + 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 + +//Definitions +#define placa "Arduino UNO" +#define Voltage_Resolution 5 +#define pin A0 //Analog input 0 of your arduino +#define type "MQ-136" //MQ136 +#define ADC_Bit_Resolution 10 // For arduino UNO/MEGA/NANO +#define RatioMQ136CleanAir 3.6//RS / R0 = 3.6 ppm +//#define calibration_button 13 //Pin to calibrate your sensor + +//Declare Sensor +MQUnifiedsensor MQ136(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 + MQ136.setRegressionMethod(1); //_PPM = a*ratio^b + MQ136.setA(1043.3); MQ136.setB(-3.282); // Configure the equation to to calculate H2S Concentration + + /* + Exponential regression: + GAS | a | b + H2S | 1043.3 | -3.282 + NH4 | 309.6 | -1.407 + CO | 1728.9 | -1.879 + */ + + /***************************** MQ Init ********************************************/ + //Remarks: Configure the pin of arduino as input. + /************************************************************************************/ + MQ136.init(); + /* + //If the RL value is different from 10K please assign your RL value with the following method: + MQ136.setRL(10); + */ + /***************************** MQ 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. + // Acknowledgements: https://jayconsystems.com/blog/understanding-a-gas-sensor + Serial.print("Calibrating please wait."); + float calcR0 = 0; + for(int i = 1; i<=10; i ++) + { + MQ136.update(); // Update data, the arduino will read the voltage from the analog pin + calcR0 += MQ136.calibrate(RatioMQ136CleanAir); + Serial.print("."); + } + MQ136.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 CAlibration ********************************************/ + MQ136.serialDebug(true); +} + +void loop() { + MQ136.update(); // Update data, the arduino will read the voltage from the analog pin + MQ136.readSensor(); // Sensor will read PPM concentration using the model, a and b values set previously or from the setup + MQ136.serialDebug(); // Will print the table on the serial port + delay(500); //Sampling frequency +} \ No newline at end of file