Fix Rs calculation for MQ303A

This commit is contained in:
miguel5612 2022-03-20 09:32:31 -05:00
parent 4be0a40997
commit 700d367d93
3 changed files with 6 additions and 3 deletions

View File

@ -86,7 +86,7 @@ void setup() {
void loop() {
MQ303.update(); // Update data, the arduino will be read the voltage on the analog pin
MQ303.readSensor(); // Sensor will read PPM concentration using the model and a and b values setted before or in the setup
MQ303.readSensor(true); // Sensor will read PPM concentration using the model and a and b values setted before or in the setup
MQ303.serialDebug(); // Will print the table on the serial port
delay(500); //Sampling frequency
}

View File

@ -133,9 +133,12 @@ float MQUnifiedsensor::validateEcuation(float ratioInput)
//Serial.println("Result: "); Serial.println(_PPM);
return _PPM;
}
float MQUnifiedsensor::readSensor()
float MQUnifiedsensor::readSensor(bool isMQ303A)
{
//More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor
if(isMQ303A) {
_VOLT_RESOLUTION = _VOLT_RESOLUTION - 0.45; //Calculations for RS using mq303a sensor look wrong #42
}
_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

View File

@ -31,7 +31,7 @@ class MQUnifiedsensor
//user functions
float calibrate(float ratioInCleanAir);
float readSensor();
float readSensor(bool isMQ303A = false);
float readSensorR0Rs();
float validateEcuation(float ratioInput = 0);