Go Down

Topic: Hc-sr501 PIR salta solo justo a las 2 horas (Read 298 times) previous topic - next topic

Jeronimo17

Oct 09, 2019, 07:34 pm Last Edit: Oct 11, 2019, 01:17 am by Jeronimo17
Hola,

Queria informar de que el Hc-sr501 PIR dispara a las 2 horas solo.

He estado buscando en la red y solo he encontrado aquí https://forum.arduino.cc/index.php?topic=553289.msg3788713#msg3788713 que dicen que a las 2 horas le salta la alarma.

Estaba haciendo un log de alarma y justo a las 2 horas me registra (Muchos positivos son reales los que coinciden en min no)

Code: [Select]
08-10-2019 (15:20:40) 
08-10-2019 (18:12:18) 
08-10-2019 (19:12:02) 
08-10-2019 (19:23:13) 
08-10-2019 (19:28:55) 



08-10-2019 (20:12:20) 
08-10-2019 (22:12:20) 
09-10-2019 (00:12:22) 
09-10-2019 (02:12:25) 
09-10-2019 (04:12:27) 
09-10-2019 (06:12:27) 




...He reiniciado de por medio...

09-10-2019 (06:40:26)
09-10-2019 (08:12:31) 
09-10-2019 (10:12:32) 
09-10-2019 (11:58:49) 
09-10-2019 (12:35:44) 
09-10-2019 (13:20:02) 
09-10-2019 (13:57:03) 
09-10-2019 (14:13:20) 
09-10-2019 (15:06:48) 
09-10-2019 (15:34:46)

09-10-2019 (15:54:17) 
09-10-2019 (17:54:20)

surbyte

#1
Oct 10, 2019, 09:30 pm Last Edit: Oct 10, 2019, 10:41 pm by surbyte
Mira como edité tu post corrigiendo el enlace que pusiste como texto plano y le agregué la etiqueta que corresonde. Recuérdalo para la próxima.

Imposible sugerir que esta pasando si no colocas el código que estas usando.
Tiene que haber una falla en el.

Jeronimo17

#2
Oct 11, 2019, 01:16 am Last Edit: Oct 11, 2019, 01:08 pm by Jeronimo17
No es del código pero aquí esta:

Code: [Select]


String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete
int caso = 0;

void setup() {
  pinMode(2, INPUT);
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  delay(10000);
  Serial.println ("AT");
  
}

void loop() {

    if (digitalRead(2) == 1 and caso == 0) {
      digitalWrite(LED_BUILTIN, HIGH);
      caso = 2;
      Post();
    }
  
  // print the string when a newline arrives:
  if (stringComplete) {


    if ((inputString.indexOf("OK") != -1 or inputString.indexOf("NO CARRIER") != -1 or inputString.indexOf("DOWNLOAD") != -1) and (caso != 14) and (caso != 0)) {
      delay(1000);
      caso++;
      Post();
    }

    if (inputString.indexOf("+HTTPACTION:") != -1 and caso == 14) {
      digitalWrite(LED_BUILTIN, LOW);
      caso++;
      Post();
    }

   if (inputString.indexOf("ERROR") != -1 ) {
      delay(1000);
      caso=7;
      Post();
    }


    
    inputString = "";
    stringComplete = false;
  }
}


void Post() {
  switch (caso) {
    case 1:
    Serial.println ("AT");
    break;
    case 2:
    Serial.println ("AT+CREG?");
    break;
    case 3:
    Serial.println ("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
    break;
    case 4:
    Serial.println ("AT+SAPBR=3,1,\"APN\",\"tel.hitsmobile.es\"");
    break;
    case 5:
    Serial.println ("AT+SAPBR=2,1");
    break;
    case 6:
    Serial.println ("AT+SAPBR=1,1");
    break;
    case 7:
    Serial.println ("AT+HTTPINIT");
    delay(3000);
    break;
    case 8:
    Serial.println ("AT+HTTPPARA=\"CID\",1");
    break;
    case 9:
    Serial.println ("AT+HTTPPARA=\"URL\",\"...\"");
    break;
    case 10:
    Serial.println ("AT+HTTPPARA=\"CONTENT\",\"application/x-www-form-urlencoded\"");
    break;
    case 11:
    Serial.println ("AT+HTTPDATA=10,20000");
    break;
    case 12:
    Serial.println ("datos=Hits");
    break;
    case 13:
    Serial.println ("AT+HTTPSSL=1");
    break;
    case 14:
    Serial.println ("AT+HTTPACTION=1");
    break;
    case 15:
    Serial.println ("AT+HTTPREAD");
    break;
    case 16:
    Serial.println ("AT+HTTPTERM");
    break;
    case 17:
    Serial.println ("AT+SAPBR=0,1");
    delay(300000);
    caso=0;
    
  }
  
  

}


/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}





También lo he probado con otro Arduino y este código:

Code: [Select]
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include "RTClib.h"
#include <Wire.h>
#include <EEPROM.h>

long A = 0;
int eeAddress = 0;
bool Inte = false;

RTC_DS3231 rtc;

void setup () {
  Wire.begin();
  Serial.begin(9600);
  delay(30000);
  pinMode(2,INPUT);

}

void loop () {

  if (digitalRead(2) == HIGH and Inte == false) {
  DateTime now = rtc.now();
  delay(500);
  A=now.unixtime();
 
  EEPROM.put(eeAddress, A);
  //EEPROM.get(eeAddress,A);
  eeAddress += sizeof(long);
  Serial.println(A);
  Inte = true;
  }
  if (digitalRead(2) == LOW and Inte == true) Inte = false;
}



Code: [Select]
946728166 sáb ene  1 12:02:46 UTC 2000

946728174 sáb ene  1 12:02:54 UTC 2000

946728184 sáb ene  1 12:03:04 UTC 2000

946692566 sáb ene  1 02:09:26 UTC 2000

946692574 sáb ene  1 02:09:34 UTC 2000

946692581 sáb ene  1 02:09:41 UTC 2000

946709409 sáb ene  1 06:50:09 UTC 2000

946716563 sáb ene  1 08:49:23 UTC 2000

946716573 sáb ene  1 08:49:33 UTC 2000

946728028 sáb ene  1 12:00:28 UTC 2000


No estaba en hora el reloj, pero ocurre lo de las 2 horas, ahora lo tengo puesto en hora y activo en una habitación que no entra nadie, este modulo no es valido para alarma.

Por cierto los potenciómetros los tengo sensibilidad min y tiempo mínimo acorde a la foto adjunta, desbordara algún contador interno o algo a las 2 horas, en esa habitación tengo un router espero que no interfiera, ya probare en otro sitio




Edito: Esta noche no me lo ha hecho, ¿Alguien más ha experimentado en profundidad este modulo?

Mikms

#3
Oct 12, 2019, 11:05 am Last Edit: Oct 12, 2019, 11:06 am by Mikms
Yo te puedo confirmar que lo que dices es así, pues a mi me hace exactamente eso mismo y yo lo estuve achacando, despues de probar haciendo distintos circuitos a problemas de interferencias y cosas asi. ya que todo lo tenia que situar cerca de un sistema de llamada mediante red movil, pero ahora que a ti te pasa exactamente lo mismo que a mi entonces ya está claro que son los sensores, o al menos algunos, aunque yo probé con 3 y todos terminaron haciendo lo mismo antes o despues (falsos cada 2 horas cuando le da la gana, pero como le dé no para de hacerlo)

surbyte

#4
Oct 12, 2019, 03:39 pm Last Edit: Oct 13, 2019, 01:26 am by surbyte
Y como es posible que lo hagan a las dos horas exactas. Es algo dificil de creer y no es que no acepte lo que afirman. Pero imaginen que el PIR no tiene nada absolutamente nada con un RTC y resulta que el lproblema es exacto a las 2 horas? Rarísimo.

A ver si a alguien se le ocurre algo.
Obviamente no tiene que ver con la temporización del PIR. Eso es un RC con un Operacional asi que descartemos.
Todo lo que se me ocurre, hace muy poco probable la exactitud que relatan para que se presente una falla.
Supongamos que fuera una fuga de un capacitor. Que se manifieste con dicha exactitud es algo que no puedo aceptar tampoco.
Pero bueno, no es el código, no es el arduino, y solo ocurre con el PIR. tiene que ser el PIR.

Hay que indagar a ver si ha pasado en el foro en inglés, supongo que si.

EDITO: no abriré otro post asi que consulten este post de tanto en tanto.
Esta es la primer conclusión. Es un regular o mal sensor.

Lean esto https://www.letscontrolit.com/forum/viewtopic.php?t=671
Incontables reportes de muchos falsos positivos, de todo tipo, rápidos, lentos.
Reportes de fallos repetidos a intervalor fijos menores a los aquí comentados pero... muy estables.

Dos razones para las fallas, cito:

Quote
I noticed 2 sources of evil of the false positives.
1: Power supply interference, I tried 5 different usb adapters ranging from 500mA to 2A. I run now stable on a 500mA USB power from Ebay.
2: Rf interference. Wifi is 2,4 Ghz ( in my case) RF. I tried two different HC-SR501 and both were triggerd bij RF.
1. Interferencia de fuente de alimentación.
2. Interferencia RF. WIFI.

Soluciones:

Quote
I solved this with the next solutions:
A: Used a 47uF and 102pF power decompling consensator soldered over the pir power connections at the ESP8266 side.
B: Put the ESP in 802.11G mode instead of 802.11N mode. I think the Rf spectrum will be less in G mode.
C: Put the ESP in wifi STA mode only.
D: Lower the ESP wifi output power to 10dBm.

tauro0221

Hi,
Aqui puedes hacer una prueba sencilla. Que te va decir si el problema es el sensor.Haz un sketch que solamente lea el sensor con un pequeno delay y mira a ver que pasa. Segundo puede ser algo exterior que esta sucediendo y tu no te das cuenta. Algunas veces dicen  que le tienes que anadir un filtro al la capsula blanca para eliminar ruidos de luz. El sensor es sencitivo al calor y esto puede hacer que el sensor se active. Cuando yo tengo un problema con un sensor lo primero que yo hago es eliminar todo y hago un sketch que solamente leea el sensor. Asi elimino si el problema es el sensor. Una prueba simple que la mayoria no usa.

Jeronimo17

#6
Oct 13, 2019, 02:19 pm Last Edit: Oct 13, 2019, 02:21 pm by Jeronimo17
Y como es posible que lo hagan a las dos horas exactas. Es algo dificil de creer y no es que no acepte lo que afirman. Pero imaginen que el PIR no tiene nada absolutamente nada con un RTC y resulta que el lproblema es exacto a las 2 horas? Rarísimo.
Así me tiene de loco, que es exactamente a las 2 horas.

Esta noche igual en otra habitación con otra fuente:

Code: [Select]
12-10-2019 (20:31:09)
12-10-2019 (22:31:10)
13-10-2019 (00:31:12)
13-10-2019 (02:31:13)
13-10-2019 (04:17:12) ESTE ES REAL


Estoy usando un SIM800L para enviar los datos a esa hora llegué, me iba a acostar, quite el sensor sin desconectar nada y puse la entrada puenteada a GND... no hay mas datos registrados

Mirando el integrado BISS0001 lo de STATUS CONTROL podría tener algo que ver, pero sigo sin entender por que justo a los 120 min, las pruebas son con fuentes conmutada y tendrán conmutaciones diferentes, si fueran de transformador de 50 hz seria más lógico



Hi,
Aqui puedes hacer una prueba sencilla. Que te va decir si el problema es el sensor.Haz un sketch que solamente lea el sensor con un pequeno delay y mira a ver que pasa. Segundo puede ser algo exterior que esta sucediendo y tu no te das cuenta. Algunas veces dicen  que le tienes que anadir un filtro al la capsula blanca para eliminar ruidos de luz. El sensor es sencitivo al calor y esto puede hacer que el sensor se active. Cuando yo tengo un problema con un sensor lo primero que yo hago es eliminar todo y hago un sketch que solamente leea el sensor. Asi elimino si el problema es el sensor. Una prueba simple que la mayoria no usa.
También lo dije arriba, y tengo puesto el código, probé en otro arduino otra fuente y otro código sencillo que grabara la fecha en tiempo unix en la EEPROM cuando detectara algo

Code: [Select]
946728166 sáb ene  1 12:02:46 UTC 2000
946728174 sáb ene  1 12:02:54 UTC 2000
946728184 sáb ene  1 12:03:04 UTC 2000
946692566 sáb ene  1 02:09:26 UTC 2000
946692574 sáb ene  1 02:09:34 UTC 2000
946692581 sáb ene  1 02:09:41 UTC 2000
946709409 sáb ene  1 06:50:09 UTC 2000
946716563 sáb ene  1 08:49:23 UTC 2000
946716573 sáb ene  1 08:49:33 UTC 2000
946728028 sáb ene  1 12:00:28 UTC 2000


Esos son datos de esa grabación, tenia un RTC conectado pero no en hora... y lo hace también pero más rara vez aquí solo me lo ha hecho 1 vez


También tengo 2 RCWL-0516 (microondas) y los he probado algo y parece que no lo hacen, pero este detecta a través de la puerta y todo es muy sensible

Ahora leo los post en ingles, gracias

tauro0221

Hi,
Para probar cubre el sensor con algo que sea negro y no deje pasar luz o deje pasar algo que emita calor. Mira ver si la alarma se activa. Yo uso ese sensor igual  y tuve que cubrirlo con material en forma de cono  pues era muy sesnsitivo en el area que estaba localizado.

Jeronimo17

@tauro0221, el problema no es de saltos aleatorios, es de que es increíblemente preciso los falsos positivo en el tiempo, estoy probando con un condensador de 330 nf entre patilla 12 y 13 del BISS0001

Mikms

yo lo tapé, lo metí en un cajon, lo separé del circuito, lo meti en una caja (cambiando de enchufe con el que lo alimentaba todo), cambié de circuito, de sketch... me faltó solo rezarle, pero unas veces antes y otras despues (cuando ya lo daba incluso por solucionado) terminaba saltando y ya a partir de ahi automaticamente cada dos horas.

surbyte

Yo les digo que haría yo. Demasiado tiempo para algo barato que puede ser reemplazado por un PIR mejor o bien otro sensor que cumpla la función, radar por ejemplo.
En lo personal cuando algo me lleva mucho tiempo para resolverlo lo descarto y busco algo de marca (sensor comercial por ejemplo) u otro tipo de sensor con otro principio que me asegure resultados.


Jeronimo17

#11
Oct 13, 2019, 11:41 pm Last Edit: Oct 13, 2019, 11:43 pm by Jeronimo17
A mi me gusta encontrar la solución a lo barato, si es posible así puedo conseguir más y arreglarlo.

Por ahora lo del condensador funciona, 330 nF entre la pata 12 a 13 del integrado, y ningún falso positivo por ahora, ya lleva varias horas.



También me da curiosidad por que se activaba a las 2 horas, ¿tendrá que ver con el oscilador del arduino de 16 mhz?

tauro0221

Hi,
Yo tengo ese mismo sensor en el atico con una temperatura de 110 grados y un arduino UNO  y lleva como dos meses si problema. Te voy a sugerir si no lo haz hecho de que le anadas un condesador de .1uf entre los pines del VCC y ground. Conectalo lo mas cerca posible de los pines. El mio yo le removi la cupula blanca y se lo solder directamente a los pine. Creo que ya tu le anadiste un electrolitico. Si esto no te trabaja aqui lo que puede pasar es que hay un equipo de alta frecuencia y esta influyendo en los op amps. Que distancia tiene el sensor del arduino. Se esto no resuelve el problema haz consultado con un santero.

surbyte

Bueno, te lo decía en el supuesto que la idea propuesta en el post#4 fallara.

Si funciona mejor, entonces tal vez di en el clavo!!

Pero cuando tengas un problema busca siempre en ingles. Las cosas no nos pasan a nosotros por primera vez, siempre alguien en el mundo tuvo el problema y seguramente lo ha documentado.


Jeronimo17

Bueno, te lo decía en el supuesto que la idea propuesta en el post#4 fallara.
Para aclarar no es el condensador que dices en el post#4 en la alimentación, es un condensador entre las patas 12,13 que no es alimentación. Ningún falso positivo desde ayer, parece solucionado

No se si bajara algo la sensibilidad ni por que saltaba antes a las 2 horas

¡Saludos!

Go Up