diff --git a/MQ135.cpp b/MQ135.cpp index 676ed31..ce6af65 100755 --- a/MQ135.cpp +++ b/MQ135.cpp @@ -40,7 +40,15 @@ MQ135::MQ135(uint8_t pin) { */ /**************************************************************************/ float MQ135::getCorrectionFactor(float t, float h) { - return CORA * t * t - CORB * t + CORC - (h-33.)*CORD; + // Linearization of the temperature dependency curve under and above 20 degree C + // below 20degC: fact = a * t * t - b * t - (h - 33) * d + // above 20degC: fact = a * t + b * h + c + // this assumes a linear dependency on humidity + if(t < 20){ + return CORA * t * t - CORB * t + CORC - (h-33.)*CORD; + } else { + return CORE * t + CORF * h + CORG; + } } /**************************************************************************/ diff --git a/MQ135.h b/MQ135.h index 22cefec..7fb03b2 100755 --- a/MQ135.h +++ b/MQ135.h @@ -34,6 +34,9 @@ v1.0 - First release #define CORB 0.02718 #define CORC 1.39538 #define CORD 0.0018 +#define CORE -0.003333333 +#define CORF -0.001923077 +#define CORG 1.130128205 /// Atmospheric CO2 level for calibration purposes #define ATMOCO2 397.13