Componentes · 6 min de leitura

Sensor de gás MQ-2: monte um alarme de gás e fumaça com Arduino

Como funciona o sensor de gás MQ-2? Detecção de GLP, metano e fumaça, pinos do módulo, pré-aquecimento, leituras analógica e digital, calibração do R0, a família de sensores MQ e alarmes de gás com ESP32 e Pico.

O MQ-2 é um sensor de gás barato e muito comum que detecta gases combustíveis e fumaça no ar. Ele reage a GLP (gás de botijão), propano, butano, metano (gás natural), hidrogênio, vapor de álcool e fumaça. Em projetos com Arduino, ele é usado para montar alarmes de gás na cozinha, detectores de fumaça e indicadores de qualidade do ar. Neste artigo você vai ver passo a passo o que há dentro do sensor, como ligá-lo corretamente, por que o pré-aquecimento é indispensável e como interpretar os valores lidos.

Módulo sensor de gás MQ-2
Módulo sensor de gás MQ-2: o elemento sensor aquecido fica sob a tela metálica; o módulo tem 4 pinos: VCC, GND, DO e AO.

Como funciona o MQ-2?

Sob a tela metálica há um pequeno elemento cerâmico revestido de dióxido de estanho (SnO₂) e um fio aquecedor que o esquenta a algumas centenas de graus. No ar limpo, a resistência do elemento é alta. Quando um gás combustível ou fumaça chega até ele, uma reação química na superfície baixa a resistência; quanto mais denso o gás, menor a resistência. O módulo transforma essa variação de resistência em tensão com um divisor de tensão: quanto mais gás, maior a tensão no pino AO.

CaracterísticaValor
Tensão de alimentação5 V
Corrente do aquecedor~150 mA (até 800 mW)
Gases detectadosGLP, propano, butano, metano, hidrogênio, álcool, fumaça
Faixa de detecção300–10.000 ppm
AquecimentoAlguns minutos a cada vez que é ligado, 24–48 horas no primeiro uso
SaídasAO (analógica), DO (digital, comparador LM393)

Pinos do módulo e ligação

Um sensor MQ-2 avulso tem 6 pernas, mas os projetos costumam usar um módulo pronto. O módulo traz o resistor de carga, um chip comparador LM393, um pequeno potenciômetro para ajustar o limite, um LED de energia e um LED de alarme. O pino AO dá uma tensão proporcional à concentração de gás, enquanto o pino DO muda de estado quando o nível de gás passa do limite ajustado no potenciômetro.

Pino do móduloFunçãoArduino Uno
VCCAlimentação (incluindo o aquecedor)5V
GNDTerraGND
AOSaída analógica, sobe com o gásA0
DOSaída digital, vai a LOW quando o limite é ultrapassadoD2
Frente e verso de um módulo sensor MQ
Verso de um módulo da série MQ (à esquerda): comparador LM393, potenciômetro azul de ajuste do limite, LEDs POWER e DOUT. O MQ-135 à direita usa o mesmo projeto de módulo.
Para ajustar o limite do DO, aqueça o sensor no ar limpo por alguns minutos, gire o potenciômetro até o ponto em que o LED DOUT acabou de apagar e gire mais um pouquinho. Assim pequenas oscilações não disparam o alarme, enquanto um aumento real de gás acende o LED na hora.

Por que o pré-aquecimento é importante?

O elemento sensor só responde corretamente quando chega à temperatura de trabalho. Nos primeiros minutos depois de ligar, o valor do AO começa alto e depois cai devagar até estabilizar; as leituras feitas nesse período enganam. Por isso, é uma boa prática pular a verificação do alarme no código nos primeiros 1–3 minutos. Se você vai usar um sensor novo pela primeira vez, recomenda-se deixá-lo funcionando sem parar por 24–48 horas (burn-in) para obter valores estáveis. Enquanto o aquecedor funciona, a tela metálica esquenta bastante; isso é normal, mas não coloque materiais inflamáveis perto do sensor.

Um alarme de gás e fumaça com Arduino

O código abaixo lê o valor analógico e o mostra no Monitor Serial, e também verifica o pino DO. Se o valor analógico passar do limite ou o pino DO for para LOW, um buzzer toca:

C++ (Arduino IDE)
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400;          // analog eşik (0–1023) / analog threshold
5
6void setup() {
7  Serial.begin(9600);
8  pinMode(DO_PIN, INPUT);
9  pinMode(BUZZER, OUTPUT);
10  delay(60000);                 // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14  int value = analogRead(AO_PIN);
15  bool gas = digitalRead(DO_PIN) == LOW;   // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17  Serial.println(value);
18
19  if (value > LIMIT || gas) {
20    tone(BUZZER, 2000, 300);    // alarm sesi / alarm tone
21  }
22  delay(500);
23}

O valor 400 aqui não é uma regra fixa: a leitura no ar limpo pode variar entre 100 e 300, dependendo do sensor, da temperatura e da umidade do ambiente. Primeiro deixe o sensor funcionando por alguns minutos e confira no Monitor Serial o valor no ar limpo; depois ajuste o limite bem acima dele. Para testar, basta segurar por um instante o gás de um isqueiro perto do sensor, sem acender; o valor sobe em segundos.

Do valor analógico ao ppm: calibração do R0

No módulo, o sensor forma um divisor de tensão com um resistor de carga (RL, 1 kΩ na maioria dos módulos). Com a tensão do AO, você calcula a resistência do sensor (Rs). Os gráficos do datasheet dão a concentração de gás não em função do Rs direto, mas da razão Rs/R0; R0 é a resistência do sensor em 1000 ppm de hidrogênio, e no ar limpo a razão Rs/R0 fica em cerca de 9,8. Então você encontra o R0 medindo o sensor no ar limpo e dividindo por 9,8:

C++ (Arduino IDE)
1const float RL = 1.0;           // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8;    // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6  float v = analogRead(A0) * 5.0 / 1023.0;
7  if (v < 0.01) v = 0.01;       // sıfıra bölmeyi önle / avoid dividing by zero
8  return RL * (5.0 - v) / v;    // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12  Serial.begin(9600);
13  delay(60000);                 // ön ısıtma / warm-up
14  float sum = 0;
15  for (int i = 0; i < 50; i++) {
16    sum += readRs();
17    delay(100);
18  }
19  R0 = (sum / 50) / CLEAN_AIR;  // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23  float ratio = readRs() / R0;  // gaz arttıkça küçülür / falls as gas rises
24  Serial.println(ratio);
25  delay(1000);
26}

Se a razão estiver perto de 9,8, o ar está limpo; cair abaixo de 1 significa uma concentração alta de gás. Para converter essa razão em ppm, usam-se as curvas logarítmicas do datasheet; bibliotecas como a MQUnifiedsensor já trazem essas curvas prontas. Mesmo assim, trate o resultado como aproximado: temperatura, umidade e a idade do sensor afetam a leitura e, como o MQ-2 reage a muitos gases ao mesmo tempo, ele não consegue dizer com certeza qual gás está medindo. Adicionar um DHT11 para acompanhar temperatura e umidade é uma boa ideia.

O MQ-2 é um sensor para aprendizado e hobby, não um detector de gás certificado. Nunca o use como única proteção contra vazamentos de gás ou intoxicação por monóxido de carbono em casa; para isso, use detectores comerciais que atendam às normas (por exemplo, EN 50194 ou EN 50291). Pense no seu alarme como um sistema extra ao lado deles.

A família de sensores MQ: qual escolher?

SensorMais sensível aUso típico
MQ-2GLP, propano, metano, hidrogênio, fumaçaAlarme geral de gás e fumaça
MQ-3ÁlcoolBafômetro
MQ-4Metano (gás natural)Alarme de vazamento de gás natural
MQ-5GLP, gás naturalAlarme de gás na cozinha
MQ-7Monóxido de carbono (CO)Monitoramento de CO (exige ciclagem do aquecedor)
MQ-9CO e gases combustíveisPerto de fogões e caldeiras
MQ-135Amônia, benzeno, fumaça, NOxQualidade do ar em ambientes internos

O MQ-2 com ESP32 e Raspberry Pi Pico

O aquecedor do MQ-2 precisa de 5 V, então ligue o pino VCC do módulo no pino VIN (5V) do ESP32. Mas, com o módulo alimentado com 5 V, a saída AO pode chegar a 5 V, enquanto as entradas analógicas do ESP32 e do Pico aceitam no máximo 3,3 V. Coloque entre o AO e o pino analógico um divisor de tensão com resistores de 10 kΩ e 20 kΩ para baixar o sinal a um nível seguro. Com o ESP32 fica fácil mandar uma notificação para o celular quando houver gás ou ligar um ventilador de exaustão por um relé. No Raspberry Pi Pico, o mesmo alarme fica assim em MicroPython:

MicroPython
1from machine import ADC, Pin
2import time
3
4gas = ADC(26)                  # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000                  # 0–65535 arası eşik / threshold
7
8time.sleep(60)                 # ön ısıtma / warm-up
9while True:
10    value = gas.read_u16()
11    print(value)
12    buzzer.value(1 if value > LIMIT else 0)
13    time.sleep(0.5)

Ideias de projetos com MQ-2

  • Alarme de gás na cozinha: um alarme que toca um buzzer e acende um LED vermelho quando há vazamento de gás de botijão ou gás natural.
  • Detector de fumaça: um sistema que avisa quando detecta fumaça de solda ou cheiro de queimado na oficina.
  • Ventilação automática: um circuito que liga um exaustor por um relé quando o nível de gás sobe.
  • Alarme de chama e gás: junte o MQ-2 com um sensor de chama para vigiar os dois perigos ao mesmo tempo.
  • Detector com notificações no ESP32: mande uma mensagem no Telegram para o seu celular quando houver gás.
  • Display de qualidade do ar: mostre a razão medida como gráfico em um display OLED.

Erros comuns e como corrigir

  • Dispara o alarme logo depois de ligar: o sensor ainda não aqueceu; pule a verificação do alarme nos primeiros 1–3 minutos.
  • O valor nunca muda: o pino DO está ligado na entrada analógica em vez do AO, ou o módulo não está recebendo 5 V.
  • O LED DOUT fica sempre aceso: o limite do potenciômetro está baixo demais; gire-o no ar limpo até o LED apagar.
  • Os valores mudam ao longo do dia: a temperatura e a umidade estão variando; reajuste o limite no ar limpo de vez em quando.
  • No ESP32 o valor analógico fica sempre no máximo: o sinal AO de 5 V está ligado direto; use um divisor de tensão.
  • A bateria acaba rápido: o aquecedor puxa cerca de 150 mA sem parar; o MQ-2 não serve para funcionar muito tempo com bateria.

Juntar o MQ-2 com um buzzer e um LED é o jeito mais fácil de passar dos sensores para um sistema de aviso de verdade. No app BlueGrays você encontra o básico dos sensores de gás, um alarme com sensor de chama e de gás e um alarme detector de gás e fumaça com MQ-2 no ESP32, com esquemas do circuito e código.

Perguntas frequentes

Quais gases o MQ-2 detecta?

O MQ-2 é sensível a GLP, propano, butano, metano (gás natural), hidrogênio, vapor de álcool e fumaça. Ele reage só fracamente ao monóxido de carbono. Como reage a muitos gases ao mesmo tempo, sozinho ele não consegue dizer qual gás está presente.

Quanto tempo o MQ-2 precisa para aquecer?

Espere alguns minutos (1–3 minutos na prática) a cada vez que ligar para as leituras estabilizarem. Se você vai usar um sensor novo pela primeira vez, recomenda-se deixá-lo funcionando sem parar por 24–48 horas para obter os resultados mais estáveis.

Para vazamentos de gás natural, devo usar o MQ-2 ou o MQ-4?

O MQ-2 também detecta metano, mas reage a muitos gases. O MQ-4 é mais seletivo para gás natural (metano), então é a escolha mais adequada. De qualquer forma, não use um sensor de hobby no lugar de um detector de gás certificado.

Dá para medir monóxido de carbono com o MQ-2?

O MQ-2 reage só fracamente ao monóxido de carbono. Para CO usa-se o MQ-7, com o aquecedor alternando entre uma tensão alta e uma baixa; mas, por segurança, use sempre um detector de CO que atenda à norma EN 50291.

É normal o sensor esquentar?

Sim. O aquecedor interno mantém o elemento sensor em temperatura alta o tempo todo, então a tela metálica fica bem quente ao toque. Mantenha o sensor longe de materiais inflamáveis e não toque nele enquanto estiver funcionando.

Posso alimentar o MQ-2 com bateria?

Pode, mas não por muito tempo: o aquecedor puxa cerca de 150 mA sem parar. Um power bank de 2000 mAh dura cerca de 13 horas. Você pode calcular a autonomia do seu projeto com a ferramenta de duração da bateria; onde for preciso monitoramento contínuo, use uma fonte ligada na tomada.

Ver todos os projetos