fbpx
ArduinoNovidade

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.

Imagem ilustrativa do sensor de gás e fumaça MQ-2.
Figura 1: Sensor de gás e fumaça MQ-2.

É 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.

Imagem ilustrativa da malha anti explosão do sensor de gás e fumaça MQ-2.
Figura 2: Malha anti explosão do sensor de gás e fumaça MQ-2.

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.

Imagem ilustrativa do elemento sensível e terminais de conexão no interior do sensor de gás e fumaça Mq-2.
Figura 3: Elemento sensível e terminais de conexão no interior do sensor de gás e fumaça Mq-2.

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.

Figura ilustrativa da tensão de saída varia proporcionalmente à concentração de gases ou fumaça.
Figura 4: A tensão de saída varia proporcionalmente à concentração de gases ou fumaça.

Os pinos do sensor de gás/fumaça MQ-2 encontram-se detalhados na Figura 5.

Imagem ilustrativa dos pinos do sensor de gás e fumaça MQ-2.
Figura 5: Pinos do sensor de gás e fumaça MQ-2.

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

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.

Imagem ilustrativa do circuito para utilização do sensor de gás e fumaça MQ-02 com Arduino.
Figura 6 : Circuito para utilização do sensor de gás e fumaça MQ-02 com Arduino.

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 7.

Imagem ilustrativa do resultado da leitura analógica do sensor de gás e fumaça MQ-2.
Figura 7 – Resultado da leitura analógica do sensor de gás e fumaça MQ-2.

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 condicionar 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!

Att. Carol Correia Viana

Dúvidas? Deixe seu comentário

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.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.