Como utilizar sensor de gás/fumaça MQ-2 com Arduino
O sensor de gás/fumaça MQ-2 é capaz de detectar concentrações de gás liquefeito de petróleo (GLP), fumaça, álcool, propano, metano, hidrogênio e monóxido de carbono no ar variando de 200 a 10000ppm. É um dispositivo excelente para construção de projetos envolvendo o monitoramento da qualidade do ar interno, aleta contra incêndios ou bafômetros.
É importante lembrar que apesar do sensor de gás/fumaça MQ-2 ser capaz de detectar vários tipos de gases, ele não consegue identificá-los. Por tanto, deve ser utilizado apenas para medir a densidade de um gás conhecido.
O sensor MQ-2 é coberto por duas camadas de malha fina de aço inoxidável que forma uma rede anti explosão, que garante que o material em seu interior não cause explosões uma vez que detectaremos gases inflamáveis. Além disto, esta malha protege o sensor e filtra partículas em suspensão.
O sensor MQ-2 possui em seu interior um semicondutor de óxido de metal. Os sensores de óxido de metal também são conhecidos como quimioresistores, pois a resistência elétrica do material que o compõe muda quando exposto a gases. O elemento sensor e seis terminais de conexão se estendem além da base do sensor e formam a estrutura em forma de estrela, conforme a Figura 3.
O sensor MQ-2 possui pinos de saída analógica e digital. A saída digital pode ser usada para identificar a presença de gases ou fumaça. Por sua vez, a tensão de saída analógica varia proporcionalmente à concentração de gases ou fumaça (Figura 4), de forma que quanto maior a concentração, maior será a saída; quanto menor a concentração, menor será a tensão.
Os pinos do sensor de gás/fumaça MQ-2 encontram-se detalhados na Figura 5.
Cada pino possui a seguinte função:
- A0: Pino de saída analógica que varia de acordo com a concentração de gases detectada;
- D0: Pino de saída digital do sensor. Nível lógico alto indica que foi identificado gás ou fumaça no ambiente;
- GND: Pino de aterramento do sensor;
- VCC: Pino de alimentação do sensor (5V).
Na parte traseira (Figura 6), o sensor MQ-2 conta com um potenciômetro para ajuste da sensibilidade da saída digital que pode ser utilizado para definir um limite para detecção do gás ou fumaça. Além disto, há também dois LED, um indica quando o módulo é energizado e outro quando ocorre a detecção.
Agora que já conhecemos as principais características técnicas e forma de funcionamento do sensor de gás/fumaça MQ-2, vamos aprender como utilizá-lo em conjunto com o Arduino.
IMPORTANTE: O sensor MQ-2 deve ser usado somente para fins educacionais ou experimentais. O Blog da Robótica não recomenda o uso do sensor MQ-2 em projetos em que a segurança de pessoas ou do ambiente esteja em risco.
MATERIAIS NECESSÁRIOS
- 1x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB Tipo A-B compatível com Arduino UNO;
- 1 x Sensor de gás/fumaça MQ-2;
- 1 x Protoboard;
- 2 x LEDs difusos 5mm;
- 2 x Resistores 220Ω;
- Jumpers macho-macho.
ESQUEMÁTICO DE LIGAÇÃO
Inicialmente, certifique-se de que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da Figura 7, utilizando o sensor MQ-2, os LEDs, os resistores e os jumpers.
Ao montar o circuito, observe os seguintes pontos:
- Alimente o sensor de gás/fumaça MQ-2 por meio do 5V do Arduino;
- Conecte o GND do sensor MQ-2 ao GND do Arduino;
- Conecte o pino analógico A0 do sensor à entrada analógica A0 do Arduino;
- Os LEDs devem ser conectados aos pinos digitais 12 e 13.
OBSERVAÇÃO: O sensor aquece ao início do seu funcionamento. Logo é comum a presença do cheiro de queimado durante seu processo de inicialização.
ELABORANDO O CÓDIGO
Após a montagem do circuito, vamos a programação do Sketch. A proposta deste projeto é desenvolver um sistema que monitore o ar e informe quando um gás ou fumaça for detectado por meio de LEDs indicativos. Se o sensor detectar gás ou fumaça um LED na cor vermelha deve ser ligado, senão o LED verde será acionado.
Usaremos a leitura da saída analógica do sensor MQ-2 e para determinar se o nível de concentração de gás está dentro do limite aceitável, vamos registrar os valores da saída analógica quando:
- O ar está limpo;
- O sensor é exposto a fumaça ou gás.
Para tal, utilize o seguinte código e anote os valores lidos em cada situação.
void setup() { Serial.begin(9600); //Inicializa a comunicação serial } void loop() { int sensorValue = analogRead(A0); //Realiza a leitura do sensor Serial.print("Leitura do sensor MQ-2: "); Serial.println(sensorValue); //Imprime no monitor serial o valor lido delay(100); //Intervalo de 100 milissegundos }
O resultado que obtivemos em nosso teste pode ser observado na Figura 8.
De posse destes resultados, podemos desenvolver a programação. Acompanhe os passos a seguir para melhor compreensão da lógica de programação:
1. Definir as constantes
Iniciamos o código definindo as constantes PinSensor, PinLedVermelho e PinLedVerde para representar os pinos em que a saída analógica do sensor, o LED vermelho e o LED verde estão conectados no Arduino, respectivamente.
2. Declarar variável
Declaramos a variável ValorLeituraSensor do tipo inteiro para armazenar os valores lidos da saída analógica do sensor.
3. Inicializar a comunicação serial, definir portas de saída e configurações iniciais:
A comunicação serial foi inicializada por meio da instrução: Serial.begin(9600);.
A constante PinSensor como entrada (INPUT) e as constantes PinLedVermelho e PinLedVerde como saída (OUTPUT).
4. Realizar a leitura do sensor MQ-2 e imprimir no monitor serial:
Iniciamos o loop() realizando a leitura da porta analógica A0 (PinSensor). Para isso utilizamos a função analogRead(PinSensor), e armazenaremos este valor na variável ValorLeituraSensor. Em seguida, imprimiremos o valor no monitor serial.
5. Realizar a comparação:
Utilizaremos a estrutura condicional if…else para comparar a leitura do sensor MQ-2 com a leitura obtida na calibração, de modo que:
- Se a leitura for maior ou igual a 200, o monitor serial exibirá a mensagem “Fumaça/gás detectado” e o LED vermelho será ligado;
- Senão, o monitor serial exibirá “Fumaça/gás não detectado” e o LED verde será acionado;
6. Intervalo de 1 segundo a cada leitura
Para que a leitura seja efetuada em intervalos de 1 segundo incluímos a instrução delay(1000);.
Ao final, o Sketch deste projeto ficará da seguinte maneira:
#define PinSensor A0 //Entrada analógica do Arduino conectado ao sensor #define PinLedVermelho 13 //Entrada digital do Arduino conectado ao LED vermelho #define PinLedVerde 12 //Entrada digital do Arduino conectado ao LED int valorLeituraSensor; //Váriavel que irá armazenar os valores de leitura do sensor void setup() { Serial.begin(9600); //Inicialização da comunicação serial pinMode(PinSensor, INPUT); // Declara o pino do sensor como pino de entrada pinMode(PinLedVermelho, OUTPUT); // Declara o pino do LED vermelho como pino de saída pinMode(PinLedVerde, OUTPUT); // Declara o pino do LED verde pino de saída } void loop() { valorLeituraSensor = analogRead(PinSensor); //Leitura de dados do sensor Serial.print("Valor detectado pelo sensor: "); //Imprime a mensagem no monitor serial Serial.println(valorLeituraSensor); //Imprime valores de leitura encontrados no monitor serial if (valorLeituraSensor >= 200) //Se o valor de leitura analogica for maior ou igual a 220.... { Serial.println("Fumaça/gás detectado"); //Imprime a mensagem no monitor serial digitalWrite(PinLedVerde, LOW); //Desliga o LED verde digitalWrite(PinLedVermelho, HIGH); //Liga o LED vermelho } else { Serial.println("Fumaça/gás nao detectado"); //Imprime a mensagem no monitor serial digitalWrite(PinLedVerde, HIGH); //Liga o led verde digitalWrite(PinLedVermelho, LOW); //Desliga o LED vermelho } delay(1000); //Repete a leitura a cada 1 segundo }
Espero ter ajudado,
Obrigada a todos e, em caso de dúvidas, deixe seu comentário abaixo!
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.