Introdução
O monitoramento de gases com sensores MQ e Arduino é uma técnica amplamente utilizada em projetos de eletrônica e IoT. Este artigo explora as vantagens, desvantagens e limitações do uso de sensores MQ, além de apresentar um código exemplo para a implementação de um sistema de monitoramento de gases utilizando o Arduino.
Monitoramento de Gases com Sensores MQ: Vantagens
O monitoramento de gases com sensores MQ oferece várias vantagens, tornando-o uma escolha popular entre entusiastas e profissionais. Primeiramente, os sensores MQ são acessíveis e fáceis de encontrar no mercado, o que facilita a montagem de projetos de monitoramento de gases com sensores MQ. Além disso, esses sensores possuem uma boa sensibilidade a uma ampla variedade de gases, o que os torna versáteis para diversas aplicações.
Outra vantagem significativa é a facilidade de integração dos sensores MQ com o Arduino. A biblioteca de código disponível para o Arduino simplifica a leitura dos dados dos sensores, permitindo que os usuários desenvolvam sistemas de monitoramento de gases com sensores MQ de forma rápida e eficiente.
Desvantagens e Limitações no Monitoramento de Gases com Sensores MQ
Apesar das vantagens, o monitoramento de gases com sensores MQ apresenta algumas desvantagens e limitações. Uma das principais desvantagens é a precisão limitada desses sensores. Embora sejam capazes de detectar a presença de gases, os sensores MQ podem não fornecer medições altamente precisas, o que pode ser um problema em aplicações que exigem precisão rigorosa.
Além disso, os sensores MQ são sensíveis a variações de temperatura e umidade, o que pode afetar a precisão das leituras. Portanto, ao implementar um sistema de monitoramento de gases com sensores MQ, é importante considerar as condições ambientais para garantir resultados mais confiáveis.
Aplicações e Utilizações
O monitoramento de gases com sensores MQ pode ser aplicado em diversas áreas. Em ambientes industriais, esses sensores são usados para detectar a presença de gases inflamáveis e tóxicos, proporcionando um nível adicional de segurança. No setor residencial, o monitoramento de gases com sensores MQ pode ser utilizado em sistemas de alarme para detectar vazamentos de gás, como metano ou gás de cozinha.
Além disso, em projetos de Internet das Coisas (IoT), o monitoramento de gases com sensores MQ permite a criação de sistemas de monitoramento remoto. Isso possibilita o envio de alertas em tempo real para dispositivos móveis ou computadores, aumentando a eficiência na detecção de gases perigosos.
Código do Nosso Exemplo
Logo abaixo está um exemplo para implementar um sistema de monitoramento de gases com sensores MQ utilizando o Arduino.
Este código é um projeto didático que utiliza diversos sensores MQ conectados a um Arduino para monitorar a presença de diferentes gases no ambiente. O sistema lê os valores dos sensores, exibe esses valores em um display LCD e tenta identificar qual gás está presente com base nas leituras dos sensores.
Aviso de Segurança!
Este experimento envolve a detecção de gases e pode representar riscos significativos, como asfixia ou até mesmo explosão. Para sua segurança não menospreze os riscos:
- Ambiente: Realize todos os testes em um ambiente muito bem ventilado. Nunca conduza experimentos em locais fechados.
- Manipulação de Gases: Se possível, evite manipular gases diretamente. Sempre que necessário, proceda com extrema cautela.
- Companhia: Nunca realize experimentos sozinho. Sempre tenha uma pessoa adicional presente durante os testes para assistência em caso de emergência.
- Classificação Etária: Este projeto não deve ser realizado por crianças. Recomenda-se uma classificação etária mínima de 16 anos, com supervisão de um adulto responsável.
- Equipamentos Profissionais: Este sistema destina-se apenas ao aprendizado e não substitui equipamentos profissionais de detecção de gases.
- Responsabilidade: Não nos responsabilizamos por qualquer dano ou acidente resultante do mau uso deste experimento, incluindo a falha em seguir as regras de segurança descritas ou qualquer modificação parcial ou total do propósito do artigo apresentado. Este projeto é exclusivamente para fins didáticos.
- Equipamentos de Segurança: Conforme as Normas da ABNT (Associação Brasileira de Normas Técnicas), utilize e tenha sempre à disposição os seguintes equipamentos de segurança disponíveis durante a realização dos experimentos:
- Óculos de segurança: Protegem os olhos contra respingos de líquidos e partículas.
- Máscara contra gases: Protege contra a inalação de gases tóxicos.
- Saco de areia de 5 kg: Para extinguir pequenos incêndios.
- Cobertor de emergência: Para cobrir e sufocar pequenos incêndios.
- Chuveiro em funcionamento normal: Para lavar imediatamente em caso de contato com substâncias perigosas.
- Caixa de primeiros socorros: Equipada com materiais básicos para atendimento de emergências.
- Isenção de Responsabilidade: O uso deste projeto é por conta e risco do usuário. Não nos responsabilizamos por qualquer dano, lesão ou acidente resultante do uso inadequado, incluindo, mas não se limitando a, falha em seguir as regras de segurança descritas, ou qualquer modificação do propósito do artigo. Este projeto é exclusivamente para fins didáticos.
Lembre-se de seguir todas as normas de segurança e boas práticas durante a condução dos experimentos.
O Código:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configurações do LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pinos dos sensores MQ
const int mqPins[6] = {A0, A1, A2, A3, A6, A7};
// Pinos do botão
const int buttonPin = 2;
// Variáveis de controle do sistema
int currentScreen = 0;
int sensorValues[6] = {0};
// Configurações do VU meter
const uint8_t vuBar[8][8] = {
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Empty
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F}, // Level 1
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // Level 2
{0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F}, // Level 3
{0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F}, // Level 4
{0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F}, // Level 5
{0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F}, // Level 6
{0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F} // Level 7
};
// Estrutura para armazenar dados do sensor e gases detectáveis
struct Sensor {
const char* name;
int gases[4];
int numGases;
};
// Definição dos sensores MQ
Sensor sensors[6] = {
{"MQ2", {1, 2, 3, 4}, 4},
{"MQ3", {5, 6, 4}, 3},
{"MQ5", {1, 7, 3, 4}, 4},
{"MQ7", {1, 4}, 2},
{"MQ8", {2, 3}, 2},
{"MQ9", {1, 7, 3, 4}, 4}
};
// Função de inicialização
void setup() {
// Inicializa o LCD
lcd.init(16,2);
lcd.backlight();
// Configura o pino do botão como entrada
pinMode(buttonPin, INPUT_PULLUP);
// Cria os caracteres do VU meter
for (int i = 0; i < 8; i++) {
lcd.createChar(i, vuBar[i]);
}
// Exibe a tela inicial
displayScreen();
}
// Função principal do loop
void loop() {
// Atualiza os valores dos sensores
updateSensorValues();
// Verifica se o botão foi pressionado
if (digitalRead(buttonPin) == LOW) {
delay(200); // Debounce
currentScreen = (currentScreen + 1) % 7;
displayScreen();
}
// Atualiza o VU meter
displayVuMeter();
}
// Função para atualizar os valores dos sensores
void updateSensorValues() {
for (int i = 0; i < 6; i++) {
sensorValues[i] = analogRead(mqPins[i]);
}
}
// Função para exibir a tela atual no LCD
void displayScreen() {
lcd.clear();
if (currentScreen == 0) {
// Tela principal: identifica o gás detectado
identifyGas();
} else {
// Telas individuais dos sensores
lcd.setCursor(0, 0);
lcd.print(sensors[currentScreen - 1].name);
lcd.print(": ");
lcd.print(sensorValues[currentScreen - 1]);
// Exibe o valor do sensor
lcd.setCursor(0, 1);
lcd.print("Valor: ");
lcd.print(sensorValues[currentScreen - 1]);
}
}
// Função para identificar o gás detectado
void identifyGas() {
// Map de contagem de gases detectados
int gasCount[8] = {0};
// Conta os gases detectados por cada sensor
for (int i = 0; i < 6; i++) {
if (sensorValues[i] > 200) { // Ajuste o valor conforme necessário
for (int j = 0; j < sensors[i].numGases; j++) {
gasCount[sensors[i].gases[j]]++;
}
}
}
// Determina o gás com maior contagem
int maxCount = 0;
int detectedGas = 0;
for (int i = 1; i < 8; i++) {
if (gasCount[i] > maxCount) {
maxCount = gasCount[i];
detectedGas = i;
}
}
String gasName = "Desconhecido";
switch (detectedGas) {
case 1: gasName = "Metano"; break;
case 2: gasName = "Butano"; break;
case 3: gasName = "LPG"; break;
case 4: gasName = "Fumaça"; break;
case 5: gasName = "Álcool"; break;
case 6: gasName = "Etanol"; break;
case 7: gasName = "Gás Natural"; break;
}
// Exibe o gás detectado e a confiança
lcd.setCursor(0, 0);
lcd.print("Gás: ");
lcd.print(gasName);
lcd.setCursor(0, 1);
lcd.print("Conf: ");
lcd.print(maxCount * 20); // Ajuste a confiança conforme necessário
lcd.print("%");
}
// Função para exibir o VU meter no LCD
void displayVuMeter() {
int vuLevel = map(sensorValues[currentScreen == 0 ? 0 : currentScreen - 1], 0, 1023, 0, 7);
lcd.setCursor(0, 1);
for (int i = 0; i <= vuLevel; i++) {
lcd.write(byte(i));
}
}
CExplicação do Código de Monitoramento de Gases com Sensores MQ
- Leitura dos Sensores: O Arduino está conectado a sete sensores MQ diferentes. Cada sensor é especializado na detecção de determinados gases. O código lê os valores de cada sensor a partir das portas analógicas do Arduino.
- Exibição no LCD: O sistema exibe os valores lidos dos sensores em um display LCD 1602 I2C. Você pode navegar entre as telas dos diferentes sensores usando um botão. A tela principal (tela 0) mostra o nome do gás detectado com mais precisão, baseado nos valores dos sensores.
- Identificação do Gás: A função identifyGas() analisa os valores dos sensores e identifica qual gás está presente. A identificação é baseada em uma tabela que relaciona cada sensor aos gases que ele pode detectar. Por exemplo, se os sensores MQ2 e MQ4 detectarem altos valores, o código verifica os gases que esses sensores têm em comum e identifica o gás provável.
- Visualização em Bar Graph (VU Meter): O código também inclui um VU meter para mostrar a intensidade do gás detectado em tempo real.
Esquema de ligação:

Alimentação dos Sensores MQ
Nunca alimente diretamente os sensores MQ apenas através do pino 5V do Arduino, para não danificar o regulador de tensão do Arduino. A quantidade de sensores utilizados no projeto supera o limite interno de corrente do regulador, por isso é necessário utilizar uma fonte externa de 5V x 2A de excelente qualidade ligada conforme demonstrado no diagrama.
Fonte de Alimentação Regulada: Certifique-se de que a fonte de alimentação externa forneça uma tensão estável e regulada de 5V. A tensão não deve exceder 5.5V para evitar danos à placa. Desconfie de fontes vendidas no mercado a preços muito baixos e cuidado com falsificações.
Caso seja necessário alimentar o Arduino via USB, desconecte a alimentação de 5V que vai para os sensores. Esta condição é fundamental para o momento de carregamento do código no Arduino. Após esse processo, desconecte o cabo USB e alimente o Arduino e os sensores através da fonte externa, sempre se certificando, com o auxílio de um multímetro, de que a tensão não exceda o limite de 5.5V.
Componentes necessário:
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!
Componentes: | Compre aqui |
---|---|
1x Arduino Nano | Amazon |
1x Display LCD 1602 com interface I2C | Amazon |
1x Push Button tipo NO (Normal Open) | Amazon |
1x Sensor MQ-2 | Amazon |
1x Sensor MQ-3 | Amazon |
1x Sensor MQ-5 | Amazon |
1x Sensor MQ-7 | Amazon |
1x Sensor MQ-8 | Amazon |
1x Sensor MQ-9 | Amazon |
1x Fonte 5V x 2A | Amazon |
1x Protoboard | Amazon |
1x Kit Jumpers para Arduino | Amazon |
Expansão do Projeto de Monitoramento de Gases com Sensores MQ
O projeto de monitoramento de gases apresentado utiliza sensores MQ baseados nos recursos e materiais disponíveis no momento da concepção do trabalho. No entanto, isso não impede que o leitor faça modificações no código e no esquema de montagem para adicionar mais dois sensores MQ através das portas A4 e A5, que no nosso exemplo, estão ocupadas pelo display LCD via I2C.
Adaptações Necessárias:
- Conexão do Display LCD: O leitor deve ligar o display de maneira convencional, utilizando as portas digitais disponíveis no Arduino, substituindo a conexão I2C que ocupa as portas A4 e A5.
- Atualização do Código: O leitor deve ajustar o código para refletir essa nova forma de ligação do display.
- Incluir Novos Sensores na struct: Adicionar os novos sensores na struct Sensor do código e fazer as alterações necessárias nos parâmetros ao longo do código para garantir o correto funcionamento dos novos sensores.
- Tabela Enumerada de Gases: Os gases foram numerados com base nas informações dos datasheets de cada sensor. Começamos pelo MQ-2, seguido pelo MQ-3, e assim por diante. Cada vez que encontramos um novo gás no datasheet de um sensor diferente, ele recebeu um novo número, mantendo a sequência criada. Quando encontramos um gás que já havia sido numerado anteriormente, usamos o mesmo número atribuído anteriormente no array desse novo sensor, indicando que se trata do mesmo gás que outros sensores também podem detectar.
Os novos gases, além dos já listados no projeto, devem ser adicionados no switch case com o número atribuído a ele na descoberta. Seguindo esses passos, o sistema funcionará com mais sensores, oferecendo maior flexibilidade e precisão no monitoramento de gases.
Resultados Produzidos
O sistema produz dois tipos principais de resultados:
Valores dos Sensores: Exibe os valores brutos lidos de cada sensor no display LCD, permitindo ao usuário monitorar as leituras em tempo real.
Identificação do Gás: Tenta identificar o gás mais provável presente no ambiente com base nas leituras dos sensores e exibe o nome do gás e a confiança na detecção.
Vantagens no Monitoramento de Gases com Sensores MQ
- Didático: Ideal para aprendizado e experimentação com sensores de gases e Arduino.
- Versátil: Pode detectar múltiplos tipos de gases, dependendo dos sensores utilizados.
- Visualização em Tempo Real: Permite monitorar os valores dos sensores e a identificação do gás detectado em tempo real.
Desvantagens e Limitações de Monitoramento de Gases com Sensores MQ
- Precisão Limitada: Não substitui equipamentos profissionais de detecção de gases. Os sensores MQ são sensíveis a variações de temperatura e umidade, o que pode afetar a precisão das leituras.
- Uso Experimental: Destinado apenas para fins educativos e experimentais. Os resultados não devem ser utilizados para fins críticos ou industriais.
Aplicações
- Educação: Excelente para estudantes e entusiastas de eletrônica e IoT aprenderem sobre sensores de gases e como utilizá-los com Arduino.
- Projetos de DIY: Ideal para projetos de “faça você mesmo” que envolvem monitoramento de gases em ambientes controlados.
- Prototipagem: Pode ser usado em protótipos de sistemas de detecção de gases para validação inicial antes de implementar soluções profissionais.
Conclusão
O monitoramento de gases com sensores MQ e Arduino é uma solução prática e acessível para diversas aplicações de detecção de gases. Apesar das suas limitações em termos de precisão e sensibilidade às condições ambientais, essa abordagem é altamente versátil e de fácil implementação. Ideal para projetos de segurança industrial, sistemas residenciais de alarme e projetos de IoT, o monitoramento de gases com sensores MQ oferece uma maneira eficiente de detectar e monitorar a presença de gases potencialmente perigosos
Esse sistema é uma ótima maneira de expandir seu conhecimento de forma prática e experimental. Lembre-se sempre de que este projeto não substitui equipamentos profissionais e deve ser utilizado apenas como uma ferramenta de aprendizado.
Página Oficial:
Link para acessar a página oficial da Winsen
Datasheet:
Link para acessar uma lista de Datasheets sobre Sensores MQ no AllDatasheet.com
– Resumo de Segurança –
Reforçamos a importância de seguir todas as precauções de segurança mencionadas anteriormente ao realizar este experimento. Realize sempre os testes em ambientes bem ventilados e nunca manipule gases diretamente. Experimentos devem ser conduzidos com a presença de outra pessoa, e a classificação etária recomendada é de no mínimo 16 anos com supervisão adulta. Utilize equipamentos de segurança adequados, conforme as normas da ABNT, incluindo óculos de segurança, máscara contra gases, saco de areia, cobertor de emergência, chuveiro e caixa de primeiros socorros.
Isenção de Responsabilidade: O uso deste projeto é por conta e risco do usuário. Não nos responsabilizamos por qualquer dano, lesão ou acidente resultante do uso inadequado. Este projeto é exclusivamente para fins didáticos.
Conheça mais…
