El Fermion MEMS Multi-Gas Sensor es un módulo compacto de sensor de concentración de gases basado en el sensor de gas MiCS-5524, diseñado para integrarse con microcontroladores como Arduino y ESP32.
Emplea tecnología de detección MEMS (Sistemas Microelectromecánicos) para detectar múltiples gases comunes, incluyendo monóxido de carbono (CO), metano (CH₄), etanol (C₂H₅OH), propano (C₃H₈), butano (C₄H₁₀), hidrógeno (H₂), sulfuro de hidrógeno (H₂S) y amoníaco (NH₃).
En este tutorial aprenderás cómo conectar el Fermion MEMS Multi-Gas Sensor a un Arduino UNO para medir estos gases.
Partes necesarias
Necesitarás un Fermion Multi-Gas Sensor de DFRobot. En cuanto al microcontrolador, usé un Arduino Uno para este proyecto, pero cualquier otro Arduino o ESP32 también funcionará.

Fermion MEMS Multi-Gas Sensor

Arduino Uno

Cable USB para Arduino UNO

Juego de cables Dupont

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 Fermion MEMS Multi-Gas Sensor MiCS-5524
La placa de desarrollo del Fermion MEMS Multi-Gas Sensor para el MiCS-5524 mide aproximadamente 12 mm por 16 mm e incluye un conector de cuatro pads para líneas de alimentación y señal.

Los pads para la entrada de alimentación de 5 V, referencia de tierra (GND) y la salida analógica de voltaje (A0) correspondiente a la concentración de gas. El pin de habilitación (EN) puede usarse para encender o apagar la alimentación interna del sensor. Esto permite ponerlo en un estado de bajo consumo cuando no se requiere detección continua.
La imagen a continuación muestra el esquema de la placa de desarrollo del Fermion MEMS Multi-Gas Sensor:

Características eléctricas y de alimentación
El SEN0440 está diseñado para funcionar con una alimentación regulada de 5 V DC con una disipación nominal de potencia alrededor de 0.45 W.
Aunque la interfaz lógica del sensor entrega un voltaje analógico en el rango de 0–5 V, es compatible con microcontroladores y placas de desarrollo cuyos pines de entrada toleran niveles de 3.3 V a 5.5 V, como muchas variantes de Arduino y ESP32.
La salida principal es un voltaje analógico proporcional a la concentración del gas objetivo, y ese voltaje debe ser leído con un convertidor analógico-digital en el controlador anfitrión para su procesamiento o conversión a unidades de partes por millón.
Mecanismo de detección de gases y rango objetivo
En su núcleo, el SEN0440 utiliza el MiCS-5524 sensor resistivo MEMS de gas. Este elemento sensor contiene una capa de semiconductor de óxido metálico cuya resistencia varía en presencia de ciertos gases reductores.
El módulo está calibrado y ajustado para que los cambios en esta resistencia se traduzcan en una salida de voltaje analógico, que el código de ejemplo puede convertir en concentraciones aproximadas de gases comunes.
El sensor soporta la detección de monóxido de carbono (CO) desde aproximadamente 1 ppm hasta 1000 ppm, hidrógeno (H₂) en un rango similar, etanol (C₂H₅OH) desde unos 10 ppm hasta 500 ppm, y amoníaco (NH₃) desde aproximadamente 1 ppm hasta 500 ppm. Metano (CH₄) y otros hidrocarburos ligeros como propano y butano en concentraciones desde aproximadamente 3000 ppm hasta 15000 ppm. El siguiente gráfico muestra las características de sensibilidad a gases del sensor MiCS‑5524 para los diferentes gases:

Rendimiento del sensor y límites ambientales
El elemento sensor en el SEN0440 requiere un período de calentamiento antes de que se puedan obtener mediciones significativas.
El módulo está especificado para operar en un amplio rango de temperatura ambiente desde aproximadamente −30 °C hasta 85 °C, y puede tolerar niveles de humedad relativa de aproximadamente 5 % a 95 % sin condensación.
Especificación técnica
La siguiente tabla resume la especificación técnica del Fermion MEMS Multi-Gas Sensor MiCS-5524:
| Especificación | Detalles |
|---|---|
| Modelo del sensor | Sensor de gas MEMS MiCS-5524 |
| Principio de detección | Detección resistiva de gas con semiconductor de óxido metálico |
| Gases detectables | CO, H₂, C₂H₅OH, NH₃, CH₄, C₃H₈, C₄H₁₀ (multi-gas, selectividad limitada) |
| Rango de concentración de gas | CO: ~1 ppm–1000 ppm; H₂: ~1 ppm–1000 ppm; Etanol: ~10 ppm–500 ppm; NH₃: ~1 ppm–500 ppm; Hidrocarburos detectables a ppm más altos |
| Tipo de salida | Voltaje analógico proporcional a la concentración |
| Rango de voltaje de salida | 0 V–5 V (proporcional al nivel de gas) |
| Voltaje de alimentación | 5 V DC nominal |
| Tiempo de calentamiento | Decenas de segundos (típico para lecturas estables) |
| Temperatura de operación | −30 °C a +85 °C |
| Humedad de operación | 5 % a 95 % HR (sin condensación) |
| Consumo típico de energía | ~0.45 W (a 5 V) |
| Compatibilidad de interfaz | Compatible con entrada analógica de microcontroladores de 3.3 V a 5.5 V |
| Vida útil | >2 años |
Y aquí tienes un enlace a la hoja de datos del sensor MiCS-5524 con datos técnicos adicionales:
Conectando el Fermion MEMS Multi-Gas Sensor al Arduino UNO
Conectar el sensor a un Arduino UNO es sencillo. Conecta VCC a 5V, GND a tierra, A0 a la entrada analógica A0, y EN a GPIO 10 como se muestra a continuación:

Instalando la biblioteca DFRobot_MICS
Vamos a usar la biblioteca DFRobot_MICS para leer datos del sensor MiCS-5524. Para instalarla, descarga la DFRobot_MICS biblioteca como archivo ZIP (DFRobot_MICS-master.zip) en tu ordenador.
Luego abre un nuevo Sketch, ve a Sketch -> Include Library -> Add .ZIP Library … para instalar la biblioteca ZIP descargada (DFRobot_MICS-master.zip):

Código para leer concentraciones de gas
El siguiente código demuestra cómo usar el Fermion MEMS Multi-Gas Sensor MiCS-5524 con una placa Arduino.
El sensor detecta gases como monóxido de carbono, metano, etanol, hidrógeno, amoníaco y dióxido de nitrógeno, proporcionando sus concentraciones en partes por millón (PPM).
El programa inicializa el sensor, realiza una calibración de calentamiento y luego lee y muestra continuamente las concentraciones de gas a través del monitor serial.
// https://github.com/dfrobot/DFRobot_MICS V 1.0.0
// www.makerguides.com
#include "DFRobot_MICS.h"
#define CALIBRATION_TIME 3 // mins
#define ADC_PIN A0
#define POWER_PIN 10
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
mics.sleepMode();
}
Vamos a desglosar el código en sus componentes principales para entender cómo funciona.
Importaciones
El código comienza incluyendo la DFRobot_MICS.h biblioteca, que proporciona las funciones y definiciones necesarias para la interfaz con el sensor MiCS-5524.
#include "DFRobot_MICS.h"
Constantes
A continuación, se definen varias constantes. CALIBRATION_TIME especifica la duración del calentamiento del sensor en minutos, esencial para lecturas precisas. ADC_PIN y POWER_PIN definen el pin analógico de entrada del Arduino conectado a la salida del sensor y el pin digital que controla la alimentación del sensor, respectivamente.
#define CALIBRATION_TIME 3 // mins #define ADC_PIN A0 #define POWER_PIN 10
Objeto sensor
Se crea una instancia de la DFRobot_MICS_ADC clase llamada mics, pasando el pin ADC y el pin de alimentación a su constructor. Este objeto gestiona la comunicación con el sensor y controla su funcionamiento.
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
Función de visualización
La función display() es una ayuda que toma un texto descriptivo y un valor flotante de concentración de gas. Imprime el texto seguido del valor formateado con un decimal y añade la unidad «PPM» en el monitor serial. Esta función simplifica el formato de salida en el bucle principal.
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
Función setup
En la función setup(), se inicializa la comunicación serial a 115200 baudios para permitir la salida de datos al monitor serial. Luego, el programa intenta inicializar el sensor llamando a mics.begin() en un bucle hasta que tiene éxito, imprimiendo un mensaje de error cada segundo si no se encuentra el sensor.
Después de la inicialización exitosa, se verifica el estado de alimentación del sensor. Si el sensor está en modo de suspensión, se despierta usando wakeUpMode() y se imprime un mensaje de confirmación.
El sensor requiere un período de calentamiento para calibrarse y asegurar mediciones precisas de gas. El código imprime un mensaje y espera hasta que transcurra el tiempo de calentamiento especificado por CALIBRATION_TIME minutos, imprimiendo puntos cada segundo para indicar el progreso. Una vez listo, imprime una confirmación.
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
Función loop
La función loop() se ejecuta repetidamente después del setup. Comienza imprimiendo un encabezado en el monitor serial para indicar el inicio de las lecturas de concentración de gases. Luego, llama a la función display() para cada tipo de gas soportado por el sensor: monóxido de carbono (CO), metano (CH4), etanol (C2H5OH), hidrógeno (H2), amoníaco (NH3) y dióxido de nitrógeno (NO2). Para cada gas, obtiene la concentración en PPM usando mics.getGasData() con el identificador correspondiente del gas.
Después de imprimir todas las concentraciones de gases, el programa espera un segundo. Puedes poner el sensor en modo de suspensión usando mics.sleepMode() para ahorrar energía hasta el siguiente ciclo de lectura.
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
// mics.sleepMode();
}
Ejemplo de salida
El siguiente ejemplo muestra la salida en el Monitor Serial. Después del calentamiento, el código imprime las concentraciones de gas para una primera muestra, que son todas 0.
Durante el segundo período de muestreo, rocié un limpiacristales cerca del sensor y puedes ver los valores aumentados para Metano y Amoníaco en los datos del sensor.
Sensor is awake! Warming up, do not touch sensor.....................ready! Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 0.0 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 0.0 PPM NO2 (Nitrogen Dioxide): 0.0 PPM Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 5402.4 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 87.7 PPM NO2 (Nitrogen Dioxide): 0.0 PPM
Conclusión
En este tutorial aprendiste cómo usar el Fermion MEMS Multi-Gas Sensor con un Arduino UNO para detectar varios gases. El sensor también puede usarse fácilmente con otros microcontroladores como un ESP32.
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:
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Smoke Sensor GM-202B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Carbon Monoxide CO Gas Sensor GM-702B with Arduino
Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.
¡Feliz bricolaje! 😉

