Lectura de cientos de entradas con una sola atmega32

1

Tengo 128 entradas (pulsadores) en una sola fila en un proyecto y quiero leerlas utilizando una sola atmega32. Por supuesto, no hay suficientes pines en una atmega 32 para este propósito y sé que la solución sería usar algún tipo de multiplexor, pero no sé cuál es el más adecuado.

Lo que estoy pensando es tener algún tipo de multiplexor que tenga 128 pines como entrada y 7 pines para la salida que represente el resultado de las entradas en binario (como un ejemplo si todas las entradas fueran 1 (ARRIBA) y pines de salida Será 1111111 (todo arriba)). ¿Pero no estoy seguro de si hay algún multiplexor haciendo esto?

Tengo que mencionar que necesito una solución rentable. Porque tengo que extender esta solución a tal vez 1000 o incluso 10,000 entradas en el futuro (que tenemos que usar varios multiplexores para leerlos todos)

Cualquier ayuda sería apreciada. ¿Necesito saber qué multiplexor debo usar? (probablemente el número de parte o cualquier otra sugerencia)

Actualizar:

Solo se pulsará un botón a la vez Y la velocidad de actualización no será rápida. tal vez 10-30 veces por segundo o mucho menos.

    
pregunta Michel Gokan

2 respuestas

5

Un enfoque fácil sería utilizar hardware SPI para leer los registros de desplazamiento en serie.

Puede encadenar tantos registros de desplazamiento de 8 bits como sea necesario. Si utiliza 74HC165 puede probar simultáneamente cada interruptor (1/8 74HC165, se requiere 1 resistencia por conmutador) y luego cambie los datos al micro a unos 10MHz, por lo que podría obtener 1000 estados de conmutación en 100 usec o 10,000 en 1 ms. 10,000 entradas requerirían 1250 registros de turnos, por lo que necesitarías amortiguar los relojes y / o reducir la tasa de cambios.

La longitud del bus físico se convertirá en un problema a altas velocidades de reloj; debe asegurarse de que se respeten los tiempos de retención y configuración de la hoja de datos.

    
respondido por el Spehro Pefhany
14

Divida los botones en filas y columnas, como se hace con un teclado . 12x12 dará 144 botones posibles, por lo que debería funcionar.

Entonces necesitarás usar codificadores para traducir esas líneas a binario. 3 de codificadores de 8 bits tomarán las 24 líneas y le brindarán 9 bits para conectarse a su microcontrolador.

    
respondido por el Chad Kennedy

Lea otras preguntas en las etiquetas