Overview

The SCD30 is a dual-channel Non-Dispersive Infrared (NDIR) true CO2\text{CO}_2 sensor module manufactured by Sensirion. Unlike eCO2 VOC sensors (such as SGP30 or MQ-135) that estimate carbon dioxide indirectly via proxy hydrogen/VOC gases, the SCD30 measures true atmospheric carbon dioxide molecules using infrared light absorption at 4.26 μm4.26\text{ }\mu\text{m}.

The module incorporates a dual-channel NDIR optical absorption cell (one channel for CO2\text{CO}_2 sensing, one reference channel to compensate for optical drift), an integrated Sensirion SHT31 humidity and temperature sensor, and automatic self-calibration (ASC) logic.

Quick reference

Operating Voltage (VDD)3.3 V to 5.5 V DC
Measurement Range (CO2\text{CO}_2)400 ppm to 10,000 ppm
Accuracy (CO2\text{CO}_2)±(30 ppm+3% of reading)\pm (30\text{ ppm} + 3\%\text{ of reading})
Temperature Range / Accuracy40C-40^\circ\text{C} to +70C+70^\circ\text{C} (±0.4 C\pm 0.4\text{ }^\circ\text{C} accuracy)
Relative Humidity Range / Accuracy0% to 100% RH (±3% RH\pm 3\%\text{ RH} accuracy)
Communication interfacesI2C (address 0x61, clock stretching required), Modbus over UART
Onboard Self-CalibrationAutomatic Self-Calibration (ASC) & Forced Recalibration (FRC)
Average Supply Current19 mA (2-second interval) / 75 mA peak during IR lamp pulse

Pinout

Standard 7-Pin Header Interface

PinNameTypeDescription
1VDDPower InputSupply voltage (+3.3 V to +5.5 V DC)
2GNDPowerGround (0 V)
3TX / SCLDigital I/OUART TX (Modbus mode) / I2C Serial Clock SCL (I2C mode)
4RX / SDADigital I/OUART RX (Modbus mode) / I2C Serial Data SDA (I2C mode)
5RDDYDigital OutputData Ready pin (HIGH when new sample measurement is ready)
6PWMDigital OutputPWM output pin (proportional to CO2 concentration)
7SELDigital InputInterface Select (LOW or Unconnected = I2C mode, HIGH = Modbus UART mode)

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVDDV_{DD}3.35.05.5VDC
Peak CurrentIPEAKI_{PEAK}7595mAIR optical lamp pulse
Average Current (2s rate)IAVGI_{AVG}1925mADefault 2-second interval
Repeatability (CO2\text{CO}_2)REPREP±10\pm 10ppm
Response Time (t63%t_{63\%})τ\tau20sNatural convection
Temperature CompensationTCOMPT_{COMP}OnboardAutomatic SHT31 compensation

Communication Registers (I2C Address 0x61)

Each I2C read/write command uses a 16-bit command word followed by 16-bit data words with an 8-bit CRC byte (CRC-8 polynomial x8+x5+x4+1x^8 + x^5 + x^4 + 1):

Command HexDescription
0x0010Start Continuous Measurement (Parameter: Ambient pressure in mbar or 0x0000)
0x0104Stop Continuous Measurement
0x0202Set Measurement Interval (2 to 1800 seconds)
0x0207Read Data Ready Status (Returns 1 if new reading available)
0x0300Read Measurement (Returns 18 bytes: 4 bytes CO2, 4 bytes Temp, 4 bytes Humidity + CRCs)
0x5306Enable / Disable Automatic Self-Calibration (ASC)

Wiring

SCD30 PinMicrocontroller (Arduino Uno / ESP32)Notes
VDD5V (or 3.3V)5V recommended for stable IR lamp pulse
GNDGNDGround
SCLSCL (A5 on Uno, GPIO22 on ESP32)Requires I2C Clock Stretching!
SDASDA (A4 on Uno, GPIO21 on ESP32)10 kΩ10\text{ k}\Omega pull-up resistor
SELGNDSelects I2C protocol mode
Warning

I2C Clock Stretching & Power Peak Guidance:

  • Clock Stretching: The internal microcontroller of the SCD30 holds the SCL line LOW for up to 150 ms while reading the optical IR cell. Software MUST enable hardware I2C clock stretching or use a generous timeout setting.
  • IR Lamp Peak Current: The internal IR lamp pulses at 75 mA. Ensure the power rail can supply steady current without dropping below 3.3V.

Common mistakes

  • Covering the white PTFE optical membrane: The white filter membrane on top of the SCD30 protects the optical cell from dust. Touching, puncturing, or sealing this membrane prevents air exchange.
  • Orientation tilt: The optical cavity in the SCD30 is factory calibrated in a vertical orientation. Mounting the module upside down or sideways can shift calibration by 20–50 ppm.
  • Disabling Automatic Self-Calibration (ASC) without outdoor fresh air exposure: ASC assumes that the sensor is exposed to fresh outdoor air (400 ppm CO2\approx 400\text{ ppm }\text{CO}_2) at least once every 7 days. If deployed in a permanently sealed, occupied room without fresh air exchange, ASC will miscalibrate.

Notes

  • Includes ambient pressure compensation inputs (0x0010) to adjust CO2\text{CO}_2 readings for barometric pressure changes at high altitudes.

Assets & downloads