Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe Pendulo Invertido
Informe Pendulo Invertido
PENDULO INVERTIDO
Arequipa – Perú
2014
RESUMEN
ABSTRACT
PALABRAS CLAVE
Control péndulo invertido, Modelado, Sintonizacion, simulación,
controlador PID. Matlab
KEYWORDS
Controlador
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
Ecuación de Estado:
x1 , x2 , x3 , x4 y uv
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
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
R: resistencia eléctrica
2. Diseño del PID
kp=8.86;
ki=1/1000; % casi es cero
kd=250;
Tc=250; % Tiempo de Muestra para los valores
0
Pro [ e(kt) ]
-100
-200
-300
0 5 10 15 20 25 30 35 40
n(kt)
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)
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)
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
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)
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)
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)
Kp=4.43
100
50
Pro [ e(kt) ]
0
-50
-100
-150
0 5 10 15 20 25 30 35 40
n(kt)
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)
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)
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)
Proporcional E(k)
150
100
50
Pro [ e(kt) ]
-50
-100
-150
0 5 10 15 20 25 30 35 40
n(kt)
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)
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)
100
u(kt)
-100
-200
0 5 10 15 20 25 30 35 40
n(kt)
3. Construcción del péndulo invertido
#include "Energia.h"
#include <LCD.h>
void setup();
void loop();
void Motor_Parada();
void Motor_Izquierda(int dutty);
void Motor_Derecha(int dutty);
float kp = 4.42;
float ki = 1/200;
float kd = 0;
float Tc = 250;
int ucontrol;
void setup() {
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));
ek = rkt - teta;
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:
BIBLIOGRAFÍA