I thing there is a missing division by 1000 in the function MQ135::getRZero()
The function should look like:
float MQ135::getRZero() {
return getResistance() * pow((ATMOCO2/1000./PARA), (1./PARB));
}
Without this division, you get for RZero match to high values. I got same values by 500 and not by 76. After doing the division by 1000 I got values near 76.