Der SFA40 Formaldehyd (HCHO) Sensor von DFRobot ist ein kompaktes Gassensormodul, das zur Messung der Formaldehydkonzentration in der Luft entwickelt wurde.
Der Sensor basiert auf dem Sensirion SFA40 Chip und liefert präzise Messwerte im Bereich von 0 bis 1000 ppb. Die SFA40 Sensortechnologie ist auf geringe Kreuzempfindlichkeit ausgelegt. Dadurch lösen übliche Haushaltsstoffe wie Alkohol, Parfüm oder Zitrusdämpfe seltener Fehlmessungen aus.
Das Modul integriert zudem eine Umweltkompensation über einen integrierten Temperatur- und Feuchtigkeitssensor, was stabile und genaue Messungen unter wechselnden Umweltbedingungen gewährleistet.
Das Sensorboard kommuniziert über eine I²C-Schnittstelle mit Mikrocontrollern, was eine einfache Integration mit Plattformen wie Arduino, ESP32 oder Raspberry Pi ermöglicht.
In diesem Tutorial lernst du, wie du den SFA40 Sensor an ein Arduino UNO anschließt und wie du Daten vom Sensor ausliest.
Benötigte Teile
Du benötigst einen Gravity: SFA40 Formaldehyd (HCHO) Sensor von DFRobot. Als Mikrocontroller habe ich für dieses Projekt ein Arduino UNO verwendet, aber auch andere Arduino-Boards oder ESP32 funktionieren ebenso.

Gravity: SFA40 Formaldehyd (HCHO) Sensor

Arduino Uno

USB-Kabel für Arduino UNO

Dupont-Kabelsatz

Breadboard
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Hardware des SFA40 HCHO Sensors
Das Sensormodul basiert auf dem Sensirion SFA40 Formaldehyd-Sensorelement. Dieses Element nutzt elektrochemische Sensortechnologie, um Formaldehydmoleküle in der Umgebungsluft zu erkennen.
Bei einem elektrochemischen Gassensor findet an einer Elektrode eine chemische Reaktion statt, wenn das Zielgas vorhanden ist. Diese Reaktion erzeugt ein kleines elektrisches Signal, das proportional zur Gaskonzentration ist. Die Sensorelektronik wandelt dieses Signal in einen digitalen Messwert um.
Das Sensorsystem ist speziell für Formaldehyd (HCHO) optimiert. Die interne Chemie und Filterstrukturen sind so ausgelegt, dass Reaktionen mit anderen flüchtigen organischen Verbindungen minimiert werden. Diese hohe Selektivität ermöglicht es dem Sensor, Formaldehyd von vielen häufigen Störgasen zu unterscheiden.
Der Sensor liefert einen vollständig kalibrierten Ausgang. Die Kalibrierung erfolgt während der Herstellung und ist im Gerät gespeichert. Der Anwender muss im Normalbetrieb keine zusätzliche Kalibrierung durchführen.
Messbereich und Genauigkeit
Der SFA40 Sensor misst Formaldehydkonzentrationen im Bereich von 0 bis 1000 parts per billion (ppb). Dieser Bereich deckt typische Innenraumkonzentrationen sowie erhöhte Werte ab, die in schlecht belüfteten Räumen oder in Räumen mit neuen Möbeln und Baumaterialien auftreten können.
Der Ausgangswert wird direkt in parts per billion angegeben. Das vereinfacht die Datenverarbeitung auf Mikrocontrollern, da keine zusätzliche Umrechnung oder Skalierung erforderlich ist.
Elektrische Eigenschaften
Das Sensorelement selbst arbeitet mit einer Versorgungsspannung zwischen 1,62 V und 3,6 V. Das Gravity Sensormodul enthält zusätzliche Schaltungen, die den Betrieb mit 3,3 V oder 5 V Versorgungsspannung bei Anschluss an Mikrocontroller-Plattformen ermöglichen.
Der Stromverbrauch ist für den Dauerbetrieb optimiert. Der durchschnittliche Stromverbrauch liegt bei etwa 80 µA im Messmodus mit einer Abtastrate von ca. 2 Hz. Der Spitzenstrom kann während der Messzyklen bis zu 2 mA erreichen.
Physikalisches Design und Modul-Integration
Das SFA40 Sensorelement selbst hat ein sehr kompaktes Gehäuse mit ca. 13 mm × 10 mm × 2,4 mm. Das Gravity SEN0661 Modul integriert dieses Sensorelement auf einer größeren Breakout-Platine. Die Platine misst ca. 32 mm × 22 mm und enthält die erforderliche Spannungsregelung sowie Schnittstellenelektronik für Mikrocontroller-Plattformen.
Das Modul bietet außerdem einen standardisierten Gravity 4-Pin-Anschluss, der die Verkabelung vereinfacht und einen Plug-and-Play-Anschluss an Entwicklungsboards ermöglicht. Die Pinbelegung des Anschlusses findest du unten:

Der Sensor verfügt über eine schützende Belüftungsmembran am Sensorkammer. Diese Membran erlaubt die Gasdiffusion und schützt gleichzeitig die internen Sensorelemente vor Staub und Verunreinigungen. Entferne diese Membran nicht und setze sie nicht organischen Lösungsmitteln aus!

Umgebungsbetriebsbedingungen
Das Modul ist für den Betrieb unter einem weiten Spektrum von Umweltbedingungen ausgelegt. Der unterstützte Betriebstemperaturbereich reicht von −40 °C bis +125 °C. Der Sensor kann bei relativer Luftfeuchtigkeit von 0 % bis 100 % betrieben werden, solange keine Kondensation auftritt. Das Sensorelement enthält interne Algorithmen zur Temperaturkompensation.
Technische Spezifikationen
Die folgende Tabelle fasst die technischen Spezifikationen des SFA40 Formaldehyd (HCHO) Sensors zusammen:
| Parameter | Spezifikation |
|---|---|
| Sensortyp | Elektrochemischer Formaldehyd (HCHO) Sensor |
| Sensorelement | Sensirion SFA40 |
| Messbereich | 0 bis 1000 ppb (parts per billion) |
| Nachweisgrenze | < 20 ppb (typisch) |
| Genauigkeit | ±20 ppb oder ±20 % des Messwerts (typisch) |
| Kreuzempfindlichkeit gegenüber Ethanol | < 0,3 % |
| Schnittstelle | I²C digitale Schnittstelle |
| I²C Adresse | 0x5D |
| Betriebsspannung (Sensor) | 1,62 V – 3,6 V |
| Betriebsspannung (Modul) | 3,3 V – 5 V |
| Durchschnittlicher Stromverbrauch | ~80 µA |
| Spitzenstrom | Bis zu ~2 mA während der Messung |
| Messaktualisierungsrate | Bis zu ~2 Messungen pro Sekunde |
| Betriebstemperatur | −40 °C bis +125 °C |
| Betriebsfeuchtigkeit | 0 % – 100 % relative Luftfeuchtigkeit (ohne Kondensation) |
| Modulabmessungen | ~32 mm × 22 mm |
| Sensorgehäusegröße | ~13 mm × 10 mm × 2,4 mm |
| Ausgabeeinheit | Formaldehydkonzentration in ppb |
| Kalibrierung | Werkskalibriert |
Installation der DFRobot_SFA40 Bibliothek
Wir verwenden die DFRobot_SFA40 Bibliothek zum Auslesen der Daten vom SFA40 Sensor. Um sie zu installieren, gehe zum github repo der Bibliothek, klicke auf den grünen „<> Code“ Button und dann auf „Download ZIP“, wie unten gezeigt:

Dadurch wird die DFRobot_SFA40 Bibliothek als ZIP-Datei (DFRobot_SFA40-master.zip) auf deinen Computer heruntergeladen.
Öffne anschließend einen neuen Sketch, gehe zu Sketch -> Include Library -> Add .ZIP Library … und installiere die heruntergeladene ZIP-Bibliothek (DFRobot_SFA40-master.zip):

Anschluss des SFA40 Sensors an Arduino UNO
Der SFA40 Sensor verwendet die I2C-Schnittstelle zur Kommunikation und ist einfach anzuschließen. Verbinde zuerst VCC mit 5V und GND mit Masse. Dann verbinde einfach die I2C-Schnittstelle: SDA zu SDA und SCL zu SCL, wie unten gezeigt:

Code zum Auslesen der Daten vom SFA40 Sensor
Der folgende Code zeigt, wie man den SFA40 Sensor mit einem Arduino-Board verbindet. Der Sensor misst Temperatur, Luftfeuchtigkeit und Formaldehydkonzentration in parts per billion (ppb). Die Messwerte werden jede Sekunde im Serial Monitor ausgegeben.
// https://github.com/DFRobot/DFRobot_SFA40 V 1.0.3
// www.makerguides.com
#include "DFRobot_SFA40.h"
DFRobot_SFA40 SFA40;
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Importe
Zu Beginn bindet der Code die Bibliothek für den SFA40 Sensor ein. Diese Bibliothek enthält alle notwendigen Funktionen, um mit dem Sensor zu kommunizieren und Messdaten abzurufen.
#include "DFRobot_SFA40.h"
Objektinitialisierung
Als nächstes wird ein Objekt namens SFA40 der Klasse DFRobot_SFA40 erstellt. Dieses Objekt wird im Programm verwendet, um mit dem Sensor zu interagieren.
DFRobot_SFA40 SFA40;
Anzeige-Funktion
Die display() Funktion ist eine Hilfsfunktion, die Sensordaten formatiert im Serial Monitor ausgibt. Sie nimmt drei Parameter: ein Textlabel, einen Fließkommawert und eine Einheit als String. Der Wert wird mit einer Nachkommastelle ausgegeben.
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
Setup-Funktion
Die setup() Funktion initialisiert die serielle Kommunikation mit 115200 Baud, um Daten an den Serial Monitor zu senden. Anschließend versucht sie, den Sensor mit SFA40.begin() zu initialisieren. Wird der Sensor nicht gefunden, wird jede Sekunde eine Fehlermeldung ausgegeben, bis der Sensor erkannt wird. Nach erfolgreicher Initialisierung startet der Sensor den kontinuierlichen Messmodus mit SFA40.startMeasurement().
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
Loop-Funktion
Innerhalb der loop() Funktion liest der Code die neuesten Messdaten vom Sensor mit SFA40.readMeasurementData() aus. Diese Funktion gibt einen Statuscode zurück, wobei 0 für einen erfolgreichen Lesevorgang steht. Ist das Auslesen erfolgreich, gibt das Programm eine Trennlinie aus und verwendet die display() Funktion, um Temperatur in Celsius und Fahrenheit, relative Luftfeuchtigkeit sowie Formaldehydkonzentration (HCHO) in parts per billion auszugeben. Anschließend wartet das Programm 1 Sekunde, bevor der Vorgang wiederholt wird.
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Beispielausgabe
Das folgende Beispiel zeigt die Ausgabe im Serial Monitor:
---------------------------- Temperature: 22.1 C Temperature: 71.8 F Humidity : 43.2 %RH HOCO : 39.0 ppb
Fazit
In diesem Tutorial hast du gelernt, wie man den SFA40 Formaldehyd (HCHO) Sensor mit einem Arduino UNO verwendet. Der Sensor lässt sich auch problemlos mit anderen Mikrocontrollern wie dem ESP32 nutzen.
Wenn du nach anderen Gassensoren suchst, schau dir die folgenden Beiträge an:
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Smoke Sensor GM-202B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Carbon Monoxide CO Gas Sensor GM-702B with Arduino
- How to use the MQ-2 Gas Sensor with Arduino and an OLED
- How to use the MQ-4 Methane Gas Sensor With Arduino
- How to use the MQ-7 Gas Sensor with an LCD display and Arduino
- Measure Air Quality with BME680
Bei Fragen kannst du sie gerne im Kommentarbereich stellen.
Viel Spaß beim Tüfteln 😉

