Evitar lecturas falsas del codificador rotatorio óptico

Tengo un codificador de eje óptico que tiene una resolución bastante grande: 2500 pulsos por rotación. El problema es que los pulsos falsos se registran a partir de las vibraciones ambientales: si lo sacudo en la mano o golpeo una mano que lo sostiene con la otra mano, recibo varios pulsos hacia adelante, luego varios hacia atrás, luego hacia adelante nuevamente, parece una sinusoide en descomposición.

Una forma de lidiar con eso es contar una cierta cantidad de pulsos que están en la misma dirección antes de registrar "bien, la rotación ha comenzado".

¿Alguien sabe algunos trucos ingeniosos para lidiar con este tipo de problema en el código del microcontrolador?

¿Por qué necesitas un truco inteligente para esto? Ya tienes una excelente idea.
la idea que tengo es sencilla, estoy más interesado en historias "desde las trincheras" sobre cómo resolver estos problemas
Programe un filtro de paso bajo en un algoritmo de respuesta de impulso finito. Requiere un poco de matemática para calcular los valores de los toques, pero el filtro en sí es bastante rápido.
¿Puedes publicar una foto de la configuración, incluido el codificador?
Todavía no tengo la configuración lista, solo el codificador: metrology.precizika.lt/pic/Products/A58.jpg metrology.precizika.lt/pdf/A58_EN.pdf

Respuestas (2)

[...] cuenta una cierta cantidad de pulsos que están en la misma dirección antes de registrar "bien, la rotación ha comenzado"

El OP propone una especie de histéresis. Si hay un movimiento lento pero real, su entrada real será lenta y suave, pero se percibirá como una serie de pasos.

Lo primero que viene a la mente es el filtrado de paso bajo de su señal en el software. El promedio Boxcar (promedio móvil), por ejemplo, es agradable y simple.

Lo segundo que viene a la mente es aislar el codificador de vibraciones no deseadas.

PD

Hay varias filosofías.

Filosofía #1. Intenta resolver problemas ópticos con óptica, problemas mecánicos con mecánica, problemas analógicos con analógicos, problemas digitales con digitales, problemas de software con software. En ese orden o precedencia (aproximadamente).

Filosofía #2. Trate de resolver todos los problemas con el software, porque los cambios de software son más convenientes que los cambios de hardware. Si no se puede evitar con el software, pruebe la solución digital. Luego intente analógico... Observe que el orden se invierte con la Filosofía #1.

Tiene un codificador óptico de muy alta resolución y está detectando movimientos reales tal como debe hacerlo. ¿Cuál es el problema?

¿Por qué tienes un codificador de tan alta resolución si no quieres medir movimientos tan pequeños? Estas dos cosas parecen una contradicción. Si no quieres poder medir movimientos tan pequeños, tengo tres sugerencias:

  • Mejora tu configuración mecánica para que no se transmitan tanto las pequeñas vibraciones al codificador. ¿Está utilizando rodamientos adecuados en todas partes?
  • En el software, tome la posición calculada del codificador y desplácela a la derecha por 2 o 3 (es decir, divídala por 4 u 8). Básicamente, esto simulará un codificador de resolución mucho más baja, que no sufrirá tanto estos problemas.
  • ¡Envíame el codificador y te enviaré uno de resolución mucho más baja, gratis !
tiene razón, el codificador es demasiado bueno para nuestros propósitos, pero nuevamente, con un codificador de cualquier resolución, puede hacer que se detenga cerca del borde de la ranura y obtener lecturas falsas de vibraciones.
@miceuz, ¿obtiene una lectura que indica un pequeño movimiento (por ejemplo, un solo paso)? Por qué es un problema? Si tiene algún tipo de bucle de control alrededor de la posición del codificador que reaccionará de forma exagerada a un pequeño cambio de posición, tal vez la respuesta sea arreglar la respuesta, no intentar degradar la capacidad del codificador.