7/31/2019 Control Digital Motor Dc
1/23
2009UNIVERSIDADSURCOLOMBIANA
-WILLIAM FERNANDOVSQUEZ
-ANTONY JOHANGONZLEZ-ANBAL LEONARDOROJAS
[CONTROL DE UN MOTOR DE
CORRIENTE DIRECTA]Se muestra el modelo matemtico del motor y la forma en que se disea el sistema de control enlazo cerrado.
7/31/2019 Control Digital Motor Dc
2/23
MODELO DEL MOTOR DC
Donde:
7/31/2019 Control Digital Motor Dc
3/23
Se definen como variables de estado la velocidad angular y la corriente de armadura
, lo cual nos permite describir el sistema en forma de ecuacin de estado:
Reescribiendo en forma matricial, :
La salida del sistema depende de las variables de estado que se lean por medio de lossensores. Si se lee solamente la velocidad, la salida del sistema es ; escribiendo
en forma matricial:
7/31/2019 Control Digital Motor Dc
4/23
Diagrama de representacin en ecuacin de estado
Haciendo la transformada de laplace de las ecuaciones de estado:
De la segunda ecuacin de estado:
7/31/2019 Control Digital Motor Dc
5/23
Datos Tcnicos del Motor:
Fabricado por la compaa Maxon Motor.
Motor A-max 32
Voltaje Nominal = 12V
Potencia Nominal = 15W
Velocidad Nominal = 4590 rpm
Torque mximo continuo = 38.2 mNm
Mxima corriente continua = 1.58A
Corriente de Arranque = 4.01A
Ra = 2.99 (Resistencia de armadura)
J = 41.4gr.cm2
= 4.14*10-6
Kg.m2
(Inercia del rotor)
La = 420H (inductancia de armadura)
f = 1*10-8
(friccin viscosa)
Kb = 24.1 mNm/A = 41.47 rad/s/V = 24.96*10-3
V/rd/s (constante de velocidad)
Kt = 24.1*10-3 Nm/A (constante de torque)
Se escribe el siguiente cdigo en matlab, para ver la respuesta transitoria del motor ante
entrada escaln de 12 voltios, puesto que es el voltaje nominal, y determinar cul es la
velocidad ante voltaje nominal.
%% MOTOR DC
Ra=2.99; %resistencia de armadura(ohms)
La=420e-6; %inductancia de armadura(H)F=1e-8; %J=4.14e-6; % inercia del rotor(Kg*m^2)Kb=24.96e-3; % constante de velocidad (V/(rad/seg))Kt=24.1e-3; %constante de torque (N*m/amp)
% variables de estado:% X1=Ia% X2=W
7/31/2019 Control Digital Motor Dc
6/23
% Entradas% U1=Va voltaje de armadura% U2=Tl Torque de carga
Am=[-Ra/La -Kb/LaKt/J -F/J ];
Bm=[1/La 0;0 -1/J ];
Cm=[0 1];
Dm=[0 0];
Gss=ss(Am,Bm,Cm,Dm)% ecuacion de estadoeig(Am)% Valores propios(polos)
Gtf=tf(Gss)%funcion de transferencia
%%G11=Gtf(1,1); %W/EaG12=Gtf(1,2); %W/Tl
G11=zpk(G11)% ver en forma ceros, polos , ganancia
La funcin de transferencia de velocidad contra voltaje de armadura es:
Se puede ver que el polo es -7070 es despreciable puesto que est muy lejos en
comparacin con el polo en -48.93, entonces se puede hacer la aproximacin a un sistema
de primer orden, entonces se quita el polo y se divide la ganancia entre el valor del polo:
7/31/2019 Control Digital Motor Dc
7/23
Luego, la respuesta ante escaln de 12 voltios es:
% quitando polos lejanos
%aproximando G11--> W/EaG11=zpk([],[-48.93],13860133.4254/7070) %zero, pole,gain
step(12*G11)
La velocidad en estado estacionario es de , para convertir a rpm:
Para sensar la velocidad del motor se usa un convertidor frecuencia a voltaje, el cual recibe
la seal del encoder incremental incorporado al motor.
7/31/2019 Control Digital Motor Dc
8/23
Digital Encoder. Se utiliz un encoder digital fabricado por la compaa Maxon Motorcuya referencia es HEDL 5540 con manejador de lnea.
Figura 29. Encoger digital
Datos tcnicos:
Vcc = 5V
Seal de salida: EIA estndar RS422
Nmero de canales: 2 + pulso ndice.
Corriente de fase: 90
Pulsos por revolucin: 500
Corriente de salida/canal: -1 a 20mA
Mxima frecuencia de operacin : 100KHz.
De acuerdo a la velocidad mxima del motor, Obtenemos la mxima frecuencia de
operacin:
5.76
60
4590
4590
seg
rpmrps
rpmWn
7/31/2019 Control Digital Motor Dc
9/23
Como el encoder proporciona 500 pulsos/revolucin entonces:
segP
seg
rev
rev
P/38250
5.76*
500entonces fmx = 38.25KHz
Tacmetro. Es el convertidor Frecuencia-Voltaje fabricado por la NationalSemiconductor. Su referencia es LM2907.
Figura 30. Convertidor Frecuencia/Voltaje
Vout = Vcc*fin*C1*R1
fmax =VccC
I
*1
2 ;
I2 = 180uA para Vcc = 12 Vol (Se obtiene de las curvas de operacin del PDF)
Si fmax = 40KHz entonces C1 = pFpFpFVKHz
uA33330375
12*40
180
Se necesita que la caracterstica del sensor sea:
7/31/2019 Control Digital Motor Dc
10/23
R1 = KpFKHzV
V
CVcc
Vout
IN
33363*25.38*12
5
1*f*
; msmotor 43.20
R1*C2 2ms
C2 = nFnFK
ms6860
33
2
Circuito para detectar el sentido de giro del motor:
Se dise con el flip-flop D 74LS74.
7/31/2019 Control Digital Motor Dc
11/23
Velocidad positiva: Velocidad negativa:
Los filtros de entrada son para filtrar el ruido, slo dejan pasar la onda cuadrada pura que
genera el encoder.
Como se observa en los diagramas de tiempo, Q = 0 para velocidad negativa; Q = 1 para
velocidad positiva.
Actuador (Puente H)
Figura 25. Puente H. LM18200
Se emplea el CI LMD18200 fabricado por National Semiconductor. Este integrado
contiene un puente H interno a base de Power Mosfet, lo cual permite que el motor gire en
dos direcciones. Tiene una entrada de seal PWM, una entrada de direccin y una entrada
de Brake.
La seal de entrada PWM es suministrada por el microcontrolador y con ella logramos
variar el ciclo til de la seal de salida desde 0% a 100% lo que equivale a variar elvoltaje promedio aplicado al motor en un rango entre 0 Voltios y 12 Voltios.
7/31/2019 Control Digital Motor Dc
12/23
BRAKE: Es una entrada del LM18200 utilizada para impedir que sea aplicado unvoltaje al motor cuando es de nivel lgico alto.
Direccin: Es una entrada que controla la direccin del flujo de corriente entre out1 yout2 y por lo tanto la direccin de rotacin del motor.
MODELO DE LA PLANTA
La planta en el sistema de control es el conjunto actuador-motor-sensor
El sensor utilizado tiene la siguiente caracterstica lineal:
sradVm //10*04.1663.480
5 2
El actuador utilizado es un puente H con una ganancia de 2.4.
7/31/2019 Control Digital Motor Dc
13/23
Conjunto Actuador-Motor-Sensor:
Es decir que el modelo de nuestra planta para hacer el sistema de control es:
Nota: hay que tener en cuenta que la mxima seal de control es para
evitar la saturacin del actuador, y que cuando la seal de salida es igual a 5
voltios se tiene la mxima velocidad del motor (480.66 rad/seg).
7/31/2019 Control Digital Motor Dc
14/23
CONTROL DIGITAL
Se va a implementar un controlador digital, entonces a la planta se le agrega un retenedor
de orden cero. Para la eleccin del periodo de muestreo se tiene en cuenta que el tiempo de
establecimiento es alrededor de 100 milisegundos, entonces se toma
; luego la transformada Z de la planta es:
El modelo anterior es el que se utilizar para disear los controladores.
Control PID
La estructura del controlador PID ser:
)()1(1
)(1
1zEZK
z
KKpzU D
I
Donde es la seal de control, y es el error. son las ganancias
proporcional, integral y derivativa.
Se sintoniza el controlador por el mtodo de ziegel y nichols:Planta=tf(48.93,[1 48.93])
Gz=c2d(Planta,.01,'zoh')rlocus(Gz)figure(1)K=4.1687;step(feedback(Gz*K,1))
7/31/2019 Control Digital Motor Dc
15/23
Kp=0.6*K;Tcr=0.02;Td=0.125*Tcr;Ti=0.5*Tcr;Ki=Kp/Ti;Kd=Td*Kp;T=0.01;Kp=Kp-(Kp*T/(2*Ti));Ki=Ki*T;Kd=Kd/T;z=tf('z')Gcz=(Kp+(Ki/(1-z^-1))+Kd*(1-z^-1))%controladorzpk(Gcz)figure(2)step(feedback(Gcz*Gz,1))%hasta aca se obtuvieron los patrones de arranqueKd=0.2100;Ki=1.1000;Kp=0.7000;Gcz=(Kp+(Ki/(1-z^-1))+Kd*(1-z^-1))
zpk(Gcz)figure(3)step(feedback(Gcz*Gz,1))
num=[2.01 -1.12 0.21];den=[1 -1 0];Gcz=tf(num,den,0.01)[Ac,Bc,Cc,Dc]=tf2ss(num,den)Gczss=ss(Gcz)Gczss=balreal(Gczss) %realizacin balanceada
El controlador obtenido en funcin de transferencia es :
La representacin en ecuacin de estado haciendo una realizacin balanceada es:
El controlador en representacin de estado es el que se implementa en el microcontrolador.
7/31/2019 Control Digital Motor Dc
16/23
El diagrama de bloques del controlador en representacin de estado es:
El sistema de control a lazo cerrado:
A continuacin se muestra el diagrama de simulink del sistema de control, en el cual se
compara la respuesta del sistema con el motor en continuo y el retenedor de orden cero
(sistema real) y el sistema con el motor discretizado; al simular se comprueba que las dos
respuestas son exactamente iguales.
7/31/2019 Control Digital Motor Dc
17/23
7/31/2019 Control Digital Motor Dc
18/23
CONTROLADOR POR ALGORITMO DE KALMAN
Se desea la siguiente respuesta ante una entrada escaln unitario:
Figura 86. Respuesta deseada, algoritmo de Kalman
T = 10ms, periodo de muestreo.
1)1()20()20(93.48 msehY
h(0.6242) = 1 entonces h = 1.6021
6199.0)1()10()10(93.48 msehY
entonces: Y(0) = 0; Y(10) = 0.6199; Y(20) = 1
1
21
1
221
1
21
321
1
3801.06199.0)(
1
6199.06199.0
1
16199.0)(
...6199.0)(
z
zzzY
z
zzz
zzzzY
zzzzY
7/31/2019 Control Digital Motor Dc
19/23
La transformada Z de la planta es:
110*04.2
1*
1*)(
2ss
ezzG
TS
entonces193.48
193.48
)1(
)1()(
ze
zezG
T
T
; T = 10ms
El algoritmo de control es:
)(
)(1
)(
)(
*)(
1)(
zR
zYzR
zY
zGzGD ; 1
11)(z
zR escaln unitario
213801.06199.0
)(
)(zz
zR
zY
Finalmente el controlador obtenido es:
La representacin en ecuacin de estado haciendo una realizacin balanceada es:
7/31/2019 Control Digital Motor Dc
20/23
La salida Y(Z) :
Se observa que el sistema responde en dos instantes de muestreo.
La seal de control:
No se satura el actuador, pues el mximo valor son 5 voltios.
7/31/2019 Control Digital Motor Dc
21/23
PROGRAMA DE MICROCONTROLADOR PIC 16F877A
PID Implementado con PIC-C
#include
#device adc=8
#FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP,
NOCPD, NOWRT
#use delay(clock=20000000)
//#DEFINE PIN_B0 SENTIDO_GIRO // BIT QUE SE LEE DEL FLIP FLOP PARA
VERIFICAR EL SENTIDO DE GIRO
//#DEFINE PIN_B1 DIRECCION // BIT QUE INDICA EL SENTIDO DE GIRO QUE
TOMARA EL MOTOR
unsigned int16 REFERENCIA=0, VELOCIDAD = 0;
signed int16 ERROR = 0, VELOCIDADi = 0 ;
signed int16 Xk1=0;//Condiciones iniciales
signed int16 Xk2=0;
signed int16 X1=0;
signed int16 X2=0;
float U= 0;
signed INT16 SALIDA;
unsigned int salida8;
#int_TIMER1
void TIMER1_isr(void){
// LECTURA DE LAS VARIABLES ANALOGAS DEL SISTEMA
%%%%%%%%%%%%%%%%%%%%%%%%%
set_adc_channel(0);
DELAY_us(20);
REFERENCIA = READ_ADC();
set_adc_channel(1);
DELAY_us(20);
VELOCIDAD = READ_ADC();
VELOCIDADi = VELOCIDAD;
IF (referencia
7/31/2019 Control Digital Motor Dc
22/23
ERROR = REFERENCIA - VELOCIDADi; // SE RESTA EL NIVEL DC a la referencia
y se halla el error;
//la referencia se multiplica por 2 para que sea del mismo
rango
//que la velocidad (0-255)
/*
Xk1=X1-2.004*ERROR; //control PID
Xk2=0.4583*ERROR;
U =-0.5489*X1-0.4583*X2+2.01*ERROR;
*/
Xk1=X1+0.8101*ERROR; //Control de Kalman
Xk2=-0.3801*X2-0.5183*ERROR;
U =0.8942*X1-0.5183*X2+1.602*ERROR;
/*
Xk1=0.8706*X1+0.4087*X2-0.5392*ERROR; //sistema subamortiguado (oscilaciones)
Xk2=-0.4087*X1+0.8624*X2-0.3439*ERROR;
U =-0.5392*X1+0.3439*X2+0.04621*ERROR;
*/
/*
Xk1=0.6306*X1-0.1801*X2-1.137*ERROR; //sistema sin sobrepico con ganancia=4
Xk2=0.1801*X1-0.4592*X2+0.2264*ERROR;U =-1.137*X1-0.2264*X2+0.5714*ERROR;
*/
X1=Xk1;
X2=Xk2;
SALIDA = abs(U); //la variable se vuelve positiva porque el ciclo til slo puede ser
positivo
IF (U 255) salida8 = 255; //Nivel de saturacin
ELSE salida8 = make8(SALIDA,0); //se le asigna a la variablesalida8 los 8 bits
//menos significativos de la variable SALIDA
7/31/2019 Control Digital Motor Dc
23/23
set_pwm1_duty(SALIDA8); //cargar el valor de salida8 al registro del ciclo til del
PWM
SET_TIMER1(60285); //el timer se carga con 59285, para que cuente de 59285 a 65535;
cada
//periodo de conteo es de 1.6 useg
}
void config()
{
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_timer_2(T2_DIV_BY_16,255,1); //el periodo de la seal PWM es
((20MHz/4)/16)/255=1.225KHz
setup_ccp1(CCP_PWM);set_pwm1_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
}
void main()
{
config();while (true)
{
}
}
Top Related