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. 1 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 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. Estabilizar la planta lo más rápido que sea posible probando los diferentes constantes.

CONTROL PID Y CONTROL FUZZY-MONTAÑO.FARINANGO

Embed Size (px)

Citation preview

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

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.

1

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

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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

2

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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

3

5.10 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]

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 planta

Primero 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 potencia

Se 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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

4

6.3 Circuito de lcd, potenciómetro,

ventilador, PIC

Figura 4: Circuito Total

6.5 Comunicación Serial

Por 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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

5

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 Matlab

Una 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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

6

9.2 Constantes del controlador

Para 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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

7

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.

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

8

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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

9

CONTROL FUZZY DE UNA PLANTA DE POSICIÓN ANGULAR

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. GENERALIDADES El 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:

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.

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

10

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'. 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 FUZZY Para 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 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.

Fuzzification

Evaluación de Reglas

Defuzzification

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

11

En nuestro caso, nuestra entrada (input) son

el ángulo, y la salida (output) es el pwm.

Teniendo lo siguiente:

Variable E/S

Ángulo Entrada

PWM 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 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-18

b 6-30

m 18-42

a 30-54

ma 42-60 Tabla2. 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-66

p 33-110

m 86-154

g 110-187

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

membresía del PWM

7.2 Evaluación de reglas

Una 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:

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

12

Figura3. Reglas de operación 1er fuzzy.

Para el segundo fuzzy las reglas son las siguientes:

Figura4. Reglas de operación 2do fuzzy.

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 Defuzzificacion

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

Al hacer doble click sobre el gráfico de inputs, agregamos entradas a nuestro

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

13

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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

14

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.

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.

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

15

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.

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 A Código 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, ...

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

16

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

% Función principal que se

ejecuta al presionar el ícono de

inicio function

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,'D

ataBits',8,'Parity','none','StopB

its',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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

17

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 envía

el dato de control al PIC control = ut/2.55;

set(handles.dispang,'string',angu

lo);

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','LineW

idth',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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

18

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)

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

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

19

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)

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 B

Código 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)

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

CONTROLADOR PID – CONTROLADOR FUZZY DE UNA PLANTA DE POSICIONAMIENTO ANGULAR

AUTOMATIZACIÓN

INDUSTRIAL MECATRÓNICA

20

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: 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.