Control Digital Motor Dc

download Control Digital Motor Dc

of 23

Transcript of Control Digital Motor Dc

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

    {

    }

    }