codificador de cuadratura Stm32 con PWM pulsando en una dirección

0

Utilizo un encoder incremental en cuadratura en un dispositivo mecánico rotativo y lo he conectado a los pines TIM3_CH1 y TIM3_CH2 del temporizador en modo encoder. He establecido el pin TIM3_CH3 como salida PWM para generar un pulso en cada período de contador TIM3- > CNT en este caso en cada 400 pulsos para generar un pulso PWM con 100 pulsos (25% de ciclo de trabajo).

El problema está en la mecánica en la que se monta la rueda del codificador. Este dispositivo mecánico tiene algo de retroceso y, a veces, cambia la dirección de rotación a CW (rebote). A modo de ejemplo: en la dirección normal de rotación, el encoder de la captura del contador pulsa los impulsos (cuadratura de los impulsos descendente y ascendente) y cuando el período del contador se restablece de 400 a 0, en este caso el pin TIM3_CH3 va en ALTO y si el dispositivo mecánico el cambio de dirección debido al juego en este caso el contador comienza a contar hacia atrás para varios impulsos 0,400,399,398,397 .. y el pin TIM3_CH3 se pone BAJO, pero cuando la rotación comienza nuevamente en la dirección correcta, el contador comienza a contar hacia arriba y al final del período de contador el pin TIM3_CH3 vuelve a ALTO pero en la misma posición.

Necesito evitar que dos pulsos PWM estén en la misma posición debido a un juego mecánico (rebote), los pulsos PWM de TIM3_CH3 deben distribuirse a intervalos regulares (distancia) y nunca debe haber dos pulsos en la misma posición (al mismo lugar) mientras usa el dispositivo láser para escanear la superficie, no debe medir dos puntos en la misma posición.

¿Es alguna solución hacer que funcione con algunos temporizadores, eventos o combinando más temporizadores para evitar la codificación y ejecución en la CPU, para evitar que el pulso se repita en el mismo lugar, es decir, cuando la rueda se mueve debido a la reacción de retroceso? ¿Recordar la posición anterior y no vuelve a dar impulso cuando vuelve a la posición anterior?

    

0 respuestas

Lea otras preguntas en las etiquetas