Removed unused code and added serial debug

This commit is contained in:
miguel5612 2020-03-26 09:56:29 -05:00
parent fae50dc388
commit b6b36edb9d
2 changed files with 49 additions and 527 deletions

View File

@ -1,93 +1,48 @@
#include "MQUnifiedsensor.h"
MQUnifiedsensor::MQUnifiedsensor(int pin, int type) {
MQUnifiedsensor::MQUnifiedsensor(String Placa, int Voltage_Resolution, int pin, String type) {
this->_pin = pin;
this->_type = type; //2,3,4,5,6,7,8,9,131,135,303,309
//Set _MQ variable with MQ sensor selected
if(_type == 2)
this->_type = type; //MQ-2, MQ-3 ... MQ-309A
this->_placa = Placa;
this-> _VOLT_RESOLUTION = Voltage_Resolution;
}
MQUnifiedsensor::serialDebug(boolean onSetup)
{
if(onSetup)
{
//memcpy(_MQ, _MQ2, sizeof(_MQ2));
_ratioInCleanAir = RatioMQ2CleanAir;
_R0 = R0_MQ2;
//_MQ = MQ2;
Serial.println("************************************************************************************************************************************************");
Serial.println("MQ sensor reading library for arduino");
Serial.println("Note: remember that all the parameters below can be modified during the program execution with the methods:");
Serial.println("setR0, setRL, setA, setB where you will have to send as parameter the new value, example: mySensor.setR0(20); //R0 = 20K");
Serial.println("Authors: Miguel A. Califa U - Yersson R. Carrillo A - Ghiordy F. Contreras C");
Serial.println("Contributors: Andres A. Martinez - Juan A. Rodríguez - Mario A. Rodríguez O ");
Serial.println("Sensor:" + _type);
Serial.println("Supply voltage:" + _VOLT_RESOLUTION);
Serial.println("R0: " + _R0);
Serial.println("RL: " + _RL);
Serial.println("Model: Logarithmic regression with parameters.");
Serial.println(_type + ":" + "a:" + _a + " | b:" + _b);
Serial.println("Development board: " + _placa);
}
else if(_type == 3)
else
{
//memcpy(_MQ, _MQ3, sizeof(_MQ3));
_ratioInCleanAir = RatioMQ3CleanAir;
_R0 = R0_MQ3;
//_MQ = MQ3;
}
else if(_type == 4)
{
//memcpy(_MQ, _MQ4, sizeof(_MQ4));
_ratioInCleanAir = RatioMQ4CleanAir;
_R0 = R0_MQ4;
//_MQ = MQ4;
}
else if(_type == 5)
{
//memcpy(_MQ, _MQ5, sizeof(_MQ5));
_ratioInCleanAir = RatioMQ5CleanAir;
_R0 = R0_MQ5;
//_MQ = MQ5;
}
else if(_type == 6)
{
//memcpy(_MQ, _MQ6, sizeof(_MQ6));
_ratioInCleanAir = RatioMQ6CleanAir;
_R0 = R0_MQ6;
//_MQ = MQ6;
}
else if(_type == 7)
{
//memcpy(_MQ, _MQ7, sizeof(_MQ7));
_ratioInCleanAir = RatioMQ7CleanAir;
_R0 = R0_MQ7;
//_MQ = MQ7;
}
else if(_type == 8)
{
//memcpy(_MQ, _MQ8, sizeof(_MQ8));
_ratioInCleanAir = RatioMQ8CleanAir;
_R0 = R0_MQ8;
//_MQ = MQ8;
}
else if(_type == 9)
{
//memcpy(_MQ, _MQ9, sizeof(_MQ9));
_ratioInCleanAir = RatioMQ9CleanAir;
_R0 = R0_MQ9;
//_MQ = MQ9;
}
else if(_type == 131)
{
//memcpy(_MQ, _MQ131, sizeof(_MQ131));
_ratioInCleanAir = RatioMQ131CleanAir;
_R0 = R0_MQ131;
//_MQ = MQ131;
}
else if(_type == 135)
{
//memcpy(_MQ, _MQ135, sizeof(_MQ135));
_ratioInCleanAir = RatioMQ135CleanAir;
_R0 = R0_MQ135;
//_MQ = MQ135;
}
else if(_type == 303)
{
//memcpy(_MQ, _MQ303A, sizeof(_MQ303A));
_ratioInCleanAir = RatioMQ303CleanAir;
_R0 = R0_MQ303;
//_MQ = MQ303A;
}
else if(_type == 309)
{
//memcpy(_MQ, _MQ309A, sizeof(_MQ309A));
_ratioInCleanAir = RatioMQ309CleanAir;
_R0 = R0_MQ309;
//_MQ = MQ309;
if(!_firstFlag)
{
Serial.println("| ****************************************************************" + _type + "****************************************************************|");
Serial.println("|ADC_In | Equation_V_ADC | Voltage_ADC | Equation_R | Resistance_RS | EQ_Ratio | Ratio (RS/R0) | Equation_PPM | PPM |");
_firstFlag = true; //Headers are printed
}
else
{
String eq = "";
if(regression == "Exponential") eq = "a*ratio^b"
Serial.println("|" + _adc + "|" + "v = ADC*" + _VOLT_RESOLUTION + "/1024" + "|" + _sensor_volt + "|" + "RS = ((" + _VOLT_RESOLUTION + "*RL)/Voltage) - RL" + "|" + _RS_Calc + "|" + "Ratio = RS/R0" + "|" + _ratio + "|" + eq + "|" + _PPM);
}
}
}
void MQUnifiedsensor::update()
@ -131,385 +86,6 @@ String MQUnifiedsensor::getnameLecture()
{
return _nameLectureRequeired;
}
void MQUnifiedsensor::setSensorCharacteristics(String nameLectureRequeired, bool print)
{
//Defaults index
if(nameLectureRequeired == "")
{
//Set default
setDefaultGas();
//Put the default into variable internally used
nameLectureRequeired = _nameLectureRequeired;
}
if(_type == 2)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ2_H2_a;
_b = MQ2_H2_b;
}
else if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ2_LPG_a;
_b = MQ2_LPG_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ2_CO_a;
_b = MQ2_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ2_Alcohol_a;
_b = MQ2_Alcohol_b;
}
else if(nameLectureRequeired == "Propane")
{
_nameLectureRequeired = "Propane";
_a = MQ2_Propane_a;
_b = MQ2_Propane_b;
}
}
else if(_type == 3)
{
if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ3_LPG_a;
_b = MQ3_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ3_CH4_a;
_b = MQ3_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ3_CO_a;
_b = MQ3_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ3_Alcohol_a;
_b = MQ3_Alcohol_b;
}
else if(nameLectureRequeired == "Hexane")
{
_nameLectureRequeired = "Hexane";
_a = MQ3_Hexane_a;
_b = MQ3_Hexane_b;
}
else if(nameLectureRequeired == "Benzene")
{
_nameLectureRequeired = "Benzene";
_a = MQ3_Benzene_a;
_b = MQ3_Benzene_b;
}
}
else if(_type == 4)
{
if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ4_LPG_a;
_b = MQ4_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ4_CH4_a;
_b = MQ4_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ4_CO_a;
_b = MQ4_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ4_Alcohol_a;
_b = MQ4_Alcohol_b;
}
else if(nameLectureRequeired == "smoke")
{
_nameLectureRequeired = "smoke";
_a = MQ4_smoke_a;
_b = MQ4_smoke_b;
}
}
else if(_type == 5)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ5_H2_a;
_b = MQ5_H2_b;
}
else if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ5_LPG_a;
_b = MQ5_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ5_CH4_a;
_b = MQ5_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ5_CO_a;
_b = MQ5_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ5_Alcohol_a;
_b = MQ5_Alcohol_b;
}
}
else if(_type == 6)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ6_H2_a;
_b = MQ6_H2_b;
}
else if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ6_LPG_a;
_b = MQ6_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ6_CH4_a;
_b = MQ6_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ6_CO_a;
_b = MQ6_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ6_Alcohol_a;
_b = MQ6_Alcohol_b;
}
}
else if(_type == 7)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ7_H2_a;
_b = MQ7_H2_b;
}
else if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ7_LPG_a;
_b = MQ7_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ7_CH4_a;
_b = MQ7_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ7_CO_a;
_b = MQ7_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ7_Alcohol_a;
_b = MQ7_Alcohol_b;
}
}
else if(_type == 8)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ8_H2_a;
_b = MQ8_H2_b;
}
else if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ8_LPG_a;
_b = MQ8_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ8_CH4_a;
_b = MQ8_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ8_CO_a;
_b = MQ8_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ8_Alcohol_a;
_b = MQ8_Alcohol_b;
}
}
else if(_type == 9)
{
if(nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_a = MQ9_LPG_a;
_b = MQ9_LPG_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ9_CH4_a;
_b = MQ9_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ9_CO_a;
_b = MQ9_CO_b;
}
}
else if(_type == 131)
{
if(nameLectureRequeired == "NOx")
{
_nameLectureRequeired = "NOx";
_a = MQ131_NOx_a;
_b = MQ131_NOx_b;
}
else if(nameLectureRequeired == "CL2")
{
_nameLectureRequeired = "CL2";
_a = MQ131_CL2_a;
_b = MQ131_CL2_b;
}
else if(nameLectureRequeired == "O3")
{
_nameLectureRequeired = "O3";
_a = MQ131_O3_a;
_b = MQ131_O3_b;
}
}
else if(_type == 135)
{
if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ135_CO_a;
_b = MQ135_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ135_Alcohol_a;
_b = MQ135_Alcohol_b;
}
else if(nameLectureRequeired == "CO2")
{
_nameLectureRequeired = "CO2";
_a = MQ135_CO2_a;
_b = MQ135_CO2_b;
}
else if(nameLectureRequeired == "Tolueno")
{
_nameLectureRequeired = "Tolueno";
_a = MQ135_Tolueno_a;
_b = MQ135_Tolueno_b;
}
else if(nameLectureRequeired == "NH4")
{
_nameLectureRequeired = "NH4";
_a = MQ135_NH4_a;
_b = MQ135_NH4_b;
}
else if(nameLectureRequeired == "Acetona")
{
_nameLectureRequeired = "Acetona";
_a = MQ135_Acetona_a;
_b = MQ135_Acetona_b;
}
}
else if(_type == 303)
{
if(nameLectureRequeired == "Iso_butano")
{
_nameLectureRequeired = "Iso_butano";
_a = MQ303_Iso_butano_a;
_b = MQ303_Iso_butano_b;
}
else if(nameLectureRequeired == "Hydrogeno")
{
_nameLectureRequeired = "Hydrogeno";
_a = MQ303_Hydrogeno_a;
_b = MQ303_Hydrogeno_b;
}
else if(nameLectureRequeired == "Ethanol")
{
_nameLectureRequeired = "Ethanol";
_a = MQ303_Ethanol_a;
_b = MQ303_Ethanol_b;
}
}
else if(_type == 309)
{
if(nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_a = MQ309_H2_a;
_b = MQ309_H2_b;
}
else if(nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_a = MQ309_CH4_a;
_b = MQ309_CH4_b;
}
else if(nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_a = MQ309_CO_a;
_b = MQ309_CO_b;
}
else if(nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_a = MQ309_Alcohol_a;
_b = MQ309_Alcohol_b;
}
}
//Serial debugging
}
float MQUnifiedsensor::calibrate(boolean print) {
//More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor
/*
@ -548,7 +124,8 @@ double MQUnifiedsensor::getVoltage(int read) {
{
double avg = 0.0;
for (int i = 0; i < retries; i ++) {
avg += analogRead(this->_pin);
_adc = analogRead(this->_pin);
avg += _adc;
delay(retry_interval);
}
voltage = (avg/ retries) * _VOLT_RESOLUTION / (pow(2, ADC_RESOLUTION) - 1);
@ -576,57 +153,6 @@ double MQUnifiedsensor::getRL() {
return _RLValue;
}
void MQUnifiedsensor::setDefaultGas()
{
if(_type == 2)
{
_nameLectureRequeired = defaultMQ2;
}
else if(_type == 3)
{
_nameLectureRequeired = defaultMQ3;
}
else if(_type == 4)
{
_nameLectureRequeired = defaultMQ4;
}
else if(_type == 5)
{
_nameLectureRequeired = defaultMQ5;
}
else if(_type == 6)
{
_nameLectureRequeired = defaultMQ6;
}
else if(_type == 7)
{
_nameLectureRequeired = defaultMQ7;
}
else if(_type == 8)
{
_nameLectureRequeired = defaultMQ8;
}
else if(_type == 9)
{
_nameLectureRequeired = defaultMQ9;
}
else if(_type == 131)
{
_nameLectureRequeired = defaultMQ131;
}
else if(_type == 135)
{
_nameLectureRequeired = defaultMQ135;
}
else if(_type == 303)
{
_nameLectureRequeired = defaultMQ303;
}
else if(_type == 309)
{
_nameLectureRequeired = defaultMQ309;
}
}
double MQUnifiedsensor::stringToDouble(String & str)
{
return atof( str.c_str() );

View File

@ -13,40 +13,36 @@
class MQUnifiedsensor
{
public:
MQUnifiedsensor(int pin, int type);
MQUnifiedsensor(String Placa = "Arduino", int Voltage_Resolution = 5, int pin, String type);
//Functions to set values
void inicializar();
void update();
void setR0(double R0 = 10);
void setRL(double RL = 10);
void setVoltResolution(float voltaje = 5);
void setSensorCharacteristics(String nameLectureReqeuired = "", bool print = false);
void setDefaultGas();
void setVoltResolution(double voltage_resolution = 5);
void serialDebug(boolean onSetup = false); //Show on serial port information about sensor
//user functions
float calibrate(boolean print = false);
float readSensor(String nameLectureRequeired = "", bool print = false);
float readSensor(<String regressionMethod = "Exponential", float _a, float _b);
//get function for info
double getR0();
double getRL();
double getVoltage(int read = true);
double stringToDouble(String & str);
String getnameLecture();
double stringToDouble(String & str);
private:
/************************Private vars************************************/
byte _pin, _type, _lecturePosInArray;
byte _pin;
String _type;
String _placa;
byte _VOLT_RESOLUTION = 5.0; // if 3.3v use 3.3
byte _ratioInCleanAir, _sensor_volt;
byte _RLValue = 10; //Value in KiloOhms
float _R0, RS_air, _ratio, _PPM, _RS_Calc;
float _b;
double _a;
String _nameLectureRequeired;
};
#endif //MQUnifiedsensor_H