7 votos

¿Un buen circuito para una gran cantidad de entradas de botón de presión?

Estoy planeando construir un "control remoto" para niños amigable que les permita encender y apagar una gran cantidad de dispositivos controlados por infrarrojos con uno o dos sencillos botones...

El control remoto va a tener quizás 20 grandes botones robustos que, al ser presionados, enviarán múltiples señales infrarrojas a todos los dispositivos necesarios para, por ejemplo, encender el canal de niños, configurar la Wii, etc, etc...

La mayoría de los botones estarán distribuidos en un patrón de cuadrícula, pero algunos podrían ser utilizados para arriba/abajo/izquierda/derecha, enter, etc....

Usaré un Arduino Pro Mini o Uno como microcontrolador.

¿Hay alguna manera ingeniosa de cablear estos botones? ¿Un circuito tipo cuadrícula? ¿Entradas analógicas con diferentes resistencias entre cada botón? ¿Un circuito integrado que haga el trabajo fácil?

20voto

Passerby Puntos 28913

Básicamente los enumeraste todos.

  1. Una matriz de x filas e y columnas. Necesitas x+y pines.

    Matrix

  2. Circuito integrado Expander GPIO digital, preferiblemente con interrupción. I2C, SPI e incluso Serial están disponibles. Los pines de interrupción te permiten leer en interrupción en lugar de en espera activa. Necesitas tener hardware I2C/SPI/UART, o agregar código de software. Este enfoque se utiliza principalmente si necesitas muchos más GPIO de los que tienes disponibles en el microcontrolador principal. En ese punto, básicamente sigues usando las opciones 1, 3 y 4, o la opción directa de un botón por pin.

  3. Escalera de resistencias. Necesitas un convertidor analógico a digital (ADC) y lectura constante. Es mejor dividir en unos pocos grupos similares en múltiples canales de ADC, pero puedes hacer uno grande con 20 botones si realmente lo necesitas.

    enter image description here

  4. Charlieplexing. Como una matriz multiplexada (#1), pero con \$N \times (N – 1)\$ donde \$N\$ es el número de pines utilizados. Requiere tantos diodos como botones, por lo que estás cambiando el recuento de pines por diodos. Sin embargo, podrías usar LEDs.

enter image description here

En su mayor parte, #1 es el método más común. Cada teclado o teléfono de tonos que hayas usado, en una proporción de 1000 a 1, lo habría utilizado. Incluso los teléfonos celulares lo utilizan (específicamente, sé que el Nokia 5110 lo usa). Para 20 botones, una matriz de 4x5 solo tomará 9 pines, más que suficiente.

4voto

John R. Strohm Puntos 1559

Texas Instruments fabrica un codificador de teclado i2C. Montaje superficial. No puede ser mucho más sencillo que eso.

3voto

chrisbunney Puntos 228

¿Un CI que hará el trabajo fácil?

Definitivamente.

El LM8330 I/O - Expander y Controlador de Teclado es un dispositivo dedicado diseñado para liberar a un procesador principal de escanear un teclado direccionado en matriz y proporcionar funciones de entrada/salida flexibles y de propósito general, programables por el host. Se proporcionan tres salidas de temporizador de modulación de ancho de pulso (PWM) independientes para la modulación dinámica del brillo de los LED.

Se comunica con un procesador principal a través de una interfaz serial ACCESS.bus compatible con I2C. Puede comunicarse en Modo Estándar (100 kHz) y en Modo Rápido (400 kHz) solo en Modo Esclavo.

Con esto probablemente puedas usar un ATtinyX5 en lugar de un ATmega.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X