diff --git a/examples/UnitTesting/UnitTesting.ino b/examples/UnitTesting/UnitTesting.ino index 94ab895..24cf712 100644 --- a/examples/UnitTesting/UnitTesting.ino +++ b/examples/UnitTesting/UnitTesting.ino @@ -237,15 +237,24 @@ test(MQ303A_Ethanol) { MQ303A.setRegressionMethod(1); //_PPM = a*ratio^b MQ303A.setA(3.4916); MQ303A.setB(-2.432); // Configure the equation to to calculate Ethanol concentration - MQ303A.init(); + MQ303A.init(); MQ303A.setR0(10); - + int ppmExp=944; int PPM = MQ303A.setRsR0RatioGetPPM(0.1); // Send and Rs/R0 and return PPM (Using datasheet) - + assertEqual(PPM,ppmExp); } +test(MQ303A_VoltResolution) +{ + float vRes = 4.7; + MQ303A.setVoltResolution(vRes); + MQ303A.setADC(100); // provide dummy ADC value + MQ303A.readSensor(true); // dummy read for MQ303A + assertEqualFloat(MQ303A.getVoltResolution(), vRes); +} + test(MQ309A_CO) { MQ309A.setRegressionMethod(1); //_PPM = a*ratio^b diff --git a/src/MQUnifiedsensor.cpp b/src/MQUnifiedsensor.cpp index 3588f31..49bed51 100644 --- a/src/MQUnifiedsensor.cpp +++ b/src/MQUnifiedsensor.cpp @@ -152,8 +152,10 @@ float MQUnifiedsensor::validateEcuation(float ratioInput) float MQUnifiedsensor::readSensor(bool isMQ303A, float correctionFactor, bool injected) { //More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor + + float voltRes = _VOLT_RESOLUTION; // preserve global resolution if(isMQ303A) { - _VOLT_RESOLUTION = _VOLT_RESOLUTION - 0.45; //Calculations for RS using mq303a sensor look wrong #42 + voltRes = voltRes - 0.45; //Calculations for RS using mq303a sensor look wrong #42 } _RS_Calc = ((_VCC*_RL)/_sensor_volt)-_RL; //Get value of RS in a gas if(_RS_Calc < 0) _RS_Calc = 0; //No negative values accepted.