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.

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.
| Eigenschaft | Wert |
|---|---|
| Versorgungsspannung | 5 V |
| Heizstrom | ~150 mA (höchstens 800 mW) |
| Erkannte Gase | LPG, Propan, Butan, Methan, Wasserstoff, Alkohol, Rauch |
| Messbereich | 300–10.000 ppm |
| Aufwärmzeit | Bei jedem Einschalten einige Minuten, beim ersten Einsatz 24–48 Stunden |
| Ausgänge | AO (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.
| Modulpin | Funktion | Arduino Uno |
|---|---|---|
| VCC | Versorgung (inklusive Heizung) | 5V |
| GND | Masse | GND |
| AO | Analogausgang, steigt mit dem Gas | A0 |
| DO | Digitalausgang, LOW bei überschrittener Schwelle | D2 |

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:
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:
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.
Die MQ-Sensorfamilie: Welcher passt?
| Sensor | Am empfindlichsten für | Typischer Einsatz |
|---|---|---|
| MQ-2 | LPG, Propan, Methan, Wasserstoff, Rauch | Allgemeiner Gas- und Rauchalarm |
| MQ-3 | Alkohol | Alkoholtester |
| MQ-4 | Methan (Erdgas) | Erdgas-Leckalarm |
| MQ-5 | LPG, Erdgas | Gasalarm für die Küche |
| MQ-7 | Kohlenmonoxid (CO) | CO-Überwachung (Heizzyklus nötig) |
| MQ-9 | CO und brennbare Gase | Rund um Öfen und Heizkessel |
| MQ-135 | Ammoniak, Benzol, Rauch, NOx | Luftqualitä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:
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.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
Verwendung von Gassensoren
Projekt, das die Gasdichte in der Umgebung mit einem Gassensor der MQ-Serie misst und einen Alarm mit LED und Summer auslöst, wenn der Schwellenwert überschritten wird. Lehrt analoge Gasmessung und Sc

Flammen- und Gassensor-Alarm
Hochentwickeltes Sicherheitsprojekt, das mit blinkender LED und Summer alarmiert, wenn ein Feuer oder ein Gasaustritt erkannt wird, indem Flammensensor und Gassensor zusammen verwendet werden.

ESP32 MQ-2 Gas-/Rauchmelder-Alarm
In diesem Projekt wird die Erkennung brennbarer Gase (LPG, Methan, Propan) und Rauch mit einem MQ-2-Gassensormodul durchgeführt; bei Erkennung ertönt über einen passiven Summer ein sirenenähnlicher Alarmton. Der digitale Schwellenausgang (DO) des Sensors wird an GPIO 4 des ESP32 angeschlossen; überschreiten Gas oder Rauch den Schwellenwert, geht DO auf LOW und der Alarm wird ausgelöst. Die Empfindlichkeit wird über das Potentiometer eingestellt. Der passive Summer wird mit `tone()` angesteuert.
Weitere Artikel
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.

