2 votos

Controladores PID de posición y velocidad de motores de CC en cascada

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.

1voto

Mark Puntos 3861

Su enfoque debería funcionar. También es la forma más sencilla de resolver el problema.

Siempre podrías elaborar un controlador de posición que dirija directamente los motores, pero sería menos fácil entender cómo afinarlo. Y entiendo que tienes lecturas de posición y velocidad, así que ¿por qué no usar dos bucles?

Como destacan los comentarios de la gente a tu pregunta, obviamente ahora tendrías un controlador de posición en lugar de velocidad. Pero tiene sentido ya que es para un robot.

Hay que tener cuidado con algunos detalles:

  1. Si los dos motores de corriente continua trabajan en paralelo, hay que encontrar una manera para que los dos no interfieran entre sí (como forzar carga reparto de la carga ). Sin embargo, usted debe haber enfrentado este problema ya en el bucle de velocidad.
  2. El bucle externo (control de posición) es, sin duda, mucho más lento que el bucle de velocidad. Si funcionara al mismo ritmo, o más rápido, tendrías el bucle de posición tirando fuertemente del de velocidad sin dejarle velocidad sin darle tiempo a reaccionar, y tendrías fuertes interacciones o incluso inestabilidades. Te sugiero que aceleres el interno (velocidad) tanto como puedas, y luego afines el externo.
  3. El bucle externo será aquí el "preciso". El interno debe ser de reacción rápida más que precisa. Yo sugeriría un controlador P o PD para el interno, y PI o PID para el externo.

Consejo extra: como es para un robot, yo tendría en cuenta un referencia de posición feed-forward .

1voto

RelaXNow Puntos 1164

Si quieres controlar la posición, controla la posición. No veo el sentido de tener un controlador de velocidad intermedio. Eso hará las cosas más complicadas y difíciles de afinar.

Como aparentemente tienes decodificadores de posición, tu bucle de control debería controlar la posición directamente. Este bucle de control puede entonces conducir el motor más fuerte cuando está lejos de la posición deseada, y menos cuando está cerca. Si se hace bien, esto resultará implícitamente en un buen perfil de velocidad para llegar de una posición a otra.

Si el sistema de nivel superior quiere que los motores funcionen a una velocidad determinada, entonces debe transmitir la posición deseada al controlador de posición.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X