TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: erpindi en 14 de Julio de 2008, 08:36:11

Título: invernadero
Publicado por: erpindi en 14 de Julio de 2008, 08:36:11
buenas amigos, soy nuevo en esto y estoy tratando de hacer algo facilote con el 16f84
se trata de un invernadero con ventilacion e iluminacion automaticas (solo eso, por eso digo que se ve simple)
mi problema viene cuando quiero temporizar grandes tiempos (6h-12h) y no tengo idea de como hacerlo, ya que lo que he hecho hasta ahora, los tiempos eran segundos.
si alguien tuviera un programita simple con temporizaciones grandes le agradeceria mucho una ayudita (si es el programa en si mejor jejje)
gracias a todos :)
Título: Re: invernadero
Publicado por: firepic en 14 de Julio de 2008, 10:34:12
Saludos erpindi, bienvenido al foro!
No especificas en qué lenguaje estás trabajando.
Pero lo más lógico para temporizaciones es usar el propio temporizador del micro, el PIC16F84 trae el TMR0.
Con un oscilador externo de 4MHz y si lo configuras con pre-escala de 1:256 podrías contar 65,5ms.
Para contar un tiempo largo, podrías habilitar la interrupción por tmr0, y en la rutina de interrupción, incrementar una variable de 32bits, o int32.
Eso te permitiría contar más de un año!  :shock:  :D
Lo que tienes que hacer es evaluar la variable que estás incrementando.
Si por ejemplo, quieres contar 12horas, la variable tendría que contar hasta 659.180.
Entonces sería así:

- Configuras tmr0 y habilitas interrupción.
- En la rutina de interrupción: evaluas la variable para saber si llegó a 659.180, luego la incrementas.
                                                si llega a 659.180, colocas a 1 una bandera.
                                                vuelves a cargar el tmr0 con 0 y habilitas la interrupción (si es necesario).
- En el lazo infinito principal del programa: evaluas la bandera, si está en 0, no hace nada, si está en 1 va a la rutina de lo que hay que hacer...

Bueno esto es a groso modo, porque no sé con qué lenguaje estás programando, así que no puedo darte un ejemplo.
Espero que esto te sirva para guiarte un poco.
Revisa el datasheet para que sepas cómo configurar correctamente el tmr0.
Un cordial saludo, nos leemos!  :mrgreen:

 
Título: Re: invernadero
Publicado por: MGLSOFT en 15 de Julio de 2008, 22:48:43
Yo creo en este caso que seria mejor que uses un reloj en tiempo real (RTC) como el DS1307, y dediques el micro a hacer control en base al cumplimiento de horarios.... :mrgreen:
Título: Re: invernadero
Publicado por: firepic en 15 de Julio de 2008, 23:21:46
Excelente!  :-/
Erpindi, olvida mi comentario...  :? :D
Saludos, nos leemos!  :mrgreen: