Usar un teclado matricial mediante un puerto anal贸gico 馃

Me recuerdo cuando estaba en la universidad un compa帽ero me ense帽aba su proyecto y los trucos que hab铆a realizado para que todas sus ideas las pudieras realizar su micro PIC16F877A, entre una de ellas era la implementaci贸n de una pantalla LCD y un teclado matricial por el puerto B para tener mas pin disponibles, que venia luego de descartar de usar el teclado por un puerto anal贸gico, el cual me llamo mucho la atenci贸n.

Teclado 3x4 con divisores de voltajes.
Figura-01


Continua explic谩ndome que la teor铆a es muy simple, el teclado matricial son botones que cierra un circuito y si usamos resistencias y el concepto de divisor de tensi贸n, tendr铆amos diferente niveles de voltaje al conmutar las diferentes teclas (figura-02).

Teclado 4x4.
Figura-02


Mediante el convertidor anal贸gico digital (ADC) obtenemos un valor para cada nivel de tensi贸n y mediante programaci贸n se le asigna una tecla.

El primer desafi贸 me cuenta, es seleccionar la combinaci贸n de las resistencias para tener valores de tensi贸n bien distribuidos, no muy cercanos y que cumplan junto a la resistencia Pull-Down, que no halla ca铆das de tensi贸n al presionar una tecla y al no estar presionando ninguna, mida una tensi贸n de 0 V (VSS).

Las ca铆das de tensi贸n ocasionan valores distintos del ADC a los asignados a cada car谩cter de cada tecla, as铆 que:
  • 1. La selecci贸n de los valores de las resistencias es clave.
  • 2. Una fuente adecuada que cumpla con la exigencia del proyecto.
  • 3. Y claro conocer el uso del ADC del PIC.

Me sigue explicando que si se cumple con lo anterior, no es necesario programar un rango de valores del ADC para asignarle a cada tecla. Pero que tenia otro problema con valores repetidos al pulsar una tecla, aunque se pueden arreglar con un retardo, ese retardo le daba problema con otra parte del c贸digo de su proyecto y por eso lo descarto.


Ejercicio N° 1

Aprovechando que estaba repasando el uso del ADC y el teclado matricial quise poner en pr谩ctica esta idea, mediante la simulaci贸n con ISIS Proteus y compilando con PIC-C CCS, y como siempre me decanto por un PIC18F452 trabajando a 4 Mhz.

Diagrama ISIS Proteus.
Figura-03


En este ejercicio vemos el valor del ADC configurado en 10 Bits y su correspondiente valor de voltaje al presionar una tecla en una Terminal Virtual y as铆 tener los valores correspondientes a nuestro arreglo de resistencias.

Simulaci贸n en ISIS Proteus.
Figura-04


Dentro del archivo del ejemplo como siempre esta el c贸digo fuente, el archivo de la simulaci贸n y agrego una hoja de calculo el cual podemos variar las resistencias y obtener su correspondiente valor ADC y de voltaje aproximado, para poder seleccionar valores de resistencia comerciales si se quiere implementar.

Hoja de c谩lculo.
Figura-05






Ejercicio N°2

Aqu铆 trate de imitar el funcionamiento del Driver kbd.c y obtener un valor del teclado al invocar la funci贸n kbd_getc(), a partir de aqu铆 ya podemos practicar y usar los ejercicios de Programando PIC con CCS ejercicio 4 (Teclado).

Ejercicio 2.
Figura-06.





Para finalizar

Son ejemplos para aprender los conceptos b谩sicos y en la simulaci贸n se obvian algunas conexiones que un ejercicio real se debe tomar en cuenta, as铆 que agrego el datasheet y los ejercicios.

Como tambi茅n no se toca la configuraci贸n de los importante FUSES, para esos los invito a revisar el archivo main.h y cualquier correcci贸n o duda usar los comentarios o los enlaces de contacto del blog.


Tambi茅n te puede interesar:


Comentarios

Entradas m谩s populares de este blog

Super Mario RPG 馃幃