Capacitación Arduino · Sensor de gas

MQ2
¿Hay humo
en la sala?

Módulo MQ-2 (comparador LM393): el LED verde dice «aire limpio» y el rojo «¡humo o gas!». Simulado en Tinkercad y en OpenCircuits.

Entrada analógica Umbral Bloques + C++

El componente

Módulo sensor de gas MQ-2

Flying-FishPWRDOUTVCCGNDDOAO Cápsula MQ-2 LED DOUT LED PWR Trimmer azul (atrás) se calienta y detecta humo, gas licuado, metano y alcohol encendido = gas sobre el umbral el módulo tiene corriente fija desde cuánto gas salta la alarma VCC → 5V GND → GND DO → D7 AO → sin usar
Dentro de la cápsula hay un calefactor y un material cuya resistencia baja con el gas. Por eso se entibia y necesita 1 a 2 minutos encendido antes de medir bien.
AO entrega el nivel de gas como número (más gas = más alto). DO entrega solo SÍ/NO: LOW = hay más gas que el umbral del trimmer.

Cómo funciona

Del humo en el aire a una señal digital

Gas en el aire (AO) umbral (trimmer) 💨 humo se ventila… Salida DO → pin D7 LOW = gas HIGH
  1. Con humo o gas, la cápsula conduce mejor y el voltaje de AO sube.
  2. El LM393 compara ese voltaje con el umbral del trimmer azul.
  3. Si hay más gas que el umbral, DO pasa a LOW y se enciende el LED DOUT. Arduino lo lee en D7.
  4. El programa enciende el LED rojo (alarma) o el verde (aire limpio).

Truco de simulación

Tinkercad trae el sensor… pero no el módulo

En el kit real

Flying-FishPWRDOUTVCCGNDDOAO Arduino D7GND5V

El módulo compara el gas con el umbral del trimmer y entrega el resultado por DO.

En Tinkercad: módulo virtual

Parte del kitLa reemplazamos conArduino
Cápsula + AOSensor de gas (sí existe en Tinkercad) con una resistencia de 4,7 kΩ a GND
más gas = valor más alto
A0
Trimmer azulPotenciómetro
umbral de 0 a 1023
A1
Comparador LM393El código:
if (gas > umbral)
—
LED DOUTLED verde (aire limpio) y LED rojo (gas), con 220 ΩD4 · D6
En Tinkercad el humo es una nube que se arrastra junto al sensor: con aire limpio A0 ≈ 306; con la nube encima ≈ 757. El sensor necesita su calefactor (H1 a 5V y H2 a GND) o no responde.

Paso 1 · Componentes

Búscalos en el panel de componentes de Tinkercad

Arduino Uno R3 ×1

Buscar: Arduino

Placa de pruebas pequeña ×1

Buscar: Placa de pruebas

Sensor de gas ×1

Buscar: gas. Hace de cápsula + AO.

Resistencia 4,7 kΩ ×1

Carga del sensor: de B1 a GND.

Potenciómetro ×1

Hace de trimmer azul: fija el umbral.

Resistencias 220 Ω ×2

Una para cada LED.

LED verde ×1

Aire limpio.

LED rojo ×1

¡Humo o gas!

Para cambiar el valor de una resistencia o el color del LED, haz clic en el componente y edítalo en el cuadro de propiedades. Para girar el sensor de gas usa Girar (o la tecla R).

Paso 2 · Circuito

Así se ve en Tinkercad

A0 0 A1 0 Estado LIMPIO

Paso 2 · Conexiones

Conexión por conexión

Alimentación
Arduino 5VRiel + inferior
Arduino GNDRiel − inferior
Sensor de gas (fuera de la protoboard, girado)
Sensor A1 y H1Riel + (un cable cada uno)
Sensor H2Riel −
Sensor B1Columna 28 (fila e)
—4,7 kΩColumna 24 → 28 (fila c)
Columna 24Riel −
Columna 28Arduino A0
Trimmer (potenciómetro)
—Potenciómetro (fila e)Columnas 18, 19, 20
Columna 18 / 20Riel − / +
Columna 19 (cursor)Arduino A1
LED verde · aire limpio
—LED cátodo / ánodo (fila e)Columna 3 / 4
—220 ΩColumna 4 → 8 (fila c)
Arduino D4Columna 8
Columna 3Riel −
LED rojo · ¡gas!
—LED cátodo / ánodo (fila e)Columna 10 / 11
—220 ΩColumna 11 → 15 (fila c)
Arduino D6Columna 15
Columna 10Riel −
Todo va en los rieles de abajo (+ y −). A2 y B2 del sensor quedan libres. La pata doblada del LED es el ánodo (+).

Paso 3 · Código en bloques

Arrastra estos bloques · todo dentro de «siempre»

Antes de empezar

Variables → Crear variable: gas y umbral.

No pongas nada en «al iniciar»: lo que va ahí se ejecuta una sola vez. Las lecturas de A0 y A1 van dentro de «siempre».
Controlsiempre, si / si no
Entradaleer pin analógico A0 / A1
Matemáticascomparar ( > )
Variablesdefinir variable en, variable
Salidadefinir pin 4 / 6 en ALTA o BAJA

Paso 3 · Código C++

El mismo programa en texto

// C++ code
//
int gas = 0;

int umbral = 0;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(6, OUTPUT);
  pinMode(4, OUTPUT);
}
En Tinkercad: Código → Bloques → Texto. Acepta el aviso, borra lo que haya y pega.
void loop()
{
  gas = analogRead(A0);
  umbral = analogRead(A1);
  if (gas > umbral) {
    digitalWrite(6, HIGH);
    digitalWrite(4, LOW);
  } else {
    digitalWrite(6, LOW);
    digitalWrite(4, HIGH);
  }
  delay(10); // Delay a little bit to improve simulation performance
}

Paso 4 · Simular

¡A probar!

  1. Pulsa Iniciar simulación y deja el potenciómetro en la mitad: con aire limpio se enciende el LED verde.
  2. Haz clic en el sensor de gas: aparece una nube gris. Arrástrala junto al sensor: se enciende el LED rojo.
  3. Aléjala (ventilar): vuelve el verde.
  4. Gira el potenciómetro: cambias cuánto humo hace falta para la alarma.

Si algo no funciona

Ningún LED enciendeRevisa la orientación (pata doblada = ánodo, hacia la resistencia).
Siempre rojoEl umbral está bajo: con aire limpio A0 ≈ 306, sube el potenciómetro sobre 30 %.
Nunca rojoAcerca más la nube o baja el umbral.
A0 no cambiaFalta el calefactor (H1 a +, H2 a −) o la resistencia de 4,7 kΩ a GND.

Paso 5 · Kit real

Del simulador al módulo real

Cambia el sensor y el potenciómetro por el módulo

Módulo MQ-2Arduino
VCC5V
GNDGND
DOD7
AOsin conectar

Quita el sensor de Tinkercad, su resistencia de 4,7 kΩ y el potenciómetro: el módulo ya trae su trimmer y su comparador. Los LEDs y sus 220 Ω se quedan.

Un solo cambio en el código

Borra las dos lecturas analogRead y cambia el if (gas > umbral) por:

if (digitalRead(7) == LOW) {   // DO en LOW = hay gas

Calibración

  1. Deja el módulo encendido 2 minutos para que se caliente.
  2. Con aire limpio, gira el trimmer azul hasta que el LED DOUT justo se apague.
  3. Acerca un algodón con alcohol: se enciende el LED rojo del Arduino.

Nunca uses llamas ni encendedores para probarlo. La cápsula se calienta: no la toques.

Alternativa · OpenCircuits

En OpenCircuits está el módulo MQ-2 del kit

Flying-FishPWRDOUTVCCGNDDOAO
Gas en el aire 10 %
DO: HIGH Iniciar.bat → SensoresSensor de gas MQ2 · Alarma

El bloque nuevo

El bloque verde de la categoría MQ2 lee la salida DO del módulo: es verdadero cuando hay más gas que el umbral del trimmer azul (DO en LOW). Reemplaza al if (gas > umbral) de Tinkercad.

MQ2MQ2 DO pin 7: ¿hay humo? (según el tornillo azul)
Controlsiempre, si / si no
Salidadefinir pin 4 / 6 en ALTA o BAJA

No hacen falta variables: el módulo ya decide. En la categoría MQ2 también está «nivel de humo» (AO) por si quieres el número.

// C++ code
//
void setup()
{
  pinMode(7, INPUT);
  pinMode(6, OUTPUT);
  pinMode(4, OUTPUT);
}
void loop()
{
  if (digitalRead(7) == LOW) {
    digitalWrite(6, HIGH);
    digitalWrite(4, LOW);
  } else {
    digitalWrite(6, LOW);
    digitalWrite(4, HIGH);
  }
  delay(10); // Delay a little bit to improve simulation performance
}
Este texto lo escribe OpenCircuits a partir de los bloques. Es el mismo programa del kit real: lee DO con digitalRead(7).

Para seguir

Retos

1 · Gas en pantalla

Muestra el valor de A0 en el Monitor serie cada medio segundo. Pista: Serial.println(gas).

2 · Alarma sonora

Cuando hay gas, suena el buzzer en D8 además del LED rojo.

3 · Tres niveles

Agrega un LED amarillo en D5: limpio (verde), algo de humo (amarillo) y peligro (rojo), con dos umbrales.

4 · Alarma que parpadea

Haz que el LED rojo parpadee mientras haya gas, y que se quede encendido 5 s después de ventilar.

← → para avanzar · + − acercar el circuito · F pantalla completa