Para algunos proyectos electrónicos se hace necesario el uso de una gran cantidad de botones o pulsadores, con el fin de controlar e ingresar información al microcontrolador.
Podemos ver este tipo de casos en los equipos de audio, hornos de microondas, y otros, en donde se utilizan una gran cantidad de botones.
Esto no es nada nuevo, pero se presenta como un problema para los aficionados y entusiastas que gustan de programar microcontroladores.
Para la mayoría de los proyectos basta con algunos cuantos botones; una simple instrucción if o equivalente según sea el lenguaje de programación y ya tenemos resuelto el problema.
El inconveniente es que necesitaríamos un pin del microcontrolador por cada botón y obviamente esto no es nada práctico… por lo menos no en un proyecto serio de electrónica.
¿Pero entonces que ocurre cuando necesitamos muchos botones para nuestro proyecto?.
Existen básicamente 2 formas de resolver el problema:
utilizar un teclado matricial de barrido o un teclado matricial por un solo
pin. Precisamente la segunda opción será la que trataremos en este artículo.
Teclado matricial por un solo pin.
En este tipo de teclado matricial por un solo pin, tenemos
que cada botón habilita una serie de resistencias que forman un divisor de tensión,
que al ser presionado uno de los botones, genera un voltaje dc de diferente
valor con respecto a los demás.
Como cada botón genera un voltaje diferente, el
microcontrolador los puede diferenciar y así hacer una función u otra dentro
del programa… y todo por un solo pin.
¿Pero cómo hace el microcontrolador para “leer” el teclado”?
Existen varias opciones que pueden estar limitadas por el
lenguaje de programación utilizado. En este caso vamos a utilizar Proton
(basic) para la lectura del teclado por un solo pin.
Con este lenguaje de programación para microcontroladores,
tenemos básicamente 2 opciones: el conversor análogo a digital o la instrucción
POT.
Con la instrucción POT podemos utilizar microcontroladores que no tengan conversor análogo digital, como
el PIC 16f628 o el viejo 16f84A.
Pero en este caso utilizaré el PIC 16f88 que si posee
conversor análogo a digital, para hacer la lectura del teclado.
El programa para el PIC 16F88.
Debemos tener presente que existen diversas formas para
hacer funcionar este teclado, en cuanto al software se refiere y que la
presentada aquí, es tan solo una de ellas. El objetivo del programa es la de
identificar el voltaje que genera cada botón o tecla y tomar decisiones en base
a ello.
Una de esas formas consiste en promediar el valor del
voltaje obtenido, con el fin de ajustarse lo más cerca posible con el voltaje
generado por el botón. Y otros programas “locos” que veo en internet, que aun
yo con 10 años programando no entiendo absolutamente nada.
Pero estas formas tienen el inconveniente de que requieren resistencias de precisión, voltaje bien
regulado y botones de buena calidad. Y aun así con el paso del tiempo, veremos
como al pulsar un botón, este realiza la función de otro botón distinto.
Pero también tienen la ventaja de que se puede agregar un gran
número de botones; tantos como la variable dentro del programa lo permitan.
Un programa distinto.
Para este programa en particular no necesitaremos de
configuraciones extrañas de hardware, tampoco de pulsadores con laminillas de
oro o resistencias con 0.000001% de precisión, no, simplemente utilizaremos
componentes comunes, como las resistencias al 5% y pulsadores o botones
corrientes que en mi caso utilice unos reciclados de un equipo de sonido Panasonic
AK22.
Simplemente se crea un comparador de ventana, en donde a
cada botón le ampliamos su rango de acción en cuanto al voltaje se refiere.
Así el teclado queda como con un tipo de seguro a
variaciones de las resistencias y al envejecimiento de los pulsadores o
botones.
¡No todo lo que brilla es oro!
Esta técnica si bien me ha dado buenos resultados, no es del
todo perfecta, pues limita el teclado a unos 8 o quizás 10 pulsadores. ¡Pero
vamos, que 8 pulsadores por un solo pin es muy bueno!.
Para crear el comparador de ventana podemos utilizar la
instrucción SELECT CASE o también la
instrucción IF. Por ejemplo en el teclado del diagrama anterior los botones se
han numerado del 1 al 8 de izquierda a derecha, en donde cada botón genera
los siguientes voltajes:
Boton 1 = 2.94v, Boton 2= 3.12v, Boton 3= 3.33v,
Boton 4= 3.57v, Boton 5= 3.84v, Boton 6= 4.17v Boton 7= 4.54v, Boton 8= 5.0v.
Para el boton 1 = 2.94v se le ha asignado una ventana de
entre 2.85v a 3.0v y así se debe hacer con los demás botones.
En la simulación del programa, se puede ver en la primera línea
del display LCD el botón oprimido, que en este caso es el número 7. En la segunda
línea se puede ver el voltaje que genera este botón en especial y que está
siendo procesado por el conversor análogo a digital del PIC 16f88.
El código fuente del programa completo.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiktfs_H8DbszrZ_CrK8XW5iDWqUzNMbhLuBnbO2IuxnqDBGqxjbWY6cf3RKQZSABTb0u2YePUgIbvGTsXqOvkni-OvhCG4MdlskEUiZf9lvoytu3oXebHxYXE6WvyvWm35e2atIBxvlik/s400/P1.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ7E9UxO6llMCw7ynB6RL5CGPYXDUdRbDxZWT4gCcjIQ1nTw-eY8W7_sRJPRF7zle9LT_iI4WdqI0s3HYd8QkYNG8-LrmL8iesugbWTdd6_izMzYuMNRAQVUt4JA4KnbKzDvU-EJHCvOo/s400/P2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipIba-YZlfwjTFTeBItQQhOhT72EZP18fZOqwN_qcH7fMs5La3lLQFEE8rWcAZkkik4aQ6P_pm4Gu_qpW2007JB2-hYLo4NHN3nIVl10TO0xKTTN538mcOW_0MCzB-wFiKgq39DFcZANU/s400/P4.png)
0 Comentarios
¿Tienes alguna duda sobre este articulo? hazlo saber con un comentario. Eso nos ayuda a crecer y mejorar.