Proyectos Con Microcontroladores 2013A

15
2013 M. en C. Pedro Arturo Cornejo Torres Cedula Profesional 7444531 @Ware Systems 03/04/2013 Proyectos con Microcontroladores

Transcript of Proyectos Con Microcontroladores 2013A

Page 1: Proyectos Con Microcontroladores 2013A

2013

M. en C. Pedro Arturo Cornejo Torres

Cedula Profesional 7444531

@Ware Systems

03/04/2013

Proyectos con Microcontroladores

Page 2: Proyectos Con Microcontroladores 2013A

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

Page 3: Proyectos Con Microcontroladores 2013A

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.

Page 4: Proyectos Con Microcontroladores 2013A

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

Page 5: Proyectos Con Microcontroladores 2013A

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

Page 6: Proyectos Con Microcontroladores 2013A

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.

Page 7: Proyectos Con Microcontroladores 2013A

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.

Page 8: Proyectos Con Microcontroladores 2013A

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

Page 9: Proyectos Con Microcontroladores 2013A

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.

Page 10: Proyectos Con Microcontroladores 2013A

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.

Page 11: Proyectos Con Microcontroladores 2013A

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.

Page 12: Proyectos Con Microcontroladores 2013A

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

Page 13: Proyectos Con Microcontroladores 2013A

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.

Page 14: Proyectos Con Microcontroladores 2013A

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.

Page 15: Proyectos Con Microcontroladores 2013A

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 .