Estoy tratando de construir un robot con un accionamiento diferencial alimentado por dos motores de CC. Primero implementé un controlador PID para controlar la velocidad de cada motor de forma independiente. Se estimó el TF usando el System Identification Toolbox de MATLAB, del sistema de lazo abierto mediante la adquisición de la velocidad de cada codificador de ruedas en función de la señal PWM aplicada por un microcontrolador Arduino. Todo salió bien y dimensioné con éxito las ganancias de PID para este controlador.
Lo que estoy tratando de lograr ahora es controlar la posición exacta (angular) del motor de CC. Pensé en conectar en cascada un controlador PID en la entrada de otro ya implementado. Entonces, de esta manera, puedo dar una posición al primer controlador, que será capaz de generar una referencia de salida al segundo controlador (velocidad) para que genere la señal de valor PWM adecuada para impulsar el motor de CC en consecuencia.
¿Funcionará? ¿Es ese un buen enfoque? ¿O debería intentar implementar un controlador diferente que emita la señal PWM en respuesta a una señal de referencia de posición?
Su enfoque debería funcionar. También es la forma más sencilla de resolver el problema.
Siempre podría elaborar un controlador de posición que dirija directamente los motores, pero sería menos fácil entender cómo ajustarlo. Y entiendo que tiene lecturas de posición y velocidad, entonces, ¿por qué no usar dos bucles?
Como resaltan los comentarios de las personas a su pregunta, obviamente ahora tendría un controlador de posición en lugar de velocidad. Pero tiene sentido ya que es para un robot.
Debes tener cuidado con algunos detalles:
Consejo adicional: como es para un robot, tomaría en consideración un feed-forward de referencia de posición .
Si quieres controlar la posición, controla la posición. No veo ningún punto en tener un controlador de velocidad intermedio. Eso hará las cosas más complicadas y difíciles de afinar.
Dado que aparentemente tiene decodificadores de posición, su bucle de control debe controlar la posición directamente. Este lazo de control puede impulsar el motor más fuerte cuando está lejos de la posición deseada, y menos cuando está cerca. Si se hace bien, implícitamente dará como resultado un buen perfil de velocidad para ir de una posición a otra.
Si el sistema de nivel superior quiere que los motores funcionen a una velocidad particular, entonces debe aumentar la posición deseada al controlador de posición.
Andy alias
david tweed
rflmota
usuario120030