Skip to Content

Sensore di Gas Monossido di Carbonio MEMS Fermion CO GM-702B con Arduino

Sensore di Gas Monossido di Carbonio MEMS Fermion CO GM-702B con Arduino

Il Fermion: MEMS CO Gas Detection Sensor è un sensore compatto su breakout board progettato per rilevare il monossido di carbonio (CO) utilizzando la moderna tecnologia microelettromeccanica (MEMS). Integra un elemento sensore MEMS GM-702B che risponde alle concentrazioni di CO nell’aria fornendo una tensione analogica proporzionale alla presenza del gas.

Il CO è estremamente velenoso e causa circa 400 morti all’anno negli Stati Uniti. Le fonti comuni includono apparecchi di riscaldamento mal mantenuti o usati in modo improprio, elettrodomestici a gas, barbecue a carbone e motori accesi in spazi confinati. Poiché è inodore e invisibile, un allarme CO è l’unico modo per rilevarne la presenza.

In questo tutorial imparerai come rilevare il monossido di carbonio con il sensore. Costruiremo un semplice sistema di allarme che fa lampeggiare un LED o emette un suono con un buzzer se la concentrazione di monossido di carbonio supera un livello critico.

Parti Necessarie

Ti servirà un sensore Fermion CO di DFRobot. Per il microcontrollore, ho usato un Arduino Uno per questo progetto, ma qualsiasi altro Arduino o ESP32 funzionerà altrettanto bene.

Per il nostro sistema di allarme avremo anche bisogno di un LED e di un buzzer, che puoi acquistare su Amazon. Inoltre, useremo un piccolo display OLED SSD1306 per mostrare il valore di CO misurato.

Sensore Fermion MEMS CO

Buzzer Passivo

Kit Resistenze & LED

OLED display

Display OLED

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cavo USB per Arduino UNO

Dupont wire set

Set di Fili Dupont

Half_breadboard56a

Breadboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Hardware del Sensore di Monossido di Carbonio (CO) Fermion

Il breakout del sensore Fermion MEMS di monossido di carbonio è costruito attorno a un piccolo elemento sensore MEMS per gas. Questo elemento è una struttura microelettromeccanica rivestita con un film sensibile proprietario che modifica le sue caratteristiche elettriche quando esposto a molecole di CO.

La breakout board include componenti passivi di supporto e fornisce un singolo segnale di uscita analogico. Alimentazione e massa sono fornite tramite livelli logici standard a 3,3 V/5 V.

Principio di Rilevamento

Il cuore del sensore utilizza la tecnologia MEMS per rilevare il gas CO. Questa tecnologia si basa sull’interazione tra le molecole di CO e una superficie chimicamente sensibile sulla struttura MEMS. Quando è presente CO, la resistenza del materiale sensore cambia.

Il circuito interno della breakout board converte questa variazione di resistenza in una tensione analogica proporzionale sul pin di uscita. Non è presente alcuna elaborazione digitale a bordo, quindi il segnale analogico grezzo deve essere letto e interpretato dal microcontrollore.

Caratteristiche Elettriche

Il sensore funziona con una tensione di alimentazione compresa tra 3,3 V e 5 V. La corrente operativa tipica è bassa, dell’ordine di decine di milliampere, il che consente l’uso in sistemi alimentati a batteria con una gestione adeguata dell’energia.

La tensione di uscita analogica varia con la concentrazione di gas ma non è riferita a unità calibrate. L’uscita deve essere campionata tramite un convertitore analogico-digitale sul microcontrollore host.

Comportamento del Segnale e Riscaldamento

Il sensore richiede un breve periodo di riscaldamento dopo l’accensione prima che le letture si stabilizzino. Durante questo tempo, l’elemento MEMS raggiunge un equilibrio termico ed elettrico. Dopo il riscaldamento, la tensione di uscita varia in risposta ai cambiamenti di concentrazione di CO.

Limitazioni

Il sensore non include compensazione a bordo per temperatura o umidità. Questi fattori ambientali possono influenzare l’uscita analogica, quindi in un sistema che richiede misurazioni più stabili possono essere usati sensori aggiuntivi. Inoltre, poiché l’uscita non è calibrata, le stime assolute della concentrazione di CO richiedono una calibrazione esterna con livelli di riferimento noti.

Specifiche Tecniche

La tabella seguente riassume le specifiche tecniche del sensore Fermion CO GM-702B:

Parametro Specifiche
Elemento Sensore Sensore gas MEMS GM-702B
Gas Target Monossido di Carbonio (CO)
Intervallo di Rilevamento 5 ppm a 5000 ppm (tipico)
Segnale di Uscita Tensione analogica
Tensione di Alimentazione 3,3 V a 5 V DC
Corrente Operativa < 20 mA (tipico)
Tipo di Interfaccia Singolo pin di uscita analogica
Tipo di Risposta Variazione di resistenza convertita in tensione
Temperatura di Funzionamento −10 °C a +50 °C
Umidità di Funzionamento 15 % a 90 % UR (non condensante)
Calibrazione Nessuna calibrazione di fabbrica fornita

Pinout

Fisicamente, il breakout del sensore espone tre pin per la connessione: uscita analogica (A), tensione di alimentazione (VCC) e massa (GND). L’immagine seguente mostra il pinout della scheda:

Pinout of Fermion Smoke Sensor GM-202B Board
Pinout della scheda Fermion CO Sensor GM-702B

Schema Elettrico

L’immagine seguente mostra lo schema elettrico della scheda Fermion CO Gas Sensor GM-702B:

Schematics of Fermion CO Sensor GM-702B
Schema elettrico del Fermion CO Sensor GM-702B (source)

Si possono vedere il regolatore di tensione e il chip sensore GM-702B con una resistenza di carico da 10K all’uscita VOUT.

Preparazione

Il sensore arriva con una pellicola protettiva che devi rimuovere. Se guardi la parte superiore del sensore, troverai una pellicola gialla che copre i fori di ingresso dell’aria. Usa una pinzetta per staccare la pellicola. Le foto sotto mostrano il sensore con la pellicola protettiva, a metà rimozione e completamente rimossa (da sinistra a destra):

Rimozione della pellicola protettiva

Nota che il sensore richiede un periodo di riscaldamento per raggiungere la stabilità operativa. Questo può richiedere diversi minuti al primo utilizzo fino a quando le letture si stabilizzano. Se non hai usato il sensore per molto tempo, è consigliato lasciarlo acceso da 48 fino a 168 ore:

Preheating times for GM-202B Smoke sensor
Tempi di burn-in per il sensore fumo GM-702B (source)

Specifiche Tecniche

La tabella seguente riassume le specifiche tecniche del sensore Fermion CO GM-702B:

Specifiche Dettaglio
Modello Sensore GM-702B
Gas Rilevato Monossido di Carbonio (CO)
Intervallo di Rilevamento ~5 ppm a 5000 ppm CO
Tipo di Uscita Tensione analogica (proporzionale/indicativa)
Tensione di Alimentazione 3,3 V – 5 V DC
Corrente Operativa < 20 mA
Sensibilità R₀(in aria) / Rₛ(in 150 ppm CO) ≥ 3
Temperatura di Funzionamento -10 °C a +50 °C
Umidità di Funzionamento 15 % – 90 % UR (non condensante)
Tempo di Riscaldamento Consigliato ≥ 5 min (più lungo dopo lo stoccaggio)
Durata ≥ 5 anni (in aria)
Dimensioni della Breakout Board ~13×13×2,5 mm (PCB incluso)
Interfaccia 3 pin: A (uscita analogica), VCC, GND
Applicazioni Tipiche Allarmi per perdite di CO, monitoraggio ambientale, sistemi di sicurezza

Ecco un link al Datasheet del sensore GM-702B con dati tecnici aggiuntivi:

Sensore Fermion GM-702B CO vs Sensore MQ-7 CO

Il sensore Fermion MEMS di monossido di carbonio (CO) e il sensore MQ-7 per gas CO sono entrambi comunemente usati in applicazioni hobbistiche per rilevare il monossido di carbonio, ma differiscono per principio di rilevamento, caratteristiche prestazionali e requisiti di integrazione.

Tecnologia di Rilevamento

Il sensore MEMS Fermion utilizza un elemento sensore microelettromeccanico che reagisce alla presenza di CO con una variazione delle sue proprietà elettriche. Questa variazione viene convertita sulla breakout board in una tensione analogica proporzionale.

Il MQ-7, invece, è un sensore a semiconduttore a ossido metallico (MOX). Si basa su una superficie riscaldata di ossido di stagno la cui resistenza varia quando le molecole di CO interagiscono con lo strato sensibile riscaldato. Questo meccanismo fa sì che il MQ-7 abbia tipicamente un consumo medio di potenza superiore rispetto al sensore MEMS Fermion.

Alimentazione e Riscaldamento

In termini di alimentazione e comportamento al riscaldamento, il sensore MEMS si stabilizza generalmente più rapidamente e consuma meno energia perché non alimenta un riscaldatore separato ad alta corrente.

Il MQ-7, invece, utilizza un ciclo periodico di riscaldamento per ottenere sensibilità e deve essere alimentato a tensioni e tempi specifici per produrre letture ripetibili, il che aggiunge complessità al firmware e aumenta il consumo energetico.

Uscita

Entrambi i sensori forniscono un’uscita analogica che deve essere letta da un convertitore analogico-digitale su un microcontrollore come Arduino o ESP32. Tuttavia, nessuno dei due sensori fornisce un valore digitale calibrato di concentrazione direttamente.

Selettività e Stabilità

In termini di selettività e stabilità, il sensore MEMS mostra generalmente una minore cross-sensibilità e una migliore stabilità di base a lungo termine rispetto ai sensori MOX come il MQ-7, che possono rispondere a più gas riducenti e sono influenzati da umidità e temperatura ambientale.

Riassunto

In generale, il sensore Fermion MEMS CO è più adatto a progetti che richiedono basso consumo, risposta più rapida e integrazione più semplice, mentre il MQ-7 è interessante per rilevamenti di base a costo inferiore ma richiede un controllo più attento dell’alimentazione, calibrazione e compensazione ambientale nel firmware.

Collegare il sensore Fermion CO ad Arduino UNO

Collegare il sensore a un Arduino UNO è semplice. Collega VCC a 5V (o 3,3V), GND a massa e A all’ingresso analogico A0 come mostrato di seguito:

Connecting Smoke Sensor to Arduino UNO
Collegamento del sensore CO ad Arduino UNO

Esempi di Codice

Lettura della concentrazione di monossido di carbonio

In questo primo esempio leggiamo semplicemente i valori misurati dal sensore e li stampiamo sul Monitor Seriale ogni secondo:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(1000);
}

Vedrai valori tra 0 e 1023, a seconda della quantità di monossido di carbonio nell’ambiente.

Se il sensore non si è completamente riscaldato, vedrai una sequenza di valori in diminuzione continua sul Monitor Seriale. Vedi sotto:

Dopo alcuni minuti le misurazioni si stabilizzeranno. Nel mio caso intorno a un valore di 130. Puoi testare il sensore soffiandoci sopra. Vedrai un improvviso aumento del valore misurato:

Poiché il sensore non è calibrato, non puoi usarlo per misurare concentrazioni reali in ppm (parti per milione) o mg/m 3 . Tuttavia, puoi usarlo per costruire un allarme per il monossido di carbonio, cosa che faremo nella sezione successiva.

Allarme Monossido di Carbonio con LED

Il codice seguente implementa un semplice allarme per il monossido di carbonio. Accende un LED se il valore di CO misurato supera una soglia predefinita di 160:

byte sensorPin = A0;
byte ledPin = 13;
int threshold = 160;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  digitalWrite(ledPin, val > threshold ? HIGH: LOW);
  delay(100);
}

Ho collegato il LED con una resistenza da 220 Ohm al GPIO 13 come LED di allarme come mostrato di seguito:

Collegamento LED di allarme ad Arduino UNO

Nota che per un sistema di allarme affidabile potresti voler aggiungere anche un sensore di temperatura e uno di umidità, poiché le letture del sensore sono influenzate da temperatura e umidità. In alternativa, potresti usare una finestra scorrevole per compensare la deriva del sensore dovuta a temperatura e umidità.

Allarme Monossido di Carbonio con Buzzer Passivo

Invece del LED puoi anche attivare un buzzer come segnale di allarme. Nel codice seguente un buzzer passivo viene attivato se la concentrazione di CO misurata supera la soglia:

byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 160;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  if (val > threshold) {
     tone(buzzerPin, 500);
  } else {
    noTone(buzzerPin);
  }
  delay(100);
}

L’immagine seguente mostra come aggiungere il buzzer al circuito. Inizia collegando il terminale negativo del buzzer al GND dell’Arduino (filo nero). Poi collega il terminale positivo tramite una resistenza da 100Ω al GPIO 11 (filo rosso):

Connecting alarm buzzer to Arduino UNO
Collegamento buzzer di allarme ad Arduino UNO

Assicurati che la polarità del buzzer sia corretta e che sia un buzzer passivo collegato a un pin GPIO con capacità PWM. Per maggiori informazioni vedi il Active and Passive Piezo Buzzers with Arduino tutorial.

Se hai un buzzer attivo, devi usare il codice dell’allarme con LED, poiché non funzionerà correttamente con il comando tone().

Visualizzare la concentrazione di monossido di carbonio su OLED

In quest’ultimo esempio visualizziamo i valori di concentrazione di fumo misurati su un piccolo OLED. Il codice stampa “CO” e il valore al centro del display e aggiorna il valore mostrato ogni 100 ms:

#include "Adafruit_SSD1306.h"  // Version 2.5.16

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE, BLACK);
  oled.clearDisplay();
}

void loop() {
  static char text[30];

  int val = analogRead(A0);

  oled.setTextSize(2);
  oled.setCursor(50, 10);  
  oled.print("CO");

  sprintf(text, " %d ", val);
  oled.setTextSize(2);
  oled.setCursor(35, 40);
  oled.print(text);

  oled.display();

  delay(100);
}

Nota che ti serve la Adafruit_SSD1306 libreria per controllare l’OLED. Puoi installarla tramite il Library Manager come al solito:

Adafruit_SSD1306 library installed in Library Manager
Libreria Adafruit_SSD1306 installata nel Library Manager

Collegare l’OLED all’Arduino è semplice. Collega SDA e SCL dell’OLED ai pin A4 e A5 dell’Arduino. Per l’alimentazione: dato che l’OLED può funzionare a 5V, possiamo condividere le linee di alimentazione. Collega VCC a 5V e GND a GND. L’immagine sotto mostra il cablaggio completo:

Connecting OLED and Sensor to Arduino UNO
Collegamento OLED e sensore ad Arduino UNO

Se hai bisogno di aiuto con l’OLED, dai un’occhiata al Use SSD1306 I2C OLED Display With Arduino tutorial.

Conclusione

In questo tutorial hai imparato come usare il sensore Fermion CO con un Arduino UNO per rilevare il monossido di carbonio. Il sensore può essere facilmente usato anche con altri microcontrollori come l’ESP32.

I sensori gas MEMS hanno il vantaggio di essere piccoli, consumare pochissima energia (< 20mA) e avere un breve tempo di riscaldamento. Tuttavia, sono comunque influenzati dalla temperatura e dall’umidità ambientale.

Inoltre, il sensore Fermion di monossido di carbonio non è calibrato e quindi non può essere usato direttamente per misurare concentrazioni reali in unità ppm.

Nota che esiste un’intera serie di diversi sensori MEMS disponibili. Per una panoramica vedi l’ Review of the DFRobot Fermion MEMS Gas Sensor Series articolo e per dettagli i nostri post dedicati:

Se hai domande, sentiti libero di lasciarle nella sezione commenti.

Buon divertimento con il tinkering 😉