Memoery performance

This commit is contained in:
miguel5612 2019-05-30 12:25:15 -05:00
parent fcb8a01236
commit f4febca6df
2 changed files with 575 additions and 17 deletions

View File

@ -7,84 +7,84 @@
//Set _MQ variable with MQ sensor selected
if(_type == 2)
{
memcpy(_MQ, _MQ2, sizeof(_MQ2));
//memcpy(_MQ, _MQ2, sizeof(_MQ2));
_ratioInCleanAir = RatioMQ2CleanAir;
_R0 = R0_MQ2;
//_MQ = MQ2;
}
else if(_type == 3)
{
memcpy(_MQ, _MQ3, sizeof(_MQ3));
//memcpy(_MQ, _MQ3, sizeof(_MQ3));
_ratioInCleanAir = RatioMQ3CleanAir;
_R0 = R0_MQ3;
//_MQ = MQ3;
}
else if(_type == 4)
{
memcpy(_MQ, _MQ4, sizeof(_MQ4));
//memcpy(_MQ, _MQ4, sizeof(_MQ4));
_ratioInCleanAir = RatioMQ4CleanAir;
_R0 = R0_MQ4;
//_MQ = MQ4;
}
else if(_type == 5)
{
memcpy(_MQ, _MQ5, sizeof(_MQ5));
//memcpy(_MQ, _MQ5, sizeof(_MQ5));
_ratioInCleanAir = RatioMQ5CleanAir;
_R0 = R0_MQ5;
//_MQ = MQ5;
}
else if(_type == 6)
{
memcpy(_MQ, _MQ6, sizeof(_MQ6));
//memcpy(_MQ, _MQ6, sizeof(_MQ6));
_ratioInCleanAir = RatioMQ6CleanAir;
_R0 = R0_MQ6;
//_MQ = MQ6;
}
else if(_type == 7)
{
memcpy(_MQ, _MQ7, sizeof(_MQ7));
//memcpy(_MQ, _MQ7, sizeof(_MQ7));
_ratioInCleanAir = RatioMQ7CleanAir;
_R0 = R0_MQ7;
//_MQ = MQ7;
}
else if(_type == 8)
{
memcpy(_MQ, _MQ8, sizeof(_MQ8));
//memcpy(_MQ, _MQ8, sizeof(_MQ8));
_ratioInCleanAir = RatioMQ8CleanAir;
_R0 = R0_MQ8;
//_MQ = MQ8;
}
else if(_type == 9)
{
memcpy(_MQ, _MQ9, sizeof(_MQ9));
//memcpy(_MQ, _MQ9, sizeof(_MQ9));
_ratioInCleanAir = RatioMQ9CleanAir;
_R0 = R0_MQ9;
//_MQ = MQ9;
}
else if(_type == 131)
{
memcpy(_MQ, _MQ131, sizeof(_MQ131));
//memcpy(_MQ, _MQ131, sizeof(_MQ131));
_ratioInCleanAir = RatioMQ131CleanAir;
_R0 = R0_MQ131;
//_MQ = MQ131;
}
else if(_type == 135)
{
memcpy(_MQ, _MQ135, sizeof(_MQ135));
//memcpy(_MQ, _MQ135, sizeof(_MQ135));
_ratioInCleanAir = RatioMQ135CleanAir;
_R0 = R0_MQ135;
//_MQ = MQ135;
}
else if(_type == 303)
{
memcpy(_MQ, _MQ303A, sizeof(_MQ303A));
//memcpy(_MQ, _MQ303A, sizeof(_MQ303A));
_ratioInCleanAir = RatioMQ303CleanAir;
_R0 = R0_MQ303;
//_MQ = MQ303A;
}
else if(_type == 309)
{
memcpy(_MQ, _MQ309A, sizeof(_MQ309A));
//memcpy(_MQ, _MQ309A, sizeof(_MQ309A));
_ratioInCleanAir = RatioMQ309CleanAir;
_R0 = R0_MQ309;
//_MQ = MQ309;
@ -130,17 +130,387 @@ void MQUnifiedsensor::setSensorCharacteristics(String nameLectureRequeired, bool
}
//Dinamic index search
/*
for (int i=0; i<sizeof(_MQ); i++) {
if (nameLectureRequeired == _MQ[i]) { //modified here
_lecturePosInArray = i;
break;
}
}
*/
if(_type == 2)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ2_H2_m;
_b = MQ2_H2_b;
}
else if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ2_LPG_m;
_b = MQ2_LPG_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ2_CO_m;
_b = MQ2_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ2_Alcohol_m;
_b = MQ2_Alcohol_b;
}
else if(_nameLectureRequeired == "Propane")
{
_nameLectureRequeired = "Propane";
_m = MQ2_Propane_m;
_b = MQ2_Propane_b;
}
else if(_nameLectureRequeired == "Benzene")
{
_nameLectureRequeired = "Benzene";
_m = MQ2_Benzene_m;
_b = MQ2_Benzene_b;
}
}
else if(_type == 3)
{
if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ3_LPG_m;
_b = MQ3_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ3_CH4_m;
_b = MQ3_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ3_CO_m;
_b = MQ3_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ3_Alcohol_m;
_b = MQ3_Alcohol_b;
}
else if(_nameLectureRequeired == "Hexane")
{
_nameLectureRequeired = "Hexane";
_m = MQ3_Hexane_m;
_b = MQ3_Hexane_b;
}
else if(_nameLectureRequeired == "Benzene")
{
_nameLectureRequeired = "Benzene";
_m = MQ3_Benzene_m;
_b = MQ3_Benzene_b;
}
}
else if(_type == 4)
{
if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ4_LPG_m;
_b = MQ4_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ4_CH4_m;
_b = MQ4_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ4_CO_m;
_b = MQ4_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ4_Alcohol_m;
_b = MQ4_Alcohol_b;
}
else if(_nameLectureRequeired == "smoke")
{
_nameLectureRequeired = "smoke";
_m = MQ4_smoke_m;
_b = MQ4_smoke_b;
}
}
else if(_type == 5)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ5_H2_m;
_b = MQ5_H2_b;
}
else if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ5_LPG_m;
_b = MQ5_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ5_CH4_m;
_b = MQ5_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ5_CO_m;
_b = MQ5_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ5_Alcohol_m;
_b = MQ5_Alcohol_b;
}
}
else if(_type == 6)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ6_H2_m;
_b = MQ6_H2_b;
}
else if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ6_LPG_m;
_b = MQ6_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ6_CH4_m;
_b = MQ6_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ6_CO_m;
_b = MQ6_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ6_Alcohol_m;
_b = MQ6_Alcohol_b;
}
}
else if(_type == 7)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ7_H2_m;
_b = MQ7_H2_b;
}
else if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ7_LPG_m;
_b = MQ7_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ7_CH4_m;
_b = MQ7_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ7_CO_m;
_b = MQ7_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ7_Alcohol_m;
_b = MQ7_Alcohol_b;
}
}
else if(_type == 8)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ8_H2_m;
_b = MQ8_H2_b;
}
else if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ8_LPG_m;
_b = MQ8_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ8_CH4_m;
_b = MQ8_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ8_CO_m;
_b = MQ8_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ8_Alcohol_m;
_b = MQ8_Alcohol_b;
}
}
else if(_type == 9)
{
if(_nameLectureRequeired == "LPG")
{
_nameLectureRequeired = "LPG";
_m = MQ9_LPG_m;
_b = MQ9_LPG_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ9_CH4_m;
_b = MQ9_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ9_CO_m;
_b = MQ9_CO_b;
}
}
else if(_type == 131)
{
if(_nameLectureRequeired == "NOx")
{
_nameLectureRequeired = "NOx";
_m = MQ131_NOx_m;
_b = MQ131_NOx_b;
}
else if(_nameLectureRequeired == "CL2")
{
_nameLectureRequeired = "CL2";
_m = MQ131_CL2_m;
_b = MQ131_CL2_b;
}
else if(_nameLectureRequeired == "O3")
{
_nameLectureRequeired = "O3";
_m = MQ131_O3_m;
_b = MQ131_O3_b;
}
}
else if(_type == 135)
{
if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ135_CO_m;
_b = MQ135_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ135_Alcohol_m;
_b = MQ135_Alcohol_b;
}
else if(_nameLectureRequeired == "CO2")
{
_nameLectureRequeired = "CO2";
_m = MQ135_CO2_m;
_b = MQ135_CO2_b;
}
else if(_nameLectureRequeired == "Tolueno")
{
_nameLectureRequeired = "Tolueno";
_m = MQ135_Tolueno_m;
_b = MQ135_Tolueno_b;
}
else if(_nameLectureRequeired == "NH4")
{
_nameLectureRequeired = "NH4";
_m = MQ135_NH4_m;
_b = MQ135_NH4_b;
}
else if(_nameLectureRequeired == "Acetona")
{
_nameLectureRequeired = "Acetona";
_m = MQ135_Acetona_m;
_b = MQ135_Acetona_b;
}
}
else if(_type == 303)
{
if(_nameLectureRequeired == "Iso_butano")
{
_nameLectureRequeired = "Iso_butano";
_m = MQ303_Iso_butano_m;
_b = MQ303_Iso_butano_b;
}
else if(_nameLectureRequeired == "Hydrogeno")
{
_nameLectureRequeired = "Hydrogeno";
_m = MQ303_Hydrogeno_m;
_b = MQ303_Hydrogeno_b;
}
else if(_nameLectureRequeired == "Ethanol")
{
_nameLectureRequeired = "Ethanol";
_m = MQ303_Ethanol_m;
_b = MQ303_Ethanol_b;
}
}
else if(_type == 309)
{
if(_nameLectureRequeired == "H2")
{
_nameLectureRequeired = "H2";
_m = MQ309_H2_m;
_b = MQ309_H2_b;
}
else if(_nameLectureRequeired == "CH4")
{
_nameLectureRequeired = "CH4";
_m = MQ309_CH4_m;
_b = MQ309_CH4_b;
}
else if(_nameLectureRequeired == "CO")
{
_nameLectureRequeired = "CO";
_m = MQ309_CO_m;
_b = MQ309_CO_b;
}
else if(_nameLectureRequeired == "Alcohol")
{
_nameLectureRequeired = "Alcohol";
_m = MQ309_Alcohol_m;
_b = MQ309_Alcohol_b;
}
}
//Serial debugging
_m = stringToDouble(_MQ[_lecturePosInArray+1]);
_b = stringToDouble(_MQ[_lecturePosInArray+2]);
//Save the name for future calls
nameLectureRequeired = _nameLectureRequeired;
}
int MQUnifiedsensor::readPPM(int m, int b) {
/**

View File

@ -60,6 +60,193 @@
/**********************Application Related Macros**********************************/
/* Gas, Value of m (Slope) and b (Cut on x axis) points */
//Values consolidated
/********************** MQ2 ******************************************************/
#define MQ2_H2_m -2.2459
#define MQ2_H2_b 2.9845
#define MQ2_LPG_m -2.2879
#define MQ2_LPG_b 2.7901
#define MQ2_CO_m -2.6208
#define MQ2_CO_b 3.6075
#define MQ2_Alcohol_m -3.1157
#define MQ2_Alcohol_b 4.5134
#define MQ2_Propane_m -2.7028
#define MQ2_Propane_b 3.5595
#define MQ2_Benzene_m -2.2879
#define MQ2_Benzene_b 2.7901
/********************** MQ3 ******************************************************/
#define MQ3_LPG_m -3.1851
#define MQ3_LPG_b 4.7048
#define MQ3_CH4_m -17.531
#define MQ3_CH4_b 28.785
#define MQ3_CO_m -4.339
#define MQ3_CO_b 6.4432
#define MQ3_Alcohol_m -1.435
#define MQ3_Alcohol_b 0.4103
#define MQ3_Benzene_m -2.7009
#define MQ3_Benzene_b 0.632
#define MQ3_Hexane_m -2.7268
#define MQ3_Hexane_b 3.6299
/********************** MQ4 ******************************************************/
#define MQ4_LPG_m -2.5818
#define MQ4_LPG_b 3.6303
#define MQ4_CH4_m 0.9873
#define MQ4_CH4_b 2.6386
#define MQ4_CO_m -5.5945
#define MQ4_CO_b 5.6693
#define MQ4_Alcohol_m -11.89
#define MQ4_Alcohol_b 9.0375
#define MQ4_smoke_m -11.189
#define MQ4_smoke_b 9.0375
/********************** MQ5 ******************************************************/
#define MQ5_H2_m -4.368
#define MQ5_H2_b 2.9667
#define MQ5_LPG_m -2.5723
#define MQ5_LPG_b 1.8943
#define MQ5_CH4_m -2.4438
#define MQ5_CH4_b 2.3044
#define MQ5_CO_m -4.8188
#define MQ5_CO_b 5.2023
#define MQ5_Alcohol_m -4.419
#define MQ5_Alcohol_b 4.8044
/********************** MQ6 ******************************************************/
#define MQ6_H2_m -3.6775
#define MQ6_H2_b 5.0286
#define MQ6_LPG_m -1.6567
#define MQ6_LPG_b 2.8775
#define MQ6_CH4_m -1
#define MQ6_CH4_b 3.301
#define MQ6_CO_m -12.791
#define MQ6_CO_b 14.523
#define MQ6_Alcohol_m -5.8057
#define MQ6_Alcohol_b 7.5292
/********************** MQ7 ******************************************************/
#define MQ7_H2_m -1.329
#define MQ7_H2_b 1.8864
#define MQ7_LPG_m -7.8626
#define MQ7_LPG_b 9.1056
#define MQ7_CH4_m -5.4878
#define MQ7_CH4_b 8.8387
#define MQ7_CO_m -1.4065
#define MQ7_CO_b 2.0162
#define MQ7_Alcohol_m -6.3219
#define MQ7_Alcohol_b 9.924
/********************** MQ8 ******************************************************/
#define MQ8_H2_m -0.7152
#define MQ8_H2_b 2.9891
#define MQ8_LPG_m -3.419
#define MQ8_LPG_b 7.3513
#define MQ8_CH4_m -7.5609
#define MQ8_CH4_b 15.243
#define MQ8_CO_m -7.0753
#define MQ8_CO_b 15.396
#define MQ8_Alcohol_m -1.7459
#define MQ8_Alcohol_b 4.7575
/********************** MQ9 ******************************************************/
#define MQ9_LPG_m -2.2535
#define MQ9_LPG_b 2.9855
#define MQ9_CH4_m -1.6012
#define MQ9_CH4_b 3.1476
#define MQ9_CO_m -1.749
#define MQ9_CO_b 2.827
/********************** MQ131 ******************************************************/
#define MQ131_NOx_m -2.7245
#define MQ131_NOx_b 3.3004
#define MQ131_CL2_m -1.0333
#define MQ131_CL2_b 1.7117
#define MQ131_O3_m -1.2037
#define MQ131_O3_b 1.6455
/********************** MQ135 ******************************************************/
#define MQ135_CO_m -2.7268
#define MQ135_CO_b 2.301
#define MQ135_Alcohol_m -2.8608
#define MQ135_Alcohol_b 1.8627
#define MQ135_CO2_m -3.2819
#define MQ135_CO2_b 1.9903
#define MQ135_Tolueno_m -5.7015
#define MQ135_Tolueno_b 1.1612
#define MQ135_NH4_m -2.2119
#define MQ135_NH4_b 2.0473
#define MQ135_Acetona_m -5.9682
#define MQ135_Acetona_b 1.0175
/********************** MQ303 ******************************************************/
#define MQ303_Iso_butano_m -2.3543
#define MQ303_Iso_butano_b 1.144
#define MQ303_Hydrogeno_m -2.4338
#define MQ303_Hydrogeno_b 0.7558
#define MQ303_Ethanol_m -2.5597
#define MQ303_Ethanol_b 0.4436
/********************** MQ309 ******************************************************/
#define MQ309_H2_m -2.1311
#define MQ309_H2_b 3.0886
#define MQ309_CH4_m -1.6554
#define MQ309_CH4_b 2.985
#define MQ309_CO_m -4.7623
#define MQ309_CO_b 6.7413
#define MQ309_Alcohol_m -3.7686
#define MQ309_Alcohol_b 5.6744
/*
const String _MQ2[18] = {"H2","-2.2459","2.9845","LPG","-2.2879","2.7901","CO","-2.6208","3.6075","Alcohol","-3.1157","4.5134","Propane","-2.7028","3.5595","Benzene","-2.2879","2.7901"};
const String _MQ3[18] = {"LPG","-3.1851","4.7048","CH4","-17.531","28.785","CO","-4.339","6.4432","Alcohol","-1.435","0.4103","Benzene","-2.7009","0.632","Hexane","-2.7268","3.6299"};
const String _MQ4[15] = {"LPG","-2.5818","3.6303","CH4","0.9873","2.6386","CO","-5.5945","5.6693","Alcohol","-11.89","9.0375","smoke","-11.189","9.0375"};
@ -72,6 +259,7 @@ const String _MQ131[9] = {"Nox","-2.7245","3.3004","CL2","-1.0333","1.7117","O3"
const String _MQ135[18] = {"CO","-2.7268","2.301","Alcohol","-2.8608","1.8627","CO2","-3.2819","1.9903","Tolueno","-5.7015","1.1612","NH4","-2.2119","2.0473","Acetona","-5.9682","1.0175"};
const String _MQ303A[9] = {"Iso-butano","-2.3543","1.144","Hydrogeno","-2.4338","0.7558","Ethanol","-2.5597","0.4436"};
const String _MQ309A[12] = {"H2","-2.1311","3.0886","CH4","-1.6554","2.985","CO","-4.7623","6.7413","Alcohol","-3.7686","5.6744"};
*/
class MQUnifiedsensor
{
@ -97,7 +285,7 @@ class MQUnifiedsensor
private:
/************************Private vars************************************/
int _pin, _type, _R0, _lecturePosInArray;
String _MQ[19], _nameLectureRequeired;
String _nameLectureRequeired;
int _VOLT_RESOLUTION = 5.0; // if 3.3v use 3.3
int _RLValue = 10; //Value in KiloOhms
int _ratioInCleanAir, _PPM, _sensor_volt;