nuevo_preparatorio4_pid_pendulo invertido.pdf
TRANSCRIPT
![Page 1: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/1.jpg)
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
DEPARTAMENTO DE CIENCIAS DE LA ENERGÍA Y MECÁNICA
AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA
PREPARATORIO #4
PRÁCTICA: PID. ALGORITMOS
ALUMNOS:
MORALES DIEGO ESTEBAN
POLO JUAN PABLO
NRC:
1687
FECHA DE ENTREGA:
15 DE DICIEMBRE DE 2015
![Page 2: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/2.jpg)
1. TEMA: PID. Algoritmos
2. OBJETIVO:
Analizar las ventajas y desventajas de las diferentes configuraciones de
implementación de los controladores PID.
Utilizar herramientas computacionales de MATLAB para la simulación de sistemas
que utilizan controladores PID.
3. DESARROLLO
4.1. TRABAJO PREPARATORIO
Fig 1. Carro-Péndulo Invertido
1) Para el sistema de la Fig 1, obtenga el modelo basado en energía que describa
la dinámica del sistema. (Tomar en cuenta que el modelo debe ser para
variaciones pequeñas del péndulo).
- Ecuación lagrangeana
𝐿 = 𝑇 − 𝑈
𝐿 = 𝐸𝑛𝑒𝑟𝑔í𝑎 𝑐𝑖𝑛é𝑡𝑖𝑐𝑎 − 𝐸𝑛𝑒𝑟𝑔í𝑎 𝑝𝑜𝑡𝑒𝑛𝑐𝑖𝑎𝑙,
Entonces
![Page 3: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/3.jpg)
Por tanto tenemos:
Ecuaciones de movimiento:
![Page 4: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/4.jpg)
Simplificando obtuvimos las ecuaciones de movimiento:
Análisis
Desde el análisis y control de las técnicas de diseño estaremos empleando en este ejemplo
sólo se aplican a los sistemas lineales, este conjunto de ecuaciones debe ser linealizado. En
concreto, vamos a linealizar las ecuaciones sobre la posición de equilibrio verticalmente
hacia arriba, =, y supondremos que el sistema se mantenga dentro de un pequeño margen
de equilibrio. Esta hipótesis debe ser razonablemente válida ya bajo control deseamos que
el péndulo se desvía más de 20 grados desde la posición vertical hacia arriba. Que
representa la desviación de la posición del péndulo del equilibrio, es decir, = +. Otra vez
presumiendo una pequeña desviación desde el equilibrio, podemos utilizar las siguientes
aproximaciones de ángulos pequeños de las funciones no lineales en nuestras ecuaciones
del sistema:
Después sustituir las aproximaciones anteriores en nuestras ecuaciones no lineales de
gobierno, llegamos a las dos ecuaciones linealizadas de movimiento. Nota ha sido
sustituido por la entrada.
![Page 5: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/5.jpg)
2) A partir de las ecuaciones obtenidas en el punto 1. Obtenga la función de
transferencia del sistema de tal manera que se pueda controlar la velocidad
lineal del carro manteniendo el ángulo del péndulo lo más cercano posible a
cero.
- Posición angular
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num = [ m * l / q 0] den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l
/ q ] gp=tf(num,den)
Función de transferencia de la posición angular:
- Desplazamiento
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num = [ ( i + m * l ^2)/q 0/q -(g*m*l)/q] den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l
/ q 0 ] gp=tf(num,den)
![Page 6: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/6.jpg)
Función de transferencia del desplazamiento:
3) Diseñe un controlador PID que cumpla con lo establecido en el punto 2.
El objetivo de este apartado es lograr diseñar un PID capaz de estabilizar el péndulo
invertido y analizar posteriormente si el controlador diseñado será el más adecuado para el
sistema.
Requerimientos
Tiempo de establecimiento menor a 2 segundos.
Angulo del péndulo siempre menor que 0.05 radianes que es igual a 2.86 grados de
la vertical.
En ocasiones la mejor forma de obtener un regulador óptimo es a base de prueba y error,
por ello, en principio, se asume que el valor proporcionar, integral y derivativo valdrá
según lo calculado:
- PID
Planta = P
ts= 4s
Mp<25%
Ecuación característica
𝑠2 + 2𝜉𝑊𝑛𝑠 + 𝑊𝑛2
Nos queda
![Page 7: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/7.jpg)
𝑠2 + 1.38𝑠 + 2.96 = (𝑠 + 0.697 + 𝑗1.57)(𝑠 + 0.69 − 𝑗1.57) (1)
Ahora sabemos
𝐶𝑝𝑖𝑑 = 𝑘𝑝 +𝑘𝑖
𝑠+ 𝑘𝑑𝑠
1 + 𝑃 ∗ 𝐶𝑝𝑖𝑑
1 +4.545𝑠
𝑠3 + 0.1818𝑠2 − 31.18𝑠 − 4.455∗ (𝑘𝑝 +
𝑘𝑖
𝑠+ 𝑘𝑑𝑠)
Simplificando nos queda:
4.545𝐾𝑑𝑠2 + 4.545𝑘𝑖 + 4.545𝑘𝑝𝑠 + 𝑠3 + 0.1818𝑠2 − 31.18𝑠 − 4.455
𝑠3 + 0.1818𝑠2 − 31.18𝑠 − 4.455
Agrupando tenemos:
𝑠3 + (4.545𝑘𝑑 + 0.181)𝑠2 − (4.545𝑘𝑝 − 31.18)𝑠 + 4.455𝑘𝑖 − 4.545 (2)
Igualando (1) y (2) y adicionando a (2) un zero (s+10) lejano tenemos
𝑠3 + (4.545𝑘𝑑 + 0.181)𝑠2 − (4.545𝑘𝑝 − 31.18)𝑠 + 4.455𝑘𝑖 − 4.545
= (𝑠 + 0.697 + 𝑗1.57)(𝑠 + 0.69 − 𝑗1.57)(𝑠 + 10)
𝑠3 + (4.545𝑘𝑑 + 0.181)𝑠2 − (4.545𝑘𝑝 − 31.18)𝑠 + 4.455𝑘𝑖 − 4.545
= 𝑠3 + 19𝑠2 + 86𝑠 − 40
De la ecuación anterior despejamos Kp, Ki y Kd que son nuestros valores preliminares:
𝒌𝒅 = −𝟎. 𝟐𝟑
𝒌𝒑 = 𝟓. 𝟖𝟔
𝒌𝒊 = 𝟐. 𝟐𝟖
Controlador PID
𝑃𝐼𝐷 = 5.86 +1.68
𝑠− 0.23𝑠
![Page 8: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/8.jpg)
Fig 2. Diagrama de bloques PID
4) Simule el sistema sin control indicando la velocidad lineal del carro y la
posición angular del péndulo.
- Posición Angular
Código implementado en Matlab
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num = [ m * l / q 0] den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l
/ q ] gp=tf(num,den) t =0:0.01:5; step (num ,den ,t) axis ([0 1.5 0 10])
Fig 3. Respuesta ante entrada escalón, sin control previo
Como se observa la respuesta aún no es estable.
![Page 9: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/9.jpg)
- Desplazamiento
Código implementado en Matlab
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num = [ ( i + m * l ^2)/q -(g*m*l)/q] den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g
* l / q 0 ] gp=tf(num,den) t =0:0.01:5; step (num ,den ,t) axis ([0 10 0 40])
Fig 4. Respuesta ante escalón, variable de desplazamiento.
Al observar que sin ningún control tiende hacia el infinito el desplazamiento.
5) Simule el sistema controlado de tal forma que se evidencie el cumplimiento de
las especificaciones del punto 3.
En el caso del péndulo invertido, como ya se ha mencionado anteriormente, se va a hacer
uso de la herramienta Matlab. Así que partiendo del código ya utilizado en el apartado
anterior y siguiendo con los requerimientos de diseño especificados en el mismo apartado
ya se puede comenzar a realizar pruebas:
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num = [ m * l / q 0] den = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g * l
/ q ] gp=tf(num,den)
![Page 10: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/10.jpg)
kd = -0.23; k = 5.86; ki = 1.68; numPID = [ kd k ki ]; denPID = [1 0]; numc = conv ( num , denPID ) denc = polyadd ( conv ( denPID , den ) , conv ( numPID , num ) ) t =0:0.01:5; impulse ( numc , denc , t ) axis ([0 2 0 1])
Fig 5. Respuesta de salida con kp, ki, kd calculados
Se puede observar que el tiempo de establecimiento empieza a ser aceptable pues es
cercano a los 4 segundos. Además, el error estacionario es cero, así que es necesario variar
el control integral. El siguiente paso es intentar reducir el sobrepico, para ello, se prueba
con un valor Kd de -0.23:
Fig 6. Respuesta ante el incremento proporcional, derivativo y disminuyendo el integral
Nuevos valores de PID
𝒌𝒅 = −𝟎. 𝟐𝟑
𝒌𝒑 = 𝟓. 𝟖𝟔
𝒌𝒊 = 𝟏. 𝟔𝟖
![Page 11: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/11.jpg)
Como se puede ver, el sobrepico se redujo de modo que el péndulo no se mueve más que 1
radian de la vertical. Se han satisfecho todos los criterios de diseño, así que ya no se
necesita más iteraciones. Al parecer ya se ha obtenido un PID capaz de hacer estable el
péndulo pero no se ha tenido en cuenta que ocurre con la posición del carro. Simulando el
sistema con la función de transferencia en lazo cerrado que incluye la posición del carro, se
obtiene el sistema completo:
Fig 7. PID del sistema péndulo invertido
Desplazamiento:
Código implementado en Matlab
M = 0.5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = ( M + m ) *( i + m * l ^2) -( m * l ) ^2; num1 = [m*l/q 0 0]; den1 = [1 b *( i + m * l ^2) / q -( M + m ) * m * g * l / q -b * m * g
* l / q 0 ] num2=[(i+m*l^2)/q 0 -m*g*l/q]; den2=den1 gp=tf(num,den) kd = -0.23; k = 5.86; ki = 1.68; numPID = [ kd k ki ]; denPID = [1 0]; numc = conv ( num2 , denPID ) denc = polyadd ( conv ( denPID , den2 ) , conv ( numPID , num1 ) ) t =0:0.01:5; impulse ( numc , denc , t )
![Page 12: nuevo_preparatorio4_pid_pendulo invertido.pdf](https://reader036.vdocuments.co/reader036/viewer/2022081817/5695d01d1a28ab9b02910267/html5/thumbnails/12.jpg)
Fig 8. PID: Respuesta del carro
Como se observa, el carro se desplaza a una velocidad constante y nunca se detiene. A
pesar de que el controlador PID estabiliza el ángulo del péndulo,
4. BIBLIOGRAFÍA
- Dinámica de sistemas, Katsuhiko Ogata, 1 Edición.
En línea
- http://www.mathworks.com/help/control/ref/tfdata.html
- http://eprints.ucm.es/16096/1/memoriaPFC.pdf
- https://riunet.upv.es/bitstream/handle/10251/10296/Memoria.pdf