Skip to Content

Sensor de Gas Monóxido de Carbono MEMS Fermion GM-702B con Arduino

Sensor de Gas Monóxido de Carbono MEMS Fermion GM-702B con Arduino

El Fermion: Sensor de Detección de Gas CO MEMS es un sensor compacto en placa de desarrollo diseñado para detectar monóxido de carbono (CO) utilizando tecnología moderna de sistemas microelectromecánicos (MEMS). Integra un elemento sensor MEMS GM-702B que responde a concentraciones de CO en el aire entregando un voltaje analógico proporcional a la presencia del gas.

El CO es extremadamente venenoso y causa aproximadamente 400 muertes anuales en EE. UU. Las fuentes comunes incluyen equipos de calefacción mal mantenidos o usados incorrectamente, electrodomésticos de gas, parrillas de carbón y motores en funcionamiento en espacios cerrados. Debido a que no es detectable por los sentidos humanos, una alarma de CO es la única forma de detectar su presencia.

En este tutorial aprenderás cómo detectar monóxido de carbono con el sensor. Construiremos un sistema de alarma simple que hace parpadear un LED o activa un zumbador si la concentración de monóxido de carbono se vuelve demasiado alta.

Partes necesarias

Necesitarás un sensor Fermion CO de DFRobot. Para el microcontrolador, usé un Arduino Uno para este proyecto, pero cualquier otro Arduino o ESP32 también funcionará.

Para nuestro sistema de alarma también necesitaremos un LED y un zumbador, que puedes conseguir en Amazon. Además, usaremos un pequeño OLED SSD1306 para mostrar el valor medido de CO en una pantalla.

Sensor Fermion MEMS CO

Zumbador pasivo

Kit de resistencias y LED

OLED display

Pantalla OLED

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cable USB para Arduino UNO

Dupont wire set

Set de cables Dupont

Half_breadboard56a

Protoboard

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 Sensor de Monóxido de Carbono (CO) Fermion

El breakout del Sensor de Monóxido de Carbono (CO) MEMS Fermion está construido alrededor de un pequeño elemento sensor MEMS de gas. Este elemento es una estructura microelectromecánica recubierta con una película sensible propietaria que cambia sus características eléctricas cuando se expone a moléculas de CO.

La placa breakout incluye componentes pasivos de soporte y proporciona una única señal de salida analógica. La alimentación y tierra se conectan mediante niveles lógicos estándar de 3.3 V/5 V.

Principio de detección

El núcleo sensor utiliza tecnología MEMS para detectar gas CO. Esta tecnología se basa en la interacción entre las moléculas de CO y una superficie químicamente sensible en la estructura MEMS. Cuando hay CO presente, la resistencia del material sensor cambia.

El circuito interno de la placa breakout convierte este cambio de resistencia en un voltaje analógico proporcional en el pin de salida. No hay procesamiento digital a bordo, por lo que la señal analógica cruda debe ser leída e interpretada por el microcontrolador.

Características eléctricas

El sensor funciona con un voltaje de alimentación entre 3.3 V y 5 V. La corriente típica de operación es baja, del orden de decenas de miliamperios, lo que permite su uso en sistemas alimentados por batería con una gestión adecuada de energía.

El voltaje de salida analógico varía con la concentración de gas pero no está referenciado a unidades calibradas. La salida debe ser muestreada mediante un convertidor analógico-digital en el microcontrolador anfitrión.

Comportamiento de la señal y tiempo de calentamiento

El sensor requiere un breve período de calentamiento tras aplicar la alimentación antes de que las lecturas se estabilicen. Durante este tiempo, el elemento MEMS alcanza un equilibrio térmico y eléctrico. Después del calentamiento, el voltaje de salida cambia en respuesta a las variaciones de concentración de CO.

Limitaciones

El sensor no incluye compensación interna de temperatura o humedad. Estos factores ambientales pueden influir en la salida analógica, por lo que se pueden usar sensores adicionales en sistemas que requieran mediciones más estables. Además, dado que la salida no está calibrada, las estimaciones absolutas de concentración de CO requieren calibración externa con niveles de referencia conocidos.

Especificaciones técnicas

La siguiente tabla resume las especificaciones técnicas del Sensor CO Fermion GM-702B:

Parámetro Especificación
Elemento sensor Sensor de gas MEMS GM-702B
Gas objetivo Monóxido de Carbono (CO)
Rango de detección 5 ppm a 5000 ppm (típico)
Señal de salida Voltaje analógico
Voltaje de operación 3.3 V a 5 V DC
Corriente de operación < 20 mA (típico)
Tipo de interfaz Un único pin de salida analógica
Tipo de respuesta Cambio de resistencia convertido a voltaje
Temperatura de operación −10 °C a +50 °C
Humedad de operación 15 % a 90 % HR (sin condensación)
Calibración No se proporciona calibración de fábrica

Pinout

Físicamente, el breakout del sensor expone tres pines para conexión: salida analógica (A), voltaje de alimentación (VCC) y tierra (GND). La imagen a continuación muestra el pinout de la placa:

Pinout of Fermion Smoke Sensor GM-202B Board
Pinout de la placa Fermion CO Sensor GM-702B

Esquemas

La siguiente imagen muestra el esquema de la placa Fermion CO Gas Sensor GM-702B:

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

Se pueden ver el regulador de voltaje y el chip sensor GM-702B con una resistencia de carga de 10K en la salida VOUT.

Preparación

El sensor viene con una película protectora que debes retirar. Si miras la parte superior del sensor, encontrarás una lámina amarilla cubriendo los orificios de entrada de aire. Usa unas pinzas para despegar la película. Las fotos a continuación muestran el sensor con la película protectora, a medio retirar y completamente retirada (de izquierda a derecha):

Despegado de la película protectora

Ten en cuenta que el sensor requiere un período de calentamiento para alcanzar estabilidad operativa. Esto puede tomar varios minutos en el primer uso hasta que las lecturas se estabilicen. Si no has usado el sensor por mucho tiempo, se recomienda dejarlo funcionando entre 48 y 168 horas:

Preheating times for GM-202B Smoke sensor
Tiempos de burn-in para el sensor de humo GM-702B (source)

Especificaciones técnicas

La siguiente tabla resume las especificaciones técnicas del Sensor CO Fermion GM-702B:

Especificación Detalle
Modelo del sensor GM-702B
Gas detectado Monóxido de Carbono (CO)
Rango de detección ~5 ppm a 5000 ppm CO
Tipo de salida Voltaje analógico (proporcional/indicativo)
Voltaje de alimentación 3.3 V – 5 V DC
Corriente de operación < 20 mA
Sensibilidad R₀ (en aire) / Rₛ (en 150 ppm CO) ≥ 3
Temperatura de operación -10 °C a +50 °C
Humedad de operación 15 % – 90 % HR (sin condensación)
Tiempo de calentamiento Recomendado ≥ 5 min (más tiempo tras almacenamiento)
Vida útil ≥ 5 años (en aire)
Tamaño de la placa breakout ~13×13×2.5 mm (incluyendo PCB)
Interfaz 3 pines: A (salida analógica), VCC, GND
Aplicaciones típicas Alarmas de fugas de CO, monitoreo ambiental, sistemas de detección de seguridad

Y aquí tienes un enlace a la hoja de datos del sensor GM-702B con datos técnicos adicionales:

Sensor Fermion GM-702B CO versus Sensor MQ-7 CO

El Sensor de Monóxido de Carbono (CO) MEMS Fermion y el Sensor de Gas CO MQ-7 son ambos comúnmente usados en aplicaciones de aficionados para detectar monóxido de carbono, pero difieren en principio de detección, características de rendimiento y requisitos de integración.

Tecnología de detección

El sensor MEMS Fermion usa un elemento sensor de sistemas microelectromecánicos (MEMS) que reacciona a la presencia de CO con un cambio en sus propiedades eléctricas. Este cambio se convierte en la placa breakout en un voltaje analógico proporcional.

El MQ-7, en cambio, es un sensor semiconductor de óxido metálico (MOX). Se basa en una superficie calentada de óxido de estaño cuya resistencia varía cuando las moléculas de CO interactúan con la capa sensible calentada. Este mecanismo implica que el MQ-7 típicamente consume más energía promedio que el sensor MEMS Fermion.

Consumo y calentamiento

En cuanto a consumo y comportamiento de calentamiento, el sensor MEMS generalmente se estabiliza más rápido y consume menos energía porque no requiere un calentador separado con alta corriente.

El MQ-7, por otro lado, usa un ciclo periódico de calentamiento para lograr sensibilidad y debe ser alimentado con voltajes y tiempos específicos para producir lecturas repetibles, lo que añade complejidad en el firmware y aumenta el consumo energético.

Salida

Ambos sensores proporcionan una salida analógica que debe ser leída por un convertidor analógico-digital en un microcontrolador como Arduino o ESP32. Sin embargo, ninguno ofrece un valor digital calibrado de concentración directamente.

Selectividad y estabilidad

En selectividad y estabilidad, el sensor MEMS generalmente muestra menor sensibilidad cruzada y mejor estabilidad de línea base a largo plazo comparado con sensores MOX como el MQ-7, que pueden responder a múltiples gases reductores y son influenciados por la humedad y temperatura ambiental.

Resumen

En general, el sensor MEMS CO Fermion suele ser más adecuado para proyectos que valoran bajo consumo, respuesta rápida e integración sencilla, mientras que el MQ-7 es atractivo para detección básica de CO a menor costo pero requiere control de energía, calibración y compensación ambiental más cuidadosos en el firmware.

Conexión del sensor Fermion CO al Arduino UNO

Conectar el sensor a un Arduino UNO es sencillo. Conecta VCC a 5V (o 3.3V), GND a tierra y A a la entrada analógica A0 como se muestra a continuación:

Connecting Smoke Sensor to Arduino UNO
Conexión del sensor CO al Arduino UNO

Ejemplos de código

Lectura de concentración de monóxido de carbono

En este primer ejemplo simplemente leemos los valores medidos por el sensor y los imprimimos en el Monitor Serial cada segundo:

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

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

Verás valores entre 0 y 1023, dependiendo de la cantidad de monóxido de carbono en el ambiente.

Si el sensor no se ha calentado completamente, verás una secuencia de valores que disminuye continuamente en el Monitor Serial. Mira abajo:

Después de varios minutos las mediciones se estabilizan. En mi caso alrededor de un valor de 130. Puedes probar el sensor respirando sobre él. Verás un aumento repentino en el valor medido:

Como el sensor no está calibrado, no puedes usarlo para medir concentraciones reales en ppm (partes por millón) o mg/m 3 de concentración. Sin embargo, puedes usarlo para construir una alarma de monóxido de carbono, que haremos en la siguiente sección.

Alarma de monóxido de carbono con LED

El siguiente código implementa una alarma simple de monóxido de carbono. Enciende un LED si el valor medido de CO supera un umbral predefinido de 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);
}

Conecté el LED con una resistencia de 220 Ohm a GPIO 13 como LED de alarma, como se muestra a continuación:

Conexión del LED de alarma al Arduino UNO

Ten en cuenta que para un sistema de alarma confiable puede que quieras añadir también un sensor de temperatura y uno de humedad, ya que las lecturas del sensor se ven afectadas por temperatura y humedad. Alternativamente, podrías usar una ventana deslizante para compensar la deriva del sensor debido a temperatura y humedad.

Alarma de monóxido de carbono con zumbador pasivo

En lugar de un LED también puedes activar un zumbador como señal de alarma. En el siguiente código se activa un zumbador pasivo si la concentración de CO medida supera el umbral:

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);
}

La siguiente imagen muestra cómo añadir el zumbador al circuito. Comienza conectando el terminal negativo del zumbador al GND del Arduino (cable negro). Luego conecta el terminal positivo a través de una resistencia de 100Ω al GPIO 11 (cable rojo):

Connecting alarm buzzer to Arduino UNO
Conexión del zumbador de alarma al Arduino UNO

Asegúrate de que la polaridad del zumbador sea correcta y que sea un zumbador pasivo conectado a un puerto GPIO con capacidad PWM. Para más información, consulta el Active and Passive Piezo Buzzers with Arduino tutorial.

Si tienes un zumbador activo, debes usar el código de alarma con LED anterior, ya que no funcionará correctamente con el comando tone().

Mostrar concentración de monóxido de carbono en OLED

En este último ejemplo mostramos los valores medidos de concentración de humo en un pequeño OLED. El código imprime «CO» y el valor en el centro de la pantalla y actualiza el valor mostrado cada 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);
}

Ten en cuenta que necesitas la Adafruit_SSD1306 librería para controlar el OLED. Puedes instalarla vía Library Manager como de costumbre:

Adafruit_SSD1306 library installed in Library Manager
Librería Adafruit_SSD1306 instalada en Library Manager

Conectar el OLED al Arduino es fácil. Conecta SDA y SCL del OLED a los pines A4 y A5 del Arduino. En cuanto a la alimentación: dado que el OLED puede funcionar a 5V, podemos compartir las líneas de alimentación. Conecta VCC a 5V y GND a GND. La imagen a continuación muestra el cableado completo:

Connecting OLED and Sensor to Arduino UNO
Conexión del OLED y sensor al Arduino UNO

Si necesitas ayuda con el OLED, echa un vistazo al Use SSD1306 I2C OLED Display With Arduino tutorial.

Conclusión

En este tutorial aprendiste a usar el sensor Fermion CO con un Arduino UNO para detectar monóxido de carbono. El sensor también puede usarse fácilmente con otros microcontroladores como un ESP32.

Los sensores de gas MEMS tienen la ventaja de ser pequeños, consumir muy poca energía (< 20mA) y tener un tiempo de calentamiento corto. Sin embargo, aún se ven afectados por la temperatura y humedad ambiente.

Además, el sensor de monóxido de carbono Fermion no está calibrado y por lo tanto no puede usarse directamente para medir concentraciones reales en unidades ppm.

Ten en cuenta que existe toda una serie de diferentes sensores MEMS disponibles. Para una visión general, consulta el Review of the DFRobot Fermion MEMS Gas Sensor Series artículo y para detalles específicos nuestras publicaciones dedicadas:

Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.

¡Feliz bricolaje! 😉