Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GARZON OCHOA
CONTROL DE MOTOR DC
Estos sistemas de control son utilizados cuando los lazos de control
convencionales (PID) no son los suficientemente útiles para trabajar sistemas de
control que posean variables que requieran grandes procesos que un control
convencional no pude realizar. Por lo cual requieren de una gran variedad de
constantes que presentan variaciones en el tiempo, que no pueden ser
controladas, generando perturbaciones.
a. DECLARACIÓN DE VARIABLES
R = 2.0 % Ohms
L = 0.5 % Henrys
Kf = 0.2 % Nms
J = 0.02 % kg.m^2/s^2
Tabla 1: variables motor dc
Esta son las variables que se usarán para la modelación de un motor dc las
cuales son proporcionadas por el fabricante.
Esta gráfica nos explica los pasos de las funciones descritas anteriormente
para el sistema de lazo abierto.
2. INTEGRAL FEEDBACK: LAZO CERRADO
En este sistema de control se crea una perturbación del material ya sea su peso o
su carga. En un intervalo de tiempo de 10 segundos sobre la entrada, se le
considera un Td. Tiende a reducir la diferencia entre la salida del sistema y la
entrada referencia. También especifica las perturbaciones que no se puedan
previsualizar, comparando el sistema de control a través de una diferencia como
un medio controlable.
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
Kff = 1/dcgain(dcm(1))
a. DECLARACIÓN DE VARIABLES
t = 0:0.1:15;
la variable t guarda el tiempo de 0 a 15 con intervalos de 0.1.
Td = -0.1 * (t>5 & t<10);
Td guarda un valor dependiendo del condicional, si t>5 y t<10 la condición
es verdadera y se puede operar de lo contrario Td seria siempre
-0.1.
u = [ones(size(t)) ; Td];
Como podemos ver la variable u está igualada a las funciones one() y
size() una anidada a la otra, size() nos devuelve el peso que tiene la
variable t mencionada al inicio de la declaración de variables y one()
nos devuelve una matriz de ‘1’ con las dimensiones que define
size()
cl_ff = dcm * diag([Kff,1]);
la funcion diag() crea o obtiene las diagonales de una matriz, esta diagonal
está representada por los polos del sistema.
b.
cl_ff.InputName = {'w_ref','Td'};
la funcion cl_ff.InputName crea los nombres de las variables de entrada del
sistema de lazo cerrado. Velocidad angular para su variable de
referencia y sus perturbaciones.
cl_ff.OutputName = 'w';
la funcion cl_ff.OutputName crea los nombres de las variables de salida del
sistema de lazo cerrado. Velocidad angular
c.
h = lsimplot(cl_ff,u,t);
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
la funcion lsimplot() simula la respuesta del sistema para las entradas
definidas en el modelo de estado, sus perturbaciones y el tiempo de respuesta de
este.
title('Setpoint tracking and disturbance rejection')
Esta función crea el título de la gráfica que muestra el ajuste de la señal de
salida rechazando sus perturbaciones.
legend('cl\_ff')
Esta función nos permite asignarle un nombre al sistema de realimentación
de lazo cerrado.
d.
line([5,5],[.2,.3]);
line([10,10],[.2,.3]);
Estas funciones definen los máximos y mínimos de los ejes X y Y.
text(7.5,.25,{'disturbance','T_d = -0.1Nm'},...
'vertic','middle','horiz','center','color','r');
Esta función define la posición del texto en donde queremos ver las
perturbaciones del sistema que se está rechazando y el ajuste que se realiza al encontrar
esa perturbación.
Este sistema de control se realiza con un controlador PI, se debe tener en cuenta
que la constante proporcional K tiene un factor de amortiguamiento de 0.7
mediante su ubicación de polos. Realizando un root locus del modelo de sistema:
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
Para aplicar un error de estado estable cero, use el control integral del formulario
C(s) = K/s
Para determinar la ganancia K, se puede usar la técnica de root locus aplicando raíz a
la transferencia de bucle abierto 1 / s * (Va-> w):
setoptions(h,'FreqUnits','rad/s');
Esta función realiza los valores de la frecuencia en rad/s.
xlim([-15 5]);
Esta función define los límites del root locus del eje x.
ylim([-15 15]);
Esta función define los límites del root locus del eje Y.
Al definir el rlocus, nos arroja una gráfica identificandonos los polos, ganancia,
overshoot, frecuencia y la relación de amortiguamiento de los ejes X y Y del sistema
de control retroalimentado.
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
Gráfica root locus con sus especificaciones en los polos del sistema.
K = 5;
Siendo K la ganancia estática de nuestro sistema en lazo abierto.
C = tf (K, [1 0]); % compensador K / s
El compensador C realiza la función de transferencia al integrador del controlador PI
en forma de matriz.
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
cl_rloc.OutputName = 'w' ;
Esta función realiza la misma acción de la función anterior con la diferencia de que se le
asigna un nombre a la variable de salida del sistema.
Además de la integral de error, el esquema LQR también utiliza el vector de estado x = (i,
w) para sintetizar el voltaje de activación Va. El voltaje resultante es de la forma
Va = K1 * w + K2 * w/s + K3 * i
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
donde i es la corriente de inducida.
Para un mejor rechazo de perturbaciones, use una función de costo que otorga el error
integral grande, como lo es una función de costo
donde
La ganancia óptima de LQR para esta función de costo se calcula de la siguiente manera:
dc_aug = [1 ; tf(1,[1 0])] * dcm(1); % add output w/s to DC motor model
Cuando agregamos una perturbación a la salida del sistema lo que sucede es que
de una forma rápida se estabiliza el voltaje que se requiere, y al frenar la
perturbación se produce un sobre pico en la parte del PWM en la salida para que
se nivele esta caída de voltaje.
Si ya que cuando hay un sistema PI, este lo que debe es permitir reducir en gran
medida el error estático, esta lo que hace es asimilar la ganancia estática a un
valor muy cercano a la referencia a diferencia de un proporcional.
kp = 1.5;
ki = 1.35;
v = int(estado) * 2.5 + 2.5;
v2 = ((float(analogRead(A1)))/1024)*10;
De igual forma sistema sigue presentando un error estático sin importar que tenga
sea sistema con un control proporcional y se tiene encuentra que para una entrada
tipo escalón el error estático es finito y no nulo, cuando es un sistema de tipo 0.
v = (int(estado)*5);
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
v2 = ((float(analogRead(A1))/1024)*5);
err = (v - v2);
sal= err*0.81