lamaPLC project: Sension SCD CO² measurement module

SCD 30 Modul

The main distinction between these Sensirion sensors lies in their measurement technology, which affects their size and power use. The SCD30 employs conventional NDIR (Non-Dispersive Infrared) technology, whereas the SCD40/41 series utilises a more recent, compact Photoacoustic principle.

FeatureSCD30SCD40SCD41
SCD 30 Modul-SCD 41 Modul
TechnologyNDIR (Dual-Channel)PhotoacousticPhotoacoustic
Size35 x 23 x 7 mm10.1 x 10.1 x 6.5 mm10.1 x 10.1 x 6.5 mm
CO² Range0 – 40,000 ppm400 – 2,000 ppm400 – 5,000 ppm
Accuracy±(30 ppm + 3% MV)±(50 ppm + 5% MV)±(40 ppm + 5% MV)
Voltage3.3V – 5.5V2.4V – 5.5V2.4V – 5.5V
Power (avg)~19 mA~15 mA~0.5 mA (Low Power Mode)
InterfaceI²C (Address 0x61), UART, PWMI²CI²C
Operating Temperature0°C to 50°C

Key Differences

  • Form Factor: The SCD40/41 is approximately ten times smaller than the SCD30, making it well-suited for compact wearables or integrated smart home devices.
  • Precision vs Size: The SCD30 generally offers slightly better accuracy and stability over extended periods, thanks to its dual-channel NDIR design, which naturally compensates for sensor drift.
  • Power Efficiency: For battery-powered devices, the SCD41 is the preferred choice, featuring a “Single Shot” mode that significantly reduces power consumption compared to the SCD30 or SCD40.
  • Mounting: The SCD40/41 is an SMD (Surface-Mount Device) component suitable for reflow soldering and mass production. In contrast, the SCD30 is usually hand-soldered or connected via pins.

If you'd like to support the development of the site with the price of a coffee — or a few — please do so here.

Here's a handy tip: you can quickly save this page as a PDF by clicking “export to PDF” in the menu on the right side of the screen.

2026/02/14 23:38

SCD30

The SCD30 is a high-precision, 3-in-1 sensor module from Sensirion that measures Carbon Dioxide (CO²), Temperature, and Relative Humidity. It is considered a “true” CO² sensor because it uses Non-Dispersive Infrared (NDIR) technology to directly measure CO² molecules, rather than approximating levels from other gases.

Key Features & Technology

  • Dual-Channel Detection: It uses a dedicated reference channel to compensate for long-term drift, ensuring superior stability over its 15-year lifetime.
  • Integrated Compensation: The module uses its built-in temperature and humidity data to internally calibrate and normalise the CO2 readings.
  • Self-Calibration Options: Supports Automatic Self-Calibration (ASC), which resets the sensor's baseline when exposed to fresh air (~400 ppm) regularly, or Forced Recalibration (FRC) for manual setup.
  • Adjustable Sampling: While the default interval is 2 seconds, it can be set to 1-1800 seconds to reduce power consumption in battery-powered projects.

SCD30 Pinout

PinNameDescriptionLogic Level
1VDDSupply Voltage (3.3V – 5.5V)
2GNDGround
3TX / SCLModbus Transmit / I²C Clock3.0V (internal pull-up)
4RX / SDAModbus Receive / I²C Data3.0V (internal pull-up)
5RDYData Ready (High when new data is available)3.0V
6PWMPulse Width Modulation output3.0V
7SELInterface Select (Floating/GND = I²C; High = Modbus)< 4.0V

Key Wiring Notes

  • Internal Pull-ups: The module has internal 45 kΩ resistors connected to a 3V supply for the I²C lines.
  • Voltage Warning: The module can be powered with 5V, but the SCL/SDA logic pins operate at 3V. When using a 5V microcontroller like an Arduino Uno, a level shifter is strongly advised to prevent damage to the sensor.
  • Interface Selection: For I²C (the standard mode), leave the SEL pin floating or connect it to Ground. To use Modbus, connect the SEL pin to VDD via a voltage divider, ensuring the voltage does not exceed 4V.

SCD30 Arduino example code

To use the SCD30 with an Arduino, the SparkFun SCD30 Arduino Library and the Adafruit SCD30 Library are the most common choices.

#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h" //
 
SCD30 airSensor;
 
void setup() {
  Wire.begin();
  Serial.begin(9600);
 
  if (airSensor.begin() == false) {
    Serial.println("Sensor not detected. Check wiring!");
    while (1);
  }
  Serial.println("SCD30 detected!");
}
 
void loop() {
  if (airSensor.dataAvailable()) {
    Serial.print("CO2(ppm): ");
    Serial.print(airSensor.getCO2());
    Serial.print(" Temp(C): ");
    Serial.print(airSensor.getTemperature(), 1);
    Serial.print(" Humidity(%): ");
    Serial.println(airSensor.getHumidity(), 1);
  }
  delay(2000); // Sensor updates every 2 seconds by default
}

SCD41

SCD41 Modul The SCD41, developed by Sensirion, is a compact, highly precise sensor for measuring CO₂, temperature, and humidity. As the second generation of their optical CO² sensors, it employs photoacoustic NDIR (Non-Dispersive Infrared) technology. This approach enables the sensor to be much smaller than conventional CO₂ sensors while maintaining high accuracy, making it perfect for indoor air quality (IAQ) monitoring.

Key Features

  • 3-in-1 Sensing: Measures CO2 concentration, relative humidity, and temperature simultaneously.
  • Miniature Form Factor: Its extremely small size (10.1 x 10.1 x 6.5 mm³) enables easy integration into compact devices.
  • High Accuracy: Offers a precision of ±(40 ppm + 5% of reading) across the range 400 to 5,000 ppm.
  • Low Power Modes: Includes a “single-shot” mode that reduces average current consumption to <0.4 mA for battery-operated applications.
  • Standard Interface: Communicates via I2C, making it compatible with microcontrollers such as Arduino, ESP32, and Raspberry Pi.

Technical Specifications

ParameterRange / ValueAccuracy (Typical)
CO² Concentration400 – 5,000 ppm (up to 40,000 ppm output)±(40 ppm + 5%)
Relative Humidity0 – 100% RH±6% RH
Temperature-10°C to 60°C +-0.8 °C (at 15-35°C)
Supply Voltage2.4V – 5.5VN/A
I²C Address0x62N/A

SCD41 Pinout

Most breakout boards use a standard 4-pin or 5-pin arrangement for easy connection to microcontrollers like Arduino or ESP32.

SCD41 Modul

Pin NameTypeDescription
VIN / VCCPowerConnect to (2.4V – 5.5V) (depending on your board's logic level).
GNDGroundCommon ground for power and logic.
SCLI²C ClockSerial clock line for I²C communication. Usually has a 10k pull-up.
SDAI²C DataSerial data line for I²C communication. Usually has a 10k pull-up.
3VoOutput(Adafruit boards only) 3.3V output from the onboard regulator.

SCD41 Arduino example

Search for “Sensirion I2C SCD4x” and install it. The example below initialises the sensor and outputs CO², Temperature, and Humidity readings every 5 seconds.

#include <Arduino.h>
#include <SensirionI2cScd4x.h>
#include <Wire.h>
 
SensirionI2cScd4x scd4x;
 
void setup() {
    Serial.begin(115200);
    while (!Serial); // Wait for serial monitor
 
    Wire.begin();
    scd4x.begin(Wire);
 
    // Stop potentially running measurement
    uint16_t error = scd4x.stopPeriodicMeasurement();
    if (error) {
        Serial.print("Error stopping measurement: ");
        Serial.println(error);
    }
 
    // Start periodic measurement (updates every 5 seconds)
    error = scd4x.startPeriodicMeasurement();
    if (error) {
        Serial.print("Error starting measurement: ");
        Serial.println(error);
    }
 
    Serial.println("Waiting for first measurement... (5 sec)");
}
 
void loop() {
    uint16_t co2 = 0;
    float temperature = 0.0f;
    float humidity = 0.0f;
    bool dataReady = false;
 
    // Check if data is ready to be read
    uint16_t error = scd4x.getDataReadyStatus(dataReady);
 
    if (dataReady) {
        error = scd4x.readMeasurement(co2, temperature, humidity);
        if (!error) {
            Serial.print("CO2: ");
            Serial.print(co2);
            Serial.print(" ppm\t");
            Serial.print("Temp: ");
            Serial.print(temperature);
            Serial.print(" °C\t");
            Serial.print("Humidity: ");
            Serial.print(humidity);
            Serial.println(" %");
        }
    }
    delay(1000); // Check status every second
}

Key Functions to Note

  • startPeriodicMeasurement(): Sets the sensor to measure every 5 seconds.
  • getDataReadyStatus(): Use this to avoid reading “stale” data until the next 5-second interval.
  • measureSingleShot(): Available only on the SCD41 (not the SCD40). It allows manual measurement to save power, making it ideal for battery-powered projects.

Communication topics on lamaPLC

PageDateTags
2026/04/23 21:51, , , , , , , , , , , , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , ,
2026/04/23 21:51, , , , , , , ,
2026/04/23 21:51, , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , , ,
2026/04/23 21:51, , , , , , , , , , , , , ,
2024/11/16 21:08, , , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , , , ,
2024/11/16 20:43, , , , , , , , , , , , , ,
2024/11/16 01:16, , , , , ,
2026/04/23 21:51, , , , , , , , , , , , ,
2024/11/15 21:15, , , , , , , , , , ,
2026/04/23 21:51, , , , , , , , ,
2024/11/16 01:46, , , , ,
2026/04/23 21:51, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
2025/09/23 21:25, , , , , ,
2026/04/23 21:51, , , , , , , , , , ,
2026/04/23 21:51, , , , , , , , , , , ,
2026/04/23 21:51, , , , , , , , ,
2024/11/15 21:28, , , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , ,
2024/11/16 02:26, , , , , , ,
2024/11/15 21:33, , , , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , , ,
2026/04/23 21:51, , , , , , , , ,
2026/04/23 21:51, , , , , , , , , , , , , , , , , ,
2026/04/23 21:51, , , ,
2026/04/23 21:51, , , ,
2026/04/23 21:51, , , , ,
2026/04/23 21:51, , , ,
2026/04/23 21:51, , , , , , , , , ,
2026/04/23 21:51, , , , , , , ,
2025/11/20 22:49, , , , , , , , , , , , , , , , , , , , ,
2024/11/15 23:07, , , , , , , , , , ,
2026/04/23 21:51, , , , ,
2026/04/23 21:51, , , , , , , , , , ,
2026/04/23 21:51, , , , ,
2026/04/23 21:51, , , , , , , , , , , , ,
2024/11/16 00:36, , , , , , , , , , , , , , ,
2026/04/23 21:51, , , , ,
2026/04/23 21:51, , , , , , , , , , , , , , , , , , , , , , ,
2026/03/22 03:14, , , , , , ,
2026/04/23 21:51, , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , ,
2026/05/13 00:06, , , , , , ,
2026/06/05 15:59, , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , , , , , , ,
2026/03/06 01:19, , , , , ,
2026/04/23 21:52, , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , ,
2026/06/05 15:59, , , , , ,
2026/04/23 21:52, , , , , , , ,
2026/04/23 21:52, , , , , ,
2026/04/23 21:51, , , ,
2025/05/31 23:32, , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , ,
2025/11/22 00:07, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
2023/07/01 17:29, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , , , , , , , , , , ,
2026/04/11 18:28, , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , ,
2026/04/23 21:51, , , , , , , , , , , , , , ,
2026/02/14 18:27, , , , , , , , , ,
2026/04/23 21:52, , , , , ,
2026/04/23 21:52, , , , , , ,
2026/04/23 21:52, , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , , , ,
2026/05/08 00:03, , , , , , , , , , ,
2026/05/15 01:03, , , , , , , , ,
2026/04/23 21:52, , , , , , , ,
2026/04/23 21:51, , , , , , , , ,
2026/02/14 18:42, , , , , , ,
2026/05/15 16:47, , , , , , , , , , , , , , , ,
2026/05/12 17:06, , , , , ,
2026/05/12 21:06, , , , , , ,
2026/05/12 18:58, , , , , , ,
2026/04/23 21:52, , , , , , , ,
2026/04/23 21:52, , , , , , , , , ,
2023/06/19 23:24, , , , , , , , , , , , ,
2026/04/15 19:41, , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , ,
2026/05/19 21:37, , , , , ,
2026/02/14 23:51, , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , , , , , , , , , ,
2026/04/23 21:51, , , , , , ,
2023/06/25 00:43, , , , , ,
2026/04/23 21:52, , , , , , , , , , ,
2026/04/23 21:52, , , , , , , ,
2026/03/07 01:46, , , , , , , , , , ,
2026/05/15 15:17, , , , , , , , , , , , , ,
2026/06/05 15:59, , , , , , ,
2026/02/15 00:00, , , , , , , , ,
2026/05/12 22:18, , , , , , , , , , , , , , , ,
2026/03/05 21:19, , , , , , , , , , , , , , , , ,
2026/02/14 18:49, , , , , ,
2026/04/23 21:52, , , , , , , , , , , , , , , ,
2026/04/23 21:52, , , , ,
2026/04/23 21:52, , , , , , ,

This page has been accessed for: Today: 2, Until now: 301