Analytische Messtechnik mit den Sensoren der MQ-Reihe

Die chemoresistiven Sensoren der MQ-Reihe detektieren und messen eine Vielzahl von Gasen und Verbindungen in der Luft. Ihre Funktionsweise basiert auf der Veränderung ihres Innenwiderstands bei Kontakt mit Verbindungen, worüber die folgende Übersichtstabelle Auskunft gibt. Ein elektrochemischer Prozess, gesteuert durch eine interne Heizung, ermöglicht die Messung. Es gibt verschiedene Modelle, die sich für spezifische Gase oder Gasgruppen eignen. Mit den passenden Sensoren kann ein einfacher low-cost Gaschromatograph aufgebaut werden.
Modell Hauptsächlich erkannte Gase Heizspannung
MQ-2 Methan, Butan, LPG, Rauch 5V
MQ-3 Alkohol, Ethanol, Rauch 5V
MQ-4 Methan, Erdgas 5V
MQ-5 Erdgas, LPG 5V
MQ-6 Butan, LPG 5V
MQ-7 Kohlenmonoxid 5V / 1.4V*
MQ-8 Wasserstoff 5V
MQ-9 Kohlenmonoxid, brennbare Gase 5V / 1.5V*
MQ-131 Ozon 6V
MQ-135 Benzol, Alkohol, Rauch, Luftqualität 5V

Beispiel: Low-cost Alkoholtester: Messung der Alkoholkonzentration in der Atemluft mit dem MQ-3 Sensor

Der MQ-3 ist ein chemischer Widerstandssensor auf Zinnoxid-Basis, dessen elektrischer Widerstand sich bei Kontakt mit Alkoholdämpfen ändert, wenn es durch das Reduktionsmittel Alkohol an der Oberfläche reduziert wird. In reiner Luft leitet SnO₂ als n-Typ-Halbleiter nur geringfügig Strom, weil sich Sauerstoffmoleküle an der Oberfläche anlagern. Die Sauerstoffmoleküle ziehen Elektronen aus dem Leitungsband des Zinnoxids ab. Dadurch entsteht direkt unter der Oberfläche der SnO₂-Partikel eine Zone mit Elektronenmangel, die eine Potenzialbarriere bildet. In diesem Zustand verhält sich der SnO₂-Film hochohmig und behindert den Stromfluss entscheidend.
Sobald jedoch Alkoholdämpfe auf die Schicht treffen, reagieren die adsorbierten Sauerstoffmoleküle mit den Alkoholmolekülen in einer Redoxreaktion, wobei Elektronen an die SnO₂-Schicht abgegeben werden, und die Potenzialbarriere sinkt. Die zugrundeliegende chemische Redoxreaktion ist die Oxidation von Ethanol auf der SnO₂-Oberfläche. Wenn Ethanol (C₂H₅OH) auf die beheizte SnO₂-Schicht (üblicherweise auf 200–300°C gehalten) trifft, wird es oxidiert. Dabei entstehen Kohlendioxid (CO₂), Wasser (H₂O) und freie Elektronen: C₂H₅OH + 3O₂ → 2CO₂ + 3H₂O + 12 Elektronen.

Der Sensorwiderstand (RS) sinkt mit steigender Alkoholkonzentration.

Elektrische Grundschaltung und Widerstandsberechnung

Schaltplan zum Aufbau des Spannungsteilers.

Der Sensor wird in einer Spannungsteilerschaltung mit einem festen Lastwiderstand RL betrieben:

Ucc (5V) — RL — UA0 — RS — GND

Da RL und RS in Reihe geschaltet sind, addieren sich ihre Widerstände zum Gesamtwiderstand: Rges = RL + RS betrieben. Nach dem Ohmschen Gesetz fließt durch diese Reihenschaltung ein Strom I, der sich aus I = Ucc / Rges ergibt. Dieser Strom ist an jeder Stelle der Reihe identisch. Die Spannung UA0, die über dem Sensorwiderstand RS abfällt, berechnet sich ebenfalls nach dem Ohmschen Gesetz als Produkt aus Strom und Widerstand: .

UA0 = I × RS
Setzt man den zuvor bestimmten Ausdruck für I in diese Gleichung ein, erhält man:

UA0 = Ucc × (RS / (RL + RS))

Für die Berechnung benötigen wir jedoch RS. Die Umstellung der Formel liefert:

RS = RL × (Ucc - UA0) / UA0

Der gemessene Spannungswert wird in einen digitalen Wert von 0-1023 umgerechnet, wenn die Methode analogRead() aufgerufen wird:

float berechneWiderstand(int roh_wert) { // RL_WERT = 18.7 (kΩ) return ((float)RL_WERT * (1023 - roh_wert) / roh_wert); }

Kalibrierung: Die Bestimmung des Referenzwiderstands R0

Der Kalibrierungsprozess im Code

1. Der Sensor misst in reiner Luft ohne Alkohol und berechnet RS_rein.
2. Ein theoretisches Verhältnis aus dem Datenblatt wird angenommen RS/R0 ≈ 57).
3. R0 wird berechnet:

R0 = RS_rein / 57
// Im Kalibrierungs-Abschnitt des Codes: RS = (5.0 - sensor_spannung) / sensor_spannung * RL_WERT; R0 = RS / 57.0; // 57 aus Datenblatt für reine Luft

Von der Kennlinie zur Berechnungsformel

Doppelt-logarithmische Auftragung der Konz. ppm gegen Rs/R0.

Die logarithmische Kennlinie

Die Beziehung zwischen RS/R0 und der Konzentration (ppm) ist nicht linear, sondern folgt einer Potenzfunktion. Im Datenblatt wird sie als Gerade in einem doppelt-logarithmischen Diagramm dargestellt.

Stützpunkte aus dem Datenblatt

Für die Berechnung werden zwei Punkte (x, y) aus dieser Geraden entnommen, wobei x die Konzentration in ppm und y das Verhältnis RS/R0 ist.

Konzentration (ppm) Verhältnis RS/R0
50 0.18
500 0.012

Mathematische Herleitung

Im doppelt-logarithmischen Diagramm gilt die Geradengleichung:

log10(RS/R0) = m · log10(ppm) + b

Die Steigung m und der Achsenabschnitt b werden aus den zwei Punkten berechnet:

m = [log10(y₂) - log10(y₁)] / [log10(x₂) - log10(x₁)]
b = log10(y₁) - m · log10(x₁)

Im Code geschieht dies einmalig bei Programmstart:

// Berechnung der Kurvenparameter const float punkt0[] = { log10(KALIB_X0), log10(KALIB_Y0) }; const float punkt1[] = { log10(KALIB_X1), log10(KALIB_Y1) }; const float steigung = (punkt1[1] - punkt0[1]) / (punkt1[0] - punkt0[0]); const float achsenabschnitt = punkt0[1] - punkt0[0] * steigung;

Die finale Berechnungsformel

Stellt man die Geradengleichung nach der gesuchten Konzentration (ppm) um, erhält man:

ppm = 10 [ (log10(RS/R0) - b) / m ]

Diese Formel lässt sich umschreiben zur im Code verwendeten, effizienteren Version:

ppm = 10 [ b + m · log10(RS/R0) ]
float berechneKonzentration(float rs_ro_verhaeltnis) { if (rs_ro_verhaeltnis <= 0) { return 0; } return pow(10, achsenabschnitt + steigung * log10(rs_ro_verhaeltnis)); }

Von ppm zu anderen Einheiten

Umrechnung in Gramm pro Liter (g/l) für Luft

ppm (parts per million) ist ein Volumenverhältnis. Für die Massenkonzentration in der Luft wird umgerechnet:

g/l = ppm × (Molmasse Ethanol) / (Molvolumen Luft × 106)

Mit der Molmasse von Ethanol (≈46.07 g/mol) und dem Molvolumen bei Raumtemperatur (≈24.5 l/mol):

g/l ≈ ppm × 1.88 × 10-6
const float PPM_TO_G_PER_L_FACTOR = 0.00000188; float alkohol_g_per_l = konzentration_ppm * PPM_TO_G_PER_L_FACTOR;

Abschätzung der Blutalkoholkonzentration (Promille)

Dies ist eine sehr grobe Näherung, da sie von vielen individuellen Faktoren abhängt. Eine verbreitete Faustformel ist:

Promille (Blut) ≈ ppm (Atemluft) / 2100

Sie basiert auf der Annahme, dass etwa 2100 ppm Alkohol in der Ausatemluft 1.0 Promille im Blut entsprechen.

float berechnePromille(float konzentration_ppm) { float promille = konzentration_ppm / 2100.0; if (promille < 0) promille = 0; if (promille > 2.0) promille = 2.0; // Plausibilitätsgrenze return promille; }

->Arduino-Programmcode für das LCD-Alkoholkonzentrationsmeter zum Herunterladen.

Quellen:
Funktionsweise

Idee zur Kalibrierung von Electronoobs: Homemade breathalyzer

Datenblatt zum MQ-3-Sensor
Funktionsweise des MQ3-Sensors
Konzentrationsbestimmung: Approximierung durch Polynome