Servus Community ...
ich hab mal wieder ein paar nette Sachen aus Fernost erhalten und möchte Euch die Ergebnisse meiner Versuche natürlich nicht vorenthalten.
Das erste Gimmick sind diverse Gas-Sensoren mit der Bezeichnung MQ-X. Ihr könnt sie sehr preiswert beim Asiaten Eures Vertrauens erwerben, sie aber auch bei deutschen Anbietern erhältlich...
Dieses Tutorial schicke ich jetzt mal ab, ohne Garantie auf Vollständigkeit.
Ich komme derzeit leider einfach nicht dazu, jeden Punkt ein zweites mal zu verifizieren. Also muss das parallel laufen. Falls noch was unklar oder gar fehlerhaft ist: bitte posten.
Ich hoffe, dass das Tut trotzdem für den einen oder anderen von Euch hilfreich ist.
Allgemeines zu diesen Sensoren:
Ich habe einen MQ-2 (Datenblatt) und einen MQ-3 (Datenblatt) Sensor am RPi ausgetestet. Zum Einsatz kamen allerdings nicht die "nackten" Sensoren, sondern diese Module mit einem MQ-2 und einen MQ-3 Sensor. Andere Sensoren mit der Bezeichnung MQ-X sollte analog zu diesen funktionieren.
Einige interessante Infos zu den Sensoren sind zudem -> hier oder -> hier <- zu finden.
Der Einsatz der Sensoren klingt zunächst simpel, die Teile haben es aber in sich, was u.a. die ausgelesenen Daten betrifft.
Zudem habe ich diverse Hinweise auf einen "burn in" der Sensoren gefunden, die weder im - doch eher dürftigen - Datenblatt zum MQ-2 noch im Datenblatt zum MQ-3 erwähnt werden.
Gemeint ist damit wohl, dass die Sensoren erst nach einer Betriebsdauer von 24 bis 48 Stunden verlässliche Werte liefern.
Die Bedeutung der ausgelesenen Werte muss man sich anhand des Messbereichs des Sensors und der Auflösung des A/D-Wandlers selbst ausrechnen.
Zudem müssen die Sensoren kalibriert werden. Wie dies vonstatten geht, wollte ich als Anhang beifügen, aber die ordnen immer ihre Website um, darum funktioniert das wieder mal nicht. ABer ich kann Euch zu einem Beispiel führen: (Quelle: -> hier <- ).
Ich gehe mal davon aus, dass die dort beschriebene Methode funktioniert. Ich habe nämlich keinen Plan, wie das Kalibrieren ohne teures Equipment sonst funktionieren sollte.
Beachten muss man dabei, welchen Auflösung der A/D-Wandler hat ( 1023 bei 10 Bit bzw. 255 bei 8 Bit ).
Die Kalibrierung reicht evtl. dazu aus, um mit den Sensoren zu demonstrieren, wie man Gas-Sensoren verwenden kann und was im Prinzip damit möglich ist.
Wer genaue Daten benötigt, dem würde ich raten, eine andere Art der Kalibrierung zu verwenden oder gleich auf andere Sensoren auszuweichen.
Das gilt vor allem für den MQ-3. Ich rate dringend davon ab, diesen Sensor zur Ermittlung der eigenen Fahrtüchtigkeit zu verwenden. Das wird vermutlich ganz böse ins Auge gehen.
Die Module funktionieren auch ohne permanentes Auslesen. Mit dem Potentiometer kann ein Grenzwert eingestellt werden. Wird dieser überschritten, leuchtet die rote LED und der digitale Ausgang des Moduls wechselt von HIGH auf LOW.
Den Stromverbrauch eines Sensor-Moduls liegt nach meiner Messung zwischen 130 und 140 mA. Für den relativ hohen Stromverbrauch ist vermutlich die eingebaute Heizung verantwortlich. Das ist für einen Betrieb direkt an einem der GPIOs eher grenzwertig. Solange der RPi über ssh - also ohne Tastatur und Maus - verwendet wird, mag das gehen. Ansonsten empfehle ich dringend eine zusätzliche Stromversorgung für den/die Sensoren zu verwenden, um einen Spannungseinbruch des RPi zu verhindern.
Die verwendeten Module haben gegenüber der nackten Sensoren einige Vorteile:
Die Sensoren selbst benötigen zum Anschluss so schräg angeordnete Bohrungen, dass sie wohl niemals direkt auf ein Breadboard aufgesteckt werden können.
Ausserdem verfügen die Module über einen zusätzlichen digitalen Ausgang, dessen Auslösemoment mittels Potentiometer eingestellt werden kann. Das finde ich dahingehend praktisch, weil es dadurch möglich wird, erst ab einem bestimmten Pegel zyklische Meßvorgänge einzuleiten und ansonsten den Sensor erst gar nicht abzufagen (spart CPU-Leistung).
Benötigte Hardware:
Ein MQ-X Sensor-Modul ( z.B. MQ-2, MQ-3, ... )
Ein Raspberry Pi mit aktueller Version Raspbian wheezy
Ein PCF8591 A/D-Wandler Modul
Ein Pegelwandler
Evtl. eine zusätzliche Stromversorgung 5V
und, logisch, ein Breadboard und diverse Kabel zum Verdrahten der Komponenten
Anschluss:
Die Module habe ich mittels eines A/D-D/A Wandler-Moduls (PCF8591) und einem Pegelwandler am RPi mit 5V betrieben.
Ich finde diese Pegelwandler einfach super, weil sie out of the box fuktionieren und einfach und unkompliziert einsetzbar sind.
Das PCF-Modul hat 10k Pullups vom IIC-Bus zu Vcc und kann deshalb nicht ohne Pegelwandler am RPi mit 5V betrieben werden.
Ein Betrieb des PCF-Moduls mit 3,3 V ist in diesem Fall nicht möglich, weil die Sensoren genau 5V benötigen. Sie liefern zwar auch bei einem Betrieb an 3,3 V Daten, aber ich kann nicht sagen, ob diese stimmen. Im Internet findet man Hinweise, dass sie Sensoren, wenn die Spannung weniger als 4,9 V beträgt, bereits falsche Daten liefern.
Der Anschluss ist relativ simpel. Bei einer zusätzlichen Stromversorgung gehen Vcc und GND des Sensors gehen auf 5V und Masse des externen Netzteils. A0 und D0 sind der analoge und der digitale Ausgang des Sensors.
Achtung: D0 kann mit einer Datenleitung des Pegelwandler auf der 5V-Seite verbunden werden, falls der Alarm ausgewertet werden soll. Diese Verbindung habe ich in der Zeichnung nicht verwendet.
A0 geht auf den freien Eingang des A/D-Wandlers (ohne Jumper, Pin der weiter innen ist). Sollen mehrere Sensoren angeschlossen werden, kann man die anderen Jumper einfach entfernen und die innen liegenden Pins mit den entsprechenden A0-Leitungen verbinden.
Wird eine eigene Stromversorgung für den/die Sensoren verwendet werden Vcc und GND des A/D-Wandlers mit den externen 5V und der dazugehörigen Masse verbunden.
SCL und SDA des PCF8591 werden mit zwei freien Datenanschlüssen auf der 5V-Seite des Pegelwandlers angeschlossen.
Achtung: Falls ein externes Netzteil zur Versorgung des/der Sensoren zum Einsatz kommt unbedingt daran denken, die Masse des externen Netzteils mit der Masse des RPi zu verbinden, da sonst die Pegel nicht stimmen und die Daten fehlerhaft sind.
Nun fehlen nur noch die Anschlüsse am RPi.
Also RPi runterfahren, Netzteil abstecken.
3,3 V und GND des RPi mit Vcc und GND auf der 3,3V-Seite des Pegelwandlers verbinden.
Soll die Stromversorgung von Sensor und A/D-Wandler über den RPi erfolgen, 5V und GND des RPi mit Vcc des Sensors und Vcc des A/D-Wandlers verbinden. GND des RPi ebenfalls mit jeweils GND des A/D-Wandlers und des Sensors zusammenschalten.
Bei einem zusätzlichen, externen Netzteil die Masse des Netzteils mit der Masse des RPi verbinden.
SDA und SCL (GPIO2 und GPIO3) mit den entsprechenden Leitungen des A/D-Wandlers auf der 3,3V - Seite des Pegelwandlers verbinden.
Bei Anschluss von D0 den entsprechenden Anschluss des Pegelwandlers auf der 3,3V Seite mit einem freien GPIO-Pin verbinden.
So, ich hoffe, ich habe jetzt nichts vergessen, notfalls gibts ja noch die Fritzing-Zeichnung im Anhang.
Leider gibt es in Fritzing kein Symbol für das A/D-Wandler-Modul. da musste ich ein bisschen tricksen, aber ich denke, es ist klar ersichtlich wie es gemeint ist.
Software:
Ich habe das Testprogramm für den PCF8591 erweitert, dass am freien Eingang ein MQ-2 Sensor genutzt werden kann und auch die Kalibrierung darauf ausgelegt.
Der Source kann einfach mit
sofern gcc installiert ist, übersetzt werden.
Ja, dann bleibt mir nur, Euch viel Spass beim experimentieren zu wünschen.
Wenn ich weitere/neue Erkenntnisse habe, dann reiche ich sie hier nach. Es lohnt sich also, hin und wieder mal hier rein zu schauen.
Viele Grüsse aus dem Bayernland,
-ds-