CO2 Monitor Readings and Altitude

After this conversation, I wanted to take a bit more of a look at altitude and its impact of carbon dioxide monitors.

I recently was in Nha Trang, Vietnam (right on the coast and barely above sea level) and decided to calibrate all of my CO2 monitors there. Today, I moved to Dalat, a city that is 1500 metres above sea level (see images below).

Instantly, I’ve begun to see massively varied readings between my CO2 monitors, which were, as of yesterday, reading almost exactly the same concentration. I will provide more graphs and comparisons soon, but now my Aranet4 (altitude-compensated) is reading 300 ppm more than my SCD30 device (not altitude-compensated). I will be doing a lot more comparisons in the next few days and will provide the results here!

@Guilherme, this is far from scientific, but I think it may interest you. I’ve already noticed a massive difference between my devices (more than the document here would seem to indicate). I think there may also be some other factors at play.

Hi @Ethan , thanks for sharing, this is very interesting!

So according to Senseair, their sensors would expect +1.6% per kPA deviation from normal pressure (sea level). Although SCD30 is rather manufactured by Sensirion, I thought it could be an interesting exercise to check if the deviation matches - because likely it’s the one implemented in the Aranet device (Senseair Sunrise sensor)

I’m considering this air pressure calculator (first one I found online): Air Pressure at Altitude Calculator , which yields 84355.94 Pa at 1519.3 m (default temperature of 15ºC, which likely is not the one you have there though). Assuming the sea level air pressure is 101325 Pa, we therefore retrieve ~17kPA deviation (I’m computing deviation as simple subtraction here).

Based on Senseair formula, we would then expect 27.2% correction factor to be applied on the reading from SCD30. Would this explain the 300 ppm deviation between devices you observed? I think if you observed 1100 ppm with SCD30 and 1400 ppm with Aranet, then the 27.2% factor would fit.

Alternatively, there is also this other source (https://sstsensing.com/wp-content/uploads/2021/05/AN001-Pressure-Compensating-of-a-CO2-Sensor.pdf) that uses the pressure in mBar (100 Pa) , with the formula below:
image
If I’m not mistaken, this would then yield a correction factor of 20% (then the 300 ppm difference would rather match if the SCD30 measured 1500 ppm.

Whereas finally the source you mentioned (https://www.bapihvac.com/wp-content/uploads/2011/04/Altitude_Temperature_CO2_ALC.pdf) would likely lead (assuming no difference in temperature) to similar 20% correction factor.

So I’m now not exactly sure why Senseair rather states the deviation to be 1.6% per kPA difference - or whether I’m actually misunderstanding that definition herein.

Anyhow, I’m indeed curious to see more numbers from your experiments, as I’m as of now not exactly sure what formula I should use to try to correct my AirGradient CO2 readings either :slight_smile:

In all my assumptions above I have disregarded the temperature. Do you think that could potentially explain why you’re seeing more differences than expected?

Additionally, I also wonder whether relative humidity could also play a role. This week I found this paper (paper1) showing that, at constant temperature and air pressure, they observed difference in CO2 concentration output due to relative humidity changes. But this other paper (paper2) found that due to the high correlation of temperature and humidity in their experiments, using the temperature correction alone would be enough.

I am still working on anything more concrete, but everything you’ve stated appears correct so far! The Aranet says the air pressure is 848 hPA (84,800 PA - very close to your estimate), and the current temperature is around 25ºC. Since it’s too much to look at temperature and RH at the moment, I will focus entirely on air pressure for now.

I first took the monitors outside to test the ambient readings. The Aranet recorded 425ppm (about as expected. From what I can tell, I should expect 421ppm ambient readings here). On the other hand, the CO2.Click Model G (SCD30) recorded 325ppm - a 26.67% difference.

I brought them inside for a while, let the readings settle, and tried again. This time, they showed 598 and 456 - a 26.95% difference. I’m writing this now; they read 548 and 735 (29.15%). Accounting for the slight differences in readings as they aren’t entirely synced and the fact that they inherently have some deviation, the 27.2% number looks pretty accurate. It seems to apply better than the 20% correction factor of the second source you mentioned.

I definitely think temperature and/or RH play a role here, too, but I will leave that for once I have more data. Unfortunately, I only have one Aranet4 on me right now, so I don’t have a good sample size, but these findings are already interesting! I also have an AirGradient ONE with me, so I will compare that in the next few days.

I next want to see the variations at higher concentrations to see if they stay consistent with the 27.2% expected deviation. I will leave the doors and windows closed tonight as I sleep to (hopefully) get some higher concentrations to compare. I will also see if I can do some graphs once I have more data. After that, I would also like to try recalibrating all devices at 1500m to see what happens!

I hope this thread will help answer your earlier question about altitude! I never would have considered it, so it’s fascinating to test and learn about. It is also a substantial advantage (for some people) of devices that use the Sunrise, Sunlight, and new S88.

As I’ve been concluding this, the concentration has increased a bit, and they’re reading as shown in the image above (29.29% difference). I’ll now read the studies you shared!

Just for comparison’s sake, these were the readings between these same two devices the other day (same calibration, but at near sea level). As you can tell, the reading frequency and intervals weren’t exactly synced, but they consistently recorded similar concentrations.

That’s really interesting, Ethan!

So based on these observations I believe we can conclude that Aranet4 (Senseair Sunrise) has enabled a compensation algorithm for air pressure that matches the 1.6% per kPA deviation as in their docs (e.g. page 15 in https://rmtplusstoragesenseair.blob.core.windows.net/docs/Market/publicerat/TDE7318.pdf).

I still do not fully understand how Senseair got to that formula for pressure dependence estimation, and even was wondering whether that is correct (due to the difference in the outcome when compared to the ideal gas formula). But I started to look it up and it seems that other manufacturers also have a similar pressure dependence stated in their specs sheets, so it might be indeed valid. Nevertheless, I will also try to write Senseair again to check if they have some technical document to better explain this factor of 1.6% per kPa deviation.

Interestingly, I’ve just exported all my data from AirGradient for the first time to also see what was the minimum CO2 value registered on my end so far. It is 372 ppm at 21.8ºC and 70% RH and recorded on my second day with the device (probably when I left the apartment ventilate quite a lot). So I think it didn’t have yet any applied any automatic calibration (which is set to use readings from 8 days).

I’ve downloaded an Altimeter app to better estimate my current altitude, which seems to be 780 m. And then used that website (Air Pressure at Altitude Calculator) to estimate the corresponding air pressure at that altitude and based on the temperature reading above, which yielded 92499.44 Pa. Again, based on the 1.6% for kPA deviation from Senseair specs, I now get 14.12% correction factor for my end. Applying that to the minimum observed CO2 level, I get: 372 ppm * 1.1412 = 424.5 ppm.

Although I’m not sure whether this is the expected outdoor CO2 value in my area, it seems to match what you observed with Aranet4 Home on your end, which might be a good sanity check. And for now I would feel comfortable on applying that correction factor in the AirGradient FW for myself.

But I’m also quite curious to hear from you if the AirGradient values on your end match those from the CO2 Click monitor (and thus have a similar deviation from Aranet4).

This seems to be correct, and it seems to fit the trends I am seeing much better than the other formula provided.

If you get a response from Senseair, I would love to know what they have to say. I can only assume the differences to the ideal gas formula are due to other considerations such as NDIR sensor and calibration characteristics.

Since I promised to provide more comparisons, here is a look at the recorded CO2 concentrations in my bedroom one night. In this particular comparison, both monitors were still using the manual calibration I performed at near sea level. The differences in readings is usually around 26 - 28%, but they reach nearly 30% at times.

I then recalibrated the AirGradient monitor at my current location (around 1500 metres) but did not touch the Aranet4. Again, I ran both monitors overnight to see the difference. Interestingly, this decreased the percentage difference between the two, and the average difference in readings between the two monitors was 16% this time.

Perhaps I am missing something entirely, but I thought that recalibrating the AirGradient at 1500 metres would solve the issue since the adjustment factor is constant, but it seems like it hasn’t. I will try recalibrating it tonight to see what happens. I would also like to recalibrate the Aranet, but not just yet, as once I do that, I can’t recalibrate it back to sea-level conditions for a month. I wonder if temperature/RH (or just temperature) is also having an impact now, as that has also changed significantly.

Yes, the CO2 Click Model G (SCD30), Model F (SCD40) and AirGradient (S8) all report similar values, with the Aranet providing significantly higher readings. This would make sense as the Sunrise is the only sensor that automatically accounts for air pressure (I believe! It’s hard to find this information). In contrast, the others have to be fed values manually.

I’m now wondering if these significant differences are also due to temperature or another variable. I will continue to test!

Hi Ethan, thanks again for sharing more numbers. These time series are great!

So it seems indeed that the correction factor (at least between AirGradient and Aranet) is consistent (with some fluctuations) with that ~27% value we observed before - at least when both kept the original sea level calibration.

Now, after you recalibrated AirGradient at the new level, I think following happens:

  • Assuming AirGradient would have had a similar outdoor value as you observed with the CO2 Click monitor, it would be 325 ppm prior calibration
  • And if we assume that Senseair S8 calibration will try to match 400 ppm value (default outdoor [CO2]), it will then result on an offset of 75 ppm
  • For all new readings of AirGradient, we should now see (x + 75 ppm), so essentially just shifting the first curve upwards (but not changing the slope)
  • If that’s true, then the correction factor now will vary depending on the current concentration you reach. For closer to outdoors concentration values, it will be approximately 25 ppm (if we consider Aranet4 was measuring 425 ppm)
  • If I try to visually identify a point on the second graph (after calibration), I see: Aranet4 at ~1475 ppm and AirGradient at ~1215 ppm. If we subtract the 75 ppm (calibration offset) from the AirGradient, we get then 1140 ppm. And the ratio between 1475 ppm and 1140 ppm results to be 1.29, thus indicating a correction factor of ~29% - similar to the CO2 click

Likely the numbers I visually got from the graph are not very precise, but they may be a ballpark estimate of the observed behavior, and thus illustrate a potential reasoning for the persistent readings gap even after calibration.

So I believe that’s in the end the bottleneck of calibration for different altitudes → the calibration tries to apply a fixed offset (x + offset) to correct the outdoor readings, whereas the needed correction is actually a multiplying factor that should change the slope (x * factor). In this case, the more we increase the concentration, the wider the gap will still be, regardless of the calibration.

And I think it’s very interesting to observe this exact behavior now with real measurements obtained from multiple devices in different altitudes! :slight_smile:

I’ve now recalibrated all of my monitors (that I have on me, meaning one Aranet, one AG ONE, and two CO2 Click devices), and I can confirm that the results are the same - except that the percentage difference might be slightly lower.

With this in mind, I think that your points below are all correct.

I would like to try feeding the air pressure values to the sensors manually now (which they all appear to support), but I need to get my hands on one of the kits from Senseair or Sensirion to do that. I’m looking into it at the moment!

This has been fascinating, and I think it’s something that isn’t mentioned enough. Some very quick research has stated that 500 million people live at an altitude above 1500 metres, and there must be many more above 800 metres as you are. It should be much more common knowledge that at these altitudes, you are getting significantly lower CO2 readings than you should be (unless you have an Aranet4 or another device with a Sunrise sensor). Since the S88 apparently addresses this, too, I think I will be buying one to test!

It’s add that Sensirion doesn’t seem to have an air pressure sensor and automatic compensation in any of its consumer-grade sensors…

1 Like

Another quick update: I’m currently reviewing the CO2 Click Model F (SCD41), and above is a graph with my findings compared to an Aranet4 Home (again, at 1500m). It’s interesting that the compensated readings read higher than the Aranet, but they’re much closer than the non-adjusted readings.

Also, I’m looking at testing a few S88s with my AirGradient devices as they’re easily swappable, so hopefully, I will have something to share on that soon, too. I also believe AG will be moving to the new S88 in the near future, so that will be great for anyone living at higher altitudes!