Font Size

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

Ligações

Conexões com o Arduíno:

Interruptor-com-Sensor-de-Gas

 

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.

Interruptor-com-Sensor-de-Gas

 

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.

Referências

0.00 avg. rating (0% score) - 0 votes