MQ-2 Gas/CO/Rauch Sensor an D1 Mini

Hallo zusammen,

ich versuche einen MQ-2 an einem D1 Mini ans laufen zu bekommen.

Ich hab das in der Library enthaltene Sample kompiliert und hochgeladen.
Ich benutze den A0 Anschluß um Daten zu empfangen.

Leider bekomme ich komische Werte:

LPG:2147483648.00ppm CO:2147483648.00ppm SMOKE:2147483648.00ppm

Wenn ich den analogen Anschluss trenne bekomme ich 0 Werte, also kommen die Werte vom MQ-2.

Nur irgendwie sind die nicht glaubhaft.

Hat jemand einen Tipp?

Danke
.d

Ich hab auch einen Gegentest gemacht.
Den Digital Out vom MQ-2 an den digitalen Eingang D0.
Die gleiche komischen Werte solange der Sensor verbunden ist, Verbindung zum D0 raus, Werte auf 0.

Muss man die Werte noch irgendwie umrechnen?

Hi

Der MQ-2 ist eine analoger Sensor.
Woher Deine drei Werte kommen, wird wohl in Deinem Sketch zu finden sein.
Warum die Werte an A0 auf Null gehen, wenn Du den Sensor abziehst, erschließt sich mir nicht - dort hätte ich - bei gezogenem Sensor - also offenem Pin - wildeste Hausnummern erwartet.

Schaltplan?
Sketch?
Link zur Lib?

MfG

PS: Was erhofftest Du Dir, ein analoges Signal digital einzulesen?

Weißt Du was diese Zahl bedeutet?
2147483648 =2^15.= B1000 0000 0000 0000 0000 0000 0000 0000
Komisch daß der Sensor gerade diesen Wert liest.
Ciao Uwe

uwefed:
Weißt Du was diese Zahl bedeutet?
2147483648 =2^15.= B1000 0000 0000 0000 0000 0000 0000 0000

Du hast ein paar Nullen vergessen.

SCNR

Gregor

Ich habe diese Sensor: https://www.az-delivery.de/products/mq-135-gas-sensor-modul?_pos=3&_sid=18abc73f2&_ss=r#description

Der Sensor hat 4 Anschlüsse: VCC, GND, D0, A0

Angeschlossen ist er folgendermaßen:
VCC → 5V
GND → GND
A0 → A0
D0 → D0

digital und analog immer entweder oder.
Hab auch schon andere digitale Eingänge am 8266 versucht.

Hier der Sketch:
#include <MQ2.h>

//change this with the pin that you use
int pin = A0;
int lpg, co, smoke;

MQ2 mq2(pin);

void setup(){
Serial.begin(115200);

mq2.begin();
}

void loop(){

/*read the values from the sensor, it returns
*an array which contains 3 values.

  • 1 = LPG in ppm
  • 2 = CO in ppm
  • 3 = SMOKE in ppm
    /
    float
    values= mq2.read(true); //set it false if you don’t want to print the values in the Serial

//lpg = values[0];
lpg = mq2.readLPG();
//co = values[1];
co = mq2.readCO();
//smoke = values[2];
smoke = mq2.readSmoke();

delay(1000);
}

Hallo,
da der Sensor mit 5V versorgt wird , vermute ich mal das Ding ist nicht ohne weiteres mit einem ESP D1 Mini zu betreiben ist. Der Analgeingang des D1 ist für max 3V ausgelegt. Vermutlich ist da ein Spannungsteiler erforderlich. Ob die Lib so ohne weiteres mit dem ESP läuft weiss ich nicht , könnte aber sein das es auf Grund der unterscheidlichen Pin Bezeichnungen für Arduino und ESP zu Problemen kommt.

Ich würde da jetzt erst mal die analoge Spannung des Sensors mit einem Voltmeter messen. Dann mal ein Datenblatt suchen um mal zu sehen was das eigendlich in etwa rauskommen müßte. Dann einen Spannungsteiler einsetzen um auf 3V zu kommen ud mal ganz normal mit analogRead() versuchen was einzulesen. Anschliessend mal nachsehen was in der Lib eigendlich eigendlich mit dem Pin gemacht wird ob das beim D1 so auch gehen kann.

Heinz

Nachtrag:

habe gerade mal einen Blick in die lib geworfen da wird eine Anpassung auf 1024 gemacht , damit geht das nicht so einfach für den ESP .

Hallo,

hab noch was zum Thema rumgesucht , hier noch ein link zum lesen.

Heinz

denkteich:
Ich habe diese Sensor: https://www.az-delivery.de/products/mq-135-gas-sensor-modul?_pos=3&_sid=18abc73f2&_ss=r#description

Hast Du nun einen MQ-135 oder einen MQ-2?

einen MQ-2

Dann bitte den richtigen Link zum Sensor.
Grüße Uwe

oops, sorry.

hier ist der richtige:

Mittlerweile kommen per analog immer nur 0 werte.

denkteich:
oops, sorry.

hier ist der richtige:
https://www.az-delivery.de/products/gas-sensor-modul?_pos=1&_sid=1887071db&_ss=r

oops, sorry.
Das ist kein Link, was du postest nennt sich URL.

Nur der Richtigkeit halber.

Gruß Fips

Hi

Da ich dort keinen Beispiel-Sketch finde (wird aber erwähnt), suchte ich etwas weiter.
MQ2 auf roboter-bausatz.de liefert auch einen Sketch als Download:

int SensorPin = A0; // Der Pin AOUT (Analoger Output des Moduls) wird an A0 am Arduino-Board angeschlossen

void setup()
{
  Serial.begin(9600); // Serielle Verbindung erstellen
}

void loop()
{
  Serial.println(analogRead(SensorPin)); // Messwert auslesen und im seriellen Monitor ausgeben
  delay(1000); // Ausgabe von einem Wert pro Sekunde
}

Der Sensor selber braucht aktive 5V für den Heater (knapp 1W, also 200mA - KEIN Arduino-Pin und auch nicht vom 5V-Arduino-Pin).
Wie 5V für 'den Rest' - hiervon wird die Ausgangsspannung erzeugt.

Das Ding ist so einfach im Aufbau wie im Anschluss, daß ich einen eklatanten Fehler in Deinem Aufbau vermute - zeig Mal Bilder.

MfG

Keine Ahnung, was ich gemacht habe, einfach mit neuen Kabeln neu verkabelt.
Jetzt funktioniert, evtl. ist eins der Kabel defekt.

Hi

Oha - die guten Dupont-Strippen aus Fernost :wink: … kenne ich auch irgendwie …

Schön, daß Das nun funkioniert!

mfG