Conexión de un interruptor NO conectado a tierra a una matriz de interruptores de exploración

Estoy trabajando en un proyecto que incluye una matriz de interruptores de escaneo. También incluye un joystick con pulsador integrado. No tengo pines IO en el micro, pero hay espacios en mi matriz de interruptores, por lo que me gustaría integrar el botón pulsador en la matriz. Sin embargo, el botón está permanentemente conectado internamente al pin de tierra del joystick.

Estoy bastante seguro de que puedo usar un transistor NPN para conectar la línea de señal del botón a través de los pines de la matriz como lo haría con un botón normal, pero quiero asegurarme de que no me estoy perdiendo algo importante.

Esbocé algo que creo que podría funcionar. R3 es la resistencia pull-up interna en el microcontrolador. Para los otros interruptores en la matriz, Q1 sería reemplazado por un interruptor NO con un diodo en serie conectado entre tierra y la salida. Siento que mi circuito propuesto está al revés y en realidad solo se activará cuando mi botón NO esté presionado, pero creo que solo necesitaría otro transistor para invertir esa señal.

ingrese la descripción de la imagen aquí

Así es como se ve el circuito para un interruptor normal en la matriz (tenga en cuenta que ninguno de los pines está bloqueado en GND como es el caso del interruptor que ahora estoy tratando de integrar).

ingrese la descripción de la imagen aquí

El escaneo de matriz funciona al establecer una sola columna baja y el resto está triestablecido. Luego se leen todas las filas. Luego cambia a la siguiente columna y se vuelve a leer.

¿Alguien tiene mejores sugerencias o correcciones?

¿Puedes cambiar tu escáner para tres estados de la columna, en lugar de tirar de ella hacia arriba?
Acabo de revisar mi código. Parece que no recordé bien mi procedimiento de escaneo y, de hecho, ya estoy escribiendo tres veces la columna.

Respuestas (1)

Si pudiera cambiar su código de escaneo para subir la columna en lugar de bajarla, entonces no necesita hacer nada especial para leer este interruptor. Conecte la entrada de la columna a R2 y lea el interruptor desde la unión de R2 y el interruptor. También querrá habilitar la resistencia pull-up interna en las entradas de columna, en lugar de las entradas de fila.

Si eso no es posible, entonces su circuito debería funcionar. Asegúrese de hacer tres estados en la columna, en lugar de tirar hacia arriba, de lo contrario, podría polarizar demasiado la unión base-emisor y Q1 podría no gustarle. También podría usar un PNP para Q1, que invertirá la lógica (creo que lo quiere de todos modos). En el caso de PNP también se puede prescindir de R2.

Parece que mi circuito de hecho va a actuar como el inverso de lo que quiero (la entrada es baja, Q1 se verá abierto, la entrada abierta, Q1 bajará, en lugar de al revés). ¿Se solucionaría el problema con R2 si estuviera conectado al otro lado de R1?
@ben, no sería un problema, pero no estoy del todo seguro de por qué querrías hacer eso. Tal vez no estoy entendiendo muy bien tu pregunta. ¿ Quizás podría dibujar un esquema con todos los componentes involucrados?
La entrada es GND o está abierta, por lo que creo que necesito una resistencia pull up (R2).
@ben si ese es el caso, ¿por qué molestarse con el transistor? No debo estar entendiendo tu problema.
Traté de aclarar un poco mi pregunta e incluí el esquema que estoy tratando de replicar y mejoré el esquema que propuse para reflejar mejor la verdadera funcionalidad.