Trouble getting consistent readings from analog gas sensor (MQ series)

Hi everyone! I’m working on a project using the MQ-135 gas sensor to measure air quality, but I’m running into issues with inconsistent analog readings. I’m using a 10-bit ADC on an Arduino Uno and reading values every second. Even after preheating the sensor as recommended, the readings still fluctuate quite a bit in a stable environment. I’ve tried using a simple moving average to smooth it out, but it still feels noisy.

Is there a better filtering method or circuit setup to get more stable readings? Also, would switching to an external ADC with better resolution make a significant difference for this kind of sensor?

Appreciate any tips—thanks!

Are you able to put the sensor in a sealed container and then see if you still get fluctuations?

Over 24 hours of preheating is usually required, and possibly more.

Details are given in this electronic nose project, which you might find informative:

Since the MQ sensors are not calibrated, stable readings are not particularly meaningful. The sensors are intended mostly for alerting about changes in the environment.