Paso 10: Módulo 3 - codificador rotatorio e interruptores - Resumen
Una de las grandes cosas acerca de este proyecto es que cuando se establece el tiempo del codificador rotatorio fácilmente podría ser un villano de Bond para marcar encima de la cuenta regresiva en su bomba atómica robada! ¿Claro, usted podría hacer este proyecto sin el codificador rotatorio - un "up", "abajo" y un interruptor de "set" haría el trabajo y tener el mismo número de pines, pero donde estaría la diversión en eso?
Este módulo es el más corto y más fácil, pero hay un par de arrugas y el resultado es genial.
En primer lugar a los codificadores - acaba de seleccionar sobre la base de lo barato podía fuente de e-bay. Puede haber criterios mejor pero que trabajó para mí. Haz uno con 5 pernos - tienen un interruptor de prensa así como el codificador de vuelta izquierda. Desea.
Un codificador es esencialmente dos interruptores. Cuando se gira una forma el primer switch es conectado, seguido por el segundo, seguido de la desconexión de los primeros, seguido por desconexión de la segunda. En la otra dirección, el orden es invertido para que el segundo interruptor se conecta, seguido por el primero, seguido de la desconexión de la segunda, seguido de la desconexión de la primera. Usando un resistor de pull-down en la salida y conectar el terminal a + 5V común obtenemos una entrada "Alta" para un interruptor conectado y una "baja" para desconectar.
Así va la secuencia:
Hacia la derecha:
A: H-H-L-L-H-H-L-L-H-H-L-L
B: L-H-H-L-L-H-H-L-L-H-H-L
En sentido antihorario:
A: L-H-H-L-L-H-H-L-L-H-H-L
B: H-H-L-L-H-H-L-L-H-H-L-L
La forma más fácil de leer estas es usando una interrupción para llamar a una rutina cuando una de las entradas cambia de estado. De mirar la secuencia anterior, verás que cuando va hacia la derecha, A siempre cambios diferentes de B (A es líder). Va hacia la izquierda, A siempre cambios a ser lo mismo que B (A es el siguiente). Una rutina muy corto puede ser llamado cuando cambia un y simplemente aumentar un contador si A = B y disminuir el contador si A = / = B. Mantener interrupciones cortas siempre es un buen plan.
El único problema es que estamos utilizando un codificador muy barato. La idea anterior funciona bien pero el codificador barato "rebotes" tan mal que es cerca de inutilizable.
Hay un montón de circuitos del debounce en internet para codificadores rotatorios pero quería algo que fuera un) easy & b) usando piezas que tenía en mi banco. Resulta que al conectar a la clavija de entrada a través de un 1K, con un K de 10 hacia abajo y añadir un casquillo de 100nf a través para lo del almacenador intermediario, podemos ir de inservible a casi perfecta con dos partes adicionales. Es básicamente un filtro de paso bajo crudo. Diagrama del circuito se muestra en la segunda foto.
Igualmente podríamos debounce en software y verás que en el código de ejemplo y el código de reloj completo, he incluido las líneas comentadas que podrían ser la comentada para implementar un debounce software. Si no sobra un cap 100nf o su codificador rebota aún más terrible que la mía (que no parece posible) entonces usted puede las Naciones Unidas-comentario el debounce software.