Manual

do

Maker

.

com

Sensor de gás MQ4 com Arduino

Sensor de gás MQ4 com Arduino

Na data de 13 de Outubro de 2011 (quinta-feira), houve um trágico acidente no Rio de Janeiro causado pela explosão de gás butano em cilindros, utilizado em uma lanchonete que funcionava irregularmente no térreo de um edifício. A fatalidade nesse caso se deu pelo descompromisso com a honra, vida e patrimônio alheio; mas isso poderia ter ocorrido em um ambiente regular. E nesse caso, um sensor de gases inflamáveis poderia evitar o pior.

Nesse exemplo utilizaremos o sensor MQ4 (de um modo pouco ortodóxo para exemplificar) controlando um LED como alarme. Isso poderia ser uma sirene ou uma lâmpada (ambos externos ao ambiente, logicamente).

Nesse link está o datasheet, e nesse outro o modo correto de ligá-lo.

Nesse exemplo sua ligação foi feita ligando apenas 3 pinos de um dos lados, sendo da esquerda para direita:

  • ground
  • pino analogico 0
  • 5v

O ideal (e correto) é alimentar externamente, porque o consumo de corrente do sensor é alto para manter a resistência interna aquecida.

Em um teste sobre meu balcão, o valor ficava entre 0 e 20. Apanhei um pouco de gás na cozinha (crianças, não façam isso em casa) em uma sacola de mercado e a apertei sobre o sensor; passou de 100. Então, considerei uma margem até 30 como Ok. Depois na hora de gravar o teste, fui até a cozinha, liguei o sensor sobre o fogão e para minha surpresa, passou dos 200! Devo ter algum vazamento, pois sinto um sutil cheiro de gás. Enfim como nada ainda havia explodido, tive que intensificar o teste, que será visto no video.

O esquema ficou dessa maneira (mais uma vez não tinha o desenho do sensor, então peguei qualquer coisa de 3 pernas para exemplificar - e tome-lhe gambiarra):

gas_sensor.webp

O código é bem simples. Ficou dessa maneira:

int sensorValue; 
int pinLed = 3;

void setup()
{
  Serial.begin(9600);
}

void loop() 
{
  sensorValue = analogRead(0);
  Serial.println(sensorValue, DEC);
  if (sensorValue > 30 && sensorValue < 40){
     analogWrite(pinLed,40);
  }
  else if (sensorValue >40){
     analogWrite(pinLed,255);
  }
  else {
     analogWrite(pinLed,0);
  }
  delay(100);
}

Por fim, um video demonstrando como preparar a casa para uma explosão (e comprovando o funcionamento do sensor - crianças, não façam isso em casa).

E o mais interessante; preparar um sensor com Arduino, placa corroida em casa, sai por menos de R$100,00.

Vou deixar aqui uma proposta; se alguma empresa estiver interessada em patrocinar projetos com Arduino, entre em contato por mail ou deixando um recado aqui. Vocẽ apenas me fornecerá o material e eu montarei o projeto do começo ao fim, depois publico e recomendo a compra do kit com você (e o material do projeto fica pra mim, nada mais).
Aguardo enxurradas de contatos!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.