Estoy intentando construir un robot con un accionamiento diferencial alimentado por dos motores de corriente continua. Primero implementé un controlador PID para controlar la velocidad de cada motor independientemente. Estimé la TF utilizando la caja de herramientas de identificación de sistemas de MATLAB, del sistema de bucle abierto mediante la adquisición de la velocidad del codificador de cada rueda en función de la señal PWM aplicada por un microcontrolador Arduino. Todo fue bien y dimensioné con éxito las ganancias del PID para este controlador.
Lo que estoy tratando de lograr ahora es controlar la posición exacta (angular) del motor de corriente continua. He pensado en conectar en cascada un controlador PID en la entrada del otro ya implementado. De esta manera, puedo dar una posición al primer controlador, que será capaz de generar una referencia de salida al segundo controlador (de velocidad) para que genere la señal de valor PWM adecuada para conducir el motor de CC en consecuencia.
¿Funcionará? ¿Es 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?
2 votos
¿Qué retroalimentación está utilizando para los motores?
0 votos
Tal como está planteada, la pregunta no tiene mucho sentido. ¿Cómo puedes controlar la posición angular del motor si no es a velocidad cero? Si quieres que un motor se mueva de una posición a otra utilizando un perfil de velocidad específico, normalmente se implementa teniendo un bucle de control de posición y alimentándolo con una serie de posiciones basadas en el tiempo generadas por un generador de perfiles.
0 votos
¡Hola @Andyaka ! Estoy utilizando encoders incrementales posicionales de efecto hall.
0 votos
Puede que llegue tarde, pero su planteamiento es correcto, además, puede conectar en cascada un controlador de par para responder a las perturbaciones de la carga, además, puede utilizar un planteamiento óptimo para calcular las ganancias de los controladores.