SCD40 CO2 Sensor Appears to Read High CO2
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- jsegre
- Posts: 4
- Joined: Wed Jan 19, 2022 2:23 am
SCD40 CO2 Sensor Appears to Read High CO2
I have just wired up my SCD40 and found that it reads CO2ppm >900, even outside in ambient air in Oakland CA, which I would assume would be much closer to 400ppm. It also reads over 1500ppm inside my house, which seems high as well. The product spec sheet says that it is already calibrated and linearized, so I am not sure how to make my readings more accurate. Thanks for your help.
- jsegre
- Posts: 4
- Joined: Wed Jan 19, 2022 2:23 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
Additionally, I plan to use the device in a humid (greenhouse) environment and wonder if it needs to be protected from >90% humidity in some way?
- ullix
- Posts: 11
- Joined: Thu Jan 13, 2022 7:00 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
At least on the SCD30 and SCD41 you can "Force" a calibration. I had to for both, they were off by some 300 ppm. I used a MiniMon device for reference, but outside air should do as well.
As Sensirion is referring to SCD4x, I am pretty sure that this applies to this sensor as well. datasheet
See my review here: Review of USB-To-I2C Dongles as used by GeigerLog
As Sensirion is referring to SCD4x, I am pretty sure that this applies to this sensor as well. datasheet
See my review here: Review of USB-To-I2C Dongles as used by GeigerLog
- jsegre
- Posts: 4
- Joined: Wed Jan 19, 2022 2:23 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
Thank you! With your tip, I was able to find recalibration code for Arduino which seems to have worked, here:
https://github.com/Sensirion/arduino-sn ... xample.ino
Any thoughts on the other question of how or whether the sensor might need to be protected in a humid environment? I am concerned that the humidity may destroy it.
https://github.com/Sensirion/arduino-sn ... xample.ino
Any thoughts on the other question of how or whether the sensor might need to be protected in a humid environment? I am concerned that the humidity may destroy it.
- ullix
- Posts: 11
- Joined: Thu Jan 13, 2022 7:00 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
The usual limit is "non condensing". This is a bit complex with dew point and temperature. Make sure any condense water can run off, and make sure to get no droplets on the sensor,
- jsegre
- Posts: 4
- Joined: Wed Jan 19, 2022 2:23 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
The SCD40 CO2 readings reallyseem to jump around a lot. Left to itself outdoors, I get readings from 250ppm to 650ppm. What am I doing wrong?
- ullix
- Posts: 11
- Joined: Thu Jan 13, 2022 7:00 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
That is a lot! Begs the question what happens when you measure indoors? Effect of moisture?
The SCD40 results should be pretty close to my SCD41 results. I have published a review Measuring CO2 with SCD30, SCD41, and MiniMon which should give some insight into what kind of fluctuation one should expect. The changes that I do see (Fig 7) can all be explained in changes of the ventilation status.
The SCD40 results should be pretty close to my SCD41 results. I have published a review Measuring CO2 with SCD30, SCD41, and MiniMon which should give some insight into what kind of fluctuation one should expect. The changes that I do see (Fig 7) can all be explained in changes of the ventilation status.
- bprobbins
- Posts: 15
- Joined: Mon Mar 18, 2013 1:15 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
FWIW,
I was getting reports of 1500ppm regularly in (AFAIK) outside fresh air with a scd30 until I fiddled with the scd.measurement_interval (adafruit python code) and raised it from 2 to 8 secs and immediately started getting more expected reports hovering around 400 without wild fluctuations, until I breathed on it -then it went up to 534 and then dropped back to ~400.
So measurement interval seems to have a dramatic influence on my scd30, at least. Maybe the scd40-41 is similar? Perhaps the underlying code needs a tweak?
I was getting reports of 1500ppm regularly in (AFAIK) outside fresh air with a scd30 until I fiddled with the scd.measurement_interval (adafruit python code) and raised it from 2 to 8 secs and immediately started getting more expected reports hovering around 400 without wild fluctuations, until I breathed on it -then it went up to 534 and then dropped back to ~400.
So measurement interval seems to have a dramatic influence on my scd30, at least. Maybe the scd40-41 is similar? Perhaps the underlying code needs a tweak?
- ullix
- Posts: 11
- Joined: Thu Jan 13, 2022 7:00 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
bprobbins observation surely is worth reviewing; it would be a real programming oversight.
The SCD30 has a default cycle time of 2 sec, while the SCD4X has one of 5 sec. However, all devices have the command "get_data_ready_status" to check for, well, data ready.
This is what the SCD4X data-sheet says:
The SCD30 has a default cycle time of 2 sec, while the SCD4X has one of 5 sec. However, all devices have the command "get_data_ready_status" to check for, well, data ready.
This is what the SCD4X data-sheet says:
Either there are data in the buffer, and you can read them, or there aren't and any data being returned nevertheless are purely "made up".SCD4x
...
3.5.2 read_measurement
Description: read sensor output. The measurement data can only be read out once per signal update interval as the buffer is emptied upon read-out. If no data is available in the buffer, the sensor returns a NACK. To avoid a NACK response, the get_data_ready_status can be issued to check data status (see chapter 3.8.2 for further details).
- ullix
- Posts: 11
- Joined: Thu Jan 13, 2022 7:00 am
Re: SCD40 CO2 Sensor Appears to Read High CO2
I just modified my code to make it read even when the data are not ready. I get this return:
Every 3rd byte should be the crc8 of the previous two, but crc8(255, 255) = 172, and not 255. So the whole answer is qualified by the SCD41 itself as wrong.
But even if this were ignored, and 0xFFFF were taken as CO2 ppm, it would clearly not fall into the category of 400 ... 1500 ppm. Unless there is some further massaging of the data somewhere?
Code: Select all
[255, 255, 255, 255, 255, 255, 255, 255, 255]
But even if this were ignored, and 0xFFFF were taken as CO2 ppm, it would clearly not fall into the category of 400 ... 1500 ppm. Unless there is some further massaging of the data somewhere?
Please be positive and constructive with your questions and comments.