Sensor SCD4x: Temperatur, Luftfeuchtigkeit und CO2 messen

Lesezeit: 7 Minuten


Die Hardware

Die Sen­soren SCD40 und SCD41 (zusam­menge­fasst als SCD4x) messen Tem­per­atur, Luft­feuchtigkeit und den CO2-Gehalt in der Luft.
Der Sen­sor SDC4x arbeit­et nach dem pho­toakustis­chen Messprinzip:

Gas­moleküle wie das CO2 nehmen nur Licht ganz bes­timmter Wellen­län­gen auf. Schickt man infrarotes Licht, das nur von CO2 absorbiert wird, durch ein Gas­gemisch, erhöht sich die Aus­dehnung der angeregten Moleküle. Die Lichtquelle wird peri­odisch ein- und aus­geschal­tet, dadurch schwankt die Aus­dehnung der Moleküle eben­falls peri­odisch. Diese Druckschwankun­gen wer­den wer­den als akustis­che Sig­nale von einem Mikro­fon aufge­fan­gen. Das akustis­che Sig­nal ist pro­por­tion­al zur Konzen­tra­tion des Gas­es im Gas­gemisch.

Eigen­schaften des Sen­sors

  • automa­tis­che oder händis­che Kalib­rierung
  • Selb­sttest mit Prü­fung der Funk­tio­nen
  • Ein­stel­lun­gen kön­nen im EEPROM gespe­ichert wer­den

Funktionen des Sensors

Schlüs­sel­wortAnzeige/Parameter
begin(Wire, SCD41_I2C_ADDR_62);Sen­sor starten
per­form­Fac­to­ryRe­set();auf Stan­dard­e­in­stel­lun­gen zurück­set­zen
per­sist­Set­tings();Ein­stel­lun­gen in den EEPROM schreiben
performSelfTest(Wert)Selb­sttest durch­führen
0 = Selb­sttest erfol­gre­ich
reinit();Vor­e­in­stel­lun­gen aus dem EEPROM des SCD4x lesen
wake­Up();Sen­sor aufweck­en
pow­er­Down();Sen­sor auss­chal­ten
setAutomaticSelfCalibrationEnabled(Wert);0 = automa­tis­che Kalib­rierung auss­chal­ten
1 = automa­tis­che Kalib­rierung ein­schal­ten
setAutomaticSelfCalibrationTarget(CO2-Wert);Wert der automa­tis­chen Kalib­rierung anpassen
Angabe in ppm
setAutomaticSelfCalibrationInitialPeriod(Wert_in_Stunden)Zeitraum für automa­tis­che Kalib­rierung fes­tle­gen
setSensorAltitude(Höhe in m);Stan­dort des Sen­sors anpassen (Höhe in m)
setAmbientPressure(Luftdruck)Luft­druck anpassen
setTemperatureOffset(Wert);Abwe­ichung der Tem­per­atur kor­rigieren
start­Pe­ri­od­icMea­sure­ment();Peri­odis­che Mes­sun­gen starten (alle 5 Sekun­den)
stop­Pe­ri­od­icMea­sure­ment();Peri­odis­che Mes­sun­gen been­den
start­Low­Pow­er­Pe­ri­od­icMea­sure­ment();Peri­odis­che Mes­sun­gen starten (alle 30 Sekun­den)
mea­sureSin­gleShot()Sin­gleShot: jede Mes­sung einzeln starten
(nur SCD41)
readMeasurement(CO2, Tem­per­atur, Luft­feuchtigkeit);Mess­werte lesen
measureAndReadSingleShot(CO2, Tem­per­atur, Luft­feuchtigkeit);Mes­sung im Sin­gleShot-Modus (nur SCD41)

Einstellungen

schreiben

  • Ein­stel­lun­gen im EEPROM spe­ich­ern
    persistSettings();
  • auf Werk­se­in­stel­lun­gen zurück­set­zen
    performFactoryReset();
  • Höhe des Stan­dorts bes­tim­men
    setSensorAltitude(Höhe_in_m);
    Der Luft­druck schwankt je nach der Höhe des Stan­dorts. Die Stan­dard­e­in­stel­lung ist 0, wenn die Höhe deut­lich abwe­icht, sollte sie angepasst wer­den.
  • Tem­per­atur anpassen
    setTemperatureOffset(Wert_als_float);
    Da der Sen­sor sich erwärmt, kann die Tem­per­atur mit einem Ver­gle­ich eines anderen Mess­geräts angepasst wer­den.
  • Luft­druck über­schreiben
    setAmbientPressure(Wert_in_hPa*100);
    Diese Ein­stel­lung ist nur sin­nvoll, wenn ein präzis­es Mess­gerät zum Ver­gle­ich zur Ver­fü­gung ste­ht

lesen

Kalibrierung des Sensors

Automatische Selbstkalibrierung (ASC)

Die automa­tis­che Selb­stkalib­rierung ver­läuft in zwei Phasen:
44 Stun­den für die Erstkalib­rierung und 156 Stun­den für die fol­gende Stan­dard­kalib­rierung. Der Sen­sor muss wenig­sten ein­mal während dieser Zeit einen bekan­nten Tiefst­wert der CO2-Konzen­tra­tion (400 ppm) erre­ichen. Allerd­ings ist der Tiefst­wert im Durch­schnitt inzwis­chen auf 430 ppm gestiegen (🔗Umwelt­bun­de­samt).
Der Ziel­w­ert kann mit setAutomaticSelfCalibrationTarget(ppm) geset­zt wer­den.
Die Zeit in Stun­den für die Erst- und Stan­dard­kalib­rierung kann mit
setAutomaticSelfCalibrationInitialPeriod(Stun­den)
setAutomaticSelfCalibrationStandardPeriod(Stun­den)
geän­dert wer­den. Der Wert in Stun­den muss ein Vielfach­es von 4 sein.

Während der automa­tis­chen Kalib­rierung muss der Sen­sor in einem gut gelüfteten Raum sein.

Erzwungene Kalibrierung (FRC – forced Recalibration)

Neben der automa­tis­chen Kalib­rierung kannst du alter­na­tiv mit performForcedRecalibration(CO2Richtwert, frcCorr)die Kalib­rierung erzwin­gen. Hierzu wird ein Wert (CO2Richtwert) fest­gelegt, auf den kalib­ri­ert wer­den soll. frc­Corr ist ein Ker­rek­tur­w­ert, der im Falle eines Mis­ser­fol­gs 0xFFFF aus­gibt.

Um eine FRC erfol­gre­ich durchzuführen, müssen die fol­gen­den Schritte durchge­führt wer­den:

  • Die peri­odis­che Mes­sung (startPeriodicMeasurement) muss min­destens drei Minuten in ein­er Umge­bung mit möglichst kon­stan­tem CO2-Wert aus­ge­führt wer­den.
  • Nach dieser Zeit wird die peri­odis­che Mes­sung gestoppt (stopPeriodicMeasurement).
  • Nach ein­er Wartezeit von 500 Mil­lisekun­den kann dem Sen­sor mit performForcedRecalibration der neue CO2-Richtwert mit­geteilt wer­den.

Das Programm

Benötigte Bibliotheken

für den Sen­sor SCD4x

Ver­wen­dung des OLEDs

Anzeige auf einem LCD

Anschluss des Sensors

Die Anzeige­mod­ule kön­nen an den anderen I²C-Pins A4 und A5 angeschlossen wer­den.

Messmodi

Periodische Messung

Die peri­odis­che Mes­sung ermit­telt alle 5 Sekun­den die Mess­werte. Sie wird mit startPeriodicMeasurement(); angestoßen.

In den Lösun­gen find­est du die Pro­gramme für die Anzeige auf dem ⇒LCD und auf einem ⇒OLED.

Low-Power Messung

Die Low-Pow­er Mes­sung misst die Werte alle 30 Sekun­den.
Statt startPeriodicMeasurement(); wird die Mes­sung mit startLowPowerPeriodicMeasurement(); ges­tartet.

SingleShot Messung

Nur der SCD41 kann Sin­gleShot-Mes­sun­gen durch­führen.

Die Pro­gramme für die Anzeige auf dem ⇒LCD und auf einem ⇒OLED find­est du in den Lösun­gen.


Quellen


Letzte Aktualisierung: Nov. 10, 2025 @ 22:29