Proyectos Con Microcontroladores 2013A
-
Upload
victor-de-la-torre -
Category
Documents
-
view
95 -
download
2
Transcript of Proyectos Con Microcontroladores 2013A
2013
M. en C. Pedro Arturo Cornejo Torres
Cedula Profesional 7444531
@Ware Systems
03/04/2013
Proyectos con Microcontroladores
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Contenido Instrucciones ....................................................................................................................................... 3
Proyecto 1 Desarrollo de funciones del controlador del módulo LCD Gráfico ................................... 3
Proyecto 2 Desarrollo de funciones de librería para manejo del teclado hexadecimal ..................... 7
Proyecto 3 Detector de luz y su color ................................................................................................. 8
Proyecto 4 Transferencia de Mensajes de Texto desde el PC al Microcontrolador ........................... 9
Proyecto 5 Calculadora Electrónica basada en Microcontrolador .................................................... 10
Proyecto 6 Termómetro Digital para PC ........................................................................................... 11
Proyecto 7 Reloj Digital y Despertador Programable ....................................................................... 12
Proyecto 8 Síntesis de color a través de LEDs RGB y Modulación de Ancho de Pulso PWM. ........... 14
Proyecto 9 Medidor de Velocidad Promedio .................................................................................... 15
Proyecto 10 Comunicación entre dos Microcontroladores mediante I2C ........................................ 15
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Instrucciones Haciendo uso de su PIC18F4553, su PC, así como de otros componentes electrónicos y
herramientas de software para analizar, desarrollar, implementar y probar soluciones a los
proyectos que se listan más adelante. Cada proyecto establece el objetivo general, los
requerimientos y referencias a fuentes de información de utilidad.
Los proyectos pueden realizarse de manera individual o en binas y deberán ser presentados ante
el profesor para su supervisión y/o evaluación.
Se abrirá un foro de discusión en Facebook para aclarar dudas, sugerencias y consejos en la
realización de sus proyectos.
Todo el firmware deberá ser desarrollado usando el lenguaje C y puede usar sus extensiones para
ensamblador en línea (bloques de ensamblador).
Proyecto 1 Desarrollo de funciones del controlador del módulo LCD
Gráfico
Objetivos
Comprender el funcionamiento, el uso y modo de integración de los dispositivos de
despliegue gráfico para aplicaciones industriales. En particular del módulo GLCD 12864/A.
Desarrollar, implementar y probar un conjunto de funciones escritas en C que permita
establecer la capa de abstracción de hardware con el protocolo de señales entre un
módulo GLCD 12864/A conectado al microcontrolador PIC18F4553 para así realizar
interfaz gráfica de usuario a través de la funcionalidad de la biblioteca gráfica @Ware
Graphics Library.
Usar una biblioteca de síntesis gráfica, en particular @Ware Graphics Library, para acelerar
el desarrollo de aplicaciones basadas en @Ware EduProto III-4553.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
La biblioteca gráfica está disponible para su descarga desde el grupo de Facebook. @Ware
Graphics Library implementa ya el procesamiento necesario para realizar síntesis gráfica, y
funciona como middleware entre la aplicación y la capa de abstracción de hardware tal y como se
muestra en la siguiente figura.
Las capas de abstracción de hardware permiten al programador realizar las adaptaciones lógicas y
físicas, como la asignación de puertos y qué pines de control serán utilizados. Así, la biblioteca
gráfica y por transitividad también la aplicación quedan completamente aislados de éstos detalles
físicos de conexión y señalización entre el GLCD y el MCU.
Las aplicaciones invocan a las funciones de @Ware Graphics Library, mientras que ésta última,
invoca a su vez a las siguientes variables y funciones de la capa de abstracción de hardware
(Hardware Abstraction Layer):
Declaración Descripción HAL unsigned char
g_ucGLCDDataIn; Vector de 8 bits (byte) que sirve para recibir el estado o el dato del framebuffer del GLCD. @Ware Graphics lee los datos correspondientes a los píxeles desde ésta variable, mientras que HAL escribe en ésta variable depositando el valor leído desde el GLCD. Véase la descripción sobre g_ucDevChild para más detalles. Las funciones HAL que escriben en ésta variable son: User_ATGReadData User_ATGReadStatus
unsigned char
g_ucGLCDDataOut; Vector de 8 bits (byte) que sirve para envíar el comando o dato al framebuffer del GLCD. @Ware Graphics escribe los datos correspondientes a los píxeles en ésta variable, mientras que HAL lee la información de ésta variable enviándolo al GLCD. Véase la descripción sobre
@Ware Graphics Library
Capa de Abstracción de Hardware HAL Controlador de dispositivo
(Controlador de Dispositivo)
Hardware Módulo GLCD 12864
Aplicación PIC18 @Ware ESS Based App
Objetivo del proyecto:
HAL Objetivo del proyecto: Conexión
Objetivo del proyecto:
Usar
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
g_ucDevChild para más detalles. Las funciones HAL que leen ésta variable son: User_ATGWriteData User_ATGWriteCommand
unsigned char
g_ucGLCDDevChild; Vector de 8 bits (byte) que sirve para seleccionar cuál de los dos chips de control del GLCD, recibirá ordenes del HAL así: Cuando g_ucGLCDDevChild==0, entonces CS1=1, en caso contrario CS1=0. Cuando g_ucGLCDDevChild==1, entonces CS2=1, en caso contrario CS2=0. Nunca se debe cumplir que CS2==CS1==1, es decir, nunca se deben seleccionar ambos chips gráficos al mismo tiempo. Para mayor información acerca de los chips gráficos encargados del despliegue de información gráfica en el módulo GLCD, consulte el manual.
void
User_ATGWriteCommand(void) Transfiere el comando almacenado en g_ucGLCDDataOut al registro de comandos del chip gráfico seleccionado según g_ucGLCDDevChild. La función genera el tren de señales CS1, CS2, DI, RW, E, DB7:0 necesario para que el módulo GLCD acepte el comando. Nota: La función debe llamar a User_ATGReadStatus y verificar y esperar a la disponibilidad de los chips gráficos para aceptar comandos.
void
User_ATGWriteData(void) Transfiere el dato almacenado en g_ucGLCDDataOut al registro de datos del chip gráfico seleccionado según g_ucGLCDDevChild. La función genera el tren de señales CS1, CS2, DI, RW, E, DB7:0 necesario para que el módulo GLCD acepte el dato. Nota: La función debe llamar a User_ATGReadStatus y verificar y esperar a la disponibilidad de los chips gráficos para aceptar comandos.
void
User_ATGReadStatus(void) Transfiere la palabra de estado del chip gráfico seleccionado por g_ucGLCDDevChild a la variable g_ucGLCDDataIn. La función genera el tren de señales CS1,CS2,DI,RW,E,DB7:0 necesario para que el módulo GLCD permita leer la palabra de estados y ser capturada por los puertos. Nota: Los chips gráficos siempre están disponibles para leer la palabra de estado de cualquiera de los chips.
void
User_ATGReadData(void) Transfiere el registro de datos del chip gráfico seleccionado por g_ucGLCDDevChild a la variable g_ucGLCDDataIn. La función genera el tren de señales CS1,CS2,DI,RW,E,DB7:0 necesario para que el módulo GLCD permita leer la palabra de estados y ser capturada por los puertos. Nota: La función debe llamar a User_ATGReadStatus y verificar y esperar a la disponibilidad de los chips gráficos
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
para poder recibir datos. Nota: La función deberá generar un ciclo de E para que el chip gráfico realice una copia desde del framebuffer interno y otro ciclo de E para que se transfiera al registro de datos del chip gráfico y proceder con la lectura. Puede ser necesario invocar a User_ATGReadStatus entre cada ciclo para verificar la disponibilidad del dato y del chip gráfico.
Requerimientos Realizar las conexiones necesarias entre el Microcontrolador y el Módulo GLCD para que
exista la comunicación entre estos elementos a través del puerto D como el bus de datos y
puerto B como el bus de control.
No utilice los puertos A y C, E, puesto que el puerto A será utilizado para aplicaciones
analógicas más adelante, y el puerto C para comunicaciones con otros dispositivos. Es
importante que deje libres también los pines SDA y SCL, RB0 y RB1 respectivamente.
El circuito puede estar alimentado desde el puerto USB o desde una fuente externa. No es
necesaria la comunicación con el PC, aún.
Implementar el HAL con el comportamiento anteriormente expuesto.
Integrar el HAL como parte de su aplicación y además vincular la biblioteca @Ware
Graphics Library.
Realizar una demostración del funcionamiento, realizando algunas primitivas gráficas
tanto geométricas como de texto. Sea creativo.
Debe mostrar al profesor la implementación de las funciones y la ejecución de un
programa de demostración del módulo GLCD funcionando con su microcontrolador.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 2 Desarrollo de funciones de librería para manejo del
teclado hexadecimal
Objetivo Desarrollar, implementar y probar un teclado hexadecimal así como el conjunto de
funciones escritas en C que permita manejar y utilizar apropiadamente ese teclado
conectado al microcontrolador PIC18F4553.
Requerimientos Construir o adquirir un teclado hexadecimal.
Las teclas deben etiquetarse con el símbolo del dígito que representan.
El circuito del teclado no debe consumir más de 10mA en el peor caso.
El firmware debe tratar y resolver el efecto de rebote al presionar una tecla. De no tratar
este problema, una sola presión puede generar la introducción de información
equivalente a presionar más de una vez a esa tecla. Cuide mucho este detalle.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
La librería debe estar conformada por las siguientes funciones:
Declaración Descripción
unsigned char KB_Hit(void) Retorna 1 si actualmente esta presionada una tecla. Retorna 0 si no hay tecla presionada. Esta función no es bloqueante, es decir, retorna inmediatamente.
unsigned char KB_Read(void) Retorna el código 0x00 al 0x0f de la tecla presionada. Retorna 0xff si no hay tecla presionada en ese instante. Esta función no es bloqueante.
unsigned char KB_Get(void) Retorna el código 0x0 al 0xf de la tecla presionada. La función no retorna hasta que se haya presionado una tecla por lo que ésta función es bloqueante. Esta función elimina el ruido o rebote de interruptores.
Una guía acerca de cómo eliminar el ruido o rebote de interruptores:
http://www.ganssle.com/debouncing.pdf
También encontrará guía relacionada con el teclado hexadecimal y la eliminación de rebotes en la
bibliografía recomendada.
Debe mostrar al profesor, la librería y un ejemplo simple que demuestre su correcto
funcionamiento.
Proyecto 3 Detector de luz y su color
Objetivo Usar el diodo emisor de luz como detector de luz.
Comprender el funcionamiento y configuración de un ADC (Analog to Digital Converter).
Comprender y aplicar los conceptos de muestreo y cuantización de señales análogas, a
través del uso del ADC interno del microcontrolador.
Analizar, diseñar e implementar, un circuito que utilice tres LEDs: uno rojo, uno azul y uno
verde, para detectar la intensidad de la luz así como su color. Realizar el acoplamiento y
acondicionamiento de las señales de entrada requeridas para que sean procesables por un
microcontrolador.
Requerimientos La aplicación deberá mostrar en el módulo GLCD, las intensidades de los canales RGB de 0
a 255.
Se debe utilizar sólo tres canales análogos para realizar el muestreo mediante el ADC del
microcontrolador, uno por cada color detectable.
Debido a que cada color de LED tiene características eléctricas distintas, deberá normalizar
las señales que se alimentan hacia el microcontrolador. Podrá utilizar tanto
acondicionamiento por hardware o por software. Las señales que recibe el
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
microcontrolador deberán estar en el rango de 0V (Mínima intensidad de luz) a 4V
(Máxima intensidad de luz), estos rangos pueden variar debido al posible
acondicionamiento por software, pero no debe excederse de este rango. Tamién puede
optar por un regulador de voltaje de 3.3V basado en Zener para alimentar a los circuitos
detectores. Recuerde que los puertos analógicos presentan alta impedancia de entrada, lo
cual resulta una increíble ventaja para los sensores y así el pin del canal analógico se
comporta como carga despreciable.
Es posible utilizar transistores y/o amplificadores operaciones para el acondicionamiento
de las señales.
El periodo de muestreo es cada 250ms y se actualiza las cuantizaciones normalizadas de 0
a 255 inmediatamente en el GLCD.
Proyecto 4 Transferencia de Mensajes de Texto desde el PC al
Microcontrolador
Objetivo
Desarrollar, implementar y probar, una aplicación para PC escrita en cualquier lenguaje de
programación que reciba una cadena de texto interactivamente. Cuando el usuario
complete el mensaje, éste debe transferirse al Microcontrolador y mostrarlo al Módulo de
GLCD.
Requerimientos Implementar una aplicación para PC en cualquier lenguaje de programación que permita
capturar un mensaje del usuario y enviarlo al Microcontrolador.
La aplicación de PC, debe conectarse y desconectarse a cualquier puerto COMn donde se
encuentre el Microcontrolador.
Utilizar la @Ware Graphics Library de manejo del Módulo GLCD desarrollada en el
Proyecto 1.
Utilizar las facilidades de @Ware ESS 2.50 para recibir la información del mensaje de texto
desde el PC, implementando los comandos que sean necesarios en el firmware.
Cada mensaje que el usuario redacte, deberá ser escrito en el Módulo GLCD haciendo uso
de la consola de texto de @Ware Graphics Library.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 5 Calculadora Electrónica basada en Microcontrolador
Objetivo Construir una calculadora electrónica RPN que permita realizar la suma, resta,
multiplicación, división de números enteros negativos y positivos en base 10. Los números
y los resultados se visualizan el Módulo LCD mientras que los argumentos y operadores
son introducidos desde el teclado.
Requerimientos Utilizar @Ware Graphics Library así como el módulo GLCD del Proyecto 1.
Utilizar la librería de manejo del Teclado Hexadecimal del Proyecto 2.
Los valores deben representarse en base 2 utilizando precisión de 32 bits con signo (su
base natural, por supuesto) dentro del microcontrolador antes de ser operados y ser
mostrados en base 10 en Módulo LCD. El tipo de estos valores debe ser del tipo “long”.
Los valores son introducidos en una pila estática con capacidad de hasta 8 argumentos de
32 bits con signo.
Los valores son introducidos a la pila cuando se presione la tecla <enter> (Cualquier tecla
del teclado hexadecimal que considere adecuada).
En cuanto se presione un operador (+, - , *, / ) (cualquier tecla del teclado hexadecimal
que considere adecuada) se consumen dos argumentos de la pila y se coloca el resultado
de la operación en el tope de la pila. Si a la pila le queda un sólo argumento o está vacía,
debe notificar al usuario del error en el Módulo GLCD. El mensaje puede aparecer por un
tiempo adecuado y luego reasumirse la función de calculadora.
El usuario introduce y visualiza los valores como lo haría en una calculadora común, sea
creativo.
Los valores deben presentarse alineados al margen derecho de la pantalla.
No se requiere comunicación con el PC.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 6 Termómetro Digital para PC
Objetivo Analizar, Diseñar e Implementar un circuito basado en el Microcontrolador PIC18F4553
que permita medir la temperatura ambiente. El valor de la temperatura deberá mostrarse
en el Módulo GLCD y poder ser consultado desde el PC.
IMPORTANTE: Este proyecto utiliza tanto hardware y las facilidades de @Ware ESS 2.5 para
comunicarse con el PC.
Requerimientos Desarrollar una aplicación para PC que permita consultar la temperatura del circuito
termómetro.
La aplicación para PC debe conectarse y desconectarse al termómetro digital a través del
puerto COMn.
La temperatura debe mostrarse en base 10 y en grados Celsius y en forma de una gráfica
en el Módulo GLCD. En el PC la temperatura deberá mostrarse en grados Celsius y
Fahrenheit de forma numérica.
La temperatura debe muestrearse del sensor LM35 al menos cada segundo.
Se requiere medir la temperatura desde 0.00ºC hasta 99.99ºC. El circuito debe ser sensible
al menos a (5/100) ºC.
Debe ser lo más resistente al ruido electromagnético. Diseñe un circuito estable.
Utilizar el convertidor ADC interno del Microcontrolador.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 7 Reloj Digital y Despertador Programable
Objetivo Construir un reloj despertador basado en el Microcontrolador PIC18F4553, que muestre la
hora actual y la hora de alarma en el GLCD y que permita su operación y configuración a
través del teclado hexadecimal. El reloj, despertador también debe poder ser programado
a través de la PC.
Requerimientos La hora actual deberá mostrarse de manera analógica, digital y (opcionalmente en binario)
el cuadro izquierdo de 64x64 pixeles. Mientras que en la mitad restante se dedicará la
interfaz con el usuario para operar con el reloj, configurar las alarmas y otras opciones. La
siguiente figura muestra la distribución de la pantalla.
La zona de interfaz de usuario, se mostrara incondicionalmente cuando no hay alarma
activa.
La zona de interfaz de usuario se ocultará automática después de tener al menos 10
segundos de inactividad por parte del usuario, siempre y cuando haya al menos evento de
alarma programado así:
17:59:59 17:59:59
17:59:59
Interfaz de usuario
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Las alarmas pueden ser periódicas o eventuales.
Las horas de las alarmas debe ser programable por el usuario del reloj.
Hasta cinco eventos deben ser programados.
Cuando la zona de interfaz de usuario se oculte, deberá mostrar el próximo evento que se
accionará en el futuro más próximo.
Deberá utilizar temporizadores de hardware para lograr exactitud con respecto al
oscilador basado en cristal a 48MHz. Debido a la precisión requerida por las aplicaciones
de éste tipo, no es opcional cualquier otro método de sincronización.
Deberá utilizar una bocina para generar el sonido de alarma. La alarma sonora la controla
el MCU. Puede sintetizar el sonido usando cualquier medio gobernado por el MCU.
La alarma visual deberá realizarse junto con la alarma sonora.
El usuario puede cancelar la alarma sonora y/o visual de dos maneras.
Si la PC está conectada impedir la interacción con el teclado hexadecimal. Si el usuario se
encuentra configurando cualquier opción del reloj mediante el teclado hexadecimal al
momento de conectar el PC, se deberá cancelar cualquier cambio realizado hasta el
momento. Sólo la PC podrá tomar el control del reloj.
Cuando la PC se desconecte, permitirá el control a través del teclado hexadecimal.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 8 Síntesis de color a través de LEDs RGB y Modulación de
Ancho de Pulso PWM.
Objetivos Conocer y aplicar los conceptos de la síntesis de señales mediante la modulación de ancho
de pulso.
Desarrollar módulos de software basados en interrupciones para la implementación de
generadores de onda cuadrada con PWM, en este caso para controlar intensidad de la luz
de LED’s.
Comprender los fundamentos de conmutación para la síntesis de señales analógicas. En
este caso, color.
Requerimientos. A través de tres sintetizadores PWM que controlan la intensidad de tres LEDs, uno rojo,
uno verde y otro azul, construir una fuente de luz difusa capaz de generar hasta 16
millones de colores de luz diferentes.
La síntesis del color se controla a través del teclado hexadecimal.
Indicar la intensidad actual de cada LED en el GLCD. Un 0 indica que ese LED está
completamente apago, y un 255 completamente encendido. Si se normaliza, indica
respectivamente el ciclo de trabajo del PWM.
Cada PWM tiene control independiente. Una tecla que aumenta el ciclo de trabajo hasta el
punto máximo, y otra tecla lo decrementa el ciclo de trabajo hasta el punto mínimo. En
total son seis teclas que controlan la síntesis del color.
No es necesaria la comunicación con PC.
Proyectos con Microcontroladores M. en C. Pedro Arturo Cornejo Torres
Proyecto 9 Medidor de Velocidad Promedio
Objetivo Desarrolle una herramienta basada en Microcontrolador PIC18F4553 para medir la velocidad
promedio y la aceleración promedio de un móvil con trayectoria rectilínea.
Requerimientos Proponer y tratar con el profesor.
Proyecto 10 Comunicación entre dos Microcontroladores mediante
I2C
Objetivo Construir cualquier aplicación interesante que demuestre el uso del bus I2C.
Requerimientos Proponer y tratar con el profesor.
Más sobre I2C en http://en.wikipedia.org/wiki/I%C2%B2C .