MQ7 Gassensor

Hallo zusammen,

seit heute nenne ich einen MQ7 sowie einen Arduino Mega mein Eigen.

Vorher habe ich hin und wieder mit einem Uno sowie einem Temperatursensor gerumgespielt, mehr kann man es nicht nennen.

In diesem Falle handelt es sich um folgenden Sensor:

http://www.ebay.de/itm/281293754683?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Das Modul hat 4 Pins.

GND, Dout (Digital Out?), Aout (Analog out?), Vcc

Ich ging davon aus, dass ich GND (Sensor) am Arduino an GND anlege, Vcc auf 5V (Arduino) und Aout auf A0 am Arduino.

int sensorValue;
int pulsewidth;

void setup()
{
  Serial.begin(9600);      // sets the serial port to 9600
}
void loop()
{
  //pulsewidth=255;  //set to 5 V
  //analogWrite(A1, pulsewidth);
  //delay(60*1000);
  //pulsewidth=71.4; //set to 1.4 V
  //analogWrite(A1, pulsewidth);
  delay(10*1000);
  sensorValue = analogRead(A0);
  Serial.println(sensorValue);
}

Hiermit erhalte ich bei obiger Verkabelung alle 10 Sekunden einen Wert auf Seriell.

Bei meinen Recherchen bin ich jedoch auch auf diesen Thread gestoßen:

http://forum.arduino.cc/index.php?topic=193588.0

dort ist davon die Rede, dass das Modul 60 Sekunden lang mit 5 Volt und 90 Sekunden mit 1,4 Volt befeuert werden muss.

Mit Hilfe des dort genannten Codes erhalte ich aber keine Ausgabe auf Seriell.

Ich habe den Beitrag dort so verstanden, dass die 5 Volt aber über A1 gegeben werden, an A1 hinge bei mir aber nichts, da ich Vcc (Sensor) an 5 Volt (Arduino) habe.

Kann mir jemand sagen, wie das Modul nun richtig verkabelt werden muss?

Danke und Gruß
Boris

Welches Kohlenmonoxid willst Du messen?
Grüße Uwe

Gibt es mehr als ein Kohlenmonoxid? :wink:

Die Frage habe ich nicht so ganz verstanden.

Weil in der Luft kaum CO vorhanden ist.
Grüße Uwe

Hallo,

das Datenblatt sagt, dass der Heater einen Widerstand von 33 Ohm hat. Damit ist der Analogausgang überfordert. Hier musst du einen Transistor vorschalten.
Die Beschaltung solltest du auch nochmal mit dem Datenblatt abgleichen.

Gruß Reinhard
edit: http://playground.arduino.cc/Main/MQGasSensors hier steht alles

Laut Datenblatt https://www.sparkfun.com/datasheets/Sensors/Biometric/MQ-7.pdf
muß der Sensor mindestens 48 Stunden vorgeheizt weren damit er sich stabilisiert.
Die normale Ansteuerung ist ein Zyklus von 60 Sekunden mit 5V und 90 Sekunden mit 1,4V (keine PWM!!!!!) Es fließet ein Strom von ca 160 bzw ca 45 mA an der Heizung. Der Widerstand der Meßstrecke muß am Ende der 1,4V Phase gemessen werden und dieser ist proportional zur CO Konzentration. Der Widerstandswert der Meßstrecke varriert stark (2k bis 2kOhm) und die Messung wir immer in Relation des Widerstand der Meßstrecke bei 100ppm CO genomen. Du brauchst also ein Kalibriergas mit 100ppm.

Was willst Du den genau messen???

Grüße Uwe

Danke für eure ausführlichen Antworten.

Ich möchte mit dem Sensor in Kaminnähe messen, ob evtl. Gefahr droht.

Ich habe den MQ7 gestern einmal mit 5 Volt über die Dauer einiger Stunden, jedoch mit Unterbrechungen befeuert und das Signal über A0 abgegriffen und immer (Innenraum, Gastherme in der Nähe) Werte von 20-22 erhalten.
(Wobei ich auch gemäß Datenblatt noch nicht verstanden habe, was dieser Wert sagt, ich ging davon aus, dass das R sei, aber ein Bekannter meinte, es sei eine Spannung? Ich bin verwirrt).

Habe ich das nun richtig verstanden, dass ich den Sensor bzw. das Modul gar nicht über den A1 befeuern kann, da der Widerstand von 33 Ohm zu hoch sei?

Habe ich ebenfalls richtig verstanden, dass der Sensor 48 Stunden zur Stabilisierung "preheated" werden muss?
Gilt das einmalig oder bei jeder Inbetriebnahme (Gesetz des Falles ich schalte die Anlage nur ein, wenn auch der Kamin an ist)?
Der Wert an A0 (ca. 20) ist der Widerstand, dem ich dann gemäß Kennlinie (Dtaenblatt) den Wert in ppm zuweisen muss?

Du misst immer eine Spannung über analogRead(). Dazu brauchst du einen Lastwiderstand von 2 bis 47kOhm an dem diese Spannung abfällt. Das Datenblatt empfiehlt 5-47k. Am besten ein Poti verwenden.

http://playground.arduino.cc/Main/MQGasSensors

The sensor needs a load-resistor at the output to ground. It's value could be from 2kOhm to 47kOhm. The lower the value, the less sensitive. The higher the value, the less accurate for higher concentrations of gas.

Der Wert den der Sensor ausgibt ist immer relativ. Man muss den kalibrieren. Dann kann man sagen Wert x ist die normal Konzentration und Wert y ist erhöht. Wie hoch der Wert ist hängt eben auch vom Lastwiderstand ab.

Es gibt hier auch eine Lib:
http://thesis.jmsaavedra.com/prototypes/software/mq-7-breakout-arduino-library/
Die bringt dir aber auch nichts wenn du das Ding nicht richtig anschließt.

Auf dem Modul befindet sich bereits ein Poti.
Ich versuche mal mehr über das Modul herauszufinden, ein IC ist auch drauf...

Ok, mal das Bild genauer angesehen. Das Ding hat einen Analog- und einen Digital-Ausgang. Das IC ist ein LM393. Ein Komparator. Das Poti ist dann dazu da um die Schaltschwelle des Komparators einzustellen. Der Digitalausgang ist Low oder High je nachdem ob der Sensor die Schaltschwelle überschritten hat oder nicht.

Der Lastwiderstand wird dann vielleicht fest sein. Viel falsch anschließen kann man da eigentlich nicht. Kann aber trotzdem daran liegen, dass man den Sensor erst mal mindestens einen Tag aufheizen muss. Diese Sensoren funktionieren in dem das Gas an der Elektrode oxidiert und dadurch ein Strom fließt. Ohne das Vorheizen oxidiert das wohl nicht richtig.

Kann es sein, dass das Modul das Heizen eigenständig übernimmt oder muss ich das in diesem Falle konkret selbst übernehmen (siehe Code).

Wenn ich hiernach vorgehen würde, wie müsste ich konkret vorgehen?

http://forum.arduino.cc/index.php?topic=193588.0

Die Rede war davon, über einen Transistor zu schalten.
Bei meinen "Vorrecherchen" ging ich davon aus, dass ich das mit Hilfe von Arduino Bordmitteln ohne externes konnektieren von Baugruppen machen könnte (außer dem Sensor - Modul eben).

Das letzte Mal habe ich sowas mit einem Kosmos Elektronikbaukasten vor 15 Jahren gemacht :wink: