3 ms·
+1 for Sensirion's SCD30 [0], or even better when it comes out, SCD40. I've tested a lot of different sensors and the SCD30 is more expensive than the Chinese
by throwaway9d0291 7y ago
+1 for Sensirion's SCD30 [0], or even better when it comes out, SCD40.
I've tested a lot of different sensors and the SCD30 is more expensive than the Chinese sensors but in my experience it's much more accurate. The problem with all of these sensors is calibration. They naturally drift over time so you need some way to compensate for that. There are a few common approaches:
- Assume that every single day, the sensor is completely immersed in fresh air at some point - this is the way the MH-Z19 series of sensors works. It can make sense in business HVAC systems where it's common to do a fresh air purge every 24h but in a residential environment it's unreliable because there's no guarantee that a room will return to fresh air levels of CO2 (e.g. if a room only has 3-4h unoccupied and the windows aren't open, it might not return to 400ppm). To be clear, this isn't a problem unique to the Chinese sensors. There are also expensive sensors from major and reputable manufacturers that act this way, again, because it's common in commercial HVAC systems to do a daily fresh-air purge.
- The above but a bit more intelligent - this is the SCD30's method: it looks at the previous 7 days of data and only if there were at least 5 days where the baselines are within 50ppm of each other, treats the average of those baselines as the fresh air concentration. This makes it fantastic for residential applications. Even if your room's CO2 levels don't return to 400ppm every day, as long as they don't consistently return to another baseline, the auto-calibration cycle won't run and mess up your data.
- Manually do a baseline calibration every few months: make the user take the sensor outside into fresh air (or vent a building with fresh air) and tell the sensor "the CO2 concentration right now is 400ppm" - this is the only way the MH-Z19 and similar sensors can really be made anything close to accurate.
Also, make sure to avoid anything other than NDIR sensors. There are a lot of "eCO2" sensors that give you estimated CO2 levels based on VOCs, which always results in garbage readings.
Finally, you can usually buy the SCD30 very easily. It's routinely stocked by electronic component distributors so you can just look it up in OctoPart[1]. Make sure to avoid the eval kits though.
[0]: https://www.sensirion.com/en/environmental-sensors/carbon-dioxide-sensors/carbon-dioxide-sensors-co2/ https://www.sensirion.com/en/environmental-sensors/carbon-di...
[1]: https://octopart.com/search?q=Sensirion+SCD30¤cy=USD&specs=0 https://octopart.com/search?q=Sensirion+SCD30¤cy=USD&s...
- toasted_flakes 7y ago> it looks at the previous 7 days of data and only if there were at least 5 days where the baselines are within 50ppm of each other, treats the average of those baselines as the fresh air concentration. Is that documented anywhere? I couldn't figure out why mine is reading garbage, it could be that it didn't see fresh air every day for a full week
- lorenzhs 7y agoIt's mentioned in the data sheet: https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.5_CO2/Sensirion_CO2_Sensors_SCD30_Datasheet.pdf https://www.sensirion.com/fileadmin/user_upload/customers/se... and you can disable it: https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.5_CO2/Sensirion_CO2_Sensors_SCD30_Interface_Description.pdf https://www.sensirion.com/fileadmin/user_upload/customers/se...
- throwaway9d0291 7y agoThe main public information is page 13 of the interface description [0]. I got some more specifics from Sensirion directly when I contacted them (the 50ppm minima thing in particular). Not seeing fresh air for a week isn't enough to throw it off, it needs to not have seen fresh air for a week _and_ the baselines that it has seen have to be within 50ppm of each other. Have you allowed it to calibrate even once? It needs 7d of uninterrupted power and daily fresh air for the initial calibration. You can also do forced calibration against a known value using the process on page 14 of [0]. It can also give iffy results if the temperature/humidity values are totally out of whack, which could happen if it's put in an enclosure or something like that. You can set an offset using the instructions on page 15 of [0]. There's also altitude compensation but unless you're doing something really weird that shouldn't affect you so much. Finally, there's sensor placement [1]. It shouldn't be placed in such a way that there's a lot of air flowing over it directly (e.g. exposed to the air). If it's in front of a fan or something it's going to do weird things. I'd suggest placing it outside for a few minutes and see what the readings are. If they're far from 400ppm it definitely needs calibrating. [0]: https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.5_CO2/Sensirion_CO2_Sensors_SCD30_Interface_Description.pdf https://www.sensirion.com/fileadmin/user_upload/customers/se... [1]: https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.5_CO2/Sensirion_SCD30_Design-In_Guidelines_D1.pdf https://www.sensirion.com/fileadmin/user_upload/customers/se...