Upload
carlos-ivan-mesa
View
635
Download
6
Embed Size (px)
DESCRIPTION
CONTROL DIGITAL Entrega Final Planta Control BALL BEAM Carlos Iván Mesa Manrique Código: 45121608 Ingeniería en Automatización, Universidad de La Salle) Bogotá D.C., Colombia Resumen— El siguiente proyecto Ball Beam consiste en controlar la posición de una bola de acero inoxidable en una pista. Consiste básicamente de la variación de posición de la bola que es
Citation preview
CONTROL DIGITAL
1
Entrega Final
Planta Control BALL BEAM Carlos Iván Mesa Manrique Código: 45121608
#Estudiante (Ingeniería en Automatización, Universidad de La Salle)
Bogotá D.C., Colombia
Resumen— El siguiente proyecto Ball Beam consiste en controlar la posición de una bola de acero inoxidable en una pista. Consiste básicamente de la variación de posición de la bola que es medida con la variación de resistencia sobre la pista que en este caso es alimentada a un voltaje y la pista que está conformada por un tornillo sin fin es la resistencia que varía, cuando esta bola cambia de posición. Lo anterior vendría a ser nuestro sensor que vendría a determinar la variación de posición vs voltaje o resistencia según varié. Por otro lado tenemos el servo que es el que vamos a controlar por medio de la variación angular que este me genere, en este caso un rango de -15° a 15°. Según la posición deseada para la bola o el cilindro en la pista, se realizara la respectiva instrumentación para la parte del sensor y su respuesta de control al motor para que cumpla con los objetivos del proyecto
INTRODUCCION
El sistema de control digital comprende un módulo de control, que es una alta precisión. La unidad se utiliza para servomotores o motores de corriente continua. IDIOMA programable con alto nivel de movimiento, el módulo de control inteligente integrado en una sola tarjeta de control de movimiento avanzado
y específico PLC funcionalidad. Idioma combinado con un movimiento de alto nivel, una plataforma para la programación rápida gráfica módulo de control de configuración, ajuste y movimiento representa un flexible, inteligente y fácil de implementar, la solución para una amplia gama de aplicaciones. Un fácil utilizar el interfaz de control muestra los resultados visuales gráficas de la madre y todos los datos de funcionamiento. En tiempo real de la interfaz de control se proporciona en Matlab, Simulink haciendo conveniente implementar experimentos básicos y la aritmética de estudio. OBJETIVO GENERAL
Diseñar e implementar un control para
la planta del Ball Beam.
Objetivos específicos
Identificar los materiales adecuados
para estabilizar la planta.
Caracterizar e Identificar el método de
diseño de la planta.
Elegir de una forma adecuada para el
control del servomotor
Diseñar un control para mantener la
planta en un punto estable.
CONTROL DIGITAL
2
MARCO TEÓRICO
Se diseñó una planta con el fin de controlar la posición de un cilindro de acero inoxidable mediante el ajuste del ángulo de giro de una viga la cual está sujeta al servo-motor el cual es el que va a girar (grados) para dar la posición de la bola.
Para realizar dicha planta fue necesario hacer un estudio previo debido a los materiales necesarios para su fabricación.
Los materiales que se utilizaron son:
- Servo-motor
- Fuente de 5V
- Tornillo sin fin (hierro)
- Una base de acrílico
-
A continuación se explica el funcionamiento de cada uno de los materiales que se utilizaron
Servomotor
Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots.
DESARROLLO
1. Determinar el diagrama de flujo del
proceso
Fig. 1 Diagrama de flujo del Ball and Beam
2. Determinar las variables de control Posición angular en el servomotor
3. Determinar las variables a manipular
Cantidad de pulsos enviados al servomotor
Cilindro Acero
Posición Deseada
Posición Actual
PD>PA
PD<PA
Girar Angulo Negativo
Girar Angulo Positivo
PD=PA
Posición De Bola Controlada
CONTROL DIGITAL
3
4. Determinar los puntos de control
Posición angular de -15 ° a + 15° y la velocidad de giro respectivo
5. Describir el principio físico básico
siguiendo el modelo
Funcionamiento
El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable) esta es conectada al eje central del servo motor. En la figura se puede observar al lado derecho del circuito. Este potenciómetro permite al circuito de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180.
La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional.
Características Generales Y Funcionamiento:
Estos servos tienen un amplificador, servo motor, piñonearía de reducción y un potenciómetro de realimentación; todo incorporado en el mismo conjunto. Esto es un servo de posición (lo cual significa que uno le indica a qué posición debe ir), con un rango de
aproximadamente 180 grados. Ellos tienen tres cables de conexión eléctrica; Vcc, GND, y entrada de control.
Para controlar un servo, usted le ordena un cierto ángulo, medido desde 0 grados. Usted le envía una serie de pulsos. En un tiempo ON de pulso indica el ángulo al que debe posicionarse; 1ms = 0 grados, 2.0ms = máx. grado (cerca de 120) y algún valor entre ellos da un ángulo de salida proporcional. Generalmente se considera que en 1.5ms está el "centro." Entre límites de 1 ~ 2ms son las recomendaciones de los fabricantes, usted normalmente puede usar un rango mayor de 1.5ms para obtener un ángulo mayor e incluso de 2ms para un ángulo de rendimiento de 180 grados o más. El factor limitante es el tope del potenciómetro y los límites mecánicos construidos en el servo. Un sonido de zumbido normalmente indica que usted está forzando por encima al servo, entonces debe disminuir un poco.
El tiempo de OFF en el servo no es crítico; puede estar alrededor de los 20ms. Hemos usado entre 10ms y 30 ms. Esto No tiene que ser de ésta manera, puede variar de un pulso a otro. Los pulsos que ocurren frecuentemente en el tiempo de OFF pueden interferir con el sincronismo interno del servo y podría escucharse un sonido de zumbido o alguna vibración en el eje. Si el espacio del pulso es mayor de 50ms (depende del fabricante), entonces el servo podría estar en modo SLEEP entre los pulsos. Entraría a funcionar en pasos pequeños y el rendimiento no sería el óptimo.
Como se observa en la figura, la duración del pulso indica o dictamina el ángulo del eje (mostrado como un círculo verde con flecha). Nótese que las ilustraciones y los tiempos reales dependen del fabricante de motor. El principio, sin embargo, es el mismo.
CONTROL DIGITAL
4
El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de Pulsos. El servo espera ver un pulso cada 20 milisegundos (.02 segundos). La longitud del pulso determinará los giros de motor.
Un pulso de 1.5 ms., por ejemplo, hará que el motor se torne a la posición de 90 grados (llamado la posición neutra). Si el pulso es menor de 1.5 ms., entonces el motor se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180 grados.
La descripción realizada anteriormente como se ha podido observar son servomotores de corriente continua usados en robótica doméstica fundamentalmente.
Fig. 2 Características técnicas del servomotor
Fuente: es el dispositivo que provee la electricidad con que se alimentan los diferentes dispositivos electrónicos Tornillo sin fin: es una disposición que transmite el movimiento entre ejes que están en ángulo recto, en este caso no vamos a
tomar esa definición para nuestro proceso, la aplicación q tiene el tornillo es darle fricción a la bola metálica para poder tener un menor grado de error. Base de Madera: es el elemento que nos permite unir todos los materiales que se utilizaran Selección Del Sensor: Debido a recursos del proyecto, se decidió seleccionar el sensor ultrasónico del laboratorio.
Fig. 3 Sensor Ultrasónico UB500-18/GM75 I V-15
Indicaciones de manejo
LED amarillo: objeto en rango evaluación LED rojo: Objeto no detectado Para la etapa de sensórica, se ha escogido un sensor ultrasónico Pepperl + Fuchs con las siguientes características: Sensor ultrasónico Intervalo de detección: 50mm a 500mm Frecuencia: 380 KHz Ángulo de reflejo: 60° Rango de temperatura:-25 °C a +70 °C Entrada del sensor: Ultrasónico Tensión de alimentación máx.:30V Tiempo de respuesta: 50ms
CONTROL DIGITAL
5
Función de Transferencia Sensor Para determinar la función de transferencia del sensor fue necesario poner en funcionamiento el sensor para así poder obtener el valor de la corriente con respecto a la distancia a la se encuentra el objeto. Los valores obtenidos fueron los siguientes:
Corriente (mA)
Distancia (cm)
4,5 10
6,7 15
9,2 20
11,6 25
13,5 30
15,7 35
Tabla 1. Corriente Vs Distancia del sensor
Fig. 4 Respuesta en Excel de los datos de la tabla 1.
La función de transferencia del sensor es la ecuación de la recta anterior que va a ser igual a:
48.22
21.2027.2
)5,4(27,210
)0(0
27.25.47.6
1015
12
12
x
y
xy
xy
xxmyy
m
xx
yym
48.22)( sH
Luego se analizó la salida del sensor ultrasónico ante la variación del cilindro, para poder obtener su equivalencia en distancia que es lo que se desea controlar mediante el punto de referencia a seleccionar
Distancia cm Voltaje
1 0.996
2 1.089
3 1.270
4 1.439
5 1.626
6 1.788
7 1.910
8 2.075
9 2.271
10 2.399
11 2.562
12 2.744
13 2.914
14 3.061
15 3.187
16 3.337
17 3.517
18 3.645
19 3.796
20 3.914
21 4.082
22 4.237
23 4.356
24 4.566
25 4.808
Tabla 2. Salida del sensor ultrasonico De la tabla anterior podemos seleccionar nuestro Set-point midiendo desde un multímetro y comprobar el diseño del controlador.
4,5
6,7
9,2
11,6
13,5
15,7
CONTROL DIGITAL
6
Montaje actual
Fig. 4
Fig. 4
Explicación del prototipo
Cuando el motor empieza a girar en grados la leva se mueve y hace que el sistema de las barrar empiecen a subir o bajar pendiendo del movimiento del servo-motor, además el movimiento de las barras como están polarizada, cada vez que se mueven su voltaje aumenta o disminuye debido al movimiento del cilindro ya que esta permite la unión de las dos barras.
6. MODELO MATEMATICO
Para el modelo matemático del Ball Beam tenemos la siguiente ecuación ya que se implementara un control en lazo abierto
2
2
1
)(
)(
sm
R
JL
mgd
s
sR
Control Digital PID Si se refiere a cualquier problema del control PID para los sistemas continuos, la función de transferencia PID se expresó como:
Como habrá notado la función de transferencia anterior fue escrito en términos de s. Para el control PID digital, se utiliza la siguiente función de transferencia en términos de z.
Función de transferencia discreta Lo primero que debe hacer es convertir lo anterior función de transferencia del sistema continuo a una función de transferencia discreta equivalente. Para ello, vamos a utilizar la función de Matlab c2d. Para utilizar c2d, tenemos que especificar tres argumentos: el sistema, el tiempo de muestreo (Ts), y el 'método'. Usted ya debe estar familiarizado con la forma de crear un sistema de numerador y denominador matrices. El tiempo de muestreo debe ser menor que 1 / (30 * BW) seg, donde BW es el ancho de banda de bucle cerrado. El método que se utilizará es el mantenedor de orden cero ('zoh'). Suponiendo que la frecuencia de ancho de banda de bucle cerrado es de alrededor de 1 rad / seg, dejar que el tiempo de muestreo 1/50 seg / muestra. Ahora estamos listos para utilizar c2d. Introduzca los siguientes comandos en un archivo-m. Modelamiento En Matlab:
m = 0.111;
R = 0.015;
CONTROL DIGITAL
7
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;
K = (m*g*d)/(L*(J/R^2+m));
%simplifies input
num = [-K];
den = [1 0 0];
ball = tf(num,den);
Ts = 1/50;
ball_d = c2d(ball,Ts,'zoh')
Planta Del Ball Beam Transfer function:
4.2e-05 z + 4.2e-05
-------------------
z^2 - 2 z + 1
Sampling time: 0.02
Control Proporcional Ahora vamos a añadir de control proporcional (Kp) para el sistema y obtener la respuesta del sistema de bucle cerrado. Por ahora vamos Kp igual a 100 y ver qué pasa con la respuesta. Introduzca los siguientes comandos en un archivo-m nuevo y ejecútelo en la ventana de comandos.
numDz = 0.0001*[0.42 0.42];
denDz = [1 -2 1];
Ts = 1/50;
ball_d = tf(numDz,denDz,Ts);
[x,t] = step(0.25*ball_d,5);
stairs(t,x)
Fig. 7 Respuesta del Control Proporcional Control Proporcional-Derivativo Ahora agregaremos un término derivativo al controlador. Manteniendo la ganancia proporcional (Kp) igual a 100, y dejar que la ganancia derivativa (Kd) igual a 10. Copie el código siguiente en un nuevo archivo-m y ejecútelo para ver la respuesta del sistema.
Código En Matlab:
numDz = 0.0001*[0.42 0.42];
denDz = [1 -2 1];
Ts = 1/50;
ball_d = tf(numDz,denDz,Ts);
Kp=100;
Kd=10;
Ki=0;
numpd = [Kp+Ki+Kd -(Kp+2*Kd) Kd];
denpd = [1 -1 0];
contr = tf(numpd,denpd,Ts);
sys_cl =
feedback(contr*ball_d,22.48);
[x,t] = step(0.25*sys_cl,5);
stairs(t,x)
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
CONTROL DIGITAL
8
Fig. 8 Respuesta Control Proporcional Derivativo Simulación Del Modelamiento En Matlab: A continuación mostramos la simulación mediante Matlab, aplicamos el control PID
Código En Matlab: clc close all clear all
Aquí mostramos un ejemplo para obtener la constante Kbb obtenida en el paper para la cual es de 0.63 %% EJEMPLO % m = 0.111; % MASA DE LA PELOTA 0.11 Kg % R = 0.015; % RADIO DE LA BOLA 0.015 m % g = -9.8; %BRAZO DE PALANCA ACOPLADA % L = 1.0; %LOGITUD DE LA VIGA % d = 0.03; %BRAZO DE PALANCA % J = 9.99e-6; %MOMENTO DE INERCIA DE LA
PELOTA % % % K = (m*g*d)/(L*(J/R^2+m)) %K=0.21
simplifies input %% K DE LA PLANTA OBTUBIDO EN EL PAPER K=0.63 num = [-K]; den = [1 0 0]; ball = tf(num,den) % hold on Ts = 1/50; ball_d = c2d(ball,Ts,'zoh') % Transfer function: % -0.000126 z - 0.000126 % ----------------------
% z^2 - 2 z + 1 % % Sampling time: 0.02 numDz = [0.000126 0.000126]; denDz = [1 -2 1]; ball_d = tf(numDz,denDz,Ts); hold on Kp=1000; sys_cl = feedback(Kp*ball_d,22.48)
% SISTEMA SIN CONTROL [x,t] = step(0.25*sys_cl,0.5); stairs(t,x)
Kd=10;
numpd = [Kp+Kd -(Kp+2*Kd) Kd]; denpd = [1 1 0]; contr = tf(numpd,denpd,Ts);
sys_cl = feedback(contr*ball_d,22.48); %SISTEMA CON CONTROL [x,t] = step(0.25*sys_cl,5); stairs(t,x)
Control proporcional Ahora vamos a añadir de control proporcional (Kp) para el sistema y obtener la respuesta del sistema de bucle cerrado. Por ahora vamos Kp igual a 100 y ver qué pasa con la respuesta. Introduzca los siguientes comandos en un archivo-m nuevo y ejecútelo en la ventana de comandos. Código En Matlab:
numDz = [0.000126 0.000126]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts);
[x,t] = step(0.25*ball_d,5); stairs(t,x)
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
CONTROL DIGITAL
9
Fig. 9 Sistema Sin Control Proporcional-Derivativo Ahora agregaremos un término derivativo al controlador. Mantener la ganancia proporcional (Kp) igual a 100, y dejar que la ganancia derivativa (Kd) igual a 10. El código siguiente muestra la respuesta del sistema.
Código En Matlab:
numDz = [0.000126 0.000126]; denDz = [1 -2 1]; Ts = 1/50;
ball_d = tf(numDz,denDz,Ts);
Kp=100;
Kd=10;
numpd = [Kp+Kd -(Kp+2*Kd) Kd];
denpd = [1 1 0];
contr = tf(numpd,denpd,Ts);
sys_cl =
feedback(contr*ball_d,22.48);
[x,t] = step(0.25*sys_cl,5);
stairs(t,x)
Fig. 10 Sistema Con Control
Fig. 11 Sistema Con Control con Kp=100, Kd=10
Fig. 12 Sistema Con Control con Kp=1000, Kd=10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.5
0
0.5
1
1.5
0 1 2 3 4 5 6 7 8 9 100
0.05
0.1
0.15
0.2
0.25
0 1 2 3 4 5 6 7 8 9 10-1
-0.5
0
0.5
1
1.5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.5
0
0.5
1
1.5
CONTROL DIGITAL
10
Identificación De Planta Para la planta sabemos que nuestra entrada es la variación de la ganancia del servomotor en ms VS la variación de ganancia del sensor en voltios. Como se muestra a continuación las ganancias Rango del servomotor: (1.25ms-175ms) Rango del sensor: (0.996V-4.9V)
A continuación mostramos los datos adquiridos de la planta de los cuales se obtuvieron 105 muestras a partir de un tiempo de muestreo de 0.2 seg, como se muestra a continuación.
Muestras
SERVOMOTOR SENSOR
Pulsos en Milisegundos
Voltaje
Entrada Salida
1 0.001667 0,905486
2 0.001667 0,958750
3 0.001667 0,980006
4 0.001667 1.012234
5 0.001667 1.245866 6 0.001667 1.545178
7 0.001667 1.721005
8 0.001667 2.258974
9 0.001667 2.852105
10 0.001667 3.646586 11 0.001667 4.164325
12 0.001667 4.725468
13 0.001667 4.521501
14 0.001667 4.684635 15 0.001667 4.758923
16 0.001667 4.806380
17 0.001667 4.854896
18 0.001667 4.843230
19 0.001332 4.800541 20 0.001332 4.756466
21 0.001332 4.358769
22 0.001332 4.045623
23 0.001332 3.830450
24 0.001332 3.503453 25 0.001332 3.020545
26 0.001332 2.836469
27 0.001332 2.685246
28 0.001332 2.285468
29 0.001332 1.648568
30 0.001332 1.246285
31 0.001332 1.454658 32 0.001332 1.135482
33 0.001332 0.934765
34 0.001332 1.263468
35 0.001332 1.156542
36 0.001332 0.984321 37 0.001332 0.964525
38 0.001332 0.949162
39 0.001332 0.911683
40 0.001332 0.916489 41 0.001584 0.926543
42 0.001584 1.268607
43 0.001584 1.550648
44 0.001584 1.804506
45 0.001584 2.644023 46 0.001584 3.015408
47 0.001584 3.650520
48 0.001584 4.115201
49 0.001584 4.730540
50 0.001584 4.501540 51 0.001584 4.805410
52 0.001584 4.602100
53 0.001584 4.671220
54 0.001584 4.821584 55 0.001584 4.700542
56 0.001584 4.824827
57 0.001584 4.813483
58 0.001584 4.806847
59 0.001415 4.700545 60 0.001415 4.503968
61 0.001415 4.241709
62 0.001415 3.564218
63 0.001415 3.004505
64 0.001415 2.412683 65 0.001415 1.902567
66 0.001415 1.405648
67 0.001415 1.305315
68 0.001415 0.995443 69 0.001415 1.254632
70 0.001415 1.107890
71 0.001415 0.961200
72 0.001415 1.054525
73 0.001415 0.924585 74 0.001415 0.980089
75 0.001750 1.308050
76 0.001750 1.915432
77 0.001750 2.821215
78 0.001750 3.845252
CONTROL DIGITAL
11
79 0.001750 4.655215
80 0.001750 4.821964
81 0.001750 4.553155 82 0.001750 4.892482
83 0.001750 4.720905
84 0.001750 4.620054
85 0.001750 4.811938
86 0.001750 4.800553 87 0.001750 4.823195
88 0.001750 4.829245
89 0.001250 4.654254
90 0.001250 4.025097 91 0.001250 3.534248
92 0.001250 2.890809
93 0.001250 2.005891
94 0.001250 1.412845
95 0.001250 1.121248 96 0.001250 1.354668
97 0.001250 0.905462
98 0.001250 1.101234
99 0.001250 1.260015
100 0.001250 0.921544 101 0.001250 0.950564
102 0.001250 0.985266
103 0.001250 0.924652
104 0.001250 0.902120 105 0.001250 0.900645
Tabla 3. Variación de la ganancia del servomotor en ms VS la variación de ganancia del sensor De la anterior tabla de datos observamos que para la variación en la entrada, tenemos que:
- 125 ms es 45º - 141.6 ms es 30º - 133.3 ms es 15º - 150 ms es 0º - 166.6 ms es -15º - 158.3 ms es -30º - 175 ms es -45º
Entonces desde Ident de Matlab, nos basamos en los datos que obtuvimos y los importamos con un Tm de 0.2 seg igual que como se adquirió las muestras
Graficamos los datos adquiridos
Fig. 13 Respuesta en Ident de Matlab Procesamos diferentes diseños
Fig. 14 Simulación mediante Ident de Matlab
CONTROL DIGITAL
12
Analizamos los datos procesados de los diseños para la planta del sistema
Fig. 15 Respuesta de las diferentes simulaciones. Seleccionamos la mejor respuesta ante los datos adquiridos que fue de 77.22% con un diseño de un Zero y dos polos Analizamos la respuesta ante una entrada escalón de nuestra planta escogida
Fig. 16 Respuesta ideal del 77% Luego observamos nuestra planta con sus constantes calculadas a reemplazar
Fig. 17 Modela de la función de Transferencia Resultados de la planta
305.34
95953.4
349.22
3669.21
9.1724
)*exp()21)(11(
*1)(
Tz
eTd
Tp
Tp
Kp
sTdTpTp
sTzKpsG
En Matlab simplificamos y terminamos de calcular nuestra planta en términos de z. Código en Matlab: clc clear all close all s=tf('s')
Kp = 1724.9 Tp1 = 2.3669 Tp2 = 2.349 Td = 0.0000000045953 Tz = 34.305 exponencial=(-Td*s) G= exponencial*((Kp * (1+Tz*s))/(
s*(1+Tp1*s)*(1+Tp2*s))) zpk(G) step(G) figure
CONTROL DIGITAL
13
s=tf('s') H=22.48 feedback(G,H) step(feedback(G,H))
T=0.2 ball_d=c2d(G,T)
Transfer function in s:
4.8907e-005 s (s+0.02915)
--------------------------
s (s+0.4257) (s+0.4225)
Feedback in s:
0.0002719 s^2 - 7.926e-006 s
-----------------------------
5.56 s^3 + 4.71 s^2 + s
T =
0.0200
Planta Identificada En Términos De Z
Transfer function in z:
9.0129e-006 (z-0.9942)
-----------------------
(z-0.919) (z-0.9184)
Sampling time: 0.2
Cálculos del controlador
Cálculos Del PID(Z) Para el Micro
Código en Matlab: clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); kp=0; kd=0; ki=0;
T=0.2; %PID numpd = [Kp+Kd+ki -(Kp+2*Kd) Kd]; denpd = [1 1 0]; contr = tf(numpd,denpd,Ts) sys_cl = feedback(contr*ball_d,22.45); [x,t] = step(0.25*sys_cl,5); stairs(t,x)
Cálculos Del PI(Z) Para el Micro
KdsKpPd
Tz
zKdKpzPd
1)(
Tz
KdKdzTzKpzPd
)()(
1
1)()(
z
z
Tz
KdzKdKpTzPd
T
KdzKdKpTzPd
1
)(
)()(
)(zPd
zE
zU
T
kEKdkEKdKpTkU
)1()()()(
errorsensorsetpokE int)(
iorerroranterkE )1(
Código en Matlab:
clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); kp=0; kd=0; ki=0; T=0.2; %PI num = [2*kp+T*ki -2*kp+T*ki]; den = [2 -2]; con = tf(num,den,Ts) sys_clll = feedback(con*ball_d,22.48); [x,t] = step(0.25*sys_cl,5); [y,t] = step(0.25*sys_cll,5); [z,t] = step(0.25*sys_clll,5); stairs(t,z)
CONTROL DIGITAL
14
Cálculos Del PI(Z) Para el Micro
s
KiKpPi
1
1
2)(
z
zTKiKpzPi
22
)1()22()(
z
zTKizKpzPi
1
12)2()(
z
z
Tz
TKiKpzTKiKpzPi
1
11
22
2)2()(
z
TKizKpzTKiKpzPi
)()(
)(zPi
zE
zU
)1()1(2)2)(()1()( kTkiEkpkETkikpkEkUkU
2
)1(2)1()2()()2()(
kUkEKpTkikETkikpkU
errorsensorsetpokE int)(
iorerroranterkE )1(
Código en Matlab: clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts);
kp=0; kd=0; ki=0; T=0.2; %PD nump = [Kp*T+Kd -Kd]; denp = [T 0]; cont = tf(nump,denp,Ts) sys_cll = feedback(cont*ball_d,22.48); [y,t] = step(0.25*sys_cll,5); stairs(t,y)
Código Del Microcontrolador pic #include <16f877a.h>
#device adc=10
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
void main()
{
int16
sen=0,set=330;//de=0,ea=0,pid=0,lin=326,ls
u=334;
signed long e0=0, e1=0, e2=0, u=0, u1=0,
q0=0, q1=0, q2=0, kp=0, ki=0, kd=0;
double t=0;
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
// DEFINICION DE CONSTANTES KP KI KD
kp=0;
ki=0;
kd=0;
t=0.02;
for (;;)
{
//sensor
set_adc_channel(0);
delay_us(20);
sen=read_adc();
//setpoint
set_adc_channel(1);
delay_us(20);
set=read_adc();
//CALCULO DEL PID ECUACION EN DIFERENCIAS
e0=set-sen;
q0=(t*t*ki+kp*t+kd)/t;
q1=(t*kp-2*kd)/t;
q2=(kd/t);
u=u1+q0*e0-q1*e1+q2*e2;
u1=u;
e2=e1;
e1=e0;
//CALCULO DEL PD ECUACION EN DIFERENCIAS
e0=set-sen;
u=(kp*t+kd)*e0-kd*e1;
e1=e0;
//CALCULO DEL PI ECUACION EN DIFERENCIAS
e0=set-sen;
u=(2*kp+t*ki)*e0+(t*ki-2*kp)*e1+2*u1;
u1=u;
e1=e0;
//Rango de la salida del PID
CONTROL DIGITAL
15
if(u<-500)
u=-500;
u=500+u;
if(1000<=u)
u=1000;
if(u<=0)
u=0;
//Salida al Servomotor
output_high(pin_c0);
delay_ms(1);
delay_us(u);
output_low(pin_c0);
delay_us(19000-u);
}
}
Fig. 18 Resultados en el multímetro del control vs el Set-Point del sistema en el punto de 3.4 V
Conclusiones:
Se realizó el control del servo-motor
mediante Matlab para lo cual se calibro
con un rango de operación de -
45°<0<45°; inicialmente para observar
inicialmente el comportamiento del
sistema.
El cambio entre cada ciclo útil debe ser lo suficientemente espaciado
para que se note un cambio en la planta.
El servo-motor tiene una excelente
aplicación para nuestro prototipo debido
a su funcionamiento en grados, y
satisface el diseño mecánico.
Se pudo realizar el moldeamiento
dinámico del sistema para poderlo
analizar en Matlab; de tal manera que
se expresó finalmente en términos de Z
para un controlador PD, PI y PID
elaborado y simulado todo desde Matlab
donde se muestra el modelamiento de
la planta del sistema y finalmente
obtener el control de Ball beam.
Se pudo realizar el moldeamiento
dinámico del sistema para poderlo
analizar en Matlab; de tal manera que
se expresó finalmente en términos de Z
la planta del sistema para poder realizar
el control de Ball beam.
Se realizó un control respectivo al
sistema mediante la herramienta de
Matlab, y se pudo observar que cuando
se incrementa Kp mejora el tiempo de
estabilización
Para la práctica, puede probar
diferentes P, I y D combinaciones para
obtener una respuesta satisfactoria
como se ha demostrado teóricamente,
analíticamente y en la implementación.