Ein CO-Warner mit MQ-7 und ATtiny45

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Ein CO-Warner mit MQ-7 und ATtiny45

      Man liest immer mal wieder über Kohlenmonoxidvergiftungen. Da es heutzutage doch Sensoren für praktisch alles gibt, sollte es doch kein Problem sein, einen CO-Warner zu bauen. Ein ATTiny bietet sich als Datenverarbeitungszentrale förmlich an.

      Hier eine kurze Zusammenfassung meines CO-Warner-Projektes. Den BASCOM-Code und das Leiterplattendesign gibt es weiter unten …

      Im Internet gibt es so kleine Platinen mit einem eingebauten CO-Sensor. Sollte doch kein Problem sein? Also so eine Minileiterplatte beschafft und auf dem Experimentiertisch untersucht...

      MQ-7 heißt das gute Stück, das Internet bietet einige Informationen.

      Mein Ziel ist ein kleines Einbaugerät. Es soll in einem Ultraleichtflugzeug eingebaut werden. Mit einer im Gefahrenfall blinkenden Leuchtdiode und einem Anschluß an das im Flugzeug vorhandene Intercom, damit man auch einen Warnton zu hören bekommt.

      Erst einmal gilt es, die Funktionsweise des CO-Schnüfflers zu verstehen.

      IMG_3029.JPG

      Wie funktioniert nun so ein MQ-7 Gassensor? Das Herz ist ein Metallplättchen aus einer speziellen Legierung. Bei einer genau definierten Temperatur
      irgendwo jenseits der 200°C lagern sich Gasmoleküle an der Oberfläche an und verändern den elektrischen Widerstand. Das läßt sich dann messen.
      Welche Gasmoleküle wird durch Werkstoff und Temperatur bestimmt. Für die richtige Temperatur sorgt eine eingebaute Heizung.

      Der MQ-7 Sensor ist bereits auf einer kleinen Leiterplatte mit einigen Bauelementen verbaut, der Hersteller nennt das ganze "Flying Fish", warum auch immer. Die Schaltung wertet den Widerstand aus und schaltet bei einer einstellbaren Schwelle eine Leuchtdiode. Masse, Betriebsspannung und je ein analoger und ein digitaler Ausgang, das sollte ja einfach sein.

      Das Datenblatt des MQ-7 Sensors wirft dagegen ein paar Fragen auf. Es gibt einen Zyklus von 60 Sekunden Heizen mit 5V ohne Messen (damit wird praktisch der Sensor "gereinigt") und danach 90 Sekunden Heizen mit 1.4V (während dieser Zeit kann gemessen werden) vor. Diese Logik kann ich beim fliegenden Fisch nirgends entdecken. Im Internet findet man Anleitungen, was man beim Modul aus- und umlöten sollte. Ich bin verwirrt.

      Für die praktische Verwendung gibt es also zwei Möglichkeiten. Den Fliegenden Fish einfach einzubauen und auf den digitalen/analogen Ausgang zu reagieren, oder den lt. Datenblatt vorgesehenen Zyklus aus Heizen/Messen zu implementieren.
      Ich entscheide mich für ein sowohl-als-auch. Der ATiny-45-Mikrocontroller bekommt ein wenig mehr zu tun. Eine kleine Leiterplatte entsteht. Die Entscheidung, ob 5V/1.4V Zyklus oder einfach wie es der Fliegende Fisch vorsieht, kann ich erst mal per Software treffen. Nebenbei passt auf die Platine noch ein
      7805-Spannungsregler (um aus den 12V Bordnetz der Flugzeuges saubere 5V zu machen) und ein kleiner Verstärker, um den Warnton meiner CO-Warnung ins Intercom einzuspielen.

      IMG_3037.JPG

      Die Sechspolige Buchse dient zur Programmierung des Atiny. Im EEprom des Attiny lege ich die gemessenen CO-Werte ab und kann sie über diesen
      Stecker später auslesen. Der Spannungsregler hinten braucht später noch ein Kühlblech.

      Für das Gehäuse entsteht im 3D-Druck. Ein kleiner Lüfter aus dem Computer wird auch mit verbaut. Er soll dafür sorgen, daß auch wirklich Kabinenluft aus dem Flugzeuginneren zum Sensor kommt, immerhin soll das ganze ja ins Armaturenbrett eingebaut werden.

      Eine Zweifarb-LED ist die ganze Mensch-Maschine-Schnittstelle. Grün = Alles OK. Rot = Gefahr.

      IMG_3120.JPG

      So sah der erste Prototyp mit abgenommenem Deckel dann aus. Der Sensor hat ein Loch im Blech. Der Lüfter saugt Luft durchs Gehäuse. An der Rückseite die Spannungsstecker und die beiden Buchsen für "Audio-in" und "Audio-out"

      Das ganze sollte natürlich getestet werden, zuerst mal mit Hausmitteln. Teelichte unter einer Glsglocke. Nach wenigen Sekunden blinkt die LED rot. Das ist goch gar nicht so schlecht für den ersten Versuch?

      Das Verhalten des Sensors wollte ich noch ein wenig weiter untersuchen. Vor allem haben mich die unterschiedlichen "Betriebsarten" interessiert.
      So, wie das MQ-7-Modul von "Flying-Fish" aufgebaut ist, kann es doch überhaupt nicht funktionieren. Oder Doch? Hier einmal die Ergebnisse meines Versuches:

      simple.jpg

      Dargestellt ist der Widerstand des Sensors (in Kiloohm) über der Zeit. Nach etwa 20 Sekunden hab ich die Heizspannung angelegt. Nach etwa 2
      Minuten ist der Sensor betriebsbereit. Nach 230 Sekunden habe ich dann die Teelichter in Gang gesetzt. Der Sensor reagiert, der Widerstand nimmt ab, der Alarm geht los. Funktioniert also doch. Irgendwie. Nach dem Belüften geht der sensor langsam wieder in seinen Ausgangszustand zurück, eine Minute Später ist alles wieder OK.

      Wenn man den Sensor laut Datenblatt betreibt, gibt sich ein anderes Bild:
      Man kann die "Heizphasen" gut erkennen. In der "Meßphase" ist der Widerstand deutlich höher, aber, zumindest bei meinem Meßaufbau, ziemlich variabel. Unter Teelichtgas verringert sich der Widerstand deutlich. Bei genauem Hinsehen sieht man den Verringerten Widerstand in der Heizphase auch.

      richtig.jpg

      Die absolute CO-Konzentration könnte ich per Datenblatt aus dem Widerstandswert ausrechnen.
      Zwischen-Fazit: Zum Warnen bei ansteigender CO-Konzentration sind beide "Betriebsarten" geeignet. Nachteil des "richtigen" Betriebs ist, daß die Meßphasen jeweils durch 1-minütige "Heizphasen" unterbrochen sind.

      Eine Idee war dann, beide Betriebsarten miteinander zu kombinieren, während der Heizphase die Änderung auszuwerten und während der Meßphase den Absolutwert.
      Theorie und Praxis unterscheiden sich in der Theorie nicht.

      srswift.de
    • Also weiter! Theorie und Praxis unterscheiden sich bekanntlich in der Theorie nicht.
      Ich hab meinen CO-Warner mal an den Auspuff verschiedener PKWs und Ultraleichtflugzeuge gehalten. Die rote Leuchtdiode blinkte wild. So sollte es sein.

      IMG_3186.jpg

      Bevor ich aber ein Loch in mein schönes Armaturenbrett bohre, war erst einmal eine Flugerprobung dran.
      Das schöne an den Zulassungsregeln für Ultraleichtflugzeuge ist, man kann solche Gerätschaften unproblematisch testen, ohne eine Luftfahrttechnische Genehmigung zu benötigen.

      Die Praxiserprobung hat mich mit der „Fisch-Variante“ aber am Ende nicht überzeugt, die Empfindlichkeit war entweder zu gering, oder ich hatte Fehlalarme.

      Getreu dem Motto:" Man hat nie Zeit, etwas richtig zu machen, aber immer Zeit, etwas noch einmal zu machen" hab ich einige Wochjen später an
      meinem CO-Warner weitergemacht. Auch das Gehäuse hatte mir noch nicht so richtig gefallen.
      Vor allem brauchte ich aber eine neue Leiterplatte. Die Praxiserprobung hat gezeigt: Der Sensor sollte "richtig" betrieben werden. Der Fliegende Fisch ist herausgeflogen. Der MQ-7-Sensor ohne drumherum kostet zwar im Internet mehr als das doppelte vom "Fliegenden Fisch". Aber ich halte nicht viel vom Auslöten. Die größten Veränderungen musste jedoch die Software über sich ergehen lassen.

      IMG_3253.JPG

      Neben dem direkt eingebauten Sensor ist die größte Veränderung der 2.Version ein dicker Stecker. Ich habe den Sensor (mit Elektronik) von der Anzeige getrennt. Die ist im Sichtbereich des Piloten und enthält im Prinzip nur die LED. Der Sensor wird am Brandschott des Flugzeugs montiert. Über den SUB-C-Stecker wird das Display angeschlossen, läßt sich der Attiny programmieren und die CO-Messwerte der letzten Stunden auslesen.

      Um die Software Praxistauglich zu machen hab ich folgendes Verfahren in den Mikrocontroller geprügelt:

      0.) Funktionstest. Leuchtdioden Farbenspiel und Beep
      1.) Vorheizen. Am Sensor liegt für 1 Minute die vorgegebene Heizspannung. LED leuchtet gelb.
      2.) Kalibrieren. Der vorgegebene Heizen/Messen Zyklus wird durchlaufen, die Widerstandswerte werden in festen Intervallen abgespeichert. Diese Werte dienen dann im späteren Betrieb als "Kennlinie" LED leuchtet grün
      3.) Betrieb. Der vorgegebene Heizen/Messen Zyklus wird durchlaufen. Die Meßwerte werden gespeichert und mit der "Kennlinie" verglichen. Abweichungen werden erkannt und abhänging von ihrer Größe und Zeitdauer gemeldet. LED blinkt im einem langen Intervall kurz grün. (Alles OK) oder rot (Abweichung zur Kennlinie gefunden). Bei Abweichungen über einem Grenzwert oder einem Absolutwert (laut Kennlinie aus dem Datenblatt) blinkt / leuchtet die LED rot und ein Warnton wird im
      Headset ausgegeben.

      Die Empfindlichkeit der neuen Schaltung ist beeindruckend. Ein angezündetes Teelicht neben dem Sensorkästchen wird registriert.

      Dann war der Sensor zwei Jahre lang im praktischen Einsatz. CO hat er bisher nicht gefunden, aber Benzindämpfe. Bei einem Überlandflug begann das Gerät plötzlich zu warnen. Also Heizung zu, Fenster auf. Landen auf dem nächsten Flugplatz. Reboot des Sensors. Gleiche Warnung. Es roch ein wenig nach Kraftstoff. Später stellt sich heraus: Eine Vergaserdichtung hatte einen Riß. Repariert, und keine Warnungen mehr.

      IMG_3623.JPG

      Nach mehr als 2 Jahren war dann mal ein Update fällig. Die elektronische Hardware (Schaltplan, Leiterplatte) konnte ich unverändert übernehmen. Zum Glück hatte ich ja vor zwei Jahren gleich ein paar Leiterplatten mehr bestellt.

      Das Gehäuse hab ich dann neu konstruiert. Die Anzeuíge-LED ist mit in der Gehäusevorderseite. Das ganze ist ein wenig stabiler. Die 57mm-Blende ist abnehmbar und dahinter ist der SUB-D-Stecker zugänglich.

      Die größten Veränderungen hat die BASCOM-Firmware erfahren. Die Kennlinien und Meßwerte werden mathematisch geglättet, um falsch-positve Warnungen auszublenden. Die Meßfenster sind optimiert, der interne Oszillator ist kalibriert. Und die Warnfunktion ist jetzt so gestaltet, daß die Warn-LED auch dann weiterleuchtet, wenn keine Messungen erfolgen (Heizphase). Die akustische Warnung wird nach 9 Zyklen abgeschaltet.

      Hier noch mal ein Meßprotokoll, oben die Meßwerte, unten die geglätteten Differenzwerte und der Alarm.

      Bildschirmfoto_2020-08-26_09-03-42.png

      Ich denke, ein erfolgreiches Projekt.

      Und damit auch andere etwas davon haben, hab ich die Bauunterlagen (Schaltung, Leiterplatte, 3D-Modelle und den Mikrocontroller-Code unter GPL für jeden, der sich dafür interessiert veröffentlicht.

      BASCOM-Sourcen, Leiterplattenfiles und 3D-Modelle gibt es hier: github.com/srswift7/CO-Warn

      IMG_3647.JPG

      gero
      Theorie und Praxis unterscheiden sich in der Theorie nicht.

      srswift.de