LINUSBot - Robot seguidor de línea - con control PID
LINUSBot - Control PIDSe trata de un complemento de la primera "instructables" de LINUSBot (línea que sigue el robot).
Ahora el robot tiene control de movimiento realizado por un controlador PID, control proporcional, Integral y derivado. Esto hace que los movimientos en las curvas mucho más suaves y en las rectas, se puede desarrollar más rápidamente, llegando a velocidad máxima.
Control PID proporciona al robot un "aprendizaje", haciendo que el robot desarrollar mejor las curvas y recto del circuito.
Ahora, una breve introducción y Resumen de control PID.
Básicamente, este tipo de controlador realiza las siguientes acciones:
1 - Control proporcional:
Este controlador multiplica la corriente "error" por una constante Kp.
El "error" es la diferencia entre la salida real y la salida deseada y se alimenta al sistema, es decir:
Se resta la salida real de la salida deseada (la consigna), por lo que se calcula el error. Este error se introduce en el controlador PID como entrada, y el controlador PID (cálculo de los términos P, I y D), comandos del sistema para eliminar este error.
Asegurando así la ganancia necesaria para acercarse a la señal de salida deseada como rápidamente como sea posible y con la mejor estabilidad.
2 - Control integral:
El término que integral multiplica el error actual y su duración por un constante Ki, haciendo un resumen de toda la información.
El Integral del término cuando se añade al término proporcional; acelera el proceso de alcanzar el estado estacionario del sistema, además de proporcionar una señal más a la deseada salida. En otras palabras, también elimina (o al menos intentar eliminar) el error residual, llegando más rápido al resultado deseado.
3 - Control derivativo:
El término derivado, hace que la tasa de cambio del error señal multiplicada por una constante Kd. La intensión es predecir el error y así disminuir la tasa a la que produce los cambios de errores en el sistema.
Podemos utilizar estos tres términos juntos para formar un controlador PID o su variaçãoes tales como:
Regulador P (a veces usado):
En este caso el uso de pequeños valores de la constante Kp es la mejor manera de conseguir el valor deseado, pero su control es lento (que se tarda en llegar al valor deseado). Si se aumenta el valor de Kp puede ocurrir un overshot.
Controlador PI (más usado):
Elimina la porción residual de error en el caso de estado estacionario (mejora la respuesta transitoria), pero en este caso puede que tengas más overshoot y también estado de inversión, que ocurre la oscilación del sistema y causando inestabilidad, el sistema puede ser sobre-amortiguado u oscilatoria amortiguada bajo.
Este tipo de control hace que el sistema más lento. Usar valores más grandes de Ki, usted puede dejar el sistema más rápido, sin embargo, aumenta el sobreimpulso y disminuir el margen de estabilidad de su sistema.
Controlador PD (raramente utilizado):
Utilizado para disminuir la magnetude de rebasamiento de los sistemas que utiliza el controlador integral y mejorar la estabilidad del sistema. Pero reguladores derivados amplía el término de error de ruido y puede dejar el proceso de sistema inestable. El controlador PD disminuye el tiempo para alcanzar el valor deseado considerablemente... para que la ganancia derivativa Kd sea alta. Esto disminuye el tiempo de control, pero aumenta el ancho de banda del sistema, dejando el sistema susceptibles al ruido.
Regulador de PID (utilizado a veces):
Uso de PID (combinación de PI + PD), podemos quitar la proporción de errores de sistema y disminuir el tiempo de respuesta con una transistória respuesta razonable (sin oscilaciones o inestabilidad).
Este estudio puede encontrarse en:
http://www.youtube.com/watch?v=wbmEUi2p-na
http://en.wikipedia.org/wiki/PID_controller
Esta es la forma básica de la aplicación de un PID por medio del software:
previous_error = 0
integral = 0
Inicio:
error = setpoint - measured_value
integral integral = error * dt
derivado = (error - previous_error) /dt
salida = Kp * error + Ki * integral + Kd * derivado de la
previous_error = error
Wait(DT)
Goto Inicio
En el "LINUSBot" diseño se utilizó los siguientes parámetros:
KP = 1/20
Ki = 1/10000
KD = 3/2
El código completo para Arduino puede ser descargado desde el enlace:
http://www.4shared.com/file/iPVAVCwy/LINUSBot_9_3pi_modelo_PID.html
Mira el video y comprueba los resultados.
Nos vemos en el próximo proyecto.
Gracias
Otros proyectos: