Skip to Content

Fermion MEMS Kohlenmonoxid CO Gassensor GM-702B mit Arduino

Fermion MEMS Kohlenmonoxid CO Gassensor GM-702B mit Arduino

Der Fermion: MEMS CO-Gasdetektionssensor ist ein kompakter Breakout-Board-Sensor, der zur Erkennung von Kohlenmonoxid (CO) Gas unter Verwendung moderner mikroelektromechanischer Systeme (MEMS) Technologie entwickelt wurde. Er integriert ein GM-702B MEMS-Sensorelement, das auf CO-Konzentrationen in der Luft reagiert, indem es eine analoge Spannung proportional zur Gaspräsenz liefert.

CO ist extrem giftig und verursacht jährlich etwa 400 Todesfälle in den USA. Häufige Quellen sind unsachgemäß gewartete oder verwendete Heizgeräte, Gasgeräte, Holzkohlegrills und laufende Motoren in geschlossenen Räumen. Da es für die menschlichen Sinne nicht wahrnehmbar ist, ist ein CO-Alarm die einzige Möglichkeit, seine Anwesenheit zu erkennen.

In diesem Tutorial lernst du, wie man Kohlenmonoxid mit dem Sensor erkennt. Wir bauen ein einfaches Alarmsystem, das eine LED blinken lässt oder einen Summer ertönen lässt, wenn die Kohlenmonoxidkonzentration zu hoch wird.

Benötigte Teile

Du benötigst einen Fermion CO-Sensor von DFRobot. Als Mikrocontroller habe ich für dieses Projekt ein Arduino Uno verwendet, aber auch andere Arduino-Modelle oder ein ESP32 funktionieren.

Für unser Alarmsystem brauchen wir außerdem eine LED und einen Summer, die du bei Amazon bekommst. Außerdem verwenden wir ein kleines SSD1306 OLED-Display, um den gemessenen CO-Wert anzuzeigen.

Fermion MEMS CO Sensor

Passiver Summer

Widerstands- & LED-Kit

OLED display

OLED Display

Arduino

Arduino Uno

USB Data Sync cable Arduino

USB-Kabel für Arduino UNO

Dupont wire set

Dupont-Kabelset

Half_breadboard56a

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 Kohlenmonoxid (CO) Sensors

Der Fermion MEMS Kohlenmonoxid (CO) Sensor Breakout basiert auf einem kleinen MEMS-Gassensorelement. Dieses Element ist eine mikroelektromechanische Struktur, die mit einem proprietären Sensormaterial beschichtet ist, das seine elektrischen Eigenschaften ändert, wenn es CO-Molekülen ausgesetzt wird.

Das Breakout-Board enthält unterstützende passive Bauteile und liefert ein einzelnes analoges Ausgangssignal. Stromversorgung und Masse werden über Standard-3,3 V/5 V Logikpegel geführt.

Funktionsprinzip

Der Sensorkern nutzt MEMS-Technologie zur Erkennung von CO-Gas. Diese Technologie beruht auf der Wechselwirkung zwischen CO-Molekülen und einer chemisch empfindlichen Oberfläche der MEMS-Struktur. Bei Anwesenheit von CO ändert sich der Widerstand des Sensormaterials.

Die interne Schaltung des Breakout-Boards wandelt diese Widerstandsänderung in eine proportionale analoge Spannung am Ausgangspin um. Es gibt keine digitale Verarbeitung an Bord, daher muss das rohe analoge Signal vom Mikrocontroller gelesen und interpretiert werden.

Elektrische Eigenschaften

Der Sensor arbeitet mit einer Versorgungsspannung zwischen 3,3 V und 5 V. Der typische Betriebsstrom ist niedrig, im Bereich von einigen zehn Milliampere, was den Einsatz in batteriebetriebenen Systemen mit geeigneter Energieverwaltung ermöglicht.

Die analoge Ausgangsspannung variiert mit der Gaskonzentration, ist jedoch nicht auf kalibrierte Einheiten bezogen. Das Signal muss über einen Analog-Digital-Wandler des Host-Mikrocontrollers abgetastet werden.

Signalverhalten und Aufwärmzeit

Der Sensor benötigt nach dem Einschalten eine kurze Aufwärmzeit, bevor die Messwerte stabil sind. Während dieser Zeit erreicht das MEMS-Element ein thermisches und elektrisches Gleichgewicht. Nach dem Aufwärmen ändert sich die Ausgangsspannung entsprechend der CO-Konzentration.

Einschränkungen

Der Sensor verfügt nicht über eine integrierte Temperatur- oder Feuchtigkeitskompensation. Diese Umgebungsfaktoren können die analoge Ausgangsspannung beeinflussen, daher können zusätzliche Sensoren in Systemen mit stabileren Messungen erforderlich sein. Außerdem erfordert die unkalibrierte Ausgabe eine externe Kalibrierung gegen bekannte Referenzwerte, um absolute CO-Konzentrationen zu bestimmen.

Technische Spezifikationen

Die folgende Tabelle fasst die technischen Spezifikationen des Fermion CO Sensors GM-702B zusammen:

Parameter Spezifikation
Sensorelement GM-702B MEMS Gassensor
Zielgas Kohlenmonoxid (CO)
Erkennungsbereich 5 ppm bis 5000 ppm (typisch)
Ausgangssignal Analoge Spannung
Betriebsspannung 3,3 V bis 5 V DC
Betriebsstrom < 20 mA (typisch)
Schnittstellentyp Einzelner analoger Ausgangspin
Reaktionstyp Widerstandsänderung, in Spannung umgewandelt
Betriebstemperatur −10 °C bis +50 °C
Betriebsfeuchtigkeit 15 % bis 90 % relative Luftfeuchtigkeit (nicht kondensierend)
Kalibrierung Keine werkseitige Kalibrierung vorhanden

Pinbelegung

Physisch stellt das Breakout-Board drei Pins zur Verbindung bereit: analoger Ausgang (A), Versorgungsspannung (VCC) und Masse (GND). Das folgende Bild zeigt die Pinbelegung des Boards:

Pinout of Fermion Smoke Sensor GM-202B Board
Pinbelegung des Fermion CO Sensors GM-702B Boards

Schaltpläne

Das folgende Bild zeigt den Schaltplan des Fermion CO Gas Sensors GM-702B Boards:

Schematics of Fermion CO Sensor GM-702B
Schaltplan des Fermion CO Sensors GM-702B (source)

Man sieht den Spannungsregler und den GM-702B Sensorchip mit einem Lastwiderstand von 10K am Ausgang VOUT.

Vorbereitung

Der Sensor wird mit einer Schutzfolie geliefert, die entfernt werden muss. Auf der Oberseite des Sensors befindet sich eine gelbe Folie, die die Luftzufuhrlöcher abdeckt. Verwende eine Pinzette, um die Folie abzuziehen. Die Fotos unten zeigen den Sensor mit Schutzfolie, halb entfernt und vollständig entfernt (von links nach rechts):

Entfernen der Schutzfolie

Beachte, dass der Sensor eine Aufwärmzeit benötigt, um betriebsstabil zu werden. Dies kann bei der ersten Nutzung mehrere Minuten dauern, bis die Messwerte stabil sind. Wenn der Sensor längere Zeit nicht benutzt wurde, empfiehlt es sich, ihn 48 bis 168 Stunden laufen zu lassen:

Preheating times for GM-202B Smoke sensor
Einbrennzeiten für GM-702B Rauchsensor (source)

Technische Spezifikationen

Die folgende Tabelle fasst die technischen Spezifikationen des Fermion CO Sensors GM-702B zusammen:

Spezifikation Details
Sensormodell GM-702B
Erkanntes Gas Kohlenmonoxid (CO)
Erkennungsbereich ~5 ppm bis 5000 ppm CO
Ausgangstyp Analoge Spannung (proportional/indikativ)
Versorgungsspannung 3,3 V – 5 V DC
Betriebsstrom < 20 mA
Empfindlichkeit R₀ (in Luft) / Rₛ (bei 150 ppm CO) ≥ 3
Betriebstemperatur -10 °C bis +50 °C
Betriebsfeuchtigkeit 15 % – 90 % relative Luftfeuchtigkeit (nicht kondensierend)
Aufwärmzeit Empfohlen ≥ 5 min (länger nach Lagerung)
Lebensdauer ≥ 5 Jahre (in Luft)
Breakout-Board Größe ~13×13×2,5 mm (inkl. PCB)
Schnittstelle 3-Pin: A (analog out), VCC, GND
Typische Anwendungen CO-Leckalarme, Umweltüberwachung, Sicherheitserkennungssysteme

Hier ist ein Link zum Datenblatt des GM-702B Sensors mit weiteren technischen Daten:

Fermion GM-702B CO Sensor versus MQ-7 CO Sensor

Der Fermion MEMS Kohlenmonoxid (CO) Sensor und der MQ-7 CO-Gassensor werden beide häufig in Hobbyanwendungen zur Erkennung von Kohlenmonoxid eingesetzt, unterscheiden sich jedoch im Sensorkonzept, in den Leistungsmerkmalen und den Integrationsanforderungen.

Sensortechnologie

Der Fermion MEMS Sensor verwendet ein mikroelektromechanisches System (MEMS) Sensorelement, das auf CO mit einer Änderung seiner elektrischen Eigenschaften reagiert. Diese Änderung wird auf dem Breakout-Board in eine proportionale analoge Spannung umgewandelt.

Der MQ-7 hingegen ist ein Metalloxid-Halbleiter (MOX) Sensor. Er basiert auf einer beheizten Zinnoxid-Oberfläche, deren Widerstand sich ändert, wenn CO-Moleküle mit der beheizten Sensorschicht interagieren. Dieses Prinzip führt dazu, dass der MQ-7 typischerweise einen höheren durchschnittlichen Stromverbrauch als der Fermion MEMS Sensor hat.

Stromverbrauch und Aufwärmzeit

Der MEMS Sensor stabilisiert sich in der Regel schneller und verbraucht weniger Strom, da er keinen separaten Heizer mit hohem Strom antreibt.

Der MQ-7 verwendet dagegen ein periodisches Heizzyklusverfahren, um die Empfindlichkeit zu erreichen, und muss mit spezifischen Spannungen und Zeitabläufen betrieben werden, um reproduzierbare Messwerte zu liefern. Dies erhöht die Komplexität der Firmware und den Energieverbrauch.

Ausgangssignal

Beide Sensoren liefern ein analoges Ausgangssignal, das von einem Analog-Digital-Wandler eines Mikrocontrollers wie Arduino oder ESP32 gelesen werden muss. Keiner der Sensoren liefert jedoch von Haus aus einen kalibrierten digitalen Konzentrationswert.

Selektivität und Stabilität

In Bezug auf Selektivität und Stabilität zeigt der MEMS Sensor in der Regel eine geringere Kreuzempfindlichkeit und eine bessere Langzeit-Basislinienstabilität im Vergleich zu MOX-Sensoren wie dem MQ-7, die auf mehrere reduzierende Gase reagieren und von Umgebungsfeuchtigkeit und Temperatur beeinflusst werden.

Zusammenfassung

Insgesamt eignet sich der Fermion MEMS CO Sensor besser für Projekte, die niedrigen Stromverbrauch, schnellere Reaktion und einfachere Integration schätzen, während der MQ-7 für einfache CO-Erkennung zu geringeren Kosten attraktiv ist, aber eine sorgfältigere Stromsteuerung, Kalibrierung und Umweltkompensation in der Firmware erfordert.

Anschluss des Fermion CO Sensors an Arduino UNO

Der Anschluss des Sensors an ein Arduino UNO ist einfach. Verbinde VCC mit 5V (oder 3,3V), GND mit Masse und A mit dem analogen Eingang A0, wie unten gezeigt:

Connecting Smoke Sensor to Arduino UNO
Anschluss des CO Sensors an Arduino UNO

Code-Beispiele

Kohlenmonoxid-Konzentration auslesen

Im ersten Beispiel lesen wir einfach die vom Sensor gemessenen Werte aus und geben sie jede Sekunde im Serial Monitor aus:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(1000);
}

Du wirst Werte zwischen 0 und 1023 sehen, abhängig von der Menge an Kohlenmonoxid in der Umgebung.

Wenn der Sensor noch nicht vollständig aufgewärmt ist, siehst du im Serial Monitor eine kontinuierlich abnehmende Wertefolge. Siehe unten:

Nach einigen Minuten stabilisieren sich die Messwerte. In meinem Fall bei etwa 130. Du kannst den Sensor testen, indem du darauf ausatmest. Du wirst einen plötzlichen Anstieg des Messwerts sehen:

Da der Sensor nicht kalibriert ist, kannst du ihn nicht verwenden, um tatsächliche ppm (Teile pro Million) oder mg/m 3 Konzentrationen zu messen. Du kannst ihn jedoch verwenden, um einen Kohlenmonoxid-Alarm zu bauen, was wir im nächsten Abschnitt tun werden.

Kohlenmonoxid-Alarm mit LED

Der folgende Code implementiert einen einfachen Kohlenmonoxid-Alarm. Er schaltet eine LED ein, wenn der gemessene CO-Wert einen vordefinierten Schwellenwert von 160 überschreitet:

byte sensorPin = A0;
byte ledPin = 13;
int threshold = 160;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  digitalWrite(ledPin, val > threshold ? HIGH: LOW);
  delay(100);
}

Ich habe die LED mit einem 220-Ohm-Widerstand an GPIO 13 als Alarm-LED angeschlossen, wie unten gezeigt:

Anschluss der Alarm-LED an Arduino UNO

Beachte, dass du für ein zuverlässiges Alarmsystem eventuell auch einen Temperatur- und Feuchtigkeitssensor hinzufügen möchtest, da die Messwerte des Sensors von Temperatur und Feuchtigkeit beeinflusst werden. Alternativ könntest du auch ein gleitendes Fenster verwenden, um den Sensor-Drift durch Temperatur und Feuchtigkeit zu kompensieren.

Kohlenmonoxid-Alarm mit passivem Summer

Statt einer LED kannst du auch einen Summer als Alarmsignal verwenden. Im folgenden Code wird ein passiver Summer aktiviert, wenn die gemessene CO-Konzentration den Schwellenwert überschreitet:

byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 160;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  if (val > threshold) {
     tone(buzzerPin, 500);
  } else {
    noTone(buzzerPin);
  }
  delay(100);
}

Das folgende Bild zeigt, wie du den Summer an die Schaltung anschließt. Verbinde zuerst den Minuspol des Summers mit GND des Arduino (schwarzes Kabel). Dann verbinde den Pluspol über einen 100Ω Widerstand mit GPIO 11 (rotes Kabel):

Connecting alarm buzzer to Arduino UNO
Anschluss des Alarm-Summers an Arduino UNO

Achte darauf, dass die Polarität des Summers korrekt ist und dass es sich um einen passiven Summer handelt, der an einen PWM-fähigen GPIO-Port angeschlossen wird. Weitere Informationen findest du im Active and Passive Piezo Buzzers with Arduino Tutorial.

Wenn du einen aktiven Summer hast, musst du den vorherigen LED-Alarm-Code verwenden, da dieser mit dem tone()-Befehl nicht richtig funktioniert.

Anzeige der Kohlenmonoxid-Konzentration auf OLED

Im letzten Beispiel zeigen wir die gemessenen Rauchkonzentrationswerte auf einem kleinen OLED an. Der Code gibt „CO“ und den Wert in der Mitte des Displays aus und aktualisiert den angezeigten Wert alle 100 ms:

#include "Adafruit_SSD1306.h"  // Version 2.5.16

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE, BLACK);
  oled.clearDisplay();
}

void loop() {
  static char text[30];

  int val = analogRead(A0);

  oled.setTextSize(2);
  oled.setCursor(50, 10);  
  oled.print("CO");

  sprintf(text, " %d ", val);
  oled.setTextSize(2);
  oled.setCursor(35, 40);
  oled.print(text);

  oled.display();

  delay(100);
}

Beachte, dass du die Adafruit_SSD1306 Bibliothek zur Steuerung des OLED benötigst. Du kannst sie wie gewohnt über den Library Manager installieren:

Adafruit_SSD1306 library installed in Library Manager
Adafruit_SSD1306 Bibliothek im Library Manager installiert

Der Anschluss des OLED an das Arduino ist einfach. Verbinde SDA und SCL des OLED mit den Pins A4 und A5 des Arduino. Für die Stromversorgung: Da das OLED mit 5V betrieben werden kann, können wir die Stromversorgungsleitungen teilen. Verbinde VCC mit 5V und GND mit Masse. Das folgende Bild zeigt die komplette Verkabelung:

Connecting OLED and Sensor to Arduino UNO
Anschluss von OLED und Sensor an Arduino UNO

Wenn du Hilfe mit dem OLED brauchst, schau dir das Use SSD1306 I2C OLED Display With Arduino Tutorial an.

Fazit

In diesem Tutorial hast du gelernt, wie man den Fermion CO Sensor mit einem Arduino UNO verwendet, um Kohlenmonoxid zu erkennen. Der Sensor kann auch problemlos mit anderen Mikrocontrollern wie dem ESP32 verwendet werden.

MEMS-Gassensoren haben den Vorteil, klein zu sein, sehr wenig Strom zu verbrauchen (< 20mA) und eine kurze Aufwärmzeit zu haben. Dennoch werden sie von Umgebungstemperatur und Luftfeuchtigkeit beeinflusst.

Außerdem ist der Fermion Kohlenmonoxid-Sensor nicht kalibriert und kann daher nicht direkt zur Messung tatsächlicher Konzentrationen in ppm-Einheiten verwendet werden.

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:

Wenn du Fragen hast, kannst du sie gerne im Kommentarbereich stellen.

Viel Spaß beim Tüfteln 😉