1. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Análisis e Implementación de un Control Fuzzy PID de Iluminación usando
Matlab
Miguel Alejandro Ruiz Cruz
Ingeniería Mecatrónica
Escuela Politécnica del Ejercito
miguelalejoruiz@gmail.com
Resumen:
Se implementa un control Fuzzy PID, sobre una planta de iluminación, con el fin de tener un banco de
pruebas, donde se analizaran las diferentes ventajas y desventajas que posee, frente a los controles, difuso y
PID utilizados comúnmente. Se pretende utilizar las ventajas de cada tipo de control para optimizando el
funcionamiento de la planta de iluminación. Para ello se utilizara una LDR como sensor de luz, un circuito de
acondicionamiento, un circuito de control, una matriz de 20 Leds como actuador y la ayuda del software de
Matlab, en donde se encuentra el control. El PIC controla vía
Abstract:
In these project will be implemented, PID and fuzzy controls, in order to evaluate, the different
advantages and disadvantages that each one in the control of lighting. We will identify and tune the
system by different methods, for these is used as light sensor a LDR , a conditioning circuit, a control circuit,
an array of 20 LEDs as an actuator, which change their percentage of lighting using PWM technique and the
help of Matlab software, where is the control.
Introducción:
El control a implementar, debe ser capaz de estabilizar la planta de luz, en el menor tiempo posible con un
error en el estado estacionario nulo, sin presentar sobre picos en todo rango de trabajo, sin importar el tipo
de perturbaciones que se le someta a la planta. Se analizaran las ventajas que posee un controlador Hibrido
frente a los controles difuso y PID. para lo cual se va a utilizar el software Matlab con el fin de programar los
diferentes controles, y visualizar las diferentes graficas de control.
Sensor:
El sensor que se utilizo en la planta de luz fue una LDR (Light Dependent Resistence), dispositivo cuya
resistencia óhmica es una función de la iluminación recibida sobre su superficie (fotorresistencia). La
resistencia óhmica disminuye, a medida de que la iluminación aumenta, sobre la superficie de la LDR.
La dependencia entre resistencia e iluminación es de la forma:
[1]
Las LDR son unos dispositivos sensibles, económicos y fáciles de conseguir, con tiempos de respuesta a
cambios repentinos del nivel luminoso entre las decenas a centenas de milisegundos, sin embargo no es un
sensor lineal, presenta poca estabilidad térmica y problemas de histéresis.
1
2. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Acondicionamiento:
Para poder medir el porcentaje de iluminación de la planta de luz, es necesario convertir los cambios de
resistencia de la LDR a cambios de voltaje por lo cual se utilizara un divisor de voltaje, un circuito operacional
configurado como seguidor con ello logramos que la salida sea la misma tensión que la entrada,
independientemente de la carga que se le acopla. Además se implemento un pasa bajos para eliminar el
ruido presente en nuestro circuito de acondicionamiento, con una frecuencia de corte igual:
Se obtuvo a la salida del circuito de acondicionamiento, un voltaje de 1.4 voltios cuando el actuador se
encontraba a su máximo porcentaje de iluminación, y 5 voltios cuando el actuador se encontraba apagado.
Figura 1: Circuito de acondicionamiento implementado.
Adquisición de datos:
El envió y recepción de datos se realizo por medio de una comunicación serial, por lo cual se escogió el PIC
16F877A, ya que este presenta, entradas analógicas y digitales, conversor análogo/digital, salida de PWM y
comunicación serial.
Cabe recalcar que se utilizo una comunicación maestro-esclavo, siendo el maestro el controlador (Matlab), y
el esclavo el PIC, por lo cual solo cuando el controlador requiera datos, solicita al PIC que se los envié y solo
en este instante se realiza la comunicación.
En este punto es importante destacar que se debe elegir la frecuencia con que se va a adquirir y generar la
muestra de datos. Este factor es muy importante ya que la mala elección de la frecuencia de muestreo podría
conllevar a una mala representación de las señales adquiridas y generadas. La frecuencia de muestreo será 3
veces el tiempo en el que se tarda en realizar todas las instrucciones el procesador, en este caso vendría
hacer el micro controlador. Por lo cual nuestro tiempo de muestreo será de 0.04 segundos
Control PID:
La idea básica de un control PID, es tomar la información, presente, pasada, del sistema y tratar de predecir
su funcionamiento en el futuro, para producir una señal de control, manteniendo a la variable de proceso en
un punto deseado.
La parte proporcional, da una señal de control proporcional al error. (información actual)
La parte integral da una señal de control proporcional al error acumulado (información pasada)
La parte derivativa da una respuesta proporcional a la derivada del error (información futura).
2
3. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Matemáticamente un control PID queda descrito por la siguiente ecuación:
La señal de control es u(t) el error es la diferencia entre la señal de referencia y la salida, e(t)=r(t)-y(t) y Kp, Ki,
Kd son las constantes de control.
Análisis e Implementación del Control P.
La planta de luz, es un sistemas que reacciona muy rápido a cualquier estimulo aplicado, además es muy
sensible ante cualquier tipo de perturbaciones, haciendo esto un sistema difícil de controlar con todas las
condiciones impuestas. Ya que el sistema es de primer orden es suficiente un controlador tipo P, por medio
de su implementación , se mejoran las características en estado transitorio.
Sintonizando la constante proporcional, por diferentes métodos y analizando con cuál de ellas se obtiene un
control de la planta de luz más adecuado se obtuvo una constante proporcional igual a 0.5.
El control con una Kp igual a 0.5, presento buenos resultados en la mayoría de los casos, sin embargo existen
ciertos rangos de operación donde el control presenta sobre picos elevados, o un tiempo de establecimiento
alto.
El control P por sí solo no es capaz de mejorar, los dos parámetros, a la vez, si se mejora el Máximo pico , el
tiempo de establecimiento incrementa, y viceversa, estos dos parámetros son inversamente proporcionales.
Razón por la cual se plantea realizar un control difuso, el cual modifique la constante proporcional, en el
tiempo, mejorando el tiempo de establecimiento y reduciendo los sobre picos.
Control Difuso.
En un sistema difuso, el valor de entrada real (proveniente de sensores) es convertido a un valor difuso vía el
proceso de Fusificación, este valor es enseguida introducido al proceso lógico difuso comúnmente llamado
3
4. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Mecanismo de inferencia, en donde es continuamente evaluado en un conjunto de reglas, en donde se
encuentra el conocimiento del experto en el sistema, este proceso genera un valor de salida difuso, el cual es
transformado a un valor de salida real a través del proceso de Defusificación. La estructura básica de un
Sistema de Lógica Difusa se muestra a continuación.
Figura 9: Bloques del control difuso.
Métodos de Defusificación.
Para obtener a partir del conjunto difuso de salida, que resulta la agregación de todas las reglas, un resultado
escalar, se aplican métodos matemáticos, que son: método del máximo, método del centroide y método de
la altura. Se utilizo el método del centroide ya métodos usualmente llevan a señales de salida continuas, esto
quiere decir que no hay saltos bruscos con un cambio pequeño a la entrada, además este método es usado
generalmente en las aplicaciones de control en lazo cerrado.
Tipos de Controladores Difusos.
Los controladores difusos se pueden clasificar en dos tipos: Controlador tipo Takagi-Sugeno y controlador
tipo Mamdami. Para el diseño de un controlador tipo Takagi-Sugeno se necesita un conocimiento
cuantitativo de la planta, en cambio para el tipo Mamdami no se necesita sino un conocimiento mucho más
empírico. Es por esta razón que se utilizo un controlador tipo Mandami, ya que no se presenta un
conocimiento cuantitativo de la planta de luz.
Análisis e Implementación del Control Difuso.
La adecuada implementación de un control difuso, se encuentra en el conocimiento que se tenga sobre el
sistema a controlar, por lo cual se estudio como responde la planta de luz en las diferentes condiciones. Con
lo cual se observo que el sistema no entrega un dato fijo a la entrada del controlador, por lo cual se decidió
obviar un rango de error ocasionado, por ruidos. Es por ello que el control difuso propone control más
estable, en menor tiempo, pero con un error en estado estacionario mayor.
4
5. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Como se puede observar en la grafica, el control llega a estabilizarse mas rápido sin sobre picos sin embargo
el erro en estado estacionario es mayor que el control P implementado.
Análisis e Implementación del Control Difuso P.
El control P no es suficiente para controlar los Máximos Picos y presentar el mismo tiempo de estabilización,
y el control difuso presenta un error en estado estacionario muy alto, es por ello que es necesario la
implementación de un Control Difuso, el cual va a controlar la constante proporcional del control P, para que
el sistema de iluminación llegue a tener una respuesta en lo posible sin Sobre picos y lo más rápida posible.
Además ya que el sistema no entrega un dato fijo a la entrada del controlador, ocasionando errores en la
parte estacionaria, razón por la cual se decidió que el control difuso de una constante proporcional de cero
cuando el sistema se encuentre en el estado estacionario, donde el control P no daba respuestas adecuadas
por la presencia de ruido. Obteniendo de esta manera un control más regular
El control se realizara, mediante un control difuso, el cual presente, como entradas el punto de referencia del
sistema, y el error del sistema, dando como salida una constante proporcional adecuada, para que el
controlador P, de como resultado una respuesta satisfactoria en todo el rango de funcionamiento del
sistema.
Pasos del Control difuso.
Identificación de las Variables lingüísticas y de términos Lingüísticas.
Una variable lingüística es aquella que puede tomar por valor términos del lenguaje natural en el caso del
problema planteado nuestras variables serán Personas, Error etc. Además contiene una colección de
atributos representados por un conjunto difuso. Estos atributos reciben el nombre de Términos Lingüísticos.
Estos términos lingüísticos vienen a constituirse en las funciones de membresía de una variable lingüística.
Tabla 1: Descripción de las variables lingüísticas.
5
6. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Variable Lingüística Set Iluminación Error Kp
Muy Bajo Cero Cero
Bajo Muy bajo Muy bajo
Términos
Medio Bajo Bajo
Lingüísticos
Alto Medio Medio
Muy alto Alto Alto
Fusificación.
Figura 10: Funciones de membrecías, Fusificación de variables.
Base de Conocimientos
Tabla 2: Tabla FAN para la implementación del control difuso
Set
Kp Muy bajo Bajo Medio Alto Muy Alto
Cero Cero Cero Cero Cero Cero
Error
Medio Bajo Medio Bajo Medio Bajo Medio Bajo Medio Bajo Medio Bajo
Bajo Medio Bajo Bajo Bajo Medio Medio
Medio Bajo Medio Medio Medio Alto
Alto Medio Medio Medio Alto Alto
6
7. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Motor de Inferencia:
Figura 11: Reglas del funcionamiento de la planta de luz
Defusificación.
Figura 12: Defusificación de las variables.
Resultados obtenidos del Control Difuso:
7
8. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
Figura 13: Respuesta del control difuso a una entrada escalón.
Figura 14: Respuesta del control Difuso a perturbaciones:
Análisis de Resultados.
Los controladores P y Difuso, presentaron resultados aceptables, con tiempos de establecimientos
alrededor de los 0.3 segundos, además presentaron una buena respuesta bajo perturbaciones, llegando
los dos a estabilizarse en menos de 0.5 segundos después de ellas.
El control difuso aunque no reduce, el error en estado estacionario, presentaba un control más
uniforme, y no tan oscilatorio como el control P.
El control difuso, no presenta ningún sobre pico, cuando alcanza el punto deseado, a diferencia del
controlador P, sin embargo el error en estado estacionario es considerablemente mayor, presentando
un error en estado estacionario de hasta el 11%, a diferencia del control P el cual es del 2%.
Con el control Difuso P, se obtuvieron menores de sobre picos, obteniendo un máximo sobre pico del
7.25%, además el error en estado estacionario fue igual que el control P, lo cual indica que presenta
gran exactitud a diferencia del control difuso, además los tiempos de establecimientos, en promedio
fueron mejores que los controles Difuso y P.
Referenci Mp [%] ts[s] ess[%]
a [%] P Difuso Difuso P P Difuso Difuso P P Difuso Difuso P
10 8.2 0 0 0.4 0.35 0.21 2 NA 2
20 41 0 0 0.19 0.4 0.35 2 11.1 2
8
9. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
30 0 0 0 0.15 0.38 0.32 2 NA 2
40 0 0 0 0.15 0.37 0.21 2 9.24 2
50 0 0 0 0.17 0.3 0.2 2 NA 2
60 0 0 0 0.17 0.37 0.18 2 7.65 2
70 4.9 0 0 0.16 0.4 0.12 2 NA 2
80 0 0 0 0.19 0.14 0.17 2 5.76 2
90 0 0 0 0.24 0.1 0.12 2 NA 2
Se logro omitir el control, en el estado estacionario, cuando existe la presencia de señales erradas al
ingreso del (Matlab). Manteniendo el mismo control con rangos de errores bajos, Estas señales
pueden ocurrir por la presencia de ruidos, por que el microntrolador no envía datos fijos a la planta,
y por la pérdida de datos en la comunicación serial.
Se presento mejores resultados cuando se realizo el controlador en una función de Matlab, que
realizar el control desde el modo grafico, ya que en el modo grafico el tiempo de procesamiento de
datos aumenta de 5 a 10 veces.
Conclusiones.
El controlador difuso es fácil de implementar, ya que para ello solo se necesita tener conocimiento del
comportamiento de la planta, y de las condiciones de control, en cambio para poder implementar un
controlador PID, además de conocer el comportamiento de la planta, se necesita sacar un modelo
lineal, identificar el tipo de planta y calcular las constantes de control.
El tiempo de muestreo es el factor más importante para que los dos controladores den los resultados
deseados, para es recomendable calcular el tiempo que tarda el microcontrolador al ejecutar su
programa, y multiplicarlo por tres, y este será el tiempo de muestro, además se recomienda para
sistemas de respuestas rápidas, optimizar el programa del microcontrolador, con el fin de disminuir el
tiempo de muestreo. El tiempo de muestreo utilizado es de 0.04 segundos.
El control Difuso P mejoro considerablemente la respuesta de la planta de luz, obteniendo sobre picos
de hasta el 7%, y se redujo considerablemente el tiempo de estabilización en un 10% al del control P.
El control Difuso P, logro presentar un control más estable, en el estado estacionario, evitando las
señales erradas enviadas por el microcontrolador.
Aunque se realizo un filtro pasa bajos, y se utilizo un seguidor de voltaje no se alcanzaron los
resultados esperados, observándose variaciones de señal, aun cuando la señal de control no variaba,
razón por la cual el control se decidió no cambiar la señal de control cuando el error es muy bajo,
obteniéndo un control más estable.
Referencias:
Rojas, Sistemas Difusos & MatLab, 2010.
http://www.dia.uned.es/~Rojas/.../Sistema%20Difuso%20MatLab.pdf
L. Reznik, Fuzzy Controllers, Victoria University of Technology,Melbourne, Australia,
1997.
R. Rocafuerte, Teoría de Control Difuso,Universidad del Distrito, México, 2009.
http://www.udm.mx/controladorfuzzy&source=web &cd.pdf
9
10. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
K. Passino, S. Yurkovich, Fuzzy Control,Department of Electrical Engineering
Addison-Wesley, 1998.
Introduction to Fuzzy Logic using MatLab. Sivanandam Sumathi and Deepa.
Anexos:
Programa de control realizado en Matlab.
%Limpia los valores de las variables
clear all
clear LUMENES;
clear tiempo;
clear VOLTAJE
clear luxes
clear LUX
clear Set_point
clear Error
%Verifica si existe un instrumento conectado
PS=instrfind;
if PS~=isempty(PS)
fclose(PS);
delete(PS);
clear PS;
end
%Incializacion del puerto serial
PS=serial('COM3'); % puerto serial utilizado
%Configuracion del puerto serial
set(PS,'Baudrate',9600); % se configura la velocidad a 9600 Baudios
set(PS,'StopBits',1); % se configura bit de parada a uno
set(PS,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8
set(PS,'Parity','none'); % se configura sin paridad
set(PS,'Terminator','CR/LF'); % “c” caracter con que finaliza el envío
set(PS,'OutputBufferSize',1); % ”n” es el número de bytes a enviar
set(PS,'InputBufferSize' ,1); % ”n” es el número de bytes a recibir
set(PS,'Timeout',5); % 5 segundos de tiempo de espera
%Apertura del puerto serial
fopen(PS);
%Declaracion de variables
cont=1;
aux=1;
T=0.04;
%Limites
min=1;
10
11. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
max=100;
%Set point inicial
sp_ing=40;
TIEMPO=0;
sp=sp_ing
envio=0;
Error(1)=0;
control(1)=0;
VOLTAJE(1)=0;
LUX(1)=0;
%Control Difuso P
while (aux<50)
aux=aux+1;
%Lectura del archivo FIS
salida=readfis('fuzzyeset4');
%Escritura de la senal de control
fwrite(PS,envio);
pause(0.03)
%Lectura del puerto
VOLTAJE(aux)=fread(PS)
%Relacion voltaje luminosidad
Luxes_actual= (-0.00003958*(VOLTAJE(aux))^3 +0.02374*(VOLTAJE(aux))^2 -
4.859*(VOLTAJE(aux)) +351);
% Matrices de las variables a graficar
LUX(aux)=Luxes_actual;
tiempo(aux)=TIEMPO;
TIEMPO=aux*T;
Set_point(aux)=sp_ing;
error=sp-LUX(aux);
error1=error;
Error(aux)=error;
if (error1>100)
error1=100;
end
%Evalua el archivo FIS, Control FUZZY
Kp=evalfis([abs(error1) sp_ing ],salida);
%Control P
p=Kp*error;
cont=cont+1;
control(cont)=control(cont-1)+p;
%Saturador
if (control(cont)>max)
control(cont)=max;
elseif (control(cont)<min)
control(cont)=min;
end
%Asignacion de variables
controld(aux)=control(cont);
envio=control(cont);
11
12. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
%Graficas
subplot(2,1,2);plot(tiempo,controld)
title('VOLTAJE vs Tiempo')
limitemax=TIEMPO;
AXIS([0 limitemax 0 240])
subplot(2,1,1); plot(tiempo,LUX,'b')
hold on
subplot(2,1,1); plot(tiempo,Set_point,'r')
limitemax=TIEMPO;
AXIS([0 limitemax 0 110])
title('Luxes vs tiempo')
end;
%Finaliza la comunicacion
fclose(PS);
delete(PS);
clear PS;
Programa del microcontrolador
program p
'Declaracion de variables
dim current_duty as byte
dim ent_analogica as float
dim enviar as byte
'Sub proceso de inicio
sub procedure InitMain()
ADCON1=128 'Configuracion de las entradas analogicas
TRISA = 255 'COnfiguracion del puerto a como entrada
PWM1_Init(1300) 'Incia PWM a 1.3kHz
end sub
main:
'Prgrama Principal
InitMain()
'Incia la comunicacion serial
UART1_Init(9600)
delay_ms(100)
'Ciclo de trabajo
current_duty= 0
PWM1_Start() 'Incia el PWM
PWM1_Set_Duty(current_duty)
inicio: 'Inicia el ciclo
if (UART1_Data_Ready() <> 0) then ' Si el dato es recivido escribe
current_duty = UART1_Read() ' lectura del dato
PWM1_Set_Duty(current_duty*2.55)
delay_ms(10)
12
13. Análisis e Implementación de un Control Fuzzy PID de Iluminación usando Matlab 2012
ent_analogica = 255*(ADC_Read(0)/1023) Lectura del dato analogico
enviar=ent_analogica
UART1_Write(enviar) ' Envio del dato
end if
goto inicio 'Vuelve a inicio
end.
Control en Modo Grafico.
Diseño del circuito impreso del Acondicionamiento.
Diseño del circuito impreso de la adquisicion, y envio de datos.
13