Estoy trabajando en un decodificador de cuadratura por software y probando con un Lego EV3 motor medio (que tiene un codificador de cuadratura integrado).
La cuestión es que, mientras el motor grande produce una salida de cuadratura de aspecto perfectamente normal, mi motor mediano produce esto:
Las transiciones del canal 2 siempre adelantan al canal 1 en 130-200µs. Es, técnicamente, la secuencia de transición correcta para la cuadratura, pero las dos señales están casi en fase o antifase dependiendo de la dirección.
Es notable que estas formas de onda son consistentes con la implementación de ev3dev del decodificador (que supongo que es coherente con la implementación de Lego) que funciona a media resolución tratando los bordes de una entrada como relojes y la diferencia entre las dos señales como dirección. Estas formas de onda actúan como si se prepararan específicamente para ese tipo de detección (mantener los dos bordes cerca maximiza el tiempo disponible para que el software los muestree correctamente).
Esperaba evitar hacerlo así por la menor precisión. Quiero que el código sea un decodificador de cuadratura genérico y de precisión completa, pero que también funcione con estos motores.
Los esquemas que Lego proporcionar muestra lo que me parece un codificador perfectamente normal:
Incluso si los sensores no están bien alineados o si son lentos en la transición porque el LED es demasiado débil, no deberían producir esta salida, ¿verdad? Mi razonamiento es que si se trata de un problema de alineación, deberían mostrar la misma superposición de fase en ambas direcciones, no una negativa.
Me pregunto si ambas líneas están rampando lentamente, internamente, pero la transición de la salida del disparador schmitt en una línea causa algún tipo de ruido que provoca una detección más temprana en la otra línea.
Eso no suena bien. ¿Alguien tiene alguna idea mejor de lo que está pasando aquí?
0 votos
Aquí hay alguien más con una experiencia similar de mala fase de la señal de cuadratura, parece que es un efecto secundario de los codificadores de consumo. - vexforum.com/index.php/
0 votos
La buena noticia es que no es por esto que mi código no funcionaba. Eso resultó ser problemas de configuración de E/S. Pero ahora veo que tengo que ser especialmente cuidadoso para elegir la línea correcta para el reloj.