Вы находитесь на странице: 1из 23

2009

UNIVERSIDAD SURCOLOMBIANA -WILLIAM FERNANDO VSQUEZ -ANTONY JOHAN GONZLEZ -ANBAL LEONARDO ROJAS

[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 en lazo cerrado.

MODELO DEL MOTOR DC

Donde:

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 los sensores. Si se lee solamente la velocidad, la salida del sistema es ; escribiendo en forma matricial:

Diagrama de representacin en ecuacin de estado

Haciendo la transformada de laplace de las ecuaciones de estado:

De la segunda ecuacin de estado:

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

% Entradas % U1=Va voltaje de armadura % U2=Tl Torque de carga Am=[-Ra/La Kt/J -Kb/La -F/J ];

Bm=[1/La 0

0; -1/J ];

Cm=[0

1];

Dm=[0 0];

Gss=ss(Am,Bm,Cm,Dm)% ecuacion de estado eig(Am)% Valores propios(polos) Gtf=tf(Gss)%funcion de transferencia %% G11=Gtf(1,1); %W/Ea G12=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:

Luego, la respuesta ante escaln de 12 voltios es:


% quitando polos lejanos %aproximando G11--> W/Ea G11=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.

Digital Encoder. Se utiliz un encoder digital fabricado por la compaa Maxon Motor cuya 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 operacin:

a la velocidad mxima del motor, Obtenemos la mxima frecuencia de

Wn rps

4590 rpm 4590 rpm 60 seg

76 .5

Como el encoder proporciona 500 pulsos/revolucin entonces:

500P 76.5rev * rev seg

38250P / seg

entonces

fmx = 38.25KHz

Tacmetro. Es el convertidor Frecuencia-Voltaje fabricado por la National Semiconductor. Su referencia es LM2907.

Figura 30. Convertidor Frecuencia/Voltaje

Vout = Vcc*fin*C1*R1 fmax =


I2 ; C1 * Vcc

I2 = 180uA para Vcc = 12 Vol (Se obtiene de las curvas de operacin del PDF) Si fmax = 40KHz entonces C1 =
180 uA 40 KHz *12V 375 pF 330 pF 33 pF

Se necesita que la caracterstica del sensor sea:

R1 =

Vout Vcc * f IN * C1

5V 12V * 38.25KHz * 363 pF


20 .43ms

33K

; R1*C2 2ms C2 =
2ms 33 K

motor

60 nF

68 nF

Circuito para detectar el sentido de giro del motor: Se dise con el flip-flop D 74LS74.

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; velocidad positiva. Q = 1 para

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 el voltaje promedio aplicado al motor en un rango entre 0 Voltios y 12 Voltios.

BRAKE: Es una entrada del LM18200 utilizada para impedir que sea aplicado un voltaje al motor cuando es de nivel lgico alto. Direccin: Es una entrada que controla la direccin del flujo de corriente entre out1 y out2 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:

5 480 .663

1.04 *10 2 V / rad / s

El actuador utilizado es un puente H con una ganancia de 2.4.

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 evitar la saturacin del actuador, y que cuando la seal de salida voltios se tiene la mxima velocidad del motor (480.66 rad/seg).

para es igual a 5

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:


U ( z) Kp KI 1 z K D (1 Z 1 ) E ( z )

Donde es la seal de control, y proporcional, integral y derivativa.

es el error.

son las ganancias

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

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))%controlador zpk(Gcz) figure(2) step(feedback(Gcz*Gz,1)) %hasta aca se obtuvieron los patrones de arranque Kd=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.

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.

La respuesta anterior es ante escaln unitario; para saber la velocidad que tomara el sistema, basta hacer regla de tres:

Entonces escaln unitario equivale a 96.13 rad/seg. La grfica de seal de control es:

Se observa que no se satura el actuador, puesto que el mximo valor es 5 voltios; lo anterior nos muestra que el sistema puede funcionar con referencias hasta de 2.5 voltios sin saturar la seal de control.

CONTROLADOR POR ALGORITMO DE KALMAN

Se desea la siguiente respuesta ante una entrada escaln unitario:

Figura 86. Respuesta deseada, algoritmo de Kalman

T = 10ms,
Y (20 )

periodo de muestreo.
48.93( 20ms)

h(1 e

) 1

h(0.6242) = 1

entonces h = 1.6021

Y (10 )

h(1 e

48.93(10ms)

0.6199

entonces:

Y(0) = 0;

Y(10) = 0.6199;

Y(20) = 1

Y ( z) Y ( z) Y ( z)

0.6199z 0.6199z

z z

z 3 ... 1 1 z
2

0.6199z
1

0.6199z 1 z1

0.6199z 1 0.3801z 1 z 1

La transformada Z de la planta es:

G( z)

z*

1 e s

TS

1 entonces G ( z ) 2.04 *10 2 s 1

(1 e (1 e

48.93T

)z 48.93T )z

1 1

; T = 10ms

El algoritmo de control es:


Y ( z) GD ( z ) 1 * G( z ) R( z ) ; Y ( z) 1 R( z )
R( z ) 1 1 z
1

escaln unitario

Y ( z) R( z )

0.6199z

0.3801z

Finalmente el controlador obtenido es:

La representacin en ecuacin de estado haciendo una realizacin balanceada es:

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.

PROGRAMA DE MICROCONTROLADOR PIC 16F877A PID Implementado con PIC-C #include <16F877A.h> #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 %%%%%%%%%%%%%%%%%%%%%%%%% set_adc_channel(0); DELAY_us(20); REFERENCIA = READ_ADC();

ANALOGAS

DEL

SISTEMA

set_adc_channel(1); DELAY_us(20); VELOCIDAD = READ_ADC(); VELOCIDADi = VELOCIDAD; IF (referencia<0) VELOCIDADi = -VELOCIDADi; //determinar el sentido de giro del motor //ELSE VELOCIDADi=VELOCIDADi;

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<0) output_bit( PIN_B1,0 ); //cambiar el bit de sentido de giro del motor ELSE output_bit( PIN_B1,1 );

IF (SALIDA > 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

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) { } }

Вам также может понравиться