Grupo - 4 - Laboratorio - 3 - MotorDC (INFORME)
Grupo - 4 - Laboratorio - 3 - MotorDC (INFORME)
Grupo - 4 - Laboratorio - 3 - MotorDC (INFORME)
Contenido
TEMA.........................................................................................................................................3
OBJETIVOS...............................................................................................................................3
Características de un Motor DC...............................................................................................3
Identificación y Validación de modelos...................................................................................6
Ident de MatLaB.....................................................................................................................10
DESARROLLO........................................................................................................................12
IDENT DE MATLAB........................................................................................................16
Validar el modelo matemático obtenido con los datos reales del motor DC...........................20
CODIGO ARDUINO.........................................................................................................20
CODIGO MATLAB TOMA DE DATOS DEL MOTOR..................................................22
RESULTADOS..................................................................................................................23
CODIGO MATLAB IDENTIFICACION OPTIMIZADOR..............................................24
RESULTADOS..................................................................................................................25
CODIGO MATLAB VALIDACION PARAMETROS DINAMICOS..............................25
RESULTADOS..................................................................................................................26
CODIGO MATLAB MODELO.........................................................................................26
PASO UNITARIO.................................................................................................................29
RAMPA.................................................................................................................................30
IMPULSO..............................................................................................................................30
CONCLUSIONES....................................................................................................................32
REFERENCIAS.......................................................................................................................33
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
SISTEMAS DE CONTROL
Laboratorio No 03
TEMA
Modelación y respuesta de un motor DC.
OBJETIVOS
Modelar y analizar la respuesta la respuesta de un motor DC ante diferentes
entradas.
MARCO TEÓRICO
MOTOR DC
El motor CC o motor DC es un motor de corriente continua o directa y su propiedad es
la conversión de energía eléctrica a energía mecánica. Es provocado por un movimiento
rotatorio, gracias a la acción de un campo magnético.
Normalmente un motor se compone de dos partes: el estátor y el rotor.
Estátor. Da soporte mecánico y contiene los polos de la máquina, pueden ser un
devanado de hilo de cobre sobre un núcleo de hierro, o imanes permanentes. Cubre el
rotor.
Rotor. Con forma cilíndrica (normalmente), también devanado y con núcleo es
alimentado con corriente directa a través de delgas, que están en contacto alternante con
escobillas fijas (también llamadas
carbones).
Figura 1. Motor DC
FUNCIONAMIENTO
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
Figura 3. Motor DC
El voltaje de trabajo es bajo por lo que para la misma potencia que en alterna,
necesitan cableado más grueso.
Identificación de sistemas
Se entiende por identificación de sistemas a la obtención de forma experimental de un
modelo que reproduzca con suficiente exactitud, para los fines deseados, las
características dinámicas del proceso objeto de estudio.
El proceso de identificación
En términos generales, el proceso de identificación comprende los siguientes pasos:
1. Obtención de datos de entrada - salida.
Para ello se debe excitar el sistema mediante la aplicación de una señal de entrada y
registrar la evolución de sus entradas y salidas durante un intervalo de tiempo.
2. Tratamiento previo de los datos registrados.
Los datos registrados están generalmente acompañados de ruidos indeseados u otro tipo
de imperfecciones que puede ser necesario corregir antes de iniciar la identificación del
modelo. Se trata, por tanto, de ‘preparar’ los datos para facilitar y mejorar el proceso de
identificación.
3. Elección de la estructura del modelo.
Si el modelo que se desea obtener es un modelo paramétrico, el primer paso es
determinar la estructura deseada para dicho modelo. Este punto se facilita en gran
medida si se tiene un cierto conocimiento sobre las leyes físicas que rigen el proceso.
4. Obtención de los parámetros del modelo.
A continuación se procede a la estimación de los parámetros de la estructura que mejor
ajustan la respuesta del modelo a los datos de entrada-salida obtenidos
experimentalmente.
5. Validación del modelo.
El último paso consiste en determinar si el modelo obtenido satisface el grado de
exactitud requerido para la aplicación en cuestión. Si se llega a la conclusión de que el
modelo no es válido, se deben revisar los siguientes aspectos como posibles causas:
a. El conjunto de datos de entrada-salida no proporciona suficiente
información sobre la dinámica del sistema.
b. La estructura escogida no es capaz de proporcionar una buena
descripción del modelo.
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
Métodos de identificación
Existen diversos métodos de identificación, que pueden clasificarse según distintos
criterios:
Dependiendo del tipo de modelo obtenido:
- Dependiendo de la aplicación:
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
t t , y (t ) ye t ,
ye t
siendo el vector de parámetros del modelo, y(t) la respuesta real del sistema e
la respuesta estimada por el modelo para la misma entrada.
Idealmente, estos residuos deben ser independientes de la entrada. Si no sucede así,
t
significa que hay componentes en que proceden de la entrada u (t ) , lo cual a su vez
significa que el modelo no es capaz de describir completamente la dinámica del sistema.
Para realizar el estudio anterior, suele comprobarse la correlación entre el error de
predicción y la entrada al sistema, según la expresión:
N
1
R u
N
t .u (t )
t 1
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
El modelo será tanto más exacto cuanto más se acerquen a cero los términos de la
t u (t )
correlación anterior. Puede demostrarse que si y son realmente
independientes, la expresión anterior (para valores grandes de N) es una distribución
normal, con media cero y varianza
1
Pr
N
R k .R (k )
u
t u (t )
donde R y Ru son las covarianzas de y respectivamente.
3* Pr
Generalmente, R u ( ) se representa en un diagrama junto con las líneas . Si
R u ( ) sobrepasa dichas líneas para algún valor de t, significa que t y u (t )
probablemente no son independientes para ese valor de .
A la hora de examinar la función de correlación, es importante tener en cuenta los
siguientes aspectos:
Si existe correlación para valores negativos de , esto indica que existe
realimentación de la salida hacia la entrada, no que el modelo sea deficiente.
Si la estimación de un modelo y su expresión de correlación entre residuos y
entrada R u se han determinado utilizando los mismos datos de entrada, entonces
R u ( ) 0 para nk ,..., nk nb 1
Ident de MatLaB.
DESARROLLO
em(t ) k3Wm(t )
Tm(t ) k2ia (t )
d 2 m(t ) d (t )
Tm(t ) Im 2
Bm
dt dt
Ganancia para el potenciómetro
ec(t ) k5 c (t )
er (t ) k5 r (t )
Aplicando Laplace
E ( s) K 5 ( r ( s) c( s ))
Tren de Energía
m(t ) N1
L (t ) N 2
L (t ) Tm(t )
m(t ) TL (t )
2
N
feq Im 2 fc
N1
Motor DC y carga
N2
N1
Ieq Im ( ) 2 Ic
feq fm ( ) 2 fc
d 2 m(t ) d m(t )
Tm(t ) Ieq 2
feq
dt dt
dia (t )
ea (t ) Raia (t ) La em(t )
dt
d m(t )
em(t ) k3 k3Wm(t )
dt
Tm(t ) k2ia (t )
L (t ) m(t )
Tiempo Continuo
dWm(t )
Tm(t ) Ieq feqWm(t )
dt
x1 w
x1 w
x2 i
x2 i
Usando definiciones de variables de estado
B Km
x1 x1 x2
J J
R Ka 1
x2 x2 x1 v
L L L
Representación en variables de estado
x Ax Bu
y Cx Du
Donde
A -> Matriz de estado
B-> Matriz de entrada
C-> Matriz de salida
D-> Matriz de transmisión directa
B Km
0
x1 J J x1
1 v
Ka R x2
x2 L
L L
y1 1 0 x1
y 0 1 x
2 2 D=0
Modelo no lineal
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
di (t )
V (t ) Ri (t ) L Ea (t )
dt
di (t )
v(t ) Ri (t ) Ea(t )
dt
dw(t )
Tm(t ) J Bw(t )
dt
dw(t )
J Tm(t ) Bw(t )
dt
Constantes
Ea(t ) Kaw(t )
Ka v / rads
Tm(t ) Kmi (t )
Km Nm / A
Donde
Ka Km
di (t ) v(t ) Ri (t ) Kaw(t )
dt L
dw(t ) Km(t ) Kaw(t )
dt J
Validar el modelo matemático obtenido con los datos reales del motor DC.
CODIGO ARDUINO
/////////////////////////// COMUNICACION
SERIAL //////////////////
const byte in1 = 7;
String inputString = "";
const byte in2 = 8;
bool stringComplete = false;
const byte ena = 6;
const char separator = ',';
volatile int n = 0;
const int dataLength = 1;
volatile byte ant = 0;
double data[dataLength]; // Valor regula ciclo de trabajo
(PWM) volatile byte act = 0;
{ Serial.print(",");
Serial.begin(9600); //Serial.print(",");
pinMode(in1, OUTPUT); }
pinMode(in2, OUTPUT); }
lastTime = millis(); }
} }
void loop() { }
////////// SI RECIBE DATOS ///////////// void clockwise(int pin1, int pin2,int analogPin, int pwm)
if (stringComplete) {
{ digitalWrite(pin1, LOW);
{ analogWrite(analogPin,pwm);
data[i] = inputString.substring(0, index).toInt(); void anticlockwise(int pin1, int pin2,int analogPin, int pwm)
} digitalWrite(pin1, HIGH);
stringComplete = false; }
{ float voltage=0;
double corriente=0; {
{ }
% Tiempo
ts=0.1;
tf=100;
t=0:ts:tf;
COM='COM14';
delete(instrfind({'Port'},{COM}));
Arduino= serial(COM);
set( Arduino, 'Baudrate',9600);
set( Arduino, 'StopBits', 1 );
set( Arduino, 'DataBits', 8 );
set( Arduino, 'Parity', 'none' );
set( Arduino, 'Terminator', 'CR/LF' );
set( Arduino, 'OutputBufferSize',200);
set( Arduino, 'InputBufferSize',200);
set( Arduino, 'Timeout', 1 );
fopen( Arduino );
pause(2);
fprintf('Serial Open\n');
% Medir Tiempo
tic
% Volts(k)=Volts(k)+cos(0.09*k);
Recibe=fscanf(Arduino,'%f,%f');
Vel(k)=Recibe(1);
ia(k)=Recibe(2);
flushinput (Arduino);
%% Medir Tiempo entre envio y recepcion
Envio(k) = toc;
end
fprintf(Arduino,'%s\n',num2str(0));
pause(1);
fclose(Arduino);
delete(Arduino);
fprintf('Serial Close\n');
subplot(3,1,1)
plot(t,Vel,'r','LineWidth',2);grid on,legend('Velocidad')
subplot(3,1,2)
plot(t,ia,'g','LineWidth',2);grid on,legend('Corriente')
subplot(3,1,3)
plot(t,Volts,'b','LineWidth',2);grid on,legend('Volatje')
save('M4.mat','Volts','ia','Vel','ts','t')
RESULTADOS
DATOS OBTENIDOS POR ARDUINO
%% VECTOR DE VARIABLES
ValoresIniciales=[J B R ka La]';
%% FUNCION DE COSTE
Motor=@(ValoresIniciales)Modelo(ValoresIniciales,t,ts,Vel,Volts,ia);
%% MAXIMOS Y MINIMOS
vmax=[1000 1000 1000 1000 1000];
vmin=[1e-4 1e-5 1e-4 1e-5 1e-5];
%% OPTIMIZADOR
opciones = optimset('Algorithm','sqp','Display','off');
[Valores]= fmincon(Motor,ValoresIniciales,[],[],[],[],vmin,vmax,[],opciones);
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
disp('Variables')
disp(Valores);
save('Mot.mat','Valores')
RESULTADOS
load('Mot.mat')
load('M2.mat');
J =Valores(1);
B =Valores(2);
R =Valores(3);
ka=Valores(4);
La=Valores(5);
iam(1)=0;wm(1)=0;
km=ka;
iap=(Volts(k)-R*iam(k)-ka*wm(k))/La;
iam(k+1)=iap*ts+iam(k);
wmp=(km*iam(k)-B*wm(k))/J;
wm(k+1)=wmp*ts+wm(k);
end
subplot(3,2,1)
plot(t,Vel,'r','LineWidth',2);grid on,hold on
plot(t,wm(1:length(t)),'g','LineWidth',2);legend('Velocidad Real','Modelo Matematico')
xlabel('Time [s]'),ylabel('rad/s'),title('Velocidad Angular')
subplot(3,2,3)
plot(t,ia,'r','LineWidth',2);grid on,hold on
plot(t,iam(1:length(t)),'b','LineWidth',2);legend('Corriente Real','Modelo Matematico')
xlabel('Time [s]'),ylabel('Ampers'),title('Corriente')
subplot(3,2,5)
plot(t,Volts,'m','LineWidth',2);grid on,legend('Voltaje Aplicado')
xlabel('Time [s]'),ylabel('Voltaje'),title('Voltaje Aplicado')
subplot(3,2,4)
plot(t,ia,'m','LineWidth',2);grid on,legend('Corriente Real')
xlabel('Time [s]'),ylabel('Ampers'),title('Corriente')
subplot(3,2,6)
plot(t,Volts,'k','LineWidth',2);grid on,legend('Voltaje Aplicado')
xlabel('Time [s]'),ylabel('Voltaje'),title('Voltaje Aplicado')
RESULTADOS
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
J =ValoresI(1);
B =ValoresI(2);
R =ValoresI(3);
ka=ValoresI(4);
La=ValoresI(5);
%% INICIALIZACION
ia(1)=0;wm(1)=0;
%% ERROR ACUMULADO
et=0;
km=ka;
%% INICIO DEL BUCLE
for k=1:length(t)
iap=(Voltsm(k)-R*ia(k)-ka*wm(k))/La;
ia(k+1)=iap*ts+ia(k);
wmp=(km*ia(k)-B*wm(k))/J;
wm(k+1)=wmp*ts+wm(k);
e1=Velm(k)-wm(k);
e2=iam(k)-ia(k);
e=[e2;e1];
et=et+(e'*e);
end
eror=(et)/(length(t))
end
PASO UNITARIO
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
RAMPA
IMPULSO.
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN
CONCLUSIONES
REFERENCIAS
[1].S. Fadali , “Digital Control Engineering, Analysis and Design”, Academic Press,
2nd Edition, 2012
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE-L
INGENIERIA EN ELECTRÓNICA Y AUTOMATIZACIÓN