Tarjeta entrenadora de microcontrolador PIC16F84. Omar Ivan Gaxiola Sánchez, Modesto Guadalupe Medina Melendrez, Manuel de Jesús Acosta Portillo, Mijail Romero Delgado, Misael Romero Delgado. INSTITUTO TECNOLÓGICO DE CULIACÁN [email protected] Resumen Este trabajo presenta un prototipo funcional y didáctico para la enseñanza del uso del microcontrolador PIC16F84, específicamente en prácticas desde nivel básico hasta intermedio. Una de sus principales características es que la tarjeta cuenta con todos los periféricos de entrada y salida necesarios para la realización de 15 prácticas con manejo de funciones, periféricos y protocolos de comunicación con el microcontrolador. Se agregó un programador que permite cargar los códigos de los programas a ejercitar, sin necesidad de desmontar el microcontrolador de la tarjeta. PALABRAS CLAVE: PIC16F84, microcontrolador, tarjeta entrenadora. 1. Introducción Una tarjeta entrenadora es una herramienta muy útil para estudiantes que se inician en el uso de los microcontroladores. Ésta contiene todos los dispositivos necesarios para la realización de prácticas especificas que les permite desarrollar habilidades de los microcontroladores en su programación y modos de operación que ofrecen [2]. Una ventaja adicional que brinda este diseño es la incorporación de un programador para el microcontrolador, de tal forma, que para cargar el programa de la práctica que se va a implementar solo basta con entrar al modo de programación y conectar la tarjeta a la pc, sin necesidad de desmontarlo de la tarjeta entrenadora. En los puntos 2, 3 y 4 se explican las características del microcontrolador. El punto 5 contiene la información del diseño de la tarjeta, partes que la integran y modos de operación. Y por último, en la sección 6 se dan los resultados y conclusiones de este artículo. 2. Microcontrolador PIC16F84. El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama Media (según la clasificación dada a los microcontroladores por la misma empresa fabricante) Microchip [8]. Se trata de uno de los microcontroladores más populares del mercado actual, ideal para principiantes, debido a su arquitectura de 8 bits, 18 pines (la distribución de pines del microcontrolador se muestran en la figura 1), y un conjunto de 35 instrucciones RISC muy amigable para memorizar y fácil de entender, internamente consta de [1]: Memoria Flash de programa (1K x 14 bits). Memoria EEPROM de datos (64 x 8 bits). Memoria RAM (68 registros x 8 bits). Un temporizador/contador (timer de 8 bits). Un divisor de frecuencia. 1 Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el puerto B). Otras características son [1]: Manejo de interrupciones (de 4 fuentes). Perro guardián (watchdog). Bajo consumo. Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un reloj de 20Mhz, el reloj interno sería de 5Mhz y así pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS). Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución de la instrucción (los saltos ocupan un ciclo más). Repertorio de instrucciones reducido (RISC), con tan solo 35 instrucciones distintas. 4 tipos distintos de instrucciones: orientadas a byte, orientadas a bit, operación entre registros y de salto. Figura 1. Terminales del PIC16F84. 3. Puertos del microcontrolador. Los puertos son el puente entre el microcontrolador y el mundo exterior. Son líneas digitales que trabajan entre cero y cinco voltios, y se pueden configurar como entradas o como salidas. El 2 PIC16F84 tiene dos puertos, el puerto A con 5 líneas y el puerto B con 8 líneas. El puerto A tiene las líneas RA0, RA1, ...., RA4 y el puerto B las líneas RB0, RB1, ...., RB6, RB7 como se muestra en la figura 2. Cada pin se puede configurar como entrada o como salida independiente programando los registros TRISA y TRISB del Banco 1, para el puerto A y el puerto B respectivamente. En estos registros un "0" configura el pin del puerto correspondiente como salida y un "1" lo configura como entrada [1]. Figura 2. Puertos del PIC16F84. El puerto B tiene internamente unas resistencias de pull-up conectadas a sus pines (sirven para fijar el pin a un nivel de cinco voltios), su uso puede ser habilitado o deshabilitado bajo control del programa. Todas las resistencias de pull-up se conectan o se desconectan a la vez, usando el bit llamado RBPU que se encuentra en el registro OPTION. La resistencia de pull-up es desconectada automáticamente en un pin si este se programa como salida. El pinRB0/INT se puede configurar por software para que funcione como interrupción externa, para configurarlo se utilizan unos bits de los registros INTCON y OPTION [2]. El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida o como entrada del temporizador/contador. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger), puede reconocer señales un poco distorsionadas y llevarlas a niveles lógicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto, por lo tanto, se debe poner una resistencia de pull-up (resistencia externa conectada a un nivel de cinco voltios). Como salida, la lógica es inversa: un "0" escrito al pin del puerto entrega en el pin un "1" lógico. Además, como salida no puede manejar cargas como fuente, sólo en el modo sumidero. Como este dispositivo es de tecnología CMOS, todos los pines deben estar conectados a alguna parte, nunca dejarlos flotando porque se puede dañar el integrado. Los pines que no se estén usando se deben conectar a la fuente de alimentación de +5V, como se muestra en la figura 3. 3 Figura 3. Conexión de pines no utilizados. La capacidad máxima de corriente de cada uno de los pines de los puertos en modo sumidero (sink) es de 25 mA y en modo fuente (source) es de 20 mA. La máxima capacidad de corriente total de los puertos es [1]: Modo sumidero Modo fuente Puerto A 80 mA 50 mA Puerto B 150 mA 100 mA El consumo de corriente del microcontrolador para su funcionamiento depende del voltaje de operación, la frecuencia y de las cargas que tengan sus pines. Para un reloj de 4 MHz el consumo es de aproximadamente 2 mA; aunque este se puede reducir a 40 microamperios cuando se está en el modo sleep (en este modo el micro se detiene y disminuye el consumo de potencia). 4. Oscilador externo. Todo microcontrolador requiere un circuito externo que le indique la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema. El PIC16F84 puede utilizar cuatro tipos de oscilador diferentes. Estos tipos son: • RC. Oscilador con resistencia y condensador. • XT. Cristal. • HS. Cristal de alta velocidad. • LP. Cristal para baja frecuencia y bajo consumo de potencia. El tipo de oscilador que se sugiere para las prácticas es el cristal de 4 MHz, porque garantiza mayor precisión y un buen arranque del microcontrolador. Internamente, ésta frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instrucción se ejecuta en un microsegundo. El cristal debe ir acompañado de dos condensadores de entre 15 y 33 pf y se conecta como se muestra en la figura 4 [8]. 4 Figura 4. Conexión del oscilador externo. 5. Funcionamiento de la tarjeta entrenadora. La tarjeta entrenadora de microcontrolador PIC16F84A es un circuito impreso que contiene los dispositivos básicos para desarrollar prácticas sencillas y didácticas, con el objetivo de que el estudiante aprenda cómo programar e implementar diversos dispositivos periféricos que interactúan con el microcontrolador. El diseño involucra dispositivos de control de selección de prácticas y un programador. Para la selección de prácticas se utiliza unza el circuito integrado 74LS154, el cual consta de 4 entradas de datos binarios que toman valores de 0 y 1, teniendo 16 salidas de datos diferentes. Las 16 líneas de salida del demultiplexor controlan buffers triestado e interruptores electrónicos para activar los dispositivos de entrada y salida necesarios para la realización de la práctica seleccionada. La figura 5 muestra el diagrama de configuración del bloque de selección de prácticas. Entrada 1 Entrada 2 Entrada 3 Selector de practica Programador Práctica 1 Práctica 2 Práctica 3 Práctica 4 Práctica 5 Práctica 6 Práctica 7 Entrada 4 Práctica 15 Figura 5. Bloque de selección de prácticas. En el modo de operación 0, que corresponde al de programación por medio del puerto USB, se carga el código al PIC de la tarjeta. El programador implementado e incorporado en el diseño de la tarjeta permite la programación del microcontrolador sin necesidad de retirarlo de la placa. El software que se utiliza para la grabación de programas al PIC16F84A es el PICkit2 de Microchip, el 5 cual requiere de una conexión USB para envío y recepción de datos. La tabla siguiente da una descripción de los 16 modos de funcionamiento seleccionables para la tarjeta entrenadora: No. de práctica Práctica 0 Programador USB. 1 Control de 5 LED por medio de interruptores. 2 Decodificador de BCD a 7 segmentos con selector de tipo de display. 3 Control de niveles de líquido de un aljibe. 4 Control de 2 semáforos con retardos. 5 Utilización de la pantalla LCD. 6 Utilización de la memoria interna EEPROM con una pantalla LCD. 7 Implementación del protocolo RS232. 8 Termómetro digital por el bus I2C. 9 Termómetro digital con comunicación por RS-232 e interfaz programable de texto. 10 Cerradura electrónica con teclado matricial conectado a expansor de bus I2C. 11 Reloj digital por el bus I2C. 12 Termómetro digital visualizado en 4 display de 7 segmentos. 6 Objetivo Cargar el programa a la memoria de programa del microcontrolador. Controlar 5 LEDs comunes a través de interruptores/switch y pulsadores. Comprender el funcionamiento de los display de siete segmentos y su utilización en un microcontrolador. Emplear el uso de los saltos condicionales para diseñar el control de llenado de un aljibe. Controlar los cambios de las luces de dos semáforos convencionales empleando retardos [5] . Aprender el modo de funcionamiento de la pantalla con 4 líneas de datos. Almacenamiento de datos en la memoria EEPROM de datos. Implementación del protocolo RS-232 para comunicación con la PC. Comprender el funcionamiento del bus I2C y utilizarlo para desarrollar un termómetro. Obtener el valor de temperatura del sensorDS1624 por bus I2C y enviarlo por RS-232 a la PC [4]. Implementar una cerradura controlada por un teclado matricial [1]. Realizar un reloj digital con el circuito DS1307 [3]. Obtener el valor de temperatura del sensorDS1624 por bus I2C y 13 Manejo de interrupciones. 14 Manejo del perro guardián. 15 Puertos RA y RB libres para utilizarse. mostrar la temperatura en display de 7 segmentos [1]. Aprender el uso y configuración de las interrupciones del PIC16F84 [3]. Ejercitar el uso del perro guardián del PIC16F84 [6]. Permitir al usuario utilizar el PIC16F84 de la tarjeta entrenadora para cualquier aplicación. Para indicar al usuario el modo de funcionamiento seleccionado se incluyeron dos display de 7 segmentos y una GAL22V10D programada con la lógica combinacional necesaria para indicar el número de la función que está realizando la tarjeta. Una vez programado el microcontrolador con el código adecuado para realizar una práctica, solo se debe seleccionar el número de la práctica y se podrá probar su funcionamiento. Automáticamente se configuraran los periféricos de entrada y salida requeridas para la práctica que fue elegida. La figura 6 muestra la tarjeta entrenadora diseñada. Figura 6. Tarjeta entrenadora. 7 5. Resultados. Se diseñó, implementó y probó una tarjeta entrenadora para el microcontrolador PIC16F84 que cuenta con todos los periféricos de entrada y salida necesarios para la realización de 15 prácticas con manejo de funciones, periféricos y protocolos de comunicación con el microcontrolador. Esta tarjeta es una herramienta muy útil para estudiantes que se instruyen sobre el uso de los microcontroladores, permitiendo probar y desarrollar sus habilidades en la configuración y programación del microcontrolador al contar con los periféricos necesarios para su realización en esta tarjeta. El diseño incluye los circuitos necesarios que permiten cargar los códigos de los programas a ejercitar sin necesidad de desmontar el microcontrolador de la tarjeta. 6. Referencias. 1. Palacios E. Remiro F., "Microcontrolador PIC16F84. Desarrollo de Proyectos", Ed. RAMA, 3ra edición, 2009. 2. Mandado E., "Microcontroladores PIC: sistema integrado para el autoaprendizaje", Ed. Marcombo, 2007. 3. Lee S., David W. S., "PIC in Practice. A Project -based Approach", Ed. Newnes, 2006. 4. Ibrahim D.,"Microcontroller-based Temperature Monitoring and Control",Ed. Newnes 2002. 5. Gaspar A., Gámez J.,"Problemas resueltos para microcontroladores 8051 y PIC16F84", Servicio de Publicaciones -Universidad de Jaén, 2009. 6. Tooley M., Tooley M.,"Electronic Circuits: Fundamentals and Applications",Ed. Routledge, 2006. 7. Ibrahim D.,"PIC BASIC: Programming and Projects: Programming and Projects",Ed. Elsevier, 2001. 8. "PIC16F84 Datasheet", 2001 Microchip Technology Inc, www.microchip.com. 8