Raspberry Pi Gas Sensor MQ-2

GPIO

Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen

Um die Bestandteile der Luft zu erfassen sind Sensoren nötig. Diese sind z.B. in Rauchmeldern verbaut. Allerdings sind Anleitungen zur Nutzung dieser Gas-Sensoren am Raspberry Pi selten, weshalb es in diesem Tutorial um die generelle Nutzung solcher MQ Module am Raspberry Pi geht. Damit können z.B. Rauchmelder oder Luftqualitätstester gebaut werden.

Wie man jegliche MQ Sensoren konfiguriert und ausließt wird am Beispiel des Raspberry Pi Gas Sensor MQ2 in diesem Tutorial gezeigt. Alle anderen Sensoren (MQ3, MQ-135, usw.) können mit ein paar zusätzlichen Schritten ebenso angepasst werden.



 

Zubehör

Jegliche MQ-X Sensoren geben analoge Signale zurück, welche wir nicht ohne weiteres am Raspberry Pi auslesen könnten. Eine Möglichkeit wäre einen Arduino zu verwenden, allerdings können wir auch einen Analog-Digital Wandler benutzen, welcher über den I2C Bus ausgelesen werden kann. Ein recht ausführliches Tutorial zur Verwendung des ADCs findest du hier. Daneben benötigen wir auch noch einen Pegelwandler

Diese Bauteile sind unabhängig vom gewählten Gas Sensor. Weiterhin gibt es noch viele verschiedene Sensoren für den Raspberry Pi, welche bereits für wenige Euro erhältlich sind und jeweils für unterschiedliche Gase geeignet sind:

  • MQ-2: Methan, Butan, LPG (Autogas), Rauch
  • MQ-3: Alkohol, Ethanol, Rauch
  • MQ-4: Methan, CNG Gas (komprimiertes Erdgas)
  • MQ-5: Erdgas, LPG (Autogas)
  • MQ-6: LPG (Autogas), Butan
  • MQ-7: Kohlenmonoxid
  • MQ-8: Wasserstoffgas
  • MQ-9: Kohlenmonoxid, entflammbare Gase
  • MQ131: Ozon Gas
  • MQ135: Luft Qualität (Benzol, Alkohol, Rauch)
  • MQ136: Schwefelwasserstoffgas
  • MQ137: Ammoniak
  • MQ138: Benzol, Steinkohlenteeröl (Toluol), Aceton, Propan, Formaldehyd, Wasserstoffgas
  • MQ214: Methan, Erdgas
  • MQ216: Erdgas, Kohlegas
  • MQ303A: Alkohol, Ethanol, Rauch
  • MQ306A: LPG (Autogas), Butan
  • MQ307A: Kohlenmonoxid
  • MQ309A: Kohlenmonoxid, entflammbare Gase
  • MG811: Kohlendioxid (CO2)
  • AQ-104: Luftqualität
  • AQ-2: entflammbare Gase, Rauch
  • AQ-3: Alkohol, Benzin
  • AQ-7: Kohlenmonoxid

Ich empfehle einen Sensor mit aufgelöteten PCB zu nehmen, weil dadurch keine weitere Verkabelung und Einsetzen von Widerständen und Kondensatoren nötig ist.

Details zu den einzelnen Raspberry Pi Gas Sensoren findest du auch in den dazugehörigen Datenblättern. Dazu einfach den Namen des Sensors inkl. „datasheet“ googlen. Darin ist auch erwähnt mit welcher Spannung der Sensor arbeitet.

Falls jemand einen Alkoholtester o.ä. bauen will, sollte sich allerdings auch dessen bewusst sein, dass diese Module alle nicht absolut genau sind und dementsprechend mit einer professionellen Messung nicht mithalten können.

 

Anschluss zwischen MQ-2 und Raspberry Pi

In diesem Beispiel wird von einer 5V SPannung ausgegangen. Dies ist für die GPIOs zu viel, weshalb wir einen Logik Level Konverter (TTL) nutzen, der die Spannung herunterbricht. Falls du einen anderen Sensor als den MQ-2 verwendest und dieser eine andere Spannung hat, muss der Aufbau natürlich angepasst werden.

Nachdem der MCP3008 richtig angeschlossen ist, nutzen wir den Port 0 und verbinden ihn an RX0 des TTLs. Auf der gegenüberliegenden Seite befindet sich RX1, welches an den Analog Pin (A0) des MQ2 Sensors kommt. Außerdem wird an den TTL 3.3V vom Raspberry Pi (LV) und 5V (HV) angeschlossen. Ebenso kommen 5V an den VCC Pin des Gas Sensors und GND vom Raspberry Pi kommt an GND auf der LV und HV Seite des TTLs, sowie an GND vom MQ2.

Schematisch sieht das ganze dann folgendermaßen aus:

Raspberry Pi Gas Sensor MQ2 Steckplatine

Ich nutze hierbei die 5V des Raspberry Pi’s. Allerdings ist eine externe Stromversorgung zu empfehlen, falls noch andere Sensoren und Module bzw. Eingabegeräte (Tastatur, Maus, Touchscreen) verwendet werden. Dazu wird der Sensor einfach von der externen Quelle mit Strom beliefert (HV Seite des TTL) und der Masse Anschluss (Minus/GND) mit GND des Raspberry Pi’s verbunden.

 

 

Konfiguration des Raspberry Pi Gas Sensor – Vorbereitung

Die Angaben der Konzentration eines Gases werden in PPM (parts per million) angegeben. Eine Schwierigkeit des MQ-2 ist nun, dass ein einziger analoger Wert ausgegeben wird, mit welchem der Gasgehalt in der Luft für die verschiedenen unterstützten Gase berechnet werden muss. Allerdings muss dafür der Sensor zum einen konfiguriert werden. Da diese Anleitung auch für einen anderen Raspberry Pi Gas Sensor übertragbar sein soll, ist hier die Vorgehensweise:

Zu Beginn schauen wir ins Datenblatt des jeweiligen Moduls, worin sich u.a. ein Diagramm befindet.

Raspberry Pi Gas Sensor MQ-2 Datasheet

Die angegebenen Werte befinden sich in logarithmischer Skalierung.

Die Skalierung der Werte ist allerdings nicht linear sondern logarithmisch zur Basis 10 (log). Das bedeutet, dass der erste Strich auf der X-Achse 200 entspricht, danach 300 usw. Der erste Strich nach 1000 ist 2000, usw. Der Abstand dazwischen ist linear. Die Idee, welche hinter diesem Skript zur Kalibrierung und Auslesung steckt, ist eine Gerade zu erstellen und so den Anteil des Gases (in ppm) zu berechnen. Dazu brauchen wir zwei Punkte, um die Steigung zu berechnen.

Veranschaulichen wir das am Beispiel von LPG. Wir nehmen also den Punkt P1(x=200, y= ~1.62) und P2(x=10000, y= ~0.26). Um die „echten“ Werte zu berechnen, wenden wir den Zehner-Logarithmus an. Mit Hilfe der Zwei-Punkte Form können wir die Steigung berechnen, die in unserem Fall -0.47 ist (Link zur Rechnung). Mit der Steigung und dem gezogenen Logarithmus aus dem linken Punkt (x=2.3, y=0.21) können wir die Gerade nun bestimmen.

Für die restlichen Gase ist die Berechnung äquivalent und kann genauso durchgeführt werden. Wer weiteren Lesestoff dazu haben will, kann diesen u.a. hier bekommen (Englisch).

 

Kalibrierung des Raspberry Pi Gas Sensor – Code

Genug der Theorie – wir wollen den Sensor nun anfangen zu verwenden. Dazu kann der von mir angepasste Code verwendet werden, welcher sich in einem GitHub Repository befindet. Mit dabei ist auch eine Klasse zum Auslesen des MCP3008. Zunächst klonen wir das Verzeichnis:

git clone https://github.com/tutRPi/Raspberry-Pi-Gas-Sensor-MQ

Anschließend wechseln wir in das Verzeichnis und führen die vorhandene Python Test-Datei aus.

cd Raspberry-Pi-Gas-Sensor-MQ
sudo python example.py

Bei der Initialisierung wird die Kalibrierung automatisch gestartet. Es ist wichtig, dass sich der Sensor in guter / frischer Luft befindet, da Rauch / andere Gase die Kalibrierung verfälschen würden. Der Vorgang dauert ein paar Sekunden, jedoch kann danach bereits der Gasgehalt gemessen werden (siehe Video). Einige Sensoren werden recht heiß, was aber kein Grund zur Sorge sein sollte.

 

Manche Nutzer berichteten, dass die Werte erst nach einiger Zeit genau werden. Ich kann dies leider nicht verifizieren, da ich kein professionelles Messgerät habe. Sollte jemand das bestätigen oder überprüfen können, da er ein solches Gerät zuhause hat, würde ich mich über eine Rückmeldung als Kommentar freuen 🙂



, , , , , ,


1 Kommentar

  1. G.E. sagt:

    Tolles Thema. Gute Anleitung. Danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!