Altitude compensation for CO2


I’m considering purchasing an Air Gradient One for measuring air quality in my child’s bedroom during the night, and my office during the day (I work from home). I live in a city with high relative humidity throughout the year, and at 800m above sea level.

I’ve been discussing different points around this with @Ethan_AirGradient on the breathe safe air forum. Ethan has been incredibly helpful and openly addressing and explaining every single detail to me.

My latest question, which I’m now bringing here as well, is regarding an altitude compensation for the CO2 sensor readings. I learned about it on the Aranet4 Forum: Altitude compensation

Based on Ethan’s latest reply (Night air quality monitor for child respiratory issues (at high RH) - #6 by Ethan - Air Quality Monitors - BreatheSafeAir Forum) , it seems that the S8 sensor may not have such compensation available off the shelf (or at least it is not explicitly documented), whereas it states to expect deviation of 1.6% per kPA. In my case, I’m under the impression this could lead to 16% deviation then.

I would like to ask if anyone has implemented such altitude compensation for the S8 sensor, either by incorporating a barometric sensor to the device and/or by manually using the known current altitude? I tried to search in the forum with some key words (barometric, pressure, altitude, elevation) but couldn’t find it yet.

Any ideas or suggestions would be appreciated :slight_smile:

1 Like

First I’ve heard of it.

I’m not aware of the Arduino or ESPHome firmware having this compensation factored in, but with ESPHome you could add a fixed offset if it is linear, or come up with the formula to substitute in. Same would be possible with the Arduino code, although I wouldn’t know where to start with that.

Thanks for your input here. Below is an illustration extracted from the Aranet4 's sensor (Sunrise) sheet:

So it might be that the ability to add a formula, based on my location’s air pressure, could do the trick here (?)

However, I’d be curious to further understand how that would potentially interact with the offset obtained from the sensor calibration? Or would the inserted custom formula completely replace the calibration offset?

In case someone is interested to read more about it (how NDIR sensors can also be influenced by air pressure):

And below the source link for the extracted figure in my previous post (sorry I forgot to add there):

Obtained from: Sunrise | Air quality & Gas sensing technology from Senseair

I’ve reached out to Senseair to ask about such altitude compensation on the S8 sensor, below is their response:

We do not have the same airpressure/altitude function in S8 as we do on the Sunrise/Sunlight family.
We have added same type of functions on the new product S88 though.

Looking S88 up (S88 | Air quality & Gas sensing technology from Senseair), it seems to be a “refresh” of the S8 sensor, and they state the replacement should be smooth:

should you choose, transitioning from the S8 to the S88 is as smooth as possible.

Among the documents available, I can see that in the Modbus they provide the option to inform current pressure to the sensor, as shown below:

Modbus on S88:

@Achim_AirGradient , I would like to ask if you think it is potentially possible to replace the S8 with S88 in the Air Gradient One to allow for such altitude compensation as informed by the user? My gut feeling says I may still be ignoring many relevant details on this (due to my limited knowledge), thus wanted to hear your thoughts here too.

1 Like

@Guilherme this is very interesting. Thank you for sharing!

Currently we do not have immediate plans to switch away from the S8 because we first like to see new sensor modules in the market for a while to see their longer term performance.

We will look into this with our science team but my gut feeling is that in most cases it will not have much impact. The impact of the altitude is much lower in small concentrations and I believe the inherent inaccuracy of the ABC or general drift of the monitor will be larger.

For higher concentrations the CO2 is too high anyway and measures to reduce need to be taken.

I think it’s important to be very transparent and open here. Sensor modules in low cost monitors are not scientific reference instruments. There is and will always be inherent inaccuracies. The key is to get good enough information out of them to inform the users about potential health impacts or when for example to open windows etc.

Having said this, we always look into making them more accurate and our science team will look into this.

Hi @Achim_AirGradient, thank you for your further input in this discussion!

I appreciate having Air Gradient’s science team looking into this. If I can contribute with this investigation by any means, please let me know.

If not switching away from S8, I believe we might still have the alternative to implement a correction formula to mimic S88 / Sunrise behaviors while combining S8 raw readings with the end user’s informed altitude. I am not entirely sure how that interacts with the sensor calibration, but maybe Senseair could also contribute with that information.

While I appreciate both the opportunities and the challenges by low-cost sensors, I am also confident we can attempt to reduce the accuracy gap with reference instruments by incorporating such adjustments. This one in particular, if proven to be based on a multiplying factor derived from the user’s altitude, might be quite promising.

Looking forward to additional input from the science team. :slight_smile: