The SCD41 is a digital sensor designed for measuring carbon dioxide (CO2), temperature, and humidity. Manufactured by Adafruit, it employs non-dispersive infrared (NDIR) technology for CO2 detection, ensuring high accuracy and reliability. This compact sensor is ideal for applications requiring precise indoor air quality monitoring, such as HVAC systems, air purifiers, smart home devices, and environmental monitoring systems.
The SCD41 sensor offers robust performance with the following key specifications:
Parameter | Value |
---|---|
CO2 Measurement Range | 400 ppm to 5000 ppm |
CO2 Accuracy | ±(40 ppm + 5% of reading) |
Temperature Range | -10°C to 60°C |
Temperature Accuracy | ±0.8°C |
Humidity Range | 0% to 100% RH |
Humidity Accuracy | ±5% RH |
Supply Voltage | 2.4V to 5.5V |
Interface | I²C (default address: 0x62) |
Power Consumption | 1.7 mA (idle) / 24 mA (measurement) |
Dimensions | 10.1 mm x 10.1 mm x 6.5 mm |
The SCD41 sensor has a simple pinout for easy integration into circuits:
Pin | Name | Description |
---|---|---|
1 | VDD | Power supply (2.4V to 5.5V) |
2 | GND | Ground |
3 | SDA | I²C data line |
4 | SCL | I²C clock line |
5 | SEL | Address select (connect to GND for default address) |
6 | NC | Not connected (leave unconnected) |
Below is an example of how to use the SCD41 with an Arduino UNO. This code uses the Adafruit SCD4x library, which simplifies communication with the sensor.
#include <Wire.h>
#include "Adafruit_SCD4x.h"
// Create an instance of the SCD4x sensor
Adafruit_SCD4x scd4x;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10); // Wait for Serial Monitor to open
Serial.println("Initializing SCD41 sensor...");
// Initialize the sensor
if (!scd4x.begin()) {
Serial.println("Failed to find SCD41 sensor. Check connections!");
while (1) delay(10);
}
Serial.println("SCD41 sensor initialized.");
// Start periodic measurements
if (!scd4x.startPeriodicMeasurement()) {
Serial.println("Failed to start periodic measurements!");
while (1) delay(10);
}
}
void loop() {
// Check if new data is available
if (scd4x.dataReady()) {
float co2, temperature, humidity;
// Read sensor data
if (scd4x.readMeasurement(co2, temperature, humidity)) {
Serial.print("CO2: ");
Serial.print(co2);
Serial.print(" ppm, Temp: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
Serial.println("Failed to read measurement!");
}
} else {
Serial.println("No new data available.");
}
delay(1000); // Wait 1 second before checking again
}
Sensor Not Detected
Inaccurate Readings
Communication Errors
Q: Can the SCD41 operate at 5V?
A: Yes, the SCD41 supports a supply voltage range of 2.4V to 5.5V.
Q: How often should I calibrate the sensor?
A: The SCD41 features automatic self-calibration, but manual calibration may be required in environments with consistently high CO2 levels.
Q: What is the default I²C address of the SCD41?
A: The default I²C address is 0x62.