LCD-BootstrapAT91G4

 Implementación ADC y Librería para LCD 16x2 sobre Tarjeta de Desarrollo CondorBoard 

= Integrantes = by by

= Descripción =

Este proyecto está basado en la Tarjeta CondorBoard desarrollada en la Universidad de Los Andes. El proyecto consiste en la visualización del valor correspondiente a la conversión digital de una señal análoga en una pantalla LCD 16x2. La señal análoga corresponde a un valor de voltaje determinado por la variación de un trimer.

Para lograr los anteriores objetivos se utilizaron los siguientes periféricos del micro-controlador AT91SAM9XE embebido en la CondorBoard.

ADC: Permite la conversión de digital de la señal de voltaje sobre el trimmer. El ADC posee 4 canales. Solo se utilizó el canal 0 en esta practica. El ADC se configuró con una resolucion de 8-bits [0 a 255].

GPIO:Se utilizó el GPIO (general purpose inputs - outputs) para controlar la pantalla LCD. Esta es controlada mediante el manejo de los pines de entrada, de forma secuencial, de acuerdo a las instrucciones proporcionadas por el fabricante del LCD.

Configuracion LCD:

A continuación se describe el proceso de Inicialización del LCD.

1. El LCD debe estar alimentado y el potenciómetro de control de contraste en posición, de lo contrario el display no funcionará.

2. Configurar el modo de funcionamiento. El LCD soporta modos de funcionamiento de 4 bits y 8 bits. En este proyecto se estableció en 4 bits. En este caso los comandos dados al LCD (1 byte), deberán enviarse divididos en dos Nibbles (4 bits). El primer nibble corresponde a los 4 bits mas significativos.

3. Configurar la forma del cursor y el movimiento Natural de Este (Derecha o Izquierda). En este proyecto se usó un cursor guión bajo (_) y un movimiento natural hacia la derecha.

Como contribución al proyecto CondorBoard se portó en su totalidad la librería utilizada como referencia para el manejo de un LCD 16x2 en la CondorBoard. La librería realizada para el manejo del LCD, se baso en el proyecto realizado por Avinash disponible aquí.

Diagrama de Caja Negra
http://ftpest.uniandes.edu.co/~ds.flechas72/blackbox.jpg


 * Señales de entrada del sistema (INPUT)
 * Vin: Señal de Voltaje.


 * Señales de Salida (OUTPUT)
 * Visualización LCD:Por medio de una barra de incremento/decremento, y el valor actual de la conversión digital; se podra observar el nivel de voltaje en formato digital en la entrada del sistema.

General
http://ftpest.uniandes.edu.co/~ds.flechas72/bloqdiag.jpg


 * Entradas
 * Vin: Señal de Voltaje.


 * Salidas
 * Visualización LCD

Específico
http://ftpest.uniandes.edu.co/~ds.flechas72/bloqdiag2.jpg


 * Entradas
 * AT91C_ADC_CH0: Canal 0 ADC, Lectura de Voltaje


 * Salidas
 * AT91C_PIN_PB(10): Pin PB10 Condorboard hacia Pin RS (Register Select) LCD.
 * AT91C_PIN_PB(22): Pin PB22 Condorboard hacia Pin E  (Enable) LCD.
 * AT91C_PIN_PB(24): Pin PB24 Condorboard hacia Pin D4 (Data 4) LCD.
 * AT91C_PIN_PB(26): Pin PB24 Condorboard hacia Pin D5 (Data 5) LCD.
 * AT91C_PIN_PB(28): Pin PB24 Condorboard hacia Pin D6 (Data 6) LCD.
 * AT91C_PIN_PB(24): Pin PB24 Condorboard hacia Pin D7 (Data 7) LCD.

Algoritmo de Solución
http://ftpest.uniandes.edu.co/~ds.flechas72/flujoalgoritmo.jpg


 * Inicio: Encendido de la Tarjeta
 * Inicialización ADC-LCD:
 * Configuración ADC:
 * No HW Trigger
 * 8-bits de resolucion
 * Modo Normal
 * Prescaler Deafault
 * Canal 0 Habilitado
 * Configuración LCD:
 * Modo 4-bits
 * Solo Escritura
 * Cursor _
 * Escritura Mensajes de Introducción: Se escriben los mensajes iniciales en el LCD.
 * Iniciar Conversion ADC: Se inicia la conversión ADC. Una vez esta halla terminado, se guarda el valor obtenido para su procesamiento.
 * Obtener Unidades-Decenas-Centenas: A partir del valor obtenido en el estado anterior, se obtienen los digitos correspondientes a las unidades, decenas y centenas. Este proceso se realiza a través del algoritmo conocido como división por restas sucesivas (programado en SW), dado que el micro-controlador no soporta la división aritmética.
 * Escribir Unidades-Decenas-Centenas: Se escriben los valores respectivos de cada variable en las posiciones predefinidas.
 * Comparación Valor ADC: Se compara el valor almacenado del ADC, con rangos predefinidos dentro del código (16 rangos: uno por cada columna del LCD)
 * Actualización Barra de Estado: De acuerdo al rango obtenido para el valor del ADC, se actualiza la barra de estado. (Se escriben cuadros llenos, o se escriben cuadros vacíos según el caso.)

Se repite el algoritmo desde Iniciar Conversion ADC.

Este algoritmo es el utilizado en el Proyecto Original, para el proyecto mejorado con librerias, no es necesario realizar el paso de Obtener Unidades-Decenas-Centenas, dado que este se implemento dentro de la libreria LCD.

= Materiales =

Dispositivos Hardware

 * Tarjeta de Desarrollo CondorBoard V1.5
 * Datasheet AT91SAM9XE
 * LCD LCM1602A
 * Datasheet LCD LCM1602A
 * Ejemplos de Aplicacion LCM1602A Applications

Herramientas Software

 * Compilador GCC (GNU Compiler Collection)
 * SAM Boot Assistant (SAM-BA In System Programmer)

= Código fuente =

Proyecto Mejorado (Con Librerias)

 * Archivos Programación
 * dataflash_condorboard.bin (dataflash_condorboard.bin)


 * Archivos Fuente (Todos (Libreria_LCD+Ejemplo.zip))
 * Librería LCD
 * lcd.h (header)
 * lcd.c (Para la descripción de las funciones ver este archivo)
 * Programa Ejemplo con Libreria
 * condorboard.c

Para la inclusión de la libreria dentro del Proyecto es necesario realizar los siguientes pasos:

1. Incluir el header de la libreria (lcd.h) en el proyecto principal y dentro de la carpeta include.

2. Incluir el archivo fuente de la libreria (lcd.c) dentro de la carpeta drivers.

3. Modificar el makefile así: (Makefile)

= Vídeos y fotos de demostración =

http://ftpest.uniandes.edu.co/~ds.flechas72/sch_lcd2.jpg
 * Conexión CondorBoard -- LCD

http://ftpest.uniandes.edu.co/~ds.flechas72/imgCondorADCLCD.jpg
 * Montaje Realizado

kAjNHbuGgrA
 * Demo

= Resultados =

El proyecto propuesto se realizó satisfactoriamente. Se cumplió el objetivo propuesto en la descripción. Adicionalmente se portó la librería lcd, utilizada como referencia, a la CondorBoard en su totalidad.

Trabajos futuros

 * Estudiar el manejo de las interrupciones para realizar una implementación con posibilidad de selección entre los distintos canales del ADC.
 * Portar por completo la libreria del LCD, utilizada como referencia, hacia la Tarjeta de desarrollo CondorBoard. [Done]

= Bibliografía =


 * AT91SAM9XE Datasheet - ATMEL Descargar
 * LCD LCM1602A Datasheet Descargar
 * Using LCD Module with AVRs -  Avinash Gupta  (2008) Ver