Autor Tema: Temporizador ciclico  (Leído 8796 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Temporizador ciclico
« en: 03 de Marzo de 2009, 17:07:15 »
Hola, soy un aspirante a Ingeniero tecnico industrial electronico....y para un proyecto casero que tengo en mente me gustaria que me pudierais recomendar como hacer lo siguiente:

- Necesito hacer un temporizador que active un rele o salida de 12V durante 6 horas, al finalizar esas 6 horas que este 10sg en descanso(sin activar el rele o la salida de 12V) y otra vez 6horas activando el rele o la salida de 12V y asi ciclicamente. Lo de poder configurar el tiempo de temporizacion manualmente ya lo dejo fuera del proyecto porque creo que al final se va a complicar mucho la cosa.


Me gustaria hacerlo con un PIC, ya que seguramente con C.I combinacionales y secuenciales me quedara un circuito bastante grande, que PIC me recomendais para utilizar¿?
Que lenguage de programacion me recomendais, asembler, C, etc...?¿ Como empezariais el programa para configurar dicho pic y que componentes externos creeis que me seran necesarios para conectarle al PIC¿?



Saludos y muchas gracias! :-)

PD: He empezado a leer un libro que cogi prestado en mi facultad sobre el microcontrolador P16F84A donde explica de forma tecnica cual es su funcionamiento y su estructura interior, por lo que a dia de hoy no tengo casi nociones de Microcontroladores, solo de C.I combinacionales y Secuenciales.
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Temporizador ciclico
« Respuesta #1 en: 03 de Marzo de 2009, 19:29:16 »
Saludos! Para lo que pretendes cualquier pic de la serie 16F te puede servir, incluso de la serie 12F.

Uno de los aspectos a tener en cuenta es si pretendes una gran exactitud o solo algo aproximado, si es solo aproximado basta con hacer una unidad de tiempos con el timer0/timer1 del pic y despues ir contando cada vez que el timer se deborda. Para un control de tiempo aproximado puedes usar un rtc, un intengrado que sirve de reloj, que tiene una gran precision frente al pic, y despues comunicarlos por el protocolo i2c. Una variante de la primera opcion, usar solo el pic, seria poner un segundo cristal de 32768 conectado al timer, asi te genera un desbordamiento con cada segundo y se mejora la precision.
Saludos desde Córdoba, españa

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Re: Temporizador ciclico
« Respuesta #2 en: 03 de Marzo de 2009, 23:11:38 »
Hola, primero de todo gracias por contestar, por otro lado me he quedado "patidifuso" al leer la respuesta jejejejej, ya que no he entendido ni la mitad de la copla solo he entendido o eso creo que el Pic tiene un clock interno que se le puede hacer contar al bloque TMR0 y que existe la posibilidad de conectarle exteriormente un RTC(real time clock), apartir de hay ya he perdido el entendimiento jejejejej.

La verdad es que no me va de 10 minutos el tiempo en que este activo el rele o la salida de 12V, lo que no puedo permitirme es que este mas de 10sg parado, ya que entonces empezaria a tener un desfase acumulativo del estado"parado" bastante grande.

Por lo que veo me debo decantar por algun pic de la familia 12F o 16F, por lo que elegire el pic16F84A o 16F88 ya que no cuestan muxo (3,5€ y 4€ respectivamente) y son faciles de encontrar.
Ahora bien, encuentro mi primer problema, no se programar, salvo en delphi pascal y por lo que voy viendo y leyendo para programar un PIC debe ser en asembler(asm) o C, cual me recomendais para que me meta de lleno en el para "aprender" a programar  microcontroladores?¿


Saludos!
PD: He leido que hay un programa de programacion visual, NIPLE creo que se llama, me lo recomendais sin saber programar?¿
« Última modificación: 03 de Marzo de 2009, 23:17:39 por LoPages »
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Temporizador ciclico
« Respuesta #3 en: 03 de Marzo de 2009, 23:59:23 »
Despues te comentaba otra posibilidad,la de conectar un segundo cristal/oscilador externo al pic para el timer, por ejemplo te genera una interrpcion cada segundo, despues es cuestion de contar segundos, minutos, horas...

En lugar del 16f84, que es un micro obsoleto y poco funcional, o del 16f88, con conversor analogico-digital, puedes usar el 16f28 o 16f648 como mejores opciones, la diferencia entre estos dos estriba en la memoria, aunque para tus necesidas con el 16f628 vas sobrado.En estos micros puedes usar el rtc, o el metodo de un segundo cristal para la generacion de interrupcion cada segundo.

Si las necesidades de exactitud son menosres, puedes usar un micro de la serie 12F.

Para programar yo te recomiendo C, mas rapido para crear aplicaciones, y al ser sencillas no es necesaria una gran optimizacion de la memoria disponible.De Niple no te puedo decir nada sobre su optimizacion, pero date cuenta que a mayor abstraccion menos optimizacion.
Saludos desde Córdoba, españa

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Re: Temporizador ciclico
« Respuesta #4 en: 04 de Marzo de 2009, 10:05:06 »
Empiezo a entender el tema, muchas gracias por no darte por vencido al intentar hacermelo entender jejejeje :-/

Sobre los dos modelos de PIC que me has dicho....PIC16F28 y el PIC16F648 no lo encuentro por las tiendas electronicas de mi ciudad....solo encuentro un tal PIC16F628, es ese el que decias¿?

Para empezar a programar hare el metodo"copia algo parecido y despues mira si funciona, si funciona mira como funciona" jejejejeje, bueno visto lo visto empezare a fabricarme un programador: PICKIT2 clon o GTP-USB-PLUS.



Saludos!! :g)
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Temporizador ciclico
« Respuesta #5 en: 04 de Marzo de 2009, 11:18:08 »
Si, el compi ha tenido un error tipográfico. Es  16f628.

Mira, te paso un link de un programa que he hecho en asm (assembler) y que es una base de tiempos para cualquier pic.

http://www.todopic.com.ar/foros/index.php?topic=24381.0

Es una base de tiempos muy exacta de 1 segundo. Si  incrementas un contador por cada segundo entonces al llegar a 60 sabes que tienes un minuto, cuando a pasado el minutos incrementas un segundo contador y al pasar 60 sabrás que ha pasado una hora, un tercer contador te serviría para acumular horas.

De todo esto se encarga el TMR0, así que el pic puede ir haciendo otras cosas mientras va incrementando los contadores.
Por ejemplo, en el programa principall vas comparando que el contador de horas no haya llegado a 6 . Si ha llegado a 6 pues activas el contador de 10 segundos que se incrementaría por cada segundo en las interrupciones  y vas mirando que no pase de 10, y al llegar a 10 que desconecte el relay y vuelva al inicio.
Sé que al principio todo esto te puede parecer lioso pero es super sencillo.
Si necesitas aclaraciones o tienes cualquier tipo de dudas no tienes mas que gritar  :mrgreen: que te echo una mano.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Temporizador ciclico
« Respuesta #6 en: 04 de Marzo de 2009, 14:22:30 »
Hola  comentas que programas en pascal pues ya la tienes echa hay un compilador para PIC que se llama mickropascal te aseguro que te será muy fácil comenzar a programar pic con las bases que ya tienes.

http://www.mikroe.com/en/compilers/mikropascal/pic/

Hay una versión de prueba que es totalmente operativa con  la restricción de que solo permite compilar si no recuerdo mal asta 2k pero para proyectos como el que tienes esta más que sobrado


Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Temporizador ciclico
« Respuesta #7 en: 04 de Marzo de 2009, 14:35:19 »
Hombre... si te vas a meter con pics yo te recomendaría C.
Yo programo en assembler y es un lenguage de bajo nivel pero poderoso ya que es lo mas cercano al archivo final que grabas en el pic.
Pero C tiene la ventaja de su facil comprension y es ideal para hacer cálculos sofisticados en un par de lineas , cosa que en assembler te tomaría todo un dia  :mrgreen:

Yo no te recomendaría otro lenguage que éstos, claro que si sólo quieres hacer 1 o 2 proyectos que más da... pero si te quieres poner serio y perder años en este mundillo lo mejor es empezar en un lenguaje que te puedas apoyar en miles de ejemplos como son el C y asm.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Re: Temporizador ciclico
« Respuesta #8 en: 04 de Marzo de 2009, 14:57:44 »
Hola, muchisimas gracias por contestar!

Muchas gracias por ese programa para "transportar" pascal a hex. o .asm, lo probare haber cuales son los resultados :-/

Sobre utilizar C o asembler, me decantare por este lado ya que seguramente los microcontroladores van a ser de bastante uso en mi vida profesional(soy estudiante de Ingenieria Industrial) y asi de paso aprendo otro lenguage de programacion que tampoco va nada mal! :mrgreen:
Sobre lo lioso del TMR0 que me explicabas, si bien he entendido es como los contadores secuenciales, con un clock iva "acumulando" numeros hasta el numero maximo que tu le marcaras con puertas logicas, asi que si querias que llegara al 5 maximo, le conectabas una puerta logica para cuando llegara a ese valor reseteara el contador para ponerlo a 0 y aumentara en 1 el otro contador, tu explicacion viene a ser esa pero en modo"microcontrolador"¿? si es asi puedo tener cierta idea de como enfocar el tema a la hora de programar.

Pibe utilizare tu programita para ir "aprendiendo de forma autodidacta" ya que la asignatura en la cual se dan microcontroladores en mi carrera me toca de aqui a 1 año jejejejej.


Saludos y muchas gracias! :-)
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Temporizador ciclico
« Respuesta #9 en: 04 de Marzo de 2009, 15:30:18 »
Si, el TMR0 es un contador de 8 bits. Si no le pones nada a su registro comienza a contar desde 0 hacia adelante. Cuando llega a 255 (FF) y suma uno más entonces desborda , pasa a 0 otra vez y te levanta un flag (TMR0IF) tengas activadas las interrupciones o no. Mirando este flag tu sabes que ya han pasado 256 ciclos.
Al registro de TMR0 se le puede asignar un valor predeterminado, por ejemplo 100. Entonces comienza a contar a partir de 100 hasta desbordar . Una vez desborde haces lo que tengas que hacer y luego le vuelves a meter 100 a TMR0 para la proxima vuelta, y asi sucesivamente.
TMR0 tambien puede controlarse mediante prescalers, o sea /2  , /4 , /8   entonces jugando con el valor que le metes a TMR0 y los prescalers puedes tener temporizaciones a medida.

Otra gama de pics traen varios temporizadores para distintos usos , con prescalers, postcalers, con reloj externo, de 8 bits, de 16 bits, etc etc.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Temporizador ciclico
« Respuesta #10 en: 04 de Marzo de 2009, 16:51:05 »
Antes de comenzar a aprender un lenguaje nuevo, aprovecha lo que sabes de Pascal y utiliza el mikroPascal, yo creo que se va hacer más fácil.
Luego si quieres aprender un lenguaje nuevo, yo considero que siempre en el manejo de los PIC se debe tener una base de Assembler, como dijo Pibe es el más cercano a lo que se graba, además se puede entender mas claramente como es el funcionamiento del micro. El C tiene la ventaja de su fácil entendimiento, además también se encuentra mucha información, ejemplos y librerías de todo tipo.
Si vas a comenzar con ASM, yo realice un tutorial donde intento explicar paso a paso como empezar con la programación en ASM de un PIC, por ahora usando un 16F84A. Allí explico algo de lo que necesitas, creación de demoras y el manejo del timer, espero que te sea de utilidad.
Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Re: Temporizador ciclico
« Respuesta #11 en: 04 de Marzo de 2009, 19:43:45 »
Muchas gracias a todos, asi da gusto entrar en mundo de los microcontroladores y que a uno le den ganas de poner la mente a pensar para embarcarse en nuevos proyectos, de momento me iniciare con este jejejejeje.

Suky mirare muy gustosamente tu tutorial sobre la "iniciacion" al lenguage asembler ;)


Saludos!!
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Temporizador ciclico
« Respuesta #12 en: 04 de Marzo de 2009, 19:55:40 »
Otro asemblero a la saca! Sabia que lo convenceríamos! Buen trabajo Suky!   :-/ :-/ :-/ :-/ :-/  :mrgreen: :mrgreen: :mrgreen:

Solo me queda darte una recomendación: Olvídate de tu vida social, de tu novia/mujer, tus amigos ,etc. Esto es un vicio. Ya nunca podrás escapar de él !  :mrgreen:

PD: Ya sabes, cualquier cosa grita que te ayudo
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado LoPages

  • PIC10
  • *
  • Mensajes: 29
Re: Temporizador ciclico
« Respuesta #13 en: 04 de Marzo de 2009, 20:13:22 »
Olvidarme...lo que no quiero olvidarme es de las 5 asignaturas que estoy cursando a dia de hoy....porque como me despiste me la claban!!! que en la facultad ahora les ha dado por hacer muchos examenes sorpresa, sobre mi novia.....no creo que me deje olvidarme de ella XD y de mis amigos tampoco porque los veo everyday en classe jejejeje.

Si necesito ayuda ya chillare desde la costa Mediterranea...haber si te llega!! jejejejej


Saludos! :-/
"Nuestra carrera es puta, pero nosotros lo somos mas!!!"---->By Meroño.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Temporizador ciclico
« Respuesta #14 en: 05 de Marzo de 2009, 04:45:54 »
Seguro que me llega, porque vivo en Barcelona  :D
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"