Escolar Documentos
Profissional Documentos
Cultura Documentos
1. RESUMEN
En el presente artculo se describe la forma de disear e implementar un controlador PID para una planta de posicin angular, con la ayuda de MATLAB, este sistema consta de una entrada que es el set point (ngulo deseado), en donde dependiendo del ngulo deseado se realizar un controlador que regule un pwm; el mismo que haga variar la cantidad de voltaje suministrada al ventilador.
3. PALABRAS CLAVES
Comunicacin Serial, PWM, PID, Matlab, Set point, Error.
4. INTRODUCCIN
4.1 Objetivo General: Disear e implementar un sistema de control de posicin angular, utilizando el entorno de MATLAB y con la ayuda de otro software como el MIKROBASIC para la programacin del Pic 16F877A. 4.2 Objetivos Especficos: Implementar la planta de control de posicin angular. Reconocer y Analizar el sistema. Disear y desarrollar un programa que realice el controlador PID para la planta la cual se le puedan variar arbitrariamente sus constantes proporcionales, integrales y derivativas, para poder comprobar en forma real el comportamiento del sistema. Estabilizar la planta lo ms rpido que sea posible probando los diferentes constantes.
2. ABSTRACT
This article describes how to design and implement a PID controller for a plant angular position with the help of MATLAB, this system consists of an input that is the set point (desired angle), where depending on the desired angle will be a PWM controller regulating one, the same amount that varies the voltage supplied to the fan.
5. GENERALIDADES
5.1 PID: uno de los controladores frecuentemente usados en la industria de procesos. En un controlador PID la variable de control se genera por trminos proporcional al error, proporcional a la integral del error y proporcional a la derivada del error.
presin, temperatura, etc.). Tambin se denomina variable controlada. [1] 5.4 Tiempo de crecimiento (rise time): tr es el tiempo que toma el sistema para alcanzar la vecindad de su nuevo set-point. [1]. 5.5 Fenmeno wind-up: cuando un actuador produce una saturacin surge un salto brusco, adems de que la saturacin rompe el lazo de realimentacin, ya que el nico valor que proporciona ser una constante. A este fenmeno se le llama wind-up. Para evitarlo puede hacerse lo siguiente: Si el PID est implementado en cdigo, no mediante un circuito analgico, es posible realizar una integracin condicionada, es decir, solo se integra mientras no se alcance la saturacin. Tambin es relativamente facil asegurar por software que no se exigen cambios de referencia demasiado bruscos, que son los que provocan fcilmente la saturacin de los actuadores. [3] 5.6 Tiempo de establecimiento (settling time): ts es el tiempo que toma el sistema para que el transitorio decaiga. [1] 5.7 Tiempo del pico (peak time): tp es el tiempo que toma el sistema para alcanzar el mximo valor (el sobrepico). [1] 5.8 Seal de referencia: es el valor que se desea que alcance la seal. [1] 5.9 Error: es la diferencia entre la seal de referencia y la seal de salida real. [1]
Figura 1: Diagrama de Bloques de un controlador PID La figura 1 muestra el diagrama de bloques de un clsico controlador PID en tiempo continuo. Sintonizar el controlador involucra ajustar los parmetros Kp, Ki y Kd para obtener una respuesta satisfactoria. Las caractersticas de un controlador PID son bien conocidas y establecidas, y la mayora de de los controladores modernos estn basadas sobre formas PID. [1] 5.2 Sobrepico (overshoot:) Mp es la cantidad mxima que el sistema se sobrepasa en el transitorio su valor final dividido ese valor final (frecuentemente se lo da en porcentaje). [1]
principio se intent hacerle de madera pero tras pruebas realizadas con el ventilador resultaba muy pesado as que se opt por ponerle un plato pequeo desechable En anexos se adjunta los planos de la planta en Solid works.
Figura 2: PLANTA
6.3 Circuito de potencia Se realiz un circuito de potencia para el ventilador usando un optoacoplador.
6.2 Diseo fsico de la planta Primero se hizo un diseo en Solid Works de la planta con las medidas exactas de los ejes, soportes para el potencimetro. Los ejes se fabricaron de balsa debido a su peso liviano, y de madera los soportes y base. El perfil naca como se observa en los planos en un
6.5 Comunicacin Serial Por lo que para realizar nuestro controlador utilizamos la herramienta MATLAB se requiere mantener una comunicacin entre la computadora y la planta por lo que se realiz una comunicacin serial. Se us el protocolo RS-232, enviamos un dato (set point) por la computadora a la planta, esta informacin llega en forma de bytes y la transmite de la misma manera a la computadora, recibe y procesa el dato y nuevamente transmite el dato a la planta para esto utilizamos un conector DB9.
Figura 8: Identificacin del Sistema Figura 11: Respuesta del sistema al regreso 3
10.
RESULTADOS
A continuacin se observarn las grficas de la respuesta del sistemas para valores de ngulos bajos, medios y altos. Bajo ngulo de 5 grados
10.2
Perturbaciones
Es muy necesario en el circuito implementar un LCD para verificar mediante el Dutty (ciclo til de trabajo del PWM) si hay sintona o comunicacin entre la computadora y el hardaware.
2. Integral: porque tengo un error en estado estacionario que hay q reducirlo, esta constante es muy pequea ya que si fuese un valor grande le hace lento a mi sistema. 3. Derivativo: esta constante nos ayud a hacerle mas rpido al retorno ya que en un principio se obtenan respuestas muy lentas. Como se puede observar en las grficas de resultados se obtuvo una mejor respuesta del controlador en rangos bajos y medios, el tiempo de respuesta es inmediata mientras que para valores altos la respuesta no era tan rpida, se hizo pruebas variando los valores de las constantes pero esta variacin perjudicaba de gran manera la respuesta para los valores bajos y medios. Es indispensable tener una planta fsica estable y un buen circuito para facilitar el diseo de los controladores.
12.
RESUMEN
En el presente artculo se describe la forma de disear e implementar un controlador FUZZY (lgica difusa) para una planta de posicin angular, con la ayuda de MATLAB, se realiza un control Fuzzy en donde dependiendo del ngulo deseado se realizar un controlador que regule un pwm; el mismo que haga variar la cantidad de voltaje suministrada al ventilador.
15.2 Objetivos Especficos: Reconocer y Analizar la Planta. Desarrollar un programa que realice el control lgico difuso a travs de la herramienta de MATLAB. Estabilizar la planta lo ms rpido que sea posible.
13.
ABSTRACT
16.
GENERALIDADES
This article describes how to design and implement a fuzzy controller (fuzzy logic) for a plant of angular position, with the help of MATLAB, Fuzzy control is performed depending on the angle where desired will be a controller that regulates a pwm; the same amount that varies the voltage supplied to the fan.
El funcionamiento general de un controlador fuzzy es igual que otros controladores, toman los valores de las variables de entrada del sistema, y segn ciertas reglas, o condiciones, que nosotros imponemos, deciden como modificar las variables de salida, afectando el comportamiento de la planta. Este sistema basado en reglas en el control fuzzy, es de la siguiente manera:
14.
PALABRAS CLAVES
El problema de utilizar la lgica difusa, es la complejidad de representar el conocimiento en estas reglas, muchas veces esbozamos reglas con calificativos no demasiado precisos.
Comunicacin Serial, PWM, Fuzzy, Matlab, Funcin de Membresa, Set point, Error.
15.
INTRODUCCIN
6.6 Seal de control: es la seal que produce el controlador para modificar la variable controlada de tal forma que se disminuya, o elimine, el error. [1] 6.7 Seal anloga: es una seal continua en el tiempo. [1] 6.8 Planta: es el elemento fsico que se desea controlar. Planta puede ser: un foco, un motor, un horno, un sistema de disparo, un sistema de navegacin, un tanque de combustible, etc. [1]
17.
CONTROL FUZZY
Para nuestro controlador realizamos 5 fuzzys en cascada en el primero tenemos como variable de entrada el ngulo muy bajo, el segundo el ngulo bajo, en el tercero el ngulo medio, el cuarto el ngulo alto y el quinto el ngulo muy alto. Cada uno de ellos tendr la misma salida que ser el PWM. Para nuestro proceso se lo realizo de forma cclica que puede ser dividida en tres grupos, de la siguiente manera.
Fuzzification
Defuzzification
Evaluacin de Reglas
7.1 Fuzzification Esta es la primera parte del proceso, se procede a determinar el grado de pertenencia de las variables de entrada y salida estos son los denominados fuzzy inputs y fuzzy outputs.
10
mp(muy pequeo), p(pequeo), m(medio), g(grande), mg(muy grande). Los rangos para cada funcin de membresa se obtuvieron experimentalmente considerando la respuesta de la variacin angular dependiendo del ciclo de trabajo enviado.
Para los 5 fuzzys la variable ngulo la hemos determinado 5 grupos de pertenencia: mb(muy bajo), b(bajo), m(medio), a(alto), ma(muy alto). Los rangos para cada funcin de membresa se obtuvieron experimentalmente variando el ngulo y verificando la respuesta en el sensor que en nuestro caso es el potencimetro.
7.2 Evaluacin de reglas Una vez realizada la fuzzificacion, se est en condiciones de evaluar en qu condicin se encuentra nuestro sistema, se obtiene el grado de verdad o peso para estas condiciones. El peso de la regla estar dado, entonces, por la veracidad de sus antecedentes. Para el primer fuzzy las reglas son las siguientes:
11
7.3 Defuzzificacion A cada fuzzy output, se le asign el mximo valor de verdad o peso de las reglas que la mencionan como consecuente. Ahora quedan varias fuzzy outputs para cada variable de salida, cada una con un grado de aplicabilidad, pero; no se conocera el valor de la salida. Entonces, internamente, se realiza un promedio ponderado entre todas las salidas que le corresponden a una variable de salida, considerando las superficies de estas, tomando el centro de gravedad de las mismas como el nuevo valor de la variable de salida en consideracin. 7.4 Control Fuzzy en MATLAB El manejo del control fuzzy utilizando matlab es verdaderamente sencillo. Para determinar las entradas, salidas, reglas y verificar la superficie, colocamos la palabra fuzzy en la pantalla principal de matlab, y se abre la siguiente pantalla:
Figura8. Men Principal del Fuzzy Toolbox, FIS Editor Figura7. Reglas de operacin 5to fuzzy.
12
Figura9. Grafica Desplazamiento angular vs Tiempo (izq), Grafica Control vs Tiempo (der), para un ngulo alto
En la figura anterior, podemos observar que el comportamiento de la planta es muy bueno, ya que el controlador satisface claramente con nuestras expectativas. Posee un tiempo de estabilizacin muy bajo, adems que el sobre impulso generado no es muy alto. Tambin podemos recalcar que no existe un cambio en la seal de control ut al generar un cambio a un ngulo alto, esto nos proporciona un rendimiento ptimo y constante.
En la figura10 podemos observar que la estabilizacin en el setpoint marcado es la correcta, sin la existencia de picos u otras desvariantes.
13
Figura13. Grafica Desplazamiento angular vs Tiempo (izq), Grafica Control vs Tiempo (der), para un ngulo medio
Figura11. Grafica Desplazamiento angular vs Tiempo (izq), Grafica Control vs Tiempo (der), para un ngulo bajo
En la figura13 podemos observar que al existir una perturbacin, en este caso aumentar el desplazamiento angular, el valor del PWM se incrementa rpidamente y se adapta al valor necesario, llegando a estabilizarse como se muestra en la figura14.
En la grfica anterior podemos observar que al existir una perturbacin, en este caso menor desplazamiento angular el valor que genera la seal de control reduce el valor del PWM rpidamente y se adapta al valor necesario para que cumpla con las condiciones dadas.
Figura14. Grafica Desplazamiento angular vs Tiempo para un ngulo medio
Podemos concluir, que el control difuso es de fcil implementacin, gran rapidez de respuesta, sistema inteligente y con un error muy bajo.
19.
CONCLUSIONES
El control se basa en la implementacin de 5 fuzzys tipo SISO(una entrada una salida), en todos ellos la entrada es el desplazamiento angular y la salida es el pwm. Se realiz 5 fuzzys debido a que al realizar solo uno, el controlador solamente controlaba con precisin los valores de ngulos medios, para mejorarlo y no tener problemas en un futuro, se opt por realizar los 5 y que cada uno este corresponda a un determinado rango de valores del ngulo a controlar.
14
casi en su totalidad el overshoot generado por el controlador PID. Para que el controlador PID este en optimas condiciones haba que sintonizar y calibrar sus constantes, mientras que en el controlador Fuzzy se necesitaba aplicar funciones de membresa con un rango de operacin adecuado al sistema.
1. ANEXOS
ANEXO A Cdigo utilizado en MATLAB para realizar el controlador Fuzzy.
function varargout = control_fuzzy_pos_angular(varargi n) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', ... gui_Singleton,
15
'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function control_fuzzy_pos_angular_Opening Fcn(hObject, eventdata, handles, varargin) guidata(hObject, handles); function varargout = control_fuzzy_pos_angular_OutputF cn(hObject, eventdata, handles) % varargout{1} = handles.output; axes(handles.logo_espe) background = imread('espe_logo.jpg'); axis off; imshow(background); axes(handles.logo_mct) background = imread('logo_mct.jpg'); axis off; imshow(background); axes(handles.graf_planta) background = imread('planta.jpg'); axis off; imshow(background);
% Funcin principal que se ejecuta al presionar el cono de inicio function play_ClickedCallback(hObject, eventdata, handles) %% Configuracin PUERTO SERIAL PS=instrfind; if PS~=isempty(PS) fclose(PS); delete(PS); clear PS; end PS = serial('COM11','BaudRate',9600,'D ataBits',8,'Parity','none','StopB its',1); fopen(PS); %% Inicializacin de variables globales muestra=0; control=0; DESP_ANG=[]; TIEMPO=[]; SET=[]; ERROR=[]; SENCONTROL=[]; time=0; limitemin=0; limitemax=0; ut=0;
%% Adquisicin de datos y algoritmo de control while(1) muestra=muestra+1; time=muestra*0.3; lectura=fread(PS,1, 'char')/50; % Lectura de datos mediante el puerto SERIAL
16
limitemax=time; if limitemax>15 limitemin=limitemaxelse limitemin=0; end axes(handles.axes1) % Eleccin del TAG para graficar DESPLAZAMIENTO ANGULAR VS. TIEMPO plot(TIEMPO,DESP_ANG,'LineWidth', 3) axis([limitemin limitemax 0 70]) title('DESPLAZAMIENTO ANGULAR VS. TIEMPO'); xlabel('Tiempo [s]'); ylabel('Desplazamiento Angular []'); grid on axes(handles.axes2) % Eleccin del TAG para graficar SEAL DE CONTROL VS. TIEMPO plot(TIEMPO,SENCONTROL,'m','LineW idth',3) title('SEAL DE CONTROL VS. TIEMPO'); axis([limitemin limitemax -5 105]) xlabel('Tiempo [s]'); ylabel('Control [ut]'); grid on pause(0.05) % Tiempo de muestreo end function pausa_ClickedCallback(hObject, eventdata, handles) % Funcin para el botn de pausa pausa=get(handles.pausa,'State'); % Lectura del estado del botn PAUSA if strcmp(pausa,'on')% Comparacin del estado del botn PAUSA
17
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate logo_mct % Funcin para el botn CERRAR function stop_ClickedCallback(hObject, eventdata, handles) opc=questdlg('Desea cerrar la interfaz de control?','CERRAR INTERFAZ DE CONTROL','Si','No','No'); if strcmp(opc, 'No') return; else clear,clc,close all end function reset_ClickedCallback(hObject, eventdata, handles) opc=questdlg('Desea reiniciar la interfaz de control?','REINICIO INTERFAZ DE CONTROL','Si','No','No'); if strcmp(opc, 'No') return; end handles.processsDataCompleted = 0; cla(handles.axes1,'reset'); cla(handles.axes2,'reset'); cla(handles.axes3,'reset'); cla(handles.axes1,'logo_espe'); cla(handles.axes2,'logo_mct'); cla(handles.axes3,'graf_planta'); set(handles.play,'State','off') guidata(hObject,handles) % --- Executes on button press in r_muybajo.
18
set(handles.opcion,'String',6); guidata(hObject,handles)
% --- Executes on button press in r_bajo. function r_bajo_Callback(hObject, eventdata, handles) set(handles.opcion,'String',2); guidata(hObject,handles)
ANEXO B Cdigo utilizado en el micro controlador 16F877A. program potencia_ventilador const volt_ref = 5 const character as byte[8] = (14,17,17,14,0,0,0,0) dim volt, grados, porcentaje as float dim vector_volt as float[10] dim txt1 as string [3] dim txt2,txt3, txt4 as string [7] dim dato_enviar, control as word dim envio, duty as byte dim cont, gradosint as integer dim LCD_RS as sbit at RD0_bit LCD_EN as sbit at RD1_bit LCD_D4 as sbit at RD2_bit LCD_D5 as sbit at RD3_bit LCD_D6 as sbit at RD4_bit LCD_D7 as sbit at RD5_bit LCD_RS_Direction as sbit at TRISD0_bit LCD_EN_Direction as sbit at TRISD1_bit LCD_D4_Direction as sbit at TRISD2_bit LCD_D5_Direction as sbit at TRISD3_bit LCD_D6_Direction as sbit at TRISD4_bit LCD_D7_Direction as sbit at TRISD5_bit sub procedure simb_grad(dim pos_row as byte, dim pos_char as byte) dim i as byte Lcd_Cmd(64) for i = 0 to 7 Lcd_Chr_CP(character[i]) next i Lcd_Cmd(_LCD_RETURN_HOME)
% --- Executes on button press in r_medio. function r_medio_Callback(hObject, eventdata, handles) set(handles.opcion,'String',3); guidata(hObject,handles)
% --- Executes on button press in r_alto. function r_alto_Callback(hObject, eventdata, handles) set(handles.opcion,'String',4); guidata(hObject,handles)
% --- Executes on button press in r_muyalto. function r_muyalto_Callback(hObject, eventdata, handles) set(handles.opcion,'String',5); guidata(hObject,handles)
19
TRISC.4 = 0 PORTC.4 = 0 TRISC.5 = 0 PORTC.5 = 0 TRISB.7 = 0 PORTB.7 = 0 control = 0 volt = 0 Iniciar_Lcd Lcd_Out(1,1,"V:") Lcd_Out(1,7,"[V]") Lcd_Out(1,10,"A:") Lcd_Out(2,1,"D:") Lcd_Out(2,8,"P:") simb_grad(1,16) UART1_Init(9600) PWM1_Init(2500) PWM1_Start() while true salida_datos entrada_datos PORTB.7 = not(PORTB.7) Delay_Ms(250) wend end.
20