Haz una pregunta
  Foros de Electrónica » Temas de Interés » Automatización, Electrónica industrial y de Potencia
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/11/2014 #1


Temporizador redisparable con Arduino UNO
Hola buenos días gente disculpe que los moleste pero necesito su ayuda ( la gente que mas se adentra en este mundo de la programación).
Estoy realizando un pequeño proyecto el cual consta de la siguiente función:

Un sensor de movimiento le manda un pulso al arduino (VCC), este si lo lee como HIGH, arduino activa su temporizador por 1min y manda una señal a un relay Externo para alimentar una carga.( ejemplo de tiempo creo que sera de 10 mins).
Si el sensor de movimiento vuelve a mandar un pulso dentro del tiempo de 1mins, el arduino tiene que recibirlo y volver a contar el tiempo osea 1min. que se reinicie el tiempo sin que corte la señal que le está mandando al relay.

Tantas veces mande señal el sensor, tantas veces se tiene que reiniciar el temporizador a 0 sin cortar la señal.



Pensé lograrlo con la funcion DELAY ( lo mas basico ) pero al mandarle otra señal dentro del rango del tiempo, no hace nada solo continua contando hasta acabar el tiempo señalado.

Se que no es gran cosa pero ya me bloquie.

Estudiante Ing. Electromecánica
MUCHISIMAS GRACIAS DE ANTEMANO.
11/11/2014 #2

Avatar de Scooter

Delay hay que tirarla al de un pozo y no usarla ni nombrarla nunca mas. Es 99,999999% inútil (por no decir 100%) solo le veo utilidad para retardos de unos pocos muy pocos ms
Usa las interrupciones del timer2 y tendrás libertad de hacer lo que quieras mientras esperas, en lugar de matar el sistema.
http://playground.arduino.cc/Main/MsTimer2
10/11/2015 #3


Scooter dijo: Ver Mensaje
Delay hay que tirarla al de un pozo y no usarla ni nombrarla nunca mas. Es 99,999999% inútil (por no decir 100%) solo le veo utilidad para retardos de unos pocos muy pocos ms
Usa las interrupciones del timer2 y tendrás libertad de hacer lo que quieras mientras esperas, en lugar de matar el sistema.
http://playground.arduino.cc/Main/MsTimer2
Aprovechando el tema, tengo una consulta con respecto a esta libreira MsTimer2.
te cuento un poco, yo activo el timer con un boton (inicio), y otro de paro. Pero internamente el arduino lleva su conteo, lo que necesito es que siempre que toque el boton de inicio el conteo este de 0.

Me explico con el codigo:

Código:
#include <MsTimer2.h>
 int r1;
 const char a  = 21;
 const char Sp1  = 22; 

 
void setup() {
  MsTimer2::set(1500,sw);//espera para iniciar
  MsTimer2::start();

  pinMode(Sp1,INPUT);
  pinMode(a,OUTPUT);
}

void sw() 
{
  if(digitalRead(Sp1) == HIGH)
{
  digitalWrite(a,HIGH);
}

else
{
  digitalWrite(a,LOW);  
}

void loop
{
  
}
10/11/2015 #4

Avatar de Scooter

¿Que quieres hacer? No entiendo muy bien tu código.
Así verificas un pulsador cada 1500ms entiendo yo. Pero lo que pase entremedio lo pierdes.
10/11/2015 #5


Scooter dijo: Ver Mensaje
¿Que quieres hacer? No entiendo muy bien tu código.
Así verificas un pulsador cada 1500ms entiendo yo. Pero lo que pase entremedio lo pierdes.
Lo que necesito es que cuando pulse un switch sp1 (ON), envie una señal, y se inicie el temporizador , por ejmplo enciende un led luego de esos 1500 ms , cuando lo apague el temporizador se reinicie el tem. Y cuando vuelva pulsar SP1 el temporizador otra vez inicie desde o para esperar los 1500 ms.
10/11/2015 #6

Avatar de Scooter

Vale. ¿Que precisión quieres?
11/11/2015 #7


Scooter dijo: Ver Mensaje
Vale. ¿Que precisión quieres?
cuando el switch este en ON,inicie el temporizador 15 segundos y cuando lo el switch este en off reinicie el temporizador en espera de otro ON de igual manera iniciar otros 15 segundos hasta ser reseteado colocando switch en off.
11/11/2015 #8

Avatar de Scooter

Si pero...¿Que precisión quieres?
11/11/2015 #9


Scooter dijo: Ver Mensaje
Si pero...¿Que precisión quieres?
explicame que quieres decir con precision, no entiendo que me quieres decir, diria que la respuesta del temporizador sea inmediata segun el ON/OFF.
11/11/2015 #10

Avatar de Scooter

Precisión, no se como definirla sin emplear la misma palabra...
Tolerancia. Tu dices 1500ms ¿Que error es admisible? ¿1ms?...

La palabra "inmediata" es absurda en un sistema muestreado, como pronto tardaría un ciclo de máquina en responder, si va a 16MHz... 1/16000000 s
En uns istema continuo también es absurda, al menos tardará el tiempo de propagación de la puerta o temporizador, que a "ojos de un humano" es instantáneo, pero no lo es.
11/11/2015 #11


Scooter dijo: Ver Mensaje
Precisión, no se como definirla sin emplear la misma palabra...
Tolerancia. Tu dices 1500ms ¿Que error es admisible? ¿1ms?...

La palabra "inmediata" es absurda en un sistema muestreado, como pronto tardaría un ciclo de máquina en responder, si va a 16MHz... 1/16000000 s
En uns istema continuo también es absurda, al menos tardará el tiempo de propagación de la puerta o temporizador, que a "ojos de un humano" es instantáneo, pero no lo es.
Listo una tolerancia de 1ms a 1 segundo no sería problema. Te agradezco la explicación.
Si puedes ayudarme con ese muestreo.
11/11/2015 #12

Avatar de Scooter

De 1ms a 1s son mil veces. A ver si concretas, porque me estoy volviendo loco.

---------- Actualizado después de 21 minutos ----------

Bueno, te doy una orientación...
Yo pondría la interrupción "automática" con un ciclo del valor de tu precisión. Eso cuando sepas cual es. Cuanto mas "impreciso" menos marea la interrupción.
En la rutina de interrupción decrementas un contador. Si ya es cero no hace nada.
En el bucle principal si el conteo es cero activas el pin (o lo desactivas)
Si el pulsador se acciona, reseteas la cuenta al valor deseado y desactivas el pin (o lo activas)
En el resto del tiempo del bucle principal haces lo que creas conveniente de todo lo demás.

Ojo para trabajar con interrupciones las variables se tienen que declarar como volatile

Para acceder a la cuenta desde distintas rutinas tiene que ser variable global o hacelo por punteros como en C

Esto mismo se puede hacer sin interrupción con los tics del sistema pero ojo que cada cierto tiempo desbordan y hay que tenerlo en cuenta para que no haga un ciclo mal hecho.

---------- Actualizado después de 4 minutos ----------

Pseudo código con los tics:

Bucle principal{
si se pulsa el botón{ final=tics+1500: enciende}
si tics>final{ apaga}
}
Los tics ya van ellos solos por interrupciones...
Hay que pensar algo para cuando desborde, ahora no estoy muy despierto...
13/11/2015 #13


Scooter dijo: Ver Mensaje
De 1ms a 1s son mil veces. A ver si concretas, porque me estoy volviendo loco.

---------- Actualizado después de 21 minutos ----------

Bueno, te doy una orientación...
Yo pondría la interrupción "automática" con un ciclo del valor de tu precisión. Eso cuando sepas cual es. Cuanto mas "impreciso" menos marea la interrupción.
En la rutina de interrupción decrementas un contador. Si ya es cero no hace nada.
En el bucle principal si el conteo es cero activas el pin (o lo desactivas)
Si el pulsador se acciona, reseteas la cuenta al valor deseado y desactivas el pin (o lo activas)
En el resto del tiempo del bucle principal haces lo que creas conveniente de todo lo demás.

Ojo para trabajar con interrupciones las variables se tienen que declarar como volatile

Para acceder a la cuenta desde distintas rutinas tiene que ser variable global o hacelo por punteros como en C

Esto mismo se puede hacer sin interrupción con los tics del sistema pero ojo que cada cierto tiempo desbordan y hay que tenerlo en cuenta para que no haga un ciclo mal hecho.

---------- Actualizado después de 4 minutos ----------

Pseudo código con los tics:

Bucle principal{
si se pulsa el botón{ final=tics+1500: enciende}
si tics>final{ apaga}
}
Los tics ya van ellos solos por interrupciones...
Hay que pensar algo para cuando desborde, ahora no estoy muy despierto...
Amigo te soy sincero soy principiante programando arduino, y el pseudocodigo que me muestras no tengo idea como implementarlo.
13/11/2015 #14

Avatar de Scooter

Pues ánimo. Así aprendes.
Intentalo y vas preguntando.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Automatización, Electrónica industrial y de Potencia

En esta categoría se discuten temas relacionados con la automatización, la electrónica industrial y la instrumentación.

Cerrar
Foros de Electrónica » Temas de Interés » Automatización, Electrónica industrial y de Potencia

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.