¿Qué esquema es mejor para la conexión del teclado a una MCU?

Tengo estos tres bocetos de conexión del teclado, todos los cuales he visto en varias aplicaciones, y algunos también los he usado, pero quiero saber si hay alguna ventaja de uno sobre el otro. ingrese la descripción de la imagen aquíEl teclado se conectará directamente a los pines DIO de un microcontrolador PIC, PIN 1,2,3 como SALIDAS y PIN A,B,C,D como entradas.

El teclado no estará a bordo, pero se conectará a través de cables a la placa PCB, no sé si esto hace alguna diferencia.

Respuestas (3)

El número 1 puede ser destructivo para su controlador. Si usaría salidas push-pull para las columnas y las filas como entradas, al presionar dos teclas en la misma fila se cortocircuitará la fuente de alimentación a través de las salidas del microcontrolador. Si las salidas del microcontrolador se pueden configurar como de drenaje abierto, entonces no hay problema, pero las salidas también deben tener resistencias pull-up. Entonces básicamente tienes el número 2, pero con los pull-ups integrados.

Número 2. La misma historia si usara las filas como salidas. Usar las columnas como salidas tiene más sentido, ya que R1-R3 evita un cortocircuito de las salidas. Tenga en cuenta que un nivel de salida bajo verá la resistencia en serie/pull-up como un divisor de voltaje, por lo que la entrada será de 0,1 Vcc, aunque eso no suele ser un problema.

El número 3 evita el divisor, pero las resistencias en las entradas no cumplen ninguna función. Una variante sin la resistencia en serie servirá.

Entonces 1) puede ser un absoluto no-no. 3) es un poco mejor que 2) porque no tiene el divisor de voltaje, pero puede prescindir de la resistencia en serie.

Pensé que también podría eliminar el mío, el cerebro está demasiado cansado ... Lo leí porque las columnas son salidas, ¿las filas son entradas en el ejemplo?
@Oli: en 1) no hay diferencia, y no hay flechas, pero editaré mi respuesta para que sea coherente con las demás.
para 2) los pull-ups están en las filas, que serán entradas, así que supongo que está bien, ¿no? pero dices que las resistencias en serie en las columnas no son necesarias? y no obtuve tu explicación en (3). ¿Está diciendo que las resistencias en serie en las filas solo se pueden quitar? porque si se eliminan todas las resistencias en serie, se convierte en lo mismo que (1)
@TiOLUWA: no dije que se puedan quitar las resistencias de las salidas. Son necesarios para evitar los problemas número uno. Pero la resistencia en serie para las entradas no tiene ningún propósito, ya que las entradas son de alta impedancia.

Simplemente podría agregar diodos al primer esquema si su microcontrolador tiene pull-ups o pull-downs incorporados.

Conexión del teclado

El ejemplo que se muestra supone que tiene pull-ups en sus entradas (para seleccionar una columna, debe reducirla) y el estado de la clave está invertido.

Si tiene menús desplegables en sus entradas, invierte la polaridad de los diodos y, para seleccionar una columna, debe subirla. No es necesario invertir el valor leído.

El primer esquema está bien suponiendo que esté utilizando un enfoque de escaneo de dos fases. En la fase 1, los pines GPIO de la fila se configuran como entradas conlas resistencias pull-up están habilitadas y los pines GPIO de la columna están configurados como salidas establecidas en GND. En la segunda fase, los papeles se invierten. En cada caso, la lectura de entrada de 4 bits (o 3 bits) se almacena y la "unión" de las dos fases da un valor de 8 bits (o 7 bits) que puede decodificar en "el botón X fue presionado." Por supuesto, hay combinaciones de botones que son ambiguas para decodificar en este esquema (por ejemplo, colineales). También deberá proporcionar un pequeño retraso entre el cambio de las funciones de los pines y la lectura de las entradas para que los pines puedan cargarse. Dicho esto, es un buen enfoque de hardware mínimo, y siempre que obedezca las reglas del software, no hay peligro para su controlador.

Reconozco que este método de escaneo no es lo que propuso el OP, pero quería explicar el contexto del software donde tiene sentido usar el primer esquema
Vi este método de escaneo utilizado en una de las notas de la aplicación de microchips usando su expansor de puertos. ¿Tiene alguna ventaja sobre el método regular en el que baja cada COL uno tras otro?
@TiOLUWA: ¿quizás se esté refiriendo a Microchip "AN1081: interfaz de un teclado de matriz 4x4 con un expansor GPIO de 8 bits" ?
@TiOLUWA es un método de dos fases para que pueda escanear la matriz más rápido en principio, creo