control pid y control fuzzy-montaÑo.farinango

26
1 AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB Alejandro Farinango P.- Ana Montaño V. CONTROL PID DE UNA PLANTA DE POSICIÓN ANGULAR Alejandro Farinango Páez [email protected] 0995639164 Ana Montaño Vizcaíno [email protected] 0992581399 Estudiantes de la carrera de Ingeniería Mecatrónica de la ESPE 1. RESUMEN En el presente artículo se describe la forma de diseñar e implementar un controlador PID para una planta de posición 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. 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. 3. PALABRAS CLAVES Comunicación Serial, PWM, PID, Matlab, Set point, Error. 4. INTRODUCCIÓN 4.1 Objetivo General: Diseñar e implementar un sistema de control de

Upload: ana-montano-vizcaino

Post on 08-Apr-2016

75 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

1

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

CONTROL PID DE UNA PLANTA DE POSICIÓN ANGULAR

Alejandro Farinango Pá[email protected]

0995639164Ana Montaño Vizcaíno

[email protected]

Estudiantes de la carrera de Ingeniería Mecatrónica de la ESPE

1. RESUMEN

En el presente artículo se describe la forma de diseñar e implementar un controlador PID para una planta de posición 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.

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.

3. PALABRAS CLAVES

Comunicación Serial, PWM, PID, Matlab, Set point, Error.

4. INTRODUCCIÓN

4.1 Objetivo General: Diseñar e implementar un sistema de

control de posición angular, utilizando el entorno de MATLAB y con la ayuda de otro software como el MIKROBASIC para la programación del Pic 16F877A.

4.2 Objetivos Específicos: Implementar la planta de control de

posición angular. Reconocer y Analizar el sistema. Diseñar 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.

Page 2: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

2

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Estabilizar la planta lo más rápido que sea posible probando los diferentes constantes.

5. GENERALIDADES5.1 PID: uno de los controladores frecuentemente usados en la industria de procesos. En un controlador PID la variable de control se genera por términos proporcional al error, proporcional a la integral del error y proporcional a la derivada del error.

Figura 1: Diagrama de Bloques de un controlador PID

La figura 1 muestra el diagrama de bloques de un clásico controlador PID en tiempo continuo. Sintonizar el controlador involucra ajustar los parámetros Kp, Ki y Kd para obtener una respuesta satisfactoria. Las características de un controlador PID son bien conocidas y establecidas, y la mayoría de de los controladores modernos están basadas sobre formas PID. [1]

5.2 Sobrepico (overshoot:) Mp es la cantidad máxima que el sistema se sobrepasa en el transitorio su valor final dividido ese valor final (frecuentemente se lo da en porcentaje). [1]

5.3 Señal de salida: es la variable que se desea controlar (posición, velocidad,

presión, temperatura, etc.). También 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 Fenómeno wind-up: cuando un actuador produce una saturación surge un salto brusco, además de que la saturación rompe el lazo de realimentación, ya que el único valor que proporciona será una constante.

A este fenómeno se le llama “wind-up”. Para evitarlo puede hacerse lo siguiente:

Si el PID está implementado en código,no mediante un circuito analógico, es posible realizar una integración condicionada, es decir, solo se integra mientras no se alcance la saturación. También es relativamente facil asegurar por software que no se exigen cambios de referencia demasiado bruscos, que son los que provocan fácilmente la saturación 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 máximo valor (el sobrepico). [1]

5.8 Señal de referencia: es el valor que se desea que alcance la señal. [1]

5.9 Error: es la diferencia entre la señal de referencia y la señal de salida real. [1]

5.10 Señal de control: es la señal que produce el controlador para

Page 3: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

3

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

modificar la variable controlada de tal forma que se disminuya, o elimine, el error. [1]

5.11 Señal análoga: es una señal continua en el tiempo. [1]

5.12 Conversor análogo/digital: es un dispositivo que convierte una señal analógica en una señal digital (1 y 0). [1].

5.13 Planta: es el elemento físico que se desea controlar. [1]

6. MATERIALES Y DISEÑO DE LA PLANTA

6.1 Materiales Software MATLAB instalado en un PC Cable DB9 Resistencias Potenciómetro de 10k Capacitores Multímetro PIC 16F877A Fuente de 5VDC y 24 VDC Optoacoplador LCD Ventilador de 24VDC

6.2 Diseño físico de la plantaPrimero se hizo un diseño en Solid Works de la planta con las medidas exactas de los ejes, soportes para el potenciómetro. 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 principio se intentó hacerle de madera pero tras pruebas realizadas con el ventilador resultaba muy pesado así que se optó por ponerle un plato pequeño desechable En

anexos se adjunta los planos de la planta en Solid works.

Figura 2: PLANTA

6.3 Circuito de potenciaSe realizó un circuito de potencia para el ventilador usando un optoacoplador.

Figura 3: Control Potencia del ventilador

Page 4: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

4

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

6.3 Circuito de lcd, potenciómetro, ventilador, PIC

Figura 4: Circuito Total

6.5 Comunicación SerialPor lo que para realizar nuestro controlador utilizamos la herramienta MATLAB se requiere mantener una comunicación entre la computadora y la planta por lo que se realizó una comunicación serial.

Se usó el protocolo RS-232, enviamos un dato (set point) por la computadora a la planta, esta información 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 5: Configuración Puerto serial - Matlab

7. MODELAMIENTO DEL SENSOR (POTENCIÓMETRO)

Se realizó el modelamiento del potenciómetro realizando tomas de datos de

la variación del voltaje con respecto al ángulo, esta toma de datos se la hizo en Excel y se procedió a sacar la ecuación respectiva del sensor.

Figura 6: Toma de datos

Figura 7 Ecuación del Sensor

8. IDENTIFICACIÓN DEL SISTEMA

Se realiza una identificación del sistema antes una respuesta al escalón para ver el rango óptimo de trabajo.

Page 5: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

5

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Figura 8: Identificación del Sistema

Figura 9: Respuesta del sistema al regreso 1

Figura 10: Respuesta del sistema al regreso 2

Figura 11: Respuesta del sistema al regreso 3

9. DISEÑO DEL CONTROLADOR

9.1 Algoritmo del controlador en MatlabUna vez ingresadas las variables del controlador en Matlab se procede a programar el controlador.

Figura 12: Algoritmo Matlab

Page 6: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

6

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

9.2 Constantes del controladorPara el cálculo de las respectivas constantes se utilizó el siguiente método:

Por aproximaciones – PRUEBA ERROR Basándonos en las constantes que nos dió al utilizar la herramienta PIDTOOL de MATLAB pudimos tener una guía para seguir variando las constantes a base del método prueba error, este método resultó ser el mejor para la selección de las constantes de control para nuestra planta. Una vez adquiridas las constantes con el pidtool, basándonos en esos valores y mediante el método 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

10. RESULTADOS

A continuación se observarán las gráficas de la respuesta del sistemas para valores de ángulos bajos, medios y altos.

Bajo – Ángulo de 5 grados

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

Medios – Ángulo de 23 grados

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

Alto – Ángulo de 40 grados

Page 7: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

7

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

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

10.2 Perturbaciones

Figura 16: Respuesta ante perturbaciones en rangos altos

Figura 17: Respuesta ante perturbaciones en rangos medios

Figura 18: Respuesta ante perturbaciones en rangos bajos

11. ANÁLISIS Y CONCLUSIONES

Es muy necesario en el circuito implementar un LCD para verificar mediante el Dutty (ciclo útil de trabajo del PWM) si hay sintonía o comunicación entre la computadora y el hardaware.

Para evitar los ruidos se implementó un filtro pasa bajo , un circuito RC, y

Page 8: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

8

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

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 había 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 amplificación.

Se hizo un control PID por las siguientes razones:

1. Proporcional: ya que siempre necesito una ganancia, la señal de pwm es muy alta asi que necesita ser atenuada, para eso utilizo el proporcional

2. Integral: porque tengo un error en estado estacionario que hay q

reducirlo, esta constante es muy pequeña ya que si fuese un valor grande le hace lento a mi sistema.

3. Derivativo: esta constante nos ayudó a hacerle mas rápido al retorno ya que en un principio se obtenían respuestas muy lentas.

Como se puede observar en las gráficas 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 rápida, se hizo pruebas variando los valores de las constantes pero esta variación perjudicaba de gran manera la respuesta para los valores bajos y medios.

Es indispensable tener una planta física estable y un buen circuito para facilitar el diseño de los controladores.

CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR

Page 9: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

9

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

12. RESUMEN

En el presente artículo se describe la forma de diseñar e implementar un controlador FUZZY (lógica difusa) para una planta de posición 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.

13. ABSTRACT

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.

14. PALABRAS CLAVES

Comunicación Serial, PWM, Fuzzy, Matlab, Función de Membresía, Set point, Error.

15. INTRODUCCIÓN

15.1 Objetivo General: Diseñar e implementar un

controlador Fuzzy para una planta de posición angular.

15.2 Objetivos Específicos: Reconocer y Analizar la Planta. Desarrollar un programa que realice

el control lógico difuso a través de la herramienta de MATLAB.

Estabilizar la planta lo más rápido que sea posible.

16. GENERALIDADESEl funcionamiento general de un controlador fuzzy es igual que otros controladores, toman los valores de las variables de entrada del sistema, y según 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:

SI antecedente ,ENTONCES consecuenteo

SI condición ENTONCES acción

El problema de utilizar la lógica difusa, es la complejidad de representar el conocimiento en estas reglas, muchas veces esbozamos reglas con calificativos no demasiado precisos.

Con respecto a la lógica, se crea nuevas alternativas a la lógica tradicional, tal y como la conocemos. Una proposición no siempre

es verdadera, o falsa; sino que la misma puede tener un grado de veracidad.

Observemos que lo descrito anteriormente se basa más en el comportamiento natural de las personas, y deja de aferrarse a un cierto número de ecuaciones y condiciones que usualmente se utilizan en el control 'clásico'.

Page 10: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

10

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Al utilizar el control fuzzy, observamos que ya no procesamos ecuaciones, números o tablas, sino reglas. De esta manera se puede realizar operaciones entre palabras como, más 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 automático. [1].

6.2 Señal de salida: es la variable que se desea controlar (posición, velocidad, presión, temperatura, etc.). También se denomina variable controlada. [1]

6.3 Función de Membresía: la función tiene que ver con un grado de ambigüedad sobre la característica de la variable que se está midiendo pero no es una probabilidad. [2].

6.4 Señal de referencia: es el valor que se desea que alcance la señal. [1]

6.5 Error: es la diferencia entre la señal de referencia y la señal de salida real. [1]

6.6 Señal de control: es la señal que produce el controlador para modificar la variable controlada de tal forma que se disminuya, o elimine, el error. [1]

6.7 Señal análoga: es una señal continua en el tiempo. [1]

6.8 Planta: es el elemento físico que se desea controlar. Planta puede ser: un foco, un motor, un horno, un sistema de disparo, un sistema de navegación, un tanque de combustible, etc. [1]

17. CONTROL FUZZYPara nuestro controlador realizamos 5 fuzzy‘s 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 cíclica que puede ser dividida en tres grupos, de la siguiente manera.

7.1 FuzzificationEsta 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.

En nuestro caso, nuestra entrada (input) son el ángulo, y la salida (output) es el pwm. Teniendo lo siguiente:

Variable E/SÁngulo EntradaPWM Salida

Tabla1. Variables del Sistema

Para los 5 fuzzy’s 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 función de membresía se obtuvieron

Fuzzification

Evaluación de ReglasDefuzzification

Page 11: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

11

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

experimentalmente variando el ángulo y verificando la respuesta en el sensor que en nuestro caso es el potenciómetro.

Figura1. Funciones de membresía de la entrada ángulo

Rangos de trabajo:Nombre de la

función de membrecía

Rango de valores (%)

mb 0-18b 6-30m 18-42a 30-54

ma 42-60Tabla2. Rango de valores de las funciones de

membresía del ángulo

Para los 5 fuzzy’s la variable PWM la hemos determinado 5 grupos de pertenencia: mp(muy pequeño), p(pequeño), m(medio), g(grande), mg(muy grande). Los rangos para cada función de membresía se obtuvieron experimentalmente considerando la respuesta de la variación angular dependiendo del ciclo de trabajo enviado.

Figura2. Funciones de membresía de la salida PWM

Rangos de trabajo:Nombre de la

función de membrecía

Rango de valores (%)

mp 0-66p 33-110m 86-154g 110-187

mg 154-220Tabla3. Rango de valores de las funciones de

membresía del PWM

7.2 Evaluación de reglasUna vez realizada la fuzzificacion, se está en condiciones de evaluar en qué condición 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:

Figura3. Reglas de operación 1er fuzzy.

Para el segundo fuzzy las reglas son las siguientes:

Figura4. Reglas de operación 2do fuzzy.

Page 12: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

12

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Para el tercer fuzzy las reglas son las siguientes:

Figura5. Reglas de operación 3er fuzzy.

Para el cuarto fuzzy las reglas son las siguientes:

Figura6. Reglas de operación 4to fuzzy.

Para el quinto fuzzy las reglas son las siguientes:

Figura7. Reglas de operación 5to fuzzy.

7.3 DefuzzificacionA cada fuzzy output, se le asignó el máximo 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 conocería 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 consideración.

7.4 Control Fuzzy en MATLABEl 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

Al hacer doble click sobre el gráfico de inputs, agregamos entradas a nuestro controlador fuzzy, de igual manera lo realizamos con las salidas.Para agregar las reglas, hacemos doble click en el cuadro central.Ahora, en nuestro código, 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 envía las entradas hacia el controlador fuzzy, en este caso

Page 13: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

13

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

enviamos el valor que leemos en el ángulo. En este comando, también 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 señal de control PWM mediante nuestro microcontrolador.

18. ANÁLISIS Y RESULTADOS

La prioridad en la implementación de nuestro controlador fuzzy, es el de controlar el valor numérico 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.

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 estabilización muy bajo, además que el sobre impulso generado no es muy alto.

También podemos recalcar que no existe un cambio en la señal de control “ut” al generar un cambio a un ángulo alto, esto nos proporciona un rendimiento óptimo y constante.

Figura10. Grafica “Desplazamiento angular vs Tiempo” para un ángulo alto

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

Figura11. Grafica “Desplazamiento angular vs Tiempo” (izq), Grafica “Control vs Tiempo” (der),

para un ángulo bajo

En la gráfica anterior podemos observar que al existir una perturbación, en este caso menor desplazamiento angular el valor que genera la señal de control reduce el valor del PWM rápidamente y se adapta al valor necesario para que cumpla con las condiciones dadas.

Page 14: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

14

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Figura12. Grafica “Desplazamiento angular vs Tiempo” para un ángulo bajo.

Llegando a una estabilización optima como se muestra en figura12.

Figura13. Grafica “Desplazamiento angular vs Tiempo” (izq), Grafica “Control vs Tiempo” (der),

para un ángulo medio

En la figura13 podemos observar que al existir una perturbación, en este caso aumentar el desplazamiento angular, el valor del PWM se incrementa rápidamente y se adapta al valor necesario, llegando a estabilizarse como se muestra en la figura14.

Figura14. Grafica “Desplazamiento angular vs Tiempo” para un ángulo medio

Podemos concluir, que el control difuso es de fácil implementación, gran rapidez de

respuesta, sistema inteligente y con un error muy bajo.

19. CONCLUSIONES El control se basa en la implementación

de 5 fuzzy’s tipo SISO(una entrada una salida), en todos ellos la entrada es el desplazamiento angular y la salida es el pwm. Se realizó 5 fuzzy’s debido a que al realizar solo uno, el controlador solamente controlaba con precisión 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.

La implementación 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 operación de tal forma que sean tangibles, eficientes y confiables, esto es necesario para poder asumir intervalos de operación y estabilidad en el set point que otorgue la planta.

La ventaja del control difuso, es que el sistema reacciona rápidamente a los cambios, se adapta con facilidad. Esto dado que tiene control sobre un rango mayor de condiciones de operación.

Page 15: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

15

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

20. DIFERENCIAS ENTRE EL CONTROLADOR PID Y EL FUZZY El control difuso es flexible y

bastante intuitivo: la posibilidad de usar expresiones con imprecisión genera modelos intuitivos y flexible debido a que debido a que se pueden cambiar las membresías y los grados de pertenencia de las variables, las condiciones de acuerdo a las necesidades del sistema y del usuario.

El controlador Fuzzy, en comparación con el controlador PID tiene una mejor rapidez y un reducido error en estado estable. Además de que elimina casi en su totalidad el overshoot generado por el controlador PID.

Para que el controlador PID este en optimas condiciones había que sintonizar y calibrar sus constantes, mientras que en el controlador Fuzzy se necesitaba aplicar funciones de membresía con un rango de operación adecuado al sistema.

21. FUENTES DE INFORMACIÓN

[1] Introducción a la Implementación de Controladores PID Análogos - Juan Antonio Contreras Montes

[2]http://profesores.elo.utfsm.cl/~tarredondo/info/soft-comp/Introduccion%20a%20la%20Logica%20Difusa.pdf

1. ANEXOS

ANEXO ACódigo utilizado en MATLAB para realizar el controlador Fuzzy.

function varargout = control_fuzzy_pos_angular(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @control_fuzzy_pos_angular_OpeningFcn, ... 'gui_OutputFcn', @control_fuzzy_pos_angular_OutputFcn, ... '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_OpeningFcn(hObject, eventdata, handles, varargin)guidata(hObject, handles); function varargout = control_fuzzy_pos_angular_OutputFcn(hObject, eventdata, handles) % varargout{1} = handles.output;

Page 16: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

16

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.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); % Función principal que se ejecuta al presionar el ícono de iniciofunction play_ClickedCallback(hObject, eventdata, handles)%% Configuración PUERTO SERIAL PS=instrfind; if PS~=isempty(PS) fclose(PS); delete(PS); clear PS; end PS = serial('COM11','BaudRate',9600,'DataBits',8,'Parity','none','StopBits',1); fopen(PS); %% Inicialización 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'); %% Adquisición 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 angulo=-66.667*lectura+278.33; rango=str2double(get(handles.opcion,'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

Page 17: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

17

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V. fwrite(PS,ut); % Se envía el dato de control al PIC control = ut/2.55; set(handles.dispang,'string',angulo); set(handles.dispcontrol,'string',ut); DESP_ANG(muestra)=angulo; TIEMPO(muestra)=time; SENCONTROL(muestra)=control; limitemax=time; if limitemax>15 limitemin=limitemax-10; else limitemin=0; end axes(handles.axes1) % Elección 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) % Elección del TAG para graficar SEÑAL DE CONTROL VS. TIEMPO plot(TIEMPO,SENCONTROL,'m','LineWidth',3) title('SEÑAL 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) % Función para el botón de pausa pausa=get(handles.pausa,'State');% Lectura del estado del botón PAUSA if strcmp(pausa,'on')% Comparación del estado del botón PAUSA 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

Page 18: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

18

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.% 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)% 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 % Función para el botón CERRARfunction 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 allend 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.function r_muybajo_Callback(hObject, eventdata, handles) set(handles.opcion,'String',1); 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) % --- 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)

Page 19: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

19

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

set(handles.opcion,'String',5); guidata(hObject,handles) % --- Executes on button press in r_nulo.function r_nulo_Callback(hObject, eventdata, handles) set(handles.opcion,'String',6); guidata(hObject,handles)

ANEXO BCódigo utilizado en el micro controlador 16F877A.

program potencia_ventilador

const volt_ref = 5const character as byte[8] = (14,17,17,14,0,0,0,0)

dim volt, grados, porcentaje as floatdim vector_volt as float[10]dim txt1 as string [3]dim txt2,txt3, txt4 as string [7]dim dato_enviar, control as worddim envio, duty as bytedim 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) 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])

Page 20: CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

20

AUTOMATIZACIÓN INDUSTRIAL MECATRÓNICA

CONTROL PID Y CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR EN MATLAB

Alejandro Farinango P.- Ana Montaño V.

Lcd_Chr(2,14,txt4[3]) Lcd_Chr(2,15,txt4[4])end sub

main:

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) wendend.