Performing a re-calibration of the SCD-30 can help maintain accurate CO2 readings over time. Various factors can cause the SCD-30 sensor reading to drift and there are two available re-calibration options: Forced Re-Calibration (FRC) and Automatic Self-Calibration (ASC).

This Application Note from Sensirion goes into lots of detail and is worth reading:

Here we summarizes the two approaches.

Forced Re-Calibration

This is the easiest approach. The SCD-30 is placed in an environment with a known CO2 concentration. Then the FRC routine is called and this known concentration value (in ppm) is supplied. But how do you come up with that known value? That is a caveat of this approach and Sensirion (see PDF linked above) suggests three approaches:

  1. Using a separate secondary calibrated CO2 sensor to provide the value.
  2. Exposing the SCD-30 to a controlled environment with a known value.
  3. Exposing the SCD-30 to fresh outside air and using a value of 400 ppm.

However, once you have your reference value, performing a FRC is super easy. Assuming a reference CO2 concentration of 800 ppm has been determined, then with the CircuitPython library use:

scd30.forced_recalibration_reference = 800

or with the Arduino library use:

scd30.forceRecalibrationWithReference(800);

Automatic Self-Calibration

Hey, automatic! That sounds great! Set and forget, right? Well, not so fast. The ASC feature has some requirements which should be considered to determine if it is suitable for any given end use application. If the conditions can not be met, then the FRC mentioned above should be used.

  1. The SCD-30 should regularly be exposed to fresh air with CO2 concentration of 400 ppm.
  2. The SCD-30 needs to operate in continuous mode, i.e. do not power it down.
  3. The ASC needs 7 good readings separated by at least 18 hours (that's ~5 days).

See the PDF linked above for many more details. If you want to use ASC, enabling it is very simple. In CircuitPython use:

scd30.self_calibration_enabled = True

or with the Arduino library use:

scd30.selfCalibrationEnabled(true);

With either, simply use False/false to disable ASC.

FRC vs. ASC

Both the Forced Re-Calibration (FRC) and Automatic Self-Calibration (ASC) are ways of arriving at the same "Reference Value" which is then used in determining the CO2 ppm reading reported by the SCD-30. With the FRC approach, the Reference Value is specified. With the ASC approach, the Reference Value is determined algorithmically. Either one will overwrite the Reference Value from the other one. For example, running a FRC will immediately change to the new Reference Value. However, if ASC is enabled, then it may replace the Reference Value at a later time.

This guide was first published on Jan 06, 2021. It was last updated on Mar 13, 2024.

This page (Field Calibration) was last updated on Mar 08, 2024.

Text editor powered by tinymce.