¿Opciones para leer una matriz de conmutación de 8x8?

0

Tengo un proyecto (máquina de pinball) que tendrá un número decente de microinterruptores que se conectarán en una matriz de conmutadores de 8x8. Estoy tratando de determinar cuáles son mis opciones para leer esta matriz sin consumir una gran cantidad de pines en un microcontrolador.

Intenté buscar un IC diseñado específicamente para tal aplicación (escaneando una gran cantidad de botones) pero todo lo que pude encontrar es el TCA8418 y el TCA8418E de TI, buscando chips similares que me lleven a un par de otros, pero todos Comparte un problema común. Solo están en paquetes QFN o BGA que están más allá de mi capacidad para soldar a mano. Sé que es posible, pero no es algo que quiera emprender. Esas fichas son hermosas para esto, sin embargo, es una verdadera pena.

Alternativamente, he analizado los extensores de bus de 16 puertos que pueden comunicarse a través de I2C o SPI. Estas parecen ser una buena opción, pero me preocupa que falten las pulsaciones de los botones. Los pinballs correrán rápidamente, así que probablemente en el rango de milisegundos. No es tan rápido en términos de una MCU, pero estará ocupado haciendo mucho más que solo leer los interruptores (audio, matriz de puntos, alimentación de video y una matriz de LED de 8x8). Además de eso, tendría que manejar el rebote del interruptor.

Mi otra preocupación es el diodo necesario que puede causar que V (il) se deslice hacia el límite de 0.8V de LVCMOS. A continuación se muestra un ejemplo de 2x2.

También he considerado usar un pequeño microprocesador de 8 bits para dedicarlo a la captura de claves, probablemente podría emular la función de esos chips TCA8418. Pero aún tengo más código para escribir y otra fuente de errores para resolver. Sin embargo, tienen el mismo precio que el extensor de bus, así que si es una solución superior a la que es.

¿Hay algo más por ahí, o algún método para escanear matrices grandes (ish) de interruptores / botones?

simular este circuito : esquema creado usando CircuitLab

    
pregunta Geomancer

2 respuestas

0

No trataría de ser demasiado inteligente, solo harás que tu circuito sea más problemático a largo plazo. ¿Realmente necesitas una matriz de cambio? ¿Por qué no usar simplemente expansores de puertos o registros de desplazamiento? Esos deberían ser lo suficientemente rápidos. Si no, muchos vienen con una salida de interrupción que puede conectar a su micro para que sea increíblemente rápido. Eso también eliminará los gastos generales de votación. Si puedes salirse con un micro que tiene una gran cantidad de IO, como el mega Arduino, me gustaría ir con eso.

Muchos expansores de puertos y registros de desplazamiento están disponibles en paquetes dip. Por ejemplo el MCP23017-E / SP enlace

Y aquí hay un registro de desplazamiento que podría usar: CD4021B enlace

Puede realizar fácilmente margaritas en varios registros de turnos para obtener tantas entradas como necesite.

Tutorial: enlace

    
respondido por el Drew
0

No ha indicado a qué intenta conectar el bloque de circuitos de "exploración".

Cualquier micro razonablemente rápido puede hacer el escaneo y cualquier otra cosa que tengas en mente. Simplemente conduzca las rutinas de exploración con una interrupción periódica que sea lo suficientemente rápida. Por ejemplo, puede elegir escanear una fila cada 100 us, lo que le daría una tasa de escaneo de 800 us para toda la matriz. Puede depositar los estados clave en una matriz de 8 bytes con la que puede trabajar para implementar la funcionalidad deseada. También puede implementar una matriz con rebote que responderá más lentamente, necesariamente, ya que los microinterruptores pueden rebotar durante bastante tiempo.

Hacerlo de forma tonta solo requiere de 11 a 16 pines de puerto. Si usa un decodificador 1 de 8 (por ejemplo, 74HC138) para decodificar la columna, entonces solo necesita 3 pines para solucionarlo y luego 8 pines para leer la fila.

El umbral de CMOS suele ser de 0.3 / 0.7 Vcc, por lo que incluso con un suministro de 3.3V, tiene 1V para jugar. Use los diodos Shottky como se muestra y tendrá un amplio margen de ruido. Las entradas de nivel HCT (TTL) son bastante raras en estos días.

Es posible que los microinterruptores no sean confiables al cambiar corrientes tan pequeñas a menos que especifique aquellas que tengan contactos de metales preciosos. Si solo intenta usar los existentes que han pasado su vida útil y cambiando los solenoides o lo que sea que tenga, a menos que use voltajes y corrientes relativamente altos a través de la matriz del interruptor, eso está fuera del alcance de esta pregunta y de mi respuesta.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas