Você está na página 1de 20

AUTOMATIZACIN INDUSTRIAL MECATRNICA CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montao V.

CONTROL PID DE UNA PLANTA DE POSICIN ANGULAR


Alejandro Farinango Pez alfarwa@hotmail.com 0995639164 Ana Montao Vizcano ana_montano228@hotmail.com 0992581399 Estudiantes de la carrera de Ingeniera Mecatrnica de la ESPE

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.

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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]

5.3 Seal de salida: es la variable que se desea controlar (posicin, velocidad,

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


5.10 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] 5.11 Seal anloga: es una seal continua en el tiempo. [1] 5.12 Conversor anlogo/digital: es un dispositivo que convierte una seal analgica en una seal digital (1 y 0). [1]. 5.13 Planta: es el elemento fsico que se desea controlar. [1]

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

6. MATERIALES Y DISEO DE LA PLANTA


6.1 Materiales Software MATLAB instalado en un PC Cable DB9 Resistencias Potencimetro de 10k Capacitores Multmetro PIC 16F877A Fuente de 5VDC y 24 VDC Optoacoplador LCD Ventilador de 24VDC

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

Figura 3: Control Potencia del ventilador

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


6.3 Circuito de lcd, potencimetro, ventilador, PIC

AUTOMATIZACIN INDUSTRIAL MECATRNICA

7. MODELAMIENTO DEL SENSOR (POTENCIMETRO)


Se realiz el modelamiento del potencimetro realizando tomas de datos de la variacin del voltaje con respecto al ngulo, esta toma de datos se la hizo en Excel y se procedi a sacar la ecuacin respectiva del sensor.

Figura 4: Circuito Total

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 6: Toma de datos

Figura 7 Ecuacin del Sensor

8. IDENTIFICACIN DEL SISTEMA


Se realiza una identificacin del sistema antes una respuesta al escaln para ver el rango ptimo de trabajo.

Figura 5: Configuracin Puerto serial - Matlab

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

Figura 8: Identificacin del Sistema Figura 11: Respuesta del sistema al regreso 3

9. DISEO DEL CONTROLADOR


9.1 Algoritmo del controlador en Matlab Una vez ingresadas las variables del controlador en Matlab se procede a programar el controlador.
Figura 9: Respuesta del sistema al regreso 1

Figura 12: Algoritmo Matlab

Figura 10: Respuesta del sistema al regreso 2

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


9.2 Constantes del controlador Para el clculo de las respectivas constantes se utiliz el siguiente mtodo: Por aproximaciones PRUEBA ERROR Basndonos en las constantes que nos di al utilizar la herramienta PIDTOOL de MATLAB pudimos tener una gua para seguir variando las constantes a base del mtodo prueba error, este mtodo result ser el mejor para la seleccin de las constantes de control para nuestra planta. Una vez adquiridas las constantes con el pidtool, basndonos en esos valores y mediante el mtodo de prueba error fuimos variando las constantes kp, kd y ki hasta obtener una buena respuesta del sistema. Finalmente las constantes que se obtuvieron para un buen controlador PID fueron las siguientes: Kp = 1.25 Ki= 0.1 Kd = 1

AUTOMATIZACIN INDUSTRIAL MECATRNICA

Figura 13: GUI de la respuesta del Sistema a 5 grados

Medios ngulo de 23 grados

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

Figura 14: GUI de la respuesta del Sistema a 23 grados

Alto ngulo de 40 grados

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

Figura 17: Respuesta ante perturbaciones en rangos medios

Figura 15: GUI de la respuesta del Sistema a 40 grados

10.2

Perturbaciones

Figura 18: Respuesta ante perturbaciones en rangos bajos

11. ANLISIS Y CONCLUSIONES


Figura 16: Respuesta ante perturbaciones en rangos altos

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.

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


Para evitar los ruidos se implement un filtro pasa bajo , un circuito RC, y capacitores de desacoplo en el microcontrolador. Otra manera en la cual se pudo eliminar el ruido es sacar un promedio de 10 muestras tomadas. Al realizar el modelamiento del sensor nos dimos cuenta que de 0 a 30 grados haba alta impedancia lo q provocaba que exista e ese rango una zona muerta, por lo que se trabaj en el rango de 2V-4V y no de 0V-5V por lo que no fue necesario hacer una amplificacin. Se hizo un control PID por las siguientes razones: 1. Proporcional: ya que siempre necesito una ganancia, la seal de pwm es muy alta asi que necesita ser atenuada, para eso utilizo el proporcional

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

CONTROL FUZZY DE UNA PLANTA DE POSICIN ANGULAR


15.1 Objetivo General: Disear e implementar un controlador Fuzzy para una planta de posicin angular.

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

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


Con respecto a la lgica, se crea nuevas alternativas a la lgica tradicional, tal y como la conocemos. Una proposicin no siempre es verdadera, o falsa; sino que la misma puede tener un grado de veracidad. Observemos que lo descrito anteriormente se basa ms en el comportamiento natural de las personas, y deja de aferrarse a un cierto nmero de ecuaciones y condiciones que usualmente se utilizan en el control 'clsico'. Al utilizar el control fuzzy, observamos que ya no procesamos ecuaciones, nmeros o tablas, sino reglas. De esta manera se puede realizar operaciones entre palabras como, ms bajo, subir un poquito, bajar un poquito, o este tipo de acciones que realizamos los humanos naturalmente para realizar un control. 6.1 Set point: es el valor objetivo que desea alcanzar un sistema de control automtico. [1]. 6.2 Seal de salida: es la variable que se desea controlar (posicin, velocidad, presin, temperatura, etc.). Tambin se denomina variable controlada. [1] 6.3 Funcin de Membresa: la funcin tiene que ver con un grado de ambigedad sobre la caracterstica de la variable que se est midiendo pero no es una probabilidad. [2]. 6.4 Seal de referencia: es el valor que se desea que alcance la seal. [1] 6.5 Error: es la diferencia entre la seal de referencia y la seal de salida real. [1]

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


En nuestro caso, nuestra entrada (input) son el ngulo, y la salida (output) es el pwm. Teniendo lo siguiente: Variable ngulo PWM E/S Entrada Salida

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

Tabla1. Variables del Sistema

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.

Figura2. Funciones de membresa de la salida PWM Rangos de trabajo:

Figura1. Funciones de membresa de la entrada ngulo Rangos de trabajo:

Nombre de la funcin de membreca mp p m g mg

Rango de valores (%)

0-66 33-110 86-154 110-187 154-220

Nombre de la funcin de membreca mb b m a ma

Rango de valores (%)

Tabla3. Rango de valores de las funciones de membresa del PWM

0-18 6-30 18-42 30-54 42-60

Tabla2. Rango de valores de las funciones de membresa del ngulo

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:

Para los 5 fuzzys la variable PWM la hemos determinado 5 grupos de pertenencia:

11

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

Figura3. Reglas de operacin 1er fuzzy.

Para el segundo fuzzy las reglas son las siguientes:

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:

Figura4. Reglas de operacin 2do fuzzy.

Para el tercer fuzzy las reglas son las siguientes:

Figura5. Reglas de operacin 3er fuzzy.

Para el cuarto fuzzy las reglas son las siguientes:

Figura6. Reglas de operacin 4to fuzzy.

Para el quinto fuzzy las reglas son las siguientes:

Figura8. Men Principal del Fuzzy Toolbox, FIS Editor Figura7. Reglas de operacin 5to fuzzy.

Al hacer doble click sobre el grfico de inputs, agregamos entradas a nuestro

12

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


controlador fuzzy, de igual manera lo realizamos con las salidas. Para agregar las reglas, hacemos doble click en el cuadro central. Ahora, en nuestro cdigo, usamos los siguientes comandos. muybajo=readfis('rango_muybajo'); Este comando, me ayuda a 'cargar' el modelo creado con la herramienta fuzzy, en este caso nuestro modelo se llama rango_muybajo. A este lo almacenamos en una variable denominada muybajo. ut = evalfis(angulo,muybajo) Este comando enva las entradas hacia el controlador fuzzy, en este caso enviamos el valor que leemos en el ngulo. En este comando, tambin se especifica el nombre del objeto que creamos anteriormente, en este caso muybajo. La salida de este comando, es el valor de mi fuzzy output, en nuestro caso lo almacenamos en una variable llamada ut para trabajarlo y controlar el valor de nuestra seal de control PWM mediante nuestro microcontrolador.

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

18. ANLISIS Y RESULTADOS


La prioridad en la implementacin de nuestro controlador fuzzy, es el de controlar el valor numrico del ngulo por medio de un pwm. Como debe ser normal, a mayor ngulo, el pwm debe ser mayor y por ende a menor ngulo requerido el pwm debe ser el menor.

Figura10. Grafica Desplazamiento angular vs Tiempo para un ngulo alto

En la figura10 podemos observar que la estabilizacin en el setpoint marcado es la correcta, sin la existencia de picos u otras desvariantes.

13

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

Figura12. Grafica Desplazamiento angular vs Tiempo para un ngulo bajo.

19.

CONCLUSIONES

Llegando a una estabilizacin optima como se muestra en figura12.

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

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


La implementacin de un sistema fuzzy es muy sencillo, ya que no es necesario realizar un modelo exacto, sino que basta con entender el comportamiento de la planta. Esto ayuda sobre todo cuando tenemos un comportamiento no lineal facilitando el proceso de modelado. Se debe considerar los rangos de operacin de tal forma que sean tangibles, eficientes y confiables, esto es necesario para poder asumir intervalos de operacin y estabilidad en el set point que otorgue la planta. La ventaja del control difuso, es que el sistema reacciona rpidamente a los cambios, se adapta con facilidad. Esto dado que tiene control sobre un rango mayor de condiciones de operacin.

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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.

21. FUENTES DE INFORMACIN


[1] Introduccin a la Implementacin de Controladores PID Anlogos - Juan Antonio Contreras Montes [2]http://profesores.elo.utfsm.cl/~tarredond o/info/softcomp/Introduccion%20a%20la%20Logica%2 0Difusa.pdf

20. DIFERENCIAS ENTRE EL CONTROLADOR PID Y EL FUZZY


El control difuso es flexible y bastante intuitivo: la posibilidad de usar expresiones con imprecisin genera modelos intuitivos y flexible debido a que debido a que se pueden cambiar las membresas y los grados de pertenencia de las variables, las condiciones de acuerdo a las necesidades del sistema y del usuario. El controlador Fuzzy, en comparacin con el controlador PID tiene una mejor rapidez y un reducido error en estado estable. Adems de que elimina

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,

'gui_OpeningFcn', @control_fuzzy_pos_angular_Openin gFcn, ...

15

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIN INDUSTRIAL MECATRNICA

'gui_OutputFcn', @control_fuzzy_pos_angular_Output Fcn, ... 'gui_LayoutFcn', [] , ...

'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;

muybajo=readfis('rango_muybajo'); medio=readfis('rango_medio'); alto=readfis('rango_alto'); bajo=readfis('rango_bajo'); muyalto=readfis('rango_muyalto');

%% 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

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


angulo=66.667*lectura+278.33; rango=str2double(get(handles.opci on,'string')); if rango==6 ut = 0; end if rango==1 ut = evalfis(angulo,muybajo); end if rango==2 ut = evalfis(angulo,bajo); end if rango==3 ut = evalfis(angulo,medio); end if rango==4 ut = evalfis(angulo,alto); end if rango==5 ut = evalfis(angulo,muyalto); end fwrite(PS,ut); % Se enva el dato de control al PIC control = ut/2.55; 10;

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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

set(handles.dispang,'string',angu lo); set(handles.dispcontrol,'string', ut); DESP_ANG(muestra)=angulo; TIEMPO(muestra)=time; SENCONTROL(muestra)=control;

17

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


f=helpdlg('Control de Desplazamiento Angular en pausa. Presione OK para CONTINUAR ',' CONTROL PID DE DESPLAZAMIENTO ANGULAR');% vENTANA DE AYUDA waitfor(f)% eSPERA LA ACCION set(handles.pausa,'State','off'); % cAMBIA EL ESTADO DEL BOTON PAUSA end % --- Executes during object creation, after setting all properties. function text3_CreateFcn(hObject, eventdata, handles) % hObject handle to text3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties. function figure1_CreateFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties. function logo_mct_CreateFcn(hObject, eventdata, handles) % hObject handle to logo_mct (see GCBO)

AUTOMATIZACIN INDUSTRIAL MECATRNICA

% 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

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


function r_muybajo_Callback(hObject, eventdata, handles) set(handles.opcion,'String',1); guidata(hObject,handles)

AUTOMATIZACIN INDUSTRIAL MECATRNICA

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)

% --- Executes on button press in r_nulo. function r_nulo_Callback(hObject, eventdata, handles)

19

CONTROLADOR PID CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR


Lcd_Chr(pos_row, pos_char, 0) end sub sub procedure Iniciar_Lcd Lcd_Init() Lcd_Cmd(_LCD_CLEAR) Lcd_Cmd(_LCD_CURSOR_OFF) end sub sub procedure salida_datos volt= volt_ref*(ADC_Read(0)/1023) dato_enviar=volt*50 envio=dato_enviar UART1_Write(envio) FloatToStr(volt,txt1) Lcd_Chr(1,3,txt1[0]) Lcd_Chr(1,4,txt1[1]) Lcd_Chr(1,5,txt1[2]) Lcd_Chr(1,6,txt1[3]) grados = -53.561*volt+223.72 FloatToStr(grados,txt2) Lcd_Chr(1,12,txt2[0]) Lcd_Chr(1,13,txt2[1]) Lcd_Chr(1,14,txt2[2]) Lcd_Chr(1,15,txt2[3]) end sub sub procedure entrada_datos control=UART1_Read() duty = byte(control) PWM1_Set_Duty(duty) WordToStr(control,txt3) Lcd_Chr(2,4,txt3[2]) Lcd_Chr(2,5,txt3[3]) Lcd_Chr(2,6,txt3[4]) porcentaje= control/2.55 FloatToStr(porcentaje,txt4) Lcd_Chr(2,11,txt4[0]) Lcd_Chr(2,12,txt4[1]) Lcd_Chr(2,13,txt4[2]) Lcd_Chr(2,14,txt4[3]) Lcd_Chr(2,15,txt4[4]) end sub main:

AUTOMATIZACIN INDUSTRIAL MECATRNICA

ADCON1 = 128 TRISA = 255 TRISC.2 = 0 PORTC.2 = 0

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

Você também pode gostar