Quiero controlar la velocidad de un motor usando un controlador PID. Mi problema es que el rango válido de PWM que puedo configurar en mi microcontrolador es de 0 a 199 , pero mido la velocidad del motor (usando un codificador) en un rango de ~50 a 6000 RPM.
¿Cómo puedo intercambiar significativamente estos valores?
Ejemplo:
Configuré la velocidad objetivo en 6000 cuando el motor está a 0 RPM. Luego, el PID comienza y en ese momento el error es 6000... por lo que el PID da una salida máxima que será 32767. Pero solo puedo configurar el temporizador PWM de 0 a 200.
Estoy usando el código en la nota de la aplicación AVR221 y allí cada variable tiene un signo entero (sin puntos flotantes). Mi propio microcontrolador es stm32 que puede manejar puntos flotantes de manera eficiente, creo.
No hay necesidad de escalar. Debe limitar la salida de su controlador PID al 0 % y al 99 %, y averiguar qué factores funcionan mejor. Hay I*R, todo tipo de interferencia, aceleración, por lo que el voltaje no está estrictamente relacionado con la velocidad. En realidad, a veces puede parecer que no hay ninguna relación en absoluto. Así que haces PI o PID, y lo ajustas. La mejor práctica es usar también unidades SI en todas partes, pero no es obligatorio.
Por cierto, y esto es muy importante. Debe crear un perfil de movimiento. Lo que en el caso del control de velocidad significa que debe aumentar gradualmente la velocidad de acuerdo con la aceleración. De lo contrario, obtendrá sobreimpulsos y un comportamiento muy inestable, o un control deficiente si reduce su ganancia para calmar el sistema.
Por lo general, la salida de una función PID es un número entre 0,0 y 1,0 (0-100 %), puede multiplicar esto por el período de su temporizador para obtener el valor del ciclo de trabajo.
Pero si usa matemáticas enteras, la salida de su función PID es -32768 a 32767, entonces tiene -1.0 a 1.0 con una resolución de 1/32767.
En su caso, divida la salida de 16 bits firmada por 163.
La salida PID es básicamente el aumento requerido en POTENCIA para trazar un camino hacia el punto de referencia requerido: piense en un control de crucero en un automóvil, a medida que la velocidad cae por debajo del punto de referencia, se alimenta más acelerador. La curva de par en la mayoría de los motores de CC sigue un forma parabólica, por lo que a RPM altas y bajas, su entrada de "acelerador" debe ampliarse en consecuencia. Las curvas de par cambian con el voltaje de entrada, por supuesto, por lo que una buena idea para ayudar a estabilizar el sistema sería usar un regulador de voltaje, que ayudará a eliminar al menos un objetivo en movimiento del sistema.
PWM no cambia la velocidad de un motor directamente, cambia el voltaje a través del motor, mientras mantiene el par. La única forma de traducir el ciclo de trabajo de PWM a la velocidad de un motor de manera confiable y precisa es hacer un gráfico usted mismo. Diría que haga al menos 5 puntos y grafique la velocidad contra el ciclo de trabajo en un gráfico.
oscuro
usuario76844
David777
David777
usuario76844
David777
usuario76844