Last modified 1 year
The CO2 sensor SCD30 from the manufacturer Sensirion is one of the best options when deciding on a sensor for our CO2 meter. In some cases it may be the only recommended option.
It is not only an interesting sensor for its with its ± 30 ppm ± 3% accuracy of CO2 concentration measurement, and its integrated SHT31 temperature and relative humidity sensors high precision, if not why has other characteristics that set it apart from most.
In this article you will see an analysis, along with results and impressions of my own tests, of the dual channel NDIR CO2 sensor Sensirion SCD30. I hope you find it useful and interesting.
Sensirion is a swedish manufacturer with a long experience in the manufacture of high quality CO2 sensors and this sensor has been a reference in recent years. A clear favorite when you are looking after a high quality CO2 sensor at an acceptable price.
What makes the Sensirion SCD30 sensor so special?
I have been recommending several good quality CO2 sensors on the eMariete blog for some time but the SCD30 has a feature that makes it different from the others: it is a "double channel" sensor.
Later I will tell you what are the advantages that a dual channel NDIR sensor brings, when should it be used and even in what conditions is it practically mandatory use it, but I'm going to start by giving you a rough overview of how these sensors work.
How does an NDIR CO2 sensor work?
In the NDIR sensors that we usually use (the single channel or single channel), the operation is based on the absorption that CO2 molecules suppose over an infrared beam.
In an NDIR sensor there is an infrared emitter and an infrared detecting sensor. The more CO2 there is between the infrared emitter and the infrared detecting sensor, the less infrared the sensor detects.
To achieve this, a narrow band light (or a broad band accompanied by a filter) is emitted in an almost completely closed measurement chamber that matches the wavelengths that are absorbed by CO2 molecules.
CO2 molecules in the measurement chamber absorb a part of the radiated light, while other molecules do not contribute to absorption due to their wavelength.
The more CO2 molecules in the measuring chamber, the greater the energy absorbed.
And how does a dual channel NDIR CO2 sensor work?
A Dual Channel NDIR sensor is very similar. The main difference is that there are two air chambers and two infrared sensors.
The first chamber, let's call it chamber 1, it is exactly the same as the previous, traditional, single chamber sensor, and it is where the measurement of the CO2 concentration in the air surrounding the sensor is made.
The difference is in the second chamber, or chamber 2: The second chamber is filled with a gas that has been stable since its manufacture, a gas that does not change and whose infrared absorption properties are known. By analyzing the subtle differences in the measurement results of that gas, in that chamber 2, the sensor firmware can calculate how much the measurements have deviated from what they should be and can apply a correction on the results measured in chamber 1.
This means that even if the lamp ages or the filter loses its "Spectrographic center" due to the passage of time, humidity, or other variables, the sensor firmware will be able to correct it in real time.
This configuration of two cameras and two infrared sensors is what the Sensirion SCD30 uses. Different manufacturers use different technologies for the construction of their dual channel NDIR sensors.
So what are the advantages of a dual channel NDIR CO2 sensor?
The great advantage of this technology is that it allows us to use an NDIR sensor in those situations where automatic calibration of a single channel sensor would fail; this is in situations where the air does not periodically drop to 400 ppm.
Below, when I talk to you about calibration, you will see that for automatic calibration to work correctly, it is essential that the sensor is exposed to air with a concentration of about 400 ppm (that of clean outdoor air) periodically. The technology dual channel frees us from this requirement.
Is this an advantage for everyone? No. But it certainly is (and a lot) when we need to install a meter in a place where the concentration of CO2 in the air never drops to outside levels (400 ppm approx).
And can't I just use a single channel sensor in those cases? Yes. Yes, you can, but it will gradually decalibrate and you will end up seeing a reading, in a few months, well below the real one.
Summarizing: Are you going to use the CO2 meter in a greenhouse? Dual channel is almost essential. In a hospital? Dual channel is almost essential. In a shop open 24 hours? Dual channel is almost essential…. you get it ... in the section of calibration, below, we will talk more about it ...
Sensirion SCD30 Features
Although, if you are looking for the technical characteristics of the sensor, it is best to look at the manufacturer's characteristics documents,Here are some of them that I think may be the ones that interest you the most.
|CO Sensor Specifications2|
|CO measurement range2||0 - 40,000 ppm|
|Accuracy||± (30 ppm + 3% MV)|
(25 ° C, 400 - 10'000 ppm)
|Temperature stability||2.5 ppm / ° C (0-50 ° C)|
|Response time (t63)||20 s|
|Humidity Sensor Specifications|
|Relative humidity measuring range||0 - 100 % HR|
|Typical accuracy||± 3% HR (0-100% HR)|
|Response time (t63)||: 1|
|Temperature sensor specifications|
|Temperature measuring range||-40 ° C - 70 ° C|
|Typical accuracy (° C)||± (0.4 ° C + 0.023 x (T [° C] - 25 ° C))|
|Repeatability (° C)||0.1 ° C|
|Response time (t63)||> 10 s|
|Supply voltage||3.3 - 5.5 V|
|Average current measurement rate @ 2s||19 mA|
|Current max.||75 mA|
If you want to know more, you can download here the SCD30 datasheet.
Where to buy the Sensirion SCD30 and how much does it cost?
My recommendation is that you buy the SCD on AliExpressEspecially if you are a hobbyist and you are going to build your CO2 meter as a hobby.
The SCD30 sensor in an official distributor such as Mouser, costs approximately € 55. This same sensor, as you can see in this link: Sensirion SCD30 on AliExpress (the same link where I bought it and it took me only 7 days to arrive), it costs about € 35 including VAT.
Quite a few eMariete users have bought it from the AliExpress link that I just gave you and everyone has received it in a timely manner.
As with everything, and being an item that is not cheap, I recommend that you be careful in where you buy it and if possible someone will give you direct references that you have bought it there and it has gone well.
Buying in AliExpress is usually safe but there are cases in which you can get dizzy, have you waiting, send you what is not, etc.
Do not trust much of the opinions on these portals either. I suppose you already know what happened to Amazon reviews and, for me, the reviews are no longer reliable (not even on prestigious sites, although it may not be your fault, as it seems to have been the case with Amazon).
Sensirion SCD30 programming, documentation and libraries available
One very good thing about this manufacturer, especially when compared to other CO2 sensor manufacturers, is the large amount of documentation they provide, as well as libraries and programming examples for multiple platforms.
The Sensirion SCD30 sensor communicates with the outside via an I2C or UART BUS.
There are several libraries, which support all major microcontrollers (Arduino, ESP8266, ESP32, STM32, and many others) that make it very easy to use.
I tell you that the main libraries, in some cases with first-hand experience, since I have used them in projects like this:
The bookstore Seed SCD30 by SeedStudio:
I don't like it and I don't recommend it. It is very limited. It doesn't even allow for a forced calibration. I have used it in the project "CO2 meter on your mobile with ESP32 and Sensirion SCD30 sensor [BASIC VERSION]" because it is the one that Sensirion had used to create that project, and I have stayed true to it.
The bookstore SparkFun SCD30 Arduino Library:
I like this bookstore a lot more. I have used it, among others, in the project «CO2 meter on your mobile with ESP32 and Sensirion SCD30 sensor [ADVANCED VERSION]» and it has worked very well. Easy to use, well written, well documented and I have not missed any commands.
The bookstore Adafruit SCD30:
I have not used this library but it looks good and seems well written, documented and easy to use.
The bookstore CanAirIO Sensorlib:
This library has the advantage that it supports multiple sensors in a single library and has some very interesting advanced options. I have not used it until now because I have not had the need but I will.
Sensirion SCD30 Commands
This sensor has the following commands available:
- Activation of continuous measurement with optional ambient pressure compensation
- Stop continuous measurement
- Set the measurement interval
- Get data ready status
- Reading the measurement
- Activate and deactivate continuous calculation of the reference value for automatic self-calibration (ASC)
- Set external reference value for forced recalibration (FRC)
- Adjust temperature compensation for built-in RH / T sensor
- Altitude compensation
- Read firmware version
- Soft reset
I leave you here a link to the document with the SCD30 communication protocol in case you want to know more.
Continuous measurement mode
Continuous measurement mode (only mode supported by this sensor) assumes that the sensor is working permanently and provide us with an updated measurement with the CO2 concentration every 2 seconds (optionally also temperature and humidity in the same reading).
We just have to send the order to the sensor "Activates continuous measurement" to start working and every 2 seconds we can ask you for a new measurement, without the need to do anything else on our part.
We can change the measurement interval of the SCD30 between 2 and 1800 seconds, by sending the corresponding command, which will reduce the sensor's consumption at the cost of a slower response time.
The measurement interval of the SCD30 (sampling interval)
The SCD30, unlike most "normal" CO2 sensors, allows you to change the interval in which it takes measurements.
By default (as it comes from the factory) the SCD30 performs a CO2 measurement every 2 seconds but it is possible to change this value between 1 and 1800 seconds to adapt it to the needs of each use case.
The most interesting thing about reducing the measurement interval of the SCD30 is that it allows us reduce the consumption of the SCD30 by up to a third, which may be critical to your use with batteries or batteries.
Of course, reduce the measurement interval and therefore the electricity consumption it's not free, is done at the expense of increase sensor response time.
Another side effect of reducing the measurement interval is that it reduces the accuracy of the sensor and it is necessary to recalibrate it with the new measuring range.
The SCD30 CO2 Sensor Low Power Mode
The SCD30 is not an ultra low consumption sensor like the Senseair Sunrise S11 or the Cubic CM1106SL-N.
To put you in the situation: With the default measurement interval of 2 seconds, the consumption is about 19mA and the response time of about 10 seconds, [in preparation, to be continued ...]
Elevation / Atmospheric Pressure Compensation
Differences in height above sea level (or what is the same, the differences in atmospheric pressure) have an effect on CO2 concentration measurements.
At higher pressure, air is compressed, molecules are compressed, everything is compressed ... this means that more or less CO2 molecules can fit in the measuring chamber depending on the atmospheric pressure.
To compensate for these variations, the SCD30 has a couple of aids:
With the first one we can simply configure the altitude in meters above sea level to which the meter is located and it will internally take care of making the necessary adjustments to compensate for it.
The second allows us to provide the sensor with the current atmospheric pressure continuously (we can do when we want, every minute, every hour, when there is a change ...), in this way the SCD30 will make the compensation automatically.
Logically, these two possibilities are excluding and, if we use one, the other is canceled.
Temperature sensor compensation
Although the temperature sensor of the SCD30 is highly accurate (± (0.4 ° C + 0.023 x (T [° C] - 25 ° C)), which is a very good precision) the heat generated by the electronic components of the sensor itself, and the attached circuitry that makes up the meter, can cause differences between temperature read by the sensor and the surrounding air temperature.
To solve this problem, the SCD30 has a temperature compensation from what we can tell you the difference, or offset, with the real temperature and he himself will be in charge of compensating the temperature from that moment on.
The idea is that, if we know that the thermal distribution of our concrete assembly assumes that the sensor reads 1.8ºC above, we communicate it to the sensor so that it can do its compensation work.
Just for clarification, this temperature compensation has no no effect on CO2 measurement.
In addition to this, I must say, for the information to be complete, that the sensor also internally performs temperature compensation to calculate the CO2 concentration, although it has nothing to do with this compensation of the temperature sensor that I just told you about.
Sensirion SCD30 CO2 Sensor Calibration
NDIR sensors like the SCD30 are very high precision optical instruments and things like the aging of any of its components or simply the mechanical stress that your optical cavity during storage, transportation and operation may affect its accuracy.
For this reason, it is important to understand the need for calibration of this type of sensors.
This sensor has two calibration modes: ASC (automatic self-calibration, or automatic self-calibration) and FRC (forced re-calibration, or forced / manual recalibration) to maintain the accuracy of your measurements.
The Sensirion SCD30 CO2 sensor features an automatic calibration system, called by Sensirion Automatic Self-Calibration (ASC), and it works quite well.
Its operation is as follows:
Since the natural CO2 concentration in the atmosphere is approximately 400 ppm (actually slightly less than 420 ppm on average in 2021), when ASC is enabled, the sensor assumes that, over a period of approximately 7 days, the lowest CO2 concentration it finds will be equivalent to 400 ppm.
This means that in a well-ventilated room with clean air at some point in the seven-day period, the lowest measurement will be around 400 ppm and the sensor will assume that concentration (whatever it is) as the zero point, or 400 ppm.
In other words, the sensor will assume that the lowest measurement in each 7-day period will be 400 ppm.
Yes, I have explained the same thing in three different ways but it is necessary to understand it well because that means that:
You cannot use automatic calibration if you are going to use the sensor in A greenhouseFor example, since the greenhouse air will never drop below 400 ppm, not even in a place where there is always a human presence, such as an airport, a hospital and so many places that are permanently open.
For the SCD30 automatic calibration procedure to work well, the following must be followed:
- The SCD30 should be regularly exposed to fresh air with a concentration of approximately 400 ppm of CO2.
- The SCD30 must run continuously (without being turned off) for the automatic calibration cycle to complete.
- Although, we generally talk about the sensor taking 7 days to calibrate, to be precise, what you need are 7 good measurements separated by at least 18 hours (that is, approximately 5 days).
This is a very convenient way to keep the sensor calibrated, using clean air as a reference value and automating the process.
The Sensirion SCD30 CO2 sensor allows manual calibration so you don't have to wait those seven days for it to calibrate automatically, although not all projects have this feature implemented.
I have prepared a special firmware that is easy to use and install on an ESP32 in case you want to calibrate the sensor manually (you have it in the tutorial CO2 meter on your mobile with ESP32 and Sensirion SCD30 sensor).
This firmware, which is only used to calibrate the SCD30 sensor at 415 ppm, does the following:
- When you turn it on, it will wait five minutes for the sensor to stabilize, during which the LED on the board will be flashing every second.
- After five minutes it will calibrate the sensor and, once calibrated, it will leave the LED on permanently.
The only thing you have to do to calibrate the sensor is: put the meter in a place with clean air (outside a window, for example), turn it on, wait five minutes for the LED to stay on and that's it. The sensor will be calibrated at 415 ppm.
If you want to know more about the calibration of the SCD30, the following Sensirion document (in English) will be very interesting: Field calibration for SCD30.
An advice: The SCD30 is very sensitive to winds and breezes (all NDIR sensors, to a lesser or greater extent) so it is important that when taking it outside to calibrate it do not give much air. Even a mild breeze can cause unstable concentration readings and affect calibration.
Handling and mounting the Sensirion SCD30 sensor
The SCD30 is a delicate precision instrument And as such there are a few things you have to know before handling and installing it.
Some things are very important and some are less. Next I am going to tell you what seems really important to me (for the rest, I leave you a guide, written by Sensirion, below).
[in preparation, meanwhile consult the guide Handling and Assembly Guide for SCD30, If you want to know more]
As I mentioned before, Sensirion takes great care of its documentation and has even published a guide with useful information, tips and recommendations for the correct handling and physical installation of the SCD30 sensor. You can find it here: Handling and Assembly Guide for SCD30
My experience with the Sensirion SCD30
After a few months working with the Sensirion SCD30, I must say that It is a sensor that I really like and that I would recommend without hesitation.
The truth is that the sensor has been tremendously stable in its measurements, departing very little from my reference sensor, the Senseair S8 LP that I have been using for months.
I have not noticed that it is too sensitive to drafts (beware, normal drafts, inside a room) unlike other sensors that I have tried. If it is to the air currents that may be outdoors, if it is a sensor it is bare (without box).
Sensirion claims the SCD30 is factory calibrated (although it recommends calibrating it upon receipt or, ideally, after it is mounted in its final place to correct any mechanical stress it may have suffered) my sensor did not come well calibrated and it measured well above normal.
Although I have done some quick tests with the air pressure compensation I have not seen it reflected in the results. I will have to do more tests.
I would have liked to put some graphs comparing your measurements with those of other sensors but, unfortunately, I have lost that data. Do not worry, I will capture them again and you will soon be able to find here comparative graphs of measurements of different sensors, commented, as always.
For the moment I leave you this one, of a period of a few hours, in which you can see the readings of the SCD30 together with a Senseair S8 LP and a Senseair Sunrise S11.
I haven't done extensive consumer testing of the sensor either, just a few quick tests and it seems pretty close to what Sensirion indicates. I promise to do more tests and put the results here.
In short: Provides stable measurements, have a relatively low consumption (which is also adjustable, something that not all sensors allow) and its automatic calibration works very well in the long term, avoiding having to calibrate the sensor manually.
Without a doubt the echo of being dual channel improves long term stability and it ensures that the calibration is maintained (especially interesting in cases such as greenhouses, using manual calibration).
As negative points, I would point out that it is a somewhat large sensor (although quite fine), which can be a limitation physical in some montages, and its price, somewhat higher than others (approximately € 10 more than the Senseair S8, for example).
For use in environments where automatic calibration cannot be used and the CO2 meter has to be installed permanently or for long periods, the SCD30 would be my first option, since being a dual channel sensor it gives an extra stability to the manual calibration.
If you want to make sure you maintain a correct calibration for long periods of time, it would also be one of the first options to consider.
If what you want is a normal, high-quality sensor for a normal meter, in a normal environment, both this and the Senseair S8 would be completely recommended, considering that the SCD30 is more expensive than the Senseair S8 but includes sensors of quality temperature and relative humidity, which, if needed, you would save, so the price difference is not so great.
I do not want to stop commenting on something that I have not talked about in the article, and that is that the SCD30 works within a wide voltage range, between 3.3 and 5.5V, which in some cases can be decisive, especially if we want the meter to work with batteries (the vast majority of NDIR sensors normal they only work at 5V).
Finally, the physical format, which in most cases will not be decisive. The SCD30 is larger than the usual NDIR sensors with which we makers usually make our projects, but it is also quite finest.
If you want more information about this sensor, it is best to check the website of Sensirion. It is a manufacturer that take good care of your documentation and you will probably find anything you are looking for.
By the way, if you want to see more Sensirion CO2 sensors, you have, in this blog, this article about the tiny sensors (little more than half a cubic centimeter) SCD40 and SCD41 that may be interesting to you:
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?
1 thought on “Sensor de CO2 NDIR Sensirion SCD30 dual-channel”
Minimum measure value is 400 PPM according to spec not 0PPM.
How bad is it between 0-400PPM not usable?