A05|01 Der analoge Alkohol-Sensor MQ3
Analog Alcohol Sensor
Sensorwerte / Gassensoren
Der analoge MQ3 Alkohol-Sensor ist einer der am häufigsten verwendeten Sensoren in der MQ-Sensorreihe. Dieser analoge Gassensor eignet sich zum Nachweis von Alkohol in der Luft und kann in einem Atemanalysegerät verwendet werden.
Das Modul verfügt über zwei Ausgänge - einen analogen Ausgang (AO=Analog Output) und einen digitalen Ausgang (DO=Digital Output). Der analoge Ausgang kann zur Erkennung von Gaslecks und zur Messung des Gasvolumens durch entsprechende Berechnung des Sensorausgangs im Programm in bestimmten Einheiten (z. B. ppm) verwendet werden.
Der digitale Ausgang kann zur Erkennung von Gaslecks und damit zur Auslösung eines Alarmsystems verwendet werden. Dabei bietet der Digitalausgang nur zwei mögliche Ausgänge: HIGH oder LOW. Aus diesem Grund eignet er sich eher zur Erkennung von Gaslecks als zur Messung des Gasvolumens.
Spezifikationen
- Signalart: digital
- Spannung: 5V
- Pinabstand: 2,54mm
- Lastwiderstand 200 KΩ
- Heizwiderstand 33Ω ± 5%
- Heizungsverbrauch <800mw
- Messwiderstand:
1MΩ bis 8MΩ
- Konzentrationsbereich:
25 bis 500ppm
- Vorwärmzeit über 24h
Bei dem MQ3 handelt es sich um einen Metall-Oxid-Halbleiter-Sensor. Metalloxid-Sensoren werden auch als Chemie-Resistoren bezeichnet, da die Messung auf der Änderung des Widerstands des Sensormaterials bei Einwirkung von Gasen beruht.
Zusätzlich verfügt die Platine über eine Betriebs-LED: Sobald es mit Strom versorgt wird, leuchtet eine grüne LED auf. Der MQ3-Alkoholsensor arbeitet mit 5V und verbraucht etwa 800mW. Er kann Alkoholkonzentrationen zwischen 25 und 500ppm erkennen. Was bedeutet 1ppm? Bei der Messung von Gasen wird der Begriff Konzentration verwendet, um die Menge des Gases im Verhältnis zum Volumen in der Luft zu beschreiben. Die beiden gebräuchlichsten Maßeinheiten sind Teile pro Million und die prozentuale Konzentration. Parts-per-million (abgekürzt ppm) ist das Verhältnis eines Gases zu einem anderen. Ein Beispiel: 500ppm Alkohol bedeutet, dass, wenn man eine Million Gasmoleküle zählen könnte, 500 davon aus Alkohol und 999500 Moleküle aus anderen Gasen bestehen würden.
Interner Aufbau des MQ2-Gassensors
Der MQ3 ist ein heizungsbetriebener Sensor, der von zwei Lagen feinen Edelstahlnetzes eingeschlossen ist. Es handelt sich um ein Anti-Explosionsnetz und stellt sicher, dass das Heizelement im Inneren des Sensors keine Explosion verursacht. Schließlich handelt es sich beim Alkohol um ein brennbares Gas. Zudem bietet es Schutz und filtert störende Schwebeteilchen heraus. So gelangen nur gasförmige Elemente in die Kammer.
Die untere Darstellung zeigt das Innenleben des Sensors, wenn das äußere Netz entfernt ist. Die sternförmige Struktur besteht aus dem Sensorelement und sechs Anschlussbeinen, die über das Bakelite-Element (thermisch resistenter Kunststoff) hinausragen. Von den sechs Anschlüssen sind zwei (H) für die Beheizung des Sensorelements zuständig und über eine Nickel-Chrom-Spule verbunden. Die übrigen vier Leitungen (A und B), die für die Ausgangssignale zuständig sind, werden über Platin-Drähte angeschlossen. Diese Drähte sind mit dem Körper des Sensorelements verbunden und übertragen kleine Änderungen des Stroms, der durch das Sensorelement fließt.
Im Inneren des Bakelit-Elements ist das röhrenförmige Sensorelement platziert, welches aus einer Aluminiumoxid-Keramik (AL2O3) besteht und eine Beschichtung aus Zinndioxid (SnO2) hat. Das Zinndioxid ist das wichtigste Material, da es gegenüber Alkohol empfindlich ist. Das Keramiksubstrat stellt es die Heizeffizienz sicher, sodass der Sensorbereich kontinuierlich auf die Arbeitstemperatur erhitzt wird.
Das im MQ-5 verwendete gasempfindliche Zinndioxid weist bei normalen Luftverhältnissen eine geringe elektrische Leitfähigkeit auf. Sobald sich in der Umgebungsluft brennbares Gas befindet, steigt die elektrische Leitfähigkeit des Sensors mit dem Anstieg der Konzentration des Gases. Wird bei normalen Luftverhältnissen das Zinndioxid bei hoher Temperatur erhitzt, bindet es an seiner Oberfläche Sauerstoff. Die Luft heftet sich an die Oberfläche des Zinndioxids und zieht dabei die Elektronen im Zinndioxid-Leiter an. Dadurch erhöht sich der elektrische Widerstand und der Elektronenfluss wird gebremst. Die Änderung der elektrischen Leitfähigkeit kann mithilfe einer einfachen Schaltung in ein Ausgangssignal umgewandelt werden, das der Gaskonzentration entspricht.
Das Gegenteil ist der Fall, wenn Alkohol-Elemente die Sauerstoffmoleküle von der Zinndioxid-Oberfläche verdrängen. In diesem Fall werden Elektronen an das Zinndioxid abgegeben und der Strom kann frei durch den Sensor fließen.
Die vom Sensor gelieferte analoge Ausgangsspannung (AO=Analog Output) variiert proportional zur Alkoholkonzentration. Je höher die Alkoholkonzentration in der Luft ist, desto höher ist die Ausgangsspannung. Eine niedrigere Konzentration ergibt eine niedrigere Ausgangsspannung.
Dasselbe Analogsignal wird mithilfe eines LM393-Hochpräzisionskomparator digitalisiert und am Digitalausgang (DO=Digital Output) zur Verfügung gestellt. Dadurch haben wir die Möglichkeit dieses Signal mit dem Arduino einzulesen. Bei Alkoholkonzentrationen, die den Schwellenwert überschreiten, gibt das Modul LOW aus, andernfalls HIGH.
Der MQ3-Sensor kann auch ohne Programmierung (ohne Arduino-Board) betrieben werden. Mithilfe des integrierten Potentiometers kann der Schwellwert für die Alkoholkonzentration verschoben werden. Dreh den Knopf im Uhrzeigersinn, um die Empfindlichkeit zu erhöhen, und gegen den Uhrzeigersinn, um sie zu verringern. Sobald der Schwellwert überschritten wird leuchtet die rote LED auf dem Board. Für diese Funktion ist es ausreichend den VCC-Pin (positiv) und den GND-Pin (negativ) mit einer 5V-Versorgungsspannung zu verbinden.
Der Aufbau
Wie du bereits weißt, bietet das Modul sowohl einen analogen als auch einen digitalen Ausgang. Für unser erstes Experiment werden wir die Alkoholkonzentration messen, indem wir den analogen Ausgang ablesen.
Der Analog-Sketch
Je nach Einsatz des Sensors müssen wir die Schwellenwerte anpassen. Anstatt eines Alkohol-Atemtests richten wir den Aufbau daraus aus Alkoholdämpfe in der Umgebung zu messen. Nehmen wir an, dass wir eine Alarmanlage für einen Raum entwickeln, in dem große Mengen Brennspiritus oder Händedesinfektionsmittel (Ethanol) gelagert werden. Du könntest z.B. einen Alarm auslösen lassen, wenn bestimmte Konzentrationen in der Luft erreicht werden. Mit einem Temperatur-Sensor könntest du das Ergebnis verbessern und z.B. den Flammpunkt von Ethanol bestimmen. Der Flammpunkt eines Stoffes ist die niedrigste Temperatur, bei der sich über einem Stoff ein zündfähiges Dampf-Luft-Gemisch bilden kann.
Für den Test kannst du ein paar Tropfen Spiritus oder Händedesinfektionsmittel in eine kleine Tasse geben - gerade genug, damit Alkoholdampf entsteht. Halte den Sensor mit dem Metallnetz in den Behälter und beobachte die Werte auf dem seriellen Monitor. Bestimme die Schwellenwerte selber für deine Anwendung.
Folgender Sketch heizt zunächst die Sensorkammer für 20 Sekunden lang. Anschließend wird der Sensor eingelesen und sobald der Alkoholsensor-Wert den Wert 500 übersteigt wird die interne LED auf dem Arduino-Board eingeschaltet. Kopiere den unteren Sketch, füge ihn in die Arduino IDE ein und lade ihn auf das Arduino-Board rauf.
/********************************************************
A05|01 Der Alkohol Sensor MQ3
Der Analog-Sketch
Mr Robot UXSD / www.mrrobotuxsd.com
*********************************************************/
int alcoholPin = A0; //Pin-Nummer des Alkoholsensors
int ledPin = 13; //Pin-Nummer der LED
//Variable zum Speichern der Alkoholsensor-Werte
int alcoholValue = 0;
void setup()
{
//Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
Serial.begin(9600);
Serial.println("MQ3 wird aufgewärmt!");
delay(20000); //den MQ3 warmlaufen lassen
pinMode(ledPin, OUTPUT); //den ledPin als OUTPUT deklarieren
}
void loop()
{
alcoholValue = analogRead(alcoholPin); //lies den aktuellen Alkoholsensor-Wert
Serial.print("Alkoholsensor-Wert: ");
Serial.println(alcoholValue);
if(alcoholValue > 500)
{
digitalWrite(ledPin, HIGH); //schalte die LED ein
delay(alcoholValue); //pausiere gemäß dem Alkoholsensor-Wert
}
else
{
digitalWrite(ledPin, LOW); //schalte die LED aus
delay(alcoholValue); //pausiere gemäß dem Alkoholsensor-Wert
}
}
Schalte den seriellen Monitor ein, indem du in der Arduino IDE in der Menüleiste auf Werkzeuge > Serieller Monitor gehst.
Du solltest nun die folgende Anzeige sehen:
Wie bereits erwähnt handelt es sich bei dem MQ3 um einen beheizten Sensor. Für eine genaue Messung muss der Sensor vollständig aufgewärmt werden. Im oberen Beispielcode haben wir eine Aufwärmzeit von 20 Sekunden veranschlagt, aber für maximale Genauigkeit sollte das Erreichen der optimalen Betriebstemperatur 24 bis 48 Stunden betragen.
Der Digital-Sketch
Im zweiten Aufbau werden wir Alkohol-Konzentration mithilfe eines digitalen Pins detektieren. Hierzu müssen wir die Schaltung etwas umbauen. Entferne die Verbindung zum analogen Pin (AO)und verbinde stattdessen den digital Pin (DO) des Moduls mit dem digitalen Pin 8 des Arduinos. Schließe deine Schaltung wie unten abgebildet an:
Die Kalibrierung
Mit dem eingebauten Potentiometer auf dem Modul wird der digitale Ausgang DO kalibriert. Durch Drehen des Potentiometers kannst du einen Schwellenwert einstellen. Wenn die Alkohol-Konzentration den Schwellenwert überschreitet, leuchtet die Status-LED rot und das Modul gibt HIGH aus.
Um den Sensor zu kalibrieren, halte den Sensor mit dem Metallgitter in die Tasse mit dem Alkohol und drehe das Potentiometer im Uhrzeigersinn so lange bis die rote Status-LED aufleuchtet. Dann drehst du das Potentiometer gegen den Uhrzeigersinn, bis die LED wieder erlischt. Das war's. Der Sensor ist jetzt kalibriert und einsatzbereit. Sobald die Schaltung aufgebaut ist, lade die folgende Skizze auf dein Arduino.
Der untere Sketch wartet auf ein HIGH oder LOW Signal, die vom MQ3 kommt und sendet eine entsprechende Anmerkung an den seriellen Monitor.
/********************************************************
A05|01 Der Alkohol Sensor MQ3
Der Digital-Sketch
Mr Robot UXSD / www.mrrobotuxsd.com
*********************************************************/
int alcoholPin = 2; //Pin-Nummer des Alkoholsensors
//Variable zum Speichern der Alkoholsensor-Werte
int alcoholValue = 0;
void setup()
{
//Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
Serial.begin(9600);
Serial.println("MQ3 wird aufgewärmt!");
delay(20000); //den MQ3 warmlaufen lassen
}
void loop()
{
alcoholValue = digitalRead(alcoholPin); //lies den aktuellen Alkoholsensor-Wert
Serial.print("Digital-Wert: ");
Serial.print(alcoholValue);
if(alcoholValue)
{
Serial.println(" | Alkohol Erkannt!");
}
else
{
Serial.println(" | Kein Alkohol!");
}
delay(500);
}
Auf dem seriellen Monitor solltest du die folgende Ausgabe sehen:
Eines solltest du zum Schluss unbedingt beachten: Der MQ3 spiegelt nur den ungefähren Trend der Gaskonzentration in einem zulässigen Fehlerbereich wider. Genaue Gaskonzentration nicht möglich. Der Nachweis bestimmter Komponenten in der Luft erfordert in der Regel ein präziseres und teureres Instrument als es dieser Sensor leisten kann. Wenn dein Projekt darauf abzielt, Gaskonzentrationen auf einem sehr präzisen Niveau zu messen, dann ist dieser Gassensor nicht zu empfehlen.
Falls du die hier beschriebenen Elektronik-Module nicht hast kannst du sie in meiner Einkaufsliste finden. Warum ich selber hauptsächlich mit Modulen der Marke Keyestudio arbeite erläutere ich unter diesem Blog-Artikel.