Go Down

Topic: Arduino necesario reiniciar? (Read 332 times) previous topic - next topic

el_pedriyo

Buenas gente,

Tengo un problema creo que con el millis() de arduino. Resulta que tengo un mega, no oficial, para controlar la subida y bajada de las persianas, simplemente con un rele, y la funcion millis() para activarlo durante el tiempo que tarda en bajar y en subir. El otro dia cuando llegue a casa de un viaje, me di cuenta, que el arduino debia de procesar mas rapido, o en este caso el millis(), por que me reportaba un 0% o 100% de subida cuando en realidad la persiana no habia terminado de subir o bajar, es decir, mas o menos, tenia un desfase de unos 2 o 3 segundos.
No pude hacer mucho testing, por que tampoco tenia mucho codigo para debugear en ese momento flasheado, pero segun el funcionamiento que veia, pude deducir lo que ya he contado.
Claro, que todo este problema se soluciono, cuando reinicie el arduino.

Por eso mi pregunta es: Deberia de reiniciar el arduino cada X dias, para conseguir un rendimiento correcto?

No seria la primera vez que un proceso/dispositivo, recomienda reinicios cada X tiempo, para funcionar optimamente, por eso mismo pregunto.

Un saludo

victorjam

#1
Sep 23, 2019, 02:21 pm Last Edit: Sep 23, 2019, 02:21 pm by victorjam
No es necesario reiniciar Arduino cada X tiempo.

Si es necesario, puede ser debido a dos cosas: un problema hardware que hace que el arduino se quede colgado, o una mala programación.

Posiblemente no hayas tenido en cuenta el desbordamiento de millis cada 49 dias o algo similiar.

surbyte

Quote
Posiblemente no hayas tenido en cuenta el desbordamiento de millis cada 49 dias o algo similiar.
Aun asi las cuentas no deberías fallas si todas las variables involucradas con millis() son del tipo unsigned long.
Si usas otra cosa, entonces ahi esta el problema.

Lo que yo creo que tu timmingo no es preciso o lo es aparentemente pero se corre con los dias, imperceptiblemente, a tal punto que solo en un tiempo importante notaste la falla.

Si tu cicuito no tiene forma de indicarle que estas a 0 o 100%, entonces puedes comenzar algunos miliseg antes o despues y eso se arrastra.

Es una hipótesis.

tauro0221

Hi,
Pregunta que precauciones tomastes para reducir el ruido electrico que se produce cuando usa relays mecanicos. Bueno digo que son mecanicos ya que no describes que componentes usas en to systema.

el_pedriyo

Buenas,

Aun asi las cuentas no deberías fallas si todas las variables involucradas con millis() son del tipo unsigned long.
Si usas otra cosa, entonces ahi esta el problema.
La verdad, es que uso float, asi que si me decis que ese es el problema, cambio ya mismo todo a unsigned long.

Lo que yo creo que tu timmingo no es preciso o lo es aparentemente pero se corre con los dias, imperceptiblemente, a tal punto que solo en un tiempo importante notaste la falla.

Si tu cicuito no tiene forma de indicarle que estas a 0 o 100%, entonces puedes comenzar algunos miliseg antes o despues y eso se arrastra.
Es una hipótesis.
Si, esos errores de arrastrar segundos para adelante y para atras, lo tuve en cuenta, pero al menos que especifique un % entre el 0 y 100, la persiana se autocalibra, es decir, los reles estan mas del tiempo necesario para que suba o baje del todo activados. Asi que, eso son 1 subida o bajada completa se deberia de arreglar. Cosa que no pasaba el otro dia.

Hi,
Pregunta que precauciones tomastes para reducir el ruido electrico que se produce cuando usa relays mecanicos. Bueno digo que son mecanicos ya que no describes que componentes usas en to systema.
Buenas, en principio use de estado solido, como me recomendasteis en otro post, creo recordar. De todas formas, seguramente el arduino no este 100% aislado de ruido electrico, ya que tengo cables de 220v en alterna cerca.

victorjam

Quote
La verdad, es que uso float, asi que si me decis que ese es el problema, cambio ya mismo todo a unsigned long.
Me he quedado en lapsus cuando lo he leido... estas tardando!!!

surbyte

#6
Sep 24, 2019, 02:32 am Last Edit: Sep 24, 2019, 03:09 am by surbyte
En Documentación => indice de temas tutoriales => millis() dime si ves un float!!

El foro esta lleno de esta ultima referencia a todo aquel que viene con un delay y le decimos usa millis() y ve a este lugar.
Asi que ... usar float, y te ha funcionado parcialmente... increíble.

EDITO: siempre que leo mis comentarios debo aclarar que no tienen por intención mofarse de nadie. Es solo que sorprende que se diga tantas veces y se deba repetir tantas mas.
No es personal, solo resulta mas una reflexión de mi parte.

el_pedriyo

Madre mia, ya mismo lo cambio jajaja

Esperemos que con esto se solucione :D

Gracias!!

surbyte


Go Up