Está en la página 1de 12

MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN

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.

1. FEEDFORWARD: LAZO ABIERTO

El sistema de feedforward se usa para mantener un estado concreto del sistema.


Este sistema es comúnmente utilizado cuando las perturbaciones no pueden ser
controladas, por lo cual realiza un sistema de compensación en las perturbaciones
sin que se lleguen a afectar las variables del controlador. A lo cual se le conoce a
este controlador como un controlador anticipativo, ya que su función es anticiparse
a las perturbaciones que estén afectando al controlador.

a. DECLARACIÓN DE VARIABLES

R = 2.0 % Ohms

L = 0.5 % Henrys

Km = 0.1 % torque constant

Kb = 0.1 % back emf constant

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.

R son los valores de resistencia en ohms


MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
L son los valores de la bobina en henrios
Km es el valor del torque mecánico
Kb es la constante de fricción
Kf es la constante de velocidad
J es a inercia del motor

b. Declaración de la función tf();


h1 = tf(Km,[L R]) % armature

Esta función es usada para crear modelos de transferencia con valores


reales o complejos o a su vez puede convertir modelos de sistemas
dinámicos en forma de función de transferencia. la función se está
igualando a la variable h1 la cual tendrá el resultado de la función tf(). Del
sistema eléctrico

h2 = h2 = tf(1,[J Kf]) % eqn of motion


En esta ocasión la función anteriormente mencionada tomando las
variables 1,J,FK para transformarlas en una función de transferencia donde
se evalúan los numeradores y denominadores Del sistema mecánico
c. Declaración de la función ss();
dcm = dcm = ss(h2) * [h1 , 1] % w = h2 * (h1*Va + Td)

Esta función puede convertir modelos de sistemas dinámicos en forma de


modelo de espacio de estados. h2 es la variable que entra a la función ss()
la cual tiene una función de transferencia y será convertida en un modelo
de espacio de estado y será multiplicada por una matriz 2*1. h1 y h2 son el
sistema eléctrico y mecánico, a esta se le adiciona una variable de entrada
en su perturbación.

d. Declaración de la función feedback();


dcm = feedback(dcm,Kb,1,1) % close back emf loop

La función feedback() crea un ciclo de retroalimentación negativa, cuando


se aplica a una función de tiempo continuo, esta función aumenta el orden
de la función de transferencia. Convirtiéndose en un modelo de estado con
una entrada y una salida.
e. Declaración de la función stepplot();
stepplot(dcm(1));
esta función traza la respuesta escalada del modelo de sistemas
dinámicos, puede trazar modelos con múltiples entradas aplicando
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA
comando de paso para cada entrada. Equivale a la velocidad angular al
voltaje en un rango entre 1 y 2.
f. Declaración de la función dcgaint();
Kg = 1 / dcgain (dcm (1))
esta función genera la ganancia estática del modelo de sistemas
dinámicos, en el sistema de lazo abierto, la ganancia estática generada por
un subbloque de la funcion original permanece unitaria en su ganancia
estática.

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.

3. FEEDBACK DC MOTOR CONTROL DESING: SISTEMA DE CONTROL DE UN


MOTOR RETROALIMENTADO EN DC

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

Donde este compensador es el que determinará K.

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):

h = rlocusplot(tf(1,[1 0]) * dcm(1));


Esta función realiza la visualización de los polos asignándole a h el root locus de la
función de transferencia en el lazo abierto del sistema dcm.

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 de root locus, donde se obtiene los polos de los ejes X y Y

Gráfica root locus con sus especificaciones en los polos del sistema.

Ahora especificamos una variable K, para observar claramente lo que sucede al


modificar los valores de root locus con un compensador K/2.

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 = feedback (dcm * append (C, 1), 1,1,1);


La función del cl_rloc es hacer el lazo cerrado entre el dcm y la matriz diagonal.

h = lsimplot (cl_ff, cl_rloc, u, t);


La función del lsimplot es graficar la respuesta del tiempo dinámico del controlador PI
al realizar la visualización de los polos en root locus de la función de transferencia con las
señales de entrada u y t.

cl_rloc.InputName = { 'w_ref' , 'Td' };


Esta función los que nos permite hacer es asignarle un nombre a las variables de la
celocidad de referencia y de las perturbaciones de entrada del sistema.

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.

título ( 'Seguimiento del punto de ajuste y rechazo de perturbaciones' )


Esta función lo que hace es asignarle un título a la función de transferencia que se va a
graficar.

leyenda ( 'feedforward' , 'feedback w / rlocus' , 'Location' , 'NorthWest' )


Esta función nos permite asignarle un nombre al sistema de control según su
realimentación, la eliminación de las perturbaciones del root locus, su localización en la
gráfica y en que direccion se va a dirigir, que en este caso sería el noroeste.

Al realizar estas modificaciones en el controlador PI, obtenemos una gráfica donde se


observa la realimentación del sistema y las perturbaciones en el rlocus. En donde el
diseño del lugar de la raiz es mejor para rechazar las perturbaciones de carga.
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA

4. LQR DC MOTOR CONTROL DESIGN: REALIMENTACIÓN DE ESTADO Y


UBICACIÓN DE POLOS DEL MOTOR DC LQR.
Para el diseño de control por medio de LQR se necesita saber una parte
importante como lo es la ubicación de los polos y por lo tanto se observa que para
mejorar aún más el rendimiento, se debe diseñar un regulador cuadrático lineal
(LQR) para la estructura de retroalimentación que se muestra a continuación.

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

K_lqr = lqry(dc_aug,[1 0;0 20],0.01);


A continuación, obtenga el modelo de circuito cerrado para fines de simulación:
P = augstate(dcm); % inputs:Va,Td outputs:w,x
C = K_lqr * append(tf(1,[1 0]),1,1); % compensator including 1/s
OL = P * append(C,1); % open loop

CL = feedback(OL,eye(3),1:3,1:3); % close feedback loops


cl_lqr = CL(1,[1 4]); % extract transfer (w_ref,Td)->w
Este diagrama compara los diagramas de Bode de bucle cerrado para los tres diseños de
control de motores de CC:
bodeplot(cl_ff,cl_rloc,cl_lqr);

Al realizar estas modificaciones en el controlador PI, obtenemos una gráfica donde se


observa la realimentación del sistema y las perturbaciones en el rlocus. Y además
podemos observar las magnitudes en el diagrama de Bode.
MANUEL FERNANDO SANTOFIMIO TOVAR, JUAN SEBASTIÁN PIÑEROS HERNÁNDEZ, SEBASTIAN
GARZON OCHOA

5. COMPARISON OF DC MOTOR CONTROL DESIGNS: COMPARACIÓN DE DISEÑOS DE


CONTROL DE MOTORES DE CC

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

Si es esperado de acuerdo a este sistema, ya que cuando agregamos una


perturbación el sistema no puede estabilizarse ya que no cuenta con la relación de
la salida con la entrada, pero de la misma forma sigue siendo estable.

Así obtenemos el control anticipativo y un sistema de control realimentado del


motor. Mostrando las siguientes características en el seguimiento del punto de
ajuste de la señal y el rechazo de perturbaciones

También podría gustarte