Arduino - MQ3 Alkoholsensor

Dieses Tutorial demonstriert die Anbindung eines MQ3-Alkohol-Sensors an Arduino, um Ethanol- und Alkoholdampfkonzentrationen in Ihrer Umgebung zu überwachen. Der MQ3-Sensor findet breite Anwendung in DIY-Atemalkoholtestgeräten, Alarmen zur Alkoholerkennung und Projekten zur Überwachung der Luftqualität.

Du wirst entdecken:

Arduino mit MQ-3-Alkohol-Gassensor-Modul

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×MQ3 Alcohol Sensor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über MQ-3-Alkohol-Sensor

Als Chemiresistor betrieben, ist das MQ3 ein Metalloxid-Halbleiter (MOS)-Bauelement, das das Vorhandensein von Alkohol durch Widerstandsänderungen in seinem Sensormaterial erkennt. Dieses Modul zeichnet sich durch eine hohe Empfindlichkeit gegenüber Ethanoldampf über einen breiten Konzentrationsbereich aus.

Im Kern verwendet der Sensor eine Zinnoxid-Schicht (SnO2), die auf eine Aluminiumoxid-Keramikbasis aufgetragen ist. Durch das Erhitzen wird das Zinnoxid aktiviert, wodurch es auf Alkoholmoleküle reagiert. Ein Edelstahl-Schutzgitter (Explosionsschutzgitter) umgibt den Sensor, schützt das Heizelement und lässt Gasmoleküle zur Detektionskammer hindurchtreten.

Beliebte Anwendungen für diesen Sensor umfassen den Bau von Atemalkoholtestern, Ausrüstung zur Erkennung von Alkohol am Steuer, Alkoholwarnsysteme und Umweltüberwachungsanwendungen zur Bestimmung von Alkohol in der Umwelt.

Technische Spezifikationen

  • Betriebsspannung: 5 V Gleichspannung (DC)
  • Lastwiderstand: 200 kΩ
  • Heizwiderstand: 33 Ω ± 5 %
  • Heizleistung: < 800 mW
  • Sensorwiderstand: 1 MΩ – 8 MΩ
  • Detektionsbereich: 25 – 500 ppm (Teile pro Million)
  • Vorheizzeit: 24–48 Stunden beim ersten Gebrauch

Verständnis von ppm: Die Abkürzung ppm steht für Teile pro Million und beschreibt das Verhältnis der Zielgas-Moleküle zu den Gesamtmolekülen. In der Praxis bedeutet ein Messwert von 500 ppm, dass 500 Alkoholmoleküle in jeder Million Gesamtgasmoleküle existieren, wobei die verbleibenden 999.500 anderen atmosphärischen Gasen ausmachen.

Pinbelegung

Vier Anschlussstifte sind am MQ3-Sensor-Modul verfügbar:

  • VCC-Pin: Über diesen Anschluss wird eine Versorgung von +5 V bereitgestellt.
  • GND-Pin: Mit Masse (0 V) verbinden.
  • DO-Pin: Digitalausgang, der auf LOW geht, wenn Alkohol den Schwellenwert überschreitet, bzw. auf HIGH, wenn darunter. Das integrierte Potentiometer ermöglicht die Einstellung des Schwellenwerts.
  • AO-Pin: Analoger Ausgang, der eine variable Spannung entsprechend dem Alkoholgehalt liefert. Zunehmender Alkoholgehalt erzeugt eine höhere Ausgangsspannung.
MQ-3-Alkoholsensor-Modul Pinbelegungsdiagramm

Zwei Anzeige-LEDs liefern visuelles Feedback:

  • PWR-LED: Leuchtet, wenn dem Modul Strom zugeführt wird.
  • DO-LED: Spiegelt den digitalen Ausgangszustand wider — leuchtet während der Alkohol-Erkennung und bleibt ansonsten aus.

Wie es funktioniert

Der Detektionsmechanismus des MQ3 beruht auf Widerstandsänderungen innerhalb seines Zinnoxid-(SnO2)-Halbleiterelements:

Saubere Luftbedingungen: Auf SnO2 angewandte Wärme bewirkt, dass Sauerstoff sich an seiner Oberfläche bindet, wodurch Elektronen festgehalten werden und eine Verarmungsschicht erzeugt wird. Diese Elektronenfalle erzeugt eine Barriere, die die elektrische Leitfähigkeit einschränkt und der Widerstand bleibt dadurch hoch.

Alkoholexposition: Alkoholmoleküle interagieren mit dem Sauerstoff an der Oberfläche, brechen die Sauerstoffbindungen und setzen gefangene Elektronen wieder in die Zinnoxid-Struktur frei. Dadurch erhöht sich die Leitfähigkeit deutlich – eine höhere Alkoholkonzentration bedeutet einen niedrigeren elektrischen Widerstand.

Von diesem Sensor stehen zwei Ausgabemodi zur Verfügung:

Digitalausgang (DO-Pin):

  • Einstellbares Potentiometer legt den Detektionsschwellenwert fest.
  • Wenn der gemessene Alkoholgehalt den Schwellenwert überschreitet, gibt DO LOW aus, während die LED-Anzeige leuchtet.
  • Wenn der Alkoholgehalt unterhalb des Schwellenwerts bleibt, bleibt DO HIGH und die LED bleibt dunkel.

Analogausgang (AO-Pin):

  • Die Ausgangsspannung korreliert direkt mit den gemessenen Alkoholwerten.
  • Mehr Alkoholdampf vorhanden = höhere Ausgangsspannung.
  • Weniger Alkoholdampf vorhanden = niedrigere Ausgangsspannung.
  • Hinweis: Die Einstellung des Potentiometers beeinflusst nur die digitale Ausgabe, nicht das analoge Signal.

Aufwärmen und Kalibrierung

Anforderungen an das Vorheizen

Genaue Messungen des MQ3 erfordern vor dem Betrieb eine ordnungsgemäße Erwärmung:

  • Erstgebrauch oder längere Lagerung (30 Tage oder länger): Lassen Sie den Sensor 24–48 Stunden kontinuierlich erwärmen, um die Stabilisierung des Sensors und zuverlässige Messwerte zu gewährleisten.
  • Regelmäßige Nutzung: Eine kurze Aufwärmphase von 5–10 Minuten ist ausreichend. Zu Beginn können die Messwerte erhöht erscheinen, normalisieren sich jedoch schnell.

Um den Sensor zu erwärmen, schließen Sie einfach VCC und GND an eine 5-V-Stromversorgung oder direkt an die Versorgungsanschlüsse Ihres Arduino-Boards an und halten Sie die Verbindung während der Aufwärmzeit aufrecht.

Schwellenwerte finden

Eine längere Lagerung kann Kalibrierungsabweichungen bei auf Heizelementen basierenden Sensoren wie dem MQ-3 verursachen. Bestimmen Sie genaue Grenzwerte für Atemalkoholmessungen, indem Sie dieses Verfahren befolgen:

  1. Eine saubere Luft-Grundlinie festlegen: Den Sensor in Frischluft betreiben und den analogen Ausgang notieren (erwarte Werte nahe 100–150).
  2. Alkoholdampf einführen: Halten Sie Isopropylalkohol oder Handdesinfektionsmittel in der Nähe des Sensors (nicht auf dem Sensor), sodass nur Dämpfe ihn erreichen. Notieren Sie die erhöhten Messwerte (in der Regel 400–900, abhängig von der Dampfkonzentration).
  3. Definieren Sie Erkennungszonen: Verwenden Sie Ihre aufgezeichneten Werte, um Bereiche festzulegen:
  • Kein Rauschzustand: Messwerte unterhalb der Basislinie + 20 (Beispiel: < 120)
  • Mäßiger Konsum: Werte im mittleren Bereich (Beispiel: 120–400)
  • Schwere Trunkenheit: Messwerte, die den moderaten Schwellenwert überschreiten (Beispiel: > 400)

Wichtig: Sensorcharakteristika variieren zwischen Einheiten und Umgebungen. Führen Sie vor dem Einsatz stets eine Kalibrierung mit Ihrer spezifischen Hardware durch.

Festlegen des digitalen Schwellenwerts

Stellen Sie den Schaltpunkt des DO-Pins über das an Bord befindliche Trimm-Potentiometer ein:

  1. Positionieren Sie den Alkoholdampf in der Nähe des Sensors.
  2. Drehen Sie das Potentiometer im Uhrzeigersinn, bis die LED aktiviert wird.
  3. Drehen Sie das Potentiometer langsam gegen den Uhrzeigersinn, bis die LED sich gerade deaktiviert.
  4. Der Auslöseschwellenwert ist jetzt korrekt kalibriert.

Verdrahtungsdiagramm

Beide Ausgangspins sind am MQ3-Modul verfügbar. Wählen Sie entweder einen der beiden aus oder verwenden Sie beide gleichzeitig, je nach den Anforderungen Ihres Projekts.

MQ3 Alcohol SensorArduino
VCC5V
GNDGND
DOPin 2
AOA0
Arduino- und MQ-3-Alkoholsensor-Verdrahtungsdiagramm, das Pin-Verbindungen zeigt

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code - Digitalausgang lesen

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-mq3-alcohol-sensor */ #define DO_PIN 2 // The Arduino pin connected to DO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Initialize the Arduino pin as an input pinMode(DO_PIN, INPUT); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasState = digitalRead(DO_PIN); if (gasState == HIGH) { Serial.println("Alcohol is NOT detected"); } else { Serial.println("Alcohol is detected"); } delay(1000); }

Schnelle Schritte

  • Öffne den obigen Code in der Arduino IDE
  • Lade es über die Hochladen-Schaltfläche auf dein Arduino-Board
  • Positioniere die Alkohol-Dampfquelle in der Nähe des MQ3-Sensors (Handdesinfektionsmittel oder Reinigungsalkohol auf Baumwolle funktioniert gut)
  • Überwache die Ausgabe im Serial Monitor
COM6
Send
Alcohol is NOT detected Alcohol is NOT detected Alcohol is NOT detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is NOT detected Alcohol is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Hinweis: Wenn Messwerte nicht mit den tatsächlichen Bedingungen übereinstimmen (falsche Positive oder verpasste Erkennungen), justieren Sie die Detektionsschwelle mithilfe des Potentiometers des Moduls. Eine Umdrehung im Uhrzeigersinn erhöht die Empfindlichkeit; gegen den Uhrzeigersinn senkt sie die Empfindlichkeit. Passen Sie so lange an, bis die Erkennungsgenauigkeit sich verbessert.

Arduino-Code – Auslesen des analogen Ausgangs

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-mq3-alcohol-sensor */ #define AO_PIN A0 // The Arduino pin connected to AO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasValue = analogRead(AO_PIN); Serial.print("MQ3 sensor AO value: "); Serial.println(gasValue); delay(1000); }

Schnelle Schritte

  • Laden Sie den Code in die Arduino-IDE
  • Laden Sie über die Hochladen-Schaltfläche hoch
  • Führen Sie dem Sensor Alkoholdampf zu (Handdesinfektionsmittel oder Isopropylalkohol)
  • Beobachten Sie die Messwerte im seriellen Monitor
COM6
Send
MQ3 sensor AO value: 120 MQ3 sensor AO value: 125 MQ3 sensor AO value: 128 MQ3 sensor AO value: 450 MQ3 sensor AO value: 620 MQ3 sensor AO value: 850 MQ3 sensor AO value: 920 MQ3 sensor AO value: 980 MQ3 sensor AO value: 950 MQ3 sensor AO value: 680 MQ3 sensor AO value: 420
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Durch den Einsatz digitaler oder analoger Ausgänge können Sie schwellenwertbasierte Entscheidungen implementieren, um Alarme zu aktivieren, Warnanzeigen zu steuern oder Daten für die Atemalkoholmessfunktion aufzuzeichnen.

Arduino-Code – Atemalkoholtester mit Schwellenwert-Erkennung

Dieses Beispiel demonstriert die Interpretation des analogen Ausgangs durch kalibrierte Schwellenwerte zur Schätzung des Betrunkenheitsgrades.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-mq3-alcohol-sensor */ #define AO_PIN A0 // The Arduino pin connected to AO pin of the MQ3 sensor // Threshold values - REPLACE THESE with your calibrated values! // Run calibration first to find these values for your sensor #define SOBER_THRESHOLD 120 // Below this = sober #define DRUNK_THRESHOLD 400 // Above this = drunk, between = drinking but within limits void setup() { // Initialize serial communication Serial.begin(9600); // Warm-up message Serial.println("MQ3 Alcohol Sensor - Breathalyzer"); Serial.println("Warming up sensor..."); delay(20000); // 20 second warm-up for recently used sensor Serial.println("Sensor ready!"); Serial.println(); } void loop() { int gasLevel = analogRead(AO_PIN); // Read the analog value from sensor // Print sensor value Serial.print("Sensor Value: "); Serial.print(gasLevel); Serial.print(" | Status: "); // Determine status based on thresholds if (gasLevel < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (gasLevel >= SOBER_THRESHOLD && gasLevel < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(1000); // Wait 1 second between readings }

Schnelle Schritte

  • Kritisch: Kalibrieren Sie zuerst Ihren Sensor mithilfe des Beispiels zur analogen Messung, um geeignete Schwellenwerte für Ihre Umgebung zu bestimmen.
  • Aktualisieren Sie die Konstanten SOBER_THRESHOLD und DRUNK_THRESHOLD im Code mit Ihren kalibrierten Werten.
  • Laden Sie den modifizierten Code auf den Arduino hoch.
  • Testen Sie mit Alkoholdampf (Isopropylalkohol oder Dampf von Handdesinfektionsmitteln).
  • Überprüfen Sie die Statusmeldungen im Serial Monitor.
COM6
Send
Sensor Value: 115 | Status: Stone Cold Sober Sensor Value: 118 | Status: Stone Cold Sober Sensor Value: 350 | Status: Drinking but within limits Sensor Value: 480 | Status: DRUNK Sensor Value: 520 | Status: DRUNK Sensor Value: 290 | Status: Drinking but within limits Sensor Value: 125 | Status: Stone Cold Sober
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Haftungsausschluss: Dieses Projekt dient ausschließlich Bildungszwecken. Verlassen Sie sich niemals auf dieses Gerät für rechtlich verbindliche Atemalkoholmessungen oder Beurteilungen der Fahrsicherheit.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!