Frecuencia de lectura necesaria frente a PPR del codificador rotatorio

1

Estoy trabajando en un proyecto de microcontrolador (ATMega328) en el que planeo usar un codificador rotatorio. Planeo tener un bucle principal que no es crítico de tiempo y configurar una interrupción de temporizador para manejar la lectura del codificador.

¿Hay alguna referencia o regla general para la frecuencia a la que necesitaría que se llame la interrupción del temporizador (la frecuencia de lectura) en relación con el PPR del codificador para que se lea con precisión?

¡Gracias!

    
pregunta Emmett P

2 respuestas

1

¿Es este codificador rotatorio uno con salidas en cuadratura?

¿Este está conectado a un motor rápido o al que un usuario gira un simple botón?

Si se trata de un codificador en cuadratura conectado a un dispositivo rápido, abandone la idea de monitorear el codificador directamente muestreando un par de pines GPIO a través de una interrupción de temporizador. En su lugar, use una MCU que tenga un hardware de contador / temporizador específicamente diseñado para capturar y decodificar las formas de onda en cuadratura.

Por otra parte, si el codificador es uno de estos dispositivos de interfaz de usuario de baja resolución con un recuento de PPR de menos de un centenar, entonces es posible diseñar un sistema de muestreo de interrupciones controlado por temporizador que pueda monitorear las entradas de cuadratura en un par de pines de puerto. Tenga en cuenta que estos tipos de codificadores rotativos de bajo costo a menudo usan contactos de limpiaparabrisas en el interior que requerirán un rebote similar al de los contactos de interruptor normales. Esto afectará a la velocidad máxima con la que puedes decodificar y contar los pulsos de cuadratura.

He tenido éxito con el uso de una máquina de estado de interrupción de temporizador de 1 ms para descodificar codificadores de interfaz de usuario de descodificación con 32 y 64 PPR, incluido el rebote. Por supuesto, si se trata de un dispositivo que no gira libremente y que no se mueve libremente, es posible que las señales de cuadratura lleguen más rápido de lo que una interrupción de 1 KHz puede continuar si el usuario le da a la perilla o al eje un giro muy rápido.

    
respondido por el Michael Karas
1

Esto depende completamente de dos cosas: la resolución del codificador y la velocidad de rotación máxima. Digamos que tiene un codificador que emite 1024 ppr y tiene una velocidad de rotación máxima de 5 rps (300 rpm). Entonces, el tiempo de respuesta mínimo debe ser $$ t = \ frac {1} {5 \ times 1024} = 195 \ mu \ text {sec} $$ Tenga en cuenta que la velocidad del eje es la velocidad de rotación instantánea, y no implica que el eje Completa 5 revoluciones en un segundo.

    
respondido por el WhatRoughBeast

Lea otras preguntas en las etiquetas