Comparison of multiple SCD30 CO₂ sensor

PCB with eight sensors

PCB with eight sensors

Building a custom CO₂ sensor has become a popular hobby project in the last weeks due to the COVID-19 pandemic. For that reason I ordered multiple Sensirion SCD30 CO₂ sensors. Sensirion claims an accuracy of ± (30 ppm + 3% MV) at 25 °C and the sensor supports an Automatic Self-Calibration (ASC) (see section 1.4.6 of datasheet).

As I noticed quite some difference between measurements of different sensors, I was curious about the accuracy and self-calibration. Therefore I build a custom PCB, which hosts eight sensors in vicinity, a Bosch BMP280 pressure sensor for pressure calibration, a I2C multiplexer and an ESP32 for low-level communication with the sensors.

The software on the ESP32 initialises all sensors to work with a measurement interval of 15 s, a temperature offset of 1 °C, and activated automatic self-calibration. Every 15 s it queries the current pressure from the BMP280 and updates the pressure values in the SCD30 sensors if ambient pressure has changed. It also prints out all measurement values over a virtual serial port on USB.

Raspberry Pi with PCB

Raspberry Pi with PCB

To log the data for a longer time period I connected the setup with a Raspberry Pi and let it run for multiple weeks. The setup is located on the windowsill of my home office working room. The window is regularly opened.

Initially the sensors reported quite some different CO₂ concentrations, but over time the all agreed to almost the same CO₂ concentration. The following charts show the CO₂ concentration and the difference of each sensors to the average CO₂ concentration of all sensors over the period of about a month.

CO₂ concentration

CO₂ concentration

Difference to average CO₂ concentration

Difference to average CO₂ concentration

If you want to experiment with the data yourself, you can find the raw data here. Each lines consistent of time, pressure in mbar, temperature in °C measured by BMP280, and then eight triples of CO₂ concentration in ppm, temperature in °C, humidity in %RH. Lines starting with # should be ignored.

This entry was posted in General by twam. Bookmark the permalink.

About the author

My name is Tobias Müller. I'm interested in com­puters, physics, elec­tronics and photo­graphy. more …

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.