Tarjeta de desarrollo para el laboratorio de
Transcripción
Tarjeta de desarrollo para el laboratorio de
XI JORNADAS DE PARALELISMO—GRANADA, SEPTIEMBRE 2000 1 Tarjeta de desarrollo para el laboratorio de microcontroladores PIC Fernando Pardo y José A. Boluda Resumen--En este artículo se presenta una tarjeta de desarrollo, especialmente concebida para las prácticas de laboratorio con microcontroladores PIC. Todas las características de la tarjeta han sido pensadas para que la realización y desarrollo de los experimentos, por parte del profesor y los alumnos, sean sencillos. Palabras clave--Microcontroladores, PIC, tarjeta de desarrollo, laboratorio de micros. I. INTRODUCCIÓN L A enseñanza de sistemas basados en microcontroladores es parte fundamental de una Ingeniería Electrónica, y es un buen complemento en la formación de cualquier Ingeniero Informático. Durante varios años se ha impartido una asignatura de microcontroladores en la titulación de Ingeniería Informática de la Universitat de València. En las clases de laboratorio se utilizaban tarjetas basadas en el 8051. Las clases estaban bien, pero el conjunto de periféricos con los que se hacían experimentos era escaso, ya que casi toda la tarjeta de desarrollo estaba dedicada al propio micro con su RAM y EPROM. Por otro lado, la descarga de programas se podía realizar sobre la marcha, pero a una RAM externa que era por tanto necesaria en todas las aplicaciones. Además, era siempre necesario contar con un mínimo "Sistema Operativo" que cuartaba la libertad en el diseño de experimentos, especialmente si luego se querían portar a otras plataformas. Por último, la tarjeta admitía un único tipo de microcontrolador, siendo las posibilidades de intercambio algo escasas. Por estas razones, entre otras, se consideró la posibilidad de cambiar la plataforma de desarrollo del laboratorio de micros. En la búsqueda de alternativas, se encontró que Microchip ofrece una gran variedad de microcontroladores (PIC), con muchas posibilidades de aplicación, y con una gran compatibilidad entre ellos [1]. Esto es especialmente importante, ya que se buscaba una plataforma donde realizar una amplia gama de aplicaciones. De hecho, la adopción finalmente de esta familia de micros ha hecho posible que se pudiera utilizar la misma tarjeta en otras asignaturas como la de Periféricos y la de Instrumentación. En la de periféricos se utilizan para realizar un componente externo basado en USB: el puerto USB de la tarjeta, con el PIC adecuado, se programa como dispositivo esclavo. En la asignatura de instrumentación se utiliza como generador digital de señales analógicas. Departamento de Informática, Universidad de Valencia, Avda. Vte. Andrés Estellés s/n, 46100 Burjassot, Valencia (España). [email protected], [email protected], http://tapec.uv.es/ En el caso de la asignatura de microcontroladores, el laboratorio está orientado hacia el desarrollo de sistemas empotrados autónomos, que es el campo donde mejor encajan los microcontroladores. Esta es la razón también por la que se han introducido un gran número de periféricos y puertos, tanto analógicos como digitales. Por un lado, el tener una única tarjeta con todo incluido es más cómodo y fiable que tener que enchufar una tarjeta diferente para cada experimento, por otro lado, el entorno del micro sería el mismo que si el desarrollo fuera real. La figura 1 muestra una foto de la tarjeta. Los diferentes módulos y periféricos de la tarjeta se han dispuesto de forma bien diferenciada siguiendo fines pedagógicos. La información completa sobre esta tarjeta se puede encontrar en [2]. Fig. 1. Fotografía de la tarjeta EduPIC Las principales características de esta tarjeta son las siguientes: o Está preparada para soportar las familias 12, 16 y 18 de los PIC de Microchip. (Encapsulado tipo DIP de 8, 18, 28 y 40 pines.) o Los PIC son programados directamente en la tarjeta a través del puerto paralelo del PC, siempre y cuando el PIC soporte ICSP (In Circuit Serial Programmming). Prácticamente cualquier PIC soporta ICSP. o Existe un conmutador para deshabilitar completamente los periféricos durante la programación. o Incluye LCD alfanumérico de 2x16 caracteres. o Teclado matricial con 4x4 teclas. o Cuatro fuentes analógicas integradas: o 2 potenciómetros lineales (0-5 V) o 1 sensor de temperatura. o 1 sensor de luminosidad. 2 o o o o o o o o o o o o o AUTORES: TÍTULO DEL ARTÍCULO Se incluye una resistencia para calentamiento del sensor de temperatura. Barra de 8 leds para monitorizar el bus de datos. Conjunto de 4 displays de 7 segmentos conectados a un único conversor de BCD a 7 segmentos. 5 entradas digitales de un bit seleccionables mediante conmutador. Entradas comunes analógicas y digitales seleccionables mediante conmutadores de tres estados (Análogo/Libre/Digital). Este conmutador permite la desconexión individual de cada entrada analógica o digital. Bus I2C y periféricos: o PCF8591: Conversor A/D y D/A. Tiene una salida y cinco entradas analógicas. o PCF8582: Memoria E2PROM con 256 bytes. Conector e interfaz RS232. Conector USB (sólo para PICs que soporten USB). Botón para generar interrupción externa (INT). Conmutadores de habilitación individuales para cada periférico de la tarjeta. Conectores individuales para el bus I2C, entradas y salidas analógicas, PWM (RC1 y RC2), interrupción externa y reloj timer0 (T0K). Dos conectores IDC de 26 pines para expandir la conexión del microcontrolador. El primer conector tiene todas las señales de los PIC de hasta 28 pines, mientras que el segundo completa las señales presentes en PICs más grandes (hasta 40 pines). La alimentación se puede realizar mediante una fuente externa aunque no esté ni polarizada (AC o DC) ni filtrada, siempre que sea superior a unos 1315 Voltios e inferior a unos 30 V. Es posible la utilización de dos pilas de 9 voltios. II. PERIFÉRICOS Y MÓDULOS DE LA TARJETA Los componentes más interesantes de la tarjeta EduPIC se comentan a continuación. A. Unidad de programación Una de las características más interesantes de esta tarjeta es que se puede grabar casi cualquier PIC en la propia tarjeta. Esta característica es especialmente importante en un laboratorio docente donde un mismo dispositivo debe ser grabado una y otra vez. La figura 2 muestra el circuito de programación de la tarjeta. Los pines de programación del PIC (RB7 y RB8) están conectados al conector del puerto paralelo de impresora a través de un buffer. A través de este puerto se reciben también diferentes señales para llevar el PIC a su estado de programación. Para que la programación sea correcta, es necesario aislar los pines RB7 y RB6 del resto de periféricos. Un conmutador de la tarjeta se encarga de asegurar este aislamiento. En el circuito de programación se incluye también el de reset. Como el PIC tiene su propio power-up reset, el circuito de reset externo se limita a un botón. D9 VPP 1 20 2 19 3 18 4 17 5 16 6 15 7 14 8 13 9 12 VCC R16 2K2 Q5 R17 2K2 1 2 3 NMCLR 2 3 Q6 12N3904 2N3906 10 11 LN10304 R22 2K2 R23 1K 3 Q7 12N3904 D11 R24 2 2K2 P1 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 SW15 1N4148 R25 1 100 2 3 4 RESET U10 2 4 6 8 11 13 15 17 1 19 1A1 1A2 1A3 1A4 2A1 2A2 2A3 2A4 1G 2G 1Y1 1Y2 1Y3 1Y4 2Y1 2Y2 2Y3 2Y4 18 16 14 12 9 7 5 3 SW18 RB7 SDATA RB6 SCLK 1 2 RB7/SDATA 5 RB6/SCLK 3 4 6 SW_PROG 74LS244 PARALELO Fig. 2. Circuito de programación de PIC en la placa. B. Fuentes analógicas y digitales La tarjeta dispone de 5 entradas digitales de un bit y 4 analógicas, sin contar las propias del bus I2C que se comenta más adelante. Estas entradas comparten el puerto A del PIC que puede ser configurado como digital o analógico. Dado que comparten la misma entrada, es necesario disponer de algún mecanismo que permita elegir una entrada o la otra, o incluso ninguna en el caso de utilizar señales externas a la tarjeta. Para ello se han utilizado conmutadores que permiten elegir las tres posibilidades: analógico, digital y desconectado. Hay 4 fuentes internas de señales analógicas: dos de ellas son simples potenciómetros que permiten seleccionar cualquier tensión entre 0 y 5 Voltios. Otra fuente analógica viene de un sensor de temperatura LM35, que entrega una salida lineal con la temperatura, exactamente 10 mV por cada grado centígrado empezando en cero grados. La última entrada analógica viene de una resistencia sensible a la luz (LDR) colocada junto con otra resistencia formando un divisor resistivo entre 0 y 5 Voltios. Las fuentes digitales se han implementado mediante interruptores que dan 0 ó 5 V. C. Barra de 8 leds y display de 7 segmentos La salida digital básica consiste en un led por cada bit de un puerto. En este caso se ha elegido una barra de leds para reducir espacio. Otra salida digital básica consiste en un simple display de 7 segmentos. Se han conectado estos dos dispositivos de salida a los 8 bits del puerto B del PIC. La figura 3 muestra el circuito de esta conexión. XI JORNADAS DE PARALELISMO—GRANADA, SEPTIEMBRE 2000 D9 GA[0..7] 1 20 GA0 2 19 GA1 3 18 GA2 4 17 GA3 5 16 GA4 6 15 GA5 7 14 GA6 8 13 GA7 9 12 R14 D10 10 7 6 4 2 1 9 10 5 a b c d e f g dp GA0 GA1 GA2 GA3 GA4 GA5 GA6 GA7 1 2 3 4 5 6 7 8 GA0 GA1 GA2 GA3 GA4 GA5 GA6 GA7 16 15 14 13 12 11 10 9 3 8 gnd1 gnd2 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 330 DIP 16 SC52-11HWA 11 LN10304 3 es un tipo de teclado que ofrece 2n teclas por cada n bits y es muy simple de usar. El teclado 4x4 (16 teclas) está conectado también al puerto B. Los 4 bits más significativos están conectados a las filas, y los 4 menos significativos a las columnas. No hay necesidad de colocar resistencias de pull-up, ya que el propio PIC las proporciona (siempre que se configure para ello). Si el teclado estuviera conectado en otro puerto sí que podría ser necesario disponer externamente de estas resistencias. 3 SW14 2 Fig. 3. Circuito de la barra de leds y display de 7 segmentos Ambos dispositivos, display y leds, comparten el mismo paquete de resistencias, lo que provoca que uno de los dispositivos tome la mayor parte de la corriente, al ser diodos, y luzca más. Para evitar esto se han elegido dispositivos cuyos diodos tienen características similares de tensión y corriente de polarización. D. Display múltiple de 7 segmentos Para incrementar la complejidad de los dispositivos de salida, se ha incluido un display múltiple formado por cuatro sencillos de 7 segmentos. Hay varias posibilidades de control de este tipo de display múltiple, pero se ha optado por un display de refresco, ya que permite introducir conceptos como la realización de tareas de fondo, interrupciones de refresco, etc., durante la ejecución normal de un programa. La figura 4 muestra el circuito de este display de 4 displays de 7 segmentos. Los 4 bits menos significativos del puerto B están conectados al 74LS48 que es el convertidor de BCD a 7 segmentos. La salida de este convertidor es común a los 4 displays. Con el fin de que sólo aparezca el número en el display deseado, se han puesto 4 señales de habilitación en los 4 bits más significativos del puerto B, de manera que estos bits controlan los transistores que conectan o desconectan cada display de forma individual. Un número de 4 cifras se construye poniendo cada vez un dígito en la parte baja del puerto B. al tiempo que se selecciona un display diferente. Si esta alternancia se realiza lo suficientemente rápida, el ojo verá un número de 4 cifras casi sin parpadeos. G[0:7] D4 D5 a b c d e f g dp gnd1 gnd2 7 6 4 2 1 9 10 5 a b c d e f g dp 3 8 gnd1 gnd2 SC52-11HWA 7 6 4 2 1 9 10 5 gnd1 gnd2 3 Q2 RB7 G0 G1 G2 G3 G4 G5 G6 G7 a b c d e f g dp 3 8 gnd1 gnd2 3 Q3 RB6 G0 G1 G2 G3 G4 G5 G6 G7 G0 G1 G2 G3 G4 G5 G6 13 12 11 10 9 15 14 A B C D E F G 1 2 4 8 BI/RBO RBI LT 7 1 2 6 4 5 3 RB0 RB1 RB2 RB3 74LS48 3 Q4 RB5 1 VCC 6 RA1/AN15 RA0/AN04 POT10K 2 3 R35 2 1 E R/W RS LCD VEE 2X16 VCC GND P2 5 9 4 8 3 7 2 6 1 RB4 U13 13 8 11 10 RC6/TX VCC 3 SW3 2 C24+ C25+ 1u 1u RS-232 DISP1.ON 1 3 4 5 2 6 + C26 1u C27 + E. Teclado matricial 4x4 Es importante disponer de un teclado en una tarjeta de desarrollo. Se ha optado por un teclado matricial, ya que RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 G. Interface RS232 Es importante que una tarjeta de desarrollo disponga de algún puerto de comunicaciones y transmisión de datos, aunque sea sencillo. Se ha incorporado el RS232 porque es sencillo, disponible, está en la mayoría de ordenadores personales, y la mayoría de PICs incluye una UART de comunicaciones serie donde es sencillo implementar una conexión RS232. Lo único necesario para implementar la comunicación RS232 es un circuito que adapta las tensiones de 5 V del PIC a las de 12 V del RS232. Esto se consigue con un MAX232 por ejemplo, tal como muestra la figura 6. 10K Fig. 4. Circuito correspondiente al display múltiple de 4 cifras 7 8 9 10 11 12 13 14 Fig. 5. Circuito del LCD 2N3904 1 D0 D1 D2 D3 D4 D5 D6 D7 LCD R7 2 10K RA2/AN2 LCD.ON D13 1 10K 2N3904 R40 3 2 3 8 R6 2 1 10K 2N3904 7 6 4 2 1 9 10 5 SW21 SC52-11HWA R5 2 1 10K 2N3904 7 6 4 2 1 9 10 5 SC52-11HWA R4 2 1 a b c d e f g dp 3 8 U5 D7 G0 G1 G2 G3 G4 G5 G6 G7 SC52-11HWA 3 Q1 VCC D6 G0 G1 G2 G3 G4 G5 G6 G7 F. Pantalla LCD El último paso hacia un display de mediana complejidad lo constituye la pantalla LCD. Hay otras pantallas más sofisticadas, pero hay pocas que sean tan versátiles, estándares, económicas, y fáciles de usar. El LCD de la tarjeta está conectado al puerto B y A del PIC. El puerto B se utiliza como bus de datos, mientras que en los tres bits menos significativos de A se han implementado las señales de control del LCD. La figura 5 muestra la conexión del LCD al PIC de la tarjeta. 3 DISP2.ON 1 1 1u R1IN R2IN T1IN T2IN C+ C1C2+ C2V+ VMAX232 Fig. 6. Interface RS232 R1OUT R2OUT T1OUT T2OUT 12 9 14 7 RC7/RX 4 AUTORES: TÍTULO DEL ARTÍCULO H. Bus I2C El protocolo de bus I2C permite la transmisión de datos entre varios dispositivos con tan solo dos hilos. La simplicidad y facilidad de uso son sólo algunas de las razones para incluirlo en sistemas empotrados. La mayoría de microcontroladores modernos, incluyendo los PIC, disponen de dos pines para el bus I2C. Por otro lado, hay varios dispositivos periféricos que disponen de este bus como único interface digital, facilitando la interconexión de dispositivos. Se han incluido dos de estos periféricos en la tarjeta EduPIC. Uno de ellos es un conversor A/D y D/A. El conversor A/D no era en principio necesario pues el PIC ya tiene 4 puertos de este tipo, pero la conversión D/A no forma parte de casi ningún PIC, por lo que resulta interesante incluirla dentro de la tarjeta. De esta manera la tarjeta ya puede leer y escribir señales analógicas. El otro dispositivo I2C es una simple EEPROM serie que expande la capacidad de almacenamiento del PIC, especialmente porque algunos PICs (pocos) no incluyen ninguna memoria EEPROM para escritura permanente. I. Interface USB Hay algunos microcontroladores PIC, muy pocos todavía, que incluyen un interface USB en el propio micro. No sólo incluyen la parte lógica de comunicaciones, sino que generan las señales eléctricas según el estándar USB 1.0; esto significa que se puede realizar una conexión de bus USB sin necesidad de ningún circuito externo, salvo un par de resistencias y condensadores. El puerto USB del PIC comparte pines con el bus I2C entre otros, por lo que si se quiere que una tarjeta de desarrollo permita ambos buses, es necesario disponer de unos puentes de configuración. Esto lo hace la tarjeta EduPIC con dos puentes que permiten elegir entre bus I2C y USB. Por otro lado, la configuración de las señales del puerto puede ser diferente dependiendo de que la tarjeta actúe como maestro o como esclavo. La configuración por defecto es la de esclavo, ya que es la más usual. Además, no todos los PIC soportan el modo maestro. III. SOFTWARE No se ha implementado ningún firmware en la tarjeta. Este era uno de los requisitos, pues se pretendía que el código implementado no dependiera de ningún sistema operativo o firmware que pudiera estar presente en la tarjeta, y que pudiera interferir en la aplicación. Sin embargo, es necesario algún mecanismo que permita la descarga de la aplicación en el PIC y luego se ejecute. Esto se ha implementado mediante la capacidad ICSP (programación serie) de los PIC, que permite que puedan ser grabados en la propia tarjeta. Para ello es necesario disponer de un programa en el PC que se comunique con el PIC y le grabe el programa. Se ha desarrollado un programa que realiza esta labor entre otras. Este programa lee el código en formato HEX generado por el compilador y lo transmite al PIC, comprobando que la grabación sea correcta. Esta función es la principal, pero también permite escribir datos en la memoria EEPROM del PIC, lee el contenido del PIC, permite cambiar la configuración del PIC, permite su desprotección, etc. Estas funciones se combinan en una interface amistosa que funciona tanto en Windows como Linux. La tarjeta está adaptada para ser usada con otros programas de descarga y grabación de libre distribución como el ICProg. IV. SESIONES DE LABORATORIO Hay un total de 5 sesiones en el laboratorio de microcontroladores. El principal objetivo es cubrir la mayor parte de características tanto del micro como de los periféricos, para combinarlos en aplicaciones lo más realistas posible. En la última sesión se ofrece la oportunidad de que el estudiante invente su propio proyecto. Sesión 1: Programación en ensamblador En esta sesión los estudiantes realizan un pequeño programa en ensamblador del PIC. En el resto de sesiones utilizan C, pero es importante que sepan qué hay detrás de cualquier programa en C. Además hay ciertas características que son sólo accesibles si se conoce el ensamblador del PIC. En esta sesión se aprende también el manejo de las herramientas de depuración básicas como el simulador. Sesión 2: Interrupciones, temporización y display múltiple En esta sesión se introduce el lenguaje C. Se explica el uso de las interrupciones y temporizaciones mediante el uso del display múltiple de 4 dígitos. En esta sesión el estudiante debe implementar un contador de doble sentido. Deben generar interrupciones cada cierto tiempo (timer1) para modificar el contador y atender a las señales de parada e inicialización. Al mismo tiempo se debe refrescar el display para mostrar en cada momento el valor del contador. Sesión 3: Teclado y LCD Mediante la implementación de un conversor de temperaturas, los estudiantes aprenden a leer de un teclado matricial y a escribir y controlar un LCD. Sesión 4: Entradas analógicas y comunicación serie En esta sesión se aprende a leer las entradas analógicas y a mandar/recibir datos por el puerto serie RS232 conectado al ordenador. Para ello envían por el puerto serie el valor analógico de uno de los puertos. El puerto analógico se elige mediante el teclado del ordenador. Sesión 5: Proyecto libre En esta última sesión el estudiante presenta un proyecto propio que ha ido desarrollando durante el curso. El proyecto debe funcionar sobre la tarjeta y hacer uso de la mayor cantidad de dispositivos. Otras sesiones, otras asignaturas Tal y como se comentó anteriormente, esta tarjeta se emplea también en la asignatura de periféricos, donde se implementa un periférico esclavo basado en USB. También en la asignatura de Instrumentación, donde se generan señales analógicas a partir de patrones digitales. REFERENCIAS [1] Microchip Inc, Varios Manuales y notas de aplicación. http://www.microchip.com/ [2] Fernando Pardo, EduPic, Tarjeta de desarrollo para sistemas basados en PIC: Manual del usuario, http://tapec.uv.es/edupic/