Introdução ao Detector de Gases Inflamáveis
Destacamos um sensor detector de gases inflamáveis, o Sensor MQ2, um sensor eletrônico utilizado para detectar e medir a concentração de gases no ar. Ele é amplamente utilizado em projetos de eletrônica e automação para monitoração não crítica da presença e a concentração de gases inflamáveis e fumaça com relativa precisão. Conhecido como ‘quimiorresistor’, o sensor contém um material sensível cuja resistência muda quando entra em contato com esses gases. Este sensor é especialmente útil em sistemas de segurança e monitoramento ambiental. Entre os gases que ele pode detectar estão:
- Gás liquefeito de petróleo (GLP)
- Fumaça
- Álcool
- Propano
- Hidrogênio
- Metano
- Monóxido de Carbono (CO)

O sensor MQ2 é amplamente utilizado em projetos de hobby e prototipagem para detectar a presença de fumaça e gases inflamáveis, como GLP, propano, hidrogênio e outros. Com suporte para modos digital e analógico, ele oferece versatilidade para aplicações educacionais e projetos simples de monitoramento ambiental. Apesar de ser uma solução econômica, o MQ2 é mais indicado para aplicações não críticas e educativas, em vez de sistemas profissionais de segurança ou monitoramento avançado.
Vamos apresentar um guia detalhado para aproveitar ao máximo os dados do sensor MQ2 e aplicá-los em um algoritmo para Arduino que fará a correção das leituras do MQ2 em função da temperatura e umidade relativa do ar ampliando as possibilidades de uso e a precisão dos resultados alcançados.
1. Análise dos Gráficos de Resposta:

O datasheet completo do sensor MQ2 pode ser acessado no site oficial da: Zhengzhou Winsen Electronics Technology Co., LTD.
Página Oficial:
Link para acessar a página oficial da Winsen
Datasheet:
Link para acessar o Datasheet do MQ2
Com base no datasheet do sensor MQ2 (página 4), existem dois gráficos fundamentais que descrevem as características do sensor:
Sensitivity Characteristics: Este gráfico é fundamental para entender a relação entre a concentração de gás e a resistência do sensor. A curva de sensibilidade permite mapear a leitura analógica do sensor MQ2 para a concentração de gás que se queira precisão na medição. Isso é essencial para interpretar corretamente os dados fornecidos pelo sensor.
Influence of Temperature/Humidity: A temperatura e a umidade podem afetar significativamente as leituras do sensor de gás. Este gráfico mostra como esses fatores influenciam a resistência do sensor. Utilizando essas informações, é possível corrigir as leituras do sensor de gás com base nos dados fornecidos por um sensor complementar de temperatura e umidade, como o DHT22.
Selecione as curvas que deseja encontrar: Para determinar a concentração de um gás específico, é essencial selecionar corretamente nas duas tabelas a curva de resposta de sensibilidade do sensor MQ2. e, levar em consideração a temperatura e a umidade relativa típicas durante o experimento, pois esses fatores influenciam a precisão da detecção do gás pelo sensor. Com essas informações, é possível aplicar ajustes que melhoram a precisão geral do sistema de detecção.
Ao utilizar esses gráficos como referência, o sistema pode oferecer resultados mais confiáveis, mesmo considerando as limitações naturais do sensor MQ2.
2. Aquisição de Dados no Detector de Gases Inflamáveis:
Sensor de Gás (MQ2): Para começar, conecte o pino analógico do sensor MQ2 ao pino analógico A0 do Arduino. Em seguida, leia o valor analógico e converta-o para resistência. Este passo é crucial para obter dados precisos do sensor.
Sensor de Temperatura e Umidade (DHT22): Conecte o sensor DHT22 ao pino digital 4 do Arduino e faça o download da biblioteca DHT.h, desenvolvida pela Adafruit e que está disponível para download no repositório do GitHub, para ler a temperatura e a umidade. Em seguida esses dados serão usados para ajustar as leituras do sensor de gás, garantindo maior precisão.
3. Correção das Leituras no Detector de Gases Inflamáveis
Utilize os dados do gráfico de influência de temperatura/umidade para ajustar as leituras do sensor de gás. Por exemplo, se a temperatura estiver alta, aplique um fator de correção para a leitura do sensor de gás. Isso ajuda a compensar as variações causadas por mudanças ambientais, proporcionando leituras mais confiáveis.
4. Cálculo da Concentração de Gases no Detector
Para calcular a concentração de gás detectada pelo sensor MQ-2, é necessário usar a curva de sensibilidade fornecida no datasheet. A resistência do sensor (RS) é convertida na concentração de gás por meio de interpolação linear baseada nos pontos da curva. Embora este método forneça uma estimativa, ele não é extremamente preciso devido à dependência de fatores como temperatura, umidade e calibração do sensor.
É importante notar que o sensor MQ-2 não distingue entre os gases detectados. Ele é capaz de reagir a substâncias como GLP (Gás Liquefeito de Petróleo), propano, metano, hidrogênio, álcool, fumaça e monóxido de carbono, mas não identifica qual gás específico está presente no ambiente.
Para diferenciar entre gases, seria necessário utilizar múltiplos sensores projetados para gases específicos ou empregar técnicas avançadas de análise de dados, como algoritmos de aprendizado de máquina ou análise espectral — que vão além do escopo deste guia.
Material Necessário para o Detector de Gases Inflamáveis:
Nosso site cresce com seu apoio! Ao visitar as ofertas abaixo e realizar suas compras pelos links de afiliados, você nos ajuda a manter o conteúdo atualizado e gratuito. Aproveite as melhores ofertas da Amazon!
Material Necessário | Compre aqui: |
---|---|
1x Arduino Uno (Pode ser versão compatível) | Amazon |
1x Sensor MQ2 | Amazon |
1x Sensor DHT22 | Amazon |
1x Protoboard | Amazon |
1x Kit cabinhos de Jumper para Arduino | Amazon |
Esquema de Ligação dos Sensores com o Arduino

Código para Aquisição e Correção no Detector de Gases Inflamáveis:
#include <DHT.h>
#define DHTPIN 4 // Pino digital onde o DHT22 está conectado
#define DHTTYPE DHT22
#define MQ_PIN A0 // Pino analógico onde o sensor de gás está conectado
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
// Leitura do sensor de gás
int gasValue = analogRead(MQ_PIN);
float gasResistance = ((1023.0 / gasValue) - 1) * 10; // Exemplo de cálculo de resistência
// Leitura do sensor de temperatura e umidade
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Correção da leitura do sensor de gás com base na temperatura e umidade
float correctedGasResistance = correctGasReading(gasResistance, temperature, humidity);
// Cálculo da concentração de gás
float gasConcentration = calculateGasConcentration(correctedGasResistance);
// Exibição dos resultados
Serial.print("Concentration of Gas: ");
Serial.print(gasConcentration);
Serial.println(" ppm");
delay(2000); // Espera 2 segundos antes da próxima leitura
}
float correctGasReading(float resistance, float temp, float hum) {
// Implementar a correção baseada nos gráficos de influência de temperatura/umidade
// Exemplo: aplicar um fator de correção simples
float correctionFactor = 1.0; // Ajustar com base nos gráficos
return resistance * correctionFactor;
}
float calculateGasConcentration(float resistance) {
// Implementar a interpolação linear baseada na curva de sensibilidade
// Exemplo: usar uma fórmula simples de interpolação
float concentration = 0.0; // Calcular com base na curva
return concentration;
}
CEste código é um ponto de partida. Você precisará ajustar os fatores de correção e a fórmula de interpolação com base nos gráficos específicos do seu sensor.
1. Correção Baseada na Influência de Temperatura e Umidade no Detector
Para implementar a correção, você pode usar um fator de correção que ajusta a resistência do sensor de gás com base na temperatura e umidade. Suponha que você tenha determinado, a partir dos gráficos, que a resistência do sensor aumenta em 1% para cada grau Celsius acima de 25°C e em 2% para cada 10% de umidade acima de 50%.
Aqui está um exemplo de como isso pode ser implementado:
float correctGasReading(float resistance, float temp, float hum) {
float tempCorrectionFactor = 1.0 + 0.01 * (temp - 25.0); // 1% por grau acima de 25°C
float humCorrectionFactor = 1.0 + 0.02 * ((hum - 50.0) / 10.0); // 2% por 10% de umidade acima de 50%
float correctedResistance = resistance * tempCorrectionFactor * humCorrectionFactor;
return correctedResistance;
}
C2. Interpolação Linear para o Detector de Gases Inflamáveis baseada no MQ2
Para a interpolação linear, você precisa de alguns pontos da curva de sensibilidade do sensor MQ2. Suponha que você tenha os seguintes pontos (concentração de gás em ppm e resistência do sensor):
- (200 ppm, 2 kΩ)
- (1000 ppm, 0.5 kΩ)
Você pode usar a fórmula de interpolação linear para calcular a concentração de gás para uma resistência medida:
float calculateGasConcentration(float resistance) {
// Pontos conhecidos da curva de sensibilidade
float x1 = 200; // ppm
float y1 = 2.0; // kΩ
float x2 = 1000; // ppm
float y2 = 0.5; // kΩ
// Fórmula de interpolação linear
float concentration = x1 + (resistance - y1) * (x2 - x1) / (y2 - y1);
return concentration;
}
CCódigo Completo para o Detector de Gases Inflamáveis
Aqui está o código completo com as duas implementações para um detector gases inflamáveis robusto!
/*
* Título: Detector de Gases Inflamáveis com MQ2, DHT22 e Arduino
* Descrição: Código para Detector de Gases Inflamáveis com MQ2, DHT22 e Arduino, com capacidade de correção de leitura em função da análise dos gráficos da curva de resposta de concentração de gás no ambiente, levando em consideração as influências de temperatura e umidade. Embora o sensor MQ2 não consiga identificar o gás específico presente, é possível adaptar o sistema para ajustar as leituras com base nas condições ambientais. Com as devidas calibrações e ajustes, esse sensor pode ser útil para protótipos e experimentos simples com Arduino, proporcionando uma base sólida para projetos de monitoramento de gases em pequena escala. Através de aplicação de interpolação linear.
* Autor: Habilidades Sem Limites
* Data: 23 de agosto de 2024
*
* Licença:
* Este código é fornecido exclusivamente para fins educacionais e pessoais.
* O uso comercial deste código é estritamente proibido sem a autorização prévia e por escrito do autor.
* Todos os direitos reservados ao autor. O uso não autorizado pode resultar em ações legais.
*
* Assinatura Digital:
* Este documento foi assinado digitalmente para garantir sua autenticidade e integridade.
* A versão original assinada digitalmente está em posse do autor.
*
* Contato:
* Para obter autorização ou esclarecer dúvidas, visite: https://hsemlimites.com.br/hsl-fale-conosco/
*/
#include <DHT.h>
#define DHTPIN 4 // Pino digital onde o DHT22 está conectado
#define DHTTYPE DHT22
#define MQ_PIN A0 // Pino analógico onde o sensor de gás está conectado
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
// Leitura do sensor de gás
int gasValue = analogRead(MQ_PIN);
float gasResistance = ((1023.0 / gasValue) - 1) * 10; // Exemplo de cálculo de resistência
// Leitura do sensor de temperatura e umidade
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Correção da leitura do sensor de gás com base na temperatura e umidade
float correctedGasResistance = correctGasReading(gasResistance, temperature, humidity);
// Cálculo da concentração de gás
float gasConcentration = calculateGasConcentration(correctedGasResistance);
// Exibição dos resultados
Serial.print("Concentration of Gas: ");
Serial.print(gasConcentration);
Serial.println(" ppm");
delay(2000); // Espera 2 segundos antes da próxima leitura
}
float correctGasReading(float resistance, float temp, float hum) {
float tempCorrectionFactor = 1.0 + 0.01 * (temp - 25.0); // 1% por grau acima de 25°C
float humCorrectionFactor = 1.0 + 0.02 * ((hum - 50.0) / 10.0); // 2% por 10% de umidade acima de 50%
float correctedResistance = resistance * tempCorrectionFactor * humCorrectionFactor;
return correctedResistance;
}
float calculateGasConcentration(float resistance) {
// Pontos conhecidos da curva de sensibilidade
float x1 = 200; // ppm
float y1 = 2.0; // kΩ
float x2 = 1000; // ppm
float y2 = 0.5; // kΩ
// Fórmula de interpolação linear
float concentration = x1 + (resistance - y1) * (x2 - x1) / (y2 - y1);
return concentration;
}
CEste código fornece uma base sólida para medir a concentração de gás no ambiente, levando em consideração as influências de temperatura e umidade. Embora o sensor MQ2 não consiga identificar o gás específico presente, é possível adaptar o sistema para ajustar as leituras com base nas condições ambientais. Por exemplo, um botão poderia ser usado para selecionar o gás desejado, e, com a ajuda de um array contendo as curvas de calibração para diferentes gases, o sistema ajustaria as concentrações estimadas conforme as condições ambientais e as respostas do sensor.
Conclusão:
O sensor MQ-2 é uma excelente ferramenta educativa para aprender sobre detecção de gases inflamáveis e fumaça em ambientes controlados. Embora não ofereça alta precisão, pode ser combinado com o sensor DHT22 para considerar as influências de temperatura e umidade nas leituras. Com as devidas calibrações e ajustes, esse sensor pode ser útil para protótipos e experimentos simples com Arduino, proporcionando uma base sólida para projetos de monitoramento de gases em pequena escala.
Conheça mais…
