Sensor MQ-6 para gás, álcool e fumaça com Arduino

Sensor MQ-6 para gás

Existem diversos sensores específicos para cada tipo de gás e fumaça, mas esse sensor MQ-6 para gás parece ser o mais completo deles. E tive de verdade uma motivação para utilizá-lo. Certo dia eu estava cozinhando e cuidando de minha  filha, então entre as tarefas me desloquei para a cozinha para  ligar uma outra chama e tornei para a sala. Depois de algum tempo, comecei a sentir o cheiro do gás encanado e claro, me assustei bastante porque para chegar a sentir o cheiro do gás em outro ambiente, o vazamento deve estar realmente grande. Isso porque o gás é mais pesado que o ar e ele tende a descer. Já pensou no volume  de gás que  estava no ambiente? E por isso decidi que a cozinha é um ambiente que realmente merece um pouco dos cuidados  de um maker.

Características





Conforme o datasheet, esse sensor detecta gás GLP (Gás Liquefeito de Petróleo – o tradicional gás de cozinha), Propano, Isobutano e GNL (Gás Natural Liquefeito). Se fosse só isso já valheria a pena, mas esse danadinho tem uma baixa sensibilidade também para álcool e fumaça. Não é perfeito para sua cozinha?

Ele possui um trimpot para ajuste da sensibilidade, com concentrações entre 200ppm e 10.000ppm. É um sensor durável e de bastante confiabilidade, com tempo de resposta baixíssimo, o que permite coletar amostragens com maior frequência.

Sua tensão de funcionamento é 5V e sua resistência depende de uma determinada corrente, tendo um consumo de 150mA. Isso significa que sua alimentação não deve advir diretamente do Arduino; utilize uma fonte de celular ou qualquer outra fonte 5V que forneça uma corrente maior que a demandada.

Onde comprar?

Esse sensor você encontra nesse link da UsinaInfo, e pela segurança e confiabilidade, está quase de graça.

Pinout

A ligação com o dispositivo é bastante simples, bastando conectá-lo à fonte de alimentação, tendo o cuidado de colocar GND também  a um GND do Arduino. O pino A0 deve ser conectado a uma saída analógica do Arduino e o pino D0 pode ser utilizado em um pino digital do Arduino para receber eventos. Nesse caso, vamos utilizá-lo conectando-o a um pino de interrupção, de modo que não será necessário coletar amostragens periódicas enquanto não houver eventos, mas lembre-se que primordialmente você deverá ajustar a sensibilidade do dispositivo no trimpot.

Sensor MQ-6 para gás - pinout
Sensor MQ-6 para gás – pinout

A imagem foi um Ctrl+Chups do google images.

Wiring

Infelizmente estou sem Arduino Nano agora. Eu prefiro ele sobre qualquer outro Arduino, principalmente pela base de expansão de GPIO, o que reduz o trabalho do wiring. Se desejar essa experiência (que pretendo retomar em breve), pegue o Arduino Nano e o expansor na UsinaInfo também e aproveite um frete só. Vamos aproveitar e gerar um alarme sonoro utilizando esse buzzer com som de sirene (exemplificado nesse outro artigo).

Sensor MQ-6 para gás - wiring
Sensor MQ-6 para gás – wiring

A parte legal desse wiring é que realmente não precisaremos de nenhum resistor, mas muita atenção! Não faça a alimentação diretamente no Arduino porque o MQ-6 consome 150mA. Simplesmente coloque o 5V da fonte na protoboard ou diretamente no sensor MQ-6 para gás e o GND da fonte junto a um GND do Arduino, ambos conectados à protoboard. Pegue o GND para o sensor MQ-6 da protoboard.

Não é realmente necessário utilizar o pino analógico

Isso porque como se tem uma interrupção disponível, basta fazer um teste inicial vazando gás de propósito para testar o dispositivo e calibrá-lo no trimpot. Em minha humilde opinião, qualquer coisa acima de 0 deveria gerar alarme. No código de exemplo estou fazendo a leitura analógica para exemplificar, mas tudo o que preciso é do pino digital mesmo.

Código

A lógica aplicada é simples:

  • O pino digital é ligado à interrupção no pino 2.
  • Quando ocorrer um evento, o sensor emitirá um sinal então;
  • No loop() do Arduino deixamos um boolean a ser verificado.
  • Implementamos uma ISR para a interrupção, cuja tarefa será modificar o boolean de alarme.
  • Quando o loop reagir ao evento, ele tocará a sirene por 5 segundos e mudará o estado do boolean.
  • Se o evento ocorrer novamente, o processo se repete.

è fundamental que a ISR não fique presa. Sua tarefa é simplesmente disparar um evento e retomar sua rotina, por isso não deve ser implementado código na função de interrupção.

Erros





Coloquei 2 bugs no sketch. Será necessário diminuir o tempo do alarme e refazer o cálculo do ppm. Como estou escrevendo um artigo mais complexo (sobre outro tema), resolvi deixar mesmo só a parte de alarme aqui, mas vou deixar todas as variáveis que serão utilizadas futuramente, quando eu for instalar na minha cozinha.

Caso tenha dúvidas, dê uma olhada no datasheet do MQ6.

 

1 Star2 Stars3 Stars4 Stars5 Stars (43 votes, average: 5,00 out of 5)
Loading...

Pra finalizar, o video, apenas mostrando que realmente está funcionando. Utilizei um isqueiro para fazer o teste, mas não faço ideia qual é o tipo de gás usado.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.