Boa noite, estou com uma dúvida quanto ao funcionamento do sensor de presença e movimento PIR.
Montei um circuito que utiliza um sensor de luminosidade, o PIR e um relé de modo que, verificando determinadas condições, o relé acende uma lâmpada de 70W.
O sensor PIR possui um tempo de delay que pode ser ajustado diretamente no dispositivo. Após a detecção de presença, o relé acende a lâmpada durante o tempo de delay selecionado no PIR, mas após esse período, o relé apaga a lâmpada durante o mesmo tempo de delay, e só acende após esse tempo.
Gostaria de saber se há alguma forma de fazer com que o sensor PIR verifique a presença ou não sem que o relé apague a lâmpada durante o tempo de delay.
Já tentei colocar um delay diretamente no código e também fiz tentativas com estruturas de repetição, mas o mais próximo do ideal que consegui foi com que a lâmpada piscasse ao final do tempo de delay, mas quero que ela se mantenha acesa enquanto o PIR verifica.
Grato, Pedro.
Tags:
Não entendi ? Esta usando Arduino? qual sensor PIR ?
Mostre-nos o diagrama das ligações e o programa.
O código que estou utilizando é o seguinte:
const int LDR=0;
int pinorele=4;
int ValorLido=0;
int pinopir=2;
int acionamento;
void setup(){
pinMode(pinorele,OUTPUT);
pinMode(pinopir,INPUT);
}
void loop(){
ValorLido=analogRead(LDR);
acionamento = digitalRead(pinopir);
if(acionamento==LOW){
digitalWrite(pinorele,LOW);
}
else{
if(ValorLido<60){
digitalWrite(pinorele,HIGH);
}
else{
digitalWrite(pinorele,LOW);
}
}
}
O sensor é o PIR DYP-ME003.
Segue também a foto do circuito.
Você também esta usando um sensor LDR , OK ?
Não dá para ver na foto.
Sensor PIR = DYP-ME003
http://elecfreaks.com/store/download/datasheet/sensor/DYP-ME003/Spe...
https://learn.adafruit.com/pir-passive-infrared-proximity-motion-se...
Tem dois potênciometros - um para ajustar a sensibilidade ( distância de 3 a 7 metros) e outro para ajustar o tempo ( 5 a 200 segundos).
Viu que ele tem um jumper ? Dois modos de disparo, selecionáveis por jumper.
https://learn.adafruit.com/pir-passive-infrared-proximity-motion-se...
Quando o jumper esta na posição para baixo ( vendo no lado dos componentes, com os potênciometrtos para cima ) O led fica piscando a cada segundo , quando alguém passa na frente.
Quando o jumper esta na posição para cima H - o led dispara e mantem-se aceso enquanto alguém estiver na frente em movimento.
coloque o código que você esta usando no momento
O código que estou utilizando é o seguinte:
const int LDR=0;
int pinorele=4;
int ValorLido=0;
int pinopir=2;
int acionamento;
void setup(){
pinMode(pinorele,OUTPUT);
pinMode(pinopir,INPUT);
}
void loop(){
ValorLido=analogRead(LDR);
acionamento = digitalRead(pinopir);
if(acionamento==LOW){
digitalWrite(pinorele,LOW);
}
else{
if(ValorLido<60){
digitalWrite(pinorele,HIGH);
}
else{
digitalWrite(pinorele,LOW);
}
}
}
deixa eu ver se entendi. Você quer que o relé fique ligado por um tempo determinado por você. mesmo se o pir detecto presença ou não você quer que o relé fique ligado por um tempo X?
bom eu fiz da seguinte maneira não sei se é isso que era pra fazer e nem sei se vai funcionar.
Eu entendi que "ValorLido<60" seria escuro. logo o sensor de presença iria entrar em ação caso fosse de dia o relé não iria ser ligado nunca.
tmbm colokei um tempo de dez segundos para o rele ser desligado mas caso aja presença este tempo e renovado.
const int LDR=0;
int pinorele=4;
int ValorLido=0;
int pinopir=2;
int acionamento;
unsigned long comparativo = 0;
unsigned long intervalo = 10L * 1000L;//10 segundos rele ligado
void setup(){
pinMode(pinorele,OUTPUT);
pinMode(pinopir,INPUT);
digitalWrite(pinorele,LOW);
}
void loop(){
unsigned long tempo = millis();
ValorLido=analogRead(LDR);
acionamento = digitalRead(pinopir);
if(ValorLido<60){
if(acionamento==HIGH){digitalWrite(pinorele,HIGH);comparativo=tempo; }
}
if (tempo - comparativo > intervalo){
digitalWrite(pinorele,LOW);}
}
Oi Napster,
Certo, vou testar e mando uma resposta.
Basicamente, quero que o relé não apague a lâmpada enquanto o PIR verifica presença após o tempo estipulado. Ou seja, quero que o PIR verifique presença sem precisar apagar a lâmpada.
if(acionamento==LOW){
digitalWrite(pinorele,LOW);
}
else{
if(ValorLido<60){
digitalWrite(pinorele,HIGH);
}
else{
digitalWrite(pinorele,LOW);
}
http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-a-min...
http://www.arduinoecia.com.br/2013/09/controle-de-luz-utilizando-ld...
Observação - o sensor LDR diminui a resistência quando existe luz.
Portanto se o Valor Lido <60 - existe luz externa e o relé não deve ser acionado.
Acho que isso esta invertido , não ?
Onde colocou o timeout ? envie-nos o programa.
no meu caso esta invertido sim. acho que e so mudar o sentido ">". o que eu tentei fazer e o seguinte: caso o sensor verifique a luz logo o rele nunca vai acender pois esta de dia. mas caso esteja escuro ai ele vai verificar se a presença pelo PIR, se ouver liga o relé por 10 segundos, caso persista ele renova estes 10 segundos, caso não aja mais presença ele desliga
Teste o sensor LDR , imprimindo o valor recebido e apagando e acendendo a luz .
Já fiz inúmeros testes e meu sensor LDR interpreta como escuro abaixo do valor estipulado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por