Microcontrolador
jorgeo2330 de Agosto de 2011
5.416 Palabras (22 Páginas)670 Visitas
DISEÑO, PROGRAMACIÓN E IMPLANTACIÓN DE UN SISTEMA DE CONTROL CON EL MICROCONTROLADOR PIC 16F84
INTRODUCCIÓN
En el siguiente proyecto de Microcontroladores PIC haremos una explicación teórica sobre su funcionamiento, programación y sus características principales, para así llegar al desarrollo del diseño y su implantación práctica. Para este proyecto se utilizara el
PIC 16F84 o en su defecto el PIC 16C84.
Ya que el " PIC 16F84 " es un MICROCONTROLADOR con memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya que no se requiere de borrado con luz ultravioleta como las versiones EPROM sino, permite reprogramarlo nuevamente sin ser borrado con anterioridad. Por esta razón, lo usaremos en la mayoría de aplicaciones que se desarrollan a lo largo del estudio.
El PIC 16C84 es un microcontrolador de la familia MICROCHIP, totalmente compatible con el PIC 16F84. Su principal característica es que posee memoria "EEPROM" en lugar de memoria Flash, pero su manejo es igual. Con respecto al PIC16F84, este microcontrolador presenta dos diferencias:
• La memoria de datos tiene menor tamaño, aquí se tienen 32 registros de propósito general (el mapa de memoria de datos llega hasta 2Fh).
• En el momento de programar el microcontrolador, el fusible de selección del temporizador de arranque (Power Up Timer) trabaja de forma inversa, es decir, si en el PIC 16F84 se selecciona la opción "Low" para activarlo, en el PIC 16C84 se debe seleccionar "High".
Este microcontrolador ha sido reemplazado de forma gradual por el PIC 16F84, por lo tanto, los diseños que lo utilicen como elemento de control deben ser actualizados. Aunque, como se ve, es un proceso casi transparente.
Este microcontrolador se basa en la Arquitectura Harvard, en la cual el programa y los datos se pueden trabajar desde memorias separadas, lo que posibilita que las instrucciones y los datos posean longitudes diferentes. Esta misma estructura es la que permite la superposición de los ciclos de búsqueda y ejecución de las instrucciones, lo cual se ve reflejado en una mayor velocidad del microcontrolador.
MARCO TEÓRICO
- MEMORIA DE PROGRAMA
Es una memoria de 1 K byte de longitud con palabra de 14 bits. Como es del tipo FLASH se puede programar y borrar eléctricamente, en otras palabras, se puede programar o borrar sin necesidad de un borrador de luz ultravioleta, lo que facilita el desarrollo de programas y la experimentación. Como el PIC 16F84 tiene un contador de programa de 13 bits, tiene una capacidad de direccionamiento de 8K x 14, pero solamente tiene implementado el primer 1K x 14 (000h hasta 03FFh). Si se direccionan posiciones de memoria superiores a 3FFh se causará un solapamiento o desborde con el espacio del primer 1K.
- VECTOR DE RESET
Cuando ocurre un reset o se enciende el microcontrolador, el contador de programa se pone en ceros (000h). Por esta razón, en la primera dirección del programa se debe escribir todo lo relacionado con la iniciación del mismo.
- VECTOR DE INTERRUPCION
Cuando el microcontrolador recibe una señal de interrupción el contador de programa apunta a la dirección 04h de la memoria de programa, por eso allí se debe escribir toda la programación necesaria para atender dicha interrupción.
- REGISTROS (Memoria RAM)
El PIC 16F84 puede direccionar 128 posiciones de memoria RAM, pero solamente tiene implementado físicamente los primeros 80 (0 a 4Fh). De estos los primeros 12 son registros que cumplen un propósito especial en el control del microcontrolador y los 68 siguientes son registros de uso general que se pueden usar para guardar los datos temporales de la tarea que se esta ejecutando. Los registros están organizados como dos bancos (paginas) de 128 posiciones de 8 bits cada una (128 x 8); todas las posiciones se pueden accesar directa o indirectamente (estas ultimas a través del registro FSR). Para seleccionar que pagina de registro se trabaja en un momento determinado se utiliza el bit RP0 del registro STATUS.
- PINES Y FUNCIONES
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 PIC 16F84 tiene dos puertos. El puerto A con 5 líneas y el puerto B con 8 líneas. Cada pin se puede configurar como entrada o como salida independiente programado por un par de registros diseñados para tal fin. En ese registro un "0" configura el pin del puerto correspondiente como salida y un "1" lo configura como entrada.
- PUERTO A
RA0 = Pin de Entrada/Salida (TTL).
RA1 = Pin de Entrada/Salida (TTL).
RA2 = Pin de Entrada/Salida (TTL).
RA3 = Pin de Entrada/Salida (TTL).
RA4/TOCKI = Pin de Entrada/Salida o entrada de Reloj Externo para el TMR0, cuando este pin se configura como salida es de tipo Open Drain (ST), cuando funciona como salida se debe conectar a Vcc (+5V) a través de una resistencia.
- PUERTO B
RB0/INT = Pin de Entrada/Salida o entrada de interrupción externa. (TTL/ST).
RB1 = Pin de Entrada/Salida (TTL).
RB2 = Pin de Entrada/Salida (TTL).
RB3 = Pin de Entrada/Salida (TTL).
RB4 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL).
RB5 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL).
RB6 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL/ST).
RB7 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL/ST).
- PINES ADICIONALES
MCLR = Pin de Reset del Microcontrolador (Master Clear). Se activa (el pic se resetea) cuando tiene un "0" lógico en su entrada.
Vss = Ground o Tierra
VDD = Fuente Positiva (+5V)
OSC2/CLKOUT = Entrada del Oscilador del Cristal. Se conecta al Cristal o Resonador en modo XT (Oscilador de Cristal). En modo RC (Resistencia-Condensador), este pin actúa como salida el cual tiene 1/4 de la frecuencia que entra por el pin OCS1/CLKIN.
OSC1/CLKIN = Entrada del Oscilador del Cristal / Entrada de reloj de una Fuente Externa.
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 conectan o desconectan a la vez. La resistencia de pull-up es desconectada automáticamente en un pin si este se programa como salida. El pin RB0/INT se puede configurar por software para que funcione como interrupción externa.
El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida como se mencionaba anteriormente o como entrada del temporizador/contador. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger, ST), esto quiere decir que 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 lógico 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 conectado a alguna parte, nunca dejarlos al aire por que se puede dañar el integrado. Los pines que no se estén usando se deben conectar la fuente de alimentación +5V con una resistencia de < 5 Kilo Ohmio.
La máxima capacidad 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.
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.
Por Ejemplo: Para un reloj de 4 MHz el consumo es de aproximadamente de 2mA; aunque este se puede reducir a 40 microamperios cuando está en el modo sleep (en este modo el micro se detiene y disminuye el consumo de potencia). Se sale de este estado cuando se produce alguna condición especial que veremos mas adelante.
• PINES Y FUNCIONES (Figura)
- EL OSCILADOR EXTERNO
Todo Microcontrolador requiere un circuito externo que le indique la velocidad a la que debe trabajar. Este circuito, que se conoce con el nombre de oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema. El PIC 16F84 puede utilizar cuatro tipos de oscilador diferentes. Estos tipos son:
• RC. Oscilador con resistencia y condensador.
• XT. Cristal de cuarzo.
• HS. Cristal de alta velocidad.
• LP. Cristal para baja frecuencia y bajo consumo de potencia.
En el momento de programar o "quemar" el microcontrolador se debe especificar que tipo de oscilador se usa. Esto se hace a través de unos fusibles llamados "fusibles de configuración".
En la mayoría de las practicas que se realizan se sugiere el cristal de 4 MHz, por que garantiza una mayor precisión y un buen arranque del microcontrolador. Internamente esta frecuencia esta dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instrucción se realiza en un microsegundo (1 µS). El cristal debe ir acompañado de dos condensadores y se conecta como se muestra en la figura siguiente.
Dependiendo
...