Creando un teclado con un microcontrolador, ¿necesito un pin de entrada para cada tecla?

Estoy planeando implementar V-USB con un microcontrolador ATMega8. Estoy interesado en implementar un dispositivo HID; más específicamente, quiero probar y hacer mi propio teclado simple de 26 teclas (cada una correspondiente a una letra del alfabeto inglés).

Esta puede ser una pregunta estúpida, pero ¿necesito un pin de entrada para cada tecla que implemente? En otras palabras, ¿necesitaré usar un microcontrolador que tenga al menos 26 pines de E/S? ¿O hay otra manera de hacer esto?

Más o menos como esta pregunta: electronics.stackexchange.com/questions/37355/… También verifique @stevenvh su elaboración sobre Charlieplexing Si tiene 6 entradas, entonces Charlieplexing le permite 6 × ( 6 1 ) = 30 llaves.

Respuestas (2)

La idea de utilizar una matriz es sin duda el camino a seguir. Su matriz podría organizarse de otra manera con ocho filas de entrada y cuatro líneas de salida para admitir hasta 32 interruptores. Dado que solo necesita excitar una fila de entrada a la vez, puede usar un decodificador 3-8 común simple para controlar las filas de entrada como se muestra a continuación. ¡Esto reduce el número total de pines del microcontrolador a 7 líneas !

Tenga en cuenta que con el uso de un decodificador 3-8 tipo 74HC138 es necesario cambiar la lógica para que las columnas de salida tengan resistencias pullup, la dirección del diodo se invierte y el software verá valores bajos (0) en las líneas de salida donde se detectan los interruptores. Son vistos.

Muchas gracias a tcrosley por tomar prestados algunos de sus gráficos de matriz clave ya Philips Semiconductors por la imagen del símbolo lógico de su pieza 74HC138.

ingrese la descripción de la imagen aquí

Buena adición a mi circuito, bueno, no es realmente mío, "tomé prestada" la imagen de algún lugar de la web después de buscar la matriz del teclado.
¡Genial, gracias! El concepto real que tenía era hacer de cada tecla un sensor táctil capacitivo. ¿Seguiría siendo posible con el método de matriz de teclado?
@capcom: el esquema que se muestra está diseñado para interruptores que tienen cierres de contacto de baja impedancia. Los interruptores de tipo capacitivo son un tipo de tecnología completamente diferente. Los interruptores de cierre de contacto, incluidos los botones pulsadores tipo TACT de costo extremadamente bajo, son el tipo para esta solución de matriz.
Veo. Bueno, en términos de cierres de contacto de baja impedancia, ¿sabe lo que estaría buscando si estuviera tratando de crear el interruptor más delgado posible? Es por eso que estaba considerando el toque capacitivo como una solución. ¡Gracias de nuevo!
@capcom: para tener una idea de cuán delgado puede ser un teclado, es posible que desee desarmar el teclado de una computadora para ver cómo funcionan por dentro. En los teclados de los últimos años tienen tres hojas de material mylar. Dos hojas de la pila tienen tinta conductora impresa en sus superficies una frente a la otra. La tercera hoja está entre estas otras dos con agujeros donde se encuentra cada sitio clave. ¡Presionar las dos hojas exteriores juntas en el área del agujero permite que las manchas de tinta conductora que están en las hojas exteriores entren en contacto a través del agujero!
@capcom, por "interruptor más delgado posible", ¿qué quiere decir exactamente? ¿Es delgado dado el perfil del interruptor expuesto a qué altura se asienta sobre el panel frontal, o la altura del perfil sobre la PCB (ya que desea mantener todo el dispositivo muy delgado)? ¿Has considerado los interruptores de membrana?
¡Eso es realmente genial! Me pregunto si sería capaz de implementar eso en casa. No parece demasiado difícil, pero no estoy seguro. Lo miraré. Avíseme si conoce algún otro método para replicar la acción de un interruptor con un grosor mínimo. Gracias.
@ icarus74 Literalmente me refiero al interruptor más delgado que puedo fabricar o comprar (a un costo decente). La altura/grosor se referiría a la posición no presionada del interruptor sobre la superficie sobre la que está montado. Gracias por el consejo sobre los interruptores de membrana. Los investigué y parecen seguir el mismo concepto descrito por Michael anteriormente. Se ve prometedor, gracias.
@capcom: comentario rápido sobre el interruptor de membrana típico. Si se implementa como una matriz, terminará sin los diodos en cada posición del interruptor. Esto está bien si espera usar el teclado una posición a la vez. Después de todo, el interruptor de membrana típico no es adecuado para escribir rápido. Los diodos se vuelven esenciales para permitir la detección válida de cada tecla en cada escaneo y no detectar la "tecla fantasma" cuando se mantienen presionados otros tres interruptores a la vez.

Una de las formas más fáciles es usar una matriz de teclado, como esta:

ingrese la descripción de la imagen aquí

En su caso, para 26 teclas, puede organizarlo en una matriz de 5 x 6 (que requiere 11 pines de E/S). Esto realmente permitirá 30 llaves sin cables adicionales. Una matriz de 6x6 (solo un cable más) permitiría 36 teclas, suficientes para AZ y 0-9.

Debido al efecto de cuadratura, cuanto más grande sea el teclado, más cables ahorrará. 100 llaves requieren solo 20 cables, incluso menos que un cable de cada una de las 26 llaves originales.

La idea de la matriz funciona escaneando: mantienes una de las líneas I en alto, una tras otra, y luego escaneas todas las líneas O para cada línea I mantenida en alto. Obtendrá una entrada alta en solo una de las líneas O para solo una de las líneas I mantenida alta. La combinación aislará una de las teclas.

No olvide las resistencias desplegables en las líneas "O".