Está en la página 1de 8

UNIVERSIDAD DE LOS LLANOS INFORME DE

Facultad de Ciencias básicas e ingenierías LABORATORIO


Departamento de Ingeniería Electrónica. CONTROL DIGITAL.

CONTROLADOR DIGITAL PID DE POSICIÓN DE UN MOTOR DC


Ricardo Mahecha Badillo, Jairo Andrés Guevara, Marcelo Iván Bolivar Lombo.

jairo.guevara@unillanos.edu.co 1
ricardo.mahecha@unillanos.edu.co 2
marcelo.bolivar@unillanos.edu.co 3
.^(1,2,3)Estudiantes de Ingeniería Electrónica, Universidad de los Llanos.

Resumen
En el presente informe se procedió a diseñar e implementar un controlador PID para un sistema de control de posición
angular de un motorreductor DC; Se usó un microcontrolador Arduino y un puente H L298N, cuya función era ejecutar
la señal de modulación de ancho de pulso (PWM). El código implementado generaba la señal PWM usando los
algoritmos de sintonización PID, con el cual los errores se disminuyeron y las oscilaciones de error eran muy bajas.
Finalmente el controlador se implementó en el software labVIEW, el cual enviaba la señal para controlar el motor en
tiempo real mediante el microcontrolador arduino, al mismo tiempo que iba graficando la respuesta de salida de la
posición actual del motor, en la cual se pudo observar como la curva de respuesta de la salida (Grados vs Tiempo) se
aproximaba a la posición deseada

Palabras clave: Controlador PID , control de posición, modulación de ancho de pulso, motor DC.

controlar la tensión y, en consecuencia, la


velocidad o la posición del motor [1].
I. INTRODUCCIÓN
La precisión de respuesta de forma predecible y
Hoy en día, los motores de corriente continua se repetible se utiliza para control de posición en
utilizan en diversas aplicaciones como defensa, dispositivos mecatrónicos. Por ejemplo, la
industrias, robótica debido a su simplicidad, colocación de componentes debe ser correcta en
facilidad de aplicación, fiabilidad y rentabilidad. El una placa de circuito impreso antes de que el
control de posición de un motor DC es crucial en proceso de soldadura en una máquina de recogida y
las aplicaciones para el sistema de control de colocación para la producción de placas de circuito
precisión. El propósito de un controlador de impreso. [2]
posición del motor es tomar una señal que
representa el ángulo requerido y conducir un motor Otro ejemplo, un motor mediante control se aplica
en esa posición. Los microcontroladores pueden para abrir la válvula para drenar el fluido. En
facilitar el control de un motor de DC. Un sistema diversas aplicaciones industriales, los motores de
de control de posición basado en un corriente continua suelen ser utilizados en una
microcontrolador consta de un componente variedad de respuestas, como por ejemplo para
electrónico y un microcontrolador. Hay muchas seguir una velocidad predeterminada o una
aplicaciones de accionamientos de motores de DC trayectoria de posición bajo una carga variable [3].
que utilizan la electrónica de potencia para
Los motores de corriente continua se utilizan en
antenas de satélite, brazos robóticos y grúas. Estos
motores están sometidos al desgaste debido a las
duras condiciones en las que deben dar una
posición precisa, así como una respuesta rápida con
un error de estado estacionario cero. Para superar
estos problemas, es necesario diseñar un
controlador que controle perfectamente la posición
del motor DC. Aquí es donde entra el controlador
PID sugerido. [2]

El objetivo general de este informe, es presentar el


diseño de un controlador PID, donde se controla la
posición de un motor DC en tiempo real, .
implementando el controlador y la interfaz gráfica Figura 2. System Identification toolbox [5].
en el software labVIEW mediante el arduino uno,
donde se obtiene la respuesta de posición del El System Identification toolbox provee funciones y
motor de DC en tiempo real. una aplicación para construir modelos matemáticos
de sistemas dinámicos desde la medición de los
datos de entrada y salida [6]. Por ende, el uso de
esta herramienta permite modelar sistemas físicos,
II. Fundamento Teórico como motores DC, por medio de funciones de
● Identificación de sistemas transferencia.

La identificación de sistemas consiste en construir ● Controlador PID


modelos matemáticos de sistemas dinámicos
basados en la observación de los datos de dichos
Los controladores son elementos que se le
sistemas. Un sistema es un objeto cuyas variables
agregan al sistema original para mejorar sus
de diferentes tipos interactúan y producen señales
características de funcionamiento, con el objetivo
observables [4].
de satisfacer las especificaciones de diseño tanto en
régimen transitorio como en estado estable [5]

Figura 1. El sistema [4]

Como se observa en la figura anterior, un sistema


se puede modelar como una caja negra a la cual se
le ingresa una señal de entrada 𝑢(𝑡), y se obtendrá
como resultado una señal de salida 𝑦(𝑡) para cada
instante de tiempo 𝑡. Figura 3. Esquema de un sistema de control en lazo
cerrado [R4].
Uno de los métodos de identificación se denomina
Se dice que un controlador es de tipo
como método de la caja negra. Este método se
proporcional-integral-derivativo cuando la salida
caracteriza por el hecho de que no se especifican
del controlador 𝑣(𝑡) es proporcional al error 𝑒(𝑡),
las relaciones entre las variables físicas del sistema
sumado a una cantidad proporcional a la integral
por medio de leyes fundamentales, y consiste en
del error 𝑒(𝑡) mas una cantidad proporcional a la
inferir un modelo matemático a partir de la
derivada del error .
observación de la respuesta del sistema para una
entrada determinada [4]. Adquiriendo la respuesta
𝐾𝑝
del sistema, se puede hacer uso de métodos 𝑣(𝑡) = 𝐾𝑝𝑒(𝑡) + ∫ 𝑒(𝑡)𝑑𝑡 + 𝐾𝑝𝑇𝑑
𝑑𝑒(𝑡)
(1)
𝑇𝑖 𝑑𝑡
computacionales para estimar el modelo
El software MATLAB cuenta con una toolbox de Por ende, la expresión del controlador en el
identificación de sistemas que permite estimar una dominio s es la siguiente
función de transferencia a partir de los datos de la
entrada y la salida del mismo.
= 𝐾𝑝⎡⎢1 + + 𝑇𝑑𝑠⎤⎥
𝑉(𝑠) 1
𝐺𝑐(𝑠) = 𝐸(𝑠) 𝑇𝑖𝑠
(2)
⎣ ⎦
Trapezoidal:
El esquema del controlador PID integrado a un 𝐾𝑖 𝑇𝑠
sistema de control en lazo cerrado se muestra a 𝑧+1
continuación. (6)
2 𝑧−1

por lo que el término expresado en (3) se puede


discretizar como:

Euler hacia adelante:

𝑁 𝑁 (𝑧−1)
1+𝑁𝑇𝑠/(𝑧−1)
ó 𝑧−1+𝑁𝑇𝑠
(7)

Figura 4. Controlador PID [5]

Euler hacia atrás:


En la figura anterior se observa que la señal de
error se genera a partir de la diferencia entre la
𝑁 𝑁 (𝑧−1)
señal de entrada del sistema 𝑅(𝑠) y la señal de
retroalimentación 𝐵(𝑠) generada por el sensor. La 1+𝑁𝑇𝑠 𝑧/(𝑧−1)
ó (1+𝑁𝑇𝑠) 𝑧−1
(8)

señal 𝑉(𝑠) corresponde a la acción de control, y es


la que controla el proceso.
Trapezoidal:
● Controlador PID en tiempo Discreto
𝑁 𝑁 (𝑧−1)
ó (9)
𝐾𝑖 𝑁𝐾𝑑 1+𝑁𝑇𝑠 (𝑧+1)/2(𝑍−1) (1+𝑁𝑇𝑠/2)𝑧+𝑁𝑇𝑠/2 −1
𝐶(𝑠) = 𝐾𝑝 + 𝑠
+ 1+𝑁/𝑠
Para todos los términos anteriores, el período de
(3)
muestreo afecta las ganancias de los términos
integrales y derivados.
Para poder discretizar el controlador PID, se
convierten los términos integral y derivativo a su
contraparte de tiempo discreto. Existen 3
variaciones para hacerlo, mediante métodos de III. Sección Experimental
Euler hacia adelante, Euler hacia atrás y ● Modelado del Sistema
trapezoidal.
Es necesario determinar un modelo matemático del
Dado un periodo de muestreo TS, el término sistema físico en cuestión debido a que se diseñará
integral Ki/s se puede representar en forma discreta un controlador para este, para esto se conocen los
por: rpm del motor, luego mediante un código arduino y
el encoder del motor, se toman valores del cambio
Euler hacia adelante: de su velocidad con respecto al tiempo al variar la
fuente de voltaje al cual se está alimentando.
𝐾𝑖 𝑇𝑠
Con esto se tienen 2 vectores con los valores de
(4)
𝑧−1 rpm, uno de ellos se tomará como entrada y el otro
como salida, el tiempo de muestreo fue de 10us
Euler hacia atrás: para un total de 140 datos obtenidos.

𝐾𝑖 𝑇𝑠 𝑧
(5)
𝑧−1
kp,kd y ki con el fin de proceder a realizar el
algoritmo en arduino para el controlador PID
discreto.

Imagen 9 Constantes del PID.

Para hacer esto la función de transferencia se debe


convertir a una ecuación en diferencia de tal forma
que quede de esta manera.

Imagen 5. Código para obtener los rpm del motor


Imagen 10.Ecuación en diferencia del controlador.
Con estos valores se dispone a usar el software
Matlab y hacer uso de la herramienta system Para esto se hace el siguiente código en
identification para hallar la función de transferencia arduino,cabe destacar que en el montaje se hizo
en tiempo continuo necesario tanto el encoder del motor como un
puente h, los cuales nos ayudan con valores en el
Obteniendo la siguiente función de transferencia. código.

Imagen 6 Función de transferencia en lazo abierto.

Luego con el método ZOH se discretiza la función


de transferencia ya en grados, quedando así.

Imagen 7 Función de transferencia en lazo abierto


discreta.

● Construcción del Controlador

Ya teniendo la función de transferencia discreta se


procede con la herramienta sisotool y PID tuner a
diseña el controlador, para esto se fue
comprobando varios controladores hasta obtener el
final, el pid encontrado fue el siguiente.

Imagen 11. Inicialización de Variables.

Primeramente se establecen los pines del arduino


donde irán las 2 entradas tanto del encoder como
del puente h, luego se establecen variables como
Imagen 8 Controlador PID discreto. los ppr del motor, el tiempo de muestreo y los
grados por pulso del motor, también están las
Gracias a esto luego se extraen los valores para variables que se usaron para hacer el controlador
PID de acuerdo a los valores encontrados en
matlab.

Imagen 12. Dirección del Setpoint del Motor.. Imagen 14. Primera Parte del Controlador.

Esta parte del código está destinada a saber la Primero se pone una condición la cual es si esta
posición del setpoint, puesto que el controlador llegando un valor desde el puerto serial, el cual está
hace que este rebote antes de estabilizarse, se desea conectado y recibiendo información de labview,
saber esta oscilación, con ello se incrementa un este valor que llega es el valor del setpoint
valor de contador cada vez que el encoder se requerido, este valor posteriormente se guarda en
mueva para adelante o decrementa cuando se una variable string temporal, para ser convertida a
float, la variable temp2 sirve para almacenar el
mueva para atrás.
último valor recibido, ya que al recibir strings el
último valor es un cero.

Luego se calcula el error el cual es el setpoint


menos el valor deg que representa el ángulo de
rotación en grados, que para este primer caso es
cero,luego está la acción de control basada en la
ecuación en diferencia.

Así mismo se establece un valor máximo para la


acción controladora la cual es el valor de 360
grados, por último esta acción de control se hace
presente en la señal pwm que se envía al puente h,
la cual es la encargada de hacer el control.

Imagen 13. Función configuración.

Acá se establece los pines destino al encoder como


entradas y a los del puente h como salida, además
se establece la dirección de giro del motor, además
de generar unas interrupciones a partir de las
señales enviadas por el encoder, finalizando se
establece una salida pwm, un tiempo de espera para
el puerto serial.
para seleccionar el puerto.

Imagen 17. Diagrama del Labview..

Para esto se usaron las opciones de arduino que


posee labview, como lo son el visa de lectura y
escritura para correspondientemente enviar y
recibir información, el resto de funciones son
conversiones para cada ocasión, por ejemplo el
Imagen 15. Segunda Parte del Controlador.
valor ingresado por el usuario es un valor
numérico, pero para enviarlo al arduino se necesita
Esta parte lo que hace es actualizar el valor del
convertir a string, lo cual se hace en el esquema,
controlador, para un cambio de setpoint, además
luego se grafica este valor y el obtenido por el visa
que también establece los cambios en la dirección
lectura.
del movimiento del motor de acuerdo al signo del
error.
● Experimentación en el Laboratorio
● Labview
Por último ya teniendo el controlador, se hace una
Para la primera prueba se hace con un setpoint de
interfaz gráfica en labview para poder enviar el
150 grados, viéndose así la acción de control:
valor de setpoint además de mostrar el setpoint
actual y ver cómo se comporta la acción de control
sobre el motor.

Imagen 18. Tacometro con el grado deseado(Con


cero en 70)

Imagen 16. Interfaz Gráfica..

En la interfaz gráfica se muestra una gráfica donde


se observan los valores anteriormente
mencionados, un recuadro donde el usuario puede
digitar el valor deseado de setpoint en grados (si es
más de 360 dará las respectivas vueltas), además de
tener un buffer donde se verán los datos enviados,
un botón para detener el programa y el recuadro
de prueba y poniendo una rueda, para poder hacer
fuerza al motor y ver si el controlador lograba
regresar al setpoint, ocurriendo lo siguiente:

Imagen 19. Acción de control con estabilización en


150.

Como se puede apreciar toma la forma como las


que ofrece matlab, donde se puede ver un sobre Imagen 22.Prueba de fuerza.
paso y un tiempo de estabilización, donde se
demarca que se estabiliza en 150.

Ahora una prueba en 230 grados.

Imagen 23. Controlador volviendo al setpoint

Como se aprecia en la imagen anterior, se ve que


efectivamente hubo una anomalía en la
estabilización al principio, lo que nos indica que se
intentó mover el motor a la fuerza, y
correspondientemente, el controlador vuelve a
hacer la acción de control, y estabilizandose en el
Imagen 20. Acción de control con estabilización en
mismo valor que antes.
230 por abajo.

IV. Conclusiones

● Se pudo observar que la adición del


controlador digital mejoró dos factores. El
primero de ellos fue el hecho de que el
sistema alcanzara el valor de referencia, y
el segundo que respondiera óptimamente a
perturbaciones. Sin embargo, los
parámetros del controlador determinados
con matlab no fueron los utilizados
Imagen 21. Acción de control con estabilización en finalmente debido a que dejaban que el
230. sistema oscila alrededor del setpoint. Este
hecho genera un problema muy grande, y
es que debido a que el sistema es un motor
Por último tomando como base el ejercicio anterior, de alto torque, la oscilación en el setpoint
se puso a prueba el controlador, quitando la aguja genera un consumo de corriente elevado
cuando el motor hace un cambio de [7] Saad, M., Amhedb, A., & Sharqawi, M. (2021).
dirección, debido a que debe contrarrestar Real Time DC Motor Position Control Using PID
la inercia. Debido a esto, se tomó como Controller in LabVIEW. Journal of Robotics and
valor iniciales los valores del controlador Control (JRC) (Vol. 2).
y se empezó a modificar el valor de Kp, https://doi.org/10.18196/jrc.25104
Ki y Kd sutilmente para que este dejara la
oscilación. Por tanto, se puede concluir
que la herramienta de matlab puede servir
como un buen estimador de unos
parámetros iniciales, desde donde se
puede empezar a ajustar hasta lograr la
respuesta deseada.

V. Referencias

[1] L. Ljung, System identification—Theory for the


user. 1987.

[2] H. G. Ricardo, Introducción a los sistemas de


control: Conceptos, aplicaciones y simulación con
MATLAB. 1989.

[3] MATLAB, “System identification toolbox,”


Online.
https://www.mathworks.com/products/sysid.html.

[4] Gunt.(2021).RT 040 Sistema de prácticas


regulación de temperatura, HSI.[Online]. Available:
https://www.gunt.de/es/productos/sistema-de-practi
cas-regulacion-de-temperatura-hsi/080.04000/rt040
/glct-1:pa-150:pr-1045

[5]. Sailan and K.D. Kuhnert, “DC Motor Angular


Position Control using PID Controller for the
purpose of controlling the Hydraulic Pump”,
International Conference on Control, Engineering
and Information, Vol. 1, No. 2, pp. 22,26, 2013.

[6] information and Communication Technology,


Electronics and Microelectronics, pp. 138-143,
2013. [3] G. F. Franklin, J. D. Powel and A.
Emami-Naeini, Feedback control of dynamic
systems, 2nd ed, Addison-Wesley, 1991. [4] N.
Kumar and P. Krishna, “Low cost data acquition
and control using Arduino prototyping platform
and LabVIEW,” IJSR, vol. 2, pp.366- 369,
February 2013.

También podría gustarte