Cómo programar un PIC 16f84

Soy nuevo en esto, y según lo que he visto en internet, lo que necesito se puede hacer con este PIC.
Necesito el diseño de un circuito (a 6v) que me haga lo siguiente
Que esté en un estado durante 3 segundos y en el otro durante 57 segundos.
Es para un reloj, así que tiene que ser muy pero muy preciso el CRISTAL.
Ahora, el código para el PIC:
Necesito un código que matenga el estado ON durante 3 segundos y OFF durante 57, y otro en viceversa, ON 57 y OFF 3 segundos.
De antemano, muchísimas gracias.
Agradezco también, si me espcifican los valores de las variables, para diferentes valores del CRITAL, en caso de no conseguir alguno.
Le recuerdo please, necesito el circuito y el código para el PIC.
De nuevo gracias.

3 Respuestas

Respuesta
1
No se ve difícil entendiendo bien el uso de los timers del uC. No tengo un programa específicamente para esto ni el tiempo para hacerlo, pero si te atreves a intentar hacerlo tú, te puedo guiar hasta que te funcione.
Mira, inicialmente he encontrado esto, pero creo que está incompleto, le falta algo, porque no veo la parte donde se declaran las variables que indican por cuál pin del PIC va a salir la corriente...
http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/ingenieria-electronica/respuestas/157074/temporizador-con-pic

Le faltan indicar las direcciones de las variables y definir constantes. Hay que probarlo para comprobar si funciona.
Cierto, pero cómo se hace, cómo se define, yo no sé este lenguaje, sólo VB, nada más.
Para las constantes es cambiar un valor por una etiqueta para hacerlo más legible. Al compilar se reemplazan las etiquetas por sus valores reales:
;*********ktes**********
 #DEFINE lim_sal    0xc8;        200=10s límite t armado salida
 #DEFINE lim_ent     0xc8;        200=10s límite t entrada
Para las variables debes escoger direcciones en las que se almacenaran, estas deben ser de libre uso pues algunas direcciones está reservadas. Debes usar direcciones del área GPR que para el 16F84 empieza a partir de 0Ch: ejemplo para el 16F877A:
Cntcol EQU 0x20; registro columnas
filas EQU 0x21; registro filas
tecla EQU 0x22; dato desde teclado
también vi que el programa usa variables de 1 bit. Debes definir la dirección que usaras para variables de 1 bit en la parte de definición de variables y tambièn el nombre que le daras a algún bit de esa dirección: ej
primero se define como variable la dirección 28h:
Flags EQU 0x28; flags variables de 1 bit
luego:
#DEFINE BEEP_FORZ     0X28, 7;    agregado el 130508
 #DEFINE F_BLINK     0X28, 6
 #DEFINE F_BPS         0X28, 5
Las direcciones corresponden al área GPR del 16F877A. Para el 16F84 debes usar direcciones a partir de 0Ch y fijarte en el límite si fueran demasiadas variables.
Respuesta
1
Caranbis: sé totalmente específico en tu circuito y te ayudo a diseñarlo... MUY CLARO EN LAS ESPECIFICACIONES... pues el PIC es muy fácil de programar.
Me alegra e ilusiona mucho tu respuesta, mira:
Lo que quiero hacer realmente es un reloj mecánico, de tal manera que el PIC me accione un MOTORCITO durante 3 segundos para levantar la BOLITA (ver videos); y luego estará en OFF durante los siguientes 57 segundos, para así completar el minuto e iniciar de nuevo (3ON 57OFF, 3ON 57OFF...).
Sobra decir que me gustaría que sea muy preciso, que yo pueda presumir de que el reloj, aunque artesanal, no se adelanta ni se atrasa.
reloj, versión artesanal
http://www.youtube.com/watch?v=6ZWz6457asM
reloj, versión comercial
http://www.youtube.com/watch?v=-3hNCinIBdk
PD1:
- Ya compré el PIC y compré el CRISTAL de 4MHz
- Instalé el MPLAB IDE 8.02 por curiosidad, pero parece estar en chino, je je, pues como te digo, nunca he programado chips.
- Ya tengo el lugar donde me queman el PIC, tengo que llevar el archivo HEX.
- ¿Para el circuito tengo destinado el cargador del Motorola 1100 que me arroja 6v.?
PD2:
Me gustaría hacerte otra pregunta acerca del circuito:
Como te decía, el motor estará encendido 3 segundos verdad!, pero que pasa con los tiempos y la sincronización del PIC si el motor es "apagado" de forma manual y brusca antes de lo tres segundos, utilizando un puente-interruptor-CORTOCIRCUITO (ver imagen), ¿seguirá estando bien sincronizado?, o este corto cambiará algo del conteo dentro del PIC.


De antemano, muchísimas, muchísimas gracias.
Andrew.
Si necesitas mi email, es: [email protected]
Caranbis:
Disculpa que apenas ahorita 27 del mes estoy leyendo la página, pero estoy bastante ocupado y aparte mi computadora aún no tiene el enlace de internet.. esta está casi todo el tiempo ocupada por mis hijos. Pero aquí estoy. Ya te entendí lo que quieres hacer.. el generar los tiempos está fácil, pero hay que hacer que las rutinas del programa con todas sus ramificaciones den siempre el mismo tiempo. En cuanto a la pregunta de qué pasa si "apagas" el motor bruscamente como tienes la idea según el diagrama, no se puede hacer así, pues la terminal "7" del PIC la tienes que definir como una salida, un switch que CORTOCIRCUITE en esa forma dañaría la salida del PIC, dado que la conectaría a tierra. Esto no tendría que generar alguna respuesta en el PIC como sacarlo de sincronía, o algún otro efecto, pero no se debe hacer. Mira, el PIC va a actuar como circuito de control, luego el motor lo tenemos que controlar con una etapa de potencia... puede ser tan sencillo como un relé. Éste, el actuar, tiene un retardo de algunas décimas de milisegundo, pero no tiene que causarte algún problema de "falta de exactitud". Si no tienes objeción, el fin de semana haré la rutina para el PIC, y te lo envío PERO A TU CORREO, PARA NO OCUPAR TANTO EL ESPACIO DE LA PÁGINA. Los detalles los vamos viendo conforme el diseño y ls pruebas que hagas.
Bueno, entiendo lo que dices sobre dañar la salida del pic.
Pero realmente necesito detener el funcionamiento del motor así, pues realmente no sé cuanto se demorará en subir la bolita hasta arriba, y es la bolita (esfera de acero) la que se en cargará de hacer el corto mientras recorre el primer tramo del camino que debe recorrer.
Pero entonces, creo tener la solución para evitar hacer el corto sobre la salida 7 del pic.
Creo que funcionaría añadiendo un circuito adicional; resulta que encontré un circuito con el todopoderoso 555, que secibe una señal de voltaje, que en este caso sería nuestra salida del pic 7, y la invierte, es decir, si la salida de voltaje es cero, entonces la salida de voltaje del 555 será positiva, y si la salida del PIC es positiva, entonces la salida del 555 será cero.
A este circuito ya le he hecho pruebas con el corto, y la salida sigue funcionando al siguiente ciclo.
Pero entonces necesitaría que el programa para el PIC quede al revés de lo que te había dicho, tendría que quedar, ON 57 segundos, y OFF 3 segundos; para que el 555 la invierta.
El circuito inversor es:

http://www.doctronics.co.uk/555.htm#transducer
Esperaré tu comentario.
Caranbis:
No te me desesperes... en el día te tengo algo bien definido... Como el PIC es flexible, prácticamente no necesitas más que el software (programa). En una hora te dibujo el circuito y lo examinas.
Respuesta
-1
Ok hay unos circuitos hechos para este tipo de especificaciones, solo los tienes que comprar, se llaman RAPID CIRCUITS, vienen con su plaqueta, con los componentes y con las instrucciones así como la explicación de como funciona y como armarlo, bueno yo soy de México Distrito Federal y todo este material se consigue en el centro de la ciudad, en una calle que se llama República del Salvador, espero haberte sido de ayuda y si te quedan dudas me preguntas de nuevo y con mucho gusto te ayudare en lo que me sea posible suerte y saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas