Está en la página 1de 20

FACULTAD DE CIENCIAS E INGENIERIAS FISICAS Y FORMALES

PROGRAMA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

PENDULO INVERTIDO

TRABAJO PRESENTADO POR:


MARTIN VALENCIA ALEJO
EDUARDO ROQUE ORTEGA

Arequipa – Perú
2014
RESUMEN

Presentamos el diseño e implementación del péndulo invertido


basado controlador PID. El sistema es capaz de mantener el
equilibrio.
se realizará el diseño de una estrategia de control usando la
herramienta de Matlab de tal forma que actuando sobre el carrete
de impresora consigamos en un primer momento la estabilidad del
péndulo partiendo de un estado de reposo y posteriormente mantener
la verticalidad del mismo.

ABSTRACT

We present the design and implementation of the inverted pendulum


based PID controller. The system is able to maintain balance.
The design of a control strategy will be performed using the
Matlab tool so that acting on the spool printer get at first the
stability of the pendulum starting from a state of rest and then
maintain the same verticality.

PALABRAS CLAVE
Control péndulo invertido, Modelado, Sintonizacion, simulación,
controlador PID. Matlab

KEYWORDS

Controlling inverted pendulum, modeling, tuning, PID controller,


simulation y Matlab
1 Introducción

Un mecanismo muy utilizado hoy en dıa para realizar tanto


prácticas como proyectos de investigación es el péndulo invertido.
El sistema más común es el que está compuesto por un carro que se
mueve libremente a lo largo de un eje y una barra que pende de
él.
El proyecto propone el uso no sólo de un control clásico sobre el
sistema, sino una combinación de diferentes estrategias como el
control PID de ganancia programada lazo cerrado.
Si se considerase un sistema real, para poder mover el carro, este
se conecta mediante una cinta de transmisión que está conectada
al motor, este motor va a proporcionar un par proporcional a la
tensión de control aplicada, dependiendo de la polaridad de esta
tensión se consigue que le motor gire en uno u otro sentido,
haciendo que la cinta se mueva en ambas direcciones que es lo que
se pretende controlar con este sistema.
1.1. Marco Teorico

El sistema de péndulo invertido, es un problema clásico en la


ingeniería de control, el cual consiste en una varilla con una
masa en un extremo y en el otro un eje que puede pivotar
bidimensionalmente, todo esto va montado sobre un carro que puede
moverse longitudinalmente.
El primer péndulo invertido fue diseñado en los años setenta y
casi cuarenta años después permanece en los laboratorios como
objeto de estudio.

El interés es porque el modelo matemático para el péndulo


invertido presenta ciertas analogías con modelos de procesos más
complejos, tales como los generadores.

Inicialmente, la demostración consistía en situar de forma manual


el péndulo en la posición vertical invertida, soltarlo luego y
que de forma autónoma, realimentando su posición, el péndulo
continuase en la posición invertida mediante la adecuada actuación
sobre el carro.

APLICACIONES DEL PÉNDULO INVERTIDO

A pesar de que el péndulo es utilizado principalmente, para


demostrar conceptos sobre control, además de probar nuevos
controladores, tiene diferentes aplicaciones tales como:

1. Las perturbaciones que existen en el vuelo de una aeronave,


pueden desestabilizar su vuelo, esto se puede corregir con
el péndulo invertido.

2. Los sistemas robóticos pueden comportarse como un péndulo


invertido, por ejemplo, el péndulo invertido simula la
dinámica de un brazo robótico cuando el centro de presión
cae sobre el centro de gravedad, en ese momento el sistema
se vuelve inestable. Este tipo de problemas pueden ser
modelados con el péndulo, y de esta forma aumentar la
probabilidad de un buen funcionamiento

3. El control de la postura y la caminata de los robots bípedos,


puede ser modelado y controlado por el péndulo invertido, la
estructura de un robot humanoide puede asemejarse a la de un
péndulo invertido como el de la figura 1.1. La semejanza se
establece en que la masa del humanoide (m) se concentra en
el punto extremo del péndulo y que la masa de la barra
rígida de longitud l es despreciable respecto de la masa,
siendo l la distancia desde el suelo al centro de masas del
humanoide, el movimiento en la base del péndulo simula la
caminata en el bípedo.
1.2. Descripción del problema

Consiste en ajustar los parámetros del sistema combinado


(péndulo invertido - servomotor), por medio de datos en lugar
de ecuaciones matemáticas. Por consiguiente, muestran el
desarrollo del modelo matemático del sistema péndulo
invertido, servomotor y combinado. Para identificar las
ecuaciones y parámetros que describen la relación del
sistema no lineal.

1.3. Description del Sistema

Esquema Basico de Control

Controlador: Tiva C 80MHz, 32bits


Actuador: Sistema de movimiento de brazo
Sensores: Posición del péndulo

Controlador

Placa adquisidora de datos


Tiva C123G de Texas Instruments
10 entradas analógicas de 0-3V, conversor A/D de 12 bits
10 salidas analógicas de 0-3V, conversor D/A de 8 bits
40 entradas y salidas multiplexadas
Actuador

 Motor
o Características Eléctricas:
 sin escobillas
 tensión nominal 24 VCC
 corriente nominal 2ª

o Características Mecánicas:
 El motor cuenta con caja de reducción

Puente H
o Amplificador de Potencia
o Inversor de Marcha

Señal PWM
o Por medio de un canal del microcontrolador se enviara
una señal modulada en ancho de pulso que controlara la
velocidad del motor
Sensores

La posición del péndulo es medida por un potenciómetro


lineal.

1.4 Modelamiento Matemático

Variables del Sistema z


m: masa del péndulo
m
g: gravedad

l: longitud del péndulo


y 
x
r: radio de giro del brazo
 l
I: inercia del brazo
r

Ecuación de Estado:

 ml 2 mrl cos    1 0 mrl sin    


        
 mrl cos I  mr 2    2  mrl sin  0   
 mgl sin    bs 
   K 
   R v  KR  
2
0
Se establece como:

x1   , x2   , x3   , x4   y uv
Para definir la matriz de variables de estado:

 x3 
 x4 
 x1   

 x  ( I  mr )( 1 mrlx x sin x  b x ) r cos x ( 1 mrlx sin x  K u  K x ) 
2 2 2

 2  2 3 4 1 s 3

1 2 3 1 R R 4 

 x3   ml ( I  mr  mr cos x1 )
2 2 2 2
l ( I  mr  mr cos x1 )
2 2 2

   
 4   1 mrlx sin x  K u  K x r cos x ( 1 x x sin x  mgl sin x  b x ) 
x 2 2

 2 3 1 R R 4

1 2 3 4 1 1 s 3

 ( I  mr  mr cos x1 )
2 2 2
l ( I  mr  mr cos x1 )
2 2 2


Definición de la función de transferencia, de la entrada respecto


a la salida.

 s  rl 
 (s   )(s 2  g ) 
 (s)  
   U (s)   l 
1
Y ( s)     C sI  A B U (s)
 ( s)      
 
 s ( s   ) 
Para la aplicación Real solo se deben contar con los siguientes
parámetros:

 l =0.41 [m]

 r =0.13 [m]

 M = 0.5 [kg]

 m = 0.05 [kg]

 g = 9.8 [m/seg2]

Parámetros desconocidos

 K: constante de fuerza electromotriz

 R: resistencia eléctrica
2. Diseño del PID

Resultados con los valores cálculos del modelamiento matemático:

Cada uno de estos valores se encuentra escalado y las constantes


de tiempo son en (ms).

kp=8.86;
ki=1/1000; % casi es cero
kd=250;
Tc=250; % Tiempo de Muestra para los valores

Limite superior de pwm = 50ms


Proporcional E(k)
100

0
Pro [ e(kt) ]

-100

-200

-300
0 5 10 15 20 25 30 35 40
n(kt)

Integral E(k) Derivativo Y(k)


20 300

200
0
100
Int[ e(kt) ]

D[ y(kt) ]

-20 0

-100
-40
-200

-60 -300
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Muestras Tomadas Y(kt) Señal - Error [ e(kt)=rkt-ykt ]


120 0.3

0.2
110
0.1
100
0
y(kt)

e(kt)

-0.1
90
-0.2
80
-0.3

70 -0.4
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Señal - Control u(kt)


400

200

0
u(kt)

-200

-400

-600
0 5 10 15 20 25 30 35 40
n(kt)
120

100

80

60

40

20

0
0 5 10 15 20 25 30 35 40

En busca de una buena sintonización se realizo un cambio de pwm


= 80ms

Resultados obtenidos:

Proporcional E(k)
400

300

200
Pro [ e(kt) ]

100

-100

-200

-300
0 5 10 15 20 25 30 35 40
n(kt)

Integral E(k) Derivativo Y(k)


100 400

200

50
Int[ e(kt) ]

0
D[ y(kt) ]

-200
0

-400

-50 -600
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)
Muestras Tomadas Y(kt) Señal - Error [ e(kt)=rkt-ykt ]
120 0.6

110
0.4
100
0.2
90

y(kt)

e(kt)
80
0
70
-0.2
60

50 -0.4
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Señal - Control u(kt)


800

600

400

200
u(kt)

-200

-400

-600
0 5 10 15 20 25 30 35 40
n(kt)

Yk
120

100

80
Angulo

60

40

20

0
0 5 10 15 20 25 30 35 40
n(kt)

NUEVO VALOR PARA KP

Reduje el valor de kp a la mitad

Kp=4.43

Obtuve buenos resultados en la parte de fuerza pero aun sigue


siendo brusca por la parte derivativa.

Analisis de graficas para detección de error


Proporcional E(k)
150

100

50

Pro [ e(kt) ]
0

-50

-100

-150
0 5 10 15 20 25 30 35 40
n(kt)

Integral E(k) Derivativo Y(k)


30 200

20
100
Int[ e(kt) ]

10

D[ y(kt) ]
0
0

-100
-10

-20 -200
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Muestras Tomadas Y(kt) Señal - Error [ e(kt)=rkt-ykt ]


120 0.4

110 0.3

100 0.2

90 0.1
y(kt)

e(kt)

80 0

70 -0.1

60 -0.2

50 -0.3
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Señal - Control u(kt)


400

300

200

100
u(kt)

-100

-200

-300
0 5 10 15 20 25 30 35 40
n(kt)

Yk
120

100

80
Angulo

60

40

20

0
0 5 10 15 20 25 30 35 40
n(kt)

La parte proporcional opero muy bien hasta el punto en que se


presentó una caída ligera del péndulo que lo saco hasta 71° en la
muestra 29, por lo que la parte derivadita quiso dar velocidad a
la corrección del error generando que el sistema oscilara.

Nota: de seguir así tendré que escoger otro tipo de control,


aparte del PID, la mejor opción es el PI+D, puesto que este deriva
la señal de salida y entrega mejor estabilidad al sistema, cuando
el tiempo de los controladores es lento.

NUEVO VALOR PARA Kd

Reducire el valor de kd en ¼; manteiendo el valor de kp en 4.43.

Proporcional E(k)
150

100

50
Pro [ e(kt) ]

-50

-100

-150
0 5 10 15 20 25 30 35 40
n(kt)

Integral E(k) Derivativo Y(k)


30 40

20
20

10
Int[ e(kt) ]

0
D[ y(kt) ]
0
-20
-10

-40
-20

-30 -60
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Muestras Tomadas Y(kt) Señal - Error [ e(kt)=rkt-ykt ]


120 0.3

110 0.2

0.1
100
0
y(kt)

e(kt)

90
-0.1
80
-0.2

70 -0.3

60 -0.4
0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 35 40
n(kt) n(kt)

Señal - Control u(kt)


200

100
u(kt)

-100

-200
0 5 10 15 20 25 30 35 40
n(kt)
3. Construcción del péndulo invertido

Microcontrolador Texas Instruments, Placa de


adquisidor de datos

Potenciómetro Lineal Industrial


Puente Inversor H, 100V, a 23 Amp

Motor DC con caja Reductora, 24Vdc - 2 A


Vista Superior del Péndulo Invertido

Vista Lateral del Péndulo Invertido


Vista Completa del Péndulo Invertido
ANEXO
Programación del Microcontrolador:

#include "Energia.h"
#include <LCD.h>

void setup();
void loop();
void Motor_Parada();
void Motor_Izquierda(int dutty);
void Motor_Derecha(int dutty);

#define PIN1 PB_5


#define PIN2 PB_0
/*Constantes Calculadas
float kp = 4.42;
float ki = 1/100;
float kd = 62.5;
float Tc = 250;*/

float kp = 4.42;
float ki = 1/200;
float kd = 0;
float Tc = 250;

int ek = 0, ek1 = 0, fXg = 0;

int rkt = 90;

int ucontrol;

void setup() {

LCD.init(PA_7, PA_6, PA_5, PA_4, PA_3, PA_2);


pinMode(PIN1, OUTPUT); // sets the pin as output
pinMode(PIN2, OUTPUT); // sets the pin as output

void loop()

{
float alpha = 0.15;
int fxg = 0;
int teta = 0;

char Mensaje1[20];*/
int rti0 = 0;
int limitband=30;

while (1) {

int Xg = analogRead(A7);
fxg = (int) (Xg * alpha + fxg * (1 - alpha));

teta = (int) (0.625 * (fxg - 760) + 90);

if(90-limitband<= teta && teta <=90+limitband)


{

ek = rkt - teta;

if (-3<= ek && ek <=1)


ek = 0;

float uik = kp * ki * (ek + ek1) * Tc / 2;


float pk = kp * ek;
float dky = kp * kd * (ek - ek1) / Tc;
float var_ukt = pk + uik + dky;

ucontrol = (int) var_ukt;

if (0<= ucontrol && ucontrol <=5)


Motor_Parada();

else if (5<ucontrol && ucontrol <=50)


{
if (ucontrol > 50)
ucontrol = 50;
Motor_Derecha(ucontrol);
}
else if (-50<= ucontrol && ucontrol <0)
{
ucontrol = -ucontrol;
if (ucontrol > 50)
ucontrol = 50;

Motor_Izquierda(ucontrol+40);

ek1 = ek;
}
else
{
Motor_Parada();
}
rti0++;
delay(2);
}
}

void Motor_Parada() {
analogWrite(PIN1, 0);
analogWrite(PIN2, 0);
}
void Motor_Izquierda(int dutty) {
dutty = (int) dutty * 255 / 100;
analogWrite(PIN2, 0);
analogWrite(PIN1, dutty);
}
void Motor_Derecha(int dutty) {
dutty = (int) dutty * 255 / 100;
analogWrite(PIN2, dutty);
analogWrite(PIN1, 0);
}

6. Conclusión:

 El sistema de control sigue siendo inestable, por lo que es


necesario cambiar los parámetros kp, ki y kd, a partir del ya
calculado.

 Usando el cálculo teórico de PID, se entiende que la


velocidad y la fuerza de kp y kd son, por lo tanto, debemos
centrarnos en estos dos valores, ya ki es casi cero.

 Si Kd se reduce, sumado a la velocidad de la señal de control


se reducirá y hasta ahora lo que tengo se quebró en marcha para
corregir el ángulo del péndulo.

 Kp debe reducirse primero, entonces voy a variar la kd


constante si no obtengo buenos resultados pwm, deben estar dentro
de los límites de 10 ms y 80 ms, pero por ahora, calcular los
valores de rendimientos más altos que los de 80 ms.

BIBLIOGRAFÍA

 Aplicación Informe SPRA083:


 "Aplicación de los controladores PID y Deadbeat con la
familia TMS320"
 Katsuhiko Ogata, "Sistemas de Control de Tiempo
Discreto".
 Enrique Palacios Mauricio Otros Y, Microcontrolador
PIC16F84A "Desarrollo de proyectos".
 Eduardo Esquivel Zenteno, "Introducci ó n una los
Microcontroladores PIC ".
 Ogata, Katsuhiko. Ingenier í a de
control Moderna. Controles PID e introducci ó n robusto de
control al. Tercera edici ó n. P á gina 669. Editorial
Prentice Hall. 1998.

También podría gustarte