33
  1 Control Fuzzy PID en una planta de luminosidad en Matlab mediante comunicación Serial  Karen Nataly Angulo Acuns o  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.

Control Fuzzy PID Angulo_Salazar

Embed Size (px)

Citation preview

Page 1: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 1/33

 

 1Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 2/33

 

 2Control 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.  GENERALIDADES6.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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 3/33

 

 3Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 4/33

 

 4Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 5/33

 

 5Control 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 circuitoPara el diseño de la planta se estableció el funcionamiento de acuerdo al control que se

desea realizar.

Page 6: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 6/33

 

 6Control 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 deacuerdo a la luminosidad que sensa.

7.2 Implementación del circuitoPara realizar el circuito se deben establecer el acondicionamiento de las señales para el 

 funcionamiento de los componentes.

Divisor de VoltajeEl 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 voltajede 0-3.5V que será la variable de entrada al controlador 

PWMEl 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 7/33

 

 7Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 8/33

 

 8Control 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 PWMDebido 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 9/33

 

 9Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 10/33

 

 10Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 11/33

 

 11Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 12/33

 

 12Control 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álculosSe 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 13/33

 

 13Control 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 BigPS: 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 14/33

 

 14Control 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'  ,'no

ne'  ,'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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 15/33

 

 15Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 16/33

 

 16Control 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 paraanalizar 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 17/33

 

 17Control 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'  ,'n

one'  ,'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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 18/33

 

 18Control 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  ;

clcsp

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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 19/33

 

 19Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 20/33

 

 20Control 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'  ,'ti 

meout'  ,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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 21/33

 

 21Control 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==10cc=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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 22/33

 

 22Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 23/33

 

 23Control 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 salidaEl rango de valor de cero es más pequeño para que se pueda obtener 

una mejor respuesta.

Fig11. Rangos de Salida

Page 24: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 24/33

 

 24Control 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.

FPDLas 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 25/33

 

 25Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 26/33

 

 26Control 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ó laconexió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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 27/33

 

 27Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 28/33

 

 28Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 29/33

 

 29Control 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 salidaOtro 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 30/33

 

 30Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 31/33

 

 31Control 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: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 32/33

 

 32Control 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. REFERENCIASTuning 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=1Xcu0nYEUPb03MXdxvmewMzF4xxOzP

gEfw-gNZkkyrbc&hl=en&pli=1 

http://www.dia.uned.es/~fmorilla/MaterialDidactico/El%20controlador%20PID.pdf  

Page 33: Control Fuzzy PID Angulo_Salazar

5/17/2018 Control Fuzzy PID Angulo_Salazar - slidepdf.com

http://slidepdf.com/reader/full/control-fuzzy-pid-angulosalazar 33/33

 

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

Karen Nataly Angulo Acunso

 José Julián Salazar Vaca