Post on 23-Oct-2015
1
MEMORÍA DE ESTADÍA PROFESIONAL
DISEÑO E IMPLEMENTACIÓN DE UN CONTROLADOR DIFUSO EN
UN dsPIC30F4011 PARA UNA HÉLICE DE PASO VARIABLE
PRESENTA:
LUIS ALBERTO SALAZAR HERNÁNDEZ
PARA OBTENER EL TÍTULO DE:
INGENIERO EN MECATRÓNICA
ASESORES:
DR. NAZARIO BAUTISTA ELIVAR
DR. W. FERMÍN QUERRERO SÁNCHEZ
ENERO 2012
3
Resumen
El presente trabajo de estadía, cuya realización se llevo a cabo en el Laboratorio de
Investigación de Sistemas Dinámicos Controlables en la Facultad de Ciencias Físico Matemáticas
de la Benemérita Universidad Autónoma de Puebla contiene una introducción a la lógica difusa
y al tipo de hélices utilizadas en aeronáutica. Se realiza el diseño de un controlador difuso tipo
Mamdani para obtener el ángulo de ataque deseado de una hélice de paso variable
dependiente de la altura y la presión del aire sobre una aeronave. Se realiza la simulación del
controlador difuso en el software de LabVIEW y MATLAB para construir una tabla comparativa
con los resultados obtenidos experimentalmente y para monitorear el comportamiento real del
sistema, para las pruebas de laboratorio se utilizaron potenciómetros lineales de 1KΩ como
entradas. Se construyó un pequeño prototipo de un mecanismo piñón-cremallera para efectuar
el cambio de paso de la hélice. Se desarrolló y programó un algoritmo de control con ayuda del
compilador PIC C de CCS para su implementación en un dsPIC30F4011. Como un trabajo a
futuro, se implementará el controlador diseñado, sobre un planeador eléctrico, teniendo como
referencia un sensor de presión absoluta MPXA6115A de Freescale Semiconductor que permite
el cálculo de altura y un sensor de presión diferencial MPX5010 de Freescale Semiconductor
para el cálculo de presión del aire sobre el planeador.
4
Contenido
Índice de Contenido .................................................................................................................. IV
Índice de figuras ........................................................................................................................ VI
Índice de tablas ....................................................................................................................... VIII
Introducción .............................................................................................................................. VI
Estado del arte ......................................................................................................................... VII
1. Antecedentes y definiciones básicas
1.1. Introducción a la lógica difusa .........................................................................................
1.1.1. Fundamentos de los sistemas difusos ....................................................................
1.2. Sistema Propulsor ............................................................................................................
1.2.1. Conocimientos fundamentales...............................................................................
1.2.2. Hélice de paso fijo ..................................................................................................
1.2.3. Hélice de paso variable ..........................................................................................
2. Prototipo 2.1. Sistema electrónico ......................................................................................................... 2.2. Sistema mecánico ............................................................................................................ 2.3. Conjunción y prueba del prototipo ..................................................................................
3. Diseño e implementación del controlador difuso
3.1. Parámetros del controlador ............................................................................................
3.1.1. Conjuntos difusos y funciones de pertenencia .......................................................
3.1.2. Variables lingüísticas ..............................................................................................
3.1.3. Reglas difusas ........................................................................................................
3.2. Simulación del controlador en LabVIEW ..........................................................................
3.3. Simulación del controlador en MATLAB ...........................................................................
3.4. Implementación del controlador difuso ...........................................................................
5
3.4.1. Antecedentes MCU, DSP y DSC ..............................................................................
3.4.2. Microcontrolador dsPIC30F4011 ............................................................................
3.4.3. Implementación en el microcontrolador dsPIC30F4011 .........................................
4. Resultados
4.1. Resultados ........................................................................................................................
5. Conclusiones y trabajo futuro
5.1 Conclusiones .....................................................................................................................
5.2 Trabajo futuro ...................................................................................................................
Bibliografía
A. Códigos de Programación
A.1. Código de MATLAB ...........................................................................................................
A.2. Código del dsPIC30F4011 .................................................................................................
9
Introducción
La lógica difusa es utilizada cuando la complejidad del proceso en cuestión es muy alta
y no existen modelos matemáticos precisos, para procesos altamente no lineales y cuando se
envuelven definiciones y conocimiento no estrictamente definido (impreciso o subjetivo). Esta
técnica se ha empleado con bastante éxito en la industria, principalmente en Japón, y cada vez
se está usando en gran multitud de campos. La primera vez que se usó de forma importante fue
en el metro japonés, con excelentes resultados.
Los sistemas difusos han sido utilizados en una gran variedad de aplicaciones en
ingeniería, ciencia, negocios, medicina, psicología, entre otros campos. En ingeniería, algunas
aéreas de aplicaciones potenciales incluye [1]:
Aviación: Control de vuelo, control de motor, sistemas aviónicos, diagnostico de fallas,
navegación.
Sistemas Automatizados de autopistas: Manejo automático, frenado, control de
aceleración de vehículos.
Automóviles: Frenos, transmisión, suspensión y control de motor.
Vehículos autónomos: Tierra y bajo agua.
Control de procesos: Temperatura, presión, control de nivel, diagnostico de fallas.
Robótica: Control de Posición y planeación de trayectorias.
En el Laboratorio de Investigación de Sistemas Dinámicos Controlables en la Facultad
de Ciencias Físico Matemáticas (FCFM) de la Benemérita Universidad Autónoma de Puebla
(BUAP) se tiene una hélice de paso variable de 30 cm de diámetro. Se requiere que se diseñe e
implemente un controlador difuso para mantener el correcto ángulo de ataque realizando
pruebas en un prototipo.
10
Las entradas al sistema serán propuestas en el presente trabajo como dos
potenciómetros lineales que simulan dos sensores para su futura implementación, debido a que
por el momento se sigue evaluando el tipo de sensores a utilizar para el sistema final en una
aeronave no tripulada (UAV), aunque se conoce que las entradas físicas al sistema deben ser la
altura de la aeronave y la presión del aire. Las dos entradas analógicas provenientes de los
potenciómetros toman valores entre 0 volts y 5 volts.
La elaboración del prototipo es para realizar pruebas experimentales del controlador
difuso en el laboratorio una vez diseñado e implementado en un dsPIC30F4011. Se requiere de
un seguimiento en el diseño mecánico donde se consideren todos los aspectos necesarios como
peso, material, costo, entre otros para poder implementar un sistema integro ya que el
principal tema de este trabajo es el diseño e implementación del controlador difuso.
Planteamiento del Problema
Se requiere un controlador difuso para una hélice de paso variable. Se cuenta con
elementos físicos como motores brushless y servomotores los cuales son necesarios acoplar en
un mecanismo para obtener el ángulo deseado. El prototipo se necesita para realizar pruebas
experimentales del controlador difuso.
Objetivo general
Diseñar e implementar un controlador difuso sobre una hélice de paso variable para
obtener el ángulo de ataque deseado en el despegue o aterrizaje de una aeronave, así como el
ángulo al alcanzar una determinada altura sobre la superficie y una velocidad de vuelo lineal.
Objetivos particulares
Construir un prototipo que produzca un movimiento lineal para el cambio de paso de la
hélice por la mecánica de la misma.
Elaborar el algoritmo del controlador difuso en lenguaje C para su implementación en
un dsPIC30F4011.
Simular el controlador difuso en el Toolkit “Fuzzy System Designer” de LabVIEW para la
comprobación del algoritmo desarrollado en lenguaje C.
Simular el controlador difuso en MATLAB para la comprobación del algoritmo
desarrollado en lenguaje C.
Simular el controlador difuso en el Fuzzy Logic Toolbox de MATLAB para la
comprobación del algoritmo desarrollado en lenguaje C.
Implementar el controlador difuso en un dsPIC30F4011.
11
Organización del trabajo
El presente trabajo se encuentra distribuido en 5 capítulos y 1 apéndice. En el Capitulo
1, se da una introducción al tema de lógica difusa y al tipo de hélices que son utilizadas en una
aeronave. En el capítulo 2, se presenta la construcción del prototipo para probar en controlador
difuso, así como el equipamiento de la electrónica. En el capítulo 3, se muestra el diseño,
simulación en LabVIEW y MATLAB del controlador, así como la implementación en un
dsPIC30F4011 mediante un algoritmo programado en lenguaje C. En el capítulo 4, se muestran
los resultados obtenidos en el trabajo desarrollado y finalmente en el capítulo 5, se dan a
conocer las conclusiones del trabajo realizado así como el trabajo a futuro del tema. En el
apéndice A, se muestran los códigos de programación del controlador difuso tanto en MATLAB,
como el de lenguaje C para el dsPIC30F4011.
12
Estado del arte
Lotfi A. Zadeh es considerado el padre de la lógica difusa, aceptándose como fecha de
su nacimiento 1965, el año de la publicación de su artículo Fuzzy Sets en la revista Information
and Control. Este artículo fue el resultado de una idea, mencionada por el profesor Zadeh en
1962, sobre la necesitad de crear un nuevo tipo de matemáticas, unas matemáticas que
permitieran expresar el conocimiento humano en términos distintos a las distribuciones de
probabilidad. Desde los inicios de la lógica difusa no sólo se han producido una gran cantidad de
trabajos teóricos y aplicados, sino que han visto la luz multitud de productos comerciales
basados en dicha teoría, originando lo que ha dado en llamarse tecnología fuzzy [2,4]. Durante la primera década de vida de la lógica difusa los nacientes grupos de
investigación fueron incorporando al campo difuso las estructuras matemáticas típicas:
relaciones, funciones, grafos, grupos, autómatas, gramáticas, lenguajes, algoritmos y
programas. Así, R. E. Bellman y Zadeh trabajaron en sistemas de toma de decisión en entornos
difusos. G. Lakoff estudió el problema desde un punto de vista lingüístico. J. A. Goguen investigó
sobre metodologías para la caracterización de estructuras matemáticas difusas, R. E. Smith y M.
Sugeno trabajaron en medidas difusas, J. C. Dunn y J. C. Bezdeck en clustering difuso, C. V.
Negoita en la recuperación de información difusa y H. J. Zimmermann estudió la optimización
difusa.
En 1974, S. Assilian y E. H. Mamdani, del Queen Mary College de Londres,
establecieron el primer hito en cuanto a aplicación industrial del control difuso. Mediante un
sistema basado en reglas lingüísticas consiguieron controlar un generador de vapor que no
habían sido capaces de mantener bajo control mediante técnicas convencionales. Esta
realización práctica fue uno de los frutos de la Tesis Doctoral de S. Assilian. Posteriormente, en
1976, las compañías Blue Circle Cement y SIRA desarrollaron en Dinamarca un controlador para
un horno de cemento, el cual incorporaba el conocimiento de operadores experimentados para
su funcionamiento. De esta forma, la lógica difusa comenzó poco a poco a adentrarse en los
ámbitos industriales. En 1977, Mamdani y King publican The application of fuzzy control
13
systems to industrial processes, en el que describen cómo emplear la lógica difusa como
método de control para sistemas industriales complejos.
A partir de los años 80 son las empresas japonesas las que comienzan a destacar en la
utilización de la lógica difusa. Así, Fuji Electric desarrolló una planta de tratamiento de aguas
que empleaba un sistema de control difuso, lo que les permitió adquirir los conocimientos
necesarios para así desarrollar el primer controlador difuso de propósito general FRUITAX
(Fuzzy RUle Information processing Tool of Advanced control), lanzado al mercado en 1985, y
que estaba constituido básicamente por un procesador de 16 bits junto con un sistema de
inferencia difusa basado en FORTRAN. Al año siguiente se produjo otro de los hitos más
importantes en la historia de la lógica difusa, nació el primer chip VLSI para la realización de
inferencias difusas desarrollado por M. Togai y H. Watanabe. Los chips VLSI incrementaron en
gran medida las posibilidades de elección de sistemas basados en reglas para aplicaciones de
tiempo real.
En 1987, Seiji Yasunobu y sus colaboradores de la empresa Hitachi pusieron a punto el
sistema de control del metro de la ciudad de Senday. El enorme éxito que tuvieron estos
proyectos provocó en Japón una auténtica revolución de las aplicaciones basadas en la lógica
difusa, favoreciendo que en 1988 el gobierno japonés pusiese en marcha un estudio minucioso
sobre el establecimiento de proyectos de lógica difusa entre las Universidades y la industria.
Fruto de este estudio se implantaron dos programas de investigación a nivel nacional sobre
lógica difusa, uno de ellos liderado por el MITI (Ministry of International Trade and Industry), y
el otro por la STA (Science and Technology Agency). A través del programa dependiente del
MITI se creó el consorcio denominado LIFE (Laboratory for International Fuzzy Engineering
research), el cual agrupaba a más de 50 compañías y poseía un presupuesto de 5.000 millones
de yenes (unos 50 millones de dólares) para seis años.
El éxito de la lógica difusa no sólo se ha demostrado a niveles industriales, sino
también a nivel del mercado de consumo. En 1987, Matsushita Electric Industrial Co. (conocida
fuera de Japón como Panasonic) fue la primera empresa en emplear la lógica difusa a un
producto de consumo, concretamente en un sistema de ducha que controlaba la temperatura
del agua. Esta misma compañía lanzó en 1990 una lavadora automática basada en lógica difusa.
A partir de entonces, una gran cantidad de compañías japonesas se apresuraron a lanzar
productos que utilizaban de una u otra forma la lógica difusa: hornos, cocinas, refrigeradores,
etc.
Actualmente son muchos los aparatos de consumo que incluyen algún tipo de
controlador difuso. Por ejemplo, tanto las cámaras fotográficas como las de vídeo suelen
emplear un controlador difuso para realizar el enfoque automático o el ajuste del tiempo de
exposición [3].En las cocinas de las casas también está presente la lógica difusa, ya que muchos
14
electrodomésticos la emplean en sus sistemas de control para ahorrar energía o agua,
mejorando considerablemente su eficiencia.
La industria del automóvil es otro de los sectores donde se ha aplicado la lógica difusa
con mucho éxito. Se han aplicado controladores difusos en sistemas de suspensión activa, en
sistemas de frenado y en el control electrónico de motores. Con la acuciante necesidad de
eliminar la dependencia del petróleo, casi todos los fabricantes tienen abiertas líneas de
investigación sobre vehículos híbridos. En este campo tan tremendamente complejo también
está triunfando la lógica difusa como un excelente método de control, y son muy numerosos los
avances que se están consiguiendo gracias al control difuso [2,4].
15
Capítulo 1
Preliminares y definiciones básicas
El objetivo fundamental que persigue este capítulo, es describir los conceptos que
permitan comprender y diseñar sistemas que, en alguna fase de su implementación, usen
términos relativos a la interpretación del conocimiento basado en la teoría de la lógica difusa,
así como conocer los diferentes tipos de hélices utilizadas en aviación.
1.1. Introducción a la lógica difusa
En 1965, el profesor de teoría de sistemas de la Universidad de California (Berkeley),
Lotfi A. Zadeh publicó su famoso artículo Fuzzy Sets. En este trabajo presentó a la comunidad
científica internacional la idea de conjunto difuso, y por extensión, de lo que se conocería como
lógica difusa. Desde entonces, el término lógica difusa, o fuzzy logic, ha sido empleado desde
dos puntos de vista diferentes: por un lado, la forma estricta del término hace referencia a un
sistema lógico que generaliza la lógica digital clásica para admitir el razonamiento impreciso o
bajo incertidumbre; por el otro, en un sentido más amplio y muy comúnmente utilizado, la
lógica difusa engloba todas las teorías y tecnologías que emplean conjuntos difusos. En
cualquier caso, la lógica difusa ha conseguido en menos de medio siglo revolucionar la
tecnología e impulsar la inteligencia artificial mediante la conjunción de los fundamentos
matemáticos, la lógica y el razonamiento [2].
La lógica difusa es una lógica multivaluada que permite valores intermedios para poder
definir evaluaciones convencionales. De esta forma, no se determina si un elemento pertenece
o no a un conjunto, sino la calidad de la pertenencia evaluada en un rango completo desde la
no pertenencia hasta la pertenencia con la máxima calidad posible. Esta característica permite
el análisis del razonamiento aproximado, mucho menos estricto que la lógica bivaluada
tradicional.
16
Tomando como base la imprecisión del razonamiento humano, pero bajo un
planteamiento matemático, la lógica difusa es capaz de generar la respuesta a una situación
basándose en el conocimiento adquirido sobre ésta, que podrá ser inexacto e incompleto. Por
ejemplo, mediante la lógica clásica se puede definir un conjunto de personas altas, pero esto
obliga a establecer una frontera clara que separe este subconjunto del resto de elementos,
como una altura de 1,80 m. Este razonamiento clásico dejaría a las personas de 1, 79 m de
estatura fuera del conjunto de personas altas. Es evidente que este razonamiento tan estricto
de la lógica clásica choca frontalmente con el razonamiento humano, mucho más vago e
impreciso.
La lógica difusa permite establecer límites suaves (o difusos) para los conjuntos,
haciendo que no todo tenga que ser blanco o negro, sino que es posible la existencia de niveles
de grises. Siguiendo con el ejemplo pero desde el punto de vista difuso, se podría decir que una
persona que mida 1,90 m está claro que es alta, o la calidad de su pertenencia al conjunto de
personas altas es 1. Una que mida 1,50 m está claro que no lo es, es decir, tiene un grado de
pertenencia 0 a dicho conjunto. Con las alturas intermedias se podría decir que la calidad de su
pertenencia al conjunto variaría entre 0 y 1, siendo mayor el grado de pertenencia cuanto más
alta sea la persona a clasificar, por ejemplo 0,25 para las personas de 1,60 m y 0,75 para las de
1,80 m. Así, una persona de 1,79 m no estaría excluida del conjunto de personas altas, aunque
la calidad de su pertenencia a dicho conjunto sería menor que la de otra persona de mayor
estatura.
Desde sus inicios la lógica difusa ha tenido que enfrentarse con constantes ataques por
parte de sus detractores, y su nacimiento no fue todo lo prometedor que hoy cabría esperar
viendo el éxito que ha alcanzado. Pese al rechazo que gran parte de la comunidad científica
expresaba inicialmente a esta teoría, en muchos casos tan solo por su nombre o por hacer
énfasis en el concepto de imprecisión, se fueron creando grupos de investigación sobre esta
temática tanto en Europa como en Estados Unidos. La posterior incorporación de los países
asiáticos al desarrollo difuso fue fundamental para dar el último impulso a la teoría de Zadeh.
La capacidad de las empresas japonesas para aplicar la lógica difusa a sus productos,
unida a la estrecha colaboración de estas empresas con las Universidades japonesas,
fomentaron la transferencia de los conocimientos sobre lógica difusa al campo de la ingeniería y
el control. Como el propio Zadeh dijo en una entrevista concedida a La Vanguardia en el año
2004,. . . en Japón antes de discutir teóricamente mi lógica se pusieron a hacerla funcionar en la
práctica, y se impuso. Así, desde los años 80 Japón es el líder indiscutible del mercado de las
aplicaciones borrosas y foco de innumerables avances de esta teoría [2].
17
1.1.1. Fundamentos de los sistemas difusos
Se considera un sistema difuso, cuando al menos uno de sus componentes emplea
lógica difusa. La planta dentro de un sistema de control, es el sistema físico que se desea
estudiar, controlar o monitorizar, de forma que la lógica difusa no estará implícitamente
presente en ella; sin embargo, la lógica difusa puede utilizarse para obtener un modelo de la
planta (modelo difuso), el cual, permitirá conocer el comportamiento de la misma tanto de
forma matemática como lingüística.
El controlador es el elemento que, mediante la aplicación de distintas señales de
control, intenta provocar que la planta tenga el comportamiento deseado por el diseñador,
según distintos criterios de desempeño, calidad y/o robustez. El algoritmo de control
implementado por éste puede estar realizado mediante lógica difusa, denominándose en tal
caso controlador difuso. En muchas ocasiones se utilizan controladores difusos cuando el
modelo de la planta es desconocido, o demasiado complejo como para ser obtenido, por lo que
se suele hablar de sistema de control difuso siempre que se emplea un controlador basado en
lógica difusa en el sistema.
A continuación se describen las definiciones y operaciones principales de la lógica
difusa, así como las fases y conceptos asociados a la generación de conocimiento basado en un
conjunto de reglas.
a) Conjuntos difusos y funciones de pertenencia
Los conjuntos difusos son una extensión de los conjuntos ordinarios que permiten
tratar la imprecisión de forma matemática.
Un conjunto ordinario contiene la totalidad de los entes que poseen una propiedad
común. Es decir, dada una propiedad de definición de un conjunto, todos los elementos que
cumplan dicha propiedad pertenecerán al conjunto, y el resto no. Cuando la propiedad es clara,
la pertenencia o no de los elementos a un conjunto queda perfectamente definida, sin
embargo, si la definición de un conjunto se realiza de forma ambigua o imprecisa, será
imposible saber con certeza si ciertos elementos pertenecen o no al conjunto. Por ejemplo,
dado un conjunto de números, su pertenencia al conjunto de números mayores de 100 está
perfectamente definida, pero la pertenencia de éstos al conjunto de números mucho mayores
de 100 ya no estaría tan clara, al ser su definición imprecisa.
La diferencia entre un conjunto difuso y uno ordinario es que los límites de los difusos
no están definidos de forma estricta, sino mediante una función denominada función de
18
pertenencia. En la lógica clásica, un elemento pertenecerá o no a un determinado conjunto
(grado de pertenencia 1 ó 0 respectivamente), mientras que en la lógica difusa, un elemento
puede pertenecer a un conjunto con un grado de pertenencia entre 0 y 1. Al igual que en la
lógica clásica, los valores 1 y 0 representan respectivamente la pertenencia absoluta o no del
elemento al conjunto, pero en el caso difuso se puede pertenecer a un conjunto con un grado
intermedio.
Un concepto fundamental en la teoría de conjuntos difusos es el grado de pertenencia.
El grado de pertenencia representa la calidad, expresada con un número entre 0 y 1, con la que
un elemento pertenece a un determinado conjunto; es decir, la compatibilidad del elemento
con el concepto representado por el conjunto.
La función que permite obtener el grado de pertenencia de un elemento a un conjunto
difuso se denomina función de pertenencia, y se suele denotar mediante el símbolo griego µ. La
función de pertenencia del conjunto difuso A se denota como µA, y el grado de pertenencia del
elemento x al conjunto difuso A, como µA(x). El dominio de definición de la función de
pertenencia del conjunto A se conoce como universo de discurso de dicho conjunto, y recoge
todos los posibles valores de la variable x que pueden ser evaluados mediante la función de
pertenencia µA(x). De esta forma, un subconjunto difuso A de un conjunto X, puede definirse
mediante una aplicación µA que relaciona cada elemento x ∈ X con su grado de pertenencia al
conjunto A, µA(x) ∈ *0, 1+. El grado de certeza de la afirmación x pertenece a A depende de la
definición de la aplicación µA(x), de forma que mientras más se aproxime el grado de
pertenencia a uno, mayor veracidad tendrá dicha afirmación [2,4].
Definiciones básicas
Definición 1.1 Conjunto difuso. Sea X un conjunto no vacío, un conjunto borroso A está
caracterizado por:
µA(x): X → *0, 1+, (1.1)
donde µA(x) representa el grado de pertenencia del elemento x sobre el conjunto borroso A
para cada x ∈ X. A está completamente determinado por el conjunto de pares:
A = (x, µA(x)), x ∈ X (1.2)
Como se observa en la expresión (1.2), un conjunto difuso queda caracterizado
mediante su función de pertenencia.
19
En la Figura 1.1, se pueden observar distintos ejemplos de funciones de pertenencia,
todas ellas con un universo de discurso X ∈ *−5, 5+. La primera, µA(x), es la función de
pertenencia de un conjunto nítido, ya que sólo genera grados de pertenencia 0 ó 1, mientras
que el resto son funciones de pertenencia difusas: µB(x) es una función de pertenencia no
convexa definida a trozos, µC(x) una gaussiana y µD(x) una función de pertenencia S.
Figura 1.1 Ejemplos de funciones de pertenencia.
Definición 1.2 Conjunto difuso normalizado. Sea A un conjunto difuso definido en X, se
dice que A es un conjunto borroso normalizado si y sólo si 0 ≤ µA(x) ≤ 1. Dado que un grado de
pertenencia mayor de uno no tiene mucho sentido lógico, normalmente siempre se emplean
conjuntos borrosos normalizados, aunque no se mencione explícitamente.
Definición 1.3 Conjunto difuso nulo o vacío. Sea A un conjunto difuso definido en X, se
dice que A es un conjunto difuso nulo o vacío, A = ∅, si y sólo si µA(x) = 0, ∀x ∈ X. Es decir, A es
un conjunto difuso nulo si no existe ningún elemento cuyo grado de pertenencia al conjunto sea
distinto de cero.
20
Definición 1.4 Frontera de un conjunto difuso. Sea A un conjunto difuso definido en X,
la frontera de A es el subconjunto de X cuyos elementos tienen grados de pertenencia en A
comprendidos entre cero y uno.
Definición 1.5 Peso o altura de un conjunto difuso. Sea A un conjunto difuso definido
en X, el peso o altura de A es el máximo valor de la función de pertenencia µA. Si A es un
conjunto difuso normal (y normalizado), su peso será 1.
Tipos básicos de funciones de pertenencia
A continuación se definirán las funciones de pertenencia más comúnmente utilizadas,
indicando en cada caso sus características y propiedades.
1.- Función de pertenencia triangular. Una función de pertenencia triangular, Tri[a, b,
c+(x), con a ≤ b ≤ c, se define según la expresión (1.3).
µTri[a, b, c](x) =
𝑥−𝑎
𝑏−𝑎 𝑠𝑖 𝑎 < 𝑥 ≤ 𝑏
𝑐−𝑥
𝑐−𝑏 𝑠𝑖 𝑏 < 𝑥 < 𝑐
0 𝑒𝑛 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜
(1.3)
Figura 1.2 Función de pertenencia triangular.
21
En la Figura 1.2 se representa la función de pertenencia Tri*−6, 4, 7+(x), cuyo universo
de discurso es X ∈ *−10, 10+. El soporte de esta función coincide con el intervalo (−6, 7), y su
núcleo con el valor 4.
2.- Función de pertenencia trapezoidal. Una función de pertenencia trapezoidal,
Trap*a, b, c, d+(x), siendo a ≤ b ≤ c ≤ d se define según la expresión (1.4).
µTrap[a, b, c, d](x) =
𝑥−𝑎
𝑏−𝑎 𝑠𝑖 𝑎 < 𝑥 < 𝑏
1 𝑠𝑖 𝑏 ≤ 𝑥 ≤ 𝑐𝑑−𝑥
𝑑−𝑐 𝑠𝑖 𝑐 < 𝑥 < 𝑑
0 𝑒𝑛 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜
(1.4)
Figura 1.3 Función de pertenencia trapezoidal.
En la Figura 1.3 se representa un ejemplo de función de pertenencia trapezoidal con universo de discurso X ∈ *−10, 10+. En este caso, dicha función puede definirse como Trap*−8,−5, 1, 8+(x). El soporte de dicha función coincide con el intervalo (−8, 8), y su núcleo con *−5, 1+.
3.- Función de pertenencia gaussiana. Una función de pertenencia gaussiana, Gauss[c, β+(x), se define según la expresión (1.5), siendo c su centro y β > 0 el ancho de la función de pertenencia.
µGauss[c, β](x) = e−
𝑥−𝑐
𝛽
2
(1.5)
22
En la Figura 1.4 se muestra un ejemplo de función de pertenencia gaussiana, cuyo
centro es c = 3 y su ancho β = 1,5. Un posible valor finito para el soporte podría ser (c− 2β, c +
2β), lo que en este ejemplo concreto sería (0, 6).
Figura 1.4 Función de pertenencia gaussiana.
4.- Función de pertenencia campana. Una función de pertenencia campana,
Campana*α, β, c+(x), se define según la expresión (1.6), siendo c el centro de la función de
pertenencia, y α > 0 y β = 0 dos parámetros de ajuste. El parámetro α tiene relación con el
ancho de la función por su parte baja, o pies, mientras que el parámetro β, normalmente
positivo, tiene relación con el ancho de la función de pertenencia por la zona alta, u hombros. Si
β < 0, la función de pertenencia toma la forma de una campana invertida y puede ser
interesante para predicados de tipo negación (Si x no es . . . ).
µCampana*α, β, c+(x) =1
1+ 𝑥−𝑐
∝ 2𝛽 (1.6)
En la Figura 1.5 se pueden ver dos funciones de pertenencia campana, una con β = 3 y
la otra con β = −3. En ambos casos se ha tomado α = 4 y c = −2.
23
Figura 1.5 Funciones de pertenencia campana.
5.- Función de pertenencia S. La función de pertenencia S, S[a, b](x), siendo a ≤ b,
permite establecer una transición suave desde un valor de pertenencia nulo a un valor de
pertenencia uno. Se define según la expresión (1.7). En la Figura 1.6 se muestra un ejemplo de
función S, con a = −2 y b = 6.
µS[a, b](x) =
0 𝑠𝑖 𝑥 ≤ 𝑎
2 𝑥−𝑎
𝑏−𝑎
2
𝑠𝑖 𝑎 < 𝑥 ≤𝑎+𝑏
2
1 − 2 𝑏−𝑥
𝑥−𝑎
2
𝑠𝑖 𝑎+𝑏
2< 𝑥 < 𝑏
1 𝑠𝑖 𝑥 ≥ 𝑏,
(1.7)
6.- Función de pertenencia Z. La función de pertenencia Z, Z[a, b](x), siendo a ≤ b,
permite establecer una transición suave desde un valor de pertenencia uno a un valor de
pertenencia nulo. Se define según la expresión (1.8).
µZ[a, b](x) =
1 𝑠𝑖 𝑥 ≤ 𝑎
1 − 2 𝑥−𝑎
𝑎−𝑏
2
𝑠𝑖 𝑎 < 𝑥 ≤𝑎+𝑏
2
2 𝑏−𝑥
𝑎−𝑏
2
𝑠𝑖 𝑎+𝑏
2< 𝑥 < 𝑏
0 𝑠𝑖 𝑥 ≥ 𝑏,
(1.8)
24
Figura 1.6 Función de pertenencia S.
En la Figura 1.7 se muestra un ejemplo de función Z, con a = −2 y b = 6.
Figura 1.7 Función de pertenencia Z.
7.- Función de pertenencia singleton o punto difuso. Una función de pertenencia
singleton, o punto difuso, definida sobre x0 es aquella función de pertenencia cuyo soporte y
núcleo es sup(A) = nuc(A) = x0. También se puede utilizar la notación A = x0. La función de
25
pertenencia singleton es denominada también conjunto difuso escalar. En la Figura 1.8 se
muestra a modo de ejemplo la función de pertenencia singleton A = 0,2.
Figura 1.8 Función de pertenencia Singleton.
Operaciones sobre conjuntos borrosos
1.- Intersección. La operación intersección de dos conjuntos difusos A y B, cuyas
funciones de pertenencia son µA(x) y µB(x), respectivamente, se define como un conjunto
borroso C = A ∩ B cuya función de pertenencia se relaciona con las de A y B mediante la
ecuación (1.8). En la Figura 1.9 se muestra un ejemplo de la operación intersección entre dos
conjuntos difusos.
µC(x) = µA∩B (x) = min µA(x), µB(x), ∀x ∈ X (1.8)
La ecuación (1.8) también se puede escribir de forma abreviada como:
µC = µA ∧ µB (1.9)
La operación de intersección definida a través de la función mínimo se suele
denominar intersección clásica, ya que fue la definida originalmente por el profesor Zadeh.
Posteriormente han aparecido otros operadores de intersección lógica que se pueden englobar
26
en las denominadas T–normas. Estos operadores se verán con mayor detenimiento en la
definición 1.6.
Figura 1.9 Intersección entre conjuntos difusos.
2.- Unión. De forma análoga a la operación intersección, la unión de dos conjuntos
difusos A y B, cuyas funciones de pertenencia son µA(x) y µB(x), respectivamente, puede
definirse como un conjunto difuso C = A ∪ B cuya función de pertenencia se relaciona con las de
A y B mediante la expresión (1.10). La función máximo se emplea para definir el operador de
unión clásico, sin embargo, la operación de unión lógica puede generalizarse a través de las S–
normas, tal como se verá en la definición 1.7. Una muestra de la operación de unión clásica
puede verse en la Figura 1.10.
µC(x) = µA∪B (x) = max µA(x), µB(x), ∀x ∈ X (1.10)
La ecuación (1.10) también se puede escribir de forma abreviada como:
µC = µA ∨ µB. (1.11)
27
Figura 1.10 Unión entre conjuntos difusos.
Figura 1.11 T–normas producto y producto acotado.
Definición 1.6 Normas triangulares o T–normas. Una norma triangular, o T–norma
representa un modelo genérico para la intersección lógica (operador lógico Y o AND). La
condición de frontera que debe cumplir una función para que pueda considerarse como norma
triangular es que sea de identidad unitaria, es decir, que T(x, 1) = x, para todo x ∈ [0, 1]. En la
28
Tabla 1.1 se muestran algunas de las principales T–normas, y en la Figura 1.11 se presentan a
modo de ejemplo el resultado de aplicar las T–normas producto y de Lukasiewicz a dos
conjuntos difusos. El orden de aplicación de las T–normas no afecta al resultado final.
Tabla 1.1 T–normas principales.
Definición 1.7 T–conorma o S–norma. Una conorma triangular, también llamada T–
conorma o S–norma, representan un modelo genérico para la unión lógica (operador lógico O u
OR). En la tabla 1.2 se muestran algunas de las principales S–normas, y en la Figura 1.12 se
muestra el resultado de aplicar las S–normas suma–producto y de Lukasiewicz a dos conjuntos
difusos.
Aunque las T–normas y S–normas no pueden ordenarse, sí que puede identificarse claramente
la mayor y menor de ellas. Así, la mayor de las T–normas es la función mínimo y la menor el
producto drástico. En el caso de las S–normas, la mayor es la suma drástica, y la menor la
función máximo. El resto de T–normas y S–normas están comprendidas entre éstas.
30
b) Variables lingüísticas
Una variable lingüística es una variable cuyos valores son palabras o sentencias en un
idioma natural o artificial. El concepto de variable lingüística fue introducido por Zadeh y
desarrollado posteriormente por él mismo en varios trabajos. Las variables lingüísticas permiten
el acercamiento de la lógica difusa al lenguaje natural, facilitando la utilización lógica del
lenguaje ordinario y eludiendo así las deficiencias del lenguaje preciso en el área del control.
Tal como se puede ver en la Figura 1.13, cada término lingüístico se representa de
forma cuantitativa mediante una función de pertenencia o distribución de posibilidad. En este
caso, la variable lingüística edad se ha representado mediante las etiquetas lingüísticas niño,
joven, adulto y anciano. Los términos niño y anciano se han creado utilizando funciones de
pertenencia trapezoidales, la etiqueta joven mediante una función gaussiana, y adulto
empleando una gaussiana doble.
Figura 1.13 Variable lingüística edad.
Para un mismo universo de discurso, cuanto mayor sea el número de términos
lingüísticos empleados para representar una variable, mayor precisión se podrá obtener del
sistema difuso. Evidentemente, al tener un número mayor de etiquetas lingüísticas cada una de
ellas representará un subespacio menor, por lo que se podrá caracterizar el sistema más
finamente; sin embargo, también tendrá mayor complejidad. Según Miller, el número de
valores capaces de discriminar un ser humano varía entre cinco y nueve. Otro detalle a tener en
31
cuenta si se desea hacer un tratamiento lingüístico del sistema difuso, es que normalmente se
debe escoger un número impar de etiquetas. De esta forma existirá una etiqueta central.
Cuando la dimensionalidad del espacio entrada–salida es grande, el número de reglas
necesario para producir un recubrimiento suficientemente fino de todo el universo de discurso
se incrementa exponencialmente. Esto es lo que se denomina problema de la dimensionalidad
de los sistemas difusos.
Una forma de reducir este problema consiste en emplear procedimientos automáticos
para la selección de reglas, de forma que se tenga más precisión en las zonas que lo requieran
sin aumentar excesivamente el número de éstas. En cualquier caso, tanto para la elección del
número como para la distribución de las etiquetas lingüísticas se requiere de un análisis
detallado del problema.
c) Regla difusa
Un regla difusa es una sentencia condicional que tiene la estructura Si–Entonces (If-
Then), siendo el conjunto de reglas de un sistema difuso lo que se conoce como base de reglas
o base de conocimiento del sistema. En su forma más simple, una regla difusa viene dada por la
expresión (1.12), aunque esta expresión puede hacerse más compleja mediante la aplicación de
operadores de negación, unión, intersección, modificadores lingüísticos, etc.
Si x es A entonces y es B (1.12)
La premisa de la regla, es decir, la condición, se conoce como antecedente, mientras
que la consecuencia se conoce como consecuente. El consecuente de una regla puede ser un
conjunto difuso, un punto difuso, o una función dependiente de las entradas.
El operador que relaciona la premisa con la consecuencia se conoce como operador de
implicación, y se representa lingüísticamente con el adverbio entonces (then). Basándose en
cada una de ellas se pueden generar distintas funciones en base a T–normas y S–normas. En la
Tabla 1.3 se presentan varios operadores de implicación, siendo los más importantes y
utilizados los operadores de Mamdani y Larsen.
32
Tabla 1.3 Operadores de implicación.
Nombre µImplicación(x, y)
Mamdani (mínimo) min µA(x), µB(y)
Larsen (producto) µA(x) µB(y)
Reichencach 1 − µA(x) + µA(x) µB(y)
Lukasiewicz min ,1, 1 − µA(x) + µB(y)-
Willmott max ,1 − µA(x),min ,µA(x), µB(y)--
Kleene–Dienes max ,1 − µA(x), µB(y)-
d) Sistema de inferencia difuso
Los sistemas de inferencia difusos son algoritmos basados en la lógica difusa y el
razonamiento aproximado. En función de la aplicación a la que se destine el sistema de
inferencia éste puede denominarse de distintas formas: modelo difuso, sistema experto difuso,
controlador difuso, memoria asociativa difusa, etc. Los sistemas de inferencia difusos se
componen básicamente de dos elementos, el motor de inferencia y la base de conocimiento,
sin embargo, según la aplicación para que vaya a emplearse el sistema de inferencia, puede ser
necesario añadir elementos adicionales, como la fuzificación y la defuzificación que permiten
conectar al sistema de inferencia difuso con el mundo real . A continuación se estudiarán cada
uno de los elementos de un sistema de inferencia difusa, cuya configuración puede verse en la
Figura 1.14.
Figura 1.14 Sistema de inferencia difuso.
33
Fuzificación
En muchos casos, especialmente en sistemas de control, las entradas que deben
aplicarse a un sistema difuso son valores numéricos concretos, no difusos, procedentes
generalmente de sensores, por lo que es necesario establecer un interfaz con el motor de
inferencia difusa que elabore conjuntos difusos a partir de entradas no difusas. Este interfaz se
conoce como fuzificación.
Inferencia difusa
El motor de inferencia difusa es el mecanismo que permite obtener la salida de un
sistema difuso en función de sus reglas y las entradas que le sean aplicadas. Esta salida puede
ser tanto un conjunto difuso como un valor numérico, según se requiera por la aplicación. Para
realizar la inferencia se deben seguir los pasos siguientes:
En primer lugar es necesario calcular el grado de cumplimiento de cada antecedente en
función de la entrada del sistema. Si se utiliza un fuzificador tipo singleton, este valor se
obtendrá directamente de la intersección de la entrada con la función de pertenencia
del antecedente; mientras que si la entrada está representada por una función de
pertenencia no singleton, será necesario aplicar un operador de intersección, una T–
norma, sobre dichos conjuntos.
Una vez calculados todos los antecedentes de cada regla, se componen según la
definición lingüística de la misma, es decir, aplicando los operadores de intersección
para condiciones Y, y los de unión para condiciones O. Esta medida proporciona un valor
que representa la calidad con la que las reglas son satisfechas por la condición de
entrada del sistema difuso, esto es, su grado de activación.
Mediante el operador de implicación, Entonces, se obtiene el consecuente resultante de
cada regla. En aplicaciones relacionadas con el control de procesos, los operadores de
implicación más utilizados son las T–normas mínimo y producto. Al emplear el operador
mínimo, la función de pertenencia del consecuente es recortada a la altura definida por
el grado de veracidad de la regla; mientras que si se emplea el operador producto, la
salida es escalada según dicho grado de veracidad.
Por último, la regla composicional u operador de agregación, combina los resultados de
todas las reglas, esto es, el resultado de la base de reglas, en un único conjunto difuso.
El máximo y la suma acotada suelen ser las S–normas más utilizadas para obtener el
conjunto difuso de salida.
Si la aplicación requiere que la salida del sistema difuso sea numérica, se necesitará
aplicar una defuzificación a la misma.
34
El motor de inferencia puede verse matemáticamente como un esquema de
interpolación no lineal, ya que permite la fusión de la información de múltiples reglas en una
conclusión única. Esta conclusión se obtiene a partir de la combinación de los consecuentes de
las reglas del sistema, ponderadas según una función del grado de cumplimiento de cada una
de ellas.
En la Figura 1.15, se muestra un ejemplo de inferencia tanto para una entrada difusa
pura (Entrada 1), como para un punto difuso (Entrada 2). El grado de activación de la primera
regla se obtiene mediante el máximo valor de la intersección clásica entre el conjunto difuso de
entrada y el del antecedente. Este valor es propagado hacia el consecuente de la regla,
obteniéndose el conjunto difuso de salida de ésta mediante el operador de implicación
producto. Para la segunda regla, el grado de activación se obtiene evaluando la función de
pertenencia del Antecedente 2 en el punto dado por la Entrada 2. Este grado de activación es
propagado hacia su consecuente, obteniéndose mediante el operador de implicación mínimo el
conjunto difuso de salida de la segunda regla. El conjunto difuso final resultado de las dos
reglas, obtenido con el operador de conjunción máximo, puede observarse en la Figura 1.16.
Figura 1.15 Ejemplo de inferencia.
35
Figura 1.16 Ejemplo de defuzificación.
Base de conocimiento
La base de conocimiento almacena las relaciones existentes entre las entradas y salidas
del sistema. Basándose en este conocimiento, el proceso de inferencia obtendrá las salidas
asociadas a las entradas del mismo. Este elemento puede subdividirse en dos partes: la base de
datos y la base de reglas. La base de datos contiene la definición de las variables lingüísticas
empleadas en las reglas, es decir, las funciones de pertenencia que definen cada una de las
etiquetas lingüísticas. La base de reglas contiene la colección de reglas lingüísticas del sistema.
Ésta puede representarse como una lista de reglas, que es la forma más habitual, o mediante
una tabla o matriz de decisión, que proporciona un formato más compacto si existen pocas
variables.
Existen varios métodos para la obtención de las reglas de un sistema difuso, entre los
que cabe destacar:
Basados en el conocimiento de un experto, o heurísticos. Generalmente se obtiene su
conocimiento mediante unos cuestionarios cuidadosamente organizados que permitan
la generación de reglas del tipo Si–Entonces.
Basados en las acciones de control de un operador, en función de los datos de entrada–salida observados durante un período suficientemente amplio de operación.
Basados en aprendizaje mediante algoritmos automáticos.
36
Defuzificación
Cuando la salida del sistema de inferencia es un conjunto difuso pero la aplicación
requiere que sea un valor numérico concreto, es necesario emplear defuzificación. Este
elemento convierte dicho conjunto en un valor numérico del universo de discurso de salida que
será representativo de la conclusión obtenida. A continuación se presentarán los métodos de
defuzificación más comunes, cuya representación gráfica, respecto del conjunto difuso final de
salida difuso, puede verse en la Figura 1.16.
Método del centro de gravedad o del centroide. La salida numérica de esta defuzificación
se obtiene calculando el centro de gravedad del conjunto difuso de salida. Siendo D(y) el
conjunto difuso de salida, su valor, mediante este método 𝑦𝑜 , se obtiene a partir de la
ecuación (1.13). En la ecuación (1.14) se muestra la versión para valores discretos.
Aunque es más costoso computacionalmente que otros métodos de defuzificación, este
método es sin duda el más empleado, ya que proporciona variaciones suaves y
continuas de los valores de salida.
𝑦𝑜 = 𝑦𝜇𝐷 𝑦 𝑑𝑦
𝜇𝐷 𝑦 𝑑𝑦 (1.13)
𝑦𝑜 = 𝑦𝜇𝐷 𝑦
𝜇𝐷 𝑦 (1.14)
Método de la máxima pertenencia. Siendo D(y) el conjunto difuso de salida, el valor
numérico 𝑦𝑜 obtenido mediante la defuzificación del máximo se corresponde con el
valor de 𝑦 para el que 𝜇𝐷 𝑦 alcanza su máximo valor. Puesto que pueden existir
múltiples valores para los que 𝜇𝐷 𝑦 tenga un mismo valor máximo, se hace necesario
escoger algún método para elegir el valor de 𝑦𝑜 . Estos métodos son (ver figura 1.16): el
menor de los máximos, el centro de los máximos y el mayor de los máximos. La
defuzificación de la máxima pertenencia se caracteriza por ser de muy fácil
implementación, sin embargo, genera cambios bruscos en la salida que en muchas
aplicaciones no son admisibles.
Método del centroide indexado. Este método calcula el centro de gravedad de la parte
correspondiente al conjunto difuso inferido cuyo grado de pertenencia sea mayor de un
determinado valor λ.
37
e) Tipos de sistemas difusos
En función de la forma de las reglas y del tipo de entradas y salidas, se distinguen
cuatro tipos de sistemas difusos: los sistemas puros, los sistemas de tipo Mamdani, los de
Sugeno o TSK y los modelos aditivos de Kosko o SAM, junto con algunas variantes como los
modelos de Tsukamoto.
Sistema difuso puro
Los sistemas difusos puros son sistemas cuyas entradas y salidas son conjuntos difusos.
Al no necesitar realizar ninguna transformación sobre las entradas o salidas, están compuestos
tan sólo por la base de conocimiento y el motor de inferencia.
Modelo Mamdani
El esquema de control difuso de Mamdani consta, según se muestra en la figura 1.14,
de un motor de inferencia, una base de conocimiento y unos interfaces tanto de fuzificación
como de defuzificación para procesar las entradas y salidas del sistema. Los sistemas difusos de
tipo Mamdani presentan una serie de ventajas que propician su utilización en el ámbito del
control:
Los modelos de tipo Mamdani se comportan como aproximadores universales.
Pueden utilizarse en aplicaciones reales, ya que tratan con facilidad entradas y salidas
reales.
Proporcionan un marco natural para la inclusión del conocimiento de expertos en forma
de reglas lingüísticas.
Existe gran libertad a la hora de escoger el método de inferencia difusa, así como los
interfaces de fuzificación y defuzificación.
Por el contrario, también poseen una serie de limitaciones:
Falta de flexibilidad debido a la rigidez con que se particionan los espacios de entrada y
salida.
No existe una distinción clara entre el conocimiento experto y la definición de las
variables lingüísticas incluidas en las reglas difusas.
Cuando las variables de entrada al sistema dependen unas de otras, es muy complicado
obtener una partición difusa adecuada de los espacios de entrada.
El tamaño de la base de conocimiento depende directamente del número de variables y
términos lingüísticos que existan en el sistema.
38
La interpretabilidad del sistema está ligada a la utilización de un número no excesivo de
reglas, lo cual generalmente va en contra de la precisión del sistema difuso
implementado.
La base de reglas de un sistema Mamdani se configura mediante un conjunto de reglas
de la forma:
Regla 𝑟 ∶ 𝑆𝑖 𝑥1 𝑒𝑠 𝐴1𝑟 𝑦 𝑥2 𝑒𝑠 𝐴2
𝑟 𝑦 … 𝑦 𝑥𝑛 𝑒𝑠 𝐴𝑛𝑟 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝑦 𝑒𝑠 𝐵𝑟 (1.15)
donde 𝑥1, 𝑥2, . . ., 𝑥𝑛son las entradas del sistema, 𝐴1𝑟 , 𝐴2
𝑟 , . . . , 𝐴𝑛𝑟 n son los conjuntos difusos del
antecedente de la regla 𝑟, 𝑟 = 1..R, definidos en los universos de discurso de sus entradas
asociadas, 𝑦 es la salida del sistema, y 𝐵𝑟 el conjunto difuso consecuente de la regla 𝑟, definido
en el universo de discurso de la salida 𝑦. En este tipo de sistemas, tanto las entradas 𝑥𝑖 , i = 1...n,
como la salida 𝑦 son valores numéricos.
El grado de activación de la regla, 𝑤𝑟 , se obtiene mediante la aplicación del operador
de intersección, que normalmente será alguna de las T–normas. La salida difusa del motor de
inferencia, µB, se calcula agregando mediante una regla composicional, normalmente una S–
norma, los efectos de todas las reglas del sistema. Finalmente, la defuzificación calcula la salida
numérica del sistema. Nótese que en los sistemas de tipo Mamdani tanto los antecedentes
como los consecuentes están formados por conjuntos difusos, mientras que las entradas y
salidas son valores numéricos.
Uniendo la interpretabilidad de sus reglas a la capacidad aproximadora universal de
estos modelos, se tiene que los modelos difusos de Mamdani son una herramienta
tremendamente poderosa para el análisis y control de sistemas complejos. No obstante, una
buena aproximación con un modelo difuso de tipo Mamdani puede requerir de un número
elevado de reglas, por lo que la interpretabilidad del sistema queda mermada conforme
aumenta su complejidad.
Modelo aditivo estándar, SAM
SAM por sus siglas en inglés (Standard Additive Model), es un caso particular de los
modelos difusos aditivos. Fue propuesto por Bart Kosko. La principal ventaja de los modelos
aditivos es su eficiencia, ya que las reglas pueden precomponerse en un formato menos costoso
computacionalmente.
39
El esquema de inferencia de un sistema SAM es similar al de los modelos TSK que se
verán posteriormente, ya que ambos generan su salida en base a la suma ponderada de las
consecuencias de cada una de las reglas de la base de conocimiento. Sin embargo, la estructura
de las reglas de un sistema SAM es idéntica a las de los modelos de Mamdani, por lo que
podrían considerarse como una variación de éstos. No obstante, existen cuatro diferencias
fundamentales entre los esquemas de inferencia de los sistemas SAM y Mamdani:
En los modelos SAM la entrada (x) se considera siempre como un punto difuso.
Para la inferencia se utiliza el operador producto, frente al operador mínimo que suele
emplearse en los modelos de Mamdani.
Frente al operador máximo que emplean los modelos de Mamdani, en los modelos SAM
la combinación final (D) de las conclusiones parciales de cada regla difusa (D′r), se realiza
mediante una suma ponderada según los pesos ω. Esta forma de operar sitúa a los
modelos SAM más cerca estructuralmente de los modelos TSK que de los Mamdani.
La salida (y) de un modelo aditivo estándar se calcula mediante la adición de las salidas
parciales ponderadas, mientras que en los de Mamdani se debe especificar una
defuzificación.
Modelo de Tsukamoto
Este modelo, propuesto por Tsukamoto en 1979, se caracteriza por representar el
consecuente de cada regla difusa mediante un conjunto difuso con una función de pertenencia
monótona. La salida inferida por cada regla es un valor numérico inducido por el grado de
activación de la regla. La salida global se toma como la media ponderada de todas las salidas
parciales. Este tipo de modelos permiten eliminar el consumo de tiempo correspondiente a la
defuzificación, sin embargo, no son modelos muy utilizados por no ser tan transparentes como
los de Mamdani o Sugeno. El mecanismo de inferencia no sigue estrictamente la regla
composicional de inferencia y la salida es siempre numérica, incluso cuando las entradas son
difusas.
Modelo Takagi–Sugeno–Kang (TSK)
Los investigadores japoneses Takagi y Sugeno, con la posterior incorporación de Kang,
propusieron un tipo de sistema difuso que en lugar de emplear reglas completamente
lingüísticas, utiliza como consecuente una función de las variables de estrada del sistema. Este
tipo de sistemas se conoce como modelos Takagi–Sugeno–Kang (TSK), modelos Takagi–Sugeno
40
(TS) o de forma más simplificada, modelos Sugeno. Una regla típica de un sistema TSK tiene la
forma:
Regla 𝑟 ∶ 𝑆𝑖 𝑥1 𝑒𝑠 𝐴1𝑟 𝑦 𝑥2 𝑒𝑠 𝐴2
𝑟 𝑦 … 𝑦 𝑥𝑛 𝑒𝑠 𝐴𝑛𝑟 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝑦𝑟 𝑒𝑠 𝑔𝑟(𝒙) (1.16)
donde 𝑥𝑖 , i = 1..n, son las entradas del sistema e 𝑦𝑟 es la salida inferida por la regla 𝑟. Los
elementos 𝐴𝑖𝑟 son los conjuntos difusos del antecedente de la regla 𝑟, definidos en los
universos de discurso de sus entradas asociadas. La consecuencia inferida a partir de la regla se
calcula con la función 𝑔𝑟(𝒙), dependiente de las entradas del sistema.
La función consecuente, 𝑔𝑟(𝒙), puede escogerse libremente, aunque los consecuentes
más utilizados en este tipo de sistemas son los polinomios de grado 0 y de grado 1. La salida de
un sistema TSK se calcula mediante la suma ponderada o el promedio ponderado del efecto
individual de todas sus reglas. La suma ponderada es la suma de los valores obtenidos por la
función consecuente, ponderadas por el grado de activación de cada una de las reglas. El
promedio ponderado consiste en dividir la suma ponderada por el sumatorio de las fuerzas de
activación de las reglas. La salida aplicando la suma ponderada o el promedio ponderado, se
obtiene mediante la aplicación de las ecuaciones (1.17) ó (1.18), respectivamente.
𝑦 = 𝑤𝑟𝑦𝑟𝑅𝑟=1 (1.17)
𝑦 = 𝑤 𝑟𝑦𝑟𝑅
𝑟=1
𝑤 𝑟𝑅𝑟=1
(1.18)
La estructura de un sistema difuso TSK, es ligeramente distinta de la estructura típica
vista en los apartados anteriores. Dispone como todo sistema difuso de un motor de inferencia
y una base de conocimiento, pero como las entradas al sistema son siempre numéricas, y su
efecto sobre las salidas se calcula directamente mediante la aplicación de las ecuaciones
anteriores, no es necesaria la fuzificación.
La salida de cada una de las reglas es un valor numérico, de forma que tampoco se
requiere defuzificación para generar la salida del sistema. No obstante, es imprescindible algún
mecanismo para agregar todas las conclusiones parciales de las reglas en una única salida. Para
ello se utilizan la suma ponderada o el promedio ponderado. Aunque es muy común nombrar a
esta operación como defuzificación, sobre todo al promedio ponderado que se le suele
denominar defuzificación centro promedio, esto no es estrictamente correcto, ya que su
entrada no es un conjunto difuso.
Los sistemas difusos TSK son una poderosa herramienta para el modelado de sistemas
complejos y altamente no lineales, ya que son aproximadores universales tanto de la función
41
como de su derivada. Además, si se utiliza como consecuente un polinomio de orden 1
completo, es decir, con el término afín distinto de cero, un sistema TSK también puede
aproximar de forma universal la 2ª derivada de una función. La utilización en los sistemas TSK
de un consecuente polinómico permite aproximar funciones con gran precisión y con un
número mucho menor de reglas que los sistemas de tipo Mamdani. No obstante, este aumento
de precisión se consigue a costa de empeorar la interpretabilidad de las reglas.
1.2. Sistema propulsor
La hélice es un órgano mecánico giratorio que produce una impulsión sobre el aparato
en que va montada. Cuando la hélice va instalada delante del motor que la hace girar, o del
aparato, se llama hélice tractora. Si va detrás, se conoce como hélice propulsora.
1.2.1. Conocimientos fundamentales
Las hélices se componen de un cubo o núcleo central y de unas palas, con superficies
helicoidales al funcionar, que están unidas a él. El cubo o núcleo gira movido por el motor.
Como la hélice esta dentro de la atmosfera, al girar produce una cierta presión sobre el aire. La
reacción del aire sobre la hélice da lugar a una traslación de todo el conjunto (hélice, motor,
avión) en el sentido del eje del giro, que dependerá de la inclinación media de las palas con
respecto a dicho eje. En funcionamiento normal dicha inclinación produce un movimiento de
avance, pero si se puede variar la inclinación, la impulsión hacia adelante puede desaparecer, e
incluso invertirse dando un empuje de retroceso o frenado [5].
Las hélices actuales tienen, en general, 2, 3 o 4 palas. (Se han llegado a ensayar de 10
palas). Cada pala puede admitirse que está constituida por una serie de infinitas alas
elementales (de envergadura diferencial) yuxtapuestas. Los perfiles de estas alas elementales
constituyen las secciones sucesivas de una pala, cortando la hélice paralelamente al eje de
rotación. Como es natural, las características de una hélice dependen: de la velocidad del avión
en la dirección del eje de la hélice; del numero de vueltas que da la hélice, en la unidad de
tiempo; del diámetro de la hélice; del numero de palas; y de los ángulos que forman las cuerdas
de los perfiles con el plano de rotación.
Al girar, la hélice avanza. El avance en una revolución se llama paso efectivo de la
hélice. La trayectoria el helicoidal. Si lo que avanza es 𝑝 y el radio de la sección que
consideramos es 𝑟, el ángulo de la trayectoria helicoidal desarrollado (ɸ) se puede calcular por
la ecuación (1.19):
42
𝑡𝑔ɸ =𝑝
2𝑟𝜋 (1.19)
El paso efectivo es menor que el paso geométrico, que es el avance que tendrá la
sección considerada si se moviera en un medio rígido, es decir, el que describirá la cuerda
geométrica del perfil. Hay otro paso, llamado paso aerodinámico, que es el que describirá la
línea de sustentación nula del perfil. En conjunto, los tres pasos pueden representarse como se
indica en la Figura 1.17.
El paso a lo largo de una pala puede ser uniforme o variable, aunque, normalmente, es
variable. Si el paso geométrico fuese uniforme, los ángulos de ataque sucesivos irían
disminuyendo, siendo menores cuanto más cerca del extremo exterior de la pala estuvieran las
secciones. La mayoría de las hélices no tienen un paso geométrico uniforme.
Los perfiles básicos de las palas, que más se suelen usar, son el Clark-Y y el R.A.F.-6
como se muestra en la Figura 1.18. Sin embargo, se han hecho pruebas con otros perfiles, tales
como el USA 35B y los N.A.C.A. 2R200; 6400; 4400 (para la mitad interior) y 2400-34 (para la
mitad exterior), y, algunas veces, cuando los extremos de las palas se acercan a la velocidad del
sonido, se han utilizado, en el 25% exterior de las palas, perfiles tales como los de las series
N.A.C.A. 16, para altas velocidades.
Figura 1.17 Pasos característicos de una hélice.
En los ensayos efectuados con los perfiles Clark-Y y R.A.f.-6 se ha visto que el
rendimiento máximo, con el primero, llega a ser alrededor de un 3% mayor que con el segundo.
Sin embargo, el segundo es superior al primero, para el despegue. El Clark-Y es ventajoso para
pequeños ángulos de ataque, y el R.A.F.-6 para grandes ángulos de ataque.
43
Figura 1.18 Perfiles básicos de las palas en una hélice.
Cerca del cubo o núcleo central deben emplearse perfiles relativamente gruesos,
porque, en esa zona, los efectos de las fuerzas centrifugas y los momentos de flexión son
elevados. Afortunadamente, las fuerzas aerodinámicas, en dicha parte, tienen menor
importancia, por lo que, aunque los perfiles sean peores, desde el punto de vista aerodinámico,
no afectan demasiado a la tracción. Es posible utilizar el mismo perfil base, pero aumentando el
espesor e y haciendo que la sección resultante sea biconvexa.
En las características de una hélice, después del diámetro lo más importante es el paso.
Actualmente se suele dar, por los laboratorios experimentales, el paso geométrico
correspondiente a la sección situada a 0.75R, 0.7R o 2/3R, siendo R el radio de la hélice. La
relación entre este paso y el diámetro de la hélice se llama paso relativo. Llamando 𝑟 al radio de
un sección, el paso geométrico seria: 2𝑟𝜋 . 𝑡𝑔ɸ. Para la sección correspondiente al radio 0.75R,
por ejemplo, dicho paso sería:
2𝜋 . 0.75𝑅 . 𝑡𝑔ɸ (1.20)
y el paso relativo:
2𝜋 .0.75𝑅 .𝑡𝑔ɸ
2𝑅 = 0.75 .𝜋 . 𝑡𝑔ɸ = 2.356 . 𝑡𝑔ɸ (1.21)
Los perfiles aerodinámicos que componen una hélice están sujetos a las mismas leyes y
principios que cualquier otro perfil aerodinámico, por ejemplo un ala. Cada uno de estos
perfiles tiene un ángulo de ataque, respecto al viento relativo de la pala que en este caso es
cercano al plano de revolución de la hélice, y un paso (igual al ángulo de incidencia).
El giro de la hélice, que es como si se hicieran rotar muchas pequeñas alas, acelera el
flujo de aire hacia el borde de salida de cada perfil, a la vez que deflecta este hacia atrás (lo
mismo que sucede en un ala). Este proceso da lugar a la aceleración hacia atrás de una gran
masa de aire, movimiento que provoca una fuerza de reacción que es la que propulsa el avión
hacia adelante. En la Figura 1.19 se ilustran lo ángulos de la hélice.
44
Figura 1.19 Ángulos de la hélice.
Las hélices se clasifican básicamente en hélices de paso fijo y hélices de paso variable.
Se denomina paso de la hélice al ángulo que forma la cuerda de los perfiles de las palas con el
plano de rotación de la hélice.
1.2.2. Hélice de paso fijo
En este tipo de hélices, el paso está impuesto por el mejor criterio del diseñador del
aeroplano y no es modificable por el piloto. Este paso es único para todos los regímenes de
vuelo, lo cual restringe y limita su eficacia; una buena hélice para despegues o ascensos no es
tan buena para velocidad de crucero, y viceversa. Una hélice de paso fijo es como una caja de
cambios con una única velocidad; compensa su falta de eficacia con una gran sencillez de
funcionamiento [6].
En aviones equipados con motores de poca potencia, la hélice suele ser de diámetro
reducido, y está fijada directamente como una prolongación del cigüeñal del motor; las RPM. de
la hélice son las mismas que las del motor. Con motores más potentes, la hélice es más grande
para poder absorber la fuerza desarrollada por el motor; en este caso entre la salida del motor
y la hélice se suele interponer un mecanismo reductor y las RPM de la hélice difieren de las
RPM del motor, este tipo de acoplamientos se ilustran el Figura 1.20.
45
Figura 1.20 Acoplamientos de hélice de paso fijo.
1.2.3. Hélice de paso variable
Este tipo de hélice, permite al piloto ajustar el paso, acomodándolo a las diferentes
fases de vuelo, con lo cual obtiene su rendimiento óptimo en todo momento. El ajuste se realiza
mediante la palanca de paso de la hélice, la cual acciona un mecanismo que puede ser
mecánico, hidráulico o eléctrico. En algunos casos, esta palanca solo tiene dos posiciones: paso
corto (menor ángulo de las palas) y paso largo (mayor ángulo de las palas), pero lo más común
es que pueda seleccionar cualquier paso comprendido entre un máximo y un mínimo.
Para entender cómo funciona el paso variable, partimos de: (1) La mayoría de los
motores de combustión interna obtienen su máxima potencia en un punto cercano al máximo
de RPM. (2) La potencia requerida para volar de forma económica a velocidad de crucero es
usualmente menor a la potencia máxima.
El paso corto, ver Figura 1.21, implica menor ángulo de ataque de la pala y por tanto
menor resistencia inducida, por lo que la hélice puede girar más libre y rápidamente,
permitiendo el mejor desarrollo de la potencia del motor. Esto le hace el paso idóneo para
maniobras en las que se requiere máxima potencia: despegue y ascenso, aunque no es un paso
adecuado para régimen de crucero. Este paso es como las marchas cortas (1ª, 2ª) de la caja de
cambios de un automóvil, que se emplean para arrancar o subir cuestas empinadas pero no son
eficientes para viajar por autopista. Con estas marchas el motor de un automóvil alcanza
rápidamente su máximo de RPM, lo mismo que el motor de un avión con paso corto en la
hélice.
46
El paso largo, ver Figura 1.21, supone mayor ángulo de ataque y por ello mayor
resistencia inducida, lo que conlleva menos RPM en la hélice y peor desarrollo de la potencia
del motor, pero a cambio se mueve mayor cantidad de aire. Con este paso, decrece el
rendimiento en despegue y ascenso, pero sin embargo se incrementa la eficiencia en régimen
de crucero. Volviendo al ejemplo de la caja de cambios, este paso es como las marchas largas
(4ª, 5ª), que son las más adecuadas para viajar por autopista pero no para arrancar o subir una
cuesta empinada. Con estas marchas, el motor del automóvil no desarrolla sus máximas RPM,
pero se obtiene mejor velocidad con un consumo más económico, exactamente lo mismo que
un avión con la hélice puesta en paso largo.
En algunos manuales, se identifica el paso corto con velocidades pequeñas del avión
debido a que las maniobras en las cuales está indicado este paso (despegue, ascenso) implican
baja velocidad en el avión. Por la misma razón se identifica el paso largo con altas velocidades
(crucero) [6].
Figura 1.21 Hélice de paso variable.
47
Capítulo 2
Prototipo
Este capítulo muestra la construcción de un prototipo para producir un movimiento en
las palas de la hélice lo cual repercute en el ángulo de ataque y el paso. De igual forma se
presenta la instalación de la parte electrónica y el sistema de propulsión.
2.1. Sistema electrónico
En el armado del sistema electrónico se comprenden la implementación de
movimiento para el sistema de control, el sistema de radio control y el sistema de alimentación
eléctrica. Para esta etapa se utilizan materiales y equipo de acuerdo a lineamientos de
aeromodelismo con los que cuenta el Laboratorio de Sistemas Dinámicos Controlables. En la
implementación de movimiento para el sistema de control se utiliza un servomotor A6030 de la
marca Spektrum que se muestra en la Figura 2.1 [7].
Figura 2.1 Servomotor Spektrum A6030.
48
Las especificaciones de este tipo de servomotores son:
Tipo: Standard/Digital
Dimensiones: 40*20*37 mm
Peso: 52 g
Torque: 20 Kg-cm @6 V
Velocidad: 0.15 sec/60° @6 V
Engranaje: Metálico de titanio
Voltaje de operación: 4.8 a 6.0 V (4 o 5 celdas)
A este servomotor se le aplica el controlador difuso ya que se le adapta un mecanismo
de piñón-cremallera como se muestra más adelante en la sección 2.2. El objetivo es mandar un
determinado PWM para que el paso de la hélice cambie en función a la altura que alcance la
aeronave y la presión que existe sobre la parte frontal de la misma.
Otro elemento utilizado es el motor brushless (sin escobillas) 480B BL Outrunner
Motor, 960Kv Reverse Shaft, ver Figura 2.2, el cual es el encargado de dar el giro a la hélice, es
decir, es el motor que entrega las RPM a las que trabaja la hélice ya que esta acoplado de forma
directa.
Figura 2.2 Motor brushless.
De a cuerdo a sus especificaciones el motor gira a un máximo de 11520 RPM @ 12v y a
un mínimo de 6720 RPM @ 7v. La palabra brushless se puede traducir como "sin escobillas", las
escobillas son los elementos que hacen contacto en el colector de un motor común. En los
motores de DC más pequeños, son de una aleación de cobre y en motores más grandes son de
un compuesto a base de carbón. Estos motores carecen de colector y escobillas o carbones. En
49
vez de funcionar en DC funcionan en AC, la mayoría se alimentan con una señal trifásica, esta
señal idealmente debería ser sinusoidal, pero en la práctica son pulsos, haciendo que la señal
sea un continua pulsante o bien una continua con mucho componente de AC sin embargo se los
clasifica como de DC porque al igual que los motores comunes tienen imanes permanentes.
Los circuitos reguladores de velocidad (ESC) son los encargados de hacer funcionar el
motor, en el caso de radiocontrol, lo que hacen es medir el tiempo de 1ms a 2ms como un
servo estándar y transformarlo en un máximo y mínimo de RPM para el motor.
Tienen básicamente dos formas de operar, puede ser seteado a una cierta cantidad de
vueltas, supongamos 7000 RPM, para la cual debería entregar cierta corriente programada. Si la
carga aumenta, como podría ser el caso de un rotor de helicóptero, entonces el regulador,
debería entregar más corriente para que se mantengan esas 7000 RPM, el regulador controla la
forma del pulso contraelectromotriz (EMF) y así ajusta la corriente de salida. La otra forma, la
cual es la más común y que usa la mayoría es que el motor inyecta un cierto valor de corriente y
luego mide cual es la velocidad del motor al medir el EMF, de esta forma se auto ajusta [13].
El circuito regulador de velocidad utilizado con el motor brushless antes mencionado
es el 30-Amp Pro Switch-Mode BEC Brushless ESC ilustrado en la figura 2.3.
Figura 2.3 Regulador de velocidad 30-Amp Pro Switch-Mode BEC Brushless.
Otro de los dispositivos que se utilizan es el receptor y el transmisor de radio, los
cuales sirven para controlar el avión desde tierra. Se utiliza un control especializado para
aeromodelos de gran escala aeromodelismo de la misma marca de los servomotores, Spektrum.
Este control cuenta con emisor (5-Channel DX5e) y receptor (AR500 5-Channel sport receiver),
los cuales se muestran en la Figura 2.4. Este control tiene la principal característica de que
trabaja en modulación DSM2/DSMX, tecnología de Spektrum para garantizar un buena
comunicación, el sistema de radio transmite simultáneamente en dos frecuencias, creando
50
doble ruta de RF, y el receptor que se tiene es doble, uno para cada frecuencia del transmisor.
Esta redundancia, mas el hecho de que cada uno de los receptores se encuentra en una
posición ligeramente diferente la cual expone a cada uno a un ambiente de RF diferente, crea
un enlace de RF a prueba de errores en todas condiciones [7].
(a) Transmisor de RF para control del avión. (b) Receptor de RF para control del avión.
Figura 2.4 Control RF para el avión (Spektrum DX7).
Las Especificaciones del transmisor son:
No. de canales: 5
Modulación: DSM2
Banda: 2.4 GHz
Características de programación: Aviones y Helicópteros
Las Especificaciones del receptor son:
No. de canales: 5
Modulación: DSM2
Banda: 2.4 GHz
Tamaño: 21.6 x 30.1 x 12.3 mm
Peso: 7 g
Rango de voltaje: 3.5-9.6 V
Resolución: 2048
Tamaño de antena Principal: 30 mm (2). Secundaria: 30 mm(2)
51
El receptor cuenta con las 5 salidas de los canales de control, en estas salidas se
conectan los servos que se van a controlar. Las 5 salidas son:
AILE (Aileron) En este canal se conecta el servo A6030 para prueba manual del mecanismo.
GEAR Este canal es usado cuando el avión tiene tren de aterrizaje plegable
RUDD (Rudder) En este canal se conectan servos que controlan al timón.
ELEV (Elevators) En este canal se conectan servos que controlan los elevadores.
THRO (Throttle) En este canal se conecta el motor brushless.
2.2. Sistema mecánico
En base a la hélice de paso variable que se ilustra en la Figura 2.5, de dos palas con un
diámetro de 30 cm, el cambio de paso se utiliza para optimizar el rendimiento del motor de
avión principalmente cuando se vuela a velocidad crucero. Esta hélice contiene un mecanismo
interno que permite por medio de un anillo de giro independiente de la hélice, jalar y/o
empujar con un movimiento lineal en el eje horizontal para aumentar o reducir el paso de las
palas. Se puede regular el paso con un tope y unos tornillos esclavos que se tiene en la tapa,
estos mecanismos se muestran en la Figura 2.6. El diseño de esta hélice y el mecanismo es de
patente mexicana de los años 70's [8]
a) Paso corto. b) Paso largo.
Figura 2.5 Hélice de paso variable.
52
La hélice de paso variable tiene un desplazamiento lineal de 7.5mm para producir el
cambio de paso corto a paso largo.
Figura 2.6 Mecanismo de la hélice de paso variable.
En base a las características previamente mencionadas se opto por construir un
mecanismo piñón-cremallera, ver Figura 2.7, ya que permite transformar un movimiento
circular (del servomotor) en un movimiento lineal utilizando una rueda llamada piñón y una
pieza rectilínea llamada cremallera.
El piñón es una pieza dentada circular que gira sobre su propio eje. La cremallera, que
es realmente un engrane recto o plano, puede tener dientes rectos para acoplarse con un
engrane recto, o dientes en ángulo, para acoplarse con un engrane helicoidal. Cuanto más
rápidamente gira la rueda, más rápidamente se desplaza la cremallera [9].
53
Figura 2.7 Mecanismo piñom-cremallera.
Por cada vuelta completa que realice el piñón, la cremallera se desplazará linealmente
tantos dientes como tenga el piñón. Por tanto se desplazará una distancia (𝑑):
𝑑 =𝑧
𝑛, (2.1)
donde: 𝑑 = distancia recorrida por la cremallera 𝑧 = no. de dientes del piñón 𝑛 = no. de dientes por centímetro de la cremallera
Se consiguió un piñón y una cremallera en un deshuesadero de componentes
electrónicos, ver Figura 2.8. La cremallera cuenta con 8 dientes por cm (n) y el piñón tiene un
total de 93 dientes.
En base a la ecuacion (2.1) se calcula la distancia que recorrera la cremallera al dar una
vuelta completa el piñón, lo cual da como resultado una distancia de 11.625cm. A este
resultado aplicamos una sencilla regla de tres para calcular el número de grados necesarios
para producir un desplazamiento lineal de 7.5mm tomando en consideración que 360° equivale
a los 11.625cm calculados. Como resultado se obtiene un desplazamiento angular de 23.22°. Se
decidió hacer girar el servomotor 23° para no forzar el mecanismo hasta sus topes mecánicos.
54
Figura 2.8 Piñón y cremallera.
Una vez que se obtuvo la cantidad de grados que es necesario mover el servomotor
para llevar a la hélice del paso corto al paso largo, se continuo con la elaboración de piezas para
el prototipo, para lo cual se utilizo Nylamid, por su fácil maquinabilidad y por su peso reducido.
2.3. Conjunción y prueba del prototipo
La cremallera fue montada sobre un extremo de una placa delgada de Nylamid, ver
Figura 2.9, por medio de 3 tornillos de 1/8 de pulgada, la cual desliza por unas canaletas
maquinadas del mismo material, ver Figura 2.10. En el extremo contrario a la cremallera, está
unida al anillo de la hélice otra pequeña placa para realizar la acción de empujar o jalar y así
provocar el cambio de paso como se ilustra en la Figura 2.11.
También se utilizaron dos placas de aluminio; en la primer placa se fijó el motor
brushless, el cual controla las RPM de la hélice, la segunda placa se utilizó para fijar el
servomotor que hará girar el piñón los 23° necesarios para efectuar el cambio de paso como se
observa en la Figura 2.12.
Las dos placas de metal están unidas a un pedazo de metal por medio de tornillos de
1/4 de pulgada para asegurar su correcta posición como se ilustra en la Figura 2.13
55
Figura 2.9 Cremallera montada en placa de Nylamid.
a) Vista superior frontal.
b) Vista inferior.
Figura 2.10 Canaletas por donde desliza la placa que contiene a la cremallera.
56
Figura 2.11 Placa que sujeta al anillo de la hélice. Placa de sujeción
Figura 2.12 Placas de aluminio que sujetan al servomotor y al motor
brushless.
58
Para la práctica colocación del prototipo en cualquier superficie plana y evitar
accidentes con la hélice al ser accionado el motor brushless., se soldó un ángulo de pulgada y
media para dar soporte al sistema, ver Figura 2.14.
El prototipo final se muestra en la Figura 2.15, donde se puede apreciar en a) la vista
frontal, en b) la vista superior, en c) la vista lateral derecha y en d) la vista lateral izquierda.
a) Vista frontal. b) Vista superior.
c) Vista lateral derecha. d) Vista lateral izquierda.
Figura 2.15 Diversas vistas del prototipo.
59
Capítulo 3
Diseño e implementación del
controlador difuso
En este capítulo se desarrolla el diseño del controlador difuso en base a un sistema
difuso tipo Mamdani. Se simula el controlador en las plataformas de LabVIEW y MATLAB para
observar su correcto funcionamiento y en la parte final del capítulo se muestra la
implementación del controlador difuso en un microcontrolador dsPIC30F4011.
3.1. Parámetros del controlador
El diseño del controlador difuso, se realiza en base a un sistema difuso tipo Mamdani,
por la fácil inclusión del conocimiento de expertos en forma de reglas lingüísticas para la
manipulación de la hélice de paso variable, así como la facilidad que muestra para trabajar con
entradas y salidas reales. Como T-norma se utiliza el producto.
3.1.1 Conjuntos difusos y funciones de pertenencia
Las entradas que se proponen implementar son un sensor de altura que se simula
como el sensor 1 ya que la altura a la que se encuentra el planeador es un factor determinante
para cambiar de paso de la hélice, así como un sensor de presión del aire sobre el planeador
como sensor 2 para ajustar el paso correcto.
Cada entrada o sensor se representa por 5 funciones de pertenencia; dos funciones
trapezoidales a los extremos para limitar los valores de 0 y 5 (volts), así como tres funciones
60
triangulares en el centro con una relación de proporcionalidad a las entradas de voltaje de los
potenciómetros, lo cual resulta en un universo de discurso entre -1.25 y 6.25 como se muestra
en la Figura 3.1.
Figura 3.1 Conjuntos difusos de entrada s1.
Se definen cinco conjuntos difusos de salida PWM como cinco funciones de
pertenencia triangulares, los cuales se encuentran entre los centros: 2980 y 33941 que
corresponde al valor que será enviado al servomotor para ajustar el paso de la hélice como se
ilustra en la Figura 3.2. Los valores pico de las funciones de pertenencia, es decir donde se
encuentran los centros son; 2980 que equivale a una posición de 90° en el servo, 3083.5,
3187,3290.5 y 3394 que equivale a 113°.
Figura 3.2 Conjuntos difusos de salida PWM.
1 En la sección 3.4.3. se especifica porqué de los valores del los conjuntos difusos de salida.
61
3.1.2 Variables lingüísticas
A los conjuntos de entradas difusas se le asignaron cinco etiquetas lingüísticas
correspondientes a las cinco funciones de pertenencia que tiene cada entrada. La variable
lingüística para la primera entrada s1 se le asigno el nombre de sensor1 y a la entrada s2 se le
asigno el nombre de sensor2.
sensor1 = Pot1= s1 = altura; sensor2 = Pot2 = s2 = presión del aire
0v = NG (etiqueta lingüística Negativo Grande)
1.25v = NP (etiqueta lingüística Negativo Pequeño)
2.5v = Z (etiqueta lingüística Zero)
3.75v = PP (etiqueta lingüística Positivo Pequeño)
5v = PG (etiqueta lingüística Positivo Grande)
De forma gráfica la variable lingüística sensor1, así como las etiquetas lingüísticas
correspondientes a los conjuntos difusos de entrada s1 se pueden observar en la figura 3.3.
Figura 3.3 Variable y etiquetas lingüísticas de la entrada s1.
Para los conjuntos de salida PWM se asigna la variable lingüística Duty y las mismas
etiquetas lingüísticas que a las entradas como se muestra a continuación:
62
PWM =Duty
2980 = NG (etiqueta lingüística Negativo Grande)
3083.5 = NP (etiqueta lingüística Negativo Pequeño)
3187 = Z (etiqueta lingüística Zero)
3290.5 = PP (etiqueta lingüística Positivo Pequeño)
3394 = PG (etiqueta lingüística Positivo Grande)
De forma gráfica la variable lingüística Duty, así como las etiquetas lingüísticas
correspondientes a los conjuntos difusos de salida PWM se pueden observar en la figura 3.4.
Figura 3.4 Variable y etiquetas lingüísticas de la salida PWM.
3.1.3 Reglas difusas
La Tabla de reglas difusas, ver Tabla 3.1, se define en el presente trabajo como una
tabla sintética para probar el controlador difuso sobre la hélice en donde las entradas como se
mencionó anteriormente son dos potenciómetros que entregan valores entre 0 y 5 volts. La
salida difusa es el valor del Duty que es asignado al valor del PWM del servomotor. Para asignar
salidas difusas a Duty se parte de que el sensor 1 representa mayor peso a comparación del
63
sensor 2 en el cambio de paso de la hélice ya que la altura es determinante en el control de la
hélice.
Tabla 3.1 Base de Reglas Duty Sensor 2
NG NP Z PP PG
Sen
sor
1
NG NG NG NG NG NG
NP NG NG NG NG NP
Z NP NP NP Z Z
PP Z Z PP PP PP
PG PP PP PP PG PG
Debido a la mecánica del prototipo, se tiene que invertir el sentido de giro del
servomotor para el correcto cambio de paso, por lo cual solo se modifico la Tabla 3.1 de bases
de reglas, lo cual da como resultado la Tabla 3.2.
Tabla 3.2 Base de Reglas modificada debido a restricciones mecánicas.
Duty Sensor 2
NG NP Z PP PG
Sen
sor
1
NG PG PG PG PG PG
NP PG PG PG PG PP
Z PP PP PP Z Z
PP Z Z NP NP NP
PG NP NP NP NG NG
3.2. Simulación del controlador en LabVIEW
Una vez determinada la estructura del controlador difuso, se simula el mismo en el
Toolkit “Fuzzy System Designer” de LabVIEW para analizar su comportamiento y comparar
resultados con el algoritmo desarrollado en lenguaje C que se muestra en la sección 3.4. La
ubicación de este Toolkit dentro de LabVIEW se ilustra en la Figura 3.5 [12].
Dentro del Toolkit se construyen las funciones de pertenencia para cada variable de
entrada previamente definida en la sección 3.1. En la Figura 3.6 se ilustran las funciones de
pertenencia para la entrada del sensor1. A su vez la salida Duty también se construye con los
valores previamente definidos en la sección 3.1 como se ilustra en la Figura 3.7. Las reglas son
definidas en base a la Tabla 3.2 con una conectiva de antecedente AND producto (a), un
64
consecuente de implicación mínimo (Mamdani) (b) como se menciono al principio del presente
capítulo y un método de defuzificación de los más empleados, el centro de área (c) como se
ilustra en la Figura 3.8.
Figura 3.5 Toolkit “Fuzzy System Designer”
Figura 3.6 Construcción de las funciones de pertenencia del sensor1.
65
Figura 3.7 Construcción de las funciones de pertenencia de la salida Duty.
Figura 3.8 Elaboración de la tabla de reglas.
Para realizar la simulación del controlador en LabVIEW, en la pestaña Test System se
asignan valores a las entradas sensor1 y sensor2 para monitorear el comportamiento del
sistema. En la Figura 3.9 se ilustra una prueba del sistema donde las entradas son 0 y como
salida se obtiene 3393.97.
66
Figura 3.9 Prueba del sistema en LabVIEW.
En la Figura 3.9, de igual forma se puede observar en la parte inferior el número de
reglas que son activadas, así como el peso de cada una en la decisión tomada. Para el caso de la
entradas igual a 0 la regla que se dispara es la 1, es decir cuando sensor1 y sensor2 son NG la
salida Duty es PG como en la Tabla de reglas 3.2.
En la ventana de simulación se puede observar una curva tridimensional, ver Figura
3.10, que representa la relación de 2-entradas 1-salida. Si se quiere observar un grafica más
suave es necesario incrementar el número de muestras de las entradas desde la ventana de
simulación (Number of input X samples). A partir de esta curva se puede deducir que la entrada
1, es decir el sensor1, tiene mayor peso puesto que representa al sensor de altura.
67
Figura 3.10 Superficie de mapeo del controlador difuso en LabVIEW.
3.3. Simulación del controlador en MATLAB
Con el fin de tener una simulación del controlador difuso en un lenguaje de
programación de alto nivel, similar al que será implementado posteriormente en el
dsPIC30F4011, se utiliza MATLAB para comprobar el controlador. MATLAB ofrece comandos
relacionados directamente al control difuso por lo que la programación se facilita de una
manera considerable. El código completo se encuentra en el apéndice A.
Al ejecutar el programa, se piden dato por dato las entradas del controlador, es decir,
los potenciómetros. Los valores deben ser un número cualquiera entre 0 y 5 que equivale al
rango de voltaje que se definió previamente en el presente capítulo, como se ilustra en la
Figura 3.11. Una vez asignados los valores a cada entrada, el programa entrega la salida u, ver
Figura 3.12, que será programada en el dsPIC directamente al ciclo de trabajo del PWM que
mueve el servomotor, es decir el Duty.
68
a) Asignación del valor del sensor 1. b) Asignación del valor de sensor 2.
Figura 3.11 Asignación de valores a entradas del controlador.
Figura 3.12 Valor de la señal de control (Duty).
69
Al igual que LabVIEW, MATLAB tiene un Toolbox que permite simular de manera
gráfica un controlador difuso por medio del FIS Editor. Este Toolbox se abre al escribir la palabra
fuzzy en el Command Window de MATLAB, el cual se puede observar en la Figura 3.13.
Figura 3.13 FIS Editor.
En la ventana principal del FIS Editor es posible modificar parámetros importantes del
controlador, tales como; el método de implicación, el método AND, el tipo de fuzificación, entre
otros. Se creó un controlador tipo Mamdani con dos entradas y una salida al igual que en
LabVIEW.
Las entradas se designaron con el mismo nombre, sensor 1 y sensor2 con cinco
funciones de pertenencia cada una y con un universo de discurso de -1.25 a 6. La salida se
nombra Duty con el mismo universo de discurso que en LabVIEW, es decir de 2876.5 a 3497.5
con cinco funciones de pertenencia triangulares con centros equidistantes.
70
Figura 3.14 Editor de Reglas de FIS Editor.
La base de reglas se elaboró en función a la Tabla 3.2, que se muestra en la Figura 3.14.
El Toolbox contiene un visualizador de reglas al cual se le pueden asignar valores de entrada
para obtener una salida en base a la estructura del controlador. De manera de comprobación se
utilizaron los valores mostrados en la Figura 3.12 como entrada, el resultado se muestra en la
Figura 3.15.
71
Figura 3.15 Simulación del controlador difuso en el FIS Editor.
Otra característica del FIS Editor es que permite ver la superficie de mapeo
correspondiente a las entradas y salida del controlador como LabVIEW, esta superficie que se
crea, ver Figura 3.16, es prácticamente idéntica a la observada en la Figura 3.10 por lo cual se
demuestra que los resultados de las simulaciones son satisfactorias.
72
Figura 3.16 Superficie de mapeo del controlador difuso en MATLAB.
3.4. Implementación del controlador difuso
Una vez simulado y observado el correcto funcionamiento del controlador difuso en
LabVIEW y MATLAB se desarrolla un algoritmo en lenguaje C programado en el compilador C de
CCS para su implementación en un dsPIC30F4011.
73
3.4.1 Antecedentes MCU, DSP y DSC
Los microcontroladores clásicos, denominados de forma resumida MCU, son circuitos
integrados que contienen un procesador digital complejo junto a diversos periféricos auxiliares
que facilitan el desarrollo de las aplicaciones a las que se dedican. De forma resumida puede
decirse que los DSP son microcontroladores dotados de los recursos físicos y lógicos necesarios
para poder soportar aplicaciones específicas del procesamiento digital de señales.
Las instrucciones aritméticas complejas de los MCU, ver Figura 3.17, se ejecutan en
varios ciclos, mientras que las de los DSP solo precisan uno. En los DSP siempre se dispone de
conversores AD rápidos y precisos. Dado el carácter marcadamente matemático de los
programas para DSP, estos están preparados para ser programados con lenguajes de alto nivel,
como C. La velocidad y el rendimiento de los DSP son muy superiores a los habituales en los
MCU. [10]
(a) (b)
Figura 3.17- En (a), fotografía de un microcontrolador convencional o MCU, en (b) un DSP.
Se puede definir un procesador digital de señales o DSP como un procesador monochip
diseñado para resolver un conjunto de operaciones matemáticas sobre una señal continua o
analógica del mundo real, como sonidos e imágenes, expresada digitalmente como
corresponde al sistema representado en la Figura 3.18. Este procesador de señales se ha
convertido en una de las más poderosas herramientas tecnológicas en las que se sustentaran la
ciencia y la ingeniería del siglo XXI.
74
Figura 3.18 El procesamiento digital de señales básicamente se descompone en 3 etapas: conversión de la señal analógica en digital (CAD), procesamiento de la señal digi- tal y la conversión de la señal procesada a una forma analógica (CDA).
Los DSP pueden asemejarse a los clásicos microcontroladores, pero incorporando
arquitecturas y recurso especiales para poder controlar de forma optima los requerimientos
específicos y los algoritmos manejados en el procesamiento digital de señales analógicas.
Las aplicaciones modernas mezclan las funciones típicas MCU con las de
procesamiento digital de señales (DSP). Esta situación ha impulsado a Microchip a fabricar un
circuito hibrido MCU/DSP, cuyo manejo es similar a los clásicos microcontroladores pero que
incluyen las principales prestaciones de los DSP. Así ha nacido el Controlador Digital de Señales,
abreviadamente DSC (Digital Signal Controller), que reúne las características de un
microcontroladores PIC de16 bits y las de un DSP de gama baja.
Los DSC son unos dispositivos que combinan la arquitectura y la programación de los
microcontroladores PIC de 16 bits con los recursos hardware software necesario para soportar
las prestaciones fundamentales de los DSP.
La primera generación de DSC, denominada dsPIC30F, constituyó un intento por parte
de Microchip de facilitar el acercamiento al mundo del procesamiento digital de señales a sus
usuarios de MCU de 8 y16 bits. Con esta intención se ha mantenido el entorno de la
arquitectura y juego de instrucciones de los MCU tradicionales, pero añadiendo la funcionalidad
y los principales requisitos de los DSP, para facilitar la transición a sus clientes habituales.
Posteriormente, la segunda generación de DSC, llamada dsPIC33F, ha potenciado las
capacidades, el número de periféricos y el rendimiento, permitiendo acceder a campos de
aplicación más complejos.
dsPIC es un nombre genérico que se utiliza para referirse a los Controladores Digitales
de Señales (DSC) que ha diseñado Microchip Technology Inc. Para facilitar a los usuarios de sus
microcontroladores PIC la transición al campo de las aplicaciones de los Procesadores Digitales
de Señales (DSP) [10,11].
75
3.4.2 dsPIC30F4011
El modelo seleccionado es el dsPIC30F4011 de 40 pines con empaquetado físico PDIP
(Plastic Dual Inline Package) como se ilustra en la Figura 3.19. Algunos de los rasgos más
característicos del microcontrolador son:
Arquitectura Harvard modificada
83 instrucciones básicas
Ancho de instrucciones de 24 bits y un ancho de datos de 16 bits
48KB en su memoria de programa
2 KB en memoria RAM
1 KB en memoria EEPROM
Velocidad de operación de hasta 30 MIPS
16 registros de trabajo de 16 bits
Instrucciones DSP son de 1 ciclo
16-bit Compare/PWM funciones de salida
6 PWM canales de salida
10-bit Convertidor Analógico Digital (ADC)
Figura 3.19 Pin diagram dsPIC30F4011 40-Pin PDIP.
Una de las razones por la cual fue seleccionado el dsPIC30F4011 es por el voltaje de
operación, que es de 5 volts a diferencia del voltaje de operación de la familia de los dsPIC33F
que es de 3.3 volts. El ADC de 10 bits es suficiente para obtener una buena lectura de los
76
potenciómetros y la práctica programación en un lenguaje de alto nivel, para este caso lenguaje
C es otra garantía para implementar el controlador difuso en un microcontrolador
dsPIC30F4011.
3.4.3 Implementación en el dsPIC30F4011
El objetivo principal del programa que se desarrolla en el compilador PIC C de CCS es
primeramente leer dos potenciómetros por medio de los canales AN2 y AN3 del ADC, los cuales
serán tratados como los sensores de altura y presión del aire. Una vez capturados estos datos,
se procede a obtener el valor de pertenencia en cada conjunto difuso correspondiente a cada
entrada, es decir sensor 1 y sensor2.
Al realizar el proceso de fuzificación, el valor resultante es el que será asignado al
registro de duty que cambia el PWM para mover el servomotor en función a la tabla de reglas
difusas para conseguir el cambio de paso deseado de la hélice.
Para la programación del controlador se utiliza un oscilador de cristal de 4 MHz lo que
permite trabajar como máximo a 16MIPS y a una frecuencia interna del dsPIC de hasta 64 MHz
con la configuración del fusible XTPLL16 que multiplica la frecuencia del cristal por 16,
mejorando de forma considerable la velocidad de procesamiento.
La frecuencia a la que trabaja el servomotor Spektrum que se describe en la sección 2.1
es de 45.45 Hz, es decir el periodo de la señal PWM es de 22ms. La duración del pulso para
mover el servo de 0° a 180° es de 0.68ms a 2.3ms lo que equivale a un periodo de trabajo de
1.62ms. En base a los 23° que se tiene que mover el servomotor para recorrer de forma lineal
los 7.5mm se establecen los centros de las funciones de pertenencia o membresía de la salida
difusa.
Como las funciones de pertenencia de salida son triangulares con centros
equidistantes, los valores que toman estos centros son obtenidos en relación a un origen en
90°, esto con la finalidad de no forzar al servomotor al llevarlo a uno de sus extremos ya sea 0°
o 180°. El valor inicial es de 1.49ms para 90°. Para obtener los siguientes periodos para llevar el
servomotor a 95.75°, 101.5°, 107.25° y finalmente 113° se realiza una regla de tres como la que
se muestra en la ecuación 3.1 donde x equivale al incremento en el periodo de trabajo cada
5.75°.
.81𝑚𝑠 =90° 𝑥=5.75°
(3.1)
77
De la ecuación 3.1 se obtiene 𝑥, que equivale a 0.05175ms. Esto da como resultado
que las duraciones de los pulsos para 90°, 95.75°, 101.5°, 107.25° y 113° sean 1.49ms,
1.54175ms, 1.5935°, 1.64525ms y 1.697ms respectivamente.
Una vez obtenidos los valores a los cuales el servomotor tiene que trabajar para
efectuar un movimiento angular de 23°, es necesario adaptar estos valores a un registro del
dsPIC que equivale al duty del PWM.
Para obtener 1.49 ms en el duty que corresponden a 90° en el servomotor se utiliza la
ecuación 3.2.
𝑑𝑢𝑡𝑦 =𝑡∗𝐹𝑜𝑠𝑐
4∗𝑝𝑟𝑒𝑒𝑠𝑐𝑎𝑙𝑒𝑟 , (3.2)
en donde:
t= tiempo en ms,
Fosc=frecuencia de operación del sistema = 64MHz,
Preesacaler=división del Timer_2 utilizado como comparador de PWM = 8.
De la ecuación 3.2 y los datos proporcionados, se obtiene como resultado 2980 en el
duty para mover el servo motor a 90° y tener ahí nuestra posición inicial u origen. De la misma
manera se calculan los valores necesarios para los siguientes cuatro centros de los conjuntos
difusos de salida donde 113° corresponde a 3394, 107.25° = 3290.5, 101.5° = 3187 y 95.75° =
3083.5.
A la salida del controlador el duty tiene una variación de 414 unidades, entre 2980 y
3394, que producen el recorrido lineal de 7.5mm, lo que da como resultado que por cada
unidad en el duty exista un desplazamiento lineal igual a 18. 1159 µm.
Como parte final de la implementación se elabora un sistema embebido como se
ilustra en la Figura 3.20, en el se integran el microcontrolador dsPIC30F4011, dos
potenciómetros que simulan los sensores de altura y presión del aire, un conector de
alimentación de la tarjeta, un conector de alimentación del servomotor, una pantalla de cristal
liquido (LCD) y un conector para el servomotor.
78
Cabe señalar que la tarjeta desarrollada se toma en consideración como una tarjeta de
prueba y no la tarjeta que será implementada de manera final en un planeador. La LCD se utiliza
para monitorear el correcto funcionamiento del controlador difuso haciendo diversas
comparaciones con las simulaciones en LabVIEW y MATLAB, por lo cual en la versión final la LCD
no será necesaria.
Figura 3.20 Sistema embebido
79
Capítulo 4
Resultados
En el presente capitulo se dan a conocer los resultados obtenidos de la
implementación del controlador difuso en un dsPIC30F4011 para comprobar su desempeño. A
su vez, se hace una comparación con las simulaciones previamente realizadas en LabVIEW y
MATLAB para visualizar el correcto funcionamiento del controlador.
Las pruebas se realizaron de manera de comprobación en el laboratorio debido a que
el fin particular de este trabajo es diseñar e implementar un controlador difuso para la hélice de
paso variable.
La Figura 4.1 muestra en funcionamiento la tarjeta desarrollada donde el monitoreo de
las entradas se visualiza en el LCD. La entrada del sensor1 que corresponde a la altura se
muestra como “e” en el LCD, a su vez la entrada del sensor 2 que corresponde a la presión del
aire se muestra como “d” en la primera línea. El valor que será asignado al duty del PWM en el
dsPIC se muestra en valor flotante de lado izquierdo y en valor entero de lado derecho en la
segunda línea del LCD.
En la Figura 4.2 se ilustra la medición del PWM por medio de un osciloscopio marca
Tektronix para comprobar el correcto ancho de pulso que será enviado al servomotor. En a) se
puede observar que el duty tiene un valor de 3083 lo cual corresponde a un ancho de pulso de
1.54175ms como se puede observar en b).
81
En la Figura 4.3 se ilustra la primera prueba realizada con el motor brushless apagado,
es decir, que la hélice no tiene giro alguno para poder visualizar el cambio de paso de forma
clara. En a) se muestra la hélice con paso corto y en b) se muestra el paso largo.
a) Paso corto. b) Paso largo.
.
Figura 4.3 Prueba del sistema con motor brushless apagado.
En la Figura 4.4 se ilustra la primera prueba realizada con el motor brushless encendido
girando a su máxima velocidad, es decir, 11520 RPM @ 12v. Como se puede observar en a), las
palas de la hélice se ven más delgadas por el efecto de giro donde se representa el paso corto, a
comparación de b), donde las palas se aprecian más grandes, es decir el paso largo de la hélice
donde se deja pasar la mayor cantidad de aire lo que produce un mayor desplazamiento lineal
con las misma RPM.
82
a) Paso corto. b) Paso largo.
.
Figura 4.4 Prueba del sistema con motor brushless encendido.
Una vez realizadas las primeras pruebas y observado que el funcionamiento del
mecanismo es el adecuado para cambiar el paso de la hélice de forma proporcional al duty, se
elabora una tabla comparativa, ver Tabla 4.1, de los resultados experimentales y los resultados
simulados en LabVIEW y MATLAB de los centros de los conjuntos difuso, es decir, valores de 0,
1.25, 2.5, 3.75 y 5 para las entradas, con el fin de comprobar el desempeño del controlador
difuso.
83
Tabla 4.1. Comparación de resultados experimentales y simulados con valores de entrada en los centros de los conjuntos difusos.
MATLAB LabVIEW
e=s1 d=s2 Entero Flotante
5 4.975 2980 2980 2980 2980.08
3.748 4.975 3083 3083.6 3083.8 3083.73
2.497 4.975 3187 3187.3 3187.5 3187.27
1.256 4.975 3293 3293.3 3293.4 3292.52
0 4.975 3393 3393.3 3394 3393.97
5 3.748 2980 2980 2980.3 2980.33
3.748 3.748 3083 3083.7 3083.8 3083.74
2.497 3.748 3188 3188 3188.3 3187.87
1.256 3.748 3392 3392 3392 3392.03
0 3.748 3394 3394 3394 3393.97
5 2.497 3083 3083.4 3083.5 3083.5
3.748 2.497 3084 3084.3 3084.6 3084.25
2.497 2.497 3290 3290.9 3291 3290.69
1.256 2.497 3093 3093 3393 3393.24
0 2.497 3394 3394 3394 3393.97
5 1.256 3083 3083.4 3083.5 3083.5
3.748 1.256 3186 3186.2 3186.3 3186.43
2.497 1.256 3290 3290.8 3291 3290.69
1.256 1.256 3393 3393 3393 3393.24
0 1.256 3394 3394 3394 3393.97
5 0 3083 3083.5 3083.5 3083.5
3.748 0 3187 3187 3187.3 3187.15
2.497 0 3290 3290.7 3291 3290.69
1.256 0 3392 3392 3393 3393.23
0 0 3393 3393 3394 3393.97
ENTRADAS SALIDA (duty)
volts Lenguaje C (dsPIC)
La Tabla 4.1, se elaboró en base al los datos mostrados en el LCD del sistema
embebido. Los mismos datos que se visualizan en la LCD se capturan como entradas en las
simulaciones de LabVIEW y MATLAB para obtener la salida correspondiente. En función de la
Tabla de 25 reglas difusas previamente declarada, se observa que la salida difusa cambia a sus 5
estados NG, NP, Z, PP y PG de forma proporcional al valor del sensor1 y el sensor 2.
En la Tabla 4.2 se muestran la comparación de resultados experimentales y simulados
con valores aleatorios diferentes a los centros de los conjuntos difusos de las entradas, de
84
manera que se pueda tener un panorama más amplio del desempeño del controlador
implementado.
Tabla 4.2 Comparación de resultados con valores aleatorios diferentes a los centros de
los conjuntos difusos de entrada.
MATLAB LabVIEW
e=s1 d=s2 Entero Flotante
4.877 4.613 2992 2992.8 2992.9 2991.19
4.687 3.435 3031 3031.5 3031.6 3030.9
3.279 4.203 3124 3124.3 3124.4 3123.6
2.829 1.5 3252 3252.3 3252.5 3252.27
2.346 0.747 3305 3305.9 3306 3305.17
1.871 2.761 3330 3330.1 3330.3 3329.66
1.612 3.279 3340 3340.9 3341.1 3341.57
1.163 4.222 3354 3354.9 3355 3354.8
0.777 4.452 3359 3359.5 3359.5 3359.76
0.874 1.871 3394 3394 3394 3393.94
ENTRADAS SALIDA (duty)
volts Lenguaje C (dsPIC)
Para tener una mayor perspectiva del movimiento lineal que se produce para cambiar
el paso de la hélice, en la Figura 4.5 se muestran las posiciones de la hélice cuando el duty toma
los cinco valores correspondientes a los centros de la salida difusa, es decir, 2980, 3085.5, 3187,
3290.5 y 3394.
87
Capítulo 5
Conclusiones y trabajo futuro
En este ultimo capitulo se dan a conocer las conclusiones y propuestas de trabajo
futuro sobre el sistema implementado.
5.1. Conclusiones
Los resultados mostrados en el capítulo 4 demuestran que el controlador difuso
diseñado e implementado en el presente trabajo se comporta de manera satisfactoria en el
control de paso de la hélice cuando las entradas provienen de dos potenciómetros que varían la
señal de entrada entre 0 y 5 volts.
El prototipo mecánico construido cumplió con el objetivo de producir un movimiento
lineal de 7.5mm en base a un movimiento angular proveniente del servomotor al que se le
aplico el controlador difuso de 23°, con lo cual se obtienen 414 posiciones para el cambio de
paso de la hélice, que equivale a una resolución de 18. 1159 µm por unidad en el duty. Este
prototipo fue necesario para poder comprobar el correcto funcionamiento del controlador en
un sistema real.
El algoritmo del controlador difuso que se desarrolló en lenguaje C y cuya
implementación se llevo a cabo en un dsPIC30F4011, demostró tener un desempeño óptimo
para la variación de paso de la hélice.
La simulación del controlador difuso en el Toolkit “Fuzzy System Designer” de LabVIEW
permitió observar de forma gráfica el comportamiento del sistema, lo cual dio como resultado
una superficie de control donde se puede monitorear la salida del controlador en base a las
entradas provenientes de dos potenciómetros.
88
La simulación del controlador difuso en MATLAB fue necesaria para establecer una
comparación con los resultados experimentales y los datos obtenidos en la simulación de
LabVIEW debido a que, la programación en MATLAB es de alto nivel, así como el lenguaje C, con
lo cual se demostró la funcionalidad del controlador en un software con estructura similar al
algoritmo implementado a diferencia de la programación grafica de LabVIEW.
La simulación del controlador difuso en el Fuzzy Logic Toolbox de MATLAB permitió
observar de forma gráfica el comportamiento del sistema con otra plataforma diferente a
LabVIEW, lo cual dio como resultado una superficie de control prácticamente exacta en ambos
casos, así se demuestra el correcto funcionamiento del controlador en lenguajes de
programación gráficos.
La implementación del algoritmo de control en un sistema embebido para el control de
la hélice de paso variable mostró un comportamiento excelente para las pruebas de
laboratorio, en donde se monitoreo en base a una LCD la salida del duty para el PWM del
servomotor y en base a esta salida se pudo obtener una tabla comparativa con las simulaciones
en MATLAB y LabVIEW para establecer el adecuado funcionamiento del controlador.
De manera general el proyecto realizado en la estadía, cumple con la expectativa de
realizar el diseño y la implementación de un controlador difuso en un dsPIC30F4011 para una
hélice de paso variable en pruebas de laboratorio.
5.2. Trabajo futuro
El trabajo de tesis se puede ampliar con diversos trabajos a futuro, esto con la finalidad
de poder implementar el controlador difuso en un planeador eléctrico.
Es necesario analizar de forma detallada el mecanismo para poder ajustarlo a un
planeador que se tenga en el Laboratorio de Sistemas Dinámicos Controlables, esto con el fin de
poder hacer pruebas reales ya que en el presente trabajo solo se hicieron pruebas de
laboratorio. Para esto se necesita considerar el tipo de material, debido a que el peso es un
factor importante a considerar en la aeronave.
La implementación de los sensores de altura y de presión del aire sobre la aeronave en
el sistema embebido, son indispensables para poder realizar pruebas reales en un planeador,
cabe resaltar que las pruebas necesarias para probar la fiabilidad del controlador ya fueron
realizadas con éxito en el laboratorio, por lo cual es cuestión de calibrar los sensores para su
correcto funcionamiento. En dado caso que las entradas de voltaje cambien respecto al diseño
elaborado del controlador, el código de programación es bastante amigable, por tal motivo la
89
modificación de unas cuantas líneas o parte de ellas será necesario para ajustar los nuevos
valores que se requieran.
Otro trabajo que se puede realizar para tener la comparación del rendimiento del
controlador difuso es obtener el modelo matemático de la hélice para poder así involucrar de
manera completa los elementos que repercuten en el cambio de paso y así determinar si el
controlador implementado es lo suficientemente eficiente para trabajar este tipo de hélices con
las entradas propuestas de altura y presión del aire.
90
Bibliografía
[1] Passino K., Yurkovich S. Fuzzy Control. Addison-Wesley, 1998.
[2] Barragán P.A. J. Síntesis de Sistemas de Control Borroso Estables por Diseño. PhD tesis,
Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática,
Universidad de Huelva, 2009.
[3] Oscal T. C., Yao-Chou L., and Hwai-Tsu C. Fuzzy reasoning processor for camera image autofocus. Visual Communications and Image Processing’95, (1995) 347–354.
[4] Vélez V. M. A. Metodología para mantener la interpretabilidad en el modelado utilizando
sistemas borrosos. PhD tesis, Departamento de Ingeniería Electrónica, de Sistemas
Informáticos y Automática, Universidad de Huelva, 2011.
[5] Ordoñez R. R. C. Aplicación técnica de la aerodinámica. México DF.
[6] Muñoz M. A., Nociones básicas de Vuelo. España, 2002.
[7] DX5e 5-Channel Full Range DSM2 2.4GHz Radio System, SPEkTRUM Radio users´s guide, 2008.
[8] Flores S. G. Prototipo de Vehículo aéreo no tripulado. Universidad Politécnica de Pachuca, 2011.
[9] Krar, Chek. Tecnología de las Máquinas Herramienta. Alfaomega, 2002.
[10] Angulo U. J. M., Etxebarria R. A., Angulo M. I., and Trueba P. I. dsPIC Diseño práctico de aplicaciones. Mc Graw Hill, 2008. [11] Benito U. M. Apuntes de: Sistemas embebidos. Universidad de Murcia, 2009.
[12] LabVIEW PID and Fuzzy Logic Toolkit User Manual, National Instruments, 2009.
[13] Circuitos electrónicos de Radio Control, http://www.e-radiocontrol.com.
91
Apéndice A
Códigos de Programación
A.1. Código de MATLAB
%% Controlador Difuso clear all close all clc disp(' Controlador Difuso ' ); disp(' '); a=input ('Valor de sensor1 (0-5 v): '); b=input ('Valor de sensor2 (0-5 v): '); %Conjuntos difusos de sensor1 s1NG=trapmf (a, [-1.25, -1.25, 0, 1.25]); s1NP=trapmf (a, [0, 1.25, 1.25, 2.5]); s1Z=trapmf (a, [1.25, 2.5, 2.5, 3.75]); s1PP=trapmf (a, [2.5, 3.75, 3.75, 5]); s1PG=trapmf (a, [3.75, 5, 6.25, 6.25]); %Conjuntos difusos de sensor2 s2NG=trapmf (b, [-1.25, -1.25, 0, 1.25]); s2NP=trapmf (b, [0, 1.25, 1.25, 2.5]); s2Z=trapmf (b, [1.25, 2.5, 2.5, 3.75]); s2PP=trapmf (b, [2.5, 3.75, 3.75, 5]); s2PG=trapmf (b, [3.75, 5, 6.25, 6.25]); %FAM (centros MF)
92
T= [3394, 3394, 3394, 3394, 3394; 3394, 3394, 3394, 3394, 3290.5; 3290.5, 3290.5, 3290.5, 3187, 3187; 3187, 3187, 3083.5, 3083.5, 3083.5; 3083.5, 3083.5, 3083.5, 2980, 2980]; sensor1= [s1NG s1NP s1Z s1PP s1PG]; %en i sensor2= [s2NG s2NP s2Z s2PP s2PG]; %en j num=0; den=0; for i=1:5 for j=1:5 prod (i,j)=sensor1(i) * sensor2(j); %implicación producto area (i,j)=207*(prod(i,j)-(prod(i,j)^2/2)); %Area bajo MF num1 (i,j)=T (i,j)*area(i,j); %Matriz de fuerza a partir de los valores de entrada num=num1 (i,j)+num; %Sumatoria Numerador den=area (i,j)+den; %Sumatoria Denominador end end %Salida u=num/den
A.2. Código del dsPIC30F4011
/************************** CONTROLADOR DIFUSO *****************************/ #include <30F4011.h> // Microcontrolador a utilizar #device adc=10 // Resolución del ADC #include <math.h> // Librerías #FUSES XT_PLL16 // XT Crystal Oscillator mode with 16X PLL #FUSES PR // Primary Oscillator #FUSES NOPUT // No Power Up Timer #FUSES NOBROWNOUT // No brownout reset #FUSES NOPROTECT // Code not protected from reading #FUSES NOWDT // No Watch Dog Timer #FUSES MCLR // Master Clear pin enabled
93
#use delay (clock=64000000) // Frecuencia de trabajo #define LCD_ENABLE_PIN PIN_D0 // Configuración del LCD #define LCD_RS_PIN PIN_D2 #define LCD_RW_PIN PIN_D3 #define LCD_DATA4 PIN_F1 #define LCD_DATA5 PIN_F4 #define LCD_DATA6 PIN_F5 #define LCD_DATA7 PIN_F6 #include <lcd.c> #define ADC_TAD_MUL_1 0x0100 /************************* DEFINICION DE FUNCIONES ***************************/ void iniciaFAM(); // Matriz de memoria asociativa difusa // sensor1 MF float s1_NG(float x); float s1_NP(float x); float s1_Z(float x); float s1_PP(float x); float s1_PG(float x); // sensor2 MF float s2_NG(float x); float s2_NP(float x); float s2_Z(float x); float s2_PP(float x); float s2_PG(float x); // MF triangular y trapezoidal float trimf(float a, float b, float c, float x); float trapmf(float a, float b, float c, float d, float x); /************************** ***VARIABLES GLOBALES *****************************/ float sensor1,sensor2; int16 ang1, ang2; unsigned int16 duty; float defuzzy;
94
float32 h=0,num=0,den=0; int i=0,j=0,k=0; float pos[4][3],FAM[5][5]; int cont=0; float xs1[5]; float xs2[5]; /************************** PROGRAMA PRINCIPAL *****************************/ void main() setup_timer2(TMR_INTERNAL | TMR_DIV_BY_8,0xABDF); //periodo de 22ms para servos setup_compare(2, COMPARE_PWM | COMPARE_TIMER2); setup_adc_ports(sAN2|sAN3|VSS_VDD); //setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_1); #asm mov #0x0101, W4; mov W4,0x02A4; mov #0x80E0, w4; mov w4, 0x02A0; #endasm set_tris_B(0x0F); // Configuración de puertos set_tris_D(0x00); set_tris_F(0x00); lcd_init(); iniciaFAM(); while(k==0) num=0; den=0; cont=0; for (i=0;i<=4;i++) // Limpiar arreglos xs1[i]=0; xs2[i]=0; // sensor1 & sensor2 set_adc_channel(2); // sensor1=Altura por canal 2 delay_us(5); ang1=read_adc(); sensor1= (5.0 * ang1 / 1023.0); // valor entre 0 y 5 resolución de 10 bits delay_us(5); set_adc_channel(3); // sensor2=Presión del aire por canal 3
95
delay_us(5); ang2=read_adc(); sensor2= (5.0 * ang2 / 1023.0); // Evaluación del grado de pertenencia xs1[0]=s1_NG(sensor1); xs1[1]=s1_NP(sensor1); xs1[2]=s1_Z(sensor1); xs1[3]=s1_PP(sensor1); xs1[4]=s1_PG(sensor1); xs2[0]=s2_NG(sensor2); xs2[1]=s2_NP(sensor2); xs2[2]=s2_Z(sensor2); xs2[3]=s2_PP(sensor2); xs2[4]=s2_PG(sensor2); for (i=0;i<=4;i++) if (xs1[i]>0) for (j=0;j<=4;j++) if (xs2[j]>0) pos[cont][0]=xs1[i]; // posición xs1 pos[cont][1]=xs2[j]; // posición xs2 pos[cont][2]=FAM[i][j]; // posición de salida "centro MF" cont++; for (i=0;i<=3;i++) h= pos[i][0] * (pos[i][1]); num+= pos[i][2] * 207 * ( h-( h * h / 2.0)); // x+=y is x=x+y "Sumatoria" den+= 207 * ( h-( h * h)/ 2.0); defuzzy= num / den; // Flotante if(defuzzy>3394) // Se establecen límites máximo y mínimo duty=(int16)3394; // Entero de 16 bits, resolución del Duty else if(defuzzy<=2980) duty=(int16)2980; else duty=(int16)defuzzy;
96
set_pwm_duty(2,duty); // Periodo del ciclo de trabajo lcd_gotoxy(1,1); printf(lcd_putc,"s1=%0.3fs2=%0.3f",sensor1,sensor2); lcd_gotoxy(1,2); printf(lcd_putc,"u=%.1f d=%4ld",defuzzy,duty); delay_ms(10); // periodo de muestreo // MF triangular float trimf(float a, float b, float c, float x) if(x>=a && x<=b) return (x-a)/(b-a); else if (x>=b && x<=c) return (c-x)/(c-b); else return 0; // MF Trapezoidal float trapmf(float a, float b, float c, float d, float x) if(x>=a && x<=b) return (x-a)/(b-a); else if (x>=b && x<=c) return 1; else if (x>=c && x<=d) return (d-x)/(d-c); else return 0; // sensor1 (Altura) float s1_NG(float x) return trapmf(-1.25,-1.25,0,1.25,x); float s1_NP(float x) return trimf(0,1.25,2.5,x); float s1_Z(float x) return trimf(1.25,2.5,3.75,x);
97
float s1_PP(float x) return trimf(2.5,3.75,5,x); float s1_PG(float x) return trapmf(3.75,5,6.25,6.25,x); // sensor2 (Presión del aire) float s2_NG(float x) return trapmf(-1.25,-1.25,0,1.25,x); float s2_NP(float x) return trimf(0,1.25,2.5,x); float s2_Z(float x) return trimf(1.25,2.5,3.75,x); float s2_PP(float x) return trimf(2.5,3.75,5,x); float s2_PG(float x) return trapmf(3.75,5,6.25,6.25,x); // BASE DE REGLAS SALIDA: centros de MF void iniciaFAM() // sensor1 (FILAS) – sensor2 (COLUMNAS) // NG NP Z PP PG FAM[0][0]=3394; FAM[0][1]=3394; FAM[0][2]=3394; FAM[0][3]=3394; FAM[0][4]=3394; //NG FAM[1][0]=3394; FAM[1][1]=3394; FAM[1][2]=3394; FAM[1][3]=3394; FAM[1][4]=3290.5; //NP FAM[2][0]=3290.5;FAM[2][1]=3290.5;FAM[2][2]=3290.5;FAM[2][3]=3187; FAM[2][4]=3187; //Z FAM[3][0]=3187; FAM[3][1]=3187; FAM[3][2]=3083.5;FAM[3][3]=3083.5;FAM[3][4]=3083.5; //PP FAM[4][0]=3083.5;FAM[4][1]=3083.5;FAM[4][2]=3083.5;FAM[4][3]=2980; FAM[4][4]=2980; //PG