¿Cómo estabilizar este sistema de control?

4

Tengo un problema de control con la saturación. Es casi lineal en la zona de no saturación.

Problema:

Ocasionalmentemidoenormespicosdeerror.Nodebenperturbarmirutinadecontrol.Quierobajaral50%(delvoltajedereferencia)enmivoltajedesalida.Enelmomentoenquehagoesto,pasounpasohaciaarribaohaciaabajodependiendodesilasalidaesmayoromenorque50%.Estoconduceaoscilaciones.

Oscilaciones:

Si espero un tiempo mayor antes de medir el voltaje de salida y luego ajusto el voltaje de control, las oscilaciones disminuyen. Pero esto también extiende mi tiempo de arranque, lo cual es un problema, ya que no sé qué valor de voltaje de control entrega 50% de voltaje de salida. Tengo que buscar bastante tiempo.

¿Cómo puedo controlar las oscilaciones sin disminuir la velocidad de muestreo?

En el control PID se dice que el error estacionario se reduce a cero si se agrega una parte integral, pero ¿cómo puedo hacer algo similar aquí?

De lo contrario, ¿cuál sería su enfoque para controlar esto?

    
pregunta Say

1 respuesta

3

Si tiene enormes picos de error transitorio, entonces necesita una parte derivada (es decir, la D en PID) para manejar estos.

Un sistema PID simple no es difícil de escribir en código, es la afinación lo que hace la parte difícil: lo que necesita saber más o menos. La parte integral manejará el desplazamiento de CC, la parte proporcional, la ganancia y la derivada, la reacción a cambiar.

Aquí hay un código que escribí para un tanque de grabado de temperatura controlada que hice con un PIC16F y un sensor de temperatura DS18B20 hace siglos (usaba un cable de nicromo conducido a través de PWM enrollado alrededor de un par de baldosas cerámicas para el elemento calefactor, por lo que una gran capacidad térmica)
Los resultados, una vez sintonizados, fueron un rebasamiento de menos de 2 grados en el encendido, y una variación de menos de un grado más o menos a partir de entonces. Es un código muy antiguo para un proyecto único que se lanza rápidamente, por lo que probablemente se pueda mejorar un poco.
Encontré este documento "PID sin un PHD" muy útil. Además, Matlab, Scilab o Octave se pueden usar para simular y ajustar los sistemas PID.

/** Control variables **/

int DEADBAND = 0;   // Range where no change will be made

// PID gain values 
double Kp = 10;
double Ki = 0.02;
double Kd = 5;

// Accumulator variable for Integral calculation
double I_acc = 0;

// Returns out the proportional term
double get_prop(int error)
{
    double p;
    p = (Kp * error); 
    return p;
}

// Returns the integral term
double get_int(int error)
{
    double i;
    I_acc += (error);

    i = (double)(Ki * I_acc);
    if(i > 1000) i = 1000;
    if(i < 0) i = 0;
    return i;
}

// Returns the derivative term
double get_deriv(int error)
{
    double d;
    static int prev_error;
    d = (Kd * (error - prev_error));
    prev_error = error;
    return d;
}

double get_pid(int error)
{
    double result;
    double p, i, d;

    p = get_prop(error);
    i = get_int(error);
    d = get_deriv(error);
    result = p + i + d;
    return result;
}
    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas