Para controlar esta planta utilizaremos el siguiente controlador discreto a partir de la transformación backward Euler:
Dónde:
Obteniendo transformada inversa, la salida de control descrita como ecuación de diferencias nos queda:
Estos coeficientes pueden encontrarse manualmente siguiendo el procedimiento descrito aquí, o ejecutando éste programa de Matlab: [PID_Proteus.m]. Teniendo estos valores podemos realizar una verificación de la ecuación en Simulink:
Algo muy importante que se debe notar es que en esta simulación se está considerando la limitación física de la saturación de la salida del controlador real. Sin esta limitación la respuesta del controlador sería más rápida y con un sobreimpulso mucho menor. Sabiendo ahora que nuestra ecuación de diferencias es correcta podemos proceder a escribir el programa en el PIC en lenguaje C con el compilador MikroC. El programa completo se adjuntará más adelante. La función de control principal queda descrita como:
void pid(void) // Función para el controlador
{
e2=e1; e1=e0; u2=u1; u1=u0; // update de variables
y = ADC_Read(0); // Lectura analógica por AN0
yd = (double) y; // Conversión a double
vin = (yd/1023*5);
y = ADC_Read(1); // Lectura analógica por AN1
yd = (double) y; // Conversión a double
reff = (yd/1023*5);
e0 = reff - vin; // Error
u0 = ke0*e0 + ke1*e1 + ke2*e2 - ku1*u1 - ku2*u2; // Ecuación de diferencias
salida = (int) floor(((u0+5)/10)*1023);
if (salida > 1023) salida = 1023; // Saturación de DAC
if (salida <= 0) salida = 0;
DAC_Output(salida); // Enviar dato
}
Es muy importante que ésta función sea ejecutada dentro de una rutina de interrupción de manera que se tenga control del tiempo de muestreo Ts en exactamente 0.01 segundos para que el controlador funcione correctamente. Para la salida analógica del controlador se esta utilizando un DAC LTC1660 [2][3]. Compilando el programa y simulando en Proteus:
Nota: El relay en la simulación lo único que hace es evitar que la salida bipolar del DAC envíe un voltaje de saturación negativo al inicio [ver este programa].
No hay comentarios:
Publicar un comentario