Bauteile · 5 Min. Lesezeit

MQ-2 Gassensor: Gas- und Rauchalarm mit Arduino bauen

Wie funktioniert der Gassensor MQ-2? LPG, Methan und Rauch erkennen, Modulpins, Vorheizen, analog und digital lesen, R0-Kalibrierung, die MQ-Sensorfamilie sowie Gasalarm mit ESP32 und Pico.

Der MQ-2 ist ein günstiger und sehr verbreiteter Gassensor, der brennbare Gase und Rauch in der Luft erkennt. Er reagiert auf LPG (Flüssiggas), Propan, Butan, Methan (Erdgas), Wasserstoff, Alkoholdampf und Rauch. In Arduino-Projekten baut man damit Gasalarme für die Küche, Rauchmelder und Luftqualitätsanzeigen. In diesem Artikel siehst du Schritt für Schritt, was im Sensor steckt, wie du ihn richtig anschließt, warum das Vorheizen unverzichtbar ist und wie du die gelesenen Werte deutest.

Gassensormodul MQ-2
Gassensormodul MQ-2: Unter dem Metallgitter sitzt das beheizte Sensorelement; das Modul hat 4 Pins: VCC, GND, DO und AO.

Wie funktioniert der MQ-2?

Unter dem Metallgitter befinden sich ein kleines, mit Zinndioxid (SnO₂) beschichtetes Keramikelement und ein Heizdraht, der es auf einige hundert Grad erhitzt. In sauberer Luft ist der Widerstand des Elements hoch. Erreicht ein brennbares Gas oder Rauch das Element, senkt eine chemische Reaktion an der Oberfläche den Widerstand; je dichter das Gas, desto geringer der Widerstand. Das Modul wandelt diese Widerstandsänderung über einen Spannungsteiler in eine Spannung um: Je mehr Gas, desto höher die Spannung am Pin AO.

EigenschaftWert
Versorgungsspannung5 V
Heizstrom~150 mA (höchstens 800 mW)
Erkannte GaseLPG, Propan, Butan, Methan, Wasserstoff, Alkohol, Rauch
Messbereich300–10.000 ppm
AufwärmzeitBei jedem Einschalten einige Minuten, beim ersten Einsatz 24–48 Stunden
AusgängeAO (analog), DO (digital, Komparator LM393)

Modulpins und Anschluss

Ein nackter MQ-2-Sensor hat 6 Beine, in Projekten nimmt man aber meist ein fertiges Modul. Darauf sitzen der Lastwiderstand, ein LM393-Komparator, ein kleines Potentiometer zum Einstellen der Schwelle, eine Betriebs-LED und eine Alarm-LED. Pin AO liefert eine Spannung proportional zur Gaskonzentration, Pin DO wechselt seinen Zustand, sobald der Gaspegel die mit dem Potentiometer eingestellte Schwelle überschreitet.

ModulpinFunktionArduino Uno
VCCVersorgung (inklusive Heizung)5V
GNDMasseGND
AOAnalogausgang, steigt mit dem GasA0
DODigitalausgang, LOW bei überschrittener SchwelleD2
Vorder- und Rückseite eines MQ-Sensormoduls
Rückseite eines Moduls der MQ-Serie (links): Komparator LM393, blaues Schwellwert-Potentiometer, LEDs POWER und DOUT. Der MQ-135 rechts nutzt denselben Modulaufbau.
Um die Schwelle von DO einzustellen, lass den Sensor einige Minuten in sauberer Luft warmlaufen, dreh dann das Potentiometer bis zu dem Punkt, an dem die DOUT-LED gerade erlischt, und noch ein Stück weiter. So lösen kleine Schwankungen keinen Alarm aus, ein echter Gasanstieg lässt die LED aber sofort aufleuchten.

Warum ist das Vorheizen wichtig?

Das Sensorelement reagiert erst richtig, wenn es seine Betriebstemperatur erreicht hat. In den ersten Minuten nach dem Einschalten startet der AO-Wert hoch, sinkt dann langsam und pendelt sich ein; Messungen in dieser Zeit sind irreführend. Deshalb ist es eine gute Gewohnheit, im Code die ersten 1–3 Minuten keine Alarmprüfung zu machen. Nutzt du einen neuen Sensor zum ersten Mal, wird für stabile Werte empfohlen, ihn 24–48 Stunden durchgehend laufen zu lassen (Einbrennen, Burn-in). Während die Heizung läuft, wird das Metallgitter spürbar warm; das ist normal, aber leg keine brennbaren Materialien neben den Sensor.

Gas- und Rauchalarm mit Arduino

Der folgende Code liest den Analogwert, gibt ihn im seriellen Monitor aus und prüft zusätzlich den Pin DO. Überschreitet der Analogwert die Schwelle oder geht DO auf LOW, ertönt ein Buzzer:

Arduino (C++)
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400;          // analog eşik (0–1023) / analog threshold
5
6void setup() {
7  Serial.begin(9600);
8  pinMode(DO_PIN, INPUT);
9  pinMode(BUZZER, OUTPUT);
10  delay(60000);                 // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14  int value = analogRead(AO_PIN);
15  bool gas = digitalRead(DO_PIN) == LOW;   // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17  Serial.println(value);
18
19  if (value > LIMIT || gas) {
20    tone(BUZZER, 2000, 300);    // alarm sesi / alarm tone
21  }
22  delay(500);
23}

Der Wert 400 ist keine feste Regel: Der Wert in sauberer Luft kann je nach Sensor, Raumtemperatur und Luftfeuchtigkeit zwischen 100 und 300 liegen. Lass den Sensor zuerst einige Minuten laufen, lies den Wert in sauberer Luft im seriellen Monitor ab und setz die Schwelle deutlich darüber. Zum Testen genügt es, das Gas eines Feuerzeugs kurz an den Sensor zu halten, ohne es anzuzünden; der Wert steigt innerhalb von Sekunden.

Vom Analogwert zu ppm: R0-Kalibrierung

Auf dem Modul bildet der Sensor mit einem Lastwiderstand (RL, bei den meisten Modulen 1 kΩ) einen Spannungsteiler. Aus der AO-Spannung kannst du den Widerstand des Sensors (Rs) berechnen. Die Diagramme im Datenblatt geben die Gaskonzentration nicht über Rs direkt an, sondern über das Verhältnis Rs/R0; R0 ist der Widerstand des Sensors in 1000 ppm Wasserstoff, und in sauberer Luft beträgt Rs/R0 etwa 9,8. Du findest R0 also, indem du den Sensor in sauberer Luft misst und durch 9,8 teilst:

Arduino (C++)
1const float RL = 1.0;           // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8;    // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6  float v = analogRead(A0) * 5.0 / 1023.0;
7  if (v < 0.01) v = 0.01;       // sıfıra bölmeyi önle / avoid dividing by zero
8  return RL * (5.0 - v) / v;    // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12  Serial.begin(9600);
13  delay(60000);                 // ön ısıtma / warm-up
14  float sum = 0;
15  for (int i = 0; i < 50; i++) {
16    sum += readRs();
17    delay(100);
18  }
19  R0 = (sum / 50) / CLEAN_AIR;  // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23  float ratio = readRs() / R0;  // gaz arttıkça küçülür / falls as gas rises
24  Serial.println(ratio);
25  delay(1000);
26}

Liegt das Verhältnis um 9,8, ist die Luft sauber; sinkt es unter 1, bedeutet das eine hohe Gaskonzentration. Um das Verhältnis in ppm umzurechnen, nutzt man die logarithmischen Kurven aus dem Datenblatt; Bibliotheken wie MQUnifiedsensor enthalten diese Kurven bereits. Betrachte das Ergebnis trotzdem als Näherung: Temperatur, Luftfeuchtigkeit und das Alter des Sensors beeinflussen die Messung, und da der MQ-2 auf viele Gase gleichzeitig reagiert, kann er nicht sicher unterscheiden, welches Gas er misst. Einen DHT11 zur Überwachung von Temperatur und Feuchte dazuzunehmen, ist eine gute Idee.

Der MQ-2 ist ein Sensor zum Lernen und für Hobbyprojekte, kein zertifizierter Gasmelder. Nutze ihn zu Hause niemals als einzigen Schutz vor Gaslecks oder Kohlenmonoxidvergiftung; verwende dafür normgerechte Melder aus dem Handel (zum Beispiel nach EN 50194 oder EN 50291). Betrachte deinen eigenen Alarm als zusätzliches System neben ihnen.

Die MQ-Sensorfamilie: Welcher passt?

SensorAm empfindlichsten fürTypischer Einsatz
MQ-2LPG, Propan, Methan, Wasserstoff, RauchAllgemeiner Gas- und Rauchalarm
MQ-3AlkoholAlkoholtester
MQ-4Methan (Erdgas)Erdgas-Leckalarm
MQ-5LPG, ErdgasGasalarm für die Küche
MQ-7Kohlenmonoxid (CO)CO-Überwachung (Heizzyklus nötig)
MQ-9CO und brennbare GaseRund um Öfen und Heizkessel
MQ-135Ammoniak, Benzol, Rauch, NOxLuftqualität in Innenräumen

MQ-2 mit ESP32 und Raspberry Pi Pico

Die Heizung des MQ-2 braucht 5 V; schließe VCC des Moduls daher an den Pin VIN (5V) des ESP32 an. Wird das Modul mit 5 V versorgt, kann der Ausgang AO aber bis auf 5 V steigen, während die Analogeingänge von ESP32 und Pico höchstens 3,3 V vertragen. Setz zwischen AO und den Analogpin einen Spannungsteiler aus 10 kΩ und 20 kΩ, um das Signal auf ein sicheres Niveau zu bringen. Mit dem ESP32 kannst du bei erkanntem Gas ganz einfach eine Nachricht aufs Handy schicken oder über ein Relais einen Lüfter einschalten. Auf dem Raspberry Pi Pico sieht derselbe Alarm in MicroPython so aus:

MicroPython
1from machine import ADC, Pin
2import time
3
4gas = ADC(26)                  # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000                  # 0–65535 arası eşik / threshold
7
8time.sleep(60)                 # ön ısıtma / warm-up
9while True:
10    value = gas.read_u16()
11    print(value)
12    buzzer.value(1 if value > LIMIT else 0)
13    time.sleep(0.5)

Projektideen mit dem MQ-2

  • Gasalarm für die Küche: Ein Alarm, der bei einem Leck an Gasflasche oder Erdgasleitung einen Buzzer ertönen und eine rote LED leuchten lässt.
  • Rauchmelder: Ein System, das in der Werkstatt bei Lötdampf oder Brandgeruch warnt.
  • Automatische Lüftung: Eine Schaltung, die bei steigendem Gaspegel über ein Relais einen Abluftventilator einschaltet.
  • Flammen- und Gasalarm: Den MQ-2 mit einem Flammensensor kombinieren und beide Gefahren gleichzeitig überwachen.
  • ESP32-Melder mit Benachrichtigung: Bei erkanntem Gas eine Telegram-Nachricht aufs Handy schicken.
  • Luftqualitätsanzeige: Das gemessene Verhältnis als Diagramm auf einem OLED-Display anzeigen.

Typische Fehler und ihre Lösungen

  • Alarm direkt nach dem Einschalten: Der Sensor ist noch nicht warm; überspringe die Alarmprüfung in den ersten 1–3 Minuten.
  • Der Wert ändert sich nie: Statt AO ist DO am Analogeingang angeschlossen, oder das Modul bekommt keine 5 V.
  • Die DOUT-LED leuchtet ständig: Die Schwelle am Potentiometer ist zu niedrig; dreh es in sauberer Luft, bis die LED erlischt.
  • Die Werte wandern im Tagesverlauf: Temperatur und Luftfeuchtigkeit ändern sich; leg die Schwelle regelmäßig in sauberer Luft neu fest.
  • Der Analogwert steht am ESP32 immer am Maximum: Das 5-V-Signal von AO ist direkt angeschlossen; nutze einen Spannungsteiler.
  • Der Akku ist schnell leer: Die Heizung zieht dauerhaft etwa 150 mA; der MQ-2 eignet sich nicht für langen Akkubetrieb.

Den MQ-2 mit einem Buzzer und einer LED zu kombinieren, ist der einfachste Weg von Sensoren zu einem echten Warnsystem. In der BlueGrays-App findest du Projekte zur Verwendung des Gassensors, einen Flammen- und Gasalarm und einen Gas- und Rauchmelder mit ESP32 und MQ-2 – mit Schaltplänen und Code.

Häufige Fragen

Welche Gase erkennt der MQ-2?

Der MQ-2 ist empfindlich für LPG, Propan, Butan, Methan (Erdgas), Wasserstoff, Alkoholdampf und Rauch. Auf Kohlenmonoxid reagiert er nur schwach. Da er auf viele Gase gleichzeitig reagiert, kann er allein nicht unterscheiden, welches Gas vorhanden ist.

Wie lange muss sich der MQ-2 aufwärmen?

Warte bei jedem Einschalten einige Minuten (in der Praxis 1–3 Minuten), bis sich die Werte einpendeln. Nutzt du einen neuen Sensor zum ersten Mal, wird für möglichst stabile Ergebnisse empfohlen, ihn 24–48 Stunden durchgehend laufen zu lassen.

MQ-2 oder MQ-4 für Erdgaslecks?

Der MQ-2 erkennt auch Methan, reagiert aber auf viele Gase. Für Erdgas (Methan) ist der selektivere MQ-4 besser geeignet. In beiden Fällen gilt: Ersetze einen zertifizierten Gasmelder nicht durch einen Hobbysensor.

Kann ich mit dem MQ-2 Kohlenmonoxid messen?

Der MQ-2 reagiert auf Kohlenmonoxid nur schwach. Für CO nimmt man den MQ-7, dessen Heizung zwischen hoher und niedriger Spannung wechselt; für deine Sicherheit verwende aber unbedingt einen CO-Melder nach EN 50291.

Ist es normal, dass der Sensor heiß wird?

Ja. Die eingebaute Heizung hält das Sensorelement ständig auf hoher Temperatur, deshalb fühlt sich das Metallgitter deutlich heiß an. Halte den Sensor von brennbaren Materialien fern und fass ihn im Betrieb nicht an.

Kann ich den MQ-2 mit Akku betreiben?

Ja, aber nicht lange: Die Heizung zieht dauerhaft etwa 150 mA. Eine Powerbank mit 2000 mAh hält etwa 13 Stunden. Die Laufzeit für dein eigenes Projekt berechnest du mit dem Werkzeug Akkulaufzeit; wo durchgehend überwacht werden muss, nimm ein Netzteil.

Alle Projekte ansehen

Lerne Schritt für Schritt, wie der Gassensor MQ-2 funktioniert, warum er sich aufwärmen muss, wie du ihn an den Arduino anschließt, die Schwelle einstellst und einen Gas- und Rauchalarm mit Buzzer baust.

MQ-2 Gassensor: Gas- und Rauchalarm mit Arduino bauen | BlueGrays