El sensor de formaldehído (HCHO) SFA40 de DFRobot es un módulo compacto para la detección de gases diseñado para medir la concentración de formaldehído (HCHO) en el aire.
El sensor está basado en el chip Sensirion SFA40 y ofrece mediciones precisas en un rango de 0 a 1000 ppb. La tecnología de detección SFA40 está diseñada para baja sensibilidad cruzada. Como resultado, sustancias comunes del hogar como alcohol, perfume o vapores cítricos tienen menos probabilidades de provocar lecturas falsas.
El módulo también integra compensación ambiental mediante un sensor de temperatura y humedad a bordo, lo que ayuda a mantener mediciones estables y precisas bajo condiciones ambientales variables.
La placa del sensor se comunica con microcontroladores a través de una interfaz I²C, permitiendo una integración sencilla con plataformas como Arduino, ESP32 o Raspberry Pi.
En este tutorial aprenderás cómo conectar el sensor SFA40 a un Arduino UNO y cómo leer datos del sensor.
Piezas necesarias
Necesitarás un Gravity: SFA40 Formaldehyde (HCHO) Sensor de DFRobot. En cuanto al microcontrolador, usé un Arduino UNO para este proyecto, pero cualquier otro Arduino o ESP32 también funcionará.

Gravity: SFA40 Formaldehyde (HCHO) 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 sensor SFA40 HCHO
El módulo del sensor está basado en el Sensirion SFA40 elemento sensor de formaldehído. Este elemento utiliza tecnología electroquímica para detectar moléculas de formaldehído en el aire circundante.
En un sensor electroquímico de gases, ocurre una reacción química en la superficie de un electrodo cuando el gas objetivo está presente. Esta reacción produce una pequeña señal eléctrica proporcional a la concentración del gas. La electrónica del sensor convierte esta señal en un valor de medición digital.
El sistema de detección está optimizado específicamente para formaldehído (HCHO). La química interna y las estructuras de filtrado están diseñadas para minimizar reacciones con otros compuestos orgánicos volátiles. Esta alta selectividad permite al sensor distinguir el formaldehído de muchos gases interferentes comunes.
El sensor proporciona una salida completamente calibrada. La calibración se realiza durante la fabricación y se almacena dentro del dispositivo. El usuario no necesita realizar calibraciones adicionales durante el uso normal.
Rango de medición y precisión
El sensor SFA40 mide concentraciones de formaldehído en un rango de 0 a 1000 partes por billón (ppb). Este rango cubre concentraciones típicas en interiores así como niveles elevados que pueden ocurrir en ambientes mal ventilados o en habitaciones con muebles y materiales de construcción nuevos.
El valor de salida se reporta directamente en partes por billón. Esto simplifica el procesamiento de datos en microcontroladores porque no se requiere conversión o escalado adicional.
Características eléctricas
El propio elemento sensor funciona con un voltaje de alimentación entre 1.62 V y 3.6 V. El módulo Gravity incluye circuitería adicional que permite operar con alimentación de 3.3 V o 5 V cuando se conecta a plataformas de microcontroladores.
El consumo de energía está optimizado para aplicaciones de monitoreo continuo. El consumo promedio es aproximadamente 80 µA en modo de medición con una frecuencia de muestreo de alrededor de 2 Hz. La corriente pico puede alcanzar hasta 2 mA durante los ciclos de medición.
Diseño físico e integración del módulo
El elemento sensor SFA40 tiene un tamaño muy compacto de aproximadamente 13 mm × 10 mm × 2.4 mm. El módulo Gravity SEN0661 integra este elemento sensor en una placa breakout más grande. El tamaño de la placa es aproximadamente 32 mm × 22 mm. Incluye la regulación de voltaje y la circuitería de interfaz necesarias para plataformas de microcontroladores.
El módulo también proporciona un conector estándar Gravity de 4 pines, que simplifica el cableado y permite una conexión plug-and-play a placas de desarrollo. A continuación puedes ver el pinout del conector:

El sensor contiene una membrana protectora de ventilación en la cámara de detección. Esta membrana permite la difusión del gas mientras protege los elementos internos de polvo y contaminantes. ¡No retires esta membrana ni la expongas a disolventes orgánicos!

Condiciones ambientales de operación
El módulo está diseñado para operar en un amplio rango de condiciones ambientales. El rango de temperatura de operación soportado va de −40 °C a +125 °C. El sensor puede funcionar en niveles de humedad relativa entre 0 % y 100 % siempre que no haya condensación. El elemento sensor incluye algoritmos internos para compensación de temperatura.
Especificaciones técnicas
La siguiente tabla resume las especificaciones técnicas del sensor de formaldehído (HCHO) SFA40:
| Parámetro | Especificación |
|---|---|
| Tipo de sensor | Sensor electroquímico de formaldehído (HCHO) |
| Elemento sensor | Sensirion SFA40 |
| Rango de medición | 0 a 1000 ppb (partes por billón) |
| Límite de detección | < 20 ppb (típico) |
| Precisión | ±20 ppb o ±20% del valor medido (típico) |
| Sensibilidad cruzada al etanol | < 0.3% |
| Interfaz | Interfaz digital I²C |
| Dirección I²C | 0x5D |
| Voltaje de operación (sensor) | 1.62 V – 3.6 V |
| Voltaje de operación (módulo) | 3.3 V – 5 V |
| Consumo promedio de corriente | ~80 µA |
| Corriente pico | Hasta ~2 mA durante la medición |
| Frecuencia de actualización de medición | Hasta ~2 mediciones por segundo |
| Temperatura de operación | −40 °C a +125 °C |
| Humedad de operación | 0% – 100% HR (sin condensación) |
| Dimensiones del módulo | ~32 mm × 22 mm |
| Tamaño del paquete del sensor | ~13 mm × 10 mm × 2.4 mm |
| Unidad de salida | Concentración de formaldehído en ppb |
| Calibración | Calibrado de fábrica |
Instalación de la librería DFRobot_SFA40
Vamos a usar la librería DFRobot_SFA40 para leer datos del sensor SFA40. Para instalarla, ve a la github repo de la librería, haz clic en el botón verde «<> Code» y luego en «Download ZIP» como se muestra a continuación:

Esto descargará la librería DFRobot_SFA40 como un archivo ZIP (DFRobot_SFA40-master.zip) en tu ordenador.
Luego abre un nuevo Sketch, ve a Sketch -> Include Library -> Add .ZIP Library … para instalar la librería ZIP descargada (DFRobot_SFA40-master.zip):

Conexión del sensor SFA40 al Arduino UNO
El sensor SFA40 usa la interfaz I2C para la comunicación y es fácil de conectar. Comienza conectando VCC a 5V y GND a tierra. Luego conecta la interfaz I2C: SDA a SDA y SCL a SCL como se muestra a continuación:

Código para leer datos del sensor SFA40
El siguiente código muestra cómo conectar el sensor SFA40 con una placa Arduino. El sensor mide temperatura, humedad y concentración de formaldehído en partes por billón (ppb). Las lecturas se imprimen en el Monitor Serial cada segundo.
// https://github.com/DFRobot/DFRobot_SFA40 V 1.0.3
// www.makerguides.com
#include "DFRobot_SFA40.h"
DFRobot_SFA40 SFA40;
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Importaciones
Al inicio, el código incluye la librería para el sensor SFA40. Esta librería contiene todas las funciones necesarias para comunicarse con el sensor y obtener los datos de medición.
#include "DFRobot_SFA40.h"
Inicialización del objeto
A continuación, se crea un objeto llamado SFA40 de la clase DFRobot_SFA40. Este objeto se usará para interactuar con el sensor durante todo el programa.
DFRobot_SFA40 SFA40;
Función de visualización
La función display() es una función auxiliar diseñada para imprimir las lecturas del sensor en el Monitor Serial de forma formateada. Recibe tres parámetros: una etiqueta de texto, un valor en punto flotante y una cadena de unidad. El valor se imprime con un decimal.
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
Función setup
La función setup() inicializa la comunicación serial a 115200 baudios para permitir la salida de datos al Monitor Serial. Luego intenta inicializar el sensor llamando a SFA40.begin(). Si el sensor no se encuentra, imprime un mensaje de error cada segundo hasta que se detecta. Una vez inicializado correctamente, inicia el modo de medición continua con SFA40.startMeasurement().
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
Función loop
Dentro de la función loop(), el código lee los datos más recientes del sensor llamando a SFA40.readMeasurementData(). Esta función devuelve un código de estado, donde 0 indica una lectura exitosa. Si la lectura es exitosa, el programa imprime una línea separadora y luego usa la función display() para mostrar la temperatura en Celsius y Fahrenheit, la humedad relativa y la concentración de formaldehído (HCHO) en partes por billón. Finalmente, el programa espera 1 segundo antes de repetir el proceso.
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Ejemplo de salida
El siguiente ejemplo muestra la salida en el Monitor Serial:
---------------------------- Temperature: 22.1 C Temperature: 71.8 F Humidity : 43.2 %RH HOCO : 39.0 ppb
Conclusión
En este tutorial aprendiste cómo usar el sensor de formaldehído (HCHO) SFA40 con un Arduino UNO. El sensor también puede usarse fácilmente con otros microcontroladores como un ESP32.
Si buscas otros sensores de gases, echa un vistazo a las siguientes publicaciones:
- 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
- How to use the MQ-2 Gas Sensor with Arduino and an OLED
- How to use the MQ-4 Methane Gas Sensor With Arduino
- How to use the MQ-7 Gas Sensor with an LCD display and Arduino
- Measure Air Quality with BME680
Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.
¡Feliz bricolaje! 😉

