TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: LoPages en 03 de Marzo de 2009, 17:07:15

Título: Temporizador ciclico
Publicado por: LoPages 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.
Título: Re: Temporizador ciclico
Publicado por: kain589 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.
Título: Re: Temporizador ciclico
Publicado por: LoPages 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?¿
Título: Re: Temporizador ciclico
Publicado por: kain589 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.
Título: Re: Temporizador ciclico
Publicado por: LoPages 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)
Título: Re: Temporizador ciclico
Publicado por: pibe 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.
Título: Re: Temporizador ciclico
Publicado por: septiembre_negro 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

Título: Re: Temporizador ciclico
Publicado por: pibe 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.
Título: Re: Temporizador ciclico
Publicado por: LoPages 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! :-)
Título: Re: Temporizador ciclico
Publicado por: pibe 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.
Título: Re: Temporizador ciclico
Publicado por: Suky 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 (http://www.todopic.com.ar/foros/index.php?topic=24720.0) 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!
Título: Re: Temporizador ciclico
Publicado por: LoPages 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!!
Título: Re: Temporizador ciclico
Publicado por: pibe 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
Título: Re: Temporizador ciclico
Publicado por: LoPages 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! :-/
Título: Re: Temporizador ciclico
Publicado por: pibe en 05 de Marzo de 2009, 04:45:54
Seguro que me llega, porque vivo en Barcelona  :D
Título: Re: Temporizador ciclico
Publicado por: LoPages en 05 de Marzo de 2009, 16:15:21
Hi! estoy a caballo del libro de desarrollo de proyectos con PIC16F84A y el tutorial de asembler que me recomendasteis, por lo que aun no he empezado a "picar codigo alguno", y es cuando me entro la duda, que programador de pic es mas interesante de fabricarse de forma casera¿?:

-GTP-USB-PLUS+
- PICKIT2 Clon




Saludos!!!

PD:Pibe he pegado un buen grito y segurisimo que me escucha muy pero que muy fuerte jejejejej te estare dejando sordo! :D
Título: Re: Temporizador ciclico
Publicado por: pibe en 05 de Marzo de 2009, 19:40:24
Uy, yo me habia armado el pic800. Es muy sencillo si tienes puerto paralelo disponible. Ahora uso el icd2 de microchip porque mi empresa lo tenía.
A ver si te encuentro el esquema y te lo subo.
Título: Re: Temporizador ciclico
Publicado por: pibe en 05 de Marzo de 2009, 19:46:00
Aquí está.
Es muy fácil, nada de complicaciones y funciona de maravillas con el programa de grabación WinPic.

http://proyectosfie.webcindario.com/download/pic800.zip
Título: Re: Temporizador ciclico
Publicado por: LoPages en 05 de Marzo de 2009, 20:39:20
Hi! muchas gracias por el link del programador ese, aunque creo que si utilizo el pic16F628 con el programador ese no voy a poder---> "Programador de PIC 16x84 y 16F87x de Microchip "jejejje, y no tengo puerto paralelo....hice una "renovacion" de hardware informatico y ni mi portatil "Dell XPS 1330" ni mi ordenador de sobremesa tienen puerto paralelo...en cambio de usb tengo para dar vender y regalar jejejeje, por lo que debo tirar a por USB power aunque tenga que comprar el pic18F2550 para meterle la controladora de USB.




Saludos!! :-/
Título: Re: Temporizador ciclico
Publicado por: Suky en 05 de Marzo de 2009, 23:00:58
Has mirado el proyecto de Willy? GPIC USB Programador personal (http://www.todopic.com.ar/foros/index.php?topic=23475.0), es muy interesante y por lo visto funciona muy bien. También mira aquí (http://eclip-se.es.tl/Eclipse.htm), hay varios y alguno puede ser de tu gusto.
Saludos!