Estoy tratando de contar (con precisión) el número de pulsos alimentados a un controlador de motor paso a paso TI DRV8711 . Este driver "convierte" un flanco de subida, dependiendo de la configuración, en un paso completo o un micropaso. El MCU que estoy usando para generar esos pulsos PWM es un Freescale MPC5602D . La frecuencia de los impulsos va a ser inferior a 30kHz por motor paso a paso.
La aplicación para la que estoy utilizando este dispositivo es el control de posición con un motor paso a paso. Esto requiere un conocimiento preciso de los pasos dados (dado que el motor paso a paso no se cala).
¿Cómo se conducen normalmente ese tipo de conductores? ¿Utilizando un pin GPIO normal que se afirma en una rutina de interrupción del temporizador o a través de PWM? Quiero evitar saturar el bucle principal con la afirmación y desafirmación de un pin GPIO. (Tengo que controlar 5+ motores paso a paso simultáneamente)
Contar los pulsos PWM enviados al controlador es trivial con un pin GPIO normal.
Por otro lado, ¿cómo se va a abordar el problema de con precisión ¿contar el número de pulsos PWM? ¿Se hace esto alimentando la salida PWM de vuelta a la MCU y usando un contador para contar los bordes ascendentes? Supongo que tengo que disminuir la frecuencia del PWM antes de alcanzar el número deseado de pulsos para desactivar el PWM antes del último pulso y así garantizar que no se "sobrepase" el punto de ajuste.
1 votos
Si usted están generando el PWM, entonces estás usando algún tipo de periférico temporizador, muy capaz de contar los pulsos que está produciendo, o generar una interrupción cada N pulsos.
0 votos
@EugeneSh. Sólo encuentro una opción para generar una interrupción cada cada vez que se crea un pulso. Contar estas interrupciones en un ISR me parece demasiada sobrecarga de procesamiento para esta tarea. Alimentar manualmente la salida PWM de nuevo a una entrada de contador de pulsos no parece demasiado limpio tampoco. Sólo me pregunto cómo se hace esto normalmente.
0 votos
Normalmente no usaría el módulo PWM en absoluto, porque los steppers no requieren ciclo de trabajo variable. En su lugar podría requerir frecuencia variable (para aceleración/deceleración). Así que un periférico especial o un GPIO regular controlado por software servirá.
0 votos
Exacto, por eso utilizo una salida modulada en frecuencia y anchura de impulsos, que por comodidad se sigue llamando salida PWM. La forma en que lo describe fue en realidad mi primer enfoque. TI está declarando la entrada como una señal "PWM" sin embargo, así que pensé que tenía que haber una solución más elegante.
0 votos
El punto aquí es que usted está tratando de llegar de un comentarios lo que tenga que ser un feedforward . No quieres que el MC te diga cuántos pulsos envía, pero necesitas decirle cuántos enviar.
0 votos
Sí, desgraciadamente no parece posible con la MCU que he mencionado (al menos en lo que respecta al hardware). ¿Conoces alguna MCU que implemente una función como esa? De lo contrario, me voy a quedar con el pin GPIO controlado por software.