MQ7 komischer Signalausgang

Hallo Leute,
ich brauche mal wieder Hilfe.
Ich habe mir einen MQ 7 (CO-Sensor) gekauft und würde diesen gerne mobil einsetzen.
Arbeite in eine KFZ- Werkstatt, kann das Teil ggf. Kalibrieren bzw. testen.
Das ist auch der eigentliche Einsatzort meines Gerät’s. Ich möchte den CO Wert im Auge behalten, da ich der Meinung bin, dass unsere Absaugen im Winter nicht ausreichen.
Außerdem würde ich auch gerne mal den CO gehalt in einer Shisha bar messen.

Folgendes Problem:
Nachdem ich den Sensor etwas(10min.) mit 5V laufen gelassen habe (Der soll wohl 48h vorgewärmt werden) und ich anschließend den Wert aus AO(-> Analoger Wert vom sensor) auslese, bekomme ich folgende Ergebnisse (->Bild).

Ich weiß leider nicht mehr weiter, bin auch schon einige Zeit an dem Sensor dran.
Macht es einen Unterschied, ob ich den Sensor mittels PWM oder mit einem Transistor ansteuere?
Ich habe auch nachgemessen ob die 1.4 bzw 5V am Sensor ankommen.
Achja, einen HC 05 Bluetooth Sensor habe ich noch an RX TX hängen.

Anhang:

-Datasheet (sparkfun.com …
-Ausgelesene Werte(Bild)
-Code(Bild)

 int AOpin=0;
  int DOpin=8;
  int Reglerpin=9;
  int ACCBl=10;
  int ledPin=13;

  int value;  // Analoger Signaleingang vom MQ7


void setup() {
  Serial.begin(9600);
  pinMode(DOpin,INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(Reglerpin, OUTPUT); //Spannungsversorgung MQ7 mit 1.4V und 5V
  pinMode(ACCBl, OUTPUT); //Spannungsversorgung Bluetooth
}

void loop() {


    for(int o=0;o<60;o++){          // 60s Aufwärmphase
       analogWrite(Reglerpin,255 ); // Ansteuerung der MQ Heizung mit 5V
         Serial.print(o,DEC);
       delay(1000);
     
    }

  for(int i = 0;i<90;i++){       // 90s Auslesephase
    
  analogWrite(Reglerpin,83 ); // Ansteuerung zum auslesen mit 1.4V
  digitalWrite(ACCBl, HIGH); 
  
  value = analogRead(AOpin);
  Serial.print("CO Wert ");
  Serial.println(value);
  delay(1000);
  Serial.print(i,DEC);


}

}

Bitte setze Deinen Sketch in Codetags (oben links </> im Foreneditor oder [code] davor und [/code] dahinter - ohne die *).
Das kannst Du auch noch nachträglich durch Editieren tun. Bitte mach das, der Sketch ist besser zu lesen, besonders auf mobilen Geräten.

Hast Du mal ins Datenblatt des Sensors geschaut? Der hat ein ziemlich enges Zeitregime ± 1 Sekunde. Da habe ich nichts von 10 Minuten oder 48 Stunden gelesen.

Gruß Tommy

Tommy56:
Bitte setze Deinen Sketch in Codetags (oben links </> im Foreneditor oder [code] davor und [/code] dahinter - ohne die *).
Das kannst Du auch noch nachträglich durch Editieren tun. Bitte mach das, der Sketch ist besser zu lesen, besonders auf mobilen Geräten.

Hast Du mal ins Datenblatt des Sensors geschaut? Der hat ein ziemlich enges Zeitregime ± 1 Sekunde. Da habe ich nichts von 10 Minuten oder 48 Stunden gelesen.

Gruß Tommy

Erledigt.

die 10min. habe ich genommen, damit der Wert wohl etwas runter geht.( Der fängt normalerweise weit oben an und “kalibriert” sich dan runter auch 40 bis 80).

Im Datenblatt steht zu “preheat time” → “No less than 48 hours”.

Was meinst du genau mit Zeitregime ±1s?

Hallo, der sollte 24Std unter Spannung stehen, damit er seine Betriebs-Temperatur hat. Wenn er diese 24Std rum hat, dann gibt er Dir einen Wert aus. An frischer Luft sollte der so bei 400 bis 450ppm liegen. Wie auch immer, nach 24Std bekommst Du einen Wert, das ist Dein ReferenzWert. Wenn Du den eichen willst, dann geht das nur mit Prüfgas. Wenn die Versorgungsspannung unterbrochen wird, mußt Du wieder 24Std warten. Für die serielle Schnittstelle ist der zu langsam, lese mal alle 30 oder 60 Sekunden. Viel- Spaß- mit- dem- Ding! Gruß und Glück Andreas

Wenn der jedes Mal 24 Stunden braucht, ist sowas ja nur mit einer Dauerheizung benutzbar. Ein Glück, dass ich sowas nicht Messen will ;)

Die phreheat time hatte ich übersehen, sorry.

Gruß Tommy

Hallo, ja, besorge Dir mal die richtigen Datenblätter und Schaltbilder für die MQ x. Die haben fast alle ne´ "Heizung" eingebaut, und sind "von Haus aus" dumm. Wenn es genau und komfortabel werden soll, dann wird es teuer. Gruß und Spaß Andreas

SkobyMobil: Hallo, ja, besorge Dir mal die richtigen Datenblätter und Schaltbilder für die MQ x. Die haben fast alle ne´ "Heizung" eingebaut, und sind "von Haus aus" dumm. Wenn es genau und komfortabel werden soll, dann wird es teuer. Gruß und Spaß Andreas

Also ich habe es nun über den Transistor auf einen konstanten Auslesewert von 76 hinbekommen. Die Auslesezeit ist ja eig. nur das messen der anliegenden Spannung. Da wird ja nichts verarbeitet, das Zeit benötigt. Oder macht ein Wiederstand mehr als nur den Strom hemmen?

Eine Frage habe ich noch an dich: - Wie bekomme ich jetzt aus dem Analogen wert ein ppm Wert? gibt es ein Umrechnungsfaktor oder soetwas ähnliches?

Hallo,
Information
Das Internet ist voll vom MQ x und arduino.
Ich ärger mich mit den Dingern nicht mehr rum.
Gruß und Glück
Andreas

SkobyMobil: Hallo, Information Das Internet ist voll vom MQ x und arduino. Ich ärger mich mit den Dingern nicht mehr rum. Gruß und Glück Andreas

Hast du vielleicht eine -noch recht günstigere- Variante vorzuschlagen?

Hallo, da kann ich Dir nicht helfen. Gruß und Spaß Andreas

Hallo, also, Du hast Dir das Ding ja gekauft- dann probiere damit doch einmal rum.

Beispiel A Beispiel B

die lassen sich ja einfach auslesen.

Baue Dir das doch einmal auf einem Steckbrett zusammen und lasse es 24 Std in der Werkstatt laufen. Dann schaust Du was für einen Wert er ausgibt. Ihr könnt doch CO in der Werkstatt messen? Wenn euer WerstattMessgerät einen anderen Wert ausgibt, dann "eichst" Du Deinen Aufbau auf diesen Wert. Nun mußt Du nur noch dafür sorgen, das die Spannungsversorgung nicht unterbrochen wird- dann kannste schon etwas machen… Gruß und Spaß Andreas

Hast du gesehen, das beide Spannungen mit 0,1V Genauigkeit anzuliegen haben? "Normale" 5V bei Digitaltechnik brauchen nur +/- 0,25V genau sein. Die 5V des Arduinos sind noch zu ungenau. Erst recht, wenn die über ein USB Kabel kommen, da kommen meist sogar nur unter 4,75V am Controller an. Guck dir mal im Datenblatt Bild 5 die Ausgangsspannung an, die hat die gleiche Sägezahnform, wie deine Peaks, die du in in deinen seriell ausgelesenen Werten erhälst. Womit sich sicherlich auch auf CO testeh lässt, ist Ameisensäure. Ameisensäure zerfällt (wenn man mit einem stark wasserentziehenden Mittel nachhilft, wie z.B. mit konz. Schwefelsäure) zu CO und Wasser. Der Sensor sollte also bei Ameisensäuredämpfen ebenfalls ansprechen. Eichen kann man ihn damit zwar nicht, aber für einen Funktionstest sollte es langen. Frag mal einen Imker, die haben Ameisensäure ;)

nix_mehr_frei:
Hast du gesehen, das beide Spannungen mit 0,1V Genauigkeit anzuliegen haben? “Normale” 5V bei Digitaltechnik brauchen nur +/- 0,25V genau sein. Die 5V des Arduinos sind noch zu ungenau. Erst recht, wenn die über ein USB Kabel kommen, da kommen meist sogar nur unter 4,75V am Controller an.
Guck dir mal im Datenblatt Bild 5 die Ausgangsspannung an, die hat die gleiche Sägezahnform, wie deine Peaks, die du in in deinen seriell ausgelesenen Werten erhälst.
Womit sich sicherlich auch auf CO testeh lässt, ist Ameisensäure. Ameisensäure zerfällt (wenn man mit einem stark wasserentziehenden Mittel nachhilft, wie z.B. mit konz. Schwefelsäure) zu CO und Wasser. Der Sensor sollte also bei Ameisensäuredämpfen ebenfalls ansprechen. Eichen kann man ihn damit zwar nicht, aber für einen Funktionstest sollte es langen. Frag mal einen Imker, die haben Ameisensäure :wink:

Ein guter Einwand!
Ich habe noch eine 9V Block-batterie extern angeschlossen.
Die Spannungen habe ich mit dem Multimeter gemeßen.

Die Frage die mir immernoch bleibt: wie komme ich von dem Analogen Signal zu ppm?

Ich habe noch eine 9V Block-batterie extern angeschlossen.

Sozusagen in Ergänzung zur USB-Versorgung? Halte ich für ziemlich sinnfrei. Und 9 Volt Batterien taugen eh nicht als Stromversorgung!

Du musst die Spannungen sehr genau bereitstellen. Die Hetzspannung über eine lange Zeit und auch die Meßspannung muss genau sein. Da ist einiges an Aufwand verbunden, bevor überhaupt erst mal ein möglicher verwertbarer Wert raus kommt.

Um meinen Vorredner zu bekräftigen: 9V-Blöcke sind die denkbar ungeeignetste Spannungsversorgung, wenn es über 20 µA geht.

Gruß Tommy

Ich habe noch eine kleine Bleibatterie aus einer S Klasse: 1.2Ah 12V Wäre die wohl geeignet?

Nunja, ich könnte das ganze auch anfangs mit der Steckdose betreiben, einen Stecker für den Arduino habe ich.

Ich muss dennoch dahinterkommen, wie ich auf die ppm komme. Wenn ich das einfach stumpf mit dem 3-Satz mache? also 2000(ppm)/1024(Analogsignal) und das ganze mit dem AO Wert multipliziere? Die Grafik im Datenblatt sieht recht gerade aus.

Nochmal zum Mitmeißeln: Du brauchst 2 genau stabilisierte Spannungen, die Du schalten musst. Die bekommst Du einfach so aus keiner Quelle. Da musst Du Aufwand rein stecken. Bis dahin ist PPM uninteressant.

Gruß Tommy

Hallo, letzte Seite Datenblatt oder zur Info. Ohne vernünftige Spannung und Aufwärmzeit wird das nichts. Gruß und Spaß Andreas