Contar pulsos PWM introducidos en el controlador FET del motor paso a paso

2

Estoy tratando de (con precisión) contar la cantidad de pulsos que recibe un controlador de motor paso a paso TI DRV8711 . Este controlador "convierte" un flanco ascendente, dependiendo de la configuración, a un paso completo o microstep. El MCU que estoy usando para generar esos pulsos PWM es un Freescale MPC5602D . La frecuencia del pulso será inferior a 30 kHz por motor paso a paso.

La aplicación para la que estoy usando este dispositivo es el control de posición con un motor paso a paso. Esto requiere un conocimiento preciso de los pasos tomados (dado que el motor paso a paso no se detiene).

¿Cómo se maneja ese tipo de controladores normalmente? ¿Utilizando un pin GPIO regular que se afirma en una rutina de interrupción del temporizador o mediante PWM? Quiero evitar abarrotar el bucle principal al afirmar y deshabilitar un pin GPIO. (Tengo que controlar 5+ motores paso a paso simultáneamente)

El conteo de los pulsos PWM enviados al controlador es trivial con un pin GPIO regular.

Por otra parte, ¿cómo se abordará el problema de con precisión contar el número de pulsos de PWM? ¿Se hace esto devolviendo la salida PWM a la MCU y utilizando un contador para contar los bordes ascendentes? Supongo que tengo que disminuir la frecuencia de PWM antes de alcanzar el número deseado de pulsos para deshabilitar la PWM antes del último pulso y, por lo tanto, garantizar que no se "supere" el punto de ajuste.

    
pregunta fscheidl

2 respuestas

3

Conozco tres formas de lograr lo que necesita (y he usado las tres). Has mencionado los dos primeros en tu comentario.

Tener un ISR cuenta los pasos-pulsos es el más simple. El ISR solo necesita incrementar o disminuir un contador de posición. En los micros de 8 bits que uso, tal ISR tomaría menos de un microsegundo (aunque codifico en lenguaje ensamblador, no C, en esa MCU). No debería haber mucha sobrecarga en cualquier MCU.

La segunda forma es llevar el pulso de pasos a un contador. Eso podría ser difícil de manejar si su motor funciona en ambas direcciones, ya que necesita aumentar algunas veces y disminuir otras (o simplemente saber en qué dirección está el recuento). Utilicé este método en los años 80 cuando los chips de contador / temporizador se usaban normalmente para el control de movimiento.

La forma más eficiente de controlar un paso a paso es con un circuito generador de frecuencia separado, controlado por la MCU. Una forma sencilla de crear uno es utilizar el 7497 chip multiplicador de tasa. Cada 7497 es de seis bits y los coloca en cascada para obtener la resolución deseada. Sin embargo, su flujo de pulsos de salida no es muy uniforme, lo que puede causar inestabilidad en algunas aplicaciones (sin embargo, puede filtrarse). Una técnica mejor es el método del sumador / acumulador, que proporciona un flujo de pulso de salida muy limpio y se multiplexa fácilmente para controlar varios motores (si lo necesita). He tenido algunos sistemas de 32 ejes que utilizaron este enfoque. El Adder / acumulador (y el mux) encaja muy bien en un FPGA.

La gran ventaja de un generador de velocidad es la simplicidad del software. El generador de tasas le da una interrupción a una tasa fija, que es su período de actualización. En ese ISR, simplemente cargue la cantidad de pasos que desea ejecutar en el próximo período. Las interrupciones de la actualización pueden ser relativamente infrecuentes, por lo que la sobrecarga es baja. La posición es fácil de mantener: solo agrega el valor que carga en el generador de frecuencia a su contador de posición. La velocidad se controla fácilmente porque está en proporción directa con la cantidad de pasos que carga en el generador de frecuencia. La aceleración también es fácil de controlar: solo agregue / reste un valor fijo en cada actualización. Si tiene varios motores, los actualizaría todos en el mismo ISR.

(whew) Lo siento si fue demasiado largo aliento.

    
respondido por el Mark
-1

Quizás el método más simple para generar pulsos PWM es usar un PLC Omron CP1L-M30DT1-D (este es un número de pieza de ejemplo, ya que hay varios modelos adicionales con salida de pulso de alta velocidad). No solo puede generar pulsos de PWM con este dispositivo, sino también cualquier número de pulsos estándar predeterminados en un ciclo de trabajo del 50% para impulsar un motor paso a paso a una posición predeterminada. La aceleración y la desaceleración también son programables, eliminando los errores del controlador del motor paso a paso. Los contadores de alta velocidad también están disponibles si desea realimentar los pulsos para la verificación, pero generalmente no es necesario, ya que el dispositivo eliminará con precisión el número de pulsos preprogramados. Soy nuevo en este grupo y no creo que pueda crear un enlace a la especificación de PLC, por lo que quizás alguien más pueda crearlo por mí.

enlace

Las especificaciones de la entrada del contador de alta velocidad y la salida de impulsos se encuentran en la página 3 de esta documentación

    
respondido por el Ted

Lea otras preguntas en las etiquetas