From 964204706f5aabf9d42649342c9b29f7b64fd523 Mon Sep 17 00:00:00 2001 From: miguel5612 Date: Sun, 20 Mar 2022 09:48:02 -0500 Subject: [PATCH] Added correction factor for Rs/R0 (Ratio) --- src/MQUnifiedsensor.cpp | 3 ++- src/MQUnifiedsensor.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/MQUnifiedsensor.cpp b/src/MQUnifiedsensor.cpp index 64f4c1c..3620ede 100644 --- a/src/MQUnifiedsensor.cpp +++ b/src/MQUnifiedsensor.cpp @@ -133,7 +133,7 @@ float MQUnifiedsensor::validateEcuation(float ratioInput) //Serial.println("Result: "); Serial.println(_PPM); return _PPM; } -float MQUnifiedsensor::readSensor(bool isMQ303A) +float MQUnifiedsensor::readSensor(bool isMQ303A, float correctionFactor) { //More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor if(isMQ303A) { @@ -142,6 +142,7 @@ float MQUnifiedsensor::readSensor(bool isMQ303A) _RS_Calc = ((_VOLT_RESOLUTION*_RL)/_sensor_volt)-_RL; //Get value of RS in a gas if(_RS_Calc < 0) _RS_Calc = 0; //No negative values accepted. _ratio = _RS_Calc / this->_R0; // Get ratio RS_gas/RS_air + _ratio += correctionFactor; if(_ratio <= 0) _ratio = 0; //No negative values accepted or upper datasheet recomendation. if(_regressionMethod == 1) _PPM= _a*pow(_ratio, _b); // <- Source excel analisis https://github.com/miguel5612/MQSensorsLib_Docs/tree/master/Internal_design_documents else diff --git a/src/MQUnifiedsensor.h b/src/MQUnifiedsensor.h index b7590e7..987d540 100644 --- a/src/MQUnifiedsensor.h +++ b/src/MQUnifiedsensor.h @@ -31,7 +31,7 @@ class MQUnifiedsensor //user functions float calibrate(float ratioInCleanAir); - float readSensor(bool isMQ303A = false); + float readSensor(bool isMQ303A = false, float correctionFactor = 0.0); float readSensorR0Rs(); float validateEcuation(float ratioInput = 0);