Está en la página 1de 3

Semforo con un PIC16F628

El programa que en esta ocasin analizaremos ya hace tiempo fue utilizado por primera vez, en estas mismas pginas de sta, nuestra querida revista, y lo que haremos en esta nota es traspasar el programa del PIC16F84 a un PIC16F628, que finalmente es el microcontrolador, que en un futuro, reemplazar al viejo 16F84. Introduccin En la figura 1 se muestra el diagrama esquemtico del circuito del semforo, en este diagrama se encuentra ya el microcontrolador PIC16F628, y lo nico que tuvimos que hacer fue quitar el PIC16F84 y colocar el nuevo microcontrolador, los dems elementos del circuito se quedan como estn. Lo anterior es posible gracias a la compatibilidad que existe entre las terminales de un microcontrolador con el otro, por lo que no se tiene mayor problema, al reemplazarlos ya que fsicamente son equivalentes en cuanto a la disposicin de las terminales de cada uno de ellos, por otra parte, la operacin que realizaremos en cuanto a la sustitucin del programa es muy simple, pero tenemos que adecuarlo. Para recordar de qu se trata el programa abordado en esta ocasin, procederemos a explicar cmo funciona el clsico programa del semforo en las lneas que siguen a continuacin: La gran ventaja de los PICs radica en que existe abundante bibliografa gratuita disponible en distintas plataformas (sin duda Internet ha contribuido a potencializar esta ventaja), los entornos de desarrollo son provistos por la misma Microchip en forma gratuita y se los puede programar y cargar con gran cantidad de dispositivos, adems de la informacin que pueden encontrar en nuestra pgina de internet: www.webelectronica.com.ar Estructura del Programa Como compilador emplearemos la aplicacin de Microchip MPLAB, que genera y compila el archivo con extensin "asm, y a partir de este obtener el programa en un archivo con extensin 'hex". Como cargador usaremos el Quark Pro 2, que por otra parte emplea la aplicacin lC-PROG como programa para permitir la carga de los microcontroladores PIC. Vamos a construir un semforo que funcione con 12VCD y que sea capaz de manejar lmparas de 50W con dicha tensin. Partiremos desde cero a partir del circuito de la figura 1. El microcontrolador PIC16F628 debe tener en su interior el programa que haga que se enciendan en secuencia las lmparas LA1 (color verde), LA2 (color amarillo) y LA3 (color rojo). A los efectos de monitorear el encendido de las lmparas, usamos como pilotos a los leds D1 (verde), D2 (amarillo) y D3 (rojo) y para manejar las lmparas de potencia se utilizan transistores NPN de potencia con disipador del tipo TIP41A. Los dispositivos R1 en serie con VR1 y C1 conforman un circuito de carga cuya constante de tiempo determina la frecuencia de operacin del reloj, que a su vez controla al contador de programa del PIC y por ende, el tiempo en que las lmparas permanecern

PROMOCIONES

FIGURA 1

FIGURA 2 encendidas, mientras que D4 junto con Q4 representan un limitador de tensin para alimentar al PIC con 5V. Construccin del Programa Note que tanto los leds pilotos como los transistores que manejan las lmparas estn conectados a los terminales 6, 7 y 8 del PIC que corresponden a los bits menos significativos del Puerto B (vea la figura 1), sea, debemos recordar que usaremos los bits b0, b1 y b2 del PIC (podramos haber empleado otras patas, incluso hasta del puerto A y seguiramos el mismo procedimiento que vamos a describir). Una vez que comienza el programa, debe encenderse el led verde, permanecer encendido durante 45 segundos, apagarse el verde y prenderse el amarillo durante 5 segundos, apagarse el amarillo y prenderse el rojo durante 45 segundos, apagar el led rojo y prender el verde durante 45 segundos y as sucesivamente. Para hacer que un led permanezca encendido se utilizan rutinas de tiempo (temporizadores), cuya funcin es la de contar dicho tiempo. Para armar el programa tenemos que definir qu patas del PIC vamos a emplear para encender las lmparas del semforo. Decimos entonces que usaremos los siguientes pines: Bit y puerto Pata Lmpara b0 6 Verde b1 7 Amarillo b2 8 Rojo El programa tiene que realizar los siguientes pasos: 1) Iniciar el programa. 2) Configuramos el puerto B con todas las patas como salida, slo nos interesan los 3 bits menos significativos, pero igual configuramos a todas las patas como salida. 3) Escribimos en el puerto B el dato '00000001", de esta manera mandamos un 1, lgico, al bit b0 para que se encienda la lmpara verde. 4) Activamos un temporizador de 45 segundos, para que la lmpara verde permanezca encendida ese tiempo (note que las lmparas amarilla y roja van a estar apagadas porque los bits B 1 y B2 est6n en '0'). 5) Escribimos en el puerto B el dato '00000010' para que se encienda la lmpara amarilla y queden apagadas las lmparas roja y verde (note que el bit b1 estar en " 1 " mientras que los bits b0 y b2 estn en '0'). 6) Activamos un temporizador de 5 segundos, para que la lmpara amarilla permanezca encendida ese tiempo (note que las lmparas verde y roja van a estar apagadas porque los bits b0 y b2 estn en 0). 7) Escribimos en el puerto B el dato '00000100 , para que se encienda la lmpara roja y queden apagadas las lmparas amarilla y verde (note que el bit b2 estar en " 1 " mientras que los bits b0 y b1 estn en "0"). 8) Activamos un temporizador de 45 segundos, para que la lmpara roja permanezca encendida ese tiempo (note que las lmparas amarilla y verde van a estar apagadas porque los bits b0 y b1 estn

FIGURA 3 PROMOCIONES

en 0). 9) Retornamos al paso (3). 10) Fin del programa. En la figura 4 vemos el programa. Primero vamos a mostrar el cdigo original para el PIC16F84, y posteriormente el cdigo para el PIC16F628, y al hacer la correspondiente comparacin entre ambos, se notar que los cambios principales se centran en las localidades de los registros, sobre todo de memoria RAM, en el aumento de bancos de registros, y en un par de instrucciones que se requieren para que las terminales del puerto A del PIC16F628, funciones como entradas discretas. Estas instrucciones son las siguientes: movlw 0x07 movwf cmcon El registro CMCON se encuentran en el banco 0, por lo que ste tiene que ser ubicado adecuadamente de manera previa. En la figura 5 vemos el siguiente programa. Esperamos que el proceso de reemplazar un microcontrolador por otro, sea cada vez ms sencillo, ya que se es el espritu de esta serie de artculos y para ello tomamos un programa ya clsico para nosotros, y los invitamos para que a manera de prctica lo desarrollen y ahonden en sus conocimientos sobre la programacin de microcontroladores. Por ltimo los invitamos a que visiten nuestra pgina de internet en www.webelectronica.com.ar en donde encontrarn ms informacin acerca del tema de reemplazo del microcontrolador PIC16F84 por un PIC16F628A. Autor: Ismael Cervantes de Anda