Você está na página 1de 3

005-Programa Sensor de Gás

Este programa, identifica a presença de Fumaça e Gases Inflamáveis (Metano,


Etanol, Álcool, Propano, Hidrogênio, etc) através do sensor MQ-2.

Este sensor possui 4 pinos: 1 para 5 volts (VCC), 1 para ground (GND), 1 para
DO (Digital Output) e 1 para AO (Analogic Output). Há um potenciômetro no qual
você pode ajustar a sensibilidade do sensor. Há também dois LED's: um indica o
funcionamento do sensor e o outro a captação do gás.

Análise do circuito
A base do programa é o MQ-2 (sensor de gás) que precisa ser alimentado por uma
voltagem de 5 volts. O sensor possui uma carcaça de proteção, pois aquece uma
substância sensível aos gases inflamáveis e, por isso, evita inflamá-los. A presença de
oxigênio no ar impede que a substância se torne condutível. Com a presença de gases,
reduz a proporção de oxigênio no sensor, permitindo a condução. Isso eleva o pino DO
para HIGH e aumenta o valor de tolerância para AO (de acordo com o potenciômetro
presente nele). Mas, vamos utilizar somente a saída DO.
A fonte desse programa é https://blogmasterwalkershop.com.br/arduino/como-
usar-com-arduino-sensor-detector-de-gas-inflamavel-fumaca-mq-2

Análise do programa
const int pinoLed = 12; //PINO DIGITAL UTILIZADO PELO LED
const int pinoSensor = 3; //PINO DIGITAL UTILIZADO PELO SENSOR

void setup(){
pinMode(pinoSensor, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA
digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO
}

void loop(){
if(digitalRead(pinoSensor) == LOW){
//SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ
digitalWrite(pinoLed, HIGH); //ACENDE O LED
}else{ //SENÃO, FAZ
digitalWrite(pinoLed, LOW); //APAGA O LED
}
}

Variáveis
const int pinoLed = 12; //PINO DIGITAL UTILIZADO PELO LED
const int pinoSensor = 3; //PINO DIGITAL UTILIZADO PELO SENSOR

A variável pinoLed vai receber o número 12 (será o pino usado para o


LED). O pinoSensor receberá o valor 3 (pino usado para o sensor).

SETUP
void setup(){
pinMode(pinoSensor, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA
digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO
}
Neste setup, definimos o pino 3 para o sensor, onde o arduino avaliará
a presença de energia. O pino 12 será usado para fornecer energia ao
LED (OUPUT). O autor desse programa já colocou o pino 12, do LED,
desligado, mas, não havia essa necessidade, por causa das instruções
constantes do LOOP.

LOOP
void loop(){
if(digitalRead(pinoSensor) == LOW){
//SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ
digitalWrite(pinoLed, HIGH); //ACENDE O LED
}else{ //SENÃO, FAZ
digitalWrite(pinoLed, LOW); //APAGA O LED
}
}

O Loop começa testando a presença de energia no pino 3. Aí, apareceu um


problema inesperado. O pino já apresentava energia, ou seja, já era HIGH
sem nada ter acontecido. Pesquisei na página do arduino.cc e descobri
que se o arduino perceber que determinado pino de teste para
digitalRead() não estiver conectado, ele pode adotar ou LOW ou HIGH,
como quiser. Acredito que isso possa ser causado pelo fato de o pino DO
só ser “ligado” quando se detecta gases. Assim, como o arduino sempre
assume HIGH, quando recebe a energia do sensor, ele inverte para LOW.
Ou seja, ele faz tudo ao contrário. Percebi que se, ao invés de se conectar
o pino DO você usar o AO, o programa funciona de acordo. Só um
pequeno atraso para desligar o LED. O arduino que eu usei foi o MEGA.
Não sei se isso ocorre com os outros.
Bom,o loop é só isso: liga o led se há presença de gás ou desliga,
caso contrário (para funcionar, inverti para LOW).
O autor deste programa não sugere usar este programa para fins
profissionais.

Você também pode gostar