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.
 |
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).
 |
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.
 |
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.
 |
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.
 |
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).
 |
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
Publicar un comentario
🤔 con que esto tenemos...