33
1 Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial Karen Nataly Angulo Acunso José Julián Salazar Vaca Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial Karen N. Angulo José J. Salazar Estudiantes de Ingeniería Mecatrónica de la Escuela Politécnica del Ejército 1. RESUMEN En el siguiente artículo se presenta la implementación de un control PID Fuzzy para una planta de iluminación manejada por un PWM, determinando las reglas para su respectivo comportamiento a través de sus variables de entrada y salida, mediante la programación en Matlab realizando la comunicación serial con el computador. Se detallará el procedimiento necesario para el cálculo de las variables que intervienen en el control Fuzzy PID y la relación existente entre ellas. Se realiza el análisis de estabilidad, se implementa el control PD en lazo cerrado y un control difuso, donde el control difuso hace la función de compensador para eliminar el error en estado estable. 2. ABSTRACT The present paper describes implementation for lighting plant driven by PWM, setting the rules for respective controlled behavior using the appropiate input and output variables programming in matlab stablishing serial communication between circuit and PC. It will be detailed the neccesary procedure to calculate the variables which will work in fuzzy PID control and relationship between them, stability analysis will be done, setting a PD closed-loop control and Fuzzy control, where the fuzzy one makes the function of compensator for deleting steady state error. 3. PALABRAS CLAVE Fuzzy, PID, Sintonización, Error, Comunicación Serial, derivada, compensador, set point, Kp. FPD controllers, FPD+I Controllers. 4. FILIACIÓN DEL AUTOR Karen Nataly Angulo Acunso [email protected] +59384682247 José Julián Salazar Vaca [email protected] +59384587028 Estudiantes de Ing. Mecatrónica 9no nivel cursando la materia de Automatización Industrial Mecatrónica.

92048254 Control Fuzzy PID Angulo Salazar

Embed Size (px)

Citation preview

Page 1: 92048254 Control Fuzzy PID Angulo Salazar

1

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen N. Angulo

José J. Salazar

Estudiantes de Ingeniería Mecatrónica de la Escuela Politécnica del Ejército

1. RESUMEN

En el siguiente artículo se presenta la implementación de un control PID Fuzzy para

una planta de iluminación manejada por un PWM, determinando las reglas para su

respectivo comportamiento a través de sus variables de entrada y salida, mediante

la programación en Matlab realizando la comunicación serial con el computador.

Se detallará el procedimiento necesario para el cálculo de las variables que

intervienen en el control Fuzzy PID y la relación existente entre ellas.

Se realiza el análisis de estabilidad, se implementa el control PD en lazo cerrado y un control difuso, donde el control difuso hace la función de compensador para eliminar el error en estado estable.

2. ABSTRACT

The present paper describes implementation for lighting plant driven by PWM,

setting the rules for respective controlled behavior using the appropiate input and

output variables programming in matlab stablishing serial communication

between circuit and PC.

It will be detailed the neccesary procedure to calculate the variables which will

work in fuzzy PID control and relationship between them, stability analysis will be

done, setting a PD closed-loop control and Fuzzy control, where the fuzzy one

makes the function of compensator for deleting steady state error.

3. PALABRAS CLAVE

Fuzzy, PID, Sintonización, Error, Comunicación Serial, derivada, compensador, set

point, Kp. FPD controllers, FPD+I Controllers.

4. FILIACIÓN DEL AUTOR

Karen Nataly Angulo Acunso [email protected] +59384682247

José Julián Salazar Vaca [email protected] +59384587028

Estudiantes de Ing. Mecatrónica 9no nivel cursando la materia de Automatización

Industrial Mecatrónica.

Page 2: 92048254 Control Fuzzy PID Angulo Salazar

2

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

5. INTRODUCCIÓN

5.1 Objetivos

Diseñar un controlador Fuzzy-PID para una planta de iluminación mediante la

programación en Matlab y la comunicación serial para adquirir los datos.

5.2 Objetivos Específicos

Analizar y establecer el sistema.

Determinar las constantes del controlador PID que estabilice la planta.

Escoger el mejor control de acuerdo a la respuesta de la planta

Realizar las reglas para el control difuso del error en el controlador PID.

5.3 Alcance de estudio

El alcance del presente proyecto es fortalecer los conceptos obtenidos de los

controladores PID y Fuzzy relacionándolos entre sí para la optimización del

controlador del sistema logrando que el lector utilice el documento para

conocer el procedimiento que debe seguir en el control de una planta de

iluminación.

Además se puede utilizar el artículo para elección del tipo de controlador de

acuerdo a la respuesta requerida por el lector mayor rapidez o mayor

estabilización y de acuerdo a esto parámetros decidir el controlador que más

se ajuste o si es necesario utilizarlos juntos.

6. GENERALIDADES

6.1 Controlador FUZZY PID

Cuando el problema de control es regular la salida del proceso en torno a un

punto de ajuste, es posible considerar el error como una entrada incluso en un

controlador difuso y la integral del error y la derivada del error puede ser usado

como entrada también.

Sin embargo en el controlador PID es difícil hablar del efecto de cada factor de

ganancia en el tiempo de subida, sobre pico, y el tiempo de establecimiento

porque los controladores fuzzy PID exigen mayores cambios además de

trabajar con su no linealidad y ganancias.

Se requiere encontrar un procedimiento de ajuste sistemático haría más simple

la instalación de controladores difusos.

Los controladores PID pueden ser sintonizados en una variedad de formas,

incluyendo la sintonización de Ziegler-Nichols puesto que dan forma al bucle,

los métodos de análisis mediante la optimización, la colocación del autotuning.

Page 3: 92048254 Control Fuzzy PID Angulo Salazar

3

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

6.2 Control Fuzzy Proporcional y Derivativo

La acción derivativa ayuda a predecir el error y el control proporcional–

derivado utiliza la acción derivada para mejorar la estabilidad de lazo cerrado.

La estructura del controlador PID es:

Ec(1)

La señal de control es proporcional a una estimación de los segundos por

delante del error Td, donde la estimación se obtiene por la interpolación. Para

Td=0 el control es puramente proporcional, cuando Td se aumenta

gradualmente, se vuelve amortiguado. Si es demasiado grande Td el sistema se

vuelve sobreamortiguado y comenzará a oscilar de nuevo.

Fig1.Fuzzy PD controller

La entrada del controlador fuzzy proporcional derivativo (FPD) es el error y la

derivada del error. En el control fuzzy el último término es usualmente llamado

cambio del error.

Ec(2)

Esta es una aproximación discreta al cociente diferencial utilizando una

diferencia en atraso. En los controladores anteriores no se usaba el tiempo de

muestreo para determinar el cambio del error.

La salida del controlador es una función no lineal del error y del cambio del

error.

Ec(3)

Ec(4)

Ec(5)

Page 4: 92048254 Control Fuzzy PID Angulo Salazar

4

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Ec(6)

La aproximación corresponde a la sustitución de la superficie de fuzzy de

entrada-salida con un plano.

La aproximación es mejor si se escoge el universo de salida sea la suma de la

entrada de los universos de entrada.

El fuzzy PID puede ser aplicado cuando el control proporcional es inadecuado.

El término derivativo reduce el sobre pico, pero puede ser sensible al ruido o

bien a un cambio abrupto a la referencia causando el fenómeno llamado

derivate kick.

6.3 Control Incremental

Si hay un error en estado estacionario, es necesaria la acción integral.

La acción integral aumentará la señal de control si hay un error positivo

pequeño, no importa cuán pequeño sea el error, la acción integral siempre

volverá a cero en el estado de equilibrio. Es posible obtener un controlador

fuzzy PID utilizando el error y el cambio en el error como entradas a la base de

reglas.

La experiencia muestra, que es bien difícil de escribir las reglas para el acción

integral. No se ahondará en este concepto debido a que el presente artículo no

es usado.

Fig2. Control Fuzzy integral

6.4 Control Integral- proporcional y derivativo.

Es sencillo visualizar en un controlador Fuzzy PID con tres términos de entrada:

error, integral del error y derivada del error. Una regla basada con 3 entradas,

sin embargo se vuelve un valor grande, las reglas del error suelen ser un

problema.

Entonces es común separar la acción integral como un controlador fuzzy PD+I.

El error integral es calculado.

Ec(7)

Page 5: 92048254 Control Fuzzy PID Angulo Salazar

5

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig3. Controlador fuzzy PD+I

El controlador es así una función de 3 entradas.

Ec(8)

La aproximación lineal es:

Ec(9)

En la última línea se asume que GE no es cero:

Ec(10)

Ec(11)

Ec(12)

Este controlador provee todos los beneficios de un controlador PID, pero

también las desventajas del derívate kick e integrador winup.

Tabla1. Rápida referencia de los controladores.

7. MATERIALES Y MÉTODOS 7.1 Diseño del circuito

Para el diseño de la planta se estableció el funcionamiento de acuerdo al control que se desea realizar.

Page 6: 92048254 Control Fuzzy PID Angulo Salazar

6

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

La variación de luminosidad requiere un PWM para la variar la frecuencia del foco, para evitar realizar un circuito de potencia se reemplazó el foco por una lámpara de leds que consume una potencia mucho menor a la de un foco. Para el control es necesario medir la cantidad de luminosidad por lo tanto se requiere un sensor, el escogido es una fotorresistencia (LDR) que varía valor de resistencia de acuerdo a la luminosidad que sensa.

7.2 Implementación del circuito Para realizar el circuito se deben establecer el acondicionamiento de las señales para el funcionamiento de los componentes. Divisor de Voltaje El sensor que se utiliza (LDR) tiene una salida de variación de resistencia, debido a que este tipo de señal un microcontrolador no leería se acondicionó a voltaje mediante un circuito divisor, el cual consta de una alimentación de voltaje de 5V, una resistencia de 10K y la salida del LDR en paralelo; de esta manera se obtiene una variación de voltaje de 0-3.5V que será la variable de entrada al controlador PWM El PWM es un variador de frecuencia, en el presente proyecto se aplica para la variación de luminosidad de la lámpara. Con la ayuda de un microcontrolador PIC16F877A se realizará la generación del PWM, generando un código de programación que realiza la conversión de voltaje a porcentaje de frecuencia de salida. Dentro del pic también se realiza la programación de la comunicación y la librería para el control de LCD para visualizar los datos. A continuación se muestra el programa del PIC

#include <serial232_pic.h>

#include <flex_lcd.c>

float pv=0, send=0;

int16 pwm=0;

int16 pid=0;

char pidc=0;

#int_RDA

void RDA_isr(void)

{

pidc=getch();

if (pidc=='0')

Page 7: 92048254 Control Fuzzy PID Angulo Salazar

7

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

{pid=0;}

else

{pid=pidc;}

}

void main()

{ setup_adc_ports(AN0_AN1_VSS_VREF);

setup_adc(ADC_CLOCK_DIV_8);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DIV_BY_16,249,1);

setup_ccp1(CCP_PWM);

setup_ccp2(CCP_OFF);

set_pwm1_duty(0);

set_pwm2_duty(0);

setup_comparator(NC_NC_NC_NC);

enable_interrupts(INT_RDA);

enable_interrupts(GLOBAL);

lcd_init();

while(true)

{

set_adc_channel(0);

delay_us(10);

int1 done = adc_done();

Page 8: 92048254 Control Fuzzy PID Angulo Salazar

8

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

while(!done) {

done = adc_done();

}

pv=read_adc();

send=pv*5/1023;

pwm=pid*4;//envio de duty cycle por porcentaje

set_pwm1_duty(pwm);

delay_ms(20);

lcd_gotoxy(1,1);

printf(lcd_putc,"SP %lu PWM %lu",pid,pwm);

printf(lcd_putc," ");

lcd_gotoxy(1,2);

printf (lcd_putc,"PV= %2.2f V",send);

printf ("%.2fF",send);

delay_us(10);

}

} Acondicionamiento a la salida del PWM Debido a que la salida PWM del PIC maneja corrientes bajas, se requiere aumentar la corriente para el funcionamiento de la lámpara de leds por tal motivo se requirió un transistor 2N3904 para limitar la corriente de la lámpara y controlar la variación de frecuencia. Comunicación Serial Para la comunicación serial se utiliza un Max232 que realiza la conversión de TTL a serial y conector DB9 en el que se realizará la conexión de los pines con el transmisor y receptor serial del PIC y el computador.

Page 9: 92048254 Control Fuzzy PID Angulo Salazar

9

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig4.Circuito implementado

7.3 Diseño del Controlador PID - Determinación de la función de transferencia y constantes de PID

Antes de realizar la programación del controlador en Labview se debe encontrar las constantes Kc, Ti y Td. Para determinar estas constantes se requiere la función de transferencia de la planta, para lo cual se realizan mediciones de entrada y salida. Mediante una función de Matlab (Ident) se ingresan los datos tomados y se determina la función de transferencia.

Fig5. Función Ident para determinar la función de transferencia

Page 10: 92048254 Control Fuzzy PID Angulo Salazar

10

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Con la ayuda de esta función se obtienen las constantes para la función de transferencia.

Fig6. Función de transferencia obtenida

Una vez determinada la función de transferencia se escoge el método para el diseño del controlador: el método escogido es Ziegler Nichols mediante una programación en matlab se encuentran las constantes.

Page 11: 92048254 Control Fuzzy PID Angulo Salazar

11

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Obteniendo las constantes, en la gráfica podemos notar que el overshoot obtenido es de 44.4% :

Fig7.Gráfica de controlador PID

A continuación mostraremos la gráfica del controlador luego de la sintonización realizada para

el artículo Control Fuzzy y PID en una planta de luminosidad en Labview de los mismos

autores. El objetivo del presente estudio es alcanzar esta sintonización mediante un control

Fuzzy PD o Fuzzy PD+I.

Page 12: 92048254 Control Fuzzy PID Angulo Salazar

12

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig8. Gráfica de estabilización del controlador

7.4 Cálculos Se realizaron cálculos para dos controladores Fuzzy PD y Fuzzy PD+I de acuerdo a lo establecido anteriormente en el punto 6.4.

Estos valores fueron obtenidos por la sintonización en matlab por el método de

Ziegler-Nichols.

[ ]

[ ]

Debido a que las variaciones del error en nuestro sistema son mayores que 1 en

algunos casos se decidió usar un rango de -50 a 50 de esa manera GE tendría

una ganancia unitaria.

Page 13: 92048254 Control Fuzzy PID Angulo Salazar

13

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Ec(13)

Ec(14)

Ec(15)

Con los valores obtenidos se procede a realizar la programación para los diferentes tipos de controladores Fuzzy PID.

7.5 Reglas para la fuzzificación del error

CE/E NB NS ZE PS PB

NB PB PB PS PS ZE

NS PB PS PS ZE NS

ZE PS PS ZE NS NS

PS PS ZE NS NS NB

PB ZE NS NS NB NB

Tabla2. Reglas para la fuzzificación

CE : Cambio en el error E: Error PB: Positive Big PS: Positive Small ZE: Zero NS: Negative Small NB: Negative Big Los rangos para las variables se detallaran a continuación en la explicación de la fuzzificación.

7.6 Programación en Matlab

o Controlador Fuzzy PD con derivada en el error con filtro.

Es el controlador fuzzy utilizado por defecto en el cual se usa la derivada del error. Con un filtro que asienta la señal cuando se empieza a disparar. %ESCUELA POLITECNICA DEL EJERCITO %AUTOMATIZACION MECATRONICA %ANGULO KAREN %SALAZAR JOSE JULIAN %----------------------------------------------------- %CONTROL FUZZY PD DE ILUMINACION %Uso de derivada del error y filtro

Page 14: 92048254 Control Fuzzy PID Angulo Salazar

14

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

%----------------------------------------------------- warning off clc clear all fismat=readfis('FPD'); l=0; pidc = 0; sp=input('Ingrese % luminocidad: '); sp2=sp/2; kp=7.5; %0.018; kd=0.65595; %0.0000045; ki=0.017798; %0.0000006722; GE=1; GCE=3.0354; GIE=0.08236; GU=0.2161; error1=0; error2=0; % Deri=0; Io=0; sent=0; lastsent=0; i=0; clear tgrafy clear tgrafx clear show % Configuraion recepcion---------------------------- s=serial('COM7'); set(s,'BaudRate',19200,'DataBits',8,'Parity','none','StopBits',1,'FlowControl','none','timeout',5,'terminator',70,'inputbuffersize',1024,'requesttosend','off'); num=30; tabla=zeros(num,3); while (1) pidc = sp2; i=i+1; sent=0; fopen(s) dato=fscanf(s); pause(0.05) fclose(s) dato=strrep(dato,'F',''); daton=str2double(dato); sent=5.0982*(daton^3)-3.3542*(daton^2)+17.09*daton-0.1518;

Page 15: 92048254 Control Fuzzy PID Angulo Salazar

15

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

%Perturbacion-------------------------------------------- if (sent >= 60) && (sent<=120) sp2=15; elseif (sent >= 121) && (sent <= 250) sp2=6; elseif (sent>=251) sp2=1; else sp2=sp/2; end; %Filtro---------------------------------------------------- if (sp2 >= sent+20)||(sp2 <= sent-20) sent=sp2; end; %----------------------------------------------------------- %--------------PID------------------ error1=sp2-sent; %dinput=sent-lastsent; %Prop=(kp*error1); %Inte=(Io*ki*error1); %Io=Inte; Deri=(kd*(error1-error2)/3); %Deri=-1*(kd*(dinput)/3); %pid=(Prop+Inte+Deri); Deriv=Deri*GCE; lastsent=sent; error2=error1; u=evalfis([error1 Deriv], fismat); out=u*GU; %----Generacion de señal FPD----------------------------- pidc=convergent(sp2*(1+out)); if (pidc >= 49) pidc = sp2; elseif (pidc <= 0) pidc = sp2; end; clc sp sent2=sent*2; disp(' # % Luz Error') tabla(i,1)=i; tabla(i,2)=sent2; tabla(i,3)=error2; disp(tabla) %----------- grafica------------------------------ tgrafy(1,i)=sp;

Page 16: 92048254 Control Fuzzy PID Angulo Salazar

16

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

tgrafy(2,i)=tabla(i,2); tgrafx(i)=i; %t=whos('envio'); % Configuraion envio 1----------------------------- set(s,'outputBufferSize',512); %t.bytes fopen(s) fprintf(s,'%s',pidc) pause(0.05) fclose(s) l=l+1; if l==10 cc=input('¿Continuar?: 1/0 --> '); if (cc == 1) sp=0; sp=input('Ingrese % luminocidad: '); sp2=sp/2; % sent=0; % lastsent=0; pidc=sp2; l=0; error1=sp2-sent; error2=0; % Deri=0; elseif (cc == 0) break; end; end; plot(tgrafx,tgrafy) title('Respuesta del Sistema') xlabel('Iteracion') ylabel('Respuesta') AXIS([0 i 0 100]) end

o Controlador Fuzzy PD con derivada de salida con filtro.

Se analizó también un controlador Fuzzy PD con derivada a la salida para analizar posibles problemas relacionados con el derívate kick. De igual manera se usó un filtro para evitar que el valor de la salida se dispare.

warning off clc clear all fismat=readfis('FPD'); l=0; pidc = 0; sp=input('Ingrese % luminocidad: ');

Page 17: 92048254 Control Fuzzy PID Angulo Salazar

17

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

sp2=sp/2; kp=7.5; %0.018; kd=0.65595; %0.0000045; ki=0.017798; %0.0000006722; GE=1; GCE=3.0354; GIE=0.08236; GU=0.2161; error1=0; error2=0; % Deri=0; Io=0; sent=0; lastsent=0; i=0; clear tgrafy clear tgrafx clear show % Configuraion recepcion---------------------------- s=serial('COM7'); set(s,'BaudRate',19200,'DataBits',8,'Parity','none','StopBits',1,'FlowControl','none','timeout',5,'terminator',70,'inputbuffersize',1024,'requesttosend','off'); num=30; tabla=zeros(num,3); while (1) pidc = sp2; i=i+1; sent=0; fopen(s) dato=fscanf(s); pause(0.05) fclose(s) dato=strrep(dato,'F',''); daton=str2double(dato); sent=5.0982*(daton^3)-3.3542*(daton^2)+17.09*daton-0.1518; %Perturbacion-------------------------------------------- if (sent >= 60) && (sent<=120) sp2=15; elseif (sent >= 121) && (sent <= 250) sp2=6; elseif (sent>=251) sp2=1; else sp2=sp/2; end; %Filtro---------------------------------------------------- if (sp2 >= sent+20)||(sp2 <= sent-20) sent=sp2;

Page 18: 92048254 Control Fuzzy PID Angulo Salazar

18

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

end; %----------------------------------------------------------- %--------------PID------------------ error1=sp2-sent; dinput=sent-lastsent; %Prop=(kp*error1); %Inte=(Io*ki*error1); %Io=Inte; %Deri=(kd*(error1-error2)/3); Deri=-1*(kd*(dinput)/3); %pid=(Prop+Inte+Deri); Deriv=Deri*GCE; lastsent=sent; error2=error1; u=evalfis([error1 Deriv], fismat); out=u*GU; %----Generacion de señal PID con perturbacion---- pidc=convergent(sp2*(1+out)); if (pidc >= 49) pidc = sp2; elseif (pidc <= 0) pidc = sp2; % else pidc=convergent(sp2*(1+out)); end; clc sp sent2=sent*2; disp(' # % Luz Error') tabla(i,1)=i; tabla(i,2)=sent2; tabla(i,3)=error2; disp(tabla) %----------- grafica------------------------------ tgrafy(1,i)=sp; tgrafy(2,i)=tabla(i,2); tgrafx(i)=i; %t=whos('envio'); % Configuraion envio 1----------------------------- set(s,'outputBufferSize',512); %t.bytes fopen(s) fprintf(s,'%s',pidc) pause(0.05) fclose(s) l=l+1; if l==10

Page 19: 92048254 Control Fuzzy PID Angulo Salazar

19

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

cc=input('¿Continuar?: 1/0 --> '); if (cc == 1) sp=0; sp=input('Ingrese % luminocidad: '); sp2=sp/2; % sent=0; % lastsent=0; pidc=sp2; l=0; error1=sp2-sent; error2=0; % Deri=0; elseif (cc == 0) break; end; end; plot(tgrafx,tgrafy) title('Respuesta del Sistema') xlabel('Iteracion') ylabel('Respuesta') AXIS([0 i 0 100]) End

o Control fuzzy PD+I

Se trabaja solo con el error y la sumatoria de la acción integral. La acción integral se multiplica con el GIE encontrado en la Ec 15, este valor es sumado con el fuzzy y a esto se multiplica por la ganancia Gu.

A continuación se presenta la programación en el matlab:

warning off clc clear all fismat=readfis('FPD'); l=0; pidc = 0; sp=input('Ingrese % luminocidad: '); sp2=sp/2; kp=7.5; %0.018; kd=0.65595; %0.0000045; ki=0.017798; %0.0000006722; GE=1; GCE=3.0354; GIE=0.08236; GU=0.2161; error1=0; error2=0; % Deri=0; Io=0; sent=0;

Page 20: 92048254 Control Fuzzy PID Angulo Salazar

20

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

lastsent=0; i=0; clear tgrafy clear tgrafx clear show % Configuraion recepcion---------------------------- s=serial('COM7'); set(s,'BaudRate',19200,'DataBits',8,'Parity','none','StopBits',1,'FlowControl','none','timeout',5,'terminator',70,'inputbuffersize',1024,'requesttosend','off'); num=30; tabla=zeros(num,3); while (1) pidc = sp2; i=i+1; sent=0; fopen(s) dato=fscanf(s); pause(0.05) fclose(s) dato=strrep(dato,'F',''); daton=str2double(dato); sent=5.0982*(daton^3)-3.3542*(daton^2)+17.09*daton-0.1518; %Perturbacion-------------------------------------------- if (sent >= 60) && (sent<=120) sp2=15; elseif (sent >= 121) && (sent <= 250) sp2=6; elseif (sent>=251) sp2=1; else sp2=sp/2; end; %Filtro---------------------------------------------------- if (sp2 >= sent+20)||(sp2 <= sent-20) sent=sp2; end; %----------------------------------------------------------- %--------------PID------------------ error1=sp2-sent; %dinput=sent-lastsent; %Prop=(kp*error1); Inte=(Io*ki*error1); Io=Inte; Deri=(kd*(error1-error2)/3); %Deri=-1*(kd*(dinput)/3);

Page 21: 92048254 Control Fuzzy PID Angulo Salazar

21

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

%pid=(Prop+Inte+Deri); Deriv=Deri*GCE; lastsent=sent; error2=error1; Integr=Inte*GIE; u=evalfis([error1 Deriv], fismat); out=(u+Integr)*GU; %----Generacion de señal FPD----------------------------- pidc=convergent(sp2*(1+out)); if (pidc >= 49) pidc = sp2; elseif (pidc <= 0) pidc = sp2; end; clc sp sent2=sent*2; disp(' # % Luz Error') tabla(i,1)=i; tabla(i,2)=sent2; tabla(i,3)=error2; disp(tabla) %----------- grafica------------------------------ tgrafy(1,i)=sp; tgrafy(2,i)=tabla(i,2); tgrafx(i)=i; %t=whos('envio'); % Configuraion envio 1----------------------------- set(s,'outputBufferSize',512); %t.bytes fopen(s) fprintf(s,'%s',pidc) pause(0.05) fclose(s) l=l+1; if l==10 cc=input('¿Continuar?: 1/0 --> '); if (cc == 1) sp=0; sp=input('Ingrese % luminocidad: '); sp2=sp/2; % sent=0; % lastsent=0; pidc=sp2; l=0; error1=sp2-sent; error2=0; Io=0; % Deri=0;

Page 22: 92048254 Control Fuzzy PID Angulo Salazar

22

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

elseif (cc == 0) break; end; end; plot(tgrafx,tgrafy) title('Respuesta del Sistema') xlabel('Iteracion') ylabel('Respuesta') AXIS([0 i 0 100]) end

7.7 Reglas y rangos de fuzzyficación del error

o Rangos del error El rango intermedio es más pequeño para que se pueda obtener una mejor respuesta para un error de 0.

Fig9. Fuzzificación de la variable de error

Page 23: 92048254 Control Fuzzy PID Angulo Salazar

23

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

o Rangos del cambio de error

Fig10. Fuzzificación de la variable cambio de error

o Rangos de variable de salida El rango de valor de cero es más pequeño para que se pueda obtener una mejor respuesta.

Fig11. Rangos de Salida

Page 24: 92048254 Control Fuzzy PID Angulo Salazar

24

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

De igual manera para el labview se realizó la fuzzificación con las mismas reglas y rangos con la ayuda de una herramienta de este programa que permite crear el archivo fuzzy .fs.

Fig12. Superficie obtenida de la fuzzificación

7.8 Controladores en Labview

Como trabajo adicional se realizaron los controladores FPD con la derivada del error y el FPD+I para comparar la respuesta respecto a la programación en matlab, debido a que la toma de datos es mejor y más rápida. FPD Las líneas de programación en el matlab se convierten en método gráfico para realizar las operaciones aritméticas y la respectiva conexión con las DAQ para adquirir y generar los datos.

Page 25: 92048254 Control Fuzzy PID Angulo Salazar

25

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig13. Programación en Labview FPD

FPD+I

Esta vez se le agrega a la programación la constante integral con sus respectivas operaciones para el control.

Page 26: 92048254 Control Fuzzy PID Angulo Salazar

26

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig14. Programación en Labview FPD+I

8. RESULTADOS

Se implementó la planta con los circuitos antes mencionados y se realizó la conexión serial para intercambiar los datos entre el programa en el computador (Matlab) y el microcontrolador encargado de manejar la luminosidad de la lámpara. 8.1 Control FPD con derivada en el error

o A continuación se presenta la gráfica de la respuesta de la planta con

el controlador FDP con la derivada del error sin filtro.

Page 27: 92048254 Control Fuzzy PID Angulo Salazar

27

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig.15 Respuesta al controlador FPD con derivada del error sin filtro

o Ahora se puede comparar la respuesta del mismo controlador con filtro. Se puede observar que el filtro es otra manera que ayuda a eliminar el derivate kick.

Fig16. Respuesta de controlador FPD con derivada del error con filtro

Se puede notar la diferencia en la respuesta del controlador el filtro ingresado evita la formación de picos y sobresaltos en la salida.

Page 28: 92048254 Control Fuzzy PID Angulo Salazar

28

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

o Se muestra el resultado de las iteraciones para un control FPD con derivada en el error y con filtro observando la variación del error y porcentaje de luminosidad a la salida del microcontrolador.

Tabla3. Presentación de las iteraciones realizadas en el matlab

Page 29: 92048254 Control Fuzzy PID Angulo Salazar

29

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig17. Control FPD derivada del error y filtro

8.2 Control FPD con derivada a la salida

Otro método con el que realizaron pruebas para observar la respuesta del controlador fue con derivada de la salida, el cual es otra manera de eliminar el derívate kick que se produce sin necesidad de un filtro.

Fig18. Respuesta del controlador FPD con derivada a la salida

Page 30: 92048254 Control Fuzzy PID Angulo Salazar

30

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

8.3 Control FPD+I Se muestra la gráfica para un controlador FPD+I, como se mencionó anteriormente este tipo de controlador tienes las mismas ventajas que un PID sin embargo en este se produce el fenómeno de derívate kick y winup los cuales deben ser eliminados mediantes filtros y establecimiento de límites.

Fig19. Respuesta del control FPD+I

8.4 Control en Labview

Se realizó el controlador en labview como un adicional para la verificación de la respuesta. Las respuestas en el Labview sirvieron como guía para observar la diferencia de operación del controlador de acuerdo al software de programación además de realizarse el control en tiempo real dentro de un entorno gráfico. Se observa que el tiempo de estabilización del sistema está bordeando los valores de 3 a 4s.

Page 31: 92048254 Control Fuzzy PID Angulo Salazar

31

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig20. Control FPD en labview

Page 32: 92048254 Control Fuzzy PID Angulo Salazar

32

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca

Fig21. Control FPD+I en labview

9. CONCLUSIONES Y RECOMENDACIONES

- El uso de un controlador FPD+I ofrece todas las ventajas de los controladores anteriormente citados sin embargo, la aplicación del criterio para usar cada una de las configuraciones depende el sistema a ser aplicado.

- Tal como se mostró en la figura 7, la respuesta real del sistema ofrece tiempos de estabilización demasiado altos, además de un overshoot considerable, en el estudio anteriormente realizado "Control PID de la luminosidad de una lámpara de LEDs referenciado a una LDR", sirviéndose de las constantes obtenidas, se produjo un refinamiento de las mismas para adecuar la planta de modo más efectivo, figura 8; ahora con la implementación del controlador fuzzy pd o fuzzy pd+il la refinación de las variables se da de forma automática y el sistema se estabiliza de acuerdo al set point requerido, sin embargo no llega a los tiempos usados con el refinamiento manual.

- El uso de controladores fuzzy no lineales ayudaría a q el sistema no produzca un comportamiento similar a un crisp pid controller, ya que las respuestas se acomodarían mejor al sistema, sin embargo, la respuesta obtenida fue sumamente satisfactoria para esta aplicación, que en este caso utilizó un fuzzificación lineal.

- Es necesario una sintonización previa de las constantes PID antes de la implementación de un controlador de la magnitud de un Fuzzy PD+I, ya que éste es el punto de partida para encontrar las ganancias responsables del controlador [GE, GCE, GIE, GU].

- Es importante conocer posibles rangos de acción del error en el sistema, debido que con esto se pueden setear rangos de acción para las entradas del error y del cambio del error [derivada del error], así como el valor de GE que es asumido dependiendo de los valores anteriores.

10. REFERENCIAS

Tuning of Fuzzy PID Controllers. Jantzen Jan, Technical University of Denmark: Dept of automation. Jantzen Jan. Dessing of fuzzy Controllers, Technical University of Denmark: Dept of automation.

https://docs.google.com/document/edit?id=1Xcu0nYEUPb03MXdxvmewMzF4xxOzPgEfw-gNZkkyrbc&hl=en&pli=1 http://www.dia.uned.es/~fmorilla/MaterialDidactico/El%20controlador%20PID.pdf

Page 33: 92048254 Control Fuzzy PID Angulo Salazar

33

Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial

Karen Nataly Angulo Acunso José Julián Salazar Vaca