MQ-3 Alkoholsensor am Arduino

FunduinoZuletzt aktualisiert am

Alkohol in der Luft erfassen und mit zwei LEDs anzeigen

Der MQ-3 gehört zur Familie der MQ-Gassensoren und reagiert vor allem auf Ethanol – den Alkohol, der auch in Desinfektionsmitteln und Getränken steckt. Je mehr davon in der Luft liegt, desto höher der Wert, den er ausgibt.

In dieser Anleitung liest du den Sensor am Arduino aus, bestimmst deinen eigenen Frischluft-Referenzwert und baust daraus eine Anzeige aus einer roten und einer grünen LED.

Rückseite des MQ-3-Sensormoduls mit blauem Potentiometer
Rückseite des MQ-3: über das Potentiometer stellst du den Schwellenwert für den digitalen Ausgang ein

Material

Für dieses Projekt brauchst du:

  • 1× Mikrocontroller mit passendem USB-Kabel
  • 1× Alkoholsensor MQ-3
  • Steckkabel männlich/weiblich

Für die Anzeige im letzten Schritt kommen dazu:

  • 1× rote LED und 1× grüne LED
  • 2× Vorwiderstand 220 Ohm
  • 1× Breadboard

Die Anschlüsse des MQ-3

Der MQ-3 erfasst die Konzentration von Alkohol – genauer: Ethanol – in der Luft und gibt sie als analogen Wert aus. Das Modul hat vier Anschlüsse:

  • VCC – Stromversorgung, an den 5V-Pin des Arduino
  • GND – an einen GND-Pin des Arduino
  • A0 – analoger Ausgang, an den Pin A0 des Arduino
  • D0 – digitaler Ausgang, der nur meldet, ob ein Schwellenwert überschritten ist

Für diese Anleitung brauchst du nur VCC, GND und A0. Den Schwellenwert für den digitalen Ausgang stellst du mechanisch am Potentiometer auf der Rückseite des Moduls ein.

Schließe D0 nicht an den Arduino-Pin 0 an. Pin 0 gehört zusammen mit Pin 1 zur seriellen Schnittstelle, über die auch der Sketch hochgeladen wird. Wenn du den digitalen Ausgang nutzen willst, nimm dafür einen freien Pin, zum Beispiel Pin 2.

Rückseite des MQ-3-Sensormoduls mit blauem Potentiometer
Rückseite des MQ-3: über das Potentiometer stellst du den Schwellenwert für den digitalen Ausgang ein

Sensor einbrennen und Referenzwert bestimmen

Wie alle Sensoren der MQ-Reihe arbeitet auch der MQ-3 mit einem beheizten Element. Ein fabrikneues Modul liefert deshalb erst nach einer längeren Einbrennzeit stabile Werte – lass es dazu am besten 24 bis 48 Stunden durchgehend an der Spannungsversorgung.

Danach bestimmst du deinen Referenzwert: Lass den Sensor einige Minuten an frischer Luft laufen und lies ab, welchen Wert er dort anzeigt. In unserem Aufbau lag er bei ungefähr 100 – bei dir kann er deutlich abweichen.

Das Sensorelement wird im Betrieb spürbar warm. Das ist normal.

Wichtig: Der MQ-3 ist ein Bastelbauteil und kein geeichtes Messgerät. Er reagiert auf Ethanol in der Luft, misst aber keine Atemalkoholkonzentration. Als Alkoholtester oder gar zur Beurteilung der Fahrtüchtigkeit ist er ungeeignet.

Sensorwert auslesen

Lade den Sketch auf den Mikrocontroller und öffne den Seriellen Monitor mit 9600 Baud. Dort erscheint zweimal pro Sekunde der aktuelle Messwert.

Zum Ausprobieren genügt ein Wattestäbchen mit etwas Desinfektionsmittel oder ein geöffnetes Glas mit alkoholhaltiger Flüssigkeit in der Nähe des Sensors – der Wert steigt dann deutlich an.

Sketch 1: Sensorwert auslesen
int Wert;

void setup()
{
  Serial.begin(9600);   // Diese Baudrate muss auch im Seriellen Monitor eingestellt sein.
}

void loop()
{
  // Der analoge Sensorwert wird am Pin A0 ausgelesen.
  Wert = analogRead(A0);

  Serial.print("Alkoholwert: ");
  Serial.println(Wert);

  delay(500);
}

Anzeige mit zwei LEDs

Mit dem Referenzwert aus Schritt 3 baust du jetzt eine kleine Anzeige. Erweitere den Aufbau um zwei LEDs mit je einem 220-Ohm-Vorwiderstand: die rote LED an Pin 12, die grüne an Pin 13.

Liegt der Messwert über dem Referenzwert, leuchtet Rot. Liegt er darunter, leuchtet Grün.

Die Schwelle 100 passt zu unserem Frischluftwert. Liegt dein eigener höher oder niedriger, trag ihn im Sketch ein – sonst leuchtet immer dieselbe LED.

Sketch 2: Anzeige mit zwei LEDs
int Wert;
int LEDgruen = 13;   // Die gruene LED wird mit Pin 13 verbunden
int LEDrot = 12;     // Die rote LED wird mit Pin 12 verbunden

void setup()
{
  Serial.begin(9600);
  pinMode(LEDgruen, OUTPUT);
  pinMode(LEDrot, OUTPUT);
}

void loop()
{
  Wert = analogRead(A0);

  Serial.print("Alkoholwert: ");
  Serial.println(Wert);

  // Liegt der Wert ueber dem Referenzwert, leuchtet Rot,
  // andernfalls Gruen. Der Wert 100 ist ein Beispiel -
  // trage hier deinen eigenen Frischluftwert ein.
  if (Wert > 100)
  {
    digitalWrite(LEDrot, HIGH);
    digitalWrite(LEDgruen, LOW);
  }
  else
  {
    digitalWrite(LEDrot, LOW);
    digitalWrite(LEDgruen, HIGH);
  }

  delay(500);
}
Anleitung bewerten

Kommentare

Frage stellen oder Erfahrung teilen

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Wir prüfen jeden Kommentar vor der Veröffentlichung. Deine E-Mail-Adresse bleibt bei uns.