CONTROLADOR PID Salazar David Universidad de las Fuerzas Armadas ESPE Ingeniera Mecatrnica Quito, Ecuador De la Cueva Christian Universidad de las Fuerzas Armadas ESPE Ingeniera Mecatrnica Quito, Ecuador
En este documento se presenta el desarrollo de un controlador de tipo PID para el control de temperatura de una planta usando un sensor LM35 y una niquelina controlada por ancho de pulso. El modelamiento y control se llev a cabo mediante Arduino. Se presentar los resultados obtenidos con el software Matlab. This paper presents the development of a PI D controller for temperature control of a plant, using a LM35 sensor and controlled niquelina pulse width. Modeling and control are carried out by Arduino. The results obtained with the Matlab software.
I. INTRODUCCIN.- Un controlador es un bloque electrnico encargado de controlar uno o ms procesos. En nuestro caso, el proceso fue la planta de temperatura y esta a su vez fue controlada en primera instancia con el software Matlab y con un controlador PID. La planta a controlar fue una de temperatura, por lo que fue necesario en primera instancia la obtencin de datos, realizada a travs de un programa con comunicacin serial con Arduino, seguido de la utilizacin de la herramienta Ident de Matlab para el modelamiento. La planta fue controlada con un controlador de tipo PID y el software Matlab mediante un programa creado para control. Uno de los parmetros importantes luego del control fue el error, que sin duda tambin fue controlado y cumpla con los rangos permitidos.
Despus se realiz el controlador FUZZY el cual utiliza una metodologa que proporciona una manera simple de obtener una solucin a partir de una entrada ambigua e imprecisa. En general esta lgica es una estrategia de control basada en informacin de forma cualitativa en lugar de hacerlo de forma cuantitativa, lo cual le permite trabajar con datos imprecisos en relacin al controlador PID que trabaja con datos claramente definidos y precisos. Dichas caractersticas han permitido que en ciertas aplicaciones este controlador brinde mejores resultados que estrategias convencionales. Al final de este primer parcial combinamos todo lo anterior y se realiz un controlador PID-FUZZY el cual tiene un tiempo de respuesta muy rpido llevndole mucha ventaja a todos los controladores ya mencionados. II. MTODOS Y MATERIALES Mtodos: Un control de temperatura se lo realiza para variar la temperatura dentro de un espacio cerrado. Mediante pruebas a la planta y ancho de pulso generado por Arduino se tom un promedio de los datos adquiridos y se los proces en Matlab por medio de la herramienta Ident. Materiales: La elaboracin de la planta se bas en la utilizacin de materiales aislantes que no permitan la fcil fuga de calor hacia el exterior, permitiendo que el calor sea conservado para un mejor control, adems se incluy un agitador para homogeneizar la temperatura de la planta. Niquelina de 300 W Sensor LM35 Ventilador (agitador) El circuito de potencia fue realizado en un protoboard y posteriormente en una placa de circuito impreso. Conteniendo los siguientes elementos: Triac BT16A MOC 3041 Resistencias (270 y 330 ohm) La conexin se realiza en forma serial mediante una placa de Arduino.
Ilustracin2.- Construccin de la planta
Ilustracin3.- Construccin de la planta
Ilustracin4.- Referencia circuito de potencia
Ilustracin5.- Implementacin circuito de potencia Interfaz grfica y diagrama de bloques con Matlab Interfaz GUIDE: En la interfaz grfica se coloc los grficos y text box las cuales muestran las seales de control y del error tambin se coloc as como el control PWM.
Ilustracin6.- Interfaz grfica de Matlab GUIDE El diagrama de bloque muestra como estn interconectados los elementos de la interfaz grfica. Controlador PID: Despus de modelada la planta, para la obtencin de constantes proporcional, integral y derivativa se utiliz la herramienta PIDTOOL de Matlab y se encontr los valores: Kp=606960.8519; Ki=7706.4891; Kd=475630.6494;
Ilustracin7.- Valores de Kp, Ki, Kd encontrados con PIDTOOL El cdigo del programa implementado se podr observar en la seccin de Anexos.
Controlador FUZZY: Para el control difuso se procede a definir variables de entrada y salida las mismas que a su vez tienen membrecas y se las dividir con rangos, para al final establecer reglas entre estas. (Ver ilustracin 3 y 4)
Ilustracin8.- Membrecas de la variable de entrada set point
Ilustracin9.- Membrecas de la variable de salida pwm Establecimiento de reglas: Una vez establecidas las funciones de membreca se procede a establecer las reglas del sistema.(Ver ilustracin 6) Las reglas realizadas deben tener relacin de causa y efecto, para el control del alabe se establecieron las siguientes reglas:
Ilustracin10.- Reglas para el control difuso Matlab nos permite evaluar las reglas colocadas de modo que as podemos comprobar lo que nos dar nuestra planta a la salida.
Ilustracin11.- Evaluacin en un setpoint y un valor del sensor Controlador PID-FUZZY En un control PID-FUZZY se realiz ciertos cambios guiados en el paper de Yensheng se pudo determinar las constantes y las variaciones que se deba realizar. El valor de kp lo multiplicbamos por un valor previo y eso ingresaba al .fs para que evale, posteriormente lo sumbamos mas la accin integral y por medio de las frmulas que Yensheng da en su artculo. Los valores de kp y ki tambin fueron los mismos pues nuestra planta fue la misma para todas las prcticas. III. Resultados Control PID: El control se realiz en Matlab con los resultados esperados, el tiempo de establecimiento fue bueno pero con un pequeo sobrepico. El error en estado estacionario fue bueno, siendo ste aproximadamente de 0.5 C.
Ilustracin12.- Grfica de control Control FUZZY: El control de la planta mediante este controlador fue muy aceptable, alcanzando la temperatura ingresada como setpoint de uuna menera rpida con resultados superiores a los alcanzados en el control PID. El resultado en cuanto a sobrepico se corrigi completamente y el error fue muy reducido pues los archivos .fis permiten que no se modele la planta y obtener un valor a la salida con dos o ms valores a la entrada. Control PID FUZZY: Este fue control PID-FUZZY y fue en mejor de todos pues la respuesta a perturbaciones es muy rpida y corrigi los sobrepicos
Ilustracin23.- Grfica de respuesta obtenida
IV. Discusin
El tiempo de muestreo es uno de los factores primordiales, pues si no es elegido de manera adecuada, la planta no se ver reflejada correctamente y los datos que reciba sern muchas veces descartados, interfiriendo en el control. Para disear cualquier controlador primero hay que tener en claro todos los aspectos que componen uno. La adquisicin de datos se realiza de forma serial con ayuda de una placa Arduino, la cual ayuda en la comunicacin con el microprocesador, y optimiza el trabajo pues al ordenador le ayuda con tiempo de comunicacin.
V. Conclusiones
El controlador difuso es muy fcil de implementar, pues nicamente es necesario el conocimiento de las condiciones de control y el comportamiento de la plata. A diferencia de un controlador de tipo PID el cual es necesario conocer el modelo lineal de la plata y sus constantes de control. El modelamiento de nuestra planta de temperatura fue realizada con Matlab, ya que el software nos ofrece la herramienta Ident, la cual nos permite dicho modelamiento de una manera eficaz. El procesamiento de la seal obtenida por el sensor LM35, y la de PWM que activa el encendido/apagado de la niquelina, fueron procesados por una placa de Arduino, para la cual se usaron dos de sus pines; uno para la conversin de anlogo a digital y otra para la salida de ancho de pulso PWM, de esta manera se pudo obtener una rpida respuesta en la planta, controlada desde MATLAB. La programacin del controlador PID fue realizada, de acuerdo al lazo de control que ha sido explicado en clases, demostrando de esta manera que esa es la forma adecuada de realizar un control PID, y como esta programacin el error se lo toma en consideracin de varias maneras, el error que obtenamos en nuestra planta, eran aceptables. La aplicacin GUIDE de MATLAB, nos permite una simulacin en tiempo real, al momento de cambiar los setpoints impuestos. El control ms ptimo fue sin duda el PID-FUZZY pues el tiempo de respuesta fue relativamente pequeo si lo comparamos con los otros controladores.
VI. Fuentes de Informacin Bibliografa
Jhon H. Lilly, Fuzzy Control and Identification, Editorial Wiley, 2010 Yensheng Yang, Control PID_FUZZY Ogata, Sistemas de Control, Controlador PID, BaezLopez David, Matlab con Aplicaiones a la ingeniera fsica y finanzas, Editorial ALFAOMEGA, Primera Edicin,2006. Webgraf URL:www.campusv.uaem.mx/cicos/ memorias/3ercic2004/Articulos/artic ulo3.pdf URL:www.scribd.com/doc/9824079 2/Controlador-Fuzzy-con-matlab URL:www.catarina.udlap.mx/u_dl_a /tales/documentos/lmt/maza_c_ac/ap endiceC.pdf URL:www.politube.upv.es/play.php? vid=6642 URL:www.itescam.edu.mx/principal /sylabus/fpdb/recursos/r36274.PDF URL:www.ftp- urgell.upc.es/Electronica/H.Martinez /Controlador%20PID.pdf m6m5Karb
VII. Anexos Anexo 1.- Cdigo de inicializacin: clc install_arduino %% a_UNO=arduino('COM20') a_UNO.pinMode(9,'OUTPUT') %% Para determinar la planta clc Temp=zeros(3000,1);
a_UNO.analogWrite(9,10); %entrada 10/255
for i=0:1:3000 Temp(i+1,1)=a_UNO.analogRead(0); Temp(i+1,1)=Temp(i+1,1)*5/1023*100; pause (0.4) end Temp
%% Para borrar una conexion serial (Reset) delete(instrfind({'Port'},{'COM20'}))
%% %Planta -0.1762 s + 17.03 G(s)= ---------------------------------- ---- 8.627e005 s^2 + 8.34e007 s + 8.153e004
%tiempo de muestreo i=1; %inicializacion de vectores vector_tiempo=[]; vector_temperatura=[];
setpoint=60; dt=0.1;
while (true) adc=a_UNO.analogRead(0); temperatura=adc*5*100/1023 time=i*dt; vector_tiempo(i)=time; vector_temperatura(i)=temperatura;
error=setpoint-temperatura; integral = integral + .5*error*dt; %0.5 (suele mejorar la respuesta) derivative = (error- error_anterior)/dt; control = Kp*error + Ki*integral + Kd*derivative; error_anterior=error; % Limitando la accion de control para evitar que se dispare el control if control > 50 control=50; end if control < 0 control =0; end
x=round(control); a_UNO.analogWrite(9,x);
pause(dt)
%plot(vector_tiempo,vector_temperatura)
if mod(100,i) integral=0; end
pause(0.1) end
Anexo 3.- Cdigo controlador FUZZY:
function inicio_Callback(hObject, eventdata, handles) a_UNO=arduino('COM7') a_UNO.pinMode(9,'OUTPUT') tiempo_muestreo=0.01; i=1; %inicializacion de vectores tiempo=[]; gtem=[]; n=str2num(get(handles.setpoint,'string')); fuz=readfis('LABO12'); SP=n;