Manual de Microcontrolador 16F873

Anuncio
Manual de Microcontrolador 16F873
Universidad de Guanajuato
FIMEE
Barrón Zambrano José Hugo
Dr. Gustavo Cerda Villafaña
Índice general
Índice de cuadros
III
Índice de figuras
IV
1. Introducción
1.1. Controlador y microcontrolador . . . . . . . . . . . . . .
1.2. Diferencia entre microprocesador y microcontrolador . .
1.3. Aplicaciones de los microcontroladores . . . . . . . . . .
1.4. El mercado de los microcontroladores . . . . . . . . . . .
1.5. ¿Qué microcontrolador emplear? . . . . . . . . . . . . . .
1.6. Recursos comunes a todos los microcontroladores . . . .
1.6.1. Arquitectura básica . . . . . . . . . . . . . . . . .
1.6.2. El procesador o CPU . . . . . . . . . . . . . . . .
1.6.3. Memoria . . . . . . . . . . . . . . . . . . . . . . .
1.6.4. Puertas de Entrada y Salida . . . . . . . . . . . .
1.6.5. Reloj principal . . . . . . . . . . . . . . . . . . .
1.7. Recursos especiales . . . . . . . . . . . . . . . . . . . . .
1.7.1. Temporizadores o Timers . . . . . . . . . . . . . .
1.7.2. Perro guardián o Watchdog . . . . . . . . . . . .
1.7.3. Protección ante fallo de alimentación o Brownout
1.7.4. Estado de reposo ó de bajo consumo . . . . . . .
1.7.5. Conversor A/D (CAD) . . . . . . . . . . . . . . .
1.7.6. Conversor D/A (CDA) . . . . . . . . . . . . . . .
1.7.7. Comparador analógico . . . . . . . . . . . . . . .
1.7.8. Modulador de anchura de pulso o PWM . . . . .
1.7.9. Puertos de E/S digitales . . . . . . . . . . . . . .
1.7.10. Puertos de comunicación . . . . . . . . . . . . . .
1.8. Herramientas para el desarrollo de aplicaciones . . . . . .
I
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
4
4
5
8
8
9
10
12
12
13
13
14
14
14
14
15
15
15
15
16
16
ÍNDICE GENERAL
II
1.8.1. Desarrollo del software (Ensamblador) . . . . . . . . . 16
2. Introducción al PIC16F873
2.1. Descripción del PIC16F873 . . . . . . . .
2.2. Encapsulado . . . . . . . . . . . . . . . .
2.3. Organización de memoria . . . . . . . . .
2.3.1. Memoria de Datos (RAM) . . . .
2.4. Puertos de Entrada/Salida . . . . . . . .
2.4.1. PUERTO A y el Registro TRISA
2.4.2. PUERTO B y el Registro TRISB
2.4.3. PUERTO C y el Registro TRISC
2.5. Ejemplo de configuración para E/S . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Algoritmos implementados
3.1. Control de velocidad . . . . . . . . . . . . . . .
3.1.1. Driver L293D . . . . . . . . . . . . . . .
3.1.2. Programa para control de velocidad . . .
3.1.3. Diagrama de implementación . . . . . .
3.2. Medidor de distancia con un sensor infrarrojo .
3.2.1. Convertidor Analógico-Digital . . . . . .
3.2.2. Sensor infrarrojo GP2D12. . . . . . . . .
3.2.3. Programa para la medición de distancia
3.3. Implementación . . . . . . . . . . . . . . . . . .
Universidad de Guanajuato
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
20
21
21
23
23
23
23
24
.
.
.
.
.
.
.
.
.
26
26
27
30
32
33
33
37
39
41
FIMEE
Índice de cuadros
2.1. Caracterı́sticas del PIC16F873 . . . . . . . . . . . . . . . . . 19
2.2. Descripción de pines del 16F873 . . . . . . . . . . . . . . . . . 25
3.1. Descripción de funcionamiento del L293D . . . . . . . . . . . . 29
3.2. Máximas frecuencias de operación . . . . . . . . . . . . . . . . 37
III
Índice de figuras
1.1. Estructura de un sistema abierto basado en un microprocesador.
1.2. El microcontrolador es un sistema cerrado. . . . . . . . . . . .
3
4
2.1. Encapsulado del PIC16F873. . . . . . . . . . . . . . . . . . . . 20
2.2. Mapa de los bancos del PIC16F873. . . . . . . . . . . . . . . . 22
3.1. Modulación por ancho de pulso (PWM). . . .
3.2. Dirver L293D bloques. . . . . . . . . . . . . .
3.3. Dirver L293D encapsulado . . . . . . . . . . .
3.4. Conexión del L293D. . . . . . . . . . . . . . .
3.5. Diagrama de conexión. . . . . . . . . . . . . .
3.6. Registro de control ADCON0. . . . . . . . . .
3.7. Registro de control ADCON1. . . . . . . . . .
3.8. Operación de justificación. . . . . . . . . . . .
3.9. Sensor infrarrojo GP2D12. . . . . . . . . . . .
3.10. Curva de respuesta del sensor GP2D12. . . . .
3.11. Diagrama de la implementación para medición
IV
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
de distancia.
.
.
.
.
.
.
.
.
.
.
.
27
28
28
29
33
34
35
37
38
38
41
Capı́tulo 1
Introducción
Los microcontroladores están conquistando el mundo. Están presentes
en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden
encontrar controlando el funcionamiento de los ratones y teclados de las computadoras, en los teléfonos, en los hornos de microondas y los televisores de
nuestro hogar. Pero la invasión acaba de comenzar y el nacimiento del siglo
XXI será testigo de la conquista masiva de estas diminutas computadoras,
que gobernarán la mayor parte de los aparatos que fabricaremos y usemos
los humanos.
1.1.
Controlador y microcontrolador
Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o varios procesos. Por ejemplo, el controlador que regula el
funcionamiento de un horno dispone de un sensor que mide constantemente
su temperatura interna y, cuando traspasa los lı́mites prefijados, genera las
señales adecuadas que accionan los actuadores que intentan llevar el valor de
la temperatura dentro del rango estipulado.
Aunque el concepto de controlador ha permanecido invariable a través
del tiempo, su implementación fı́sica ha variado frecuentemente. Hace tres
décadas, los controladores se construı́an exclusivamente con componentes de
lógica discreta, posteriormente se emplearon los microprocesadores, que se
rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso.
1
1.2. Diferencia entre microprocesador y microcontrolador
2
En la actualidad, todos los elementos del controlador se han podido incluir
en un chip, el cual recibe el nombre de microcontrolador. Realmente consiste
en una sencilla pero completa computadora contenida en el corazón (chip)
de un circuito integrado.
Un microcontrolador es un circuito integrado de alta escala de integración
que incorpora la mayor parte de los elementos que configuran un controlador.
Un microcontrolador dispone normalmente de los siguientes componentes:
Procesador o CPU (Unidad Central de Procesamiento). Memoria RAM para
contener los datos. Memoria para el programa tipo ROM/PROM/EPROM.
Lı́neas de E/S para comunicarse con el exterior. Diversos módulos para el
control de periféricos (temporizadores, Puertos Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.). Generador de pulsos de reloj que sincronizan el funcionamiento de todo el sistema.
Los productos que para su regulación incorporan un microcontrolador
disponen de las siguientes ventajas: Aumento de prestaciones, un mayor control sobre un determinado elemento representa una mejora considerable en
el mismo. Aumento de la fiabilidad al reemplazar el microcontrolador por
un elevado número de elementos disminuye el riesgo de averı́as y se precisan
menos ajustes. Reducción del tamaño en el producto acabado. La integración
del microcontrolador en un chip disminuye el volumen, la mano de obra y los
stocks. Mayor flexibilidad: las caracterı́sticas de control están programadas
por lo que su modificación sólo necesita cambios en el programa de instrucciones.
Debido a su reducido tamaño es posible montar el controlador en el propio
dispositivo al que gobierna. En este caso el controlador recibe el nombre de
controlador empotrado (embedded controller).
1.2.
Diferencia entre microprocesador y microcontrolador
El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (CPU), también llamada procesador, de una computadora. La
Universidad de Guanajuato
FIMEE
1.2. Diferencia entre microprocesador y microcontrolador
3
UCP está formada por la Unidad de Control, que interpreta las instrucciones,
y el Camino de Datos, que las ejecuta. Las patitas de un microprocesador
sacan al exterior las lı́neas de sus buses de direcciones, datos y control, para
permitir conectarle con la Memoria y los Módulos de E/S y configurar una
computadora implementada por varios circuitos integrados. Se dice que un
microprocesador es un sistema abierto porque su configuración es variable de
acuerdo con la aplicación a la que se destine. (Figura 1.1)
Figura 1.1: Estructura de un sistema abierto basado en un microprocesador.
La disponibilidad de los buses en el exterior permite que se configure a la
medida de la aplicación. Si sólo se dispusiese de un modelo de microprocesador, éste deberı́a tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciación
supondrı́a en muchos casos un despilfarro.
El microcontrolador, por otro lado, es un sistema cerrado. Todas las partes
del microcontrolador están contenidas en su interior y sólo salen al exterior
las lı́neas que gobiernan los periféricos.
En la práctica cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más
poderosos. Es posible seleccionar la capacidad de las memorias, el número de
lı́neas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad
de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño
es la selección del microcontrolador a utilizar.
Universidad de Guanajuato
FIMEE
1.3. Aplicaciones de los microcontroladores
4
Figura 1.2: El microcontrolador es un sistema cerrado.
1.3.
Aplicaciones de los microcontroladores
Cada vez existen más productos que incorporan un microcontrolador con
el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y
costo, mejorar su fiabilidad y disminuir el consumo. Algunos fabricantes de
microcontroladores superan el millón de unidades de un modelo determinado producidas en una semana. Este dato puede dar una idea de la masiva
utilización de estos componentes.
Los microcontroladores están siendo empleados en multitud de sistemas
presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigorı́ficos, televisores, computadoras, impresoras, módems, el sistema
de arranque de nuestro coche, etc. Y otras aplicaciones con las que seguramente no estaremos tan familiarizados como instrumentación electrónica,
control de sistemas en una nave espacial, etc. Una aplicación tı́pica podrı́a
emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrı́an comunicarse entre ellos y con
un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones, como, de hecho, ocurre ya habitualmente
en cualquier PC.
1.4.
El mercado de los microcontroladores
Aunque en el mercado de la microinformática la mayor atención la acaparan los desarrollos de los microprocesadores, lo cierto es que se venden
Universidad de Guanajuato
FIMEE
1.5. ¿Qué microcontrolador emplear?
5
cientos de microcontroladores por cada uno de aquéllos. Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante sea
entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de
los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la
realidad es que los microcontroladores de 8 bits dominan el mercado y los
de 4 bits se resisten a desaparecer. La razón de esta tendencia es que los
microcontroladores de 4 y 8 bits son apropiados para la gran mayorı́a de
las aplicaciones, lo que hace absurdo emplear micros más potentes y consecuentemente más caros.
Uno de los sectores que más tira del mercado del microcontrolador es el
mercado automovilı́stico. De hecho, algunas de las familias de microcontroladores actuales se desarrollaron pensando en este sector, siendo modificadas
posteriormente para adaptarse a sistemas más genéricos. El mercado del automóvil es además uno de los más exigentes: los componentes electrónicos
deben operar bajo condiciones extremas de vibraciones, choques, ruido, etc.
y seguir siendo fiables. El fallo de cualquier componente en un automóvil
puede ser el origen de un accidente.
En cuanto a las técnicas de fabricación, cabe decir que prácticamente
la totalidad de los microcontroladores actuales se fabrican con tecnologı́a
CMOS (Complementary Metal Oxide Semiconductor). Esta tecnologı́a supera las técnicas anteriores por su bajo consumo y alta inmunidad al ruido.
La distribución de las ventas según su aplicación es la siguiente: Una tercera parte se absorbe en las aplicaciones relacionadas con las computadoras
y sus periféricos. La cuarta parte se utiliza en las aplicaciones de consumo
(electrodomésticos, juegos, TV, vı́deo, etc.). También los modernos microcontroladores de 32 bits van afianzando sus posiciones en el mercado, siendo
las áreas de más interés el procesamiento de imágenes, las comunicaciones, las
aplicaciones militares, los procesos industriales y el control de los dispositivos
de almacenamiento masivo de datos.
1.5.
¿Qué microcontrolador emplear?
A la hora de escoger el microcontrolador a emplear en un diseño concreto hay que tener en cuenta multitud de factores, como la documentación y
herramientas de desarrollo disponibles y su precio, la cantidad de fabricantes
Universidad de Guanajuato
FIMEE
1.5. ¿Qué microcontrolador emplear?
6
que lo producen y por supuesto las caracterı́sticas del microcontrolador (tipo
de memoria de programa, número de temporizadores, interrupciones, etc.).
Los costos, como es lógico, los fabricantes de microcontroladores compiten
duramente para vender sus productos. Y no les va demasiado mal ya que
sin hacer demasiado ruido venden 10 veces más microcontroladores que microprocesadores. Para que nos hagamos una idea, para el fabricante que usa
el microcontrolador en su producto una diferencia de precio en el microcontrolador es importante (el consumidor deberá pagar además el costo del
empaquetado, el de los otros componentes, el diseño del hardware y el desarrollo del software).
Si el fabricante desea reducir costos debe tener en cuenta las herramientas de apoyo con que va a contar: emuladores, simuladores, ensambladores,
compiladores, etc. Es habitual que muchos de ellos siempre se apuesten por
microcontroladores pertenecientes a una única familia.
Antes de seleccionar un microcontrolador es imprescindible analizar los
requisitos de la aplicación.
Procesamiento de datos; Puede ser necesario que el microcontrolador realice cálculos crı́ticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rápido para ello.
Por otro lado, habrá que tener en cuenta la precisión de los datos a
manejar: si no es suficiente con un microcontrolador de 8 bits, puede
ser necesario acudir a microcontroladores de 16 ó 32 bits, o incluso a
hardware de punto flotante. Una alternativa más barata y quizá suficiente es usar librerı́as para manejar los datos de alta precisión.
Entrada Salida: para determinar las necesidades de Entrada/Salida del sistema es conveniente dibujar un diagrama de bloques del mismo, de tal
forma que sea sencillo identificar la cantidad y tipo de señales a controlar. Una vez realizado este análisis puede ser necesario añadir periféricos
hardware externos o cambiar a otro microcontrolador más adecuado a
ese sistema.
Consumo: algunos productos que incorporan microcontroladores están alimentados con baterı́as y su funcionamiento puede ser tan vital como
activar una alarma antirrobo. Lo más conveniente en un caso como
Universidad de Guanajuato
FIMEE
1.5. ¿Qué microcontrolador emplear?
7
éste puede ser que el microcontrolador esté en estado de bajo consumo
pero que despierte ante la activación de una señal (una interrupción) y
ejecute el programa adecuado para procesarla.
Memoria: para detectar las necesidades de memoria de nuestra aplicación
debemos separarla en memoria volátil (RAM), memoria no volátil (ROM,
EPROM, etc.) y memoria no volátil modificable (EEPROM). Este último tipo de memoria puede ser útil para incluir información especı́fica de
la aplicación como un número de serie o parámetros de calibración. El
tipo de memoria a emplear vendrá determinado por el volumen de ventas previsto del producto: de menor a mayor volumen será conveniente
emplear EPROM, OTP (One Time Pro- grammable) y ROM. En cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar
una versión preliminar, aunque sea en pseudo-código, de la aplicación
y a partir de ella hacer una estimación de cuánta memoria volátil y no
volátil es necesaria y si es conveniente disponer de memoria no volátil
modificable.
Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos
de la aplicación. Usar un microcontrolador de 4 bits supondrá una reducción en los costos importante, mientras que uno de 8 bits puede ser
el más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado costo, deben reservarse
para aplicaciones que requieran sus altas prestaciones (Entrada/Salida
potente o espacio de direccionamiento muy elevado).
Diseño de la placa: la selección de un microcontrolador concreto condicionará el diseño de la placa de circuitos. Debe tenerse en cuenta que
quizá usar un microcontrolador barato encarezca el resto de componentes del diseño. Los microcontroladores más populares se encuentran,
sin duda, entre las mejores elecciones: 8048 (Intel). Es el padre de los
microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todavı́a sea muy popular.
8051 (Intel y otros). Es sin duda el microcontrolador más popular. Fácil
de programar, pero potente. Está bien documentado y posee cientos de
variantes e incontables herramientas de desarrollo. 80186, 80188 y 80386
EX (Intel). Versiones en microcontrolador de los populares microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar
Universidad de Guanajuato
FIMEE
1.6. Recursos comunes a todos los microcontroladores
8
las herramientas de desarrollo para PC. 68HC11 (Motorola y Toshiba).
Es un microcontrolador de 8 bits potente y popular con gran cantidad
de variantes. 683xx (Motorola). Surgido a partir de la popular familia
68k, a la que se incorporan algunos periféricos. Son microcontroladores
de altı́simas prestaciones.
PIC (MicroChip) familia de microcontroladores que gana popularidad
dı́a a dı́a. Fueron los primeros microcontroladores RISC. Es preciso
resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un gran número de variantes.
1.6.
Recursos comunes a todos los microcontroladores
Al estar todos los microcontroladores integrados en un chip, su estructura
fundamental y sus caracterı́sticas básicas son muy parecidas. Todos deben
disponer de los bloques esenciales: Procesador, memoria de datos y de instrucciones, lı́neas de E/S, oscilador de reloj y módulos controladores de
periféricos. Sin embargo, cada fabricante intenta enfatizar los recursos más
idóneos para las aplicaciones a las que se destinan preferentemente.
En esta parte se hace un recorrido de todos los recursos que se hallan en
todos los microcontroladores describiendo las diversas alternativas y opciones
que pueden encontrarse según el modelo seleccionado.
1.6.1.
Arquitectura básica
Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de von Neumann, en el momento presente se impone la arquitectura Harvard.
La arquitectura de von Neumann se caracteriza por disponer de una sola
memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único
(direcciones, datos y control). La arquitectura Harvard dispone de dos memorias independientes, una que contiene sólo instrucciones y otra, sólo datos.
Universidad de Guanajuato
FIMEE
1.6. Recursos comunes a todos los microcontroladores
9
Ambas disponen de sus respectivos sistemas de buses de acceso y es posible
realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas
memorias.Los microcontroladores PIC responden a la arquitectura Harvard.
1.6.2.
El procesador o CPU
Es el elemento más importante del microcontrolador y determina sus principales caracterı́sticas, tanto a nivel hardware como software. Se encarga de
direccionar la memoria de instrucciones, recibir el código de la instrucción
en curso, su decodificación y la ejecución de la operación que implica la instrucción, ası́ como la búsqueda de los operandos y el almacenamiento del
resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales.
CISC: Un gran número de procesadores usados en los microcontroladores
están basados en la filosofı́a CISC (Computadoras de Juego de Instrucciones Complejo). Disponen de más de 80 instrucciones máquina en
su repertorio, algunas de las cuales son muy sofisticadas y potentes,
requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas
que actúan como macros.
RISC: Tanto la industria de los computadores comerciales como la de los
microcontroladores están decantándose hacia la filosofı́a RISC (Computadoras de Juego de Instrucciones Reducido). En estos procesadores
el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez
y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.
SISC: En los microcontroladores destinados a aplicaciones muy concretas,
el juego de instrucciones, además de ser reducido, es especı́fico, o sea,
las instrucciones se adaptan a las necesidades de la aplicación prevista.
Esta filosofı́a se ha bautizado con el nombre de SISC (Computadoras
de Juego de Instrucciones Especı́fico).
Universidad de Guanajuato
FIMEE
1.6. Recursos comunes a todos los microcontroladores
1.6.3.
10
Memoria
En los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y se
destina a contener el programa de instrucciones que gobierna la aplicación.
Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las
variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de las
computadoras personales: No existen sistemas de almacenamiento masivo
como disco duro o disquetes. Como el microcontrolador sólo se destina a una
tarea en la memoria ROM, sólo hay que almacenar un único programa de
trabajo. La RAM en estos dispositivos es de poca capacidad pues sólo debe
contener las variables y los cambios de información que se produzcan en el
transcurso del programa.
Por otra parte, como sólo existe un programa activo, no se requiere
guardar una copia del mismo en la RAM pues se ejecuta directamente desde la
ROM. Los usuarios de computadoras personales están habituados a manejar
Megabytes de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y de
RAM comprendidas entre 20 y 512 bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores,
la aplicación y utilización de los mismos es diferente. Se describen las cinco
versiones de memoria no volátil que se pueden encontrar en los microcontroladores del mercado.
ROM: con máscara Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. El elevado costo del
diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.
OTP: El microcontrolador contiene una memoria no volátil de sólo lectura
”programable una sola vez”por el usuario. Es el usuario quien puede
escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde una PC. La versión OTP es recomendable
cuando es muy corto el ciclo de diseño del producto, o bien, en la consUniversidad de Guanajuato
FIMEE
1.6. Recursos comunes a todos los microcontroladores
11
trucción de prototipos y series muy pequeñas. Tanto en este tipo de
memoria como en la EPROM, se suele usar la encriptación mediante
fusibles para proteger el código contenido.
EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse
muchas veces. La grabación se realiza, como en el caso de los OTP,
con un grabador gobernado desde una PC. Si, posteriormente, se desea
borrar el contenido, disponen de una ventana de cristal en su superficie
por la que se somete a la EPROM a rayos ultravioleta durante varios
minutos. Las cápsulas son de material cerámico y son más caros que los
microcontroladores con memoria OTP que están hechos con material
plástico.
EEPROM: Se trata de memorias de sólo lectura, programables y borrables
eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy
Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de una
PC. Es muy cómoda y rápida la operación de grabado y la de borrado.
No disponen de ventana de cristal en la superficie.
Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera
sin ser retirados de dicho circuito. Para ello se usan ”grabadores en
circuito”que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que
puede grabarse y borrarse una memoria EEPROM es finito, por lo que
no es recomendable una reprogramación continua. Son muy idóneos
para la enseñanza y la Ingenierı́a de diseño.
Se va extendiendo en los fabricantes la tendencia de incluir una pequeña
zona de memoria EEPROM en los circuitos programables para guardar
y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta.
FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede
escribir y borrar. Funciona como una ROM y una RAM pero consume
Universidad de Guanajuato
FIMEE
1.6. Recursos comunes a todos los microcontroladores
12
menos y es más pequeña. A diferencia de la ROM, la memoria FLASH
es programable en el circuito. Es más rápida y de mayor densidad que
la EEPROM.
La alternativa FLASH está recomendada frente a la EEPROM cuando
se precisa gran cantidad de memoria de programa no volátil. Es más
veloz, pero tolera menos ciclos de escritura/borrado.
Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados en circuito,
es decir, sin tener que sacar el circuito integrado de la tarjeta. Ası́, un dispositivo con este tipo de memoria incorporado al control del motor de un
automóvil permite que pueda modificarse el programa durante la rutina de
mantenimiento periódico, compensando los desgastes y otros factores tales
como la compresión, la instalación de nuevas piezas, etc. La reprogramación
del microcontrolador puede convertirse en una labor rutinaria dentro de la
puesta a punto.
1.6.4.
Puertas de Entrada y Salida
La principal utilidad de las patitas que posee la cápsula que contiene un
microcontrolador es soportar las lı́neas de E/S que comunican al computador
interno con los periféricos exteriores. Según los controladores de periféricos
que posea cada modelo de microcontrolador, las lı́neas de E/S se destinan a
proporcionar el soporte a las señales de entrada, salida y control.
1.6.5.
Reloj principal
Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los pulsos de reloj
usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se
necesitan unos pocos componentes exteriores para seleccionar y estabilizar
la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal
de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red
RC. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se
ejecutan las instrucciones pero lleva aparejado un incremento del consumo
de energı́a.
Universidad de Guanajuato
FIMEE
1.7. Recursos especiales
1.7.
13
Recursos especiales
Cada fabricante oferta numerosas versiones de una arquitectura básica
de microcontrolador. En algunas amplı́a las capacidades de las memorias, en
otras incorpora nuevos recursos, en otras reduce las prestaciones al mı́nimo
para aplicaciones muy simples, etc. La labor del diseñador es encontrar el
modelo mı́nimo que satisfaga todos los requerimientos de su aplicación. De
esta forma, minimizará el coste, el hardware y el software. Los principales
recursos especı́ficos que incorporan los microcontroladores son:
Temporizadores o ”Timers”.
Perro guardián o ”Watchdog”.
Protección ante fallo de alimentación o ”Brownout”.
Estado de reposo o de bajo consumo.
Conversor A/D. o Conversor D/A.
Comparador analógico.
Modulador de anchura de pulsos o PWM.
Puertos de E/S digitales.
Puertos de comunicación.
1.7.1.
Temporizadores o Timers
Se emplean para controlar periodos de tiempo (temporizadores) y para
llevar la cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y
a continuación dicho valor se va incrementando o decrementando al ritmo
de los pulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0,
momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las
patitas del microcontrolador, el mencionado registro se va incrementando o
decrementando al ritmo de dichos pulsos.
Universidad de Guanajuato
FIMEE
1.7. Recursos especiales
1.7.2.
14
Perro guardián o Watchdog
Cuando una computadora personal se bloquea por un fallo del software
u otra causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un
microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del dı́a. El Perro guardián consiste en un temporizador
que, cuando se desborda y pasa por 0, provoca un reset automáticamente en
el sistema. Se debe diseñar el programa de trabajo que controla la tarea de
forma que refresque o inicialice al Perro guardián antes de que provoque el
reset. Si falla el programa o se bloquea, no se refrescará al Perro guardián y,
al completar su temporización, ”ladrará y ladrará”hasta provocar el reset.
1.7.3.
Protección ante fallo de alimentación o Brownout
Se trata de un circuito que resetea al microcontrolador cuando el voltaje
de alimentación (VDD) es inferior a un voltaje mı́nimo (”brownout”). Mientras el voltaje de alimentación sea inferior al de brownout el dispositivo se
mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa
dicho valor.
1.7.4.
Estado de reposo ó de bajo consumo
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento
externo que le ponga de nuevo en funcionamiento. Para ahorrar energı́a, (factor clave en los aparatos portátiles), los microcontroladores disponen de una
instrucción especial (SLEEP en los PIC), que les pasa al estado de reposo o
de bajo consumo, en el cual los requerimientos de potencia son mı́nimos. En
dicho estado se detiene el reloj principal y se detienen sus circuitos asociados,
quedando sumido en un profundo sueño el microcontrolador. Al activarse una
interrupción ocasionada por el acontecimiento esperado, el microcontrolador
se despierta y reanuda su trabajo.
1.7.5.
Conversor A/D (CAD)
Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital)
pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD
Universidad de Guanajuato
FIMEE
1.7. Recursos especiales
15
diversas señales analógicas desde las patitas del circuito integrado.
1.7.6.
Conversor D/A (CDA)
Transforma los datos digitales obtenidos del procesamiento de una computadora en su correspondiente señal analógica que saca al exterior por una
de las patitas de la cápsula. Existen muchos dispositivos que trabajan con
señales analógicas.
1.7.7.
Comparador analógico
Algunos modelos de microcontroladores disponen internamente de un
Amplificador Operacional que actúa como comparador entre una señal fija
de referencia y otra variable que se aplica por una de las patitas de la cápsula.
La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal
sea mayor o menor que la otra. También hay modelos de microcontroladores
con un módulo de tensión de referencia que proporciona diversas tensiones
de referencia que se pueden aplicar en los comparadores.
1.7.8.
Modulador de anchura de pulso o PWM
Son circuitos que proporcionan en su salida pulsos de anchura variable,
que se ofrecen al exterior a través de las patitas del encapsulado.
1.7.9.
Puertos de E/S digitales
Todos los microcontroladores destinan algunas de sus patitas a soportar
lı́neas de E/S digitales. Por lo general, estas lı́neas se agrupan de ocho en
ocho formando Puertos.
Las lı́neas digitales de los Puertos pueden configurarse como Entrada o
como Salida cargando un 1 ó un 0 en el bit correspondiente de un registro
destinado a su configuración.
Universidad de Guanajuato
FIMEE
1.8. Herramientas para el desarrollo de aplicaciones
1.7.10.
16
Puertos de comunicación
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse
con otros dispositivos externos, otros buses de microprocesadores, buses de
sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras
normas y protocolos. Algunos modelos disponen de recursos que permiten
directamente esta tarea, entre los que destacan:
UART: adaptador de comunicación serie ası́ncrona.
USART: adaptador de comunicación serie sı́ncrona y ası́ncrona Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores.
USB: (Universal Serial Bus), que es un moderno bus serie para las PC.
Bus I2C: que es un interfaz serie de dos hilos desarrollado por Philips.
CAN(Controller Area Network ): , para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch
e Intel para el cableado de dispositivos en automóviles. En EE.UU. se
usa el J185O.
1.8.
Herramientas para el desarrollo de aplicaciones
Uno de los factores que más importancia tiene a la hora de seleccionar un
microcontrolador entre todos los demás es el soporte software como hardware
de que dispone. Un buen conjunto de herramientas de desarrollo puede ser
decisivo en la elección, ya que pueden suponer una ayuda inestimable en
el desarrollo del proyecto. La principal herramienta de ayuda al desarrollo de sistemas basados en microcontroladores son: Desarrollo del software
(Ensamblador).
1.8.1.
Desarrollo del software (Ensamblador)
La programación en lenguaje ensamblador puede resultar un tanto difı́cil
para el principiante, pero permite desarrollar programas muy eficientes, ya
que otorga al programador el dominio absoluto del sistema. Los fabricantes
Universidad de Guanajuato
FIMEE
1.8. Herramientas para el desarrollo de aplicaciones
17
suelen proporcionar el programa ensamblador de forma gratuita y en cualquier
caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares.
Compilador: La programación en un lenguaje de alto nivel (como el C ó el
Basic) permite disminuir el tiempo de desarrollo de un producto. No
obstante, si no se programa con cuidado, el código resultante puede ser
mucho más ineficiente que el programado en ensamblador.
Las versiones más potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos.
Depuración: Debido a que los microcontroladores van a controlar dispositivos fı́sicos, los desarrolladores necesitan herramientas que les permitan comprobar el buen funcionamiento del microcontrolador cuando es
conectado al resto de circuitos.
Simulador: Los simuladores son capaces de ejecutar en una PC programas
realizados para el microcontrolador. Los simuladores permiten tener un
control absoluto sobre la ejecución de un programa, siendo ideales para
la depuración de los mismos. Su gran inconveniente es que es difı́cil
simular la entrada y salida de datos del microcontrolador. Tampoco
cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el paso fı́sico de la implementación de un modo más seguro y
menos costoso, puesto que ahorraremos en grabaciones de chips para
la prueba in-situ.
Placas de evaluación; Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse a una PC desde el que se
cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LEDs, fácil acceso a los
pines de E/S, etc.
El sistema operativo de la placa recibe el nombre de programa monitor. El programa monitor de algunas placas de evaluación, aparte de
Universidad de Guanajuato
FIMEE
1.8. Herramientas para el desarrollo de aplicaciones
18
permitir cargar programas y datos en la memoria del microcontrolador,
puede permitir en cualquier momento realizar la ejecución paso a paso, monitorizar el estado del microcontrolador o modificar los valores
almacenados en los registros o en la memoria.
Emuladores en circuito: Se trata de un instrumento que se coloca entre
una PC anfitrión y el zócalo de la tarjeta de circuito impreso donde se
alojará el microcontrolador definitivo. El programa es ejecutado desde
una PC, pero para la tarjeta de aplicación es como si lo hiciese el
mismo microcontrolador que luego irá en el zócalo. Presenta en pantalla
toda la información tal y como luego sucederá cuando se coloque el
encapsulado.
Universidad de Guanajuato
FIMEE
Capı́tulo 2
Introducción al PIC16F873
En este capitulo se trataran las diversas caracterı́sticas de este microcontrolador. También se tratarán las funciones básica como lo es la configuración
para la entrada y salida de información.
2.1.
Descripción del PIC16F873
El PIC16F873 es un microcontrolador de Microchip,el cual tiene las siguientes caracterı́sticas.
Cuadro 2.1: Caracterı́sticas del PIC16F873
Caracterı́stica
Descripción
Frecuencia de operación
20 MHz
Memoria FLASH de programa (palabra de 14 bits) 4k
Memoria de datos (bytes)
192
Memoria de datos EEPROM (bytes)
128
Interrupciones
13
Puertos de E/S
Puertos A, B, C
Temporizadores
3
Módulos de Captura/Comparacion/PWM
2
Comunicación serial tipo
MSSP, USART
Módulo Análogo-Digital (10 bits)
5 canales de entrada
Conjunto de instrucciones
35
Por lo que el PIC es muy útil para para el desarrollo de diferentes apli19
2.2. Encapsulado
20
caciones tales como control y procesamiento digital de señales.
2.2.
Encapsulado
El PIC16F873 se presenta en un encapsulado de 28 pines como se ve en
la Figura 2.1 y la descripción de cada pin se muestran en el cuadro 2.2.
Figura 2.1: Encapsulado del PIC16F873.
Universidad de Guanajuato
FIMEE
2.3. Organización de memoria
2.3.
21
Organización de memoria
Hay tres bloques de memoria en este PIC los cuales son: memoria FLASH
de programa , memoria de Datos (RAM) y memoria EEPROM de datos.
Debido a las aplicaciones que se tratan , solo es necesario conocer la memoria
de Datos (RAM).
2.3.1.
Memoria de Datos (RAM)
La memoria de datos esta particionada en multiples bancos los cuales
contiene Registro de Propósito General y Registros de Funciones Especiales.
Los bits RP1 (STATUS(6)) y RP0 (STATUS(5)) son usados para la selección
del banco.
P1:RP0
00
01
10
11
Banco
0
1
2
3
Cada banco se extiende hasta la dirección 7Fh (128 bytes). La parte baja
de cada banco es reservada para los Registros de Funciones Especiales. Los
Registro de Propósito General pueden ser accesados cada uno directamente,
o indirectamente.
La conformación de los bancos se muestra en la Figura 2.2.
Universidad de Guanajuato
FIMEE
2.3. Organización de memoria
22
Figura 2.2: Mapa de los bancos del PIC16F873.
Universidad de Guanajuato
FIMEE
2.4. Puertos de Entrada/Salida
2.4.
23
Puertos de Entrada/Salida
Los PICs tiene la caracterı́sticas de que sus pines pueden ser todos configurados de acuerdo a la necesidad de la aplicación, es decir, que lo pines de un
mismo puerto pueden ser usados unos como entradas y otros como salidas.
Además, algunos pines E/S de los puertos son multiplexados a una funciona alternativa de caracterı́sticas periféricas. En general, cuando una función de estas es habilitada, ese pin tal vez no pueda ser usado como un pin
de propósito de E/S.
2.4.1.
PUERTO A y el Registro TRISA
El puerto A es un puerto bidireccional con un ancho de 6 bits. La correspondiente dirección de datos es el registro TRISA. Al puerto A le corresponde la dirección 05h del banco 0, en tanto que al registro TRISA le
corresponde la misma dirección pero del banco 1. Si queremos que el puerto
A funcione como entrada de datos debemos poner los correspondientes bits
del registro TRISA en 1, en cambio, si queremos que dicho puertos funcione
como salida debemos colocar los del registro TRISA a 0.
2.4.2.
PUERTO B y el Registro TRISB
El puerto B es un puerto bidireccional con un ancho de 8 bits. La correspondiente dirección de datos es el registro TRISB. Al puerto B le corresponde la dirección 06h del banco 0, en tanto que al registro TRISB le
corresponde la misma dirección pero del banco 1.
La configuración del puerto B se realiza de la misma forma que el puerto
A, solo que ahora se manipula el registro TRISB.
2.4.3.
PUERTO C y el Registro TRISC
El puerto C es un puerto bidireccional con un ancho de 8 bits. La correspondiente dirección de datos es el registro TRISC. Al puerto A le corresponde la dirección 07h del banco 0, en tanto que al registro TRISC le
corresponde la misma dirección pero del banco 1.
Universidad de Guanajuato
FIMEE
2.5. Ejemplo de configuración para E/S
24
La configuración del puerto C se realiza de la misma forma que el puerto
A, solo que ahora se manipula el registro TRISC.
2.5.
Ejemplo de configuración para E/S
En este ejemplo se mostrará la forma de realizar la configuración del
puerto A como entradas y el puerto B como salidas.
LIST
RADIX
w
f
P=16F873;Usaremos el PIC16F873A-04/P
HEX
;Todo en hexadecimal
EQU 0
EQU 1
;Cuando d=0 el destino es w
;Cuando d=1 el destino es f
;Declaración de las variables
PUERTOA EQU 05
PUERTOB EQU 06
ESTADO EQU 03
ORG
goto
ORG
0
inicio
5
;Dirección del Puerto A
;Dirección del Puerto B
;Control de los bancos
;Salto al vector de interrupción
;Configuración de los puertos A como Entrada y B como Salida
inicio bsf
ESTADO,5
;Apertura del banco 1
movlw
0x3Fh
movwf
PUERTOA
;se configuran PUERTOA como entradas
clrw
movwf
PUERTOB
;y configuran PUERTOB como salidas
bcf
ESTADO,5
;Cierre del banco 1
;Inicio de programa
clrf
PUERToB
CICLO
movf
PUERTOA,w
movwf
PUERTOB
goto
CICLO
END
Universidad de Guanajuato
;Todo a pagado
;Lleva lo del puerto A a W
;Lleva W al puerto B
;Fin del programa
FIMEE
2.5. Ejemplo de configuración para E/S
Cuadro
Pin
OSC1/CLKIN
OSC2/CLKOUT
MCLR/VPP/THV
25
2.2: Descripción de pines del 16F873
Tipo
Descripción
E
Entrada de oscilador de cristal
S
Salida de oscilador de cristal
E/V
Reset o entrada de voltaje de programación
RA0/AN0
RA1/AN1 3 3
RA2/AN2/VREF
E/S
E/S
E/S
RA3/AN3/VREF+
E/S
RA4/T0CKI
E/S
RA5/SS/AN4
E/S
RB0/INT
RB1, RB2
RB3/PGM
RB4, RB5
RB6/PGC
RB7/PGD
E/S
E/S
E/S
E/S
E/S
E/S
RC0/T1OSO/T1CKI
E/S
RC1/T1OSI/CCP2
E/S ST
RC2/CCP1
RC3/SCK/SCL
RC4
RC5
RC6/TX/CK
RC7/RX/DT
VSS
VDD
E/S
E/S
E/S
E/S
E/S
E/S
G
V
Universidad de Guanajuato
PUERTO A es un puerto bidirectional de E/S
RA0 También puede ser entrada analógica 0
RA1 También puede ser entrada analógica 1
RA2 También puede ser entrada analógica 2 o
referencia analógica de voltaje negativo
RA3 También puede ser entrada analógica 3 o
referencia analógica de voltaje positivo
RA4 Puede ser también la entrada de reloj
del módulo Temporizador 0
RA5 También puede ser entrada analógica 4
o esclavo en la selección de puertos serial sı́ncrono
PUERTOB es un puerto bidirectional de E/S
RB0 También puede ser pin de interrupción externa
RB3 Puede ser entrada de bajo voltaje de programación
Reloj de programación serial
Dato serial de programación
PUERTOC es un puerto bidirectional de E/S
RC0 Puede ser la salida del oscilador Timer1
o entrada de reloj de Timer1
RC1 Puede ser la entrada del oscilador Timer1
o entrada de Captura2/salida de Captura2/PWM2
RC2 entrada Captura1/salida Comparador1/salida PWM1
RC3 Puede ser entrada reloj de reloj de sincronı́a serial
RC4 puede ser entrada de dato SPI (en modo SPI)
RC4 puede ser salida de dato SPI (en modo SPI)
RC6 Puede ser pin transmisión USART
RC7 Puede ser pin de recepción USART
Referencia de tierra
Fuente positiva .
FIMEE
Capı́tulo 3
Algoritmos implementados
En este capitulo se describirán la algoritmos implementados, ası́ como
los diagramas para implementarlos fı́sicamente. Además, se describirán los
dispositivos ajenos al microcontrolador que se usaron para el desarrollo de la
aplicaciones.
3.1.
Control de velocidad
El control de velocidad se realiza mediante la técnica de modulacion de
ancho de pulso o PWM. Dicha técnica consiste en hacer variar el ancho del
pulso o ciclo de trabajo de una señal (Figura 3.1).
Ası́, mientras el pulso sea más ancho, la velocidad del motor será más
rápida y en cambio se el ancho del pulso es más pequeño la velocidad disminuira.
Debido al uso de un motor, este no puede ser conectado directamente al
microcontrolador ya que el consumo de corriente es elevado y por lo tanto
dañarı́a el PIC, por lo que se hará uso de el driver(L293D) para controlar el
motor.
26
3.1. Control de velocidad
27
Figura 3.1: Modulación por ancho de pulso (PWM).
3.1.1.
Driver L293D
El L293 es un driver en circuito integrado para control de motores simultáneos en forma bidireccional, el circuito usa dos puentes cada uno con
un par de canales y equipado con una entrada de habilitación o enable (Figura 3.2) .
EL L293D esta limitado a 600 mA, pero se recomienda para motores con
menor demanda de corriente, sino no se quiere tener problema con el calentamiento del driver. Además, como se ve en la Figura cuenta con unos diodos
para minimizar picos inducidos de voltaje. Este dispositivo se recomienda
para aplicaciones donde la velocidad de switcheo no es mayor a 5 KHz.
El L293 es un circuito integrado estandar de 16 pines como se observa en
la Figura 3.3.
Universidad de Guanajuato
FIMEE
3.1. Control de velocidad
28
Figura 3.2: Dirver L293D bloques.
Figura 3.3: Dirver L293D encapsulado .
La forma en que el L293D fue conectado se observa en la Figura 3.5 y
su funcionamiento se describe en el Cuadro 3.1.
Universidad de Guanajuato
FIMEE
3.1. Control de velocidad
29
Figura 3.4: Conexión del L293D.
Cuadro 3.1: Descripción de funcionamiento del L293D
ENABLE
DIRA
DIRB
Function
H
H
L
Giro a la derecha
H
L
H
Giro a la izquierda
H
L/H
L/H
Alto rápido
L
cualquiera cualquiera
Alto lento
Universidad de Guanajuato
FIMEE
3.1. Control de velocidad
3.1.2.
30
Programa para control de velocidad
Para el programa se utilizaron los 8 bits del puerto B como entradas y 2
bits del puerto A se utilizaron como salida hacia el driver para controlar el
motor.
Los ocho bits de entrada del puerto B, indican el tiempo que durara el
ciclo de trabajo o el ancho de pulso, por ejemplo, si se quiere que el ciclo de
trabajo o el ancho de pulso sea del 50 % se coloca en el puerto B la palabra
80h (10000000b ) y por lo tanto el motor girará de manera constante a una
velocidad dada. En cambio si se quire que el motor ofrezca su máxima velocidad se coloca la palabra FFh.
El código utilizado se muestra en seguida.
w
f
LIST
RADIX
EQU 0
EQU 1
P=16F873
HEX
;Usaremos el PIC16F873-04/P
;Todo en hexadecimal
;Cuando d=0 el destino es w
;Cuando d=1 el destino es f
;****************Declaración de las variables******************
PUERTOA EQU 05
PUERTOB EQU 06
ESTADO
EQU 03
;********Variables auxiliares para el retardo*************
AUX1
EQU 0F
AUX2
EQU 0E
AUX3
EQU 0C
ORG
goto
ORG
0
inicio
5
;***************Configuración de Entradas/Salidas**************
Universidad de Guanajuato
FIMEE
3.1. Control de velocidad
inicio
bsf ESTADO,5
clrw
movwf
PUERTOA
movlw
0x0FF
movwf
PUERTOB
bcf
ESTADO,5
31
;Apertura del banco 1
;Se limpia w (w=00h)
;PUERTOA como salidas
;PUERTOB como entradas
;Cierre del banco 1
;**************Programa principal*******************************
clrf
PUERTOA
;Todo apagado en el puerto A
ciclo
movf
PUERTOB,w
;Mueve lo del puerto de entrada a W
movwf
AUX2
;Mueve w a la dirección de memoria que
;apunta AUX2 (0Eh)
;********Cálculo de tiempo que durará en bajo la se~
nal******
sublw
0x0FF
;Resta el valor de entrada a FFh y se
;guarda en w
movwf
AUX3
;se mueve el resultado de la resta a la
;dirección que apunta AUX3 (0Ch)
;***********************************************************
movf
AUX2,w
addlw
0X01
movwf
AUX2
decfsz AUX2,f
goto
uno
goto
cero
;**********************************************************
uno
movlw
0x01
;Lleva el valor 01h a W
movwf
PUERTOA
;Lleva W al puerto A
call
retardo
;Llamado de el divisor de frecuencia
decfsz AUX2,f
;Se decrementa AUX2 y se deposita en
;ella misma y si llega a cero cambia
;la salida a 00h
goto
uno
;si no es cero se repite
cero
movlw
0x00
;Lleva el valor 00h a W
movwf
PUERTOA
;Lleva W al puerto A
call
retardo
;Llamado de el divisor de frecuencia
decfsz AUX3,f
;Se decrementa AUX3 y se deposita en
;ella misma y si llega a cero
;salta a la ultima instrucción
Universidad de Guanajuato
FIMEE
3.1. Control de velocidad
32
goto
cero
;si no es cero se repite
;*********************************************************
goto
ciclo
;Vuelve a iniciar
;***************Rutina de retardo*****************************
;Esta rutina se utiliza como un divisor de frecuencia, ya que no
;se puede utilizar la frecuencia del PIC de manera directa.
retardo
one
movlw
movwf
decfsz
0x90
AUX1
AUX1,f
goto one
return
END
;se lleva este valor también a AUX2
;Se decrementa AUX1 y se deposita en
;ella misma
;si llega a cero sale e la rutina
;Una vez completados los ciclos se regresa
;al programa principal
;Fin del programa
El programa arroja una señal de salida de aproximadamente un 1 KHz,
lo cual es bueno para el uso en motores pequeños.
3.1.3.
Diagrama de implementación
El diagram de conexión para el motor junto con el driver para el control
de velocidad. En la Figura 3.5 se presenta el esquema de conexión.
Como se mencionó anteriormente los 8 bits del puerto B se utilizaron
como entradas y solo 2 pines del puerto A como salidas.
En esta aplicación solo se usó un motor y el pin 8 correspondiente a VS
se conecto a la misma fuente debido a que se uso un motor pequeño, pero
pude utilizarse otro voltaje mucho mayor.
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
33
Figura 3.5: Diagrama de conexión.
3.2.
Medidor de distancia con un sensor infrarrojo
Para el desarrollo de esta aplicación se utilizo el convertidor AnalógicoDigital del PIC y el sensor infrarrojo de la marca Sharp modelo GP2D12.
3.2.1.
Convertidor Analógico-Digital
El módulo convertidor Analógico-Digital (A/D) tiene 5 entradas o canales.
La entrada analógica carga un muestra y la mantiene en un capacitor. La
salida del muestreo y la retención en el capacitor es la entrada al convertidor.
El convertidor entonces genera un resultado digital del nivel analógico
por el método de aproximaciones sucesivas. La conversión Analógico-Digital
de la entrada analógica resulta en un correspondiente número de 10 bits. El
módulo A/D tiene entradas de referencia de alto volatje (VDD ) y bajo voltaje (VSS ). Este módulo tiene la caracteritica de que puede operar mientras el
PIC se encuentra en el modo de bajo consumo de voltaje (SLEEP mode).
EL módulo de conversión A/D esta formado por cuatro registros. Estos
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
34
registros son:
Registro de resultado parte alta (ADRESH)
Registro de resultado parte baja (ADRESL)
Registro de control0 (ADCON0)
Registro de control1 (ADCON1)
El registro ADCON0 , se muestra en la Figura 3.6, controla la operación
del módulo A/D. El registro de control ADCON1 se muestra en la Figura
3.7, configura las funciones de los pines del puerto. Los pines del puerto
pueden ser configurados como entrada analógicas (RA3 también puede ser la
referencia de voltaje) o como E/S digitales.
Figura 3.6: Registro de control ADCON0.
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
35
Figura 3.7: Registro de control ADCON1.
Los registro ADRESH:ADRESL contiene los 10 bits del resultado de la
conversión A/D. Cuando el proceso de conversión A/D esta completo el resultado es cargado en este par de registros, el bit GO/DONE (ADCON0(2))
es limpiado.
Después de que el módulo A/D ha sido configurado como se desea, la selección del canal debe ser realizada antes de iniciar la conversión. Los canales
analógicos deben tener sus correspondientes bits TRIS seleccionados como
entrada.
En los siguientes pasos se muestran como realizar la conversión:
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
36
1. Configuración de módulo A/D:
Seleccionar los canales de entrada,voltaje de referencia y E/S digitales (ADCON1)
Seleccionar el canal de entrada A/D (ADCON0)
Seleccionar reloj de conversión (ADCON0)
Encender el módulo A/D (ADCON0)
2. Espera el tiempo requerido de adquisición
3. Iniciar conversion
4. Espera el proceso de conversión, por:
Limpiado del bit GO/DONE (ADCON0)
5. Leer el resultado en el par de registros (ADRESH:ADRESL)
6. Para la siguiente conversión repita el paso 1 e inicie la conversión.
Selección del reloj de Conversion A/D: La fuente de reloj para la conversión A/D es seleccionada por software. Las cuatro posibles opciones
son:
2TOSC
8TOSC
32TOSC
Internal RC oscillator
El Cuadro 3.2 muestra la frecuencia máxima de operación del reloj
seleccionado para el convertidor A/D.
Registro de resultados A/D : El par de registro ADRESH:ADESRL es
la locación donde es cargado el resultado de 10 bits de la conversión
A/D. El par de registros presenta un ancho de 16 bits. El módulo A/D
ofrece la flexibilidad de justificar el resultado de 10 bits a la derecha o
a la izquierda: El bit de selección del formato del resultado es el bit de
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
37
Cuadro 3.2: Máximas frecuencias de operación
Operación ADCS1:ADCS0 Max frec.
2TOSC
00
1.25 MHz
8TOSC
01
5 MHz
32TOSC
10
20 MHz
RC
11
control ADFM.
La Figura 3.8 muestra la operacion de justificación. Los bits extras son
leı́dos como ceros.
Figura 3.8: Operación de justificación.
Además, cuando en este par de registro no se escribe (Conversión A/D
deshabilitada), estos registro pueden ser usados como dos registros de
8 bits de propósito general.
3.2.2.
Sensor infrarrojo GP2D12.
El detector GP2D12 (Figura 3.9) toma continuamente lecturas cuando
es encendido. La salida del detector esta disponible en el pin Vo . Este valor
es actualizado aproximadamente cada 32 ms.
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
38
Figura 3.9: Sensor infrarrojo GP2D12.
Tı́picamente, la salida es conectada a un convertidor A/D (como este caso) el cual convierte la distancia medida a un numero que puede ser usado
por un microcontrolador. La salida puede ser también usada directamente en
un circuito analógico.
El GP2D12 no tiene una salida lineal para la distancia medida. La gráfica
de la Figura 3.10 muestra la tı́pica curva de respuesta.
Figura 3.10: Curva de respuesta del sensor GP2D12.
Una vez que se describieron los dispositivos a utilizar falta el software y
la implementación.
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
3.2.3.
39
Programa para la medición de distancia
Para este programa se hace uso del convertidor Analógico-Digital para
procesar la señal proveniente del sensor, la forma en que se hace la configuración es siguiendo los pasos anteriormente dichos.
Antes de describir el código se señalarán los parámetros con los que se
configuró el módulo.
Se configuró el RA0 y RA1 con entradas analógicas, RA3 como referencia positiva de voltaje (VREF + ) y el formato de salida con justificación a la
izquierda, por lo que el dato que se debe de colocar en el registro ADCON1
es el 05h.
Una vez configurado ADCON1, se configuró ADCON0 con las siguientes
caracterı́sticas: se utilizo el reloj capaz de operar a 20 MHz, se selecciono RA0
como canal de entrada, por lo que el dato a guardar en el regsitro ADCON0
es el 81h.
A continuación se muestra el programa para la medición de distancia, el
cual consiste en convertir la señal analógica proveniente del GP2D12 a digital
y desplegar los 8 bits más significativos por los pines del puerto B.
w
f
LIST
RADIX
EQU 0
EQU 1
P=16F873
HEX
;Usaremos el PIC16F873-04/P
;Todo en hexadecimal
;Cuando d=0 el destino es w
;Cuando d=1 el destino es f
;***********Declaración de las variables*************************
PUERTOA EQU 05h
PUERTOB EQU 06h
ESTADO
EQU 03h
AUX1
EQU 0Fh
;Variables auxiliares
AUX2
EQU 0Eh
AUX3
EQU 0Ch
ADCON
EQU 1Fh
ADRESH
EQU 1Eh
Universidad de Guanajuato
FIMEE
3.2. Medidor de distancia con un sensor infrarrojo
ORG
goto
ORG
0
inicio
5
40
;Salto al vector de interrupción
;********Configuración de los puertos como E/S*****************
inicio bsf ESTADO,5
;Apertura del banco 1
movlw
0x0FF
movwf
PUERTOA
;PUERTOA como entradas
clrw
movwf
PUERTOB
;PUERTOB como salida
bcf
ESTADO,5
;Cierre del banco 1
;*********Configuración del módulo de A/D*********************
clrf
PUERTOB
;Se limpian las salidas
bsf
ESTADO,5
;Apertura del banco 1
movlw
0x05
;Mueve el valor de 05h a w
movwf
ADCON
;Mueve el valor de W (05h) al registro
;de control ADCON1
bcf
ESTADO,5
;Cierre del banco 1
movlw
0x81
;Mueve el valor de 81h a w
movwf
ADCON
;Mueve el valor de w (81h) al registro
; de control ADCON0
;*********Proceso de conversión*******************************
CONV
bsf
ADCON,2
CHECA
BTFSC
GOTO
movf
ADCON,2
CHECA
ADRESH,w
movwf
PUERTOB
goto
CONV
;Inicia el proceso de conversion
;activando el bit GO/DONE
;Checa que el bit GO/DONE sea cero
;Salta a checar de nuevo el bit
;Mueve el resultado de la conversion a
;w
;Mueve el resultado guardado en w al
;puerto B
;Empieza de nuevo la conversión
END
Universidad de Guanajuato
FIMEE
3.3. Implementación
3.3.
41
Implementación
El diagrama de la implementación para este diseño se muestra e la Figura
3.11.
Figura 3.11: Diagrama de la implementación para medición de distancia.
En este desarrollo la forma en que se visualiza es a través de LEDs, pero
se pueden implementar otras interfaz de visualización como pantallas de LDC
o Display.
Como se ve el diagrama es muy sencillo y aun se puede conectar otro
sensor en el canal analógico RA1, pero aquı́ el problema es el desplegado ya
que los puertos con los que se cuenta no son muchos.
Universidad de Guanajuato
FIMEE
Descargar