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.

Exibições: 2008

Responder esta

Respostas a este tópico

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.

Anexos

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço