mirror of
				https://github.com/miguel5612/MQSensorsLib.git
				synced 2025-11-04 00:55:06 +03:00 
			
		
		
		
	Published parameters
This commit is contained in:
		@@ -17,7 +17,7 @@
 | 
				
			|||||||
#include <MQUnifiedsensor.h>
 | 
					#include <MQUnifiedsensor.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Definitions
 | 
					//Definitions
 | 
				
			||||||
#define pin A0 //Analog input 0 of your arduino
 | 
					#define pin A3 //Analog input 0 of your arduino
 | 
				
			||||||
#define type 3 //MQ3
 | 
					#define type 3 //MQ3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Declare Sensor
 | 
					//Declare Sensor
 | 
				
			||||||
@@ -25,6 +25,7 @@
 | 
				
			|||||||
MQUnifiedsensor MQ3(pin, type);
 | 
					MQUnifiedsensor MQ3(pin, type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  //init the sensor
 | 
					  //init the sensor
 | 
				
			||||||
  /*****************************  MQInicializar****************************************
 | 
					  /*****************************  MQInicializar****************************************
 | 
				
			||||||
  Input:  pin, type 
 | 
					  Input:  pin, type 
 | 
				
			||||||
@@ -32,6 +33,14 @@ void setup() {
 | 
				
			|||||||
  Remarks: This function create the sensor object.
 | 
					  Remarks: This function create the sensor object.
 | 
				
			||||||
  ************************************************************************************/ 
 | 
					  ************************************************************************************/ 
 | 
				
			||||||
  MQ3.inicializar(); 
 | 
					  MQ3.inicializar(); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  float RoCleanAir = MQ3.calibrate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Serial.print("R0 preconfigurado: ");
 | 
				
			||||||
 | 
					  Serial.println(MQ3.getR0());
 | 
				
			||||||
 | 
					  Serial.print("R0 clean air: ");
 | 
				
			||||||
 | 
					  Serial.println(RoCleanAir);
 | 
				
			||||||
 | 
					  MQ3.setR0(RoCleanAir);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void loop() {
 | 
					void loop() {
 | 
				
			||||||
@@ -42,7 +51,8 @@ void loop() {
 | 
				
			|||||||
  ************************************************************************************/ 
 | 
					  ************************************************************************************/ 
 | 
				
			||||||
  //Read the sensor and print in serial port
 | 
					  //Read the sensor and print in serial port
 | 
				
			||||||
  //Lecture will be saved in lecture variable
 | 
					  //Lecture will be saved in lecture variable
 | 
				
			||||||
  int lecture =  MQ3.readSensor(""); // Return Alcohol concentration
 | 
					  int lecture =  MQ3.readSensor("", true); // Return Alcohol concentration
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
  int gL = lecture/1000;
 | 
					  int gL = lecture/1000;
 | 
				
			||||||
  Serial.print("Alcohol ppm measured: ");
 | 
					  Serial.print("Alcohol ppm measured: ");
 | 
				
			||||||
  Serial.print(lecture);
 | 
					  Serial.print(lecture);
 | 
				
			||||||
@@ -51,4 +61,5 @@ void loop() {
 | 
				
			|||||||
  Serial.print("Alcohol gL measured: ");
 | 
					  Serial.print("Alcohol gL measured: ");
 | 
				
			||||||
  Serial.print(gL);
 | 
					  Serial.print(gL);
 | 
				
			||||||
  Serial.println("g/L");
 | 
					  Serial.println("g/L");
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,8 +106,11 @@ int MQUnifiedsensor::readSensor(String nameLectureRequeired, bool print)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    String nameLecture = getnameLecture();
 | 
					    String nameLecture = getnameLecture();
 | 
				
			||||||
    Serial.println("**********************");
 | 
					    Serial.println("**********************");
 | 
				
			||||||
 | 
					    Serial.println("* PPM_log = (log10(Rs/R0) - b)/m");
 | 
				
			||||||
 | 
					    Serial.println("* PPM = pow(10, PPM_Log)");
 | 
				
			||||||
    Serial.println("* Sensor: MQ-" + String(_type));
 | 
					    Serial.println("* Sensor: MQ-" + String(_type));
 | 
				
			||||||
    Serial.println("* m =" + String(_m) + " ,b =" + String(_b) + ", R0 = " + _R0);
 | 
					    Serial.println("* m =" + String(_m) + " ,b =" + String(_b) + ", R0 = " + _R0);
 | 
				
			||||||
 | 
					    Serial.println("* Vcc: " + String(_VOLT_RESOLUTION) + ", RS: " + String(_RS_Calc));
 | 
				
			||||||
    Serial.println("* RS/R0 = " + String(_ratio) + " ,Voltaje leido(ADC): " + String(_sensor_volt));
 | 
					    Serial.println("* RS/R0 = " + String(_ratio) + " ,Voltaje leido(ADC): " + String(_sensor_volt));
 | 
				
			||||||
    Serial.println("* Lectura(" + nameLecture + ")=" + String(_PPM) + " PPM");
 | 
					    Serial.println("* Lectura(" + nameLecture + ")=" + String(_PPM) + " PPM");
 | 
				
			||||||
    Serial.println("**********************");
 | 
					    Serial.println("**********************");
 | 
				
			||||||
@@ -512,16 +515,17 @@ void MQUnifiedsensor::setSensorCharacteristics(String nameLectureRequeired, bool
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  //Serial debugging
 | 
					  //Serial debugging
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
int MQUnifiedsensor::readPPM(int m, int b) {
 | 
					float MQUnifiedsensor::readPPM(int m, int b) {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  * Returns the PPM concentration
 | 
					  * Returns the PPM concentration
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 | 
					  //More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor
 | 
				
			||||||
  _sensor_volt = this->getVoltage();
 | 
					  _sensor_volt = this->getVoltage();
 | 
				
			||||||
  double RS_gas; //Define variable for sensor resistance
 | 
					  //_RS_Calc; //Define variable for sensor resistance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RS_gas = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Get value of RS in a gas
 | 
					  _RS_Calc = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Get value of RS in a gas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _ratio = RS_gas / this->_R0;   // Get ratio RS_gas/RS_air
 | 
					  _ratio = _RS_Calc / this->_R0;   // Get ratio RS_gas/RS_air
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double ppm_log = (log10(_ratio) - b) / m; //Get ppm value in linear scale according to the the ratio value
 | 
					  double ppm_log = (log10(_ratio) - b) / m; //Get ppm value in linear scale according to the the ratio value
 | 
				
			||||||
  double ppm = pow(10, ppm_log); //Convert ppm value to log scale
 | 
					  double ppm = pow(10, ppm_log); //Convert ppm value to log scale
 | 
				
			||||||
@@ -541,18 +545,18 @@ long MQUnifiedsensor::calibrate(boolean print) {
 | 
				
			|||||||
  RS = [(VC x RL) / VRL] - RL
 | 
					  RS = [(VC x RL) / VRL] - RL
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  _sensor_volt; //Define variable for sensor voltage
 | 
					  _sensor_volt; //Define variable for sensor voltage
 | 
				
			||||||
  long RS_air; //Define variable for sensor resistance
 | 
					  float RS_air; //Define variable for sensor resistance
 | 
				
			||||||
  long R0; //Define variable for R0
 | 
					  float R0; //Define variable for R0
 | 
				
			||||||
  _sensor_volt = this->getVoltage(); //Convert average to voltage
 | 
					  _sensor_volt = this->getVoltage(); //Convert average to voltage
 | 
				
			||||||
  RS_air = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Calculate RS in fresh air 
 | 
					  RS_air = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Calculate RS in fresh air 
 | 
				
			||||||
  R0 = RS_air/_ratioInCleanAir; //Calculate R0 
 | 
					  R0 = RS_air/_ratioInCleanAir; //Calculate R0 
 | 
				
			||||||
  if(print)
 | 
					  if(print)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    Serial.println("*******Calibrating*********");
 | 
					    Serial.println("*******Calibrating*********");
 | 
				
			||||||
 | 
					    Serial.println("* Vcc: " + String(_VOLT_RESOLUTION) + "*");
 | 
				
			||||||
    Serial.println("* Sensor: MQ-" + String(_type) + "*");
 | 
					    Serial.println("* Sensor: MQ-" + String(_type) + "*");
 | 
				
			||||||
    Serial.println("* _sensor_volt: " + String(_sensor_volt) + "*");
 | 
					    Serial.println("* _sensor_volt: " + String(_sensor_volt) + "*");
 | 
				
			||||||
    Serial.println("* _RLValue: " + String(_RLValue) + "*");
 | 
					    Serial.println("* _RLValue: " + String(_RLValue) + "*");
 | 
				
			||||||
    Serial.println("* _VOLT_RESOLUTION: " + String(_VOLT_RESOLUTION) + "*");
 | 
					 | 
				
			||||||
    Serial.println("* _ratioInCleanAir: " + String(_ratioInCleanAir) + "*");
 | 
					    Serial.println("* _ratioInCleanAir: " + String(_ratioInCleanAir) + "*");
 | 
				
			||||||
    Serial.println("* R0: " + String(R0) + "*");
 | 
					    Serial.println("* R0: " + String(R0) + "*");
 | 
				
			||||||
    Serial.println("*******Calibrating*********");
 | 
					    Serial.println("*******Calibrating*********");
 | 
				
			||||||
@@ -572,9 +576,15 @@ double MQUnifiedsensor::getVoltage(int read) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  return voltage;
 | 
					  return voltage;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MQUnifiedsensor::setR0(double R0) {
 | 
					void MQUnifiedsensor::setR0(double R0) {
 | 
				
			||||||
  this->_R0 = R0;
 | 
					  this->_R0 = R0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double MQUnifiedsensor::getR0() {
 | 
				
			||||||
 | 
					  return _R0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
void MQUnifiedsensor::setDefaultGas()
 | 
					void MQUnifiedsensor::setDefaultGas()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if(_type == 2)
 | 
					    if(_type == 2)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -274,11 +274,12 @@ class MQUnifiedsensor
 | 
				
			|||||||
    void setDefaultGas();
 | 
					    void setDefaultGas();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    int readSensor(String nameLectureRequeired = "", bool print = false);
 | 
					    int readSensor(String nameLectureRequeired = "", bool print = false);
 | 
				
			||||||
    int readPPM(int m, int b);
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    long calibrate(boolean print = false);
 | 
					    long calibrate(boolean print = false);
 | 
				
			||||||
    double getVoltage(int read =  true);
 | 
					    double getVoltage(int read =  true);
 | 
				
			||||||
    double stringToDouble(String & str);
 | 
					    double stringToDouble(String & str);
 | 
				
			||||||
 | 
					    double getR0();
 | 
				
			||||||
 | 
					    float readPPM(int m, int b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String getnameLecture();
 | 
					    String getnameLecture();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -286,11 +287,12 @@ class MQUnifiedsensor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
    /************************Private vars************************************/
 | 
					    /************************Private vars************************************/
 | 
				
			||||||
    int _pin, _type, _R0, _lecturePosInArray; 
 | 
					    int _pin, _type, _lecturePosInArray; 
 | 
				
			||||||
 | 
					    double  _R0;
 | 
				
			||||||
    String  _nameLectureRequeired;   
 | 
					    String  _nameLectureRequeired;   
 | 
				
			||||||
    int _VOLT_RESOLUTION  = 5.0; // if 3.3v use 3.3
 | 
					    int _VOLT_RESOLUTION  = 5.0; // if 3.3v use 3.3
 | 
				
			||||||
    int _RLValue = 10; //Value in KiloOhms
 | 
					    int _RLValue = 10; //Value in KiloOhms
 | 
				
			||||||
    int _PPM;
 | 
					    float _PPM, _RS_Calc;
 | 
				
			||||||
    float _ratioInCleanAir, _sensor_volt, RS_air, _m, _b, _ratio;
 | 
					    float _ratioInCleanAir, _sensor_volt, RS_air, _m, _b, _ratio;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user