Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
cos + 2 sin = 0
Donde:
=
1 1 2
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.
II. NOMENCLATURA
Smbolo
Smbolo
Significado
Constante del motor
(Torque/corriente)
Constante del motor
(Voltaje/velocidad
angular)
Longitud del pndulo
Radio de la rueda
K1
K2
Significado
Aceleracin
angular
Posicin angular
1
1 2
1
1 2
+
+
+ (
)
Velocidad
angular
Aceleracin
angular
Velocidad lineal
Aceleracin
lineal
Fuerza de
entrada
0
= [1
0
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
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
(2 1)
(2 1)
] + cos [
]) ; = 1,2
2
2
= +
=
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 ]
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:
11 )
57.65 + 5.02(10
3 + 1949 2 10.89 2.09(104 )
del
G.
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.)
I.
Etapa de potencia
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
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
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
}
Mtodos de medicin de parmetros y obtencin de datos
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) ){
SolidWorks y Simulink
10