Al ignorar los interruptores de botón asociados con los codificadores, una velocidad de 50 pasos / segundo le sugiere que puede usar multiplexores externos para leer las salidas del codificador. Puede encontrar multiplexores de 16 a 1 (74HC150, 74HC4067) y conectarlos a las dos fases. Conduzca las líneas de dirección de los multiplexores con 4 líneas IO y use 2 líneas para leer las fases. Puede agregar un tercer multiplexor para ver los contactos del conmutador.
También puede expandir los multiplexores, utilizando 1 o 2 líneas más como líneas de selección.
Esto
simular este circuito : esquema creado usando CircuitLab
muestra un multiplexor de 32 líneas, utilizando 5 líneas de dirección seleccionadas y un inversor externo para la dirección más significativa. Puede usar dos líneas IO para el MSA, pero debe asegurarse de que solo una sea baja en cualquier momento.
En la práctica, usted (a intervalos de menos de 20 ms) leerá todas las fases del codificador, luego analizará cada par de bits para determinar si el codificador se ha movido y tomará las medidas necesarias. Para un Atmel, 20 ms es mucho tiempo, pero sería importante que el software no se involucre en otra tarea y se pierda una lectura. Si el codificador se ha movido 2 pasos, no hay forma de determinar la dirección.
Una configuración completa requeriría 6 multiplexores: 2 por fase y 2 para leer los interruptores, más 3 inversores (la mitad de un chip de inversión hexadecimal, como un 7HC04). El total de líneas MCU sería 8. 5 líneas de dirección y 3 entradas.
El total de operaciones de IO es 64. 32 escrituras de selección de dirección y 32 lecturas de datos. Por supuesto, si solo está utilizando, digamos, 20 codificadores, solo necesitaría 40 operaciones.