Estoy trabajando en un proyecto de microcontrolador (ATMega328) donde planeo usar un codificador rotatorio. Planeo tener un ciclo principal no crítico en el tiempo y configurar una interrupción del temporizador para manejar la lectura del codificador.
¿Hay alguna referencia o regla general para la frecuencia a la que necesitaría que se llamara 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!
¿Es este codificador rotatorio uno con salidas en cuadratura?
¿Este está conectado a un motor rápido o uno en el que un usuario gira una perilla simple?
Si se trata de un codificador de 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, utilice una MCU que tenga hardware de temporizador/contador diseñado específicamente para capturar y decodificar las formas de onda en cuadratura.
Por otro lado, si el codificador es uno de estos dispositivos de interfaz de usuario de baja resolución con un recuento de PPR de, digamos, menos de cien, entonces es factible diseñar un sistema de muestreo de interrupción controlado por temporizador que pueda monitorear las entradas en cuadratura en un par de pines de puerto Tenga en cuenta que estos tipos de codificadores rotatorios de bajo costo a menudo usan contactos de limpiaparabrisas en el interior que requerirán un antirrebote similar a los contactos de interruptores regulares. Esto reducirá la velocidad máxima con la que puede 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 decodificar codificadores de interfaz de usuario con 32 y 64 PPR, incluido el antirrebote. Por supuesto, si se trata de un dispositivo que gira libremente sin bloqueo, es posible que las señales de cuadratura lleguen más rápido de lo que una interrupción de 1 KHz puede mantener si el usuario le da a la perilla o al eje un giro muy rápido.
Esto depende completamente de dos cosas: la resolución del codificador y la tasa 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 mínimo de respuesta debe ser
emmett p
emmett p
miguel karas
miguel karas
miguel karas