¿Reduciendo la cantidad de pines necesarios para leer un teclado de 12 teclas donde los botones están conectados a tierra?

0

Lamentablemente, no estoy seguro de cuál es la pregunta correcta; Tengo un teclado de 12 teclas. Quería utilizar un enfoque basado en matrices, excepto que todos parecen estar conectados de tal manera, que están flotando cuando no están presionados; Cuando presionas uno, se conecta a tierra. Esto me parece como si estuviera preparado para una configuración con una resistencia de pull-up en el cable a la MCU, y no una lectura de estilo de matriz, donde yo (si entiendo correctamente) pulso secuencialmente en las filas, y leer secuencialmente el voltaje en las columnas.

Sin embargo, no tengo 12 pines de repuesto en mi MCU, así que me pregunto cómo minimizar el número de pines necesarios para leer este teclado de 12 teclas.

¿Hay algún IC que pueda usar? ¿Algún enfoque?

Si recuerdo correctamente, la placa a la que se conectaba tenía varios (des) multiplexores conectados en cascada, pero no pude averiguar cómo funcionaba. Sin embargo, estoy bastante seguro de que el teclado en sí está conectado de esta manera (tiene su propio conector, ya que está en una placa separada que me gustaría mantener), y eso me confunde.

    
pregunta Tomáš M.

3 respuestas

1

Aquí tienes. Esquema a continuación. Solo he mostrado 8 botones, pero 74HC4067 tiene 16 canales analógicos para hasta 16 botones.

Seleccione el botón que desea verificar dirigiendo la línea de 4 bits al canal deseado, luego lea la entrada de MCU. Alto = botón no presionado. Botón bajo = presionado.

El algoritmo de rebote simple es solo escanear, por ejemplo, 30 veces por segundo como máximo.

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Vince Patron
4

Si la conexión común está flotando, una aproximación que use un pin de salida y un ADC sería vincular un terminal de entrada del interruptor al pin de salida y la entrada común a la entrada ADC. Luego conecte otra entrada de interruptor a tierra y conecte todos los otros interruptores a puntos en una cadena de once resistencias de 1K. Si necesita una activación de baja potencia y el pin ADC del procesador no tiene un pull-up débil que se pueda bajar a través de aproximadamente 3K de resistencia, agregue un pull-up de 100K al pin ADC.

Cuando esté inactivo, conecte a tierra el pin de E / S aislado y configure el otro para un pull-up débil. Ese pin será bajado si se presiona cualquier botón.

Para averiguar qué botón se presiona, configure la salida en VDD y lea el ADC (preferiblemente con el pull-up deshabilitado). La tensión indicará entonces qué pin se presiona. Si el interruptor hace un contacto incluso medio decente (por ejemplo, 3K o menos de resistencia), el voltaje debe ser en gran medida independiente de la resistencia del interruptor.

    
respondido por el supercat
1

Hay muchas soluciones. ¿Cuántos pines IO tiene disponible?

  1. Utilice un IC de expansión I2C de 16 bits. Hay mucho por ahí. Si su MCU no tiene I2C, puede golpear la interfaz. El inconveniente es que esto requeriría 12 resistencias de tracción.

  2. Si tiene 4 salidas y 1 entrada disponible, use un demux IC (por ejemplo, 74HC154) para "escanear" el teclado. Cada salida de demux controla una tecla y la salida común del teclado va a su entrada de MCU. Cuando su escaneo toque una tecla que se presiona, la entrada será elevada. Esto toma 5 líneas IO, pero la ventaja es que solo necesita 1 resistencia de extracción en su entrada de MCU (o ninguna si su MCU tiene una función incorporada). Es posible que necesite 12 diodos o un demux que tenga salidas de colector abierto si las teclas se pueden presionar simultáneamente.

  3. Un diseño totalmente cursi es tener una resistencia de valor diferente para cada tecla. Luego use un divisor o una fuente de corriente / sumidero que lea un ADC para que cada tecla presente un voltaje diferente al ADC. He visto esto usado en productos comerciales reales, pero use solo si está desesperado y solo puede ahorrar 1 pin IO; esto requiere un montón de buenos SW para rebotar y trabajar de manera confiable. También es muy difícil detectar pulsaciones simultáneas.

Puedo dibujarte un esquema si el circuito de la Opción 2 no es obvio para ti.

Además, debe tener en cuenta: 1) algoritmo de rebote, 2) seguimiento de la pulsación y liberación de varias pulsaciones de teclas. Por ejemplo, cuando alguien está escribiendo muy rápido, sus pulsaciones se superpondrán. Debe considerar si necesita permitir esto o no.

    
respondido por el Vince Patron

Lea otras preguntas en las etiquetas