Der Fermion MEMS Multi-Gas Sensor ist ein kompakter Gaskonzentrationssensor, der auf dem MiCS-5524 Gassensor basiert und für die Integration mit Mikrocontrollern wie Arduino und ESP32 entwickelt wurde.
Er verwendet MEMS (Micro-Electro-Mechanical Systems) Sensortechnologie, um mehrere häufige Gase zu erkennen, darunter Kohlenmonoxid (CO), Methan (CH₄), Ethanol (C₂H₅OH), Propan (C₃H₈), Butan (C₄H₁₀), Wasserstoff (H₂), Schwefelwasserstoff (H₂S) und Ammoniak (NH₃).
In diesem Tutorial lernst du, wie du den Fermion MEMS Multi-Gas Sensor an ein Arduino UNO anschließt, um diese Gase zu messen.
Benötigte Teile
Du benötigst einen Fermion Multi-Gas Sensor von DFRobot. Als Mikrocontroller habe ich für dieses Projekt ein Arduino Uno verwendet, aber auch andere Arduino-Modelle oder ESP32 funktionieren problemlos.

Fermion MEMS Multi-Gas 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 Fermion MEMS Multi-Gas Sensors MiCS-5524
Das Breakout-Board des Fermion MEMS Multi-Gas Sensors für den MiCS-5524 misst etwa 12 mm x 16 mm und verfügt über eine vierpolige Anschlussfläche für Stromversorgung und Signalleitungen.

Die Pads sind für eine 5 V Versorgungsspannung, Masse (GND) und die analoge Ausgangsspannung (A0) vorgesehen, die der Gaskonzentration entspricht. Der Enable-Pin (EN) kann verwendet werden, um die interne Stromversorgung des Sensors ein- oder auszuschalten. So lässt sich der Sensor in einen Energiesparmodus versetzen, wenn keine kontinuierliche Messung erforderlich ist.
Das folgende Bild zeigt das Schaltbild des Fermion MEMS Multi-Gas Sensor Breakout-Boards:

Elektrische und Leistungsmerkmale
Elektrisch ist der SEN0440 für den Betrieb mit einer geregelten 5 V DC Versorgung ausgelegt, mit einer typischen Leistungsaufnahme von etwa 0,45 W.
Obwohl die Logik-Schnittstelle des Sensors eine analoge Spannung im Bereich von 0–5 V ausgibt, ist er kompatibel mit Mikrocontrollern und Entwicklungsboards, deren Eingänge Spannungen von 3,3 V bis 5,5 V tolerieren, wie viele Arduino- und ESP32-Varianten.
Der Hauptausgang ist eine analoge Spannung, die proportional zur Zielgaskonzentration ist. Diese Spannung muss mit einem Analog-Digital-Wandler des Host-Controllers ausgelesen werden, um sie weiterzuverarbeiten oder in ppm-Einheiten umzuwandeln.
Gassensor-Mechanismus und Zielbereich
Im Kern verwendet der SEN0440 den MiCS-5524 MEMS resistiven Gassensor. Dieses Sensorelement enthält eine Metalloxid-Halbleiterschicht, deren Widerstand sich in Gegenwart bestimmter reduzierender Gase ändert.
Das Modul ist kalibriert und abgestimmt, sodass Änderungen dieses Widerstands in eine analoge Ausgangsspannung übersetzt werden, die der Beispielcode in ungefähre Konzentrationen gängiger Gase umwandeln kann.
Der Sensor unterstützt die Erkennung von Kohlenmonoxid (CO) im Bereich von etwa 1 ppm bis 1000 ppm, Wasserstoff (H₂) in einem ähnlichen Bereich, Ethanol (C₂H₅OH) von etwa 10 ppm bis 500 ppm und Ammoniak (NH₃) von etwa 1 ppm bis 500 ppm. Methan (CH₄) und andere leichte Kohlenwasserstoffe wie Propan und Butan werden in Konzentrationen von etwa 3000 ppm bis 15000 ppm erkannt. Die folgende Grafik zeigt die Gassensitivitätscharakteristik des MiCS‑5524 Sensors für die verschiedenen Gase:

Sensorleistung und Umgebungsgrenzen
Das Sensorelement im SEN0440 benötigt eine Aufwärmzeit, bevor aussagekräftige Messwerte erzielt werden können.
Das Modul ist für den Betrieb in einem weiten Umgebungstemperaturbereich von etwa −30 °C bis 85 °C spezifiziert und verträgt relative Luftfeuchtigkeitswerte von etwa 5 % bis 95 % ohne Kondensation.
Technische Spezifikation
Die folgende Tabelle fasst die technischen Spezifikationen des Fermion MEMS Multi-Gas Sensors MiCS-5524 zusammen:
| Spezifikation | Details |
|---|---|
| Sensormodell | MiCS-5524 MEMS Gassensor |
| Messprinzip | Metalloxid-Halbleiter resistive Gaserkennung |
| Erkannte Gase | CO, H₂, C₂H₅OH, NH₃, CH₄, C₃H₈, C₄H₁₀ (Multi-Gas, begrenzte Selektivität) |
| Gaskonzentrationsbereich | CO: ~1 ppm–1000 ppm; H₂: ~1 ppm–1000 ppm; Ethanol: ~10 ppm–500 ppm; NH₃: ~1 ppm–500 ppm; Kohlenwasserstoffe erkennbar bei höheren ppm-Werten |
| Ausgangstyp | Analoge Spannung proportional zur Konzentration |
| Ausgangsspannungsbereich | 0 V–5 V (proportional zum Gaslevel) |
| Versorgungsspannung | 5 V DC nominal |
| Aufwärmzeit | Zehn bis zwanzig Sekunden (typisch für stabile Messwerte) |
| Betriebstemperatur | −30 °C bis +85 °C |
| Betriebsfeuchtigkeit | 5 % bis 95 % relative Luftfeuchtigkeit (ohne Kondensation) |
| Typischer Stromverbrauch | ~0,45 W (bei 5 V) |
| Schnittstellenkompatibilität | 3,3 V–5,5 V Mikrocontroller-Analog-Eingang kompatibel |
| Lebensdauer | >2 Jahre |
Hier ist ein Link zum Datenblatt des MiCS-5524 Sensors mit weiteren technischen Daten:
Anschluss des Fermion MEMS Multi-Gas Sensors an Arduino UNO
Der Anschluss des Sensors an ein Arduino UNO ist einfach. Verbinde VCC mit 5V, GND mit Masse, A0 mit dem analogen Eingang A0 und EN mit GPIO 10, wie unten gezeigt:

Installation der DFRobot_MICS Bibliothek
Wir verwenden die DFRobot_MICS Bibliothek zum Auslesen der Daten vom MiCS-5524 Sensor. Lade dazu die DFRobot_MICS Bibliothek als ZIP-Datei (DFRobot_MICS-master.zip) auf deinen Computer herunter.
Öffne dann einen neuen Sketch, gehe zu Sketch -> Include Library -> Add .ZIP Library … und installiere die heruntergeladene ZIP-Bibliothek (DFRobot_MICS-master.zip):

Code zum Auslesen der Gaskonzentrationen
Der folgende Code zeigt, wie man den Fermion MEMS Multi-Gas Sensor MiCS-5524 mit einem Arduino-Board verwendet.
Der Sensor erkennt Gase wie Kohlenmonoxid, Methan, Ethanol, Wasserstoff, Ammoniak und Stickstoffdioxid und gibt deren Konzentrationen in Teilen pro Million (PPM) aus.
Das Programm initialisiert den Sensor, führt eine Aufwärmkalibrierung durch und liest dann kontinuierlich die Gaskonzentrationen aus, die über den seriellen Monitor angezeigt werden.
// https://github.com/dfrobot/DFRobot_MICS V 1.0.0
// www.makerguides.com
#include "DFRobot_MICS.h"
#define CALIBRATION_TIME 3 // mins
#define ADC_PIN A0
#define POWER_PIN 10
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
mics.sleepMode();
}
Lass uns den Code in seine Hauptbestandteile zerlegen, um zu verstehen, wie er funktioniert.
Imports
Der Code beginnt mit dem Einbinden der DFRobot_MICS.h Bibliothek, die die notwendigen Funktionen und Definitionen für die Schnittstelle mit dem MiCS-5524 Sensor bereitstellt.
#include "DFRobot_MICS.h"
Konstanten
Anschließend werden mehrere Konstanten definiert. CALIBRATION_TIME definiert die Aufwärmzeit des Sensors in Minuten, die für genaue Messwerte wichtig ist. ADC_PIN und POWER_PIN geben den analogen Eingangspin des Arduino an, der mit dem Sensorsignal verbunden ist, sowie den digitalen Pin, der die Stromversorgung des Sensors steuert.
#define CALIBRATION_TIME 3 // mins #define ADC_PIN A0 #define POWER_PIN 10
Sensorobjekt
Eine Instanz der DFRobot_MICS_ADC Klasse mit dem Namen mics wird erstellt, wobei der ADC-Pin und der Versorgungspin an den Konstruktor übergeben werden. Dieses Objekt verwaltet die Kommunikation mit dem Sensor und steuert dessen Betrieb.
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
Anzeige-Funktion
Die display() Funktion ist eine Hilfsfunktion, die einen beschreibenden Text und einen Gaskonzentrationswert als Fließkommazahl entgegennimmt. Sie gibt den Text gefolgt vom Wert mit einer Nachkommastelle formatiert aus und hängt die Einheit „PPM“ an den seriellen Monitor an. Diese Funktion vereinfacht die Ausgabeformatierung in der Hauptschleife.
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
Setup-Funktion
In der setup() Funktion wird die serielle Kommunikation mit 115200 Baud initialisiert, um die Daten an den seriellen Monitor zu senden. Das Programm versucht dann, den Sensor durch Aufruf von mics.begin() in einer Schleife zu initialisieren, bis dies gelingt. Falls der Sensor nicht gefunden wird, wird jede Sekunde eine Fehlermeldung ausgegeben.
Nach erfolgreicher Initialisierung wird der Stromzustand des Sensors geprüft. Befindet sich der Sensor im Schlafmodus, wird er mit wakeUpMode() aufgeweckt und eine Bestätigung ausgegeben.
Der Sensor benötigt eine Aufwärmzeit zur Kalibrierung, um genaue Messwerte zu gewährleisten. Der Code gibt eine Meldung aus und wartet, bis die durch CALIBRATION_TIME angegebene Aufwärmzeit in Minuten abgelaufen ist, wobei jede Sekunde ein Punkt zur Fortschrittsanzeige ausgegeben wird. Anschließend wird eine Bestätigung ausgegeben.
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
Loop-Funktion
Die loop() Funktion läuft nach dem Setup wiederholt. Sie beginnt mit einer Überschrift im seriellen Monitor, die den Beginn der Gaskonzentrationsmessungen anzeigt. Dann wird für jeden vom Sensor unterstützten Gas-Typ die display() Funktion aufgerufen: Kohlenmonoxid (CO), Methan (CH4), Ethanol (C2H5OH), Wasserstoff (H2), Ammoniak (NH3) und Stickstoffdioxid (NO2). Für jedes Gas wird die Konzentration in PPM mit mics.getGasData() und dem entsprechenden Gas-Identifier ausgelesen.
Nach der Ausgabe aller Gaskonzentrationen wartet das Programm eine Sekunde. Du kannst den Sensor mit mics.sleepMode() in den Schlafmodus versetzen, um Energie zu sparen, bis der nächste Messzyklus beginnt.
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
// mics.sleepMode();
}
Beispielausgabe
Das folgende Beispiel zeigt die Ausgabe im Serial Monitor. Nach dem Aufwärmen gibt der Code die Gaskonzentrationen für eine erste Messung aus, die alle 0 sind.
Während der zweiten Messperiode habe ich etwas Glasreiniger in die Nähe des Sensors gesprüht, was sich in den erhöhten Werten für Methan und Ammoniak in den Sensordaten zeigt.
Sensor is awake! Warming up, do not touch sensor.....................ready! Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 0.0 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 0.0 PPM NO2 (Nitrogen Dioxide): 0.0 PPM Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 5402.4 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 87.7 PPM NO2 (Nitrogen Dioxide): 0.0 PPM
Fazit
In diesem Tutorial hast du gelernt, wie man den Fermion MEMS Multi-Gas Sensor mit einem Arduino UNO verwendet, um verschiedene Gase zu erkennen. Der Sensor lässt sich auch problemlos mit anderen Mikrocontrollern wie dem ESP32 einsetzen.
Beachte, dass es eine ganze Reihe verschiedener MEMS-Sensoren gibt. Für einen Überblick siehe den Review of the DFRobot Fermion MEMS Gas Sensor Series Artikel und für Details unsere speziellen Beiträge:
- 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
Wenn du Fragen hast, kannst du sie gerne im Kommentarbereich stellen.
Viel Spaß beim Tüfteln 😉

