This works acceptably if the sensor is frequently exposed to outdoor air, but in a residential environment that's not always guaranteed, particularly in winter when it's not uncommon to keep windows closed to retain heat. In these situations the sensor will consider the lowest level to be around ~400ppm, even if it's actually much higher. This, of course, scales all other readings, so a sensor might read between 400-800ppm, leading you to believe everything is fine, when the actual indoor range is 800-1600ppm.
Because the auto-calibration happens over a period of time, it can be quite difficult to determine that your sensor is misreading, and the only way to fix it is to expose it to fresh air to reset the baseline.
The best solution I found to this is a dual-NDIR sensor which measures two different light frequencies, one which is absorbed by CO2 and one that isn't. This allows the sensor to know the absolute CO2 concentration, rather than the relative CO2 concentration, and avoids the need for auto-calibration. (I believe for absolute accuracy it still needs calibration for altitude, but for consumer use this makes such a small difference to be irrelevant).
Unfortunately, when I last looked, I couldn't find any consumer-grade sensors which used dual-NDIR sensors, only more expensive and less aesthetic commercial sensors. In the end I built my own using a CDM7160 sensor connected via I2C to a ESP8266, which reports over MQTT.
Looks like that's been discontinued. [1] Any advice for folks trying to build one now?
[1] https://www.figarosensor.com/topic/2020/11/Discontinuance-of...
A sibling post[1] mentioned a sensor that is listed as being dual-NDIR so should give reliable readings, and has a USB interface, so that sounds like one possibility.
I assume 'dual-beam' is the same as dual-channel? Does the calibration technique mentioned in the manual indicate dual channel operation?
My understanding is that with single-NDIR sensors (like the MH-Z14 and 19), the auto-calibration is intended to overcome gradual particle buildup and beam degradation in the sensor chamber. While disabling it will prevent the scenario I described, you'll instead end up with gradual sensor shift as the sensor ages. I guess this could be minimised by manually calibrating the sensor outdoors on a regular basis.
Dual-NDIR sensors split a single beam into two chambers, so any degradation of the sensor beam affects both measurements, and the particle buildup in both chambers should also be approximately equal over time, so they should remain accurate over an extended period without any requirement for calibration. I built mine about 4 years ago and I do occasionally check to make sure they read ~400ppm when placed outdoors, last check was around 420ppm which suggests they're behaving reasonably well as they age.
For my purposes I don’t really care about accuracy under 50ppm, higher precision for trends is useful but as long as the measures value is accurate to within 50ppm I’m just fine for effects on a human. If I was doing research to publish an actual calibrated meter for 10x the price would be warranted but having three separate measurements agree gives me the trust I need.
I also tested the monitors by exhaling directly on them, and confirming the change in readings.
You just need an airtight container of a known volume, a source of CO2 and a maybe a fan. Put your CO2 detector inside the box, with fresh air, your CO2 source and the fan, and see if the result matches. You may need to do some calculations.
For your source of CO2, you have a few options: combustion of a known quantity of fuel, soda bottle, dry ice, acid + sodium bicarbonate,... If you want to remove CO2, you can use calcium oxyde (quicklime).
I had a semi-sophisticated device consisting of a lightweight plastic cylinder that could move up and down when filled with gas, and a way to know the volume with accuracy (single-digit milliliter error out of five liters). I had a tank of pure CO2 and an air intake, coupled with valves that let me fill the cylinder with any desired mixture of CO2 and air. I wrote an automatic program that created a calibration curve in various proportions (100ppm CO2, 200ppm CO2, ..., up to 5000ppm) and collected the sensor value.
The results of this procedure made no sense, because the sensor reading collected during the calibration, e.g. at 1000ppm, was totally different from the sensor reading in response to a 1000ppm concentration created outside the calibration loop. After several days of investigation, it turned out that the problem was that I was using tubes of some carbon-based plastic material. Somehow the CO2 mixes with the plastic and is slowly released afterwards, altering the mixture. Everything worked fine after I replaced the tubes with silicon-based silicone tubes.
Human exhaust breath contains about 5000ppm CO2, so this device is decent for measuring humans. It's less decent to measure atmospheric CO2.
Edit: looking at the datasheet, the device claims +-30ppm and 3% of reading, which I interpret as "whichever is greater". Thus, the device would be +-30ppm up to 1000ppm, and 3% of the reading above 1000ppm.
It's good to have reference instruments like chromatographs and infrared analyzers, where I could use reference gases to calibrate and verify.
OTOH very low-cost sensors could be ideally suited if well designed with accompanying electronics, but ultimate calibration would require the same expensive laboratory materials for reference.
Where you live, time of day, lay of land, all matters.
Winter (no trees or vegetation with photosynthesis), and there is naturally more local CO2.
Live deep in the country, in a forest, in the summer, when trees have loads of water and are at max output? Less CO2.
At night, more CO2, for all those trees, that greenery, is breathing and exhaling CO2, with no sun for photosynthesis.
It's variable, not static.
We have tried a number of different CO2 sensors over the years (mainly from Ali Express), and recently purchased 2 Aranet4’s. We were pleasantly surprised that they report identical readings in the same location.
Even seasonal fluctuation is just a few percent.
When I looked into this a few years ago, I couldn't find any accuracy guaranties for CO2 meters marketed for households / greenhouses.
The closest thing I could find were laboratories that could test CO2 meters in chambers with known CO2 concentrations. But IIRC the pricing for those labs was prohibitively expensive.
- There were literally no guaranteed accuracy bounds for the meters I looked at. So they could be off by 3x reality for all I know.
- Their calibration systems relied on an assumed CO2 concentration for outside air. But even if the calibration system ensured that the meter would report the right number for that CO2 concentration, there was no information about how accurate the calibrated meter would be at other CO2 concentrations. Nor information about how the meter's numbers would be off when the CO2 levels observed during calibration differed from the level assumed by the calibration logic.
These limitations might not be a problem for some applications. But they could be an issue when people want to relate their meters' readings to the numbers used in various research publications.