Early on in the pandemic when I started working at home, I became very cognizant about the impact of CO2 and built a little project with a microcontroller and the MHZ-19B CO2 sensor. Calibrating the sensor is an ongoing challenge and while I have 18 months of data, I'm still not 100% confident about the accuracy of the data at any given time.
Still...I literally can feel when the CO2 level is above 800 - 1000ppm and it isn't always as easy as opening a window to counteract. There are certain conditions - maybe the barometric pressure or temperature gradient, but sometimes forced ventilation is necessary to get into the "comfortable" 400-600ppm range.
When I posted my project online I got the not-unexpected feedback that the sensor was hard to calibrate. I don't care about 400 vs. 600 ppm. I do care about 600 ppm vs. 1600 ppm.
If that's the case, I've found that the quality of the measurements fare better when there's a linear regulator supplying the power. I bought some LM7805s off DigiKey and they should arrive sometime soon, ping me if you want to know how that experiment went.
The temperature graph is pretty easy to understand as you see the A/C kick on twice during the day. The CO2 level is maybe not as obvious but I can see when I was in this room and when I closed the window when I was leaving.
As another poster pointed out, with automatic background calibration and opening the windows daily it doesn't get too out of whack.
Out of curiosity, do you have any more details on how you built yours, I'm curious to see how you have done things differently from mine. :-)
- Make sure auto-calibration is disabled and manually calibrate the sensor once a year or so by taking it out into fresh air and running its fresh-air calibration routine.
- Leave auto-calibration enabled and make sure that the sensor is exposed directly to fresh air for at least an hour every single day.
These sensors are first and foremost designed for use in HVAC systems in commercial buildings, which usually (always?) have an overnight fresh-air purge, so to keep them calibrated, the manufacturers just assume the sensor will always see fresh air at least once a day calibrate them based on that assumption. In a residential environment, that usually doesn't work.
And FWIW, I've run a bunch of Sensirion SCD30 sensors for a few months and they worked quite well, with auto-calibration disabled. They're supported by ESPHome as well.
Sensirion also recently released their SCD4x sensors [0] which measure CO2 with some kind of black magic [1] instead of the usual NDIR. The coolest thing is that the sensor is relatively tiny and built for SMD assembly.
[0]: https://www.sensirion.com/en/environmental-sensors/carbon-di...
[1]: https://www.sensirion.com/en/about-us/company/pasensr-techno...
My personal experience is that CO2 levels above 1000 ppm are easily noticeable once you can correlate how you feel with a measurable value.