Bom dia estou com dificuldade nesse codigo

Ele estava sem rele, só estava com lcd e sensor 

coloquei um rele na hora que ativa o sensor ativa o rele para o exaustor.

só que o rele fica direto como faço ele pra desligar depois de um tempo ou na hora que o sensor desligar ele desliga tambem

#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

//pino analógico do sensor
int mq2 = A0;
//pino do buzzer
int buz = 3;
int Rele = 4;

//variaveis
int val = 0;
int val_estavel;
int temp;

void setup()
{
lcd.begin(16, 2);

pinMode(buz,OUTPUT);
pinMode(Rele, OUTPUT);

//delay para estabilizar o valor do sensor
lcd.print("Estabilizando...");
delay(40000);
temp = analogRead(mq2);
val_estavel = temp;

lcd.clear();
lcd.print("Sensor de Gas");
}

void loop() {
val = analogRead(mq2);

lcd.setCursor(0, 1);
lcd.print(val);

//se o valor atual - o temporario for maior que 20(diferencial,pode ser ajustado)
//ou se o valor for mair que o valor de estabilização + 200 (pode ser ajustado)
//apita
if((val-temp)>20 || val > (val_estavel+200)){
tone(buz,1200,5000);
digitalWrite(Rele, HIGH);
}
temp = val;

delay(1000);//intervalo de 1 segundo
}

Exibições: 402

Responder esta

Respostas a este tópico

A programação do Relê é igual ao do led

recomendo que você teste o seu código com um led no lugar do rele se possível.

mas parece que no código abaixo você esqueceu declarar o momento em que o relê vai estar desligado



ex:

if((val-temp)>20 || val > (val_estavel+200)){

digitalWrite(Rele, HIGH);

tone(buz,1200,5000);
delay (1000); // seria o tempo necessário para a dose correta de ração

else

digitalWrite(Rele, LOW);

}

temp = val;

Ou algo mais parecido com isso, de uma verificada ai. Vc também pode declarar o estado do Rele no inicio do código antes do Setup, como LOW, dessa forma ele só ira ser HIGH quando vc declarar as condições.

exemplo:

int RelePin = 9;

int ReleState = LOW;

ai ao invés de declarar 

digitalWrite(Rele, HIGH);

vc declara aonde for necessário;

 digitalWrite(RelePin, ReleState);

Olá Sander, não uses relé normal numa situação com Gás. O movimento da abertura e fecho dos contactos são propícios a ignição, usa por exemplo um SSR.

Um abraço 

Pois é, nem perguntei o tipo de gás que será acionado.

Sander, siga a orientação do Luís, utilize um relê de estado sólido caso o gás seja de material inflamável. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço