14 janeiro 2015

Alarme sensor de gás com o módulo MQ-2

Inclua um importante item de segurança no seu projeto de automação residencial, criando um sistema de detecção de gás com o módulo sensor de gás e fumaça MQ-2 :

Sensor Gás e Fumaça MQ-2


O sensor MQ-2 (datasheet), é um detector de gás e fumaça que pode indicar a presença de GLP (Gás liquefeito de petróleo, o famoso gás de cozinha), Propano, Metano, Hidrogênio e outros tipos de gases. Seu nível de detecção vai de 300 a 10.000 ppm (partes por milhão), ajustáveis por um potenciômetro na parte de trás do módulo. Um chip comparador LM393 é responsável por ler as informações do sensor e converter essas informações em sinais para o microcontrolador.

A tensão de alimentação do módulo é de 5V e a comunicação com o microcontrolador pode ser feita de duas maneiras : pela saída digital D0 ou pela saída analógica A0. Podemos utilizar a saída digital para simplesmente ligar uma sirene ou acionar um relé que vai fechar/abrir uma porta, cortar o fornecimento de gás, etc. Já a saída analógica informa o nível de concentração de gases detectados pelo sensor. Quanto maior a concentração, maior o nível de sinal na saída analógica A0.

Detalhe módulo sensor de gás MQ-2

Conexão do sensor de gás MQ-2 ao Arduino

A exemplo de outros sensores para Arduino, vamos trabalhar apenas com portas digitais e analógicas, lendo os valores enviados pelo sensor. No nosso circuito de testes, usamos a porta digital 7 para ligação ao pino D0 do módulo, e a porta analógica A2 ligada ao pino A0 do módulo.

As portas digitais 8, 9 e 10 serão utilizadas para acionar um led vermelho e um buzzer (gás detectado), e um led verde no modo normal de operação (sem alarme).

Circuito Arduino Uno sensor MQ-2



Como estamos trabalhando apenas com portas digitais e analógicas, não vamos precisar de nenhuma biblioteca específica para esse sensor. 

No programa, o valor lido da porta analógica (valor_analogico), é comparado com a variável nivel_sensor para determinar em que ponto será acionado o buzzer e a também o led vermelho. 

Nos nossos testes, o valor inicial da leitura ficou em 213 , e aumentou rapidamente para 550 na presença de gás. Ajuste o valor de nivel_sensor de acordo com o nível de detecção desejado.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Programa : Alarme com sensor de gas MQ-2
// Autor : Arduino e Cia

// Definicoes dos pinos dos leds e buzzer
int pin_led_verm = 8;
int pin_led_verde = 9;
int pin_buzzer = 10;

// Definicoes dos pinos ligados ao sensor 
int pin_d0 = 7;
int pin_a0 = A2;

int nivel_sensor = 250;

void setup()
{
  // Define os pinos de leitura do sensor como entrada
  pinMode(pin_d0, INPUT);
  pinMode(pin_a0, INPUT);
  // Define pinos leds e buzzer como saida
  pinMode(pin_led_verm, OUTPUT);
  pinMode(pin_led_verde, OUTPUT);
  pinMode(pin_buzzer, OUTPUT);
  // Inicializa a serial
  Serial.begin(9600);
}

void loop()
{
  // Le os dados do pino digital D0 do sensor
  int valor_digital = digitalRead(pin_d0);
  // Le os dados do pino analogico A0 do sensor
  int valor_analogico = analogRead(pin_a0);
  // Mostra os dados no serial monitor
  Serial.print("Pino D0 : ");
  Serial.print(valor_digital);
  Serial.print(" Pino A0 : ");
  Serial.println(valor_analogico);
  // Verifica o nivel de gas/fumaca detectado
  if (valor_analogico > nivel_sensor)
  {
    // Liga o buzzer e o led vermelho, e
    // desliga o led verde
    digitalWrite(pin_led_verm, HIGH);
    digitalWrite(pin_led_verde, LOW);
    digitalWrite(pin_buzzer, HIGH);

  }
  else
  {
    // Desliga o buzzer e o led vermelho, e
    // liga o led verde
    digitalWrite(pin_led_verm, LOW);
    digitalWrite(pin_led_verde, HIGH);
    digitalWrite(pin_buzzer, LOW);
  }
  delay(100);
}

Você pode verificar em tempo real o valor das variáveis valor_digital (porta D0) e valor_analogico (porta A0) no serial monitor :

Serial monitor - dados sensor MQ-2


61 comentários:

  1. Ola, preciso de sua ajuda... Tenho uma assistência de fogões meu cliente quer que eu monte um sistema que ligue a lareira e detecte qualquer fuga de GLP. Isto é, preciso acionar uma solenóide com um botão no controle remoto, acionar a usina de acendimento por 3 segundos em outro botão e LEDs para identificar se ouver fuga de gás. Pode me ajudar? Não tenho conhecimento nenhum sobre o Arduíno, sente assisti muito os tutoriais, e tenho grande conhecimento na elétrica. Quais pecas comprar? Onde comprar? E relação dos comandos para funcionar desta forma citada acima. Desde já agradeço. FC com Deus, Elton 14 9 9788-7766

    ResponderExcluir
    Respostas
    1. Boa noite,

      Não tenho nenhum projeto pronto para isso, mas se você quiser, posso desenvolver sob encomenda. Por favor utilize o formulário de contato no lado direito da página para conversarmos.

      Abraço !

      Excluir
  2. Bom dia quais os valores dos resistores do circuito Arduíno uno sensor mq2.
    Obrigado.

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Pode usar de 330 ohms ou um valor próximo.

      Abraço !

      Excluir
  3. Conhece alguma empresa que faça a parte de plástico do detector de fumaça? Pois gostaria de usar esse sensor nos meus detectores....mas só sensor não posso usar...tenho q por ele numa base...assim como são esses que vemos em sistema de incendio...abraços

    ResponderExcluir
    Respostas
    1. Boa noite Cristiano,

      Conheço sim. Que tipo de plástico você precisa ? Se puder, entre em contato comigo utilizando o formulário no lado direito da página.

      Abraço !

      Excluir
  4. Muito bom, parabéns. Sou iniciante, e só havia testado aquele codigo de fazer o led piscar....

    Fazia uns 15 dias que procurava um "código comentado" pro sensor MQ-5 ( funcionou perfeitamente no MQ-5 )

    -sera que eu posso colocar mais 1 ou 2 sensores "apenas ligando o sensor em paralelo", digo utilizando as mesmas portas/mesmo codigo do arduino ?

    -tem ideia se da pra "implementar" um pouco mais:
    com um "shield ethernet e xampp" enviar uma mensagem para um E-MAIL pré estabelecido quando tiver presença de gás?

    Grato

    ResponderExcluir
    Respostas
    1. Bom dia Marcelo,

      Utilizar a mesma porta não vai ser possível, utilize uma porta diferente para cada sensor, e altere o código.

      Integrar esse projeto com o shield ethernet é possível sim, eu só não consegui ainda tempo para implementar, mas devo fazer isso em breve.

      Abraço !

      Excluir
    2. Carlos Bittencourt7 de maio de 2016 00:12

      Este projeto também funciona com o MQ-7? Alguém já utilizou?
      Desde já grato.

      Excluir
  5. Qual a distância máxima entre o mq2 e o arduino pois no meu projeto tenho uma distância até 10 m. Será que tem algum problema essas distância ? E qual cabo usar?

    ResponderExcluir
    Respostas
    1. Bom dia Rafael,

      Tente utilizar um cabo de rede (daqueles azuis). Deve funcionar bem para essa distância.

      Abraço!

      Excluir
  6. Bom dia amigo, preciso de uma resposta sobre um projeto particular, a cozinha fica a 14 metros da minha central de automação, posso ligar este sensor nesta distancia usando um cabo de rede normal ou a bitola dos fios seria maior?

    ResponderExcluir
    Respostas
    1. Bom dia Luciano,

      14 metros não é tão longe... eu nunca fiz um teste à essa distância, mas já vi sensores colocados longe do Arduino, utilizando um cabo de rede (desses azuis) para ligação.

      Abraço!

      Excluir
  7. olá Amigo, conseguir realizar o projeto perfeitamente seguindo o seu tutorial, porém eu gostaria de assim como detectar a presença do gás, medir a concentração em ppm dos níveis dos gases e mostrar em um display lcd através do sensor através da porta analógica, sei que o sensor consegue medir concentrações entre 300ppm e 10000ppm, como eu faria a conversão do valor da porta analógica nos valores em ppm para mostrar no lcd. Abraços!!!

    ResponderExcluir
  8. Hello :), can you tell me, how do you make this circuit?
    I don't find any sensor MQ-2 my Proteus 8 Pro. Please help me for my final project. Sorry for my bad english.

    ResponderExcluir
    Respostas
    1. Hi !

      I tested with a real MQ-2 sensor. Unfortunately, I don´t have any information for projects using Proteus.

      Best regards !

      Excluir
  9. Boa Tarde
    Quando eu faço o upload, o sensor funciona, mas as luzes led e o buzzer não. O que pode haver de errado?

    ResponderExcluir
    Respostas
    1. Bom dia Igor,

      Me parece alguma ligação incorreta. Verifique o circuito, por favor.

      Abraço!

      Excluir
  10. hi i have tested my MQ-2 sensor but i follow the steps as shown from ur coding.. but at last it telling me expected unqualified-id before '(' what it is mean

    ResponderExcluir
    Respostas
    1. Hey!

      Seems like a typo problem... Do you checked the code ?

      Regards!

      Excluir
  11. Bom dia, qual programa vc utilizou para desenhar o o esquema?

    ResponderExcluir
    Respostas
    1. Bom dia Maria!

      Usamos o Fritzing. :)

      http://fritzing.org/home/

      Abraço!

      Excluir
    2. Obrigada, o que eu baixei não me mostra o sensor mq-2, vc incliu?

      Excluir
    3. Olá! Eu também estou procurando pelo arquivo desta part do sensor MQ-2 no Fritzing. Alguém poderia me indicar como conseguir para eu inclui-la no Fritzing? Obrigado!!

      Excluir
  12. Boa noite, que valor é o detectado? Seria ppm? Se não, sabe como faço essa conversãow Obrigada ;)

    ResponderExcluir
    Respostas
    1. Oi Thamires,

      Eu ainda não fiz um projeto com esse tipo de valor, mas creio que esse post tem o que você precisa:

      http://sandboxelectronics.com/?p=165

      Abraço!

      Excluir
  13. Você poderia compartilhar o arquivo .fzz cmg?

    ResponderExcluir
    Respostas
    1. Oi Maria,

      Infelizmente eu não tenho esse arquivo, o componente foi desenhado posteriormente.

      Abraço!

      Excluir
  14. Gostaria de saber se esse modulo possui um regulador de tensão. Por exemplo se eu ligar esse modulo a cem metros de distancia consigo manter a tensão necessária para alimenta-lo

    ResponderExcluir
    Respostas
    1. Olá!

      A essa distância, acho difícil. Que tal montar alguma conexão sem fio, como por exemplo com módulo RF, para fazer a transferência de dados ?

      Abraço!

      Excluir
  15. Boa noite, eu montei o circuito o sensor funciona o led fica vermelho mas o Buzzer (no nosso caso auto falante de 0,3W) não faz barulho. Qual poderia ser o problema ?

    ResponderExcluir
    Respostas
    1. Oi Vitor,

      Coloque um led no lugar do buzzer, veja se funciona. Se funcionar, sugiro que vc use outro tipo de saída de áudio.

      Abraço!

      Excluir
  16. Boa tarde, primeiramente queria parabenizar o site por este artigo. Bem, estou usando esse artigo como referencia para meu trabalho na escola, fiz um modelo no simulador fritzing, mas o unico componente q nao achei foi o MQ-2, como eu faço para obte-lo(igual ao da figura)?! Obrigado pela atenção!

    ResponderExcluir
    Respostas
    1. Oi Dariel,

      Infelizmente eu também não achei este componente no Fritzing, precisei desenhar separadamente.

      Abraço!

      Excluir
  17. olá meu caro! parabéns pelo site. esse módulo detecta gasolina também??

    ResponderExcluir
    Respostas
    1. Oi Jed!

      Obrigado. Eu realmente não testei com gasolina. Segundo informações do fabricante, ele detecta GLP, Metano, Propano, Butano, Hidrogêncio, Álcool, Gás Natural e outros inflamáveis. Talvez o "outros inflamáveis" inclua gasolina, mas eu teria que testar. :)

      Abraço!

      Excluir
  18. Olá!! Posso utilizar apenas a saída digital?

    ResponderExcluir
    Respostas
    1. Oi Rodrigo!

      Pode sim. Quando ele detectar gás, vai acionar a saída digital. A regulagem da sensibilidade você faz pelo potenciômetro.

      Abraço!

      Excluir
  19. Boa tarde! Meus parabéns pelo projeto!
    Gostaria de saber em qual unidade é feita esta medição. Gostaria de exibir a concentração de gás em ppm, é possível?

    Obrigado

    ResponderExcluir
    Respostas
    1. Oi Arthur,

      O sensor apresenta na saída uma variação de tensão correspondente ao gás detectado (entre 300 e 10.000 ppm). Você pode utilizar essa variação de tensão e converter para o valor que você precisa utilizando o comando map: https://www.arduino.cc/en/Reference/Map

      Abraço!

      Excluir
  20. Olá, fiz meu projeto como o seu. Testei para álcool e gás natural. Para gás natural não funciona. Tentei ajustar o potenciometro, mas sem sucesso. O que poderia ser?

    ResponderExcluir
    Respostas
    1. Oi Mauro,

      o sensor de álcool é o MQ-3, e o de gás e o MQ-2, que está descrito neste post. São sensores diferentes, creio q vc tenha o MQ-3.

      Abraço!

      Excluir
  21. Você vende a placa com um sensor MQ-138?

    ResponderExcluir
  22. Caro Vendedor,
    Você vende a placa com um detector MQ-138?
    Grato.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Infelizmente não tenho esse modelo.

      Abraço!

      Excluir
  23. Bom dia,
    Eu ja montei o circuito e inseri o código más por algum motivo o monitor serial(A0) está dando 477 diretamente,o led verde não apaga e o buzzer não para de apitar,qual seria o problema?

    ResponderExcluir
    Respostas
    1. Oi Bruno,

      Você tentou girar o potenciômetro pra ver se ele pára de apitar ? Talvez esteja na sensibilidade máxima.

      Abraço!

      Excluir
  24. Esse sensor ou algum outro pode diferenciar tipos diferentes de gases?

    ResponderExcluir
    Respostas
    1. Boa noite,

      acho que esse link pode te ajudar: http://playground.arduino.cc/Main/MQGasSensors

      Abraço!

      Excluir
  25. Olá, estou desenvolvendo um sistema de detecção de gás. Você poderia me informar como este sensor faz a detecção de cada gás?
    Eu procurei o datasheet dele,mas preciso de mais informações.
    Desde já agradeço.

    ResponderExcluir
    Respostas
    1. Boa noite,

      acho que esse link pode te ajudar: http://playground.arduino.cc/Main/MQGasSensors

      Abraço!

      Excluir
  26. Excelente post. Estou fazendo um trabalho na faculdade e ele funcionou perfeitamente, porém gostaria de utilizar um cooler e controlar a rotação conforme a concentração. Teria como?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Tem sim, não sei qual tipo de cooler vc vai utilizar, mas converta o valor da porta analógica para um valor entre 0 e 100 utilizando o comando map, e depois use esse valor convertido para acionar a saída do cooler.

      Abraço!

      Excluir
  27. Bom dia,
    Gostaria de saber como configurar o sensor para medir diferentes gases. Eu sei que é com o potenciômetro na parte de trás do sensor, mas como sei qual gás estou medindo? Como fazer esse ajuste?
    Agradeço desde já.

    ResponderExcluir
    Respostas
    1. Boa noite,

      O potenciômetro serve apenas para ajustar a sensibilidade do módulo... realmente não sei te dizer se dá pra diferenciar o tipo de gás com esse sensor.

      Abraço!

      Excluir
  28. Boa tarde,

    Gostaria de saber se alguém pode me informar a especificação de distância na sensibilidade máxima do MQ 2? Por exemplo, em uma cozinha ambiente aberto de 20 m² é necessário mais de um sensor ou não?

    ResponderExcluir
  29. Boa tarde,

    Gostaria de saber se alguém sabe a especificação do alcance (em metros ou metros²) do MQ2 configurado na sensibilidade máxima? Por exemplo em uma cozinha de 20 m² é necessário apenas um sensor ou mais de um.

    ResponderExcluir
  30. Boa tarde!
    Como eu faço para liga o modulo relé, diretamente com o sensor MQ2?

    ResponderExcluir
  31. Boa noite,
    Gostaria de saber se esse nivel de sensor que aparece na porta A0 ja da o valor em ppm? Se nao for como se calculo com esse valor apresentado? GRATO.

    ResponderExcluir
  32. Boa tarde. Sabe como faço para converter o valor analogico para ppm?

    ResponderExcluir
  33. Fiz exatamente como está no projeto e não funcionou.

    ResponderExcluir