Sei sulla pagina 1di 10

1

Modelado y control de un pndulo invertido


Lucia Medina 1053589, Leandro Pia 1053598, Brayand Mora 1050592
Instituto Tecnolgico de Santo Domingo (INTEC)
Santo Domingo, Repblica Dominicana
lucia.mg07@gmail.com
leandroadolfo_11@hotmail.com
brayand.mora@gmail.com

Abstracto En este informe se presenta el modelado y control


de un pndulo invertido, para los cuales se hace uso del software
de clculos matemticos MATLAB y Simulink. El control se basa
en el mtodo de espacio de estados y se establecen los
requerimientos que ha de tener el sistema compensado para
cumplir con condiciones de control satisfactorias.

cos + 2 sin = 0
Donde:
=

1 1 2

ndice de trminos Espacio de estados, observador,


discretizacin, ecuacin en diferencias, retroalimentacin.

I. INTRODUCCIN
Para empezar, el modelado del pndulo invertido se divide en dos
partes: un modelo simple y linealizado, y un modelo no lineal. El
diseo del sistema de control para dicho pndulo se hace tomando
como referencia al modelo simplificado y luego se comprueba su
validez en el modelo no linealizado. Este sistema queda definido por
tres estados: la velocidad del carro, la posicin angular y la velocidad
angular del pndulo, de los cuales ni la velocidad del carro ni la
velocidad angular del pndulo son medibles directamente desde la
salida en el sistema real. Para resolver este problema, se disea un
observador de orden completo que permita estimar dichas variables.
Finalmente, el control digital para el sistema se hace discretizando las
ecuaciones matemticas que lo definen, para luego implementarlas en
el microcontrolador Arduino utilizando una ecuacin en diferencias.

Figura 1. Respuesta del modelo no lineal ante una entrada step.


Haciendo la asuncin de que el ngulo es muy pequeo y
sustituyendo por las ecuaciones que representan la fuerza del motor,
se obtienen las siguientes ecuaciones linealizadas:

II. NOMENCLATURA
Smbolo

Smbolo

Significado
Constante del motor
(Torque/corriente)
Constante del motor
(Voltaje/velocidad
angular)
Longitud del pndulo

Radio de la rueda

Resistencia del motor


Masa del carro

Masa del pndulo

K1
K2

Significado
Aceleracin
angular
Posicin angular

1
1 2

1
1 2
+
+
+ (
)

Velocidad
angular
Aceleracin
angular
Velocidad lineal
Aceleracin
lineal
Fuerza de
entrada

III. DESCRIPCIN DE CONTENIDOS


A. Pndulo invertido: Modelado del sistema
Haciendo uso de las leyes de Newton, se determinan las ecuaciones
que definen el comportamiento del sistema, las cuales se presentan a
continuacin:
( + ) + cos 2 sin =

Figura 2. Respuesta del modelo lineal ante una entrada step.

0
= [1
0

Parmetros del sistema


A continuacin se presentan los parmetros que definen el
sistema:
B.

Parmetro
K1
K2
l
r
R
m
M
g
C.

Valor
4.619 N.m/Amp
1.3857 V/rad/s
0.9150 m
0.0375 m
1.2554
0.02959 kg
1.86 kg
9.81 m/s2

Representacin del sistema lineal en el espacio de


estados

En primer lugar, se establecen los estados que representan el


sistema:
1 =
2 =
3 =
Por tanto, se obtienen las siguientes ecuaciones:
1
1 2

1 =

2 1
2
1
1 2
+
3 =
+
+ (
) 2

2 1

Para este sistema se tiene que el voltaje del motor e y el ngulo del
pndulo representan la entrada y salida del sistema
respectivamente. Dicho esto, al sustituir las ecuaciones anteriores con
los parmetros correspondientes, se obtiene la siguiente representacin
en el espacio de estados:

0 2.13(103 )
0
10.89 ]
1
0

Cuando se obtiene el rango de la matriz, se obtiene que el resultado


es de 3. Puesto que el rango de la matriz M es igual al nmero de
estados del sistema, entonces se concluye que es completamente
observable y se puede aadir un observador al sistema.
Para el diseo del observador se requiere que este sea entre dos a
cinco veces ms rpido que la planta. Para este caso, se eligi que los
polos del observador sean tres veces ms rpidos que el polo ms
rpido del pndulo invertido. Por ese mismo lado, los polos del
observador tendrn una configuracin de filtro Butterworth. Al
determinar los valores propios de la matriz de estados A, se obtienen
los polos del sistema en open loop:
() = 1.9492(103 ); 3.2743 ; 3.2743
Debido a esto, los polos del observador tendrn el siguiente mdulo
m:
= 3 1.9492 103
= 5.8476(103 )
Dado que la ubicacin de los polos de un filtro Butterworth estn
dadas por la siguiente ecuacin:
( sin [

(2 1)
(2 1)
] + cos [
]) ; = 1,2
2
2

Entonces los polos deseados para el observador de orden completo


se ubican en: -5.85(103), -2.92(103) j5.06(103).
A continuacin se procede a determinar la matriz de ganancias K
para el observador. El comando place de MATLAB permite realizar
esto con facilidad:

= +
=
1
1.95(103 ) 0.16 0 1
52.75
[2 ] = [
0
0
1] [2 ] + [ 0 ]
3
2.13(103 ) 10.89 0 3
57.65
1
= [0

1 0] [2 ]

Figura 3. Matriz de ganancia K del observador de orden completo.

D. Diseo del observador de orden completo.


Dado que no todos los estados son directamente medibles desde la
salida solo lo es la posicin angular del pndulo entonces es
necesario observar los estados no medibles y estimar sus valores
mediante un observador. Para ello se elige un observador de orden
completo, pues los clculos correspondientes son ms sencillos y el
error de estimacin es menor que el que se obtiene con un observador
de orden reducido.
Antes de poder implementar un observador de estados en el sistema,
es necesario saber si el mismo es completamente observable, esto se
verifica con la matriz de observabilidad. Si el rango de la matriz es
igual al nmero de estados del sistema entonces es completamente
observable. Los resultados se muestran a continuacin:
= [ 2 ]

4.87(107 )
= [9.75(103 )]
4.94(107 )
Esta matriz de ganancias puede obtenerse tambin igualando la
ecuacin caracterstica del observador con la ecuacin caracterstica
que se desea, es decir:
| + | = .
El diagrama de bloques correspondiente al observador se representa
como indica la imagen que sigue:

Figura 4. Diagrama de bloques del observador de orden completo.


E. Diseo del control: Retroalimentacin de los estados.
La funcin de transferencia en open loop es:
() =

11 )

57.65 + 5.02(10
3 + 1949 2 10.89 2.09(104 )

Figura 6. Diagrama de bloques con observador de orden completo y


retroalimentacin de todos los estados.

sta se obtiene utilizando el comando en MATLAB ss2tf(A, B, C,


D) o mediante la ecuacin:
() = ( )1

Figura 7. Respuesta del sistema lineal con referencia igual a cero y


con una perturbacin a step durante 0.5 segundos y valor de 0.05.

Figura 5. Respuesta step del sistema lineal en lazo abierto.


Dado que se tiene un cero en s = 8.707(10-13), el cual es muy cercano
a cero, es necesario entonces que el sistema en lazo cerrado tenga un
polo en el origen. Los polos elegidos para el sistema tendrn una
configuracin Butterworth, y con un mdulo de 35 se cumplen los
requisitos de diseo planteados con anterioridad de bajo porcentaje de
overshoot y rpido tiempo de asentamiento. Por tanto, los polos
deseados estarn en: s1 = 0, s2,3 = -24.75 24.75.
La matriz de retroalimentacin de los estados se obtuvo utilizando
el comando en MATLAB place(A, B,desired), donde desired es una
variable que contiene los polos que se desean colocar. Tambin es
posible obtener dicha matriz utilizando la ecuacin que sigue:
| + | = .
En este caso, matriz de ganancia G es:
= [36.95 21.44 0.86]
El sistema ahora, con observador de orden completo y
retroalimentacin de todos los estados, se representa mediante el
siguiente diagrama de bloques:

Figura 8. Respuesta del sistema no lineal con referencia igual a cero


y con una perturbacin a step durante 0.5 segundos y valor de 0.05.
Como se observa, ambos sistemas estabilizan en el valor deseado
y tienen una respuesta muy similar.
F. Diseo del control digital: Discretizacin
controlador-observador e implementacin en Arduino

del

A continuacin se debe discretizar la funcin de transferencia del


observador-controlador, para poder implementarlo en el
microcontrolador Arduino. Su funcin de transferencia est dada por
la siguiente ecuacin:
()
= ( + + )1
()

Mediante el siguiente cdigo en MATLAB se puede hallar


directamente la funcin de transferencia del observador-controlador.

En la figura 10 se observa cmo se comporta el voltaje entregado


por el potencimetro cuando el ngulo del pndulo vara entre 0 y 90.
Cabe destacar que el potencimetro est conectado a una fuente de 5
V. Considerando que el voltaje es de aproximadamente 2.2 V cuando
el pndulo se halla en 0, es notorio que a medida que el pndulo cae,
el potencimetro entrega un voltaje de unos 4.4 V. Esta variacin de
voltaje se da en un tiempo un poco mayor a 1 segundo ante una entrada
de corriente directa (DC) a los motores del carro de 10.16 V.

Figura 9. Cdigo en MATLAB para la obtencin de la funcin


de transferencia del observador-controlador.
De esta manera, la funcin de transferencia obtenida es:
()
1.84(109 ) 2 1.73(1011 ) 4.27(1012 )
=
()
3 + 9795 2 + 4.99(107 ) 0.00721
A continuacin, slo es necesario aplicar la transformada Z a la
funcin de transferencia anterior, para lo cual se elige un tiempo de
muestreo de 0.001 y se utiliza el comando c2d de MATLAB.
Figura 11. Tiempo de cada del pndulo ante una
entrada step al sistema no lineal de 10.16.

Figura 8. Comando para discretizar la funcin de


transferencia.
Considerando esto, la funcin de transferencia en el dominio z es:
()
1042 2 1523 + 2480
= 3
()
1.005 2 + 0.005531 5.57(105 )
Para la implementacin en el microcontrolador Arduino, se
requiere escribir la respuesta del controlador-observador en forma de
ecuaciones en diferencia. Por tanto, utilizando la funcin de
transferencia discretizada se tiene:
( 3 1.005 2 + 0.005531 5.57(105 ))()
= (1042 2 1523 + 2480)()
Llevando la expresin a una ecuacin en diferencias, se obtiene:
3 1.0052 + 0.00551 5.57(105 )
= 10422 15231 + 2480

G.

Comparacin del sistema real y el sistema modelado

En la figura 10 se puede visualizar el tiempo que tarda en caer el


pndulo cuando a los motores se les aplica una entrada de 10.16 V
segn el modelo no lineal que define el sistema. Este tiempo es un poco
superior a 1 segundo, lo cual es semejante a lo obtenido en el modelo
real anteriormente explicado. Cabe destacar que dicha prueba no se
realiz en el modelo lineal debido a que para su creacin se asumi
que la variacin de ngulo sera muy pequea.
H.

Implementacin del control en arduino

Luego de haberse realizado el modelo matemtico del control


mediante el sistema discreto, se procede a la implementacin de este
modelo en la placa del microcontrolador, la cual en este caso es el
Arduino Uno. El control est estructurado de la siguiente manera en
el lenguaje del microcontrolador:
1. Definicin de nuestras variables de control de los motores DC.
2. Definicin de la variable que almacena el valor del
potencimetro o valor del voltaje de referencia.
3. Valores de State Vector los cuales son el yk (seal de salida
del sistema) y el uk (seal de entrada menos el error).
4. La asignacin del tipo de salida las cuales son A y B del tipo
anlogas para el control del motor.
5. Una variable de tipo global para la rotacin de los valores de
nuestra entrada uk y yk.
6. Se define el intervalo de valores que representan el 0 o el punto
estable del sistema.
7. Condicin de control de los motores DC para la entrada del
voltaje y el sentido de giro de estos.
Bsicamente esta sera la secuencia que sigue el cdigo en la
estructura, en cuanto al funcionamiento o la lgica aplicada fue
bsicamente un sondeo de la posicin del potencimetro la cual se
obtiene con el voltaje que mide entre dos de sus terminales y se resta
con la referencia del sistema (para colocarlo en uk) y en funcin de
este valor y los 3 previos de uk y k, se obtiene la yk actual que es la
salida del control y la entrada a la planta, valor que provocar que los
motores DC se muevan hacia delante o hacia atrs, para el caso de
yk>12 se mover hacia delante, para el caso contrario cuando yk<12

Figura 10. Variacin del voltaje entregado por el potencimetro a


medida que el ngulo del pndulo vara de 0 a 90.

se mover hacia detrs.

transistores BJT debido a que no le poda proporcionar la corriente


suficiente a dichas bases.
J.

Implementacin del control en el sistema real

Para probar si era posible estabilizar el pndulo invertido


utilizando los motores del carro, se intent manualmente regular el
voltaje y polaridad del mismo, que reciban los motores para as
controlarlos. Al realizar dicha prueba, se imposibilit estabilizar el
pndulo debido a que la aceleracin de los motores es muy baja.
Cabe destacar que los diagramas mostrados del control del sistema,
no contienen una restriccin de qu voltaje colocarle a los motores.
Cuando se restringe dicho sistema a que el mayor voltaje que puede
recibir la planta es +-12V con el control, ocurre lo siguiente:

Figura 12. Fragmento del Cdigo de control en Arduino Uno,


implementacin del sistema discreto. (El cdigo completo est
disponible en anexos, para una mejor visualizacin de ste).
La tabla de verdad que representa el sentido de giro de los
motores y su movimiento en general se presenta a continuacin:

En
H
H
H
H

A
L
L
H
H

B
L
H
L
H

Motor
Paro del motor (no activo)
Mov. hacia delante
(activado)
Mov. hacia atras (activado)
Paro del motor (alta. Imp.)

Figura 13. Tabla de verdad de las combinaciones de las salidas A y B


con el Enable para el control del giro de motor DC. (Esta tabla es la que
rige el sentido de cada motor si es hacia delante o hacia atrs, teniendo
en cuenta que el Enable est High todo el tiempo).

I.

Etapa de potencia

Para poder cambiarle el sentido de giro a los motores DC del


carro, se recurri a un puente H con transistores NPN como se
observa en la imagen que sigue obtenida de un foro de Arduino en la
internet:

Figura 15. Grfico del ngulo en el sistema lineal con una pequea
perturbacin y con una restriccin del voltaje de +-12V DC.
Como se comprueba con la figura 15, al limitar los voltajes
mximos que pueden colocarse en el motor, es claro que no es posible
controlarlo en la realidad bajo dichas restricciones.
K. Recuento de la participacin de los integrantes del

equipo

Determinacin de los parmetros generales del sistema: Manuel


Acosta, Luca Medina y Gabriel Yeara.
Montaje del carro: Luca Medina, Leandro Pia, Gabriel Yeara y
Brayand Mora.
Montaje del driver del circuito: Brayand Mora, Manuel Severino,
Leandro Pia, Luca Medina y Gabriel Yeara.
Montaje del pndulo: Manuel Acosta, Manuel Severino y Julio
Feliz.
Obtencin de las partes del equipo: Manuel Severino y Luca
Medina.
Pruebas del carro con el acelermetro: Manuel Acosta, Manuel
Severino, Leandro Pia, Luca Medina, Brayand Mora, Julio Feliz,
Rudy Inoa y Gabriel Yeara.

Figura 14. Puente H utilizado.


A diferencia del esquema que se muestra en la imagen anterior, el
Arduino se conect a las bases del puente H a travs de otros 2

Participacin en comn con los dems equipos

Participacin del equipo individual:

Conexin Arduino-MATLAB para pruebas: Brayand Mora.


Conversin del controlador-observador de continuo a discreto:
Leandro Pia y Luca Medina.
Creacin del reporte escrito: Leandro Pia, Luca Medina y
Brayand Mora.
Determinacin de la matriz de ganancia del observador:
Leandro Pia.
Determinacin de la matriz de retroalimentacin de todos los
estados: Luca Medina.
Diseo del control digital en Arduino: Luca Medina.
Diseo en SolidWorks del sistema: Brayand Mora.

Implementacin en Simulink del modelo lineal y no lineal:


Leandro Pia y Luca Medina.
Prueba de similitud modelo-sistema real: Leandro Pia y Luca
Medina.
Prueba del sistema con el control digital: Luca Medina.
Representacin y prueba en Simulink y Matlab del control con
el modelo lineal y no lineal: Luca Medina y Leandro Pia.
Transformacin del sistema original de 4 estados a uno de 3
estados observable: Leandro Pia.

IV. CONCLUSIONES
Sin lugar a dudas, controlar un sistema mediante la teora de
control moderno tiene muchas facilidades debido a que los clculos
matemticos a realizar son relativamente sencillos y tiende a ser
repetitivo y no tan analtico respecto al control clsico. Se concluy,
adems, que efectivamente los modelos tericos creados, a pesar de
asumir e ignorar numerosos factores reales, realizando los ajustes de
lugar pueden llegar a modelar sistemas reales. Finalmente se comprob
la importancia de realizar pruebas previas al sistema para determinar
si los actuadores del sistema son capaces de controlar lo esperado antes
de realizar el control mismo.

V. REFERENCIAS
Friedland, B. (1986) Control Systems Design: An Introduction to
State-Space Method.
Ogata, K. (2010) Ingeniera de Control Moderna. 5ta edicin.
(n.d.) Forum Arduino. Recuperado el 20 de abril de 2015 desde
http://forum.arduino.cc/index.php?topic=279425.0

VI. ANEXOS

Diagrama de bloques del sistema no lineal

Diagrama de bloques del sistema lineal

analogWrite(A,0);
analogWrite(B,255*yk[0]/12);
}else if( (yk[0]<0) && (yk[0]>(-12)) ){
analogWrite(A,255*yk[0]/12);
analogWrite(B,0);

Cdigo Arduino

//Proyecto Final. Sistemas de Control II


//Implementacin de Sistema Discreto con Transformadas
Z.
//Variables de control de los motores
#define A 5
#define B 6
#define Vin A0 //Voltaje del potencimetro

}
Mtodos de medicin de parmetros y obtencin de datos

double yk[4]={0,0,0,0}; //Senal de salida del control


double uk[4]={0,0,0,0}; //Senal de entrada control - error

void setup(){
pinMode(A,OUTPUT); //Salidas analogas
pinMode(B,OUTPUT); //Salidas analogas
pinMode(Vin,INPUT);
Serial.begin(9600);
}
void loop(){
int i; //Variable para la rotacion de los valores uk y yk
for(i=3;i>0;i--){
uk[i]=uk[i-1];
}
uk[0]=0;
for(i=0;i<21;i++){
uk[0]=uk[0]+analogRead(Vin);
delayMicroseconds(50);
}
uk[0]=uk[0]*0.0049*0.533/20-3.14159268/2;
//Valores probados donde el Sistema es 0
if((uk[0]>=(-0.015)) && (uk[0]<=0.015) ){
yk[0]=0;
}else{
yk[0]=-5304*uk[1]+5270*uk[2]91.88*uk[3]+yk[1]+0.0002626*yk[2]+2.99E-08*yk[3];
}
for(i=3;i>0;i--){
yk[i]=yk[i-1];
}
//Ciclo de control de los motores (sentido y voltaje)
if(yk[0]>12){
analogWrite(A,255);
analogWrite(B,0);
}else if(yk[0]<(-12)){
analogWrite(A,0);
analogWrite(B,255);
}else if( (yk[0]==0) ){
analogWrite(A,0);
analogWrite(B,0);
}else if( (yk[0]>0) && (yk[0]<12) ){

Este cdigo lee el puerto serial la data que est enviando el


Arduino y lo muestra en una grfica la cual imprime el voltaje de
salida del potencimetro en X ciclos del vector que se encarga de
guardar dichos valores.

SolidWorks y Simulink

Modelo fsico del pndulo el cual se replic en SolidWorks


para la importacin a Simulink

Bloques generados para la parte de control luego de haber sido


importado el modelo CAD de SolidWorks a Simulink.

10

Potrebbero piacerti anche