Buenos días a todos.
Hace un rato publiqué este pequeño aporte en mi blog y lo comparto con ustedes señores. El contenido es el mismo
Muchos han visto el circuito codificador para teclados hexadecimales con el circuito integrado 74LS922. Sí, muy lindo, muy simple, no tienes que hacer mas que ensamblar tu PCB, todo felicidad para algunos, pero no para mí.
Pues donde vivo, únicamente en un lugar lo consigo y bien caro, casi a 100 pesos. Una barbaridad. Más las otras cosas que necesite para adaptarlo a mi sistema donde los quiera usar.... Simplemente bien caro y algo limitado, pues te permite sólo 16 teclas o la expansión a 20, pero, ¿qué tal si necesitas mas de 20 teclas? En mi caso, necesito uno de 16, otro de 32 y otro alfanumérico de 130.
Así que decidí poner mi mente a trabajar para idear un codificador para nuestros teclados para mis proyectos.
Sé que no cualquiera consigue el 74LS922, así que los circuitos que desarrollé emplean circuitos fáciles de conseguir como simples multiplexores, contadores y unas puertas lógicas. Pero lo mejor es que de casi 100 pesos del 74LS922, sólo gastaremos unos 30 pesos por el CD4067 y el CD4040.
Mientras estaba ideando un codificador sólo para 16 teclas, pude obtener uno simple.
Este teclado fue mi primera idea que tuve. Ahora les explicaré como funciona:
El CD4040 recibe la señal de reloj desde el sistema donde esté conectado el teclado e irá seleccionando de forma secuencial cada canal del CD4067.
Las primeras 4 salidas del CD4040 tienen dos usos: para enrutar el CD4067 y como el código de cada tecla, lo que se traduce como el bus de datos del teclado. De esta forma, el código 0101 representa la tecla 5, el código 1001 representa la tecla 9....
Para que el código presente en el bus de datos del teclado tenga validez, la línea #STROBE debe estar en bajo.
Si observan, la línea #STROBE es la salida del CD4067 y el estado de #STROBE depende de las teclas.
Cuando se presione la tecla 3 y el canal seleccionado en ese momento sea el 10, la tecla debe "esperar" a que sea seleccionada. Una vez sea seleccionada, la línea #STROBE cambiará de estado lógico para alertar al sistema de que una tecla ha sido presionada y el código presente en el bus de datos corresponde a la tecla presionada.
Ahora, ¿Qué pasa si se presiona más de una tecla a la vez?
Si esto sucede, no se altera nada. Partiendo de la lectura del canal 0, supongamos que se presionó la tecla 4 y la tecla 13, primero se enviará la señal de #STROBE de la tecla 4 y después de la tecla 13 cuando ésta sea leída.
En ningún caso sucederá que los códigos de dos o más teclas se fusionen y finalmente el sistema interprete una tecla distinta. De acuerdo a las teclas presionadas al mismo tiempo, las de más bajo valor son leídas primero.
La línea INHIBIT, en estado bajo, el codificador funciona normalmente, si cambia a estado alto, el CD4067 ignorará sus entradas.
Señal de Reloj #CLK
Como este codificador es secuencial, necesita una frecuencia relativamente alta para leer todas las teclas. En mi caso lo usaré con un cristal de una frecuencia inferior al megahertz.
Si usamos una frecuencia de 100KHz, cada tecla será leída 6,250 veces por segundo. Un valor que puede ser bueno para ciertas aplicaciones.
Por otro lado, si usamos una frecuencia de 10KHz, cada tecla será leída 625 veces por segundo, una frecuencia más aceptable para nuestras aplicaciones.
De todas formas, la señal de reloj la proveerá nuestro sistema a donde irá conectado el teclado.
Si bien, el teclado tiene una desventaja, y esa es el famoso rebote que es generado cuando se acciona una tecla. Para que no se generen los molestos rebotes, podemos poner un flip flop en la línea #STROBE para disimularlos.
Podemos solucionar los rebotes con un eliminador de rebotes por tecla, pero aumenta la complejidad y el precio, y es lo que menos buscamos! Por eso dejamos de lado al 74LS922!
También tiene otra desventaja o limitación mejor dicho, no incluye ninguna tecla para alguna función especial, en un teclado común de PC podemos ver la barra espaciadora, entrar, shift y otras. Este teclado no las trae.
Hasta ahora obtuve otras formas para hacer nuestros teclados sin necesidad de microcontroladores o circuitos integrados especializados pero caros y difíciles de conseguir.
La opinión del autor:
Este circuito es una nueva forma de usar un multiplexor cualquiera, que con, su contador binario, puede hacer más, que simplemente seleccionar datos. Un conjunto así es capaz de codificar muchas teclas. En otra versión que saqué hoy, podemos expandir este teclado de 16 a 32 o más teclas, sin apenas modificar el circuito base.
¡Hasta la próxima! ...
Hace un rato publiqué este pequeño aporte en mi blog y lo comparto con ustedes señores. El contenido es el mismo
Muchos han visto el circuito codificador para teclados hexadecimales con el circuito integrado 74LS922. Sí, muy lindo, muy simple, no tienes que hacer mas que ensamblar tu PCB, todo felicidad para algunos, pero no para mí.
Pues donde vivo, únicamente en un lugar lo consigo y bien caro, casi a 100 pesos. Una barbaridad. Más las otras cosas que necesite para adaptarlo a mi sistema donde los quiera usar.... Simplemente bien caro y algo limitado, pues te permite sólo 16 teclas o la expansión a 20, pero, ¿qué tal si necesitas mas de 20 teclas? En mi caso, necesito uno de 16, otro de 32 y otro alfanumérico de 130.
Así que decidí poner mi mente a trabajar para idear un codificador para nuestros teclados para mis proyectos.
Sé que no cualquiera consigue el 74LS922, así que los circuitos que desarrollé emplean circuitos fáciles de conseguir como simples multiplexores, contadores y unas puertas lógicas. Pero lo mejor es que de casi 100 pesos del 74LS922, sólo gastaremos unos 30 pesos por el CD4067 y el CD4040.
Mientras estaba ideando un codificador sólo para 16 teclas, pude obtener uno simple.
Este teclado fue mi primera idea que tuve. Ahora les explicaré como funciona:
El CD4040 recibe la señal de reloj desde el sistema donde esté conectado el teclado e irá seleccionando de forma secuencial cada canal del CD4067.
Las primeras 4 salidas del CD4040 tienen dos usos: para enrutar el CD4067 y como el código de cada tecla, lo que se traduce como el bus de datos del teclado. De esta forma, el código 0101 representa la tecla 5, el código 1001 representa la tecla 9....
Para que el código presente en el bus de datos del teclado tenga validez, la línea #STROBE debe estar en bajo.
Si observan, la línea #STROBE es la salida del CD4067 y el estado de #STROBE depende de las teclas.
Cuando se presione la tecla 3 y el canal seleccionado en ese momento sea el 10, la tecla debe "esperar" a que sea seleccionada. Una vez sea seleccionada, la línea #STROBE cambiará de estado lógico para alertar al sistema de que una tecla ha sido presionada y el código presente en el bus de datos corresponde a la tecla presionada.
Ahora, ¿Qué pasa si se presiona más de una tecla a la vez?
Si esto sucede, no se altera nada. Partiendo de la lectura del canal 0, supongamos que se presionó la tecla 4 y la tecla 13, primero se enviará la señal de #STROBE de la tecla 4 y después de la tecla 13 cuando ésta sea leída.
En ningún caso sucederá que los códigos de dos o más teclas se fusionen y finalmente el sistema interprete una tecla distinta. De acuerdo a las teclas presionadas al mismo tiempo, las de más bajo valor son leídas primero.
La línea INHIBIT, en estado bajo, el codificador funciona normalmente, si cambia a estado alto, el CD4067 ignorará sus entradas.
Señal de Reloj #CLK
Como este codificador es secuencial, necesita una frecuencia relativamente alta para leer todas las teclas. En mi caso lo usaré con un cristal de una frecuencia inferior al megahertz.
Si usamos una frecuencia de 100KHz, cada tecla será leída 6,250 veces por segundo. Un valor que puede ser bueno para ciertas aplicaciones.
Por otro lado, si usamos una frecuencia de 10KHz, cada tecla será leída 625 veces por segundo, una frecuencia más aceptable para nuestras aplicaciones.
De todas formas, la señal de reloj la proveerá nuestro sistema a donde irá conectado el teclado.
Si bien, el teclado tiene una desventaja, y esa es el famoso rebote que es generado cuando se acciona una tecla. Para que no se generen los molestos rebotes, podemos poner un flip flop en la línea #STROBE para disimularlos.
Podemos solucionar los rebotes con un eliminador de rebotes por tecla, pero aumenta la complejidad y el precio, y es lo que menos buscamos! Por eso dejamos de lado al 74LS922!
También tiene otra desventaja o limitación mejor dicho, no incluye ninguna tecla para alguna función especial, en un teclado común de PC podemos ver la barra espaciadora, entrar, shift y otras. Este teclado no las trae.
Hasta ahora obtuve otras formas para hacer nuestros teclados sin necesidad de microcontroladores o circuitos integrados especializados pero caros y difíciles de conseguir.
La opinión del autor:
Este circuito es una nueva forma de usar un multiplexor cualquiera, que con, su contador binario, puede hacer más, que simplemente seleccionar datos. Un conjunto así es capaz de codificar muchas teclas. En otra versión que saqué hoy, podemos expandir este teclado de 16 a 32 o más teclas, sin apenas modificar el circuito base.
¡Hasta la próxima! ...
Última edición: