Esse projeto é um interruptor simples conectado a um relé que irá habilitar ou não o interruptor. Esse relé está conectado a um Arduino que utiliza um sensor de gás MQ2 para detectar se há algum vazamento de gás no ambiente, caso haja, o Arduíno arma o relé que irá desabilitar o interruptor.
Motivação
Tendo em vista que ocorrem muitos casos de acidentes domésticos, aonde há o vazamento de gás e alguém, sem sentir que há um vazamento, acende a lâmpada que pode ocasionar em uma explosão. Assim, esse projeto foi pensado para evitar esse tipo de acidente doméstico.
Materiais
- 1x Arduino Uno
- 1x Módulo Sensor de Gás MQ2
- 1x Módulo Relé 5V
- 1x Push button
- 2x Leds (Podem ser de diferentes cores)
- 3x Resistores 330 ohms
- Jumpers
- Fios elétricos
Ligações
Conexões com o Arduíno:
Conexões com a rede elétrica:
Sempre que estiver trabalhando com eletricidade (principalmente com corrente alternada) utilize materiais de proteção e tome todas as precauções.
Código
//Define pins
#define MQ2 A0
#define BUTTON 2 //Use interruption, so, it needs to be 2
#define PWR 3
#define LED 4
#define RELAY 5
//Define constants
#define AVG 10000.0
#define THRESHOLD 8.0
//Declare varaibles
float sensor_volt;
float sensorValue;
float RS_gas;
float R0;
float ratio;
void setup(){
pinMode(MQ2, INPUT);
pinMode(BUTTON, INPUT);
pinMode(PWR, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(RELAY, OUTPUT);
digitalWrite(PWR, HIGH);
digitalWrite(LED, LOW);
digitalWrite(RELAY, HIGH);
attachInterrupt(0, calibrate, RISING);
calibrate();
}
void loop(){
sensorValue = analogRead(MQ2);
sensor_volt=(float)sensorValue/1024*5.0;
RS_gas = (5.0-sensor_volt)/sensor_volt;
ratio = RS_gas/R0;
if(ratio <= THRESHOLD){
digitalWrite(RELAY, LOW);
}else{
digitalWrite(RELAY, HIGH);
}
delay(500);
}
void calibrate(){
int i;
float RS_air;
digitalWrite(LED, HIGH);
for(i = 0;i < AVG;i++){
sensorValue = sensorValue + analogRead(MQ2);
}
sensorValue = sensorValue/AVG;
sensor_volt = sensorValue/1024*5.0;
RS_air = (5.0-sensor_volt)/sensor_volt;
R0 = RS_air/10.0;
digitalWrite(LED, LOW);
}
Entendendo o funcionamento
No projeto, iremos trabalhar com interrupção e por isso o pino de “dado” do push button precisa ser obrigatoriamente conectado à porta 2 pois é lá aonde está fisicamente a nossa interrupção zero. Esse push button vai servir para chamarmos a função para calibrar o nosso R0 a qualquer momento, dependendo quanto tempo seu sensor de gás tenha passado desligado, talvez você precise “esquentá-lo” um pouco antes de utilizar e assim você pode apertar o botão para calibrar depois. Todas as conexões podem ter seus pinos alterados, desde que você altere em suas respectivas variáveis.
Escolhemos fazer a conexão da lâmpada no normalmente fechado, dessa forma mesmo se o Arduíno se desligar, perder energia ou algo do gênero o relé irá voltar para o seu estado natural e irá permitir a passagem normal pelo interruptor. Caso você queira, você pode trocar esse estado, conectando o fio que vai para o interruptor no normalmente aberto e alterando o comportamento dentro dos IFs nas linhas 45 e 47.
A variável AVG é utilizada para fazer o loop e adquirir uma média em cima da leitura do sensor MQ2, o valor escolhido foi arbitrário, isso é, você pode escolher o valor que melhor lhe agradar. Já na variávels THRESHOLD o valor foi escolhido a partir de uma observação da tabela que se encontra no datasheet do sensor MQ2 (e no link nas referências). Acreditamos que o valor ideal para a detecção e de qualquer gás e desarmar o interruptor por segurança seja entre 7 e 8, mas esse valor pode ser alterado de acordo com suas necessidades e calibração do seu sensor.
OBS: Não nos responsabilizamos por eventuais acidentes que venham a ocorrer. Sempre tome todas as medidas de segurança. O software aqui fornecido pode conter bugs, caso tenha alguma correção por favor, nos envie para que possamos melhorá-lo e compartilhar com mais pessoas.
Desculpem aí pela bagunça na protoboard e por algo errado no vídeo.
Esperamos que tenham gostado desse projeto, qualquer dúvida, crítica ou sugestão é só deixar um comentário.
