Sie sind auf Seite 1von 110

BENEMRITA UNIVERSIDAD AUTNOMA DE PUEBLA

FACULTAD DE CIENCIAS DE LA ELECTRNICA

CONTROLADOR DIFUSO IMPLEMENTADO EN


UN MICROCONTROLADOR, APLICADO A UN
PROTOTIPO NO LINEAL

TESIS PROFESIONAL

para obtener el ttulo de

Licenciatura en Electrnica

PRESENTA:

HORACIO GEORGE HARO

ASESOR DE TESIS:

M.C. L. EDUARDO ESPINOSA MAYA

Febrero de 2007
CONTENIDO

Introduccin ......................................................................................................................... 1

Captulo 1 MARCO TERICO


1.1. Lgica Difusa ........................................................................................................... 3
1.1.1. Conjuntos Difusos .......................................................................................... 4
1.1.2. Operaciones con Conjuntos Difusos simples............................................ 7
1.1.3. Relaciones entre Conjuntos Difusos ......................................................... 10
1.2. Control Difuso ...................................................................................................... 13
1.2.1. Arquitectura de Controladores Difusos .................................................... 16
1.2.2. Interfaz de Fusificacin ................................................................................ 18
1.2.3. Base de Conocimiento.................................................................................. 21
1.2.4. Base de Datos ................................................................................................ 22
1.2.5. Base de Reglas ................................................................................................ 25
1.2.6. Mecanismos de Inferencia ........................................................................... 26
1.2.7. Interfaz de Defusificacin ........................................................................... 27
1.3. Sistemas No Lineales ............................................................................................ 31
1.3.1. El Ball and Beam ........................................................................................... 32
1.4. El Microcontrolador PIC16F877 ....................................................................... 34
1.4.1. Caractersticas generales del PIC16F877 .................................................. 36
1.4.2. Los puertos paralelos de Entrada Salida ................................................... 37
1.4.3. Descripcin del Modulo de Conversin Analgico Digital .................. 40
1.4.4. Descripcin del Modulo Temporizador (TIMER) ................................. 42
1.4.5. Modulo PWM (Modulacin de Ancho de Pulso) ................................... 44

Captulo 2 DESARROLLO TERICO Y PRCTICO

2.1. Diseo Electrnico ............................................................................................... 47


2.1.1. Sensor de Distancia GP2D12 ..................................................................... 47
2.1.2. Amplificacin y Filtrado .............................................................................. 49
2.1.3. Servomotor de PWM ................................................................................... 51
2.1.4. Conexin del LCD ........................................................................................ 53
2.1.5. El Cristal de Cuarzo ...................................................................................... 54
2.1.6. Diseo del PCB ............................................................................................. 55
2.2. Construccin Fsica del Ball and Beam............................................................. 56
2.3. Desarrollo del Software Difuso .......................................................................... 58
2.4. Modelado y Simulacin utilizando Simulink .................................................... 66
2.5. Estabilidad de la Relacin Difusa....................................................................... 70
Captulo 3 PRUEBAS Y RESULTADOS

3.1. Pruebas del Ball and Beam .................................................................................. 73


3.2. Pruebas del Software ............................................................................................ 75
3.3. Pruebas de la variable de salida........................................................................... 78
3.4. Resultados finales del sistema ............................................................................. 79

Conclusiones ...................................................................................................................... 80

APNDICE

A. Programa en lenguaje C para PICs del Controlador Difuso .............................. 81


B. Datos Tcnicos del sensor GP2D12 ........................................................................ 87
C. Caractersticas del Servomotor Command CS-60.................................................. 92
D. PIC C Compiler ........................................................................................................... 94

Bibliografa........................................................................................................................102

ii
LISTA DE FIGURAS

1.1. Funciones de pertenencia


a) Decreciente, b) Creciente y c) Unmodal ......................................................... 6
1.2. Universo de discurso para la variable Temperatura ............................................ 7
1.3. Aplicacin del numero de trminos lingsticos.................................................. 7
1.4. Dos interpretaciones de la conectiva OR ............................................................. 8
1.5. Ejemplo de la conectiva AND................................................................................ 9
1.6. Ejemplo de la operacin de complemento ......................................................... 10
1.7. Funciones de pertenencia: R=Tfresca x Tagradable ........................................ 12
1.8. Estructura general de un controlador difuso ..................................................... 17
1.9a. Obtencin de membresa: lectura precisa .......................................................... 18
1.9b. Obtencin de membresa: lectura difusa ........................................................... 19
1.10. Tipos comunes de funciones de pertenencia .................................................... 23
1.11. Parmetros de las funciones de pertenencia...................................................... 24
1.12. Fuerzas actuantes en el Ball and Beam............................................................... 33
1.13. Representacin del registro del puerto A........................................................... 38
1.14. Representacin del registro TRISA del puerto A ............................................ 38
1.15. Representacin del convertidor Analgico-Digital .......................................... 41
1.16. Arquitectura interna del TIMER ......................................................................... 43
1.17. Representacin del modo PWM ......................................................................... 44
1.18. Pasos para programar el modulo PWM ............................................................. 45
2.1. Sensor GP2D12 ....................................................................................................... 47
2.2. Funcionamiento del sensor GP2D12 .................................................................. 48
2.3. Circuito Amplificador Inversor ............................................................................ 49
2.4. Circuito del Filtro Pasa Bajas ................................................................................ 50
2.5. Diagrama de funcionamiento del servomotor ................................................... 51
2.6. Pulso aplicado para cero grados ........................................................................... 52
2.7. Pulso aplicado para noventa grados ..................................................................... 52
2.8. Representacin del LCD ........................................................................................ 53
2.9. Disposicin de pines del LCD .............................................................................. 54
2.10. Circuito impreso del Ball and Beam ................................................................... 55
2.11. Primer prototipo fisico del Ball and Beam ........................................................ 56
2.12. Segundo prototipo fsico del Ball and Beam ..................................................... 57
2.13. Lazo cerrado de control para el Ball and Beam ................................................ 58
2.14. Bloques de un controlador difuso ....................................................................... 59
2.15. Funciones de membresa de Error y Error anterior ........................................ 60
2.16. Variable difusa de salida ........................................................................................ 61
2.17. Funcin tringular .................................................................................................. 61
2.18. Comportamiento del Ball and Beam .................................................................. 62

iii
2.19. Matriz de reglas difusas ......................................................................................... 63
2.20. Visor de superficie del controlador ..................................................................... 66
2.21. Visor de reglas ......................................................................................................... 67
2.22. Diagrama a bloques del Ball and Beam .............................................................. 68
2.23. Diagrama a bloques de todo el sistema .............................................................. 68
2.24. Grfica de control Setpoint vs Posicin ............................................................ 69
2.25. Comportamiento del controlador difuso ........................................................... 69
3.1. Representacin del Ball and Beam ...................................................................... 74
3.2. Representacin de la variable de salida .............................................................. 78
3.3. Representacin de la variable de salida modificada ......................................... 78

iv
LISTA DE TABLAS

1.1. Funciones de Membresa y su representacin .................................................. 20


1.2. Voltajes manejados por los PICs........................................................................ 35
1.3. Tipos de osciladores que puede usar el PIC...................................................... 35
1.4. Valores de cristales y capacitares para osciladores ........................................... 36
1.5. Funciones multiplexadas del puerto C ............................................................... 40
1.6. Caractersticas de los temporizadores y modulo CCP .................................... 42
1.7. Modo de seleccin del CCP ................................................................................. 44
2.1. Caracterizacin del sensor GP2D12................................................................... 49
2.2. Trminos lingsticos para Error y Error anterior ........................................... 59
2.3. Valores caracterizados de Error y Error anterior ............................................. 60
2.4. Trminos lingsticos para la Variable de Salida .............................................. 60
3.1. Caracterizacin del sensor GP2D12 con y sin filtro ....................................... 74
3.2. Resultados finales del sistema .............................................................................. 79

v
Introduccin

El paradigma de procesamiento de la informacin desarrollado a finales del siglo XIX y


principios del siglo XX que conforman el binomio lgica booleana - mquina de Turing
(arquitectura de Von Neumann), es la base de los actuales sistemas de procesamiento digitales.
Sin embargo, y pese a sus indiscutibles logros, este esquema presenta problemas a la hora de
abordar tareas como las denominadas del mundo real, donde la informacin se presenta de
forma masiva y distorsionada.

Para abordar este tipo de tareas se han propuesto modelos alternativos, de los cuales las redes
neuronales artificiales y los sistemas basados en lgica difusa son los que cuentan con mayor
popularidad y utilizacin. Estos nuevos modelos de procesamiento y control, junto con
algunos otros (como los algoritmos genticos), se engloban con los trminos inteligencia
computacional o soft computing, basada en computadoras. El denominador comn de estas
tcnicas radica en su inspiracin en las soluciones que la naturaleza ha encontrado a lo largo de
millones de aos de evolucin para el tratamiento del tipo de informacin masiva y
distorsionada procedente del entorno natural, soluciones que copiadas en sistemas artificiales se
espera que contribuyan a resolver importantes problemas tecnolgicos.

La inteligencia artificial, o IA en trminos cortos, es una combinacin de la ciencia de las


computadoras, la psicologa y la filosofa. La IA cubre un espectro amplio, consiste en campos
de estudio diferentes, El elemento que los campos de la IA tienen en comn es la creacin o
simulacin de maquinas que pueden pensar.

Un controlador clsico (como un PID) se basa para su diseo en el conocimiento de un


modelo matemtico y el xito del control reside en la fidelidad de representacin del
comportamiento de la planta por parte de dicho modelo, estas tcnicas son difcilmente
aplicables cuando se desconoce el modelo o cuando este presenta demasiada incertidumbre.

En cuanto al diseo de sistemas de control invariantes, tan solo advertir la gran carga
matemtica que se necesita para su aplicacin (ecuaciones diferenciales, transformadas en
diferentes dominios, operaciones de convolucin, etc.), si a esto se aade la intencin de
disear una serie de objetivos, obviamente la matemtica que se ha de manejar requiere del
diseador un buen conocimiento de tcnicas de optimizacin.

A partir de esto en esta tesis se propone disear e implementar un controlador difuso a un


prototipo no lineal, usando un microcontrolador. A partir del cul se propone que el
microcontrolador sea de la familia PIC por las ventajas generales que ofrece.
En la mayora de las situaciones, para realizar el control de cualquier planta es necesario
conocer su funcin de transferencia (modelo matemtico preciso), cosa que no siempre es
sencilla de obtener. Se ha elegido la lgica difusa debido a que una de sus ventajas es que no
necesita complejas frmulas matemticas sino que puede utilizar lenguaje natural para expresar
el conocimiento y las acciones a realizar.

La aplicacin de la lgica difusa a los sistemas de control fue exitosa desde su primera
proposicin, debido a que resuelve el problema de diseo cuando se desconoce el modelo de la
planta totalmente, porque la planta no puede ser modelada analticamente o parcialmente. Los
sistemas difusos permiten controlar un proceso a partir de su descripcin lingstica, sin
necesidad de un modelo preciso.

El controlador difuso que se generara en esta tesina servir como base a una posterior etapa
donde se integrara un bloque adaptativo, con el cual se conseguir un sistema ms robusto
capaz de responder a cambios no previstos en la planta.

La Organizacin de la tesis esta desglosada de la siguiente manera:

En el primer captulo se tratara todo lo concerniente al estado del arte y dems informacin
que se vaya a utilizar constantemente dentro de la realizacin del proyecto, se trata la lgica
difusa, el control difuso, sistemas no lineales e informacin sobre el microcontrolador.

El segundo captulo se encarga del diseo del sistema, tanto en la parte fsica como en el
software y la simulacin, la cual se realizo utilizando el simulink de MATLAB.

El tercer captulo contiene las pruebas que se realizaron a todo el sistema, aunque claro esta
que se fueron haciendo etapa por etapa para asegurar que todas las partes del sistema
funcionaran correctamente, de igual forma se dan algunas conclusiones a las que se llegaron
durante las pruebas.

Por ultimo se agregan las conclusiones de la tesis y el apndice, donde se contemplan datos que
pueden ser relevantes para quienes revisen y quieran complementar esta tesis.

2
Captulo 1

1.1. Lgica Difusa

El desarrollo de controladores difusos ha emergido como una de las ms prosperas y


fructferas aplicaciones de la teora de conjuntos difusos. Esta teora fue postulada por Lotfi
Zadeh hace ya ms de dos dcadas como una generalizacin de los conjuntos clsicos. Ya en
los trabajos seminales, introduce la idea de formular el problema de control mediante el uso de
reglas expresadas con representaciones lingsticas. Las experiencias diarias de la vida real nos
dan muchos ejemplos donde se confirma como el entendimiento, el pensamiento y la habilidad
humana pueden resolver eficientemente el problema de control para una gran variedad de
sistemas sin hacer uso de los sofisticados algoritmos de la teora de control. Es quizs por eso,
que buscando emular las capacidades humanas de control, los primeros trabajos en control
difuso fueron desarrollados desde el punto de vista de la inteligencia artificial y no bajo la tutela
de la teora de control. Mamdani y sus colegas son los primeros en aplicar la lgica difusa al
control de procesos, particularmente, en un sistema de control para una mquina de vapor.
Desde entonces, el nmero de aplicaciones de los controladores difusos ha ido en aumento, no
slo para el control de procesos, sino prcticamente en todos los campos de la ingeniera.
Desde el punto de vista de las aplicaciones pueden diferenciarse dos periodos. En el primero,
los esfuerzos se concentraron en experimentos de nivel laboratorio y en el diseo de
prototipos, siendo relativamente raros los desarrollos de nivel industrial.

Durante el segundo periodo, iniciado a finales de los aos ochenta, han surgido un gran
nmero de aplicaciones comerciales en lo que se conoce como electrnica de consumo
(lavadoras, secadoras, cmaras de video, etc.) as como en aplicaciones industriales de todo tipo
aunque con menor auge que en las comerciales. De manera muy notoria ha sido en Japn
donde el control difuso ha sido impulsado con mayor fuerza. En este pas la lgica difusa se ha
convertido en palabra de uso comn en respuesta al xito obtenido al aplicarse y
comercializarse en todo tipo de aparatos electrodomsticos e incluso en algunos proyectos
industriales.

Los controladores difusos tienen potencialmente un gran nmero de ventajas cuando las
especificaciones del control requieren robustez, adaptabilidad y flexibilidad debido a
perturbaciones del entorno o a efectos no modelables de la dinmica del sistema. Los
controladores difusos son bsicamente controladores basados en reglas que discretizan el espacio
de operacin continuo, no lineal y multidimensional en clases discretas. Utilizando lgica
multivaluada, las variables difusas de las reglas preservan la informacin cuantitativa en los
correspondientes valores de clase y el valor de pertenencia a esa clase. El comportamiento del
controlador difuso es optimizado mediante una mquina de estados finitos en trminos de las

3
clases discretas y finalmente usa la informacin de la funcin de pertenencia para hacer una
interpolacin suave entre los puntos vecinos del espacio de operacin continuo.

No es fcil responder a la pregunta de cuando aplicar, o no, la tecnologa de control difuso. Por
un lado es una tecnologa que actualmente se encuentra en expansin tanto en sus bases
tericas como en sus aplicaciones, no conocindose muy bien sus lmites, por el otro, el
nmero de aplicaciones es an insuficiente para poder generalizar los resultados alcanzados.
Con el objetivo de intentar responder a esta pregunta, en los apartados siguientes expondremos
los principales beneficios y desventajas que actualmente exhibe la tecnologa de control difuso.

1.1.1. Conjuntos Difusos

La caracterstica ms relevante de la lgica difusa, particularmente en lo que se refiere al


tratamiento de sistemas de ingeniera, es su capacidad para capturar la incertidumbre e
imprecisin de la experiencia humana respecto a la descripcin u operacin de un sistema. Para
efectos del diseo de controladores, es el tratamiento de imprecisin el que ms interesa. La
temperatura es alta y la presin normal es una frase llena de imprecisin pero sin incertidumbre. La
lgica difusa es una generalizacin de los conjuntos clsicos. A diferencia de la lgica clsica, en
donde un elemento pertenece, o no pertenece a un conjunto denotndose esto con el
conjunto binario de valores de verdad {0,1} o {cierto, falso}, la lgica difusa permite a sus
predicados, adquirir valores de verdad multivaluados, es decir, cualquier valor dentro del
intervalo unitario continuo [0,1]. Las bases matemticas actuales de la teora de conjuntos
difusos y de la lgica difusa son muy amplias y se encuentran an en continua expansin.

Conceptos Bsicos de Conjuntos Difusos1

Para cualquier conjunto clsico C definido en el universo de discurso U es posible definir una
funcin caracterstica MembC : U {0, 1} como:

1 u C
MembC (u ) = (1.1)
0 u C

En la teora de conjuntos difusos, esta funcin caracterstica es generalizada como una funcin de
pertenencia que asigna a cada elemento u U un valor en el intervalo unitario [0, 1]. El conjunto F
obtenido en base a tal funcin de pertenencia es definido como Conjunto Difuso.

Definicin 1.1: Funcin de Pertenencia. La funcin de pertenencia MembF del conjunto difuso
F es:

1 Para mayor profundidad de este tema revisar [1], [2] y [4]

4
MembF : U [0,1] (1.2)

donde, para cada elemento u U, se asigna el grado de pertenencia MembF (u) [0, 1]. De esta
manera, F queda completamente determinado por el conjunto de pares:

F = {(u , MembF (u )) | u U } (1.3)

Mediante la notacin de Zadeh, considerando un universo U que sea numerable, podemos


definir un conjunto difuso de la siguiente manera:

Definicin 1.2a: Conjunto Difuso. Un conjunto difuso en un universo de discurso numerable


U, se define como:

n
F = MembF (u1 ) / u1 + L + MembF (u n ) / u n = MembF (u i ) / u i (1.4)
i =1

y en donde se asume que, para un mismo elemento r con s valores de pertenencia diferentes,
satisface que:

x1 / u r + L + x S / u r = U {MembFi (u r ) / u r } = max( x1 ,L, x S ) / u r (1.5)


U

Definicin 1.2b: Conjunto Difuso. Un conjunto difuso en un universo de discurso no


numerable U, es definido como:

F = MembF (u ) / u (1.6)
U

donde el smbolo representa una numeracin incontable.

En modelado de sistemas difusos es frecuente utilizar conceptos lingsticos representados


mediante ciertos conjuntos difusos especiales llamados nmeros difusos, que tienen determinadas
propiedades matemticas especiales. Ya que en control difuso solamente se utiliza este tipo de
conjuntos, en el futuro se asumir que cuando nos referimos a un conjunto difuso nos estamos
refiriendo a l.

Los conceptos lingsticos suelen ser dependientes del contexto dentro del dominio fsico particular
donde se definen. Por ejemplo el concepto lingstico caliente depende si se refiere a la
temperatura de un horno o a la temperatura del medio ambiente. Los conceptos lingsticos
usualmente utilizan una de estas tres formas bsicas para definirse, dependiendo de la
monotonaa que guarda su funcin de pertenencia: creciente, decreciente o unimodal.

5
a) b)

c)

Figura 1.1: Funciones de pertenencia a) decreciente, b) creciente, y c) unmodal2.

Definicin 1.3: Variable lingstica. La variable lingstica ui es una descripcin simblica


constante utilizada para presentar, en general, una cantidad variando en el tiempo dentro del
intervalo definido por un universo de discurso Ui. Los diferentes valores que esta variable
puede adquirir son conocidos como valores lingsticos.

Definicin 1.4: Valor lingstico. Sea la variable lingstica ui definida sobre el universo de
discurso Ui, tal que ui Ui y Ui ={Fi,1, Fi,2, . . . ,Fi,n}. Definimos el valor lingstico Fi,j como el
subconjunto difuso que denota el Jesimo valor que la variable ui puede adquirir de entre los Ni
posibles valores.

2 Las grficas mostradas a lo largo del captulo fueron realizadas en MATLAB

6
Figura 1.2: Universo de discurso para la variable Temperatura.

Figura 1.3: Ampliacin del numero de trminos lingsticos.

1.1.2. Operaciones con conjuntos difusos simples

En el modelado de sistemas difusos, es necesario contar con versiones generalizadas de las


operaciones bsicas de conjuntos, tales como unin, interseccin, etc. Comenzaremos con las
operaciones bsicas suponiendo que los conjuntos (o subconjuntos) son conjuntos difusos
simples, es decir, se encuentren definidos bajo el mismo universo de discurso. Un punto que

7
debe aclararse respecto a la mayora de las operaciones con conjuntos difusos es que no existe
una nica definicin, sino que suele haber varias interpretaciones dependiendo de la cualidad
difusa que se desea preservar. Por ejemplo consideremos las siguientes dos definiciones de la
operacin unin (1.7) y (1.8).

Definicin 1.5a: Unin. Sean Fi,a y Fi,b subconjuntos difusos en el universo de discurso Ui.
Definimos la funcin de pertenencia de su unin, denotada Fi,a U Fi,b, como:

MembFi ,a Fi ,b = min{1, MembFi ,a + MembFi ,b } (1.7)

Definicin 1.5b: Unin (clsica). Sean Fi,a y Fi,b subconjuntos difusos en el universo de
discurso Ui. Definimos la funcin de pertenencia de su unin, denotada Fi,a U Fi,b, como:

MembFi ,a Fi ,b = max{MembFi ,a , MembFi ,b } (1.8)

Desde el punto de vista lingstico, tanto la definicin 1.5a. Como la definicin 1.5b pueden ser
interpretadas como la conectiva lgica OR, de tal forma que podemos representar
expresiones lingsticas del tipo: la temperatura esta fresca la temperatura esta agradable: la
figura 1.4. muestra la representacin bajo ambas definiciones.

Figura 1.4: Dos interpretaciones de la conectiva OR.

Si se observa la superposicin en ambas graficas, puede apreciarse que mientras la definicin


1.5b, pierde cierta informacin, produciendo un posible resultado contra intuitivo desde el
punto de vista lingstico, la definicin 1.5a, no la pierde. Otra forma en que pueden verse
ambas definiciones de la funcin unin, es bajo el nivel de intercambio que se puede hacer
entre uno y otro argumento. La unin bajo la definicin 1.5a, es muy suave y permite un

8
perfecto intercambio entre argumentos. Por el contrario la definicin 1.5b, es una OR fuerte
seleccionando el mayor de los grados de pertenencia de los conjuntos.

Definicin 1.6: Interseccin. Sean Fi,a y Fi,b subconjuntos difusos en el universo de discurso
Ui. Definimos la funcin de pertenencia de su interseccin, denotada Fi,a Fi,b, como:

MembFi ,a Fi ,b = min{MembF ,a , MembFi ,b } (1.9)

La figura 1.5. muestra el ejemplo de la operacin de interseccin para el concepto la


temperatura esta fresca y la temperatura esta agradable. La funcin de interseccin ente valores
lingsticos de un mismo dominio es muy poco usada para el modelado de sistemas difusos
lingsticos porque resulta generalmente contra intuitiva.

Figura 1.5: Ejemplo de la conectiva AND.

Ms natural resulta la operacin de complemento dada a continuacin.

Definicin 1.7: Complemento. Sea Fi un conjunto difuso en el universo de discurso Ui.


Definimos la funcin de pertenencia de su complemento, denotada Fi , como:

MembFi = 1 MembFi (1.10)

La figura 1.6. muestra la representacin para el concepto lingstico: la temperatura no esta


agradable.

9
Figura 1.6: Ejemplo de la operacin de complemento.

1.1.3. Relaciones entre conjuntos difusos

En este apartado consideraremos el caso de operaciones con conjuntos difusos que pueden
ser subconjuntos en diferentes dominios (universos de discurso). Este tipo de operaciones son
indispensables cuando modelamos sistemas difusos (como por ejemplo controladores difusos)
porque permite establecer las relaciones entre las diferentes variables lingsticas. Algunas de
las relaciones difusas ms importantes desde el punto de vista de su aplicacin al control difuso
son dadas a continuacin.

Definicin 1.8: Producto cartesiano. Sean F1, F2,, Fn conjuntos difusos definidos en sus
respectivos U1, U2,, Un, el producto cartesiano de F1, F2,, Fn es un conjunto difuso en el
espacio U1xU2x xUn, con la funcin de pertenencia dada como:

MembU 1LxUn (u1 ,L, u n ) = min{MembU 1 (u1 ),L, MembU 1 (u n )} (1.11)

Donde u1, u2, . . . , un sean elementos en U1, U2, , Un respectivamente. El producto


cartesiano difuso puede verse como la relacin difusa ms general y es por eso que se utiliza a
su vez para definir otras relaciones. En esta forma, una relacin binaria cualquiera puede
definirse como sigue.

Definicin 1.9: Relacin. Sean U1 y U2 universos de discurso continuos y MembR : U1 U2


[0, 1]. Entonces:

10
RU 1,U 2 = U 1xU 2 MembR (u1 , u 2 ) /(u1 , u 2 ) (1.12)

es una relacin binaria en U1U2. Como antes, el smbolo denota el conjunto de pares
MembR(u1, u2)/(u1, u2) en el universo continuo U1 U2.

Por ejemplo, podemos establecer relaciones binarias de tipo: RT = La temperatura externa (te) es
muy cercana a la temperatura interna (ti). Siendo te y ti variables definidas en los universos Te y Ti
respectivamente, podemos describir la relacin RT como:

RT = TexTi exp |teti| /(t e , t i ) (1.13)

donde es un factor de escala.

Otro caso ilustrativo de relacin binaria puede ser la implicacin difusa.

Por ejemplo, la expresin: Si la temperatura externa te es fresca entonces la temperatura interna ti es


agradable, genera la implicacin difusa:

Si Te, fresca entonces Ti, agradable

que, representada como una relacin difusa, queda como:

R = Te, fresca x Ti, agradable

con la MembR:

MembR (t e , t i ) = min{MembTe, fresca (t e ), MembTi ,agradable (t i )}

Mostrada en la figura 1.7.

Una vez definido el concepto de relacin difusa podemos expresar ahora un nivel de
complicacin ms, al considerar operaciones entre relaciones difusas, operaciones que se les
conoce bajo el nombre de composiciones. La gran importancia de la relacin de composicin en el
modelado de controladores difusos es que con ella es posible definir la operacin de
implicacin utilizada para representar las reglas recontrol. Se conocen ms de cuarenta tipos
de implicaciones difusas divididas en tres grupos segn la funcin de composicin que se

11
utilice: la conjuncin difusa, que utiliza la composicin de unin; la disyuncin difusa, que
utiliza la composicin de interseccin; y la implicacin difusa, que utiliza la composicin
sup-estrella.

Figura 1.7: Funciones de pertenencia: R = Tfresca X Tagradable

Definicin 1.10: Composicin de interseccin. Si R y S son relaciones difusas de U1xU2 y


U2xU3, respectivamente, la interseccin de R y S es una relacin difusa en U1xU3 representada
por RS y definida como:

R S = (U 1,U 3) [MembR (u1 , u 2 ) * MembS (u 2 , u 3 )] /(u1 , u 3 ) (1.14)

en donde * puede ser cualquier operador de la norma triangular.

Definicin 1.11: Composicin de Unin. Si R y S son relaciones difusas en U1 U2 y U2


U3, respectivamente, la unin de R y S es una relacin difusa en U1 U3 representada por R
U S y definida como:

R S = (U 1,U 3) [MembR (u1 , u 2 ) + MembS (u 2 , u 3 )]/(u1 , u 3 ) (1.15)

en donde + puede ser cualquier operador de la conorma triangular.

12
Definicin 1.12: Composicin Supestrella. Si R y S son relaciones difusas en U1U2 y
U2U3, respectivamente, la composicin de R y S es una relacin difusa en U1 U3
representada por R S y definida como:

R o S = U 1,U 3 SupU 2 [MembR (u1 , u 2 ) * MembS (u 2 , u 3 )]/(u1 , u 3 ) (1.16)

Un buen nmero de posibles composiciones se producen dependiendo de la interpretacin de


* y de sup. Cuando * toma el valor de min la definicin anterior se convierte en la bien
conocida regla de composicin de Zadeh, conocida tambin como la regla de composicin supmin.

Por ejemplo, supongamos la relacin R definida como: humedad (h1) alta y temperatura externa
(te) clida y la relacin S definida como: temperatura externa (te) clida y temperatura interna (ti)
calurosa. Si aplicamos la ecuacin (1.12) tomando el sup como mximo y * como mnimo, la
relacin resultante sera:

MembRo S = max [min( MembR (h1 , t e ), MembS (t e , t i ))]


te ,calida

= max [min( MembH 1,alta (h1 ), MembTe,calida (t e ), MembTi ,calurosa (t i ))]


te ,calida

1.2. Control Difuso3

Lotfi Zadeh presenta por primera vez su teora del razonamiento aproximado,
desarrollndola plenamente y proporcionando con ello una poderosa herramienta para razonar
bajo informacin imprecisa o incierta. Aunque los fundamentos continan prcticamente
intactos, muchas aclaraciones y valiosas contribuciones se han hecho en los ltimos aos. El
modelo de Razonamiento Aproximado desarrollado por Zadeh es conocido como el modelo
posibilstico y cabe aclarar aqu que no es el nico, existiendo otros modelos como el de la teora
de la evidencia, o el modelo probabilstico de la teora de la probabilidad, basado en la
inferencia bayesiana, y de la cul hay un buen nmero de versiones. En el material que se
expone a continuacin, slo nos referiremos al modelo posibilstico.

En razonamiento clsico existen dos tipos de reglas de inferencia, el Modus Ponens y el Modus
Tollens, los cuales pueden ser generalizados para el caso de razonamiento aproximado como:

3 Partes textuales de este tema fueron tomadas de [5] y [8]

13
Modus ponens generalizado.
Antecedente 1: Si u1 es A entonces u2 es B
Antecedente 2: u1 es A

Conclusin: u2 es B

Modus tollens generalizado.


Antecedente 1: Si u1 es A entonces u2 es B
Antecedente 2: u2 no es B

Conclusin: u1 no es A

El modus ponens generalizado puede ser reducido al modus ponens cuando A = A y B = B. Este
tipo de inferencia suele ser conocida como razonamiento hacia adelante o como razonamiento guiado
por los datos, permitiendo ir desde las premisas hacia los resultados. Este razonamiento es
particularmente til cuando se utiliza en control difuso ya que nos permite tomar una decisin
de control en base al estado del sistema actual. De manera anloga, el modus tollens generalizado
puede ser reducido al modus tollens cuando A = no A y B = no B. A este tipo de inferencia se le
conoce como razonamiento hacia atrs o como razonamiento guiado por objetivos y suele ser ms bien
usado para generar explicaciones. Este ltimo tipo de inferencia es tpica de los sistemas
expertos, como por ejemplo, los dedicados a la diagnosis mdica. En adelante, solamente nos
referiremos a la inferencia modus ponens.

Basados en la ecuacin 1.12 podemos encontrar la regla de inferencia de composicin R I como


un modus ponens generalizado siguiendo la notacin establecida anteriormente como sigue:

Si F1 es un conjunto difuso elemental en U1, y R es una relacin difusa en U1U2, el


subconjunto difuso de I en U2 que ser inducido por F1 viene dado por la composicin de
F1 R, que es:

I = F1 o R = U 2 supU 1 [MembF 1 (u1 ) + MembR (u1 , u 2 )] / u 2 (1.17)

El cuantificador MUY aade precisin a un conjunto difuso, es decir, MUY caluroso es un


poco menos difuso que caluroso.

En razonamiento aproximado, el conocimiento es representado mediante reglas de inferencia.


Cuando se tiene un conjunto de reglas suelen ocurrir dos tipos de situaciones. Una, es la
conocida como el encadenamiento de reglas, que nos permite utilizar las conclusiones
alcanzadas en un momento dado como un disparo para otras reglas que a su vez podran ser
premisas para disparar otras reglas y as sucesivamente. La otra situacin se presenta cuando las
premisas de la regla permiten disparar de manera simultnea ms de una regla y es necesario
extraer de ellas una conclusin consistente o, si adems se presenta simultneamente con el

14
caso anterior, resolver el conflicto del orden en que las reglas se ejecutan. El primer fenmeno
no se presenta en el caso del control difuso ya que la conclusin de cada regla suele ser
directamente una potencial accin de control. El segundo fenmeno, por el contrario, es una
situacin muy comn en control difuso y la tarea a realizar es como combinar el efecto de las
diferentes conclusiones (potenciales acciones de control).

Existe un ltimo nivel de complicacin en lo que se refiere a operaciones difusas requeridas


para expresar el conjunto de reglas de un controlador. Los sistemas de control son clasificados
segn la multiplicidad de entradas y salidas como: SISO (una entrada, una salida), MISO
(mltiples entradas, una salida) y MIMO (mltiples entradas, mltiples salidas). La descripcin
que viene a continuacin se referir a sistemas MISO. La razn para ello es que un sistema
MIMO con n-output salidas puede siempre descomponerse en n-output sistemas MISO
independientes; por otro lado, un sistema MISO con n-input entradas no puede descomponerse
en n-input sistemas SISO independientes. El sistema SISO es un caso especial de un sistema
MISO con n-input = 1.

Sea Ri la i-esima regla de un sistema MISO con N reglas, donde am es la m-esima variable difusa
que adquiere el valor lingstico Am en el antecedente de la i-esima regla, y c i la variable
difusa de salida con el valor lingstico C i respectivo, la representacin del sistema MISO es:

1) R1: Si a1 es A11, y, , y aM es A1M, entonces c1 es C1

tambin,

2) R2: Si a1 es A21, y, , y aM es A2M, entonces c2 es C2

tambin,
...
tambin,

n) RN: Si a1 es AN1, y, , y aM es ANM, entonces cN es CN

donde, si interpretamos tambin como una composicin de unin y utilizando las ecuaciones
(1.11) y (1.15), podemos representar el conjunto de reglas R del sistema MISO como:

N
R = R1 R 2 L R N = U ( A1i (a1 ) x L xAMi (a M ) xC i (c i )) (1.18)
i =1

cuya funcin de pertenencia es:

[
MembR = max MembAi (a1 ) *L * MembAi (a M ) * MembC i (c i )
1 M
] (1.19)

15
Existen dos formas para encontrar el disparo del conjunto de reglas:

1. La inferencia basada en la operacin de composicin.

En este caso el significado de cada regla es agregada en una relacin difusa que combina el
conjunto completo de reglas. El disparo es conseguido mediante el uso de la operacin de
composicin entre la entrada escalar fusificada y la relacin difusa del conjunto de todas las
reglas. Como resultado de la composicin se obtiene el valor difuso global de la variable de
salida.

2. La inferencia basada en cada regla individual.

Aqu el disparo del conjunto es realizado regla a regla de la siguiente manera:

a) Se encuentra el grado de similitud entre los valores escalares de las variables de entrada y los
valores lingsticos correspondientes a la seccin de antecedentes de la regla en cuestin.
b) En base a la similitud encontrada en a) se recorta el conjunto difuso del valor lingstico
correspondiente dentro del consecuente de la regla.
c) Los valores recortados de los subconjuntos difusos encontrados en b) son agregados en un
conjunto difuso global que describe el valor de la salida.

1.2.1. Arquitectura de Controladores Difusos4

Aunque la estructura de todos los controladores difusos es aproximadamente igual, no


existe una definicin general para sus componentes internos. Cada diseador debe elegir y
decidir cuidadosamente un buen nmero de cuestiones. Desde cierto punto de vista, la
diversidad de posibilidades y de mtodos para elegir una solucin particular a cada una de las
cuestiones dependiendo del caso de que se trata, hace que hasta ahora, el diseo de un
controlador difuso sea mas un arte que una ciencia.

La estructura general de un controlador difuso es la mostrada en la figura 1.8, en la cual puede


apreciarse que consta de cuatro mdulos principales:

 Interfaz de Fusificacin.

 Base de Conocimiento.

 Mecanismo de Inferencia.

 Interfaz de defusificacin.

4 Para mayor detalle revisar [9] y [10]

16
Figura 1.8: Estructura general de un controlador difuso

Ms adelante se dar un tratamiento mas detallado a cada uno de ellos. No obstante, antes de
hacerlo es importante tener en consideracin que aunque el diseo de un controlador difuso
implica la definicin de cada uno de los cuatro mdulos, se asume que en algn sentido, antes
de comenzar la especificacin de cada uno de ellos en detalle, ya se conoce (o se ha definido)
aproximadamente la forma que tendr. Esto es debido a que existe una estrecha
interdependencia entre todos ellos; por un lado, a medida que se van definiendo los parmetros
de un modulo y se avanza hacia la especificacin de los otros, un proceso de iteracin es
requerido; por otro lado, el proceso puede empezar a partir de establecer cualquiera de ellos y
avanzar en el diseo, ya sea hacia delante o hacia atrs, en la determinacin de los dems. Por
ejemplo, no es posible establecer la forma en la que la informacin medida ser convertida en
difusa sin conocer previamente la forma en la que se obtendran las reglas de control. Por
ejemplo, si las reglas son obtenidas a partir del conocimiento heurstico de un operador
experto, es muy posible que el ingeniero de control decida la seleccin del nmero de clases o
valores lingsticos de cada variable difusa en funcin del conocimiento expresado por el
experto. Por el contrario, cuando no se cuenta con informacin heurstica para describir los
criterios de operacin de la planta, se fijara un nmero aproximado de clases y la definicin de
las reglas debera de limitarse al nmero predefinido. Si el comportamiento del controlador no
es el adecuado, es posible que un aumento en el nmero de clases permita aumentar tambin la
resolucin del controlador. Las ideas de interdependencia y de un proceso de prueba y error
deben ser mantenidas en mente durante la descripcin de la arquitectura general de los
controladores difusos que se da a continuacin. El orden de exposicin no es el orden de

17
diseo; ms bien, es el orden que sigue el flujo de informacin a medida que las seales de
entrada son procesadas para encontrar una seal de control como respuesta.

1.2.2. Interfaz de Fusificacin

Hay varias funciones que pueden estar incluidas en el proceso llevado a cabo por la interfaz
de fusificacin:

Obtener la medida de las variables de entrada. En las aplicaciones de control difuso los
valores obtenidos desde los sensores suelen ser valores escalares. Normalmente se asume que
estas seales son medidas de manera exacta y que no se introduce imprecisin. Para modelar
esto con conjuntos difusos, cada seal de entrada s0 se representa como un conjunto difuso F
con una funcin de pertenencia dada por la figura:

1 s = s0
MembF ( s ) = (1.20)
0 s s 0

Si la lectura del sensor produce ruido, la interfaz de fusificacin debe convertir los datos
registrados probabilsticamente en nmeros difusos. Esto puede ser modelado utilizando una
funcin de pertenencia triangular. El vrtice superior del tringulo corresponde a la media del
valor registrado y el ancho de su base a la desviacin estndar.

La medida se representa por la interseccin entre la distribucin de los datos medidos y los
valores lingsticos de la variable difusa como se muestra en la figura 1.9a y 1.9b.

Figura 1.9a: Obtencin de membresa: lectura precisa.

18
Figura 1.9b: Obtencin de membresa: lectura difusa.

Normalizacin. Si la gama de valores asignados a cada variable lingstica en los antecedentes


de la base de reglas esta definida en un dominio normalizado, el valor medido por el sensor
debe aplicrsele el factor de escala correspondiente (almacenado en la base de datos), que
relaciona el universo de discurso de la variable medida con el espacio normalizado de la
variable lingstica. Como ha sido comentado antes, una de las ventajas de la normalizacin es
la posibilidad de disminuir el efecto de la dependencia del contexto permitiendo hacer diseos
independientes del dominio. La normalizacin, sin embargo, conlleva algunas desventajas
como son: a) la perdida de relacin directa entre la expresividad lingstica con el universo de
discurso, b) el cambio en la sensibilidad de los parmetros que puede tener serias repercusiones
en la estabilidad del controlador, y c) el aumento en el coste computacional por la doble
operacin normalizacin y desnormalizacin de las seales.

Para cada seal medida (o medida y normalizada) debe encontrarse el conjunto de valores de
pertenencia de los valores lingsticos definidos para la variable difusa correspondiente,
utilizando para ello las funciones de pertenencia almacenadas en la base de datos. La manera de
hacer esto depender del mecanismo de inferencia seleccionado segn lo descrito
anteriormente. Bsicamente la diferencia es la siguiente. En un caso, cada regla es agregada en
una relacin difusa que describe el conjunto completo de reglas, es preciso encontrar y
almacenar los valores del conjunto de las Membresas para el juego completo de reglas. La
inferencia es realizada, va funcin de composicin, con la entrada escalar fusificada y como
resultado de la composicin se obtiene el conjunto difuso que describe el valor de salida. En el
otro caso, cada regla va siendo evaluada por separado en funcin de los valores escalares de sus
entradas que son fusificados y utilizados para encontrar el valor i correspondiente a cada
regla. Como resultado de la inferencia solamente se almacena el conjunto difuso recortado de

19
la variable de salida. La combinacin de la contribucin de cada regla en un conjunto difuso es
el valor difuso de la variable de salida.

Tabla 1.1. Funciones de membresa y su representacin matemtica

Triangular (x, [a, b, c])


0 , si x < a;
( x a)
, si a x b;
(b a )
1 , si x = b;
(c x )
, si b < x c;
Funcin Triangular (c b )
0 , si x > c;

Trapezoidal (x, [a, b, c, d])


0 , si x < a;
( x a)
, si a x b;
(b a )
1 , si b < x c;
Funcin Trapezoidal (d x)
, si c < x d;
(d c)
0 , si x > d;

Tipo Campana (x, [b, c])


c b
x, c b, , si x < c;
2

c + b
x, c + b, , si x c;
2
Funcin Campana o Gaussiana

20
Tabla 1.1. (continuacin) Funciones de membresa y su representacin matemtica

Tipo_S (x, [a, b, c])


0 , si x < a;

xa
2

2 , si a x b;
ca

xa
2

1 2 , si b x c;
ca
Funcin S 0 , si x > c;

Singleton o Pulso Unitario (x, [a])

1 , si x = a;
0 , si x <> a;
Funcin Singleton

1.2.3. Base de Conocimiento

Identificacin de variables. La primera tarea a llevar a cabo cuando se disea un control


difuso es identificar cuales sern las variables de entrada y salida del controlador, as como los
parmetros que las definirn. La determinacin de qu variables son utilizadas para disear el
controlador quedara, a partir de este momento, implcita en la configuracin del controlador y
en la Base de Conocimiento. Respecto a la seleccin de variables de entrada y salida del
controlador, la gran mayora de los controladores difusos reportados en la literatura asume la
misma estructura. Mientras que resulta obvio que la variable de control (o la variacin de ella
en el tiempo) viene determinada por el sistema particular que se desea controlar, no lo es
necesariamente, cuales deben ser las variables de entrada. El error entre las seales de consigna
y de salida, y la razn de cambio (derivada) de este error, son las variables de entrada usadas
por casi todos los diseadores de controladores difusos. Nuestra metodologa selecciona
automticamente las variables de entrada del controlador de entre las variables fsicas que
describen al sistema (presin, temperatura, posicin, etc.) en funcin de la causalidad (espacial y
temporal) que guardan con respecto a la variable de control.
La Base de Conocimiento est formada a su vez por dos componentes. El primero es una Base de
Datos que mantiene los parmetros y las caractersticas de cada una de las variables lingsticas,
el segundo es la Base de Reglas que almacena el conocimiento respecto a la causalidad entre las

21
variables de entrada y las variables de control. Desde un punto de vista, se puede decir que la
base de datos da los elementos que permiten la expresin de la base de reglas, pero visto de manera
inversa, tambin puede decirse que es la base de reglas la que, una vez expresada, se formaliza
mediante los parmetros registrados en la base de datos.

1.2.4. Base de Datos

La base de datos proporciona informacin a la interfaz de fusificacin, al mecanismo de


inferencia y a la interfaz de defusificacin. As mismo, proporciona los elementos del lenguaje
para construir las reglas. Su contenido est estructurado con respecto a cada variable lingstica,
proporcionando para cada una:

El nmero de valores lingsticos.

Los parmetros de la funcin de pertenencia correspondientes a cada valor lingstico.

El factor de normalizacin y desnormalizacin (si lo hay) aplicado al universo de discurso.

Nmero de valores lingsticos. Una vez determinadas las variables de entrada y de salida
del control difuso, debe ser definido el nivel de resolucin o el nmero de valores lingsticos
de cada variable lingstica.

{TInt,calurosa, TInt,agradable, TInt,fria},

o bien:

{TInt,calurosa, TInt,calida, TInt,agradable, TInt,fresca, TInt,fria}

La determinacin del nmero de valores lingsticos es tambin conocida bajo los nombres de
clustering, cuantificacin, particin o discretizacin del universo de discurso y es una de las
operaciones que involucran mayor heurstica en el diseo de un controlador difuso. Los
algoritmos suelen tener una estructura iterativa aumentando poco a poco el nmero de clases y
usando una cierta pertenencia como criterio de convergencia.

Funciones de Pertenencia. Como fue indicado anteriormente, cada valor lingstico es


definido por su correspondiente funcin de pertenencia. En el desarrollo de controladores
difusos han sido utilizados diferentes tipos de funciones de pertenencia. Debido a la facilidad
de su descripcin paramtrica y funcional, las funciones ms comnmente usadas son:
triangulares, trapezoidales y gaussianas (figura 1.11). Cuando se ha determinado el tipo de
funcin de pertenencia para cada valor lingstico Fi,j , en el universo de discurso Ui con

22
MembF : U [0, 1], los parmetros que la describen deben de ser fijados. Los ms importantes
son:

Valor Mximo

mi , j tal que Membxi , j (mi , j ) = 1.0

Figura 1.10: Tipos comunes de funciones de pertenencia

Si la funcin es triangular o gaussiana el valor mximo es nico, si la funcin es trapezoidal el


valor mximo es un intervalo. No debe olvidarse que para cumplir con los requerimientos
matemticos de los nmeros difusos es necesario que el valor mximo sea siempre 1.0.

 Soporte:

X i , j = {xi } tal que Membxi , j ( xi ) > 0

El intervalo de soporte de una funcin difusa es dividido en dos regiones por el valor mximo,
estableciendo la regin izquierda y derecha. Si ambas regiones son iguales, se dice que la
funcin es simtrica.

23
 Punto de cruce:

ci , j tal que Membxi , j (ci , j ) =

La determinacin de este parmetro es muy importante ya que representa el grado de


interseccin entre dos (o ms) valores lingsticos contiguos. A travs de resultados de carcter
emprico, se ha determinado que un valor ptimo para suele ser de 0.5, el cual es el valor
utilizado generalmente en la literatura de control difuso.

Figura 1.11: Parmetros de las funciones de pertenencia

 Ancho de banda

i, j tal que z i , j , Membxi. j ( z )

La figura 1.12 ilustra estos parmetros. La seleccin de los parmetros de la funcin de


pertenencia puede afectar de manera significativa el comportamiento y la estabilidad del
controlador.

Factores de escala de la normalizacin. Cuando el diseo del controlador incluye las


operaciones de normalizacin y desnormalizacin la base de datos mantiene el registro de los
diferentes factores e escala aplicados a cada una de las seales de entrada y de salida
permitiendo mapear los valores fsicos del sistema real en el dominio normalizado en el que
opera el controlador.

24
1.2.5. Base de Reglas

Una vez definidas las variables difusas y sus respectivos valores lingsticos, es posible
expresar el modelo cualitativo del controlador difuso mediante el conjunto de reglas que las
relacionan.

Obtencin de Reglas. Como en el caso de la base de datos, no existen mtodos generales


para derivar las reglas. Sugeno presenta cuatro mtodos para derivar las reglas del controlador
difuso.

1. Experiencia y conocimiento de un experto.

2. Modelando las acciones de control que ejerce el operador.

3. Modelando un proceso.

4. Auto organizacin.

Sugeno enfatiza que ninguno de ellos debe ser considerado como mutuamente excluyente con
respecto a los dems, pudindose combinar y complementar entre ellos. Siendo el ms natural e
intuitivo, el primer mtodo ha sido el ms ampliamente usado (por lo menos en la primera
generacin de controladores difusos). Al ser el ms heurstico resulta ser el menos estructurado.
En este mtodo, el conocimiento emprico de (un) experto(s) es plasmado en un conjunto de
reglas mediante la verbalizacin introspectiva de sus experiencias, ya sea en forma espontnea o
por medio de herramientas de adquisicin del conocimiento como el uso de cuestionarios o
entrevistas.

En el segundo mtodo, el conjunto de reglas resultante es similar en el contenido y en la


forma al obtenido con el mtodo anterior. Sin embargo, en este caso la construccin de la base
de reglas es realizada mediante el modelado, por un ingeniero de control difuso, a partir de la
observacin pasiva de las acciones y condiciones de control que lleva a cabo el operador.

El tercer mtodo, an en sus primeras etapas de desarrollo, est basado en el desarrollo de un


modelo difuso del proceso que se desea controlar. Un modelo aproximado de la planta es
configurado mediante implicaciones que describen los posibles estados del sistema. Una vez
identificado el modelo difuso de la planta, se construye un controlador difuso, ya sea mediante
un conjunto de reglas o mediante una relacin difusa explicita, en las que de alguna manera se
representan las relaciones inversas entre las salidas y entradas del sistema. El enfoque
subyacente en este mtodo es similar en su naturaleza al enfoque que utiliza la teora de control
tradicional. Actualmente este mtodo comienza a gozar de gran aceptacin y expansin ya que
mediante esta aproximacin se alcanzan mejores ndices de calidad de operacin y de seguridad
permitiendo una estructura que, aunque resulta ms compleja, es mucho ms tratable desde el
punto de vista terico.

25
El cuarto y ltimo mtodo se refiere al desarrollo de reglas que pueden ser ajustadas sobre el
tiempo para mejorar la calidad de operacin del controlador. A ese tipo de controladores se les
conoce como SOC de Self-Organizing Process.

Estructura de las Reglas. Para mostrar el tipo de reglas almacenadas en las bases de reglas,
consideremos el siguiente ejemplo que muestra una tpica estructura de las reglas obtenidas
mediante el tercer mtodo. Como se ha mencionado anteriormente, el error entre las seales de
consigna y de salida (error), y la razn de cambio (derivada) de este error (error), son las
variables de entrada seleccionadas por casi todos los diseadores de controladores difusos,
mientras que la salida es la accin de control (control) o bien su cambio (control). Utilizando
estas variables es posible construir conjuntos de reglas que representen controladores difusos
similares a los varios tipos de controladores clsicos conocidos.

1.2.6. Mecanismo de Inferencia

El corazn de un controlador difuso, y de cualquier sistema basado en lgica difusa, es el


mecanismo de inferencia. El mecanismo de inferencia en los controladores difusos es
relativamente simple, con respecto por ejemplo a los sistemas expertos en donde el
encadenamiento de reglas complica la estructura del razonamiento aproximado, los
requerimientos de precisin y estabilidad hacen que el trabajo de seleccin y evaluacin del
mtodo adecuado sea, an, una labor compleja. Varios estudios tericos respecto de la
implicacin difusa y los criterios de seleccin segn el caso.

Partiendo de la estructura de la base de reglas consideraremos cuatro mecanismos de


inferencia:

Mecanismo de Inferencia Sup-Min. Este mtodo es tambin conocido como el mtodo de


Mamdani. Est basado en la interpretacin de la implicacin difusa como la composicin de
interseccin, e interpretando el operador * como mnimo, es decir, el y en el cuerpo de
antecedentes es operando con el mnimo. La combinacin de reglas es realizada bajo su
ecuacin e interpretando la unin como mximo.

Este es, quizs, el mtodo de razonamiento mas frecuente en la literatura de aplicaciones de


control difuso.

Partiendo de ecuaciones preliminares, e incorporando las suposiciones anteriores obtenemos:

[
MembR = max min( i , MembC i (c i )) ] (1.21)
i

donde:

26
i = min(MembA (a1 ),L, MembA (a M ))
i
1
i
M
(1.22)

Mecanismo de Inferencia Sup-prod. Este mtodo es tambin conocido como mtodo de


Larsen. Igualmente que en el sup-min, este mtodo est basado en la interpretacin de la
implicacin difusa como la composicin de interseccin dada anteriormente, pero en este caso,
el operador * se interpreta como producto, es decir, el y que une los antecedentes es evaluado
como el producto de sus funciones de pertenencia.

incorporando las suposiciones anteriores:

[
MembR = max i MembC i (c i )
i
] (1.23)

donde:

i = MembA (a1 ) MembA (a 2 ) K MembA (a M )


i i i (1.24)
1 2 M

Mecanismo de inferencia de Sugeno. Igual que el mtodo anterior, este mtodo esta
basado en la implicacin difusa definida como la composicin de interseccin dada e
interpretando * como mnimo. Aunque suele utilizar funciones montonas (obligatoriamente
en la variable de salida), se diferencia de mtodos anteriores en que el calculo del valor escalar
de la variable de control para cada regla es hecho por medio de una funcin lineal, es decir
utilizando las reglas de tipo . Fue originalmente propuesto por Sugeno y Takagi. La inferencia
de la i esima regla es dada por ifi(a1,,aN), donde fi es una combinacin lineal de las variables de
entrada a1,,aN. la combinacin de las conclusiones obtenidas por las reglas es realizada
mediante la media ponderada de cada una de ellas como:

i f i (a1 ,L, a N )
N

c *
= i =1
(1.25)

N
i =1 i

1.2.7. Interfaz de Defusificacin5

El proceso de defusificacin es el proceso inverso de la fusificacin, es decir, es el proceso


de convertir un valor difuso (o una conclusin difusa) en informacin concreta expresada
mediante un escalar. Hasta ahora ningn actuador es capaz de interpretar una seal difusa
como entrada.

5 Los tipos de defusificacin contemplados aqu fueron extrados de [8]

27
Necesariamente las conclusiones difusas que el mecanismo de inferencia produce deben ser
decodificadas a un valor escalar. Zadeh fue el primero en percatarse de este problema y sugiri
algunas posibilidades para resolverlo. Actualmente existe un buen nmero de mtodos de
defusificacin, pero como ocurre con otros elementos del diseo de controladores difusos, no
existe an un procedimiento sistemtico para seleccionar el mas adecuado, dependiendo del
caso de aplicacin particular. Dentro de esta seccin analizaremos los siguientes:

1. Criterio del Mximo (CM).

2. Media de las Alturas (MH).

3. Media de los Mximos (MOM).

4. Suma de los Centros de rea (SCOA).

5. Centro de rea (Gravedad) (COA).

La seleccin del mtodo de defusificacin puede jugar un papel decisivo en la sntesis de


modelos difusos para muchas reas de aplicacin. Particularmente dentro del rea de control
difuso, su influencia puede ser determinante en el comportamiento y la robustez del
controlador. De hecho, la principal motivacin del estudio del proceso de defusificacin tiene
su origen en las aplicaciones de la lgica difusa dentro del campo del control de procesos.

Sin embargo, aunque el nmero de aplicaciones de los controladores difusos ha crecido


rpidamente, no parece habrsele dado la importancia requerida. La calidad de las conclusiones
obtenidas por el mecanismo de inferencia puede deteriorarse significativamente bajo una mala
eleccin del mtodo de defusificacin.

Asumamos que como resultado del proceso de inferencia fueron disparadas N reglas. Cada una
de las i-esimas reglas ha producido una conclusin en la forma de un subconjunto difuso
acotado por el nivel de activacin i. As que antes de entrar en la descripcin de cada uno de los
mtodos enumerados anteriormente, consideremos la notacin siguiente:

N = Nmero de reglas disparadas.

i = Nivel de activacin de la i-esima conclusin (altura).

C i = Conclusin difusa de la i-esima regla. Subconjunto del valor lingstico CLk en el


dominio C de la variable difusa de salida c, tal que MembCLk(c) i para toda c C.

K = Nmero de valores lingsticos de la variable difusa de salida c.

28
cmaxk = Valor escalar correspondiente al mximo del valor lingstico CLk tal que
MembCLk(cmaxk) = 1.0.

cmax i = Valor escalar correspondiente al mximo de la conclusin difusa C i


tal que
MembCi(cmaxi) = i.

C* = Valor escalar concreto defusificado de la variable de control.

Criterio del Mximo (CM). Este es el ms simple de todos los mtodos y el ms econmico
desde el punto de vista computacional ya que considera nicamente la i-esima conclusin con
la mayor i cuyo correspondiente cmaxZ se encuentra almacenado en la base de datos. De este
modo:

c * = c max z , tal que Z = sup i (1.26)


i

Si la funcin de pertenencia no tiene un nico cmaxZ sino que mas bien es un intervalo, como
por ejemplo en una funcin trapezoidal, puede tomarse el valor medio del intervalo como:
cmaxZ = (cmaxZsup cmaxZinf )/2.

Media de las Alturas (MH). Este mtodo es una generalizacin del anterior ya que en vez de
considerar solo el cmaxk del valor lingstico con el mayor, se considera todos los cmaxk
correspondientes a las conclusiones de las N reglas disparadas. La contribucin de cada regla al
valor de c* es ponderada mediante la altura (i) de la i-esima conclusin de la siguiente manera:

c max i i
N

c *
= i =1
(1.27)

N
i =1 i

Este es un mtodo bastante mejor al anterior, sobre todo si se utiliza funciones simtricas, ya
que sin aumentar mucho el costo computacional permite obtener valores de c* mucho ms
plausibles.

Media de los Mximos (MOM). Este mtodo es similar a los anteriores al estar basado en la
estatura de los iS, pero en este caso en vez de utilizar los cmaxk correspondientes a los
mximos de los valores lingsticos, se consideran los cmaxi correspondientes a los
subconjuntos Ci cuyos valores mximos corresponden con los s de las conclusiones de cada
regla. El costo computacional aumenta por tener que calcular cada cmaxi mediante el universo
de la funcin de pertenencia. Si el algoritmo esta basado en la conclusin con mximo,
tenemos que:

29
c * = c max Z , tal que Z = sup i (1.28)
i

si se da el caso de que cmaxz es nico y la funcin de pertenencia es simtrica, este mtodo


puede ser reemplazado por el CM al ser completamente equivalentes. Sin embargo, suele darse
el caso de que no lo sea.

Suma de los Centros de rea (SCOA). Ninguno de los mtodos considerados hasta ahora
toma en cuenta el perfil de las funciones de pertenencia. El mtodo de Suma de los Centros de
rea permite aadir esta informacin. Por supuesto, es inevitable que el costo computacional
aumente de manera notoria. La idea de este mtodo es considerar individualmente el centro de
gravedad (rea cuando es una sola salida) del conjunto difuso obtenido como conclusin de
cada una de las reglas disparadas y, posteriormente, efectuar la media ponderada del conjunto
total. Esto puede ser calculado como:

c Membc (c )
J N i
j =1 j i =1 j
c *
= (1.29)
Membc (c )
J N i
j =1 i =1 j

con C= {c1, c2, , cJ}.

Centro de rea (COA). Para corregir el efecto de superposicin de las reas del mtodo
SCOA, simplemente es necesario tomarlas en cuenta solo una vez. Esto se hace considerando
nicamente el perfil de la funcin de pertenencia que resulte mayor en cada punto, es decir:

c *
=
C c max i Membci (c)dc
(1.30)
C max i Membc (c ) dc
i

si la funcin Memb(c) es continua, y mediante:

c max Membc (c )
J i
j =1 j i j
c *
= (1.31)
max Membc (c )
J i
j =1 i j

si es discreta.

Aunque las expresiones matemticas de COA y SCOA pueden parecer muy similares, el costo
computacional del COA es bastante superior ya que se requiere calcular o bien los puntos de
interseccin entre cada una de las funciones que intersectan, o bien, algo aun mas costoso,
evaluar todas las funciones punto a punto y seleccionar el de mayor valor en cada caso.

30
1.3. Sistemas No Lineales6

La teora de sistemas de control se ocupa del anlisis y el diseo de componentes que


interactan en un sistema en una configuracin que proporcione a un comportamiento
deseado. La configuracin esencial usada en teora de sistemas de control se basa en el
concepto fundamental de realimentacin, que consiste en el proceso de medir las variables de
inters en el sistema y usar esa informacin para controlar su comportamiento. La teora y la
prctica del control tienen un amplio rango de aplicaciones en los campos de la ingeniera
aeronutica, qumica, mecnica, ambiental, civil y elctrica, as como en muchas otras
disciplinas no de ingeniera. Las ventajas del control eficiente en la industria son inmensas, e
incluyen mejoras en la calidad de los productos, reduccin en el consumo de energa,
minimizacin de los materiales de desecho, mayores niveles de seguridad y reduccin de la
contaminacin.

El punto de partida en el anlisis de un sistema de control es su representacin por un


modelo matemtico, generalmente como un operador entre entradas y salidas del sistema, o
como un conjunto de ecuaciones de diferencia y/o diferenciales. La mayora de los modelos
matemticos usados tradicionalmente por tericos y prcticos del control son lineales. De
hecho, los modelos lineares son mucho ms manejables que los no lineales, y pueden
representar en forma precisa el comportamiento de sistemas reales en muchos casos tiles.

Sin embargo, los avances tecnolgicos actuales han generado una enorme variedad de nuevos
problemas y aplicaciones que son no lineales en esencia. Por ejemplo, fenmenos no lineales
tales como equilibrios mltiples, ciclos lmite, bifurcaciones, corrimiento de frecuencias y
caos, se observan comnmente en aplicaciones modernas importantes en ingeniera, tales
como sistemas de comando de vuelo, manipuladores robot, sistemas de autopistas
automatizadas, estructuras de ala de avin, y sistemas de inyeccin de combustible de alto
rendimiento. Tales fenmenos no lineales no se pueden describir mediante dinmica de
modelos lineares; una razn ineludible para el uso de modelos no lineales y el desarrollo de
conceptos y herramientas de sistemas no lineales de control.

Se pueden encontrar muchos tipos diferentes de fenmenos no lineales en los sistemas de


control reales, y se les puede dividir en dos clases, dependiendo de si son inherentes al sistema,
o si se aaden en forma deliberada.

A continuacin, se explicaran, en primer lugar, los fenmenos no lineales inherentes y luego los
deliberados. Fenmenos no lineales inherentes. Los fenmenos no lineales inherentes son
inevitables en los sistemas de control. Ejemplo de ello son:

a) Saturacin
b) Zona muerta
c) Histresis

6 Para mayor detalle revisar [14] y [15]

31
d) Friccin esttica, friccin de Coulomb y otras fricciones no lineales
e) Elasticidad no lineal
f) Compresin de fluidos

Por lo general la presencia de estos fenmenos no lineales en sistemas de control afecta en


forma adversa el comportamiento del sistema. Por ejemplo la zona muerta puede causar error
en estado estacionario.

Procedimiento de anlisis y diseo de sistemas de control no lineales

No hay un mtodo general para afrontar todos los sistemas no lineales, porque las
ecuaciones diferenciales no lineales carecen de un procedimiento general de solucin, (solo se
pueden hallar soluciones exactas para algunas ecuaciones diferenciales no lineales simples. Para
muchas ecuaciones diferenciales no lineales de importancia prctica, solo es posible resolverlas
mediante computadora, y tales condiciones solo son validas bajo las condiciones limitadas para
las cuales fueron obtenidas).

Como no hay un procedimiento general, se puede tomar cada ecuacin no lineal, o grupo de
ecuaciones similares, en forma individual, para intentar desarrollar un mtodo de anlisis que se
pueda aplicar satisfactoriamente a ese grupo particular (Ntese que aunque se pueda realizar
una generalizacin restringida dentro del grupo de ecuaciones similares, es imposible una
generalizacin mas amplia de una solucin particular).

Una forma de analizar y disear un grupo determinado de sistemas de control no lineal, en el


que el grado de no linealidad sea pequeo, es utilizar tcnicas de linealizacin equivalente, y
entonces resolver el problema resultante linealizado.

Algunos elementos no lineales se introducen en forma intencional en un sistema para mejorar


su comportamiento o para simplificar la construccin del sistema, o ambos. Un sistema no
lineal diseado adecuadamente para cumplir cierta funcin suele resultar superior desde el
punto de vista econmico, de peso, de espacio y de confiabilidad, a sistemas diseados para
cumplir la misma tarea.

1.3.1. El Ball and Beam

El Ball and Beam es un importante y clsico modelo de ingeniera de control y sistemas. Es


muy popular por que es un sistema simple y fcil de entender en cuanto a su funcionamiento,
pero que posee una propiedad muy interesante para la ingeniera: es un sistema no lineal.

La descripcin completa de la dinmica de la bola rodando sobre la barra es compleja pero una
til simplificacin del modelo que se presenta a continuacin:

32
Figura 1.12: Fuerzas actuantes en el Ball and Beam

La fuerza que acelera la pelota conforme rueda por la barra viene de la componente
gravitacional que acta paralela a la barra. La lnea punteada en la figura muestra esta fuerza que
es equivalente a mgsen . Realmente la bola acelera sobre la barra cuando rueda pero en nuestra
derivacin podemos asumir que la bola se desplaza sin friccin. Usando la ecuacin de fuerza =
masa x aceleracin, el modelo simplificado del Ball & Beam es:


mgsen = m x (1.32)

donde, m es la masa de la bola, g es la constante gravitacional, es el ngulo de la barra y


finalmente x es la posicin de la bola sobre la barra.

El objetivo del control es regular automticamente la posicin de la bola en la barra


modificando el ngulo de la barra. Este es un problema de control difcil por que la bola no se
queda en solamente un lugar. Por el contrario se mueve con aceleracin proporcional al
ngulo de la barra. En trminos de la ingeniera de control, el sistema es inestable en lazo
abierto por que la salida del sistema (posicin de la bola) puede incrementarse sin lmite como
respuesta a una entrada constante (ngulo de inclinacin de la barra). Por lo tanto un esquema
de control retroalimentado tiene que ser empleado.

En el caso de ngulos pequeos sen es aproximadamente igual a entonces el modelo puede


ser simplificado aun ms como sigue:


x = g (1.33)

Este es el modelo bsico del balancn y la pelota que muestra como la aceleracin de la bola es
proporcional a la gravitacin y el ngulo de inclinacin de la barra. Dicho ngulo es
proporcional al ngulo controlado por la seal de control u y la posicin de la bola x es

33
registrada por un sensor y, remplazando por la seal de control u, la posicin de la bola por
la posicin medida del sensor y, combinando las constantes del actuador y del sensor con la
constante gravitacional, es posible encontrar una sola constante b, que representa la ganancia
total en la respuesta desde la entrada del voltaje de control hasta la aceleracin de salida como
sigue:


y = bu (1.34)

Este modelo simple es una buena aproximacin a la verdadera dinmica del sistema y es la
versin normalmente utilizada. De igual forma el modelo en variables de estado que representa
la dinmica del sistema es:


x x 0
2
d x ( x g sin ) 0
= + 0 u (1.35)
dt

1
0

1.4. El microcontrolador PIC16F877

En la actualidad, todos los elementos del controlador se han podido incluir en un chip, tal
es el caso del PIC, disponiendo de bloques esenciales como procesador, memoria de datos e
instrucciones, lneas de entrada salida, oscilador de reloj y mdulos controladores de
perifricos.

La Familia del PIC16F877

El microcontrolador PIC16F877 de Microchip pertenece a una gran familia de


microcontroladores de 8 bits (bus de datos) que tienen las siguientes caractersticas generales
que los distinguen de otras familias:

- Arquitectura Harvard
- Tecnologa RISC
- Tecnologa CMOS

Estas caractersticas se conjugan para lograr un dispositivo altamente eficiente en el uso de la


memoria de datos y programa y por lo tanto en la velocidad de ejecucin.

34
Variantes principales

Los microcontroladores que produce Microchip cubren un amplio rango de dispositivos cuyas
caractersticas pueden variar como sigue:

- Empaquetado (desde 8 patitas hasta 68 pines)


- Tecnologa de la memoria incluida (EPROM, ROM, Flash)
- Voltajes de operacin (desde 2.5 v. Hasta 6v)
- Frecuencia de operacin (Hasta 20 Mhz)

En la tabla 1.2, se especifican los rangos de voltaje estndar y extendido manejados por los
dispositivos

Tabla 1.2: Voltajes manejados por los PICs

Rango de voltaje EPROM ROM Flash


Estndar C 4.5 a 6v CR 4.5 a 6v F 4.5 a 6v
Extendido LC 2.5 a 6v LCR 2.5 a 6v LF 2 a 6v

Oscilador

Los PIC de rango medio permiten hasta 8 diferentes modos para el oscilador. El usuario puede
seleccionar alguno de estos 8 modos programando 3 bits de configuracin del dispositivo
denominados:

FOSC2, FOSC1 y FOSC0. En algunos de estos modos el usuario puede indicar que se genere
o no una salida del oscilador (CLKOUT) a travs de una patita de Entrada/Salida. Los modos
de operacin se muestran en la tabla 1.3:

Tabla 1.3: Tipos de osciladores que puede usar el PIC

LP Baja frecuencia (y bajo consumo de potencia)


XT Cristal / Resonador cermico externos, (Media frecuencia)
HS Alta velocidad (y alta potencia) Cristal/resonador
RC Resistencia/capacitor externos (mismo que EXTRC con CLKOUT)
EXTRC Resistencia / capacitor externos
EXTRC Resistencia / Capacitor externos con CLCKOUT
INTRC Resistencia / Capacitor internos para 4 MHz
INTRC Resistencia / Capacitor internos para 4 MHz con CLKOUT

35
Los tres modos LP, XT y HS usan un cristal o resonador externo, la diferencia sin embargo es
la ganancia de los drivers internos, lo cual se ve reflejado en el rango de frecuencia admitido y
la potencia consumida. En la tabla 1.4, se muestran los rangos de frecuencia as como los
capacitores recomendados para un oscilador en base a cristal.

Tabla 1.4: Valores de cristales y capacitares para osciladores

Modo Frecuencia tpica Capacitores recomendados


C1 C
LP 32 khz 68 a 100 pf 68 a 100 pf
200 khz 15 a 30 pf 15 a 30 pf
XT 100 khz 68 a 150 pf 150 a 200 pf
2 Mhz 15 a 30 pf 15 a 30 pf
4 Mhz 15 a 30 pf 15 a 30 pf
HS 8 Mhz 15 a 30 pf 15 a 30 pf
10 Mhz 15 a 30 pf 15 a 30 pf
20 Mhz 15 a 30 pf 15 a 30 pf

1.4.1. Caractersticas generales del PIC16F8777

La siguiente es una lista de las caractersticas que comparte el PIC16F877 con los
dispositivos ms cercanos de su familia:

PIC16F873 PIC16F874 PIC16F876 PIC16F877

- CPU RISC
- Slo 35 instrucciones que aprender
- Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los saltos que requieren dos
- Frecuencia de operacin de 0 a 20 MHz (DC a 200 nseg de ciclo de instruccin)
- Hasta 8k x 14 bits de memoria Flash de programa
- Hasta 368 bytes de memoria de datos (RAM)
- Hasta 256 bytes de memoria de datos EEPROM
- Hasta 4 fuentes de interrupcin
- Stack de hardware de 8 niveles
- Reset de encendido (POR)
- Timer de encendido (PWRT)
- Timer de arranque del oscilador (OST)

7 Para mayor detalle revisar [12]

36
- Sistema de vigilancia Watchdog timer.
- Proteccin programable de cdigo
- Modo SEP de bajo consumo de energa
- Opciones de seleccin del oscilador
- Programacin y depuracin serie In-Circuit (ICSP) a travs de dos patitas
- Lectura/escritura de la CPU a la memoria flash de programa
- Rango de voltaje de operacin de 2.0 a 5.5 volts
- Alta disipacin de corriente de la fuente: 25mA
- Rangos de temperatura: Comercial, Industrial y Extendido
- Bajo consumo de potencia:
Menos de 0.6mA a 3V, 4 Mhz
20 A a 3V, 32 Khz
Menos de 1A corriente de standby.

Perifricos8

- Timer0: Contador/Temporizador de 8 bits con pre-escalador de 8 bits


- Timer1: Contador/Temporizador de 16 bits con pre-escalador
- Timer2: Contador/Temporizador de 8 bits con pre-escalador y post-escalador de 8 bits y
registro de periodo.
- Dos mdulos de Captura, Comparacin y PWM
- Convertidor Analgico/Digital: de 10 bits, hasta 8 canales
- Puerto Serie Sncrono (SSP)
- Puerto Serie Universal (USART/SCI).
- Puerto Paralelo Esclavo (PSP): de 8 bits con lneas de protocolo

1.4.2. Los Puertos Paralelos de Entrada / Salida

Los integrados PIC16F874 y PIC16F877 poseen 5 puertos de entrada / salida denominados


PORTA, PORTB,...,PORTE, mientras que el PIC16F873 y PIC16F876.

Estos puertos son totalmente programables, es decir, sus lneas pueden ser configuradas para
trabajar como entradas o como salidas a seleccin del programador.

El Puerto A (PORTA)

El puerto A posee 6 lneas bidireccionales. Los 3 registros asociados a este puerto son:

8 Los mdulos que estn en negrita son los que se usaron para la realizacin del proyecto (Captulo 2)

37
Registro PORTA (05H).- Registro de estado del Puerto A. Cada uno de los 6 bits menos
significativos (RA5,...,RA0) de este registro estn asociados a la lnea fsica correspondiente del
puerto. Al hacer una lectura este registro se lee el estado de todos los pines del puerto. Todas
las escrituras al registro son operaciones del tipo lee-modifica-escribe, es decir, toda
escritura al puerto implica que el estado de las patitas es ledo, luego es modificado y
posteriormente se escribe al latch de datos del puerto.

Figura 1.13: Representacin del registro del puerto A

Registro TRISA (85H).- Cada bit de este registro configura la direccin en que fluye la
informacin del pin correspondiente del puerto A, as, para k=0,1,...,5:}

Bit k de TRISA = 1 configura el pin RAk del puerto A como Entrada

Bit k de TRISA = 0 configura el pin RAk del puerto A como Salida

Figura 1.14: Representacin del registro TRISA del puerto A

Todas los pines del puerto A poseen diodos de proteccin conectados a Vdd (contra altos
voltajes de entrada) y a Vss (contra voltajes negativos) adems, manejan niveles de entrada tipo
TTL y como salidas se comportan como drivers tipo CMOS. Excepto el pin RA4, la cual como
entrada posee un Disparador Schmitt y como salida es de Drenaje abierto, adems RA4 slo
posee un diodo de proteccin conectado a Vss.

El Puerto B (PORTB)

El puerto B es un puerto digital de 8 bits, todos sus pines son bidireccionales y trabaja en
forma similar al puerto A. Tiene tres registros asociados: El registro de datos PORTB, el
registro de direccin de los datos TRISB y el registro OPTION_REG.

Registro PORTB (06H, 106H) .- Los ocho bits que contiene reflejan directamente el estado
de los ocho pines del puerto B RB0,...,RB7.

38
Registro TRISB (86H, 186H).- En forma similar a TRISA, al poner un 0 en un bit de TRISB
se configura el pin RB correspondiente como salida y al poner un 1 en un bit de TRISB se
configura el pin RB correspondiente como entrada.

Registro OPTION_REG (81H, 181H).- El bit 7 de este registro, denominado RBPU es


usado para conectar/desconectar una resistencia pull-up conectada a cada pin RB.

Poniendo un 0 en este bit todas las resistencias se conectan. Para desconectar las resistencias
pull-up se debe poner este bit en 1, tambin se desconectan automticamente cuando el pin
correspondiente es configurada como salida. Un Reset desconecta todas las resistencias.

Patitas RB4,...,RB7.- Estos cuatro pines del puerto B tienen la capacidad de generar una
solicitud de interrupcin a la CPU cuando estn configuradas como entradas. El estado de
estos pines es comparado con el ltimo estado que tenan durante la ltima lectura a PORTB,
guardado en un latch. Los bits que indican que hay una diferencia entre estos valores por cada
pin estn conectados a una puerta OR cuya salida activa el bit RBIF del registro INTCON
solicitando con esto una interrupcin. Esta interrupcin es especialmente til para despertar al
dispositivo de su estado de SLEEP cuando alguna de las cuatro lneas es activada, por ejemplo,
en respuesta a la presin de una tecla.

El puerto C (PORTC).9

El puerto C consta de 8 lneas bidireccionales. Trabaja en forma similar a los dos puertos
anteriores y tiene asociados los registros:

Registro PORTC (07H).- Es el registro de datos cuyos 8 bits RC7,RC6,...,RC0 reflejan


directamente el valor lgico de las lneas fsicas del puerto C.

Registro TRISC(87H).- Registro de control de direccin de las lneas del puerto C. Poniendo
un 1 en un bit del registro TRISC se configura la lnea correspondiente como entrada y
poniendo un 0 se configura la lnea correspondiente como salida. Las lneas del puerto C se
encuentran multiplexadas con varias lneas controladas por otros perifricos, cuando se habilita
la lnea del perifrico respectivo puede ser ignorada la configuracin de TRISC, de hecho,
algunos perifricos configuran la lnea como salida mientras que otros la configuran como
entrada.

En la tabla 1.5, se resumen las lneas del puerto C y las de los perifricos que estn
multiplexadas con ellas.

9 Para la realizacin del proyecto se utilizaron 4 de los 5 puertos existentes en el PIC16F877

39
Tabla 1.5: Funciones Multiplexadas del puerto C

Nombre Funcin multiplexada


RC0/T1OSO/T1CKI Salida oscilatoria del Timer1/reloj de entrada del Timer 1
RC1/T1OSI/CCP2 Entrada oscilatoria del Timer1/entrada de captura2
o salida de comparacin2 o salida PWM2
RC2/CCP1 Entrada de captura1 o salida de comparacin1 o salida PWM
RC3/SCK/SCL Reloj para los modos de comunicacin serie sncrona
RC4/SDI/SDA Dato de entrada (en modo SPI)/ Dato de entrada-salida
RC5/SDO Dato de salida (en modo SPI)
RC6/TX/CK Lnea de transmisin asncrona de la USART/reloj sncrono
RC7/RX/DT Lnea de recepcin asncrona de la USART/dato sncrono

Los Puertos D y E

Estos dos puertos no se encuentran disponibles en los circuitos PIC16F873 y PIC16F876.

El puerto D es un puerto de 8 lneas configurables como entradas o salidas mediante el


registro TRISD (88H) y cuyas lneas pueden ser accesadas mediante el registro PORTD
(08H). Cuando se configuran como entradas stas poseen un disparador Schmitt.

El Puerto E slo posee 3 lneas configurables como entradas o salidas mediante el los 3 bits
menos significativos del registro TRISE (89H). Sus lneas pueden ser acezadas mediante los 3
bits menos significativos del registro PORTE (09H). Las lneas del puerto E estn
compartidas con el convertidor analgico / digital, por ello, antes de usarlas debern ser
configuradas como entradas / salidas digitales o analgicas, segn se desee en forma similar a
como se hizo con el puerto A, usando el registro de configuracin ADCON1 (9FH).

1.4.3. Descripcin del Mdulo de Conversin Analgico Digital10

Los PIC16F87X poseen un mdulo ADC interno que les permite manejar 5 entradas
analgicas para los dispositivos de 28 pines y 8 para los otros dispositivos. En la figura 1.15, se
muestra un diagrama de bloques del mdulo ADC.

10 La configuracin del Modulo ADC se hizo en modo de 10 bits

40
Figura 1.15: Representacin del convertidos Analgico-Digital

El multiplexor.- El ADC es un convertidor de aproximaciones sucesivas de 10 bits, el cual


puede realizar la conversin de una de las 8 entradas (o canales) analgicas AN0,...,AN7
multiplexadas por la lgica interna que utiliza como lneas de seleccin del canal los bits
CHS2:CHS0, en donde se coloca el nmero en binario del canal a convertir.

Voltajes de Referencia.- Todo convertidor ADC requiere voltajes de referencia que


determinan el valor de mnima escala (VREF-) y el de plena escala (VREF+), de manera que la
conversin de un valor de voltaje analgico Vin en el rango de VREF- a VREF+ producir un
valor equivalente binario D en el rango de 0 a 2n, Donde n es la resolucin del convertidor
(n = 10).

Como la relacin entre escalas es lineal, una regla de tres nos da la relacin entre el voltaje
analgico de entrada (Vin) y el valor digital (D) obtenido por el ADC.

41
1.4.4. Descripcin del Mdulo Temporizador (TIMER)

Los PIC 16F87X poseen un mdulo para el manejo preciso y eficiente de operaciones que
involucran tiempo o conteo. Este mdulo consta de:

 Tres contadores/temporizadores denominados TMR0, TMR1 y TMR2


 Dos mdulos CCP (Captura, Comparacin y PWM (Modulacin de ancho de pulso)
denominados CCP1 y CCP2

En la tabla 1.6, se resumen las principales caractersticas de los mdulos mencionados:

Tabla 1.6: Caractersticas de los temporizadores y Modulo CCP

Mdulo Caractersticas
TMR0 es un Contador/Temporizador de 8 bits
Leble y escribible
Reloj interno o externo
TMR0 Seleccin de flanco activo en el reloj externo
Preescalador de 8 bits programable
Solicitud de interrupcin opcional en el desbordamiento (de
TMR1FFhesaun00h)
Contador/Temporizador de 16 bits
Leble y escribible
TMR1 Reloj interno o externo
Solicitud de interrupcin opcional en el desbordamiento (de
FFFFh a 0000h)
Reinicializacin opcional desde los mdulos CCP
TMR2 es un Contador/Temporizador de 8 bits
Dispone de un registro de periodo de 8 bits (PR2)
Leble y escribible
TMR2 Preescalador programable
Postescalador programable
Solicitud de interrupcin opcional al coincidir TMR2 y PR2
Posibilidad de generar impulsos al mdulo SSP (puerto serie
CCP1 Modo de captura
ncrono)
CCP2 Modo de comparacin
Modo PWM (modulacin de ancho de pulso)

El Mdulo del Timer111

El Timer 1 a diferencia del Timer 0 es un contador / temporizador de 16 bits. El conteo es


realizado por dos registros de 8 bits: (TMR1H (0Fh) y TMR1L (0Eh)), estos dos registros

11 Solo fue usado el Timer1 de los 3 Timer existentes

42
son tanto lebles como escribibles. Al par de registros TMR1H:TMR1L los denominaremos
por comodidad como si fueran un solo registro de 16 bits (TMR1).
As, el registro TMR1 se incrementa de 0000h a FFFFh y en la siguiente cuenta se reinicia en
0000h y as sucesivamente, al reciclarse se activa (en alto) la bandera TMR1IF (PIR1<0>), la
cual puede ser utilizada para generar una interrupcin, o bien, para ser consultada por poleo,
teniendo las mismas precauciones que ya se explicaron antes para la bandera T0IF.

En la figura 1.16, se muestra un diagrama de bloques de este mdulo, en donde se indican los
bits que afectan su operacin y la manera en que lo hacen.

Figura 1.16: Arquitectura interna del TIMER1

El Mdulo CCP1

El registro principal de este mdulo (CCPR1) se compone de dos registros de 8 bits,


denominados CCPR1H (16h) (parte ms significativa) y CCPR1L (15h) (parte menos
significativa). La operacin del mdulo se controla mediante el registro CCP1CON y el
disparo de evento especial, el cual es generado al alcanzarse la igualdad en un registro de
comparacin resetear el Timer 1.

El Mdulo CCP2

El registro principal de este mdulo (CCPR2) se compone de dos registros de 8 bits,


denominados CCPR2H (parte ms significativa) y CCPR2L (parte menos significativa). La
operacin del mdulo se controla mediante el registro CCP2CON y el disparo de evento
especial, el cual es generado al alcanzarse la igualdad en un registro de comparacin resetear el
Timer 1 e iniciar una conversin analgico/digital (si el mdulo convertidor A/D est
habilitado).

43
Seleccin del modo de operacin

La seleccin del modo en que trabajara el mdulo CCPx se realiza mediante los cuatro bits
menos significativos del registro CCPxCON, es decir, mediante los bits CCPxM3:CCPx0
(CCP<CON<3:0>) de acuerdo a la siguiente tabla 1.7:

Tabla 1.7: Modo de seleccin del CCP

CCPxM3:CCP Modo seleccionado


0000 Captura/Comparacin/PWM deshabilitados
0100 Captura cada transicin de bajada
0101 Captura cada transicin de subida
0110 Captura cada cuarta transicin de subida
0111 Captura cada 16 transiciones de subida
1000 Comparacin, pone salida cada coincidencia
1001 Comparacin, limpia salida cada coincidencia
1010 Comparacin, genera interrupcin cada coincidencia (salida inalterada)
1011 Comparacin, dispara evento espacial (CCP1 resetea TMR1; CCP2
resetea TMR1 y arranca una conversin A/D).
11xx Modo PWM

1.4.5. Modo PWM (Modulacin de Ancho de Pulso)

En este modo se puede producir una salida de frecuencia fija seleccionable modulada en
ancho de pulso (o ciclo de trabajo) con una resolucin de 10 bits, a travs del pin RC2/CCP1,
como se muestra en la figura 1.17.

Figura 1.17: Representacin del modo PWM

44
Debido a que la patita CCP1 est multiplexada con RC2, este bit del puerto C deber ser
configurado como salida (TRISC<2>=0) para poder usar la salida CCP1.

En la figura 1.18, se muestra un diagrama de bloques simplificado que resume la operacin


bsica del PWM.

Figura 1.18: Pasos para programas el modulo PWM

Control del Periodo del PWM

Para especificar el periodo del PWM se usa el registro PR2, de manera que el valor del periodo
ser:

Periodo PWM = (PR2+1)*4*TOSC*M

Donde 1/M es el valor del preescalador del Timer 2.

Cuando el valor en TMR2 alcanza el valor PR2 los siguientes tres eventos ocurren en el
siguiente ciclo (Ver figura 1.18):

El registro TMR2 es limpiado


El pin CCP1 es puesto en alto (Excepto si el ciclo de Trabajo del PWM vale cero).
El Ciclo de Trabajo es cargado de CCPR1L (15h) a CCPR1H (16h).

45
De esta manera, de acuerdo a la figura 1.18, el siguiente valor de comparacin para TMR2 en el
comparador de 10 bits es el Ciclo de Trabajo, el cual al alcanzarse limpiar la patita CCP1.

Control del Ciclo de Trabajo del PWM

El ciclo de Trabajo se especifica escribiendo un valor de 10 bits al registro CCPR1L (los 8 bits
ms significativos (msb)) y los dos bits menos significativos (lsb) a CCP1CON<5:4> este
valor de 10 bits lo representaremos como CT=CCPR1L:CCP1CON<5:4>. El valor de
tiempo que dura el ciclo de trabajo para un valor del preescalador de 1/M, se calcula de
acuerdo a la siguiente ecuacin:

TPWM = CT*TOSC*M

Como se puede ver en la figura 1.19, el valor que determina la duracin de C.T. del PWM no es
el cargado en CT (CCPR1L), sino en CCPR1H, el cual slo se actualiza copiando el valor de
CT en el momento en que TMR2 alcanza el valor de PR2 (es decir, cada vez que se completa
un periodo). Por ello, aunque CCPR1L puede ser escrito en cualquier momento, el Ciclo de
Trabajo solo se actualiza hasta que termina el periodo que est en transcurso.

46
Captulo 2

El objetivo de este capitulo es detallar como se genero el prototipo completo, con una parte
fsica y una parte de control por software, as como toda la instrumentacin e interfaces que lo
componen y que se irn puntualizando a lo largo del mismo. Cabe mencionar que la lgica
difusa compone la parte importante del prototipo, pues es la aportacin mas sustentada dentro
de la tesina.

2.1. Diseo Electrnico

En primera parte se analiza la parte electrnica y mecnica pues es de donde se generan


varios datos utilizados para la siguiente etapa de software, aunque es claro que se trabajo
simultneamente en la parte fsica y lgica, aun as lo ideal es llevar una secuencia, la cual
desglosamos aqu y consideramos la ms lgica.

2.1.1. Sensor de Distancia GP2D1212

Los IR Sharp GP2DXX son una familia de sensores de infrarrojo, para la deteccin y
medida de distancia a los objetos.

Figura 2.1: Sensor GP2D12

Estos dispositivos emplean el mtodo de triangulacin utilizando un pequeo Sensor


Detector de Posicin (PSD) lineal para determinar la distancia o la presencia de los objetos

12 Para especificaciones del sensor GP2D12 revisar APENDICE

47
dentro de su campo de visin. Bsicamente su modo de funcionamiento consiste en la
emisin de un pulso de luz infrarroja, que se transmite a travs de su campo de visn que se
refleja contra un objeto o que por el contrario no lo hace. Si no encuentra ningn obstculo,
el haz de luz no refleja y en la lectura que se hace indica que no hay ningn obstculo. En el
caso de encontrar un obstculo el haz de luz infrarroja se reflecta y crea un triangulo
formado por el emisor, el punto de reflexin (obstculo) y el detector.

La informacin de la distancia se extrae midiendo el ngulo recibido. Si el ngulo es grande,


entonces el objeto est cerca, por que el tringulo es ancho. Si el ngulo es pequeo,
entonces el objeto est lejos, por que el tringulo formado es estrecho. Por lo tanto, si el
ngulo es pequeo, quiere decir que el objeto est lejos, porque el tringulo es largo y
delgado. La Figura 2.2, muestra lo expuesto.

Figura 2.2: Funcionamiento del sensor GP2D12

Estos dispositivos miden distancias de 10cm a 80 cm. Obteniendo una salida de voltaje de
entre prcticamente 0v y 2.5v aunque su variacin se puede dar, como fue en nuestro caso.

Este sensor mostr demasiada sensibilidad y variacin dependiendo donde se utilizaba, por lo
cul se procedi a conectarlo y caracterizarlo, siempre para un mismo modo, obteniendo una
variacin con respecto a la tabla de especificaciones que se nos proporcion por el fabricante
(Ver Apndice), cabe mencionar que la caracterizacin se hizo una vez montado el sistema para
que no hubiera mas cambios o modificaciones; los datos se hicieron para una pelota blanca
como objeto reflejante y se esta incluyendo la etapa de amplificacin la cul se explicara ms
adelante en detalle, obteniendo la tabla de valores 2.1.

48
Tabla 2.1: Caracterizacin del sensor GP2D12

Distancia Voltaje Distancia Voltaje Distancia Voltaje


(cm) (volts) (cm) (volts) (cm) (volts)
0 4.8 15 .98 25 .3
2 3.95 16 .88 26 .29
4 3.63 17 .76 27 .26
6 3.19 18 .69 28 .22
8 2.62 19 .63 29 .18
10 1.87 20 .55 30 .15
11 1.61 21 .47 32 .12
12 1.38 22 .42 34 .09
13 1.26 23 .38 36 .07
14 1.07 24 .34 38 .07

2.1.2. Amplificacin y Filtrado

Como se menciono anteriormente, la tabla contiene los valores obtenidos con la etapa de
amplificacin y filtrado incluida, pues antes de esto, los valores estaban a la mitad de dicho
valor, por lo que es claro que la amplificacin se hizo con una ganancia de 2, con lo cual
llegamos a un aproximado mximo de 5 volts, suficientes y casi exactos para el acoplamiento
con el ADC13 del microcontrolador PIC.

La configuracin utilizada es un simple amplificador no inversor con ganancia 2, como se


muestra en la figura 2.3.

13 ADC es Convertidor Analgico Digital

49
Figura 2.3: Circuito Amplificador Inversor
La siguiente etapa fue la de filtrado, para esto se hicieron consideraciones de la frecuencia
con que se iba a muestrear la seal del sensor infrarrojo 14 , el cual da una respuesta
relativamente lenta, con una actualizacin cada 20ms aproximadamente, por lo cual se
muestreara a una frecuencia de 50 Hz y a partir de lo cual se hizo la consideracin de un filtro
pasa bajas con frecuencia de corte de un poco mas de 100Hz con lo que se garantiza el buen
funcionamiento segn el Teorema de muestreo de Nyquist que nos dice:

f m 2 BW fm = frecuencia de muestreo
BW = Ancho de banda de la seal a muestrear

Procedimiento de diseo:

Figura 2.4: Circuito del Filtro Pasa Bajas

1. Se define la frecuencia de corte fc.


2. Define C1; un valor entre 100pF y 0.1F.
3. Definimos C1 = 2C2.

0.707
4. R =
2f C C1

A partir de esto se propusieron los siguientes valores para las resistencias y capacitares:
C1 = 22nF
C2 = 10nF
R = 100K
fc = 112Hz (frecuencia de corte con lo que se garantiza el Teorema de Nyquist)

14 Para mayor especificacin del sensor revisar APENDICE

50
2.1.3. Servomotor de PWM

El servomotor es un potente dispositivo que dispone en su interior de un pequeo motor


con un reductor de velocidad y multiplicador de fuerza, tambin dispone de un circuito que
controla el sistema. El ngulo de giro del eje es de 180 en la mayora de ellos, pero puede ser
fcilmente modificado para tener un giro libre de 360, como un motor standard.

El servomotor es el encargado de dar movilidad al sistema y su forma fsica se aprecia en la


figura 2.5.

Figura 2.5: Diagrama de funcionamiento del servomotor

El diagrama a bloques simplificado del servomotor esta dado por:15

15 El diagrama a bloques y los valores considerados fueron proporcionados por el Asesor de un trabajo previo.

51
Para controlar un servomotor se debe aplicar un pulso de duracin y frecuencia especfica.
Todos los servos disponen de tres cables, dos para alimentacin Vcc y Gnd (4.8 a 6 Volts) y
un tercero para aplicar el tren de pulsos de control, que hace que el circuito de control
diferencial interno ponga el servo en la posicin indicada, dependiendo del ancho del pulso.

El control es explicado en la figura (2.7) y (2.8), donde la variacin del pulso alto vara entre
0.5 y 2.5 ms, y el pulso bajo vara entre 19.5 y 17.5 segn corresponda, para dar una
frecuencia fija de 50 Hz (o 20ms). Aunque hay que mencionar que los servomotores tienen
algunas tolerancias como todos los componentes, en este caso puede operar con una
frecuencia de entre 50 y 100Hz, de igual forma no es necesario que el pulso bajo sea siempre
igual, pero el pulso alto si debe ser lo mas exacto posible para su correcto funcionamiento.
De igual forma al caracterizar el servomotor, no se requiri de todo su rango (0 a 180o) por
lo cual se hicieron pruebas de cuales eran los ngulos necesarios para el correcto
funcionamiento del sistema y su correspondiente modulacin para dichos ngulos, el cual
fue un rango de 0 a 90o, a partir de lo cul se obtuvieron las siguientes grficas simuladas16:

Figura 2.6: Pulso aplicado para cero grados

16 Las grficas fueron simuladas en PROTEUS

52
Figura 2.7: Pulso aplicado para noventa grados
En estas grficas se aprecia el ancho de pulso necesario para obtener el mnimo y mximo
ngulo del motor, en la graduacin del DIV del osciloscopio se muestra una escala de 500s
por cuadro lo que nos dara 1.75ms de ancho de pulso necesario para obtener el mnimo
ngulo y 2.25ms para el mximo ngulo.

2.1.4. Conexin del LCD17

El LCD tiene un aspecto fsico como el mostrado en la figura 1. Est constituido por un
circuito impreso en el que estn integrados los controladores del display y los pines para su
conexin. Sobre el circuito impreso se encuentra el LCD, rodeado por una estructura
metlica que lo protege.

En total se pueden visualizar 2 lneas de 16 caracteres cada una, es decir, 2x16=32 caracteres,
como se muestra en la figura 2.8.

17 LCD significa Display de Cristal Liquido

53
Figura 2.8: Representacin del LCD

El LCD dispone de 8 bits para la manipulacin de los datos aunque cabe mencionar que se uso
una librera del compilador CCS, con el que se programo utilizando solo los primeros cuatro
bits menos significativos, esto con el fin de no gastar los recursos del microcontrolador,
adems de que solo se uso el ciclo de escritura pues nunca se requiri ver el dato que se
guardaba en el LCD, pues el programa guardaba en sus variables globales todos los datos, en la
figura 2.9, se muestra el diagrama de conexiones.

Figura 2.9: Disposicin de pines del LCD

2.1.5. El cristal de cuarzo

La etapa del cristal de cuarzo se mencionara de manera rpida, pero no con menos
importancia, pues proporciona la velocidad de trabajo del PIC, estando solo limitado a las
especificaciones tcnicas del microcontrolador, que en nuestro caso se opto por llevarlo a la
mxima velocidad, esto por que el sistema tiene una carga significativa de trabajo debido a que
el programa principal que se almacenara en la memoria de programa es extenso, aunque en el
trabajo final pudimos ver que hubiera podido funcionar con un cristal de menor velocidad.

54
En particular para el PIC16F877 la mxima velocidad soportada es de 20MHz, a partir del cul
podemos obtener la velocidad del sistema, siendo de 4 ciclos de reloj por cada instruccin, o
sea de 200ns por instruccin, aunque tambin cabe sealar que el compilador tiene algunas
opciones de trabajo ms rpido (direccionamiento directo) con lo cual se puede aun minimizar
ms el tiempo por instruccin.

2.1.6. Diseo del PCB18

Una parte importante para el mejor funcionamiento de los circuitos es el integrarlos a una
placa de circuito impreso (PCB) pues siempre ser ms funcional y esttico, por lo cual nos
dimos a la tarea de que en este trabajo se hiciera su correspondiente placa, para el diseo se
utilizo el software PROTEUS19 el cul no solo se uso para el diseo de la placa, sino para las
simulaciones.

El diseo de la placa se hizo en dos partes, una automtica y un terminado final manual, pues el
software tiene la opcin de realizar las pistas a partir del circuito pero siempre tiene fallas en su
optimizacin, generando demasiados puentes, por lo cual se realizo una optimizacin manual
para eliminar dichos puentes.

En trminos generales la placa fue de dimensiones pequeas, pues cabe mencionar que el
sistema tiene como corazn el microcontrolador, haciendo que las dems etapas de
instrumentacin sean mnimas. El Diseo PCB se muestra en la figura 2.10.

18 PCB significa Printed Circuit Board


19 Para mayor detalle acerca de PROTEUS revisar [19]

55
Figura 2.10: Circuito impreso del Ball and Beam

2.2. Construccin Fsica del BALL & BEAM

El Ball & Beam20 es un sistema no lineal, como ya se ha analizado previamente, el cual es


inestable en lazo abierto, por lo tanto una de las consideraciones previas que se tomaron es que
necesita una forma de retroalimentacin, pero que sea de naturaleza analgica pues debe
darnos informacin de manera proporcional conforme la distancia de la bola en la barra. De
igual forma se debe tener un actuador que manipule la barra para lograr el equilibrio.

A partir de esto se utilizo un sensor infrarrojo como sistema de retroalimentacin y un


servomotor como el actuador de la barra.

El diseo de la estructura tiene fundamento en las caractersticas de estos dos elementos


principalmente, luego entonces el sensor puede a lo mas medir 70 cm de distancia, ms aun en
la caracterizacin pudimos notar que la sensibilidad del sensor hacia que solo fuera efectiva
dentro de los primeros 50 cm, siendo esta la longitud planteada de la barra. Con respecto al
servomotor no hubo problema pues tiene un torque de 3Kg/cm con lo que no tuvimos

20 Ball & Beam significa Bola y Barra en espaol

56
dificultad aun cuando la bola estuviera al extremo de la barra y por lo cul generara una mayor
palanca, aun as se dio a la tarea de considerar una pelota de poco peso (casi despreciable) con
lo cul eliminaramos un factor que podra causarnos problemas posteriores.

A partir de esto se hizo un acoplamiento directo entre los dispositivos, considerando una base
que soportara la barra, y a partir de esto se genero el siguiente prototipo:

Figura 2.11: Primer prototipo fisico del Ball and Beam

Si se aprecia, en un extremo esta el sensor colocado frente al sensor, y una flecha que soporta la
barra, acoplado a su vez a un balero que hace girar libremente la barra, todo esto soportado por
una base de madera. La bola es blanca para garantizar la mxima reflexin y hueca para
garantizar el mnimo peso.

El principal problema de este prototipo fue la inercia de la pelota, aunado con la velocidad de
respuesta del sensor y la poca longitud de la barra, provocando que saliera de los lmites. Por lo
cul se plantearon dos posibles soluciones:

1. Una bola con mayor masa con lo cul su inercia podra contrarrestarse con mayor
facilidad.

2. Una barra que por su naturaleza generar menor velocidad en la bola.

La consideracin de la primera opcin nos podra acarrear un posterior problema, la palanca de


la barra con respecto al actuador (torque del servomotor). Por lo cual se opto por buscar una
barra con caractersticas distintas. Entonces se opto por una barra tipo tubo hueco, la cual
genera mayor friccin en la bola, y la aerodinmica que produce limita la inercia.

57
Figura 2.12: Segundo prototipo fisico del Ball and Beam

El segundo prototipo y final se muestra en la figura 2.12, donde se logra apreciar que la barra es
un tubo de plstico y este se acoplo de forma directa con el servomotor, el sistema se volvi
mas ligero y la inercia del la pelota disminuy lo suficiente para un mejor control, de igual
forma el sensor se fijo en un extremo.

2.3. Desarrollo del Software Difuso

En esta seccin se analizaran los pasos y consideraciones para el diseo del software de
control, el cul una vez terminado se grabara en el microcontrolador, pues nuestro objetivo es
tener un sistema que no dependa de una computadora.

Cabe mencionar que para el diseo del software se utilizo el compilador PIC-C Compiler21, un
compilador especial para microcontroladores PIC, el cul permite la programacin en lenguaje
C y genera todos los archivos necesarios para descargar, simular y dems opciones que
generara algn otro software como MPLAB.

El diseo cuenta con una de las metodologas ms usadas y estudiadas del control difuso, un
diseo tipo Mamdani y una defusificacin tipo Centro de rea.

21 Para mayor detalle del PIC C Compiler, revisar APENDICE

58
Primero se tienen que identificar las variables que van a actuar dentro del controlador difuso,
tanto de entrada como de salida. La informacin de la que se dispone es el valor que
proporciona el sensor, el cul es un voltaje analgico proporcional a la distancia de la bola. De
este mismo modo se generaran dos datos que son la posicin de la bola y la posicin anterior
de la bola, pues solo si se tienen dos estados en el tiempo se puede interpretar el
comportamiento del sistema. Otra informacin es la seal que se proporcionara al servomotor
(en forma de PWM) para su ngulo de inclinacin, esta seal es de salida. Entonces se tiene las
siguientes variables:

1. Error. Esta es una seal de entrada del sensor


2. Error anterior. Esta es una seal de entrada del sensor
3. Actuador. Esta es una seal de salida hacia el servomotor

Tengo un sistema de dos entradas y una salida aunque las dos entradas pertenecen al mismo
sensor, que en este caso es un sistema de una entrada y una salida pero con retroalimentacin.

Figura 2.13: Lazo cerrado de control para el Ball and Beam

El software se divide en una etapa de fusificacin, una de inferencia donde se incluye la base de
datos (conocimiento) y finalmente una de defusificacin, las cuales analizaremos en ese orden:

Figura 2.14: Bloques de un controlador difuso

a) Fusificacin

59
Para esta etapa tenemos dos variables de entrada: Error y Error anterior, las cuales son las
seales del sensor, considerando la metodologa que se sigue en el diseo de controles difusos
estas variables sern de cinco trminos lingsticos cada una, se pretendi al principio
considerar una de cinco y otra de tres, con el fin de gastar menos tiempo de procesamiento,
pero observamos que con solo asignar lo que tenia el error a la variable error anterior se
lograba una mayor optimizacin de esta etapa. Las funciones de pertenencia son del tipo
triangular y los extremos son tipo zeta.

Los valores mnimo y mximo se ajustan a la resolucin del ADC que es de diez bits.

La disposicin de los trminos lingsticos para las variables Error y Error anterior queda
especificada en la tabla 2.2.

Tabla 2.2: Trminos lingsticos para Error y Error anterior


NG (Negativo grande)
NP (Negativo pequeo)
C (Cero)
PP (Positivo Pequeo)
PG (Positivo Grande)

Y su grafica distribuida a lo largo del universo de discurso se muestra en la figura 2.15.

Figura 2.15: Funciones de Membresa de Error y Error anterior

Si se aprecia en la grfica, la distribucin se hace con mayor concentracin al centro, o lo que


es lo mismo con los trminos cercanos al cero, esto se justifica por que los trminos
lingsticos mientras ms pegados tienen mayor resolucin, obteniendo una fusificacin ms
fina en esos rangos.

60
La barra esta graduada y se obtuvieron los siguientes valores para los distintos centros de los
trminos lingsticos propuestos:

Tabla 2.3: Valores caracterizados de Error y Error anterior

Termino Distancia Voltaje Valor Binario


Lingstico Equivalente equivalente equivalente
NG 30 cm 1.87 volts 383
NP 23 cm 0.76 volts 156
C 20 cm 0.55 volts 112
PP 17 cm 0.38 volts 77
PG 10 cm 0.15 volts 30

La siguiente consideracin es la variable de salida: Actuador, la cul es la seal con la que se


alimentara al servomotor, para esta variable se estn considerando siete trminos lingsticos,
pues requerimos mayor fineza en la salida del controlador. Siendo la disposicin de los
trminos la mostrada en la siguiente tabla:

Tabla 2.4: Trminos lingsticos para la Variable de Salida


NG (Negativo Grande)
NM (Negativo Mediano)
NP (Negativo Pequeo)
C (Cero)
PP (Positivo Pequeo)
PM (Positivo Mediano)
PG (Positivo Grande)
De igual forma su grfica se muestra en la figura 2.16.

Figura 2.16: Variable difusa de salida

La justificacin de la forma de distribucin de los trminos lingsticos es la misma que para las
variables de entrada, se requiere mayor resolucin en los trminos cercanos al cero.

61
Nosotros contamos con las frmulas para la representacin de las funciones tipo triangular, las
cuales fueron planteadas en el capitulo anterior, donde las frmulas para fusificar una funcin
de este tipo no son ms que ecuaciones de pendientes, como se muestra en la figura 2.17.

Triangular (x, [a, b, c])


0 , si x < a;
( x a)
, si a x b;
(b a )
1 , si x = b;
(c x )
, si b < x c;
Funcin Triangular (c b )
0 , si x > c;

Figura 2.17: Funcin triangular

En nuestro caso se hizo una mnima modificacin a las ecuaciones, pues la fusificacin se hizo
a partir de la lectura del sensor, con una resolucin del ADC de 10 bits, entonces ahora no va
de 0 a 1, sino de 0 a 1023.

xa
(1023) La ecuacin es multiplicada por un factor de escala (2 bits)
10

ba
La programacin en C de la fusificacin para la variable Error y Error anterior se muestra a
continuacin, donde solo se da un ejemplo para el termino lingstico de Error NG, tomando
en cuenta la ecuacin anterior y los datos mostrados en la tabla 2.3.

int32 Error_NG (int32 real)


{
if (real<=30) return(1023);
else
{
if (real<=61) return((61-real)*33);
else
return (0);
}
}

62
b) Inferencia y Base de Conocimientos

La siguiente etapa es la de inferencia, la cul realiza los clculos y obtiene una sola respuesta de
todas las posibles reglas que se puedan activar en un instante, utilizamos la inferencia ms
conocida, la de Mamdani, representada en la siguiente frmula:

[
MembR = max i , Membc i (c i )
i
]

La inferencia hace uso de la Base de Conocimientos, la cul contiene todo la informacin del
experto sobre el comportamiento que debe tener la planta para su control. En este caso se hizo
un anlisis del comportamiento que debera tener, basndonos en un esquema grfico del Ball
and Beam:

Figura 2.18: Comportamiento del Ball and Beam


A partir del funcionamiento de este diagrama que representa la barra y la bola, se puede hacer
un anlisis de que es lo que debera hacer el actuador (hacia donde girar) dependiendo de
donde se encuentre la bola, y de cmo es el Error y el Error anterior.

Supongamos que la bola se encuentra en PG, entonces el actuador debe ser muy Positivo
(ngulo grande) para que la bola vaya lo ms rpido al centro y se le rompa la inercia, sin
importar como fue su error antes.

De igual forma supongamos que la bola esta en PP y un tiempo de muestreo antes estuvo en
C, eso significa que su inercia la esta llevando hacia PG (estado que no deseamos), entonces se
requiere un valor Positivo mediano para llevarla nuevamente al centro. Cabe mencionar que al
decir Positivo Mediano estamos diciendo que no quedamos en el punto mas crtico (el punto
critico es Positivo Grande).

De igual manera se analizaron todos los posibles casos, pero solo considerando a los trminos
vecinos; es decir: para PP solo se consideraran los casos contiguos C y PG as como el mismo
PP (cuando la bola se quedo ah mismo) pues considerar los casos ms lejanos (NG y NP) seria

63
como tener un sistema demasiado rpido para poder controlarlo. Despus de hacer el anlisis
obtuvimos la siguiente matriz de reglas del sistema:

Figura 2.19: Matriz de reglas difusas

Las reglas en forma textuales quedaran detalladas a continuacin:

Regla 1: SI (E es NG) ENTONCES (A es NG)

Regla 2: Si (E es NP) y (E_A es NP) ENTONCES (A es NM)


Regla 3: Si (E es NP) y (E_A es C) ENTONCES (A es NM)

Regla 4: Si (E es NP) y (E_A es NG) ENTONCES (A es NP)


Regla 5: Si (E es C) y (E_A es PP) ENTONCES (A es NP)

Regla 6: Si (E es C) y (E_A es C) ENTONCES (A es C)

Regla 7: Si (E es C) y (E_A es NP) ENTONCES (A es PP)


Regla 8: Si (E es PP) y (E_A es PG) ENTONCES (A es PP)

Regla 9: Si (E es PP) y (E_A es C) ENTONCES (A es PM)

64
Regla 10: Si (E es PP) y (E_A es PP) ENTONCES (A es PM)

Regla 11: Si (E es PG) ENTONCES (A es PG)

El programa en C que rige las reglas y la inferencia de todas las reglas activadas en un caso se
presenta a continuacin, aunque solo se pondr el programa para un caso22:

aux[0]=Error_NP(error);
aux[1]=Error_NP(derivada);
aux[1]=F_AND(aux[0],aux[1]);
aux[0]=Error_NP(error);
aux[2]=Error_C(derivada);
aux[2]=F_AND(aux[0],aux[2]);
actuador=F_OR(aux[1],aux[2]);
Actuador_NM(actuador);
// regla 2 y 3

Aqu se muestra la inferencia MAX-MIN (OR-AND), que acta sobre dos reglas, ya que las
dos se activan conjuntamente al tener como salida al Actuador NM.

c) Defusificacin

Finalmente se realizo la etapa de defusificacin, para la cul se utilizo una de las estudiadas y
aplicadas en los controles difusos, y que ha dado buenos resultados, que es la de Centro de
rea, para la cul se muestra la ecuacin (1.31) del capitulo anterior:
c max Membc (c )
J i
j =1 j i j
c *
=
max Membc (c )
J i
j =1 i j

En esta etapa no hubo consideraciones ni complicaciones especiales, solo se necesito saber los
valores que iba a tomar la variable lingstica de salida. Primero se hicieron por separado todas
las sumatorias para el numerador y para el denominador para luego hacer la divisin final. Un
fragmento del programa en C que representa esta parte es la siguiente:

void Actuador_NG (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*1000);
}

void Actuador_NM (int32 salida)


{

22 Para ver todo el programa revisar APENDICE

65
den_coa+=salida;
num_coa+=((salida)*760);
}

El siguiente fragmento de cdigo muestra dos de las siete sumatorias que se tienen que hacer
(son siete trminos lingsticos los del actuador) para posteriormente realizar la divisin
general.

if (den_coa==0)
actuador1 = 620;
else
actuador=num_coa/den_coa;

Finalmente se presenta el programa principal, si en algn momento se desea revisar


detalladamente todo el programa con la secuencia correcta, se incluye en el apartado de
Apndice. El programa que mandara a llamar a las funciones secundarias, representa la parte
primordial del programa completo, el cual se puede identificar fcilmente en el siguiente
cdigo:

while(true)
{
lectura_datos(); //lee los datos del sensor (Error y Error anterior)
control(); //realiza el control difuso
actuador(); //Salida hacia el servomotor
salida_datos(); //muestra la posicin en un LCD
derivada=error; //asigna error a error anterior
}

2.4. Modelado y simulacin utilizando Simulink

A continuacin se describir el sistema con las mismas caractersticas detalladas del diseo
fsico mencionadas anteriormente, pero de forma simulada, para lo cul se utilizo uno de los
software ms difundidos y confiables para esta rea de diseo que es el FIS Editor y Simulink
de MATLAB, con el fin de mostrar mediante una simulacin como es que el sistema logra su
estabilidad, adems de generar un programa a bloques del prototipo con el fin de que pueda ser
entendido y justificado con otra herramienta formal dentro de la tesina.

Para empezar habr que definir en el editor difuso de MATLAB las variables de entrada y
salida, as como el tipo de controlador, el cul permite dos opciones siendo las ms utilizadas y
difundidas, Mamdani y Sugeno, que en nuestro caso utilizamos el primero; nuestro controlador
es un sistema de dos entradas y una salida, con cinco funciones de membresa cada entrada y
siete la de salida, dando una matriz de cinco por cinco, o lo que es lo mismo veinticinco
posibles casos, pero como se explic anteriormente solo se usaron once. Estos son los

66
parmetros ms importantes dentro de su diseo, tambin los rangos tipos de funciones y
reglas difusas, las cuales ya fueron definidas antes y solo se insertaron tal y como ya se tenan
establecidas.

Posteriormente y una vez estipulados los parmetros, se comprob el funcionamiento


mediante un visor de comportamiento entrada/salida, con el cual podemos ver como las reglas
coinciden con lo que queramos que hiciera el controlador difuso, esto comparando la prueba
de escritorio, la salida del programa en C y la simulacin.

Figura 2.20: Visor de superficie


En la figura 2.20, se observa una superficie relativamente suave y homognea, sin saltos tan
bruscos, que es una de las condiciones para un buen control (la no existencia de una pendiente
infinita) adems de que para darle mayor resolucin en su respuesta se concentra una mayor
suavidad en el centro, que ejemplifica el cero o equilibrio.

En la figura 2.21, se aprecia como se activan y desactivan las funciones, tanto la funcin error
como el error anterior (error_a), el grado de activacin se representa por cuanto se rellena la
funcin de amarillo y en la salida ocurre una defusificacion del tipo Centro de rea, la cul
suma todas las posibles combinaciones y obtiene un resultado final mostrado en rojo.

67
Figura 2.21: Visor de reglas

El siguiente paso es simular a bloques el prototipo, de acuerdo a la ecuacin diferencial de


comportamiento del motor con el Ball and Beam, as como del modelo a bloques que se tenia
previamente del servomotor, en la figura se muestra la representacin del sistema acoplado con
el servomotor, en el cul se le introduce un ngulo con el cul podr colocar la bola en el valor
deseado y como resultado una posicin deseable de la misma.

68
Figura 2.22: Diagrama a bloques del del Ball and Beam

Despus se integro este bloque con el controlador difuso, adems de que el controlador utiliza
dos entradas, el error actual y el anterior, por lo cul se genera un bloque de retraso que
proporciona esta caracterstica, tambin se retroalimenta el sistema para poder lograr la
estabilidad y una entrada que proporciona el valor deseado de la bola23.

Figura 2.23: Diagrama a bloques de todo el sistema

Finalmente las grficas muestran como el sistema se estabiliza alcanzando al valor deseado y la
siguiente muestra como acta el controlador difuso para lograr la estabilidad.

23 Para mayor detalle revisar [16]

69
Figura 2.24: Grfica de control Setpoint vs Posicin

Figura 2.25: Grfica de comportamiento del controlador difuso

70
2.5. Estabilidad de la Relacin Difusa

En este apartado se realizara un anlisis de estabilidad del sistema, todo esto basado en el
diseo que se hizo anteriormente. Se realizaran dos modelos, uno matemtico, basado en la
dinmica del sistema y el comportamiento del controlador, el otro es una demostracin de
cmo la energa converge hacia la estabilidad, propuesto por Mamdani.

La caracterstica ms importante del comportamiento dinmico de un sistema de control es la


estabilidad. Un sistema es estable si la salida regresa eventualmente a su estado de equilibrio
cuando el sistema se somete a alguna perturbacin, y es inestable si la salida oscila
indefinidamente o si diverge sin lmite de su estado de equilibrio.

a) Estabilidad en la energa de la Relacin Difusa del controlador24

El anlisis de estabilidad es aspecto fundamental para determinar la exactitud de diseo, del


controlador. Convencionalmente la estabilidad se realiza a partir de modelo matemtico, los
controles difusos aun con su diseo lingstico pueden formalizarse con estos procedimientos.

La ecuacin bsica de un sistema difuso tiene la forma

X K +1 = X K o U K o R K = 0,1,2,3,...

Donde XK y XK+1 son los conjuntos difusos de los estados K-esimo y (K-1)-esimo instante
respectivamente, UK es la entrada en el instante K, y R es la relacin difusa entre la entrada
y la salida.

Un sistema dinmico libre es realizado con una entrada cero, tendiendo entonces:

X K +1 = X K o P

donde P = UK R para UK = cero para k = 0,1,2,3,

un sistema de este tipo es un estado de equilibrio si XK+1 = XK para todo K.

Un sistema es estable si su energa total es mnima y constante. El sistema es inestable si la


energa se incrementa con el tiempo, y oscilatoria si esta flucta peridicamente.

Se define la energa de una relacin difusa P como

w(xi , y j ) f ( p (xi , y j ))
1 n m
E (P ) =
n m i =1 j =1

24 Para mayor detalle revisar [9] en su apartado de Control Difuso

71
donde w(xi , yj) son las funciones responsables de la posicin de la relacin difusa en el universo
de discurso, f( p(xi , yj)) es la funcin responsable de la forma, comportamiento, etc. de la
relacin difusa, y m y n son los ejes cardinales.

As, el rango de incremento de energa cambia constantemente

( ) ( )
E (P, i ) = E P i E P i 1

donde Pi = P P P P son las veces que se aplica la composicin max-min a la relacion


difusa P.

El algoritmo de estabilidad en la energa (ESA), tiene los siguientes estados:

Si E(P, i) 0 cuando i , entonces el sistema es estable.



Si E(P, i) > 0 cuando i , entonces el sistema es inestable.
Si E(P, i)= E(P, i + )
, cuando i , entonces el sistema es oscilatorio
con frecuencia 1/ .

Para determinar la estabilidad del sistema comenzamos por calcular los consecutivos valores de
E(Pi), donde Pi = P P P P. siendo la composicin max-min:

a11 a12 b11 b12 c11 c12


a o =
21 a 22 b21 b22 c 21 c 22

donde

c11 = max{min (a11 , b11 ), min (a12 , b21 )}


c12 = max{min (a11 , b12 ), min (a12 , b22 )}
c 21 = max{min (a 21 , b11 ), min (a 22 , b21 )}
c 22 = max{min (a 21 , b12 ), min (a 22 , b22 )}

En nuestro caso todo parte de la matriz de reglas que no es ms que la relacin difusa, pues es
la relacin de la entrada y la salida del controlador:

1000 660 620 620 620


620 760 580 620 620
P = 620 760 620 480 620
620 620 660 480 620
620 620 620 580 240

72
Esta matriz representa P y es a la cul se le aplicara P P, que no es mas que la relacin max-
min. Si se aprecia la matriz tiene el numero 620 que representa estados no deseados, pero en el
programa difuso se ejecuta una regla que menciona que si algn estado no deseado ocurriera la
salida seria 620 (el 620 representa ngulo 0 para el servomotor), por lo que esta matriz se
completa con dichos valores.

Se realizara el primer ejemplo y despus se darn por hecho los dems:

P2 = P P

C11 = max{min(1000,1000), min(660,620), min(620,620), min(620,620), min(620,620),}


C11 = max{1000, 620, 620, 620, 620}
C11 = 1000

Finalmente despus de hacer las dems iteraciones result:

1000 660 620 620 620


620 760 620 620 620
P2 = 620 760 620 620 620
620 660 620 620 620
620 620 620 620 620

1000 660 620 620 620


620 760 620 620 620
P3 = 620 760 620 620 620
620 660 620 620 620
620 620 620 620 620

Si se aprecia P2 = P3 y por obviedad ser igual para Pn, por lo que se determina de igual forma
( ) ( )
que E P i E P i 1 = 0 , sin necesidad de calcular la formula de cuanta energa se gasta, la
resta de las energas se cancelara y por tanto E(P, i) = 0 cuando i , entonces la relacin
difusa es estable.

Si se aprecia no hubo necesidad de muchas iteraciones, desde la primera el sistema mostr su


estabilidad, esta razn de igual forma justifica el hecho de que no se realizara un programa que
calculara los max-min, esto con el fin de evitar demasiados clculos. De igual forma se
realizaron los clculos para cuando no se consideran los valores que se consideran no deben
suceder, y de igual forma se consigui la estabilidad en el mismo nmero de iteraciones, aunque
esos clculos no se presentan en este trabajo.

73
Captulo 3

En este captulo se analizaran mas detalladamente las pruebas fsicas, resultados y


experimentos que se realizaron al sistema tanto a la parte de software (modificaciones al
programa) como en el hardware (prototipo y circuito electrnico), y tambin una explicacin
del porque de algunos resultados. A partir de esto podremos comparar los resultados obtenidos
con los objetivos propuestos, y justificar las posibles variaciones que podra haber, podemos
adelantar que al armar el prototipo observamos algunos detalles inerciales de la bola en la barra,
pues cuando la bola se halla muy cerca del setpoint, se encuentra casi frenada y romper
nuevamente su inercia para colocarla en el punto exacto, que ya es muy cercano, es muy difcil
pues se requiere una fuerza mnima para romper nuevamente la inercia, algo que el sistema no
siempre proporciona (dependiendo lo cercano al setpoint) y esto hace que el sistema no logre
el cero absoluto en el error (pero si lo bastante cerca para considerarlo funcional) esta
aproximacin se justificara con ms detalle a lo largo del captulo.

3.1. Pruebas del Ball & Beam

Primero realizamos pruebas al servomotor y el Ball and Beam acoplados, para revisar el
ngulo necesario que garantiza a la bola romper lo ms rpido su inercia, pues cuando la bola
esta cerca de las variables MUY GRANDE y MUY PEQUEA generalmente lleva bastante
inercia en su velocidad y si no se utiliza un ngulo lo bastante grande esta podra salirse o tocar
el extremo de la barra, lo que significara para nuestro prototipo un mal funcionamiento.

El procedimiento fue el siguiente:

Realizar un programa que fuera incrementando un PWM el cul significara en nuestro


caso prctico un ngulo hacia el servomotor.
Darle velocidad a la bola e introducir un cierto ngulo con el servomotor cuando la
bola esta cerca de uno de los extremos lingsticos (NG NP).
Ir midiendo el ngulo y verificar con cual se rompe la inercia lo mas fcilmente.

El ngulo que se obtuvo fue de aproximadamente 45o, aunque es obvio que con un ngulo
mayor se rompera mas fcilmente la inercia, tambin se opto por tomar el ms pequeo que
garantice romper la inercia, pues mientras ms grande es el ngulo menor es la resolucin del
sistema.

74
Figura 3.1: Representacin del Ball and Beam

En la figura se muestra lo explicado anteriormente, para esta etapa no hubo ms problemas,


pues el sistema es muy ligero, as que no se vio la necesidad de utilizar acoplamientos para
aumentar la fuerza, o alguna otra necesidad mecnica25.

El siguiente paso fue probar el sensor infrarrojo GP2D12, el cul se coloco en un extremo de
la barra y gracias al filtro pasa bajas (PB) la estabilidad de los resultados se garantizo:

Tabla 3.1: Caracterizacin del sensor con y sin filtro.

Muestra Variacin Muestra Variacin Medidas


con filtro PB con filtro PB sin filtro sin filtro en cm
.550 volts .550 volts .570 volts .570 volts 20
.470 .470 .550 .530 21
.425 .425 .520 .498 22
.380 .379 .470 .440 23
.341 .340 .410 .396 24
.300 .300 .360 .360 25
.295 .296 .310 .345 26
.260 .258 .310 .274 27
.217 .215 .260 .197 28
.180 .180 .250 .145 29
.147 .146 .216 .126 30
.120 .120 .147 .100 32
.093 .094 .120 .084 34
.080 .080 .100 .074 36

25 Las especificaciones de fuerza y dems, del servomotor utilizado se encuentran en el APNDICE

75
En la tabla 3.1, se aprecia la variacin en las mediciones, donde los errores causan inestabilidad
en los resultados del software, una vez colocado el filtro pasa bajas las variaciones disminuyen
casi en su totalidad, aunque ocasionalmente suelen ocurrir variaciones por ruido o luz que
incide de otras fuentes (iluminacin externa) pero son mnimas, adems la tabla solo considera
del centmetro 20 en adelante, pues es a partir del cul la variacin se hace significativa pues al
aumentar la distancia se disminuye el voltaje.

3.2. Pruebas del Software

Las pruebas del software con el prototipo fueron las ms extensas y donde vamos a detallar
con mayor nfasis, pues hubo varias etapas o modificaciones que tuvieron que hacrsele al
programa.

La primera prueba es la calibracin del PWM con su equivalente 0o, los grados que la bola
necesitara para estar esttica. Esto se hizo con ayuda del osciloscopio, incrementando con un
programa previo el PWM, con que se alimenta el motor y viendo la inclinacin de la barra, as
se consigui el valor para el mximo, mnimo y ngulo cero. 1.75ms, 2.25ms y 2ms
respectivamente.

Durante la realizacin del software se fueron generando varias versiones donde la siguiente
correga algn detalle de la anterior, aqu presentamos la versin final despus de pruebas,
principalmente por que no se hicieron varios cambios solo ajustes a la primera versin:

a) Pruebas del modulo PWM

El modulo PWM tiene una cierta resolucin con lo que se calibra su frecuencia, pero esta
depende del cristal de cuarzo fundamentalmente, de tal forma que para ajustar la frecuencia
con que debe funcionar el servomotor se requiere un cristal del orden de KHz, pero esto
ocasionara que el programa principal fuera muy lento, luego entonces se opto por realizar un
modulo aparte que sustituyera al Modulo PWM del microcontrolador con ayuda del TIMER1,
el cul cargara un valor que generara la frecuencia mencionada antes (1.75ms 2.25ms).

void temp(void)
{
set_timer1(actuador1);
while(get_timer1()>=actuador1);
}

para el pulso bajo no hubo tanto problema, pues el servomotor soporta una variacin, por lo
que se opto por darle un valor que compensara la frecuencia de 50Hz.

76
actuador1=62400+actuador;
output_bit(pin_c2,1);
temp();
actuador1=52000-actuador;
output_bit(pin_c2,0);
temp();

b) Pruebas del Modulo difuso

Para el caso de la parte difusa, como sabemos este tipo de control depende mucho de
operaciones lgicas entre variables, pues la inferencia Mamdani lo marca claramente, para este
caso tuvimos que implementarlas, pero para evitar que el programa se hiciera demasiado
extenso creamos una librera que cuando necesitemos operaciones de ese tipo la mandramos a
llamar, con esto el programa se optimiza y es ms entendible para quin quiera revisarlo.

La librera es simple, pues solo contempla operaciones entre dos variables, aunque si se
necesitara para mayor numero, como es en nuestro caso, basta con guardar el resultado en una
variable auxiliar y volver ha hacer la siguiente operacin, pues las operaciones lgicas cumplen
con la propiedad distributiva.

A continuacin se presentan las sentencias que se encuentran almacenadas en la librera Fuzzy,


en donde se contemplan las operaciones and, OR, NOT y funciones CERO y UNO (escaln)

#define F_ONE 0xff


#define F_ZERO 0x00
#define F_OR(a,b) ((a) > (b) ? (a) : (b))
#define F_AND(a,b) ((a) < (b) ? (a) : (b))
#define F_NOT(a) (F_ONE+F_ZERO-a)

c) Pruebas del LCD

El Display de Cristal Liquido tambin requiri de pruebas debido a que se hicieron algunos
ajustes, pues el display muestra la informacin de cmo el sistema se aproxima al setpoint, en
este caso al cero, ya sea por la izquierda o por la derecha, pero debido a la no linealidad del
sistema la informacin tambin requiere ser tratada.

Cuando se mandaba a imprimir el dato tratado, careca de sentido pues mostraba datos que se
disparaban en valor e incluso al variar con rapidez el valor no era legible en el LCD.

A continuacin se muestra el cdigo tratado para representar lo ms lineal posible el dato,


adems de darle un rango pequeo para no perderse en un universo de valores grandes:

77
void salida_datos(void)
{
float var1;
var1=error;
{
if (var1>116)
var1=(var1+645-758)/60.45;
else
{
if (var1<110)
var1=-(113-var1)/10;
else
var1=0;
}
}
printf(lcd_putc, "\f%% error... %2.1f",var1);
}

Lo que se hace en este cdigo es ajustar la variable 1 (var1) para que cuando este del lado
derecho del setpoint muestre un valor incremental positivo que refleja que la bola se esta
alejando del setpoint, de igual forma hacia el lado izquierdo, pero con un valor negativo y
finalmente cuando este en el setpoint mande un cero. Todo esto se manda a imprimir en el
LCD. Adems de que el dato esta escalado al mximo valor del universo de discurso con que
se diseo, tanto de izquierda como derecha (645, 113 respectivamente).

d) Pruebas del Convertidor Analgico Digital

En primera instancia se pens solo usar ocho bits de resolucin para el modulo AD
(Analgico digital), esto con el fin de que los registros fueran mas pequeos en el PIC y de
esta forma el procesamiento fuera ms rpido, pero los resultados fueron poco satisfactorios,
pues cuando se realizo la fusificacin hubo demasiada imprecisin, principalmente al ser datos
enteros, pues al hacer los redondeos existen prdidas de datos, provocando que en ocasiones
aun cuando el sensor media distintas posiciones, el resultado obtenido en la fusificacin era el
mismo.

Lo que se opto para corregir esto fue utilizar el modulo AD en modo de diez bits, por lo cul
algunas operaciones se dispararon en cuanto a tamao, principalmente al realizar la
defusificacin, pues se realizan sumas y multiplicaciones. Para corregir esto se utilizaron
variables de treinta y dos bits, pensando que el proceso podra perderse por el nivel complejo
de procesamiento, pero realmente pudimos darnos cuenta que el PIC segua sobrado, esto
gracias a que se utilizo un cristal de veinte megahertz (limite en velocidad) y que muy a pesar de
todo el tamao del proceso no es tan grande.

78
3.3. Pruebas de la variable de salida

Cuando se realizaron las primeras pruebas de lazo cerrado el sistema era estable pero muy
oscilatorio, con lo cul su tiempo de establecimiento hacia que el sistema se considerara
incontrolable, principalmente por la resolucin de las variables lingsticas, tendiendo que darle
mas resolucin (variables ms angostas) en las reas cercanas al setpoint en la variable de salida.

Figura 3.2: Representacin de la variable de salida.

Figura 3.3: Representacin de la variable de salida modificada

En la primera imagen se nota que todas las variables lingsticas son homogneas, sin dar
mayor o menor resolucin a un rea especifica, por lo que le costaba mucho estabilizarse, a
partir de lo cul se decidi dar mayor resolucin al rea cercana a la funcin C (cero), pues es
obvio que el sistema siempre buscara el cero.

79
3.4. Resultados finales del sistema

El objetivo de la prueba final fue el setpoint. Originalmente el sistema estaba propuesto con
un potencimetro, pero debido a la no linealidad del sistema y del sensor de distancia, era
difcil predecir cul era el punto de ajuste, por lo que se decidi colocarle interruptores para
definir el setpoint, a partir del cul se programa la posicin a travs de saltos establecidos,
aunque estos pueden variarse de acuerdo a nuestras necesidades, pues esta especificado en el
programa. A continuacin se muestran algunas variaciones que se obtuvieron en el
experimento fsico, al realizar varias pruebas:

Tabla 3.2: Resultados finales del sistema.

Setpoint (cm) Prueba 1 Prueba 2 Prueba 3 Prueba 4


Aprox. Aprox. Aprox. Aprox.
18 18.3 19.1 18.7 18.3
19 19.3 19.3 19.2 19.5
20 20.1 19.8 20.2 20.1
21 21.4 21.4 21.2 21.5
22 22.7 22.6 22.6 22.5

Conforme el sistema se aleja un poco del setpoint definido como 20 (centro de la variable
lingstica C) el sistema empieza a tener mayores variaciones, aunque aun as las variaciones
son pequeas y de las pruebas que se hicieron hubo respuestas muy cercanas al setpoint, el
mayor error es de 1.1 cm, en una de las pruebas, de ah en fuera el sistema siempre es ms
cercano al valor deseado.

Cuando se analizo el sistema se trato de equilibrar la bola de forma manual, para comprender
con ms detalle lo que deba hacer el sistema, a partir de lo cul se pudo concluir que cuando la
bola estaba muy cerca del punto deseado, haba que dar un ngulo pequeo, para solo mover la
bola un poco, pero debido a que la bola estaba prcticamente frenada, un ngulo demasiado
pequeo no la mova y uno algo grande la mova demasiado, esto para romper la inercia de la
bola, as que inferimos que cuando la bola cae en la vecindad de 1 cm del setpoint, o la bola
esta prcticamente frenada, es difcil aproximar al error cero, pues es difcil romper nuevamente
la inercia para corregir el error.

80
Conclusiones

En el presente trabajo de tesina se presento el diseo de un controlador difuso, aplicado a


un sistema no lineal de segundo orden, el Ball and Beam, el cul se construyo para las pruebas
fsicas y cuyo desempeo fue mostrado fsicamente y mediante simulacin.

Durante el desarrollo del software difuso, que es la parte modular de la tesis, para garantizar el
buen funcionamiento y estabilidad del sistema, se tuvieron algunos contratiempos,
principalmente en la parte de la modulacin, pues el modulo de CCP del PIC (modulo de
captura, comparacin y modulacin) tiene una frecuencia mnima de operacin, establecida y
dependiente del la frecuencia de trabajo del microcontrolador (cristal externo), luego entonces
para garantizar el trabajo del servomotor se requiere una frecuencia de trabajo del orden de
kilohertz, lo cul provoca un nivel de procesamiento de las instrucciones demasiado lenta,
siendo que lo comn es tener una frecuencia de megahertz. A partir de este contratiempo se
opto por utilizar el Timer interno del PIC para generar los tiempos de modulacin requerida
por el servomotor.

Para poder observar la estabilidad del sistema se utilizaron tres formas de pruebas distintas, que
coincidieron en resultado y por lo cul se determino que el sistema fue estable:

La primera fue la simulacin, la cul nos anticipa posibles resultados, en nuestro caso, el
sistema se controla con un mtodo difuso; para la simulacin se requiri la ecuacin
matemtica del Ball and Beam y utilizando el simulink de MATLAB, se conecto el mdulo del
control difuso de acuerdo a nuestra experiencia para controlar el prototipo y el mdulo
matemtico que rige al sistema, mostrando estabilidad al igualarse el setpoint con la seal de
salida.

La segunda prueba fue el diseo fsico, en donde se programo en lenguaje C, en un


microcontrolador y despus se conecto al prototipo, logrando el control de la posicin de la
pelota. Adems de que el tiempo de reaccin fue aceptable pues de no ser as la pelota puede
salirse por algn extremo de la barra.

Por ultimo se realizo una prueba de estabilidad enrgica, a partir de una frmula matemtica, la
cul nos indica si el sistema es lo suficientemente estable, cuando el sistema diverge se vuelve
inestable y la energa crece indefinidamente o se queda oscilando, pero si el sistema converge, el
cambio enrgico se estabiliza y se convierte en cero, dando como resultado un sistema estable;
el cul fue nuestro caso.

81
APNDICE A

Programa en lenguaje C para PICs del Controlador Difuso

#include <16f877.h>
#device adc=10
#fuses hs,nowdt,noprotect,put,nobrownout,nolvp
#use delay(clock=20000000)
#define use_portb_lcd TRUE
#include <lcd.c>

#include <fuzzc.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int32 error;
int32 setpoint;
int32 error1;
int32 derivada;
int32 actuador;
int32 actuador1;
int32 num_coa;
int32 den_coa;
int32 aux[4];

int32 Error_NG (int32 real)


{
if (real<=30) return(1023);
else
{
if (real<=61) return((61-real)*33);
else
return (0);
}
}

int32 Error_NP (int32 real)


{
if (real<30) return (0);
else
{
if (real<=61) return((real-30)*33);

82
else
{
if (real<113) return ((113-real)*20);
else
return (0);
}
}
}

int32 Error_C (int32 real)


{
if (real<61) return (0);
else
{
if (real<=113) return ((real-61)*20);
else
{
if (real<201) return ((201-real)*11);
else
return (0);
}
}
}

int32 Error_PP (int32 real)


{
if (real<113) return (0);
else
{
if (real<=201) return ((real-113)*11);
else
{
if (real<383) return ((383-real)*6);
else
return (0);
}
}
}

int32 Error_PG (int32 real)


{
if (real<201) return (0);
else
{
if (real<=383) return ((real-201)*6);
else

83
return (1023);
}
}

//calculo del centro de area


void Actuador_NG (int32 salida)
{
den_coa+=salida;
num_coa+=((salida)*1000);
}

void Actuador_NM (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*760);
}

void Actuador_NP (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*660);
}

void Actuador_C (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*620);
}

void Actuador_PP (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*580);
}

void Actuador_PM (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*480);
}

void Actuador_PG (int32 salida)


{
den_coa+=salida;
num_coa+=((salida)*200);
}

84
//programa que realiza la inferencia entre las entradas
void Control (void)
{
num_coa=0;
den_coa=0;

Actuador_NG(Error_NG(error));
// regla 1

aux[0]=Error_NP(error);
aux[1]=Error_NP(derivada);
aux[1]=F_AND(aux[0],aux[1]);
aux[0]=Error_NP(error);
aux[2]=Error_C(derivada);
aux[2]=F_AND(aux[0],aux[2]);
actuador=F_OR(aux[1],aux[2]);
Actuador_NM(actuador);
// regla 2

aux[0]=Error_NP(error);
aux[1]=Error_NG(derivada);
aux[1]=F_AND(aux[0],aux[1]);
aux[0]=Error_C(error);
aux[2]=Error_NP(derivada);
//aux[2]=Error_PP(derivada);
aux[2]=F_AND(aux[0],aux[2]);
actuador=F_OR(aux[1],aux[2]);
Actuador_NP(actuador);
// regla 3

aux[0]=Error_C(error);
aux[1]=Error_C(derivada);
actuador=F_AND(aux[0],aux[1]);
Actuador_C(actuador);
// regla 4

aux[0]=Error_C(error);
aux[1]=Error_PP(derivada);
//aux[1]=Error_NP(derivada);
aux[1]=F_AND(aux[0],aux[1]);
aux[0]=Error_PP(error);
aux[2]=Error_PG(derivada);
aux[2]=F_AND(aux[0],aux[2]);
actuador=F_OR(aux[1],aux[2]);
Actuador_PP(actuador);

85
// regla 5
aux[0]=Error_PP(error);
aux[1]=Error_PP(derivada);
aux[1]=F_AND(aux[0],aux[1]);
aux[0]=Error_PP(error);
aux[2]=Error_C(derivada);
aux[2]=F_AND(aux[0],aux[2]);
actuador=F_OR(aux[1],aux[2]);
Actuador_PM(actuador);
// regla 6

Actuador_PG(Error_PG(error));
// regla 7

actuador=num_coa/den_coa;
}

void temp(void)
{
set_timer1(actuador1);
while(get_timer1()>=actuador1);
}

void salida_datos(void)
{
float var1;
var1=error;
{
if (var1>116)
var1=(var1+645-758)/60.45;
else
{
if (var1<110)
var1=-(113-var1)/10;
else
var1=0;
}
}
printf(lcd_putc, "\f%% error... %2.1f",var1);
}

void lectura_datos(void)
{
set_adc_channel(0);
error=read_adc();
setpoint=input_d();

86
{
if (setpoint==128)
error=error-28; //aqui se posiciona en el valor 18cm
else
{
if (setpoint==64)
error=error-14; //aqui se posiciona en el valor 19cm
else
{
if (setpoint==32)
error=error+16; //aqui se posiciona en el valor 21cm
else
{
if (setpoint==16)
error=error+31; //aqui se posiciona en el valor 22cm
else
error=error;

}
}
}
}
}

//programa principal que llama al control difuso


void main(void)
{
setup_timer_1(t1_internal|t1_div_by_4);
set_tris_b(0x00);
setup_adc(ADC_CLOCK_DIV_32);
setup_adc_ports(AN0_AN1_VSS_VREF);
lcd_init();

while(true)
{
lectura_datos();
control();
actuador1=62400+actuador;
output_bit(pin_c2,1);
temp();
actuador1=52000-actuador;
output_bit(pin_c2,0);
temp();
salida_datos();
derivada=error;
}}

87
APENDICE B

Datos tcnicos del sensor SHARP GP2D12

Caractersticas:
- Menor influencia del color de los objetos reflexivos.
- Lnea indicadora de distancia output/distance :
-Tipo de salida indicadora de la distancia analgica (tensin analgica). Distancia del
detector de 10 a 80 cm.
- Del circuito del mando externo es innecesario.
- Bajo costo.

Dimensiones y encapsulado:

88
Aplicaciones:
1. En televisiones
2. En computadoras personales
3. Automviles
4. Fotocopiadoras
5. Sensores en sanitarios
6. Sensores de cuerpo humano para los productos de consumo como ventiladores
elctricos y aires acondicionados.
7. Sensores de garaje

Valores mximos Absolutos:


Para Ta = 25 C y VCC = 5V

Parmetro Smbolo Rangos Unidades

Tensin de Alimentacin VCC -0.3 a 7 V

Tensin en el terminal de salida VO -0.3 a VCC+0.3 V

Temperatura de trabajo Topr -10 a +60 C

Temperatura de almacenamiento Tstg -40 a +70 C

Condiciones de trabajo recomendadas:

Parmetro Smbolo Rangos Unidades

Tensin de alimentacin de trabajo Vcc 4.5 a +5.5 V

Caractersticas electro-pticas:
Parmetros Smbolo Condiciones MIN. TIP. MAX. Unidad

Rango de medida de L (*1) (*3) 10 - 80 cm


distancia

89
Tensin en el GP2D12 VO L=80 cm 0.25 0.4 0.55 V
terminal de salida (*1)

GP2D15 VOH Tensin de VCC- -- -- V


salida a nivel 0.3
alto (*1)

VOL Tensin de -- -- 0.6 V


salida a nivel
bajo (*1)

Incremento dela GP2D12 VO Cambio de 1.75 2.0 2.25 V


tensin de salida salida de
L=80 a 10 cm

Tensin de salida GP2D15 VO (*1)(*2)(*4) 21 24 27 cm


en funcin de la
distancia

Corriente media de ICC L = 80 cm -- 33 50 mA


dispersin (*1)

*1. Objeto reflexivo usando: Papel blanco (Para el color gris se usa la tarjeta R-27 de la Ca. de
Kodak S.A. la cara blanca, la proporcin reflexiva; 90%).

*2. Utilizamos el dispositivo despus del ajuste siguiente: salida al cambiar la distancia L
24cm3cm debe medirse por el sensor.

*3. Rango de distancia que mide el sistema del sensor ptico.

*4. La salida de cambio tiene una anchura de la histresis. La distancia especificada por Vo
desde que la salida a nivel bajo (L) hasta que cambia a nivel alto (H).

90
Diagrama de bloques internos:

Cronograma:

Caractersticas de Distancias

91
Curvas caractersticas del GP2D12

Tensin de Salida Analgica VS en funcin Tensin de Salida Analgica VS en funcin


de Superficie Iluminada del Objeto de la Distancia al objeto reflexivo
Reflexivo

92
APENDICE C

Caractersticas del servomotor COMMAND CS-60

TECHNICAL VALUES

CONTROL SYSTEM : PULSE WIDTH CONTROL 1500usec NEUTRAL


OPERATING TEMPERATURE RANGE : 4.8 a 6.0 volts
OPERATING VOLTAGE RANGE : -20 a +60C
TEST VOLTAGE : a 4.8 v a 6.0 v
OPERATING SPEED : 0.21 sec/60 at not load
STALL TORQUE : 3.3 kg.cm
OPERATING ANGLE : 45/ ONE SIDE PULSE TRAVELING 400usec
DIRECTION : CLOCK WISE/PULSE TRAVELING 1500 a 1900 usec
CURRENT DRAIN : 8mA/IDLE AND 150mA/NO LOAD RUNNING
DEAD BAND WIDTH : 8usec
CONNECTOR WIRE LENGTH : 300mm(11.81in)
DIMENSIONS : 40.6x19.8x36.6mm(1.59x0.77x1.44in)
WEIGHT : 45.5g(1.6oz)

93
2.FEATURES
3-POLE FERRITE MOTOR
LONG LIFE POTENTIOMETER
DUAL OILITE BUSHING
INDIRECT POTENTIOMETER DRIVE

3.APPLICATIONS
AIRCRAFT 20-60 SIZE
30 SIZE HELICOPTERS
STEERING AND THROTTLE SERVO FOR CARS
TRUCK AND BOATS

94
APENDICE D

PIC C Compiler

En este punto no se pretende explicar cmo se programa en este lenguaje, sino hacer un listado
de las directivas y funciones permitidas por el compilador PIC C de CCS, compilador
especfico para microcontroladores de la casa Microchip. As pues, se parte de la idea de que el
lector posee conocimientos bsicos de este lenguaje u otros lenguajes de alto nivel.

Todas las directivas del preprocesador comienzan con el carcter # seguido por un comando
especfico. Algunas de estas directivas son extensiones del C estndar. El C proporciona una
directiva del preprocesador, que los compiladores aceptan, y que permite ignorar o actuar sobre
los datos que siguen. El compilador de CCS admite cualquier directiva del preprocesador que
comience con PRAGMA, lo que asegura la compatibilidad con otros compiladores.

A continuacin se describen algunas directivas del compilador que se emplearn para


programar los microcontroladores PIC en estas prcticas.

Control de memoria

#BIT identificador = x.y

Esta directiva crear un identificador "id" que puede utilizarse como cualquier SHORT INT
(entero corto; un bit). El identificador har referencia a un objeto en la posicin de memoria x
ms el bit de desplazamiento y.

#BYTE identificador = X
Esta directiva crear un identificador id que puede utilizarse como cualquier INT (un
byte). El identificador har referencia a un objeto en la posicin de memoria x, donde x puede
ser una constante u otro identificador. Si x es otro identificador, entonces ste estar localizado
en la misma direccin que el identificador id.

#RESERVE

Permite reservar posiciones de la RAM para uso del compilador. #RESERVE debe aparecer
despus de la directiva #DEVICE, de lo contrario no tendr efecto.

Directivas del C estndar

#DEFINE identificador CADENA

Se utiliza simplemente para reemplazar el identificador (ID) con CADENA

95
#IF expresin_constante
#ELSE
#ENDIF

El preprocesador evala la expresin_constante y si es distinta de cero procesar las lneas


hasta el #ELSE o en su defecto hasta el #ENDIF.

#INCLUDE <Nombre_Fichero>
#INCLUDE "Nombre_Fichero"

Esta directiva hace que el compilador incluya en el fichero fuente el texto que contiene el
archivo especificado en <Nombre_Fichero>.

Especificacin de dispositivos

#FUSES opciones

Esta directiva define qu fusibles deben activarse en el dispositivo cuando se programe.


Esta directiva no afecta a la compilacin; sin embargo, esta informacin es necesaria para
algunos programadores de dispositivos. Algunas de las opciones ms usadas son:

LP, XT, HS, RC


WDT, NOWDT
PROTECT, NOPROTECT
PUT, NOPUT (Power Up Timer)
BROWNOUT, NOBROWNOUT
SWAP

Libreras incorporadas

#USE DELAY (CLOCK=frecuencia)

Esta directiva indica al compilador la frecuencia del procesador, en ciclos por segundo, a la
vez que habilita el uso de las funciones DELAY_MS() y DELAY_US().
#USE FAST_IO (puerto)

Esta directiva afecta al cdigo que el compilador generar para las instrucciones de entrada y
salida. Este mtodo rpido de hacer I/O ocasiona que el compilador realice I/O sin programar
el registro de direccin.

#USE I2C (master/slave, SDA=Pin, SCL=Pin opciones)

La librera I2C contiene funciones para implementar un bus I2C. La directiva #USE I2C
permanece efectiva para las funciones I2C_START, I2C_STOP, I2C_READ, I2C_WRITE e
I2C_POLL hasta que se encuentre otra directiva #USE I2C.

96
Las opciones son:

#USE RS232 (BAUD=baudios, XMIT=pin, RCV=pin...)

Esta directiva le dice al compilador la velocidad en baudios y los pines utilizados para la I/O
serie. Esta directiva tiene efecto hasta que se encuentra otra directiva RS232.

La directiva #USE DELAY debe aparecer antes de utilizar #USE RS232. Esta directiva
habilita el uso de funciones tales como GETCH, PUTCHAR y PRINTF.

Las opciones son:

#USE STANDARD_IO (puerto)

Esta directiva afecta al cdigo que el compilador genera para las instrucciones de entrada y
salida. El mtodo estndar de hacer I/O causar que el compilador genere cdigo para hacer
que un pin de I/O sea entrada o salida cada vez que se utiliza. En los procesadores de la serie
5X esto necesita un byte de RAM para cada puerto establecido como I/O estndar.

SET_UART_SPEED(baud)

Esta funcin cambia la velocidad de transmisin de la UART (Universal Asynchronous


Receiver Transmitter) en tiempo de ejecucin.

SETUP_ADC(mode)

97
Esta funcin configura (permite establecer los parmetros) del conversor analgico/digital.
Los modos son los siguientes:

ADC_OFF
ADC_CLOCK_DIV_2
ADC_CLOCK_DIV_8
ADC_CLOCK_DIV_32
ADC_CLOCK_INTERNAL

Funciones de I/O discreta

INPUT(pin)

Devuelve el estado '0' o '1' de la patilla indicada en pin. El mtodo de acceso de I/O
depende de la ltima directiva #USE *_IO utilizada. El valor de retorno es un entero corto.

OUTPUT_BIT(pin, value)

Esta funcin saca el bit dado en value(0 o 1) por la patilla de I/O especificada en pin. El
modo de establecer la direccin del registro, est determinada por la ltima directiva #USE
*_IO.

OUTPUT_HIGH(pin)

Pone a 'uno' el pin indicado. El mtodo de acceso de I/O depende de la ltima directiva
#USE *_IO utilizada.

OUTPUT_LOW(pin)
Pone a 'cero' el pin indicado. El mtodo de acceso de I/O depende de la ltima directiva
#USE *_IO.

SET_TRIS_A(value)
SET_TRIS_B(value)
SET_TRIS_C(value)
SET_TRIS_D(value)
SET_TRIS_E(value)

Estas funciones permiten escribir directamente los registros tri-estado para la configuracin
de los puertos. Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O
como si fueran memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value
representa una patilla. Un '1' indica que la patilla es de entrada y un '0' que es de salida.

Funciones de retardos

DELAY_CYCLES(count)

98
Esta funcin realiza retardos segn el nmero de ciclos de instruccin especificado en
count; los valores posibles van desde 1 a 255. Un ciclo de instruccin es igual a cuatro periodos
de reloj.

DELAY_MS(time)

Esta funcin realiza retardos del valor especificado en time. Dicho valor de tiempo es en
milisegundos y el rango es 0-65535. Es preciso utilizar la directiva #use
delay(clock=frecuencia) antes de la llamada a esta funcin, para que el compilador sepa la
frecuencia de reloj.

DELAY_US(time)

Esta funcin realiza retardos del valor especificado en time. Dicho valor es en
microsegundos y el rango va desde 0 a 65535. Es necesario utilizar la directiva #use delay antes
de la llamada a esta funcin para que el compilador sepa la frecuencia de reloj.

Funciones de control del procesador

DISABLE_INTERRUPTS(level)

Esta funcin desactiva la interrupcin del nivel dado en level. El nivel GLOBAL prohbe
todas las interrupciones, aunque estn habilitadas o permitidas. Los niveles de interrupcin son:

ENABLE_INTERRUPTS(level)

Esta funcin activa la interrupcin del nivel dado en level. Queda a cargo del tcnico definir
un procedimiento o rutina de atencin, para el caso que se produzca la interrupcin indicada.
El nivel GLOBAL permite todas las interrupciones que estn habilitadas de forma individual.

SLEEP()

Esta funcin pone al micro en un estado de REPOSO.

Contadores/Temporizadores

GET_RTCC()
GET_TIMER0()
GET_TIMER1()

99
i=GET_TIMER2()

Estas funciones devuelven el valor de la cuenta de un contador en tiempo real. RTCC y


Timer0 son el mismo. Timer1 es de 16 bits y los otros son de 8 bits.

RESTART_WDT()

Esta funcin reiniciar el timer del watchdog. Si habilitamos el timer del watchdog, debe
llamarse peridicamente a RESTART_WDT() para prevenir el reseteo del procesador.

SET_RTCC(value)
SET_TIMER0(value)
SET_TIMER1(value)
SET_TIMER2(value)

Estas funciones activan el timer o temporizador al valor especificado. RTCC y Timer0 son
el mismo. Timer1 es de 16 bits y los otros son de 8 bits.

SETUP_TIMER_1(mode)

Esta funcin inicializa el timer1. Los valores de mode deben ordenarse juntos, tal como se
muestra en el ejemplo. El valor del timer puede leerse y puede escribirse utilizando
GET_TIMER1() y SET_TIMER1().

Los valores de mode son:

SETUP_TIMER_2(mode, period, postscale)

Esta funcin inicializa el timer2; mode especifica el divisor del reloj del oscilador. Period es
un nmero comprendido entre 0-255, y determina el momento en el que el valor del reloj se
resetea a 0. postscale es un nmero de 0 a 15, que determina cuntos reset del timer se han
producido antes de una interrupcin. 0 significa 1 reset, 1 significa 2 reset, y as sucesivamente.
El valor del timer puede leerse y puede escribirse utilizando GET_TIMER2() y
SET_TIMER2().

Los valores de mode son:

- T2_DISABLED
- T2_DIV_BY_1
- T2_DIV_BY_4
- T2_DIV_BY_16

100
Funciones de entrada A/D

SETUP_ADC_PORTS(value)

Esta funcin configura los pines del ADC para que sean analgicos, digitales o alguna
combinacin de ambos.

SETUP_ADC(mode)

Esta funcin prepara o configura el conversor A/D. Los modos de funcionamiento son:

- ADC_OFF
- ADC_CLOCK_DIV_2
- ADC_CLOCK_DIV_8
- ADC_CLOCK_DIV_32
- ADC_CLOCK_INTERNAL

SET_ADC_CHANNEL(canal)

Especifica el canal a utilizar por la funcin READ_ADC(). El nmero de canal empieza en


0. Es preciso esperar un corto espacio de tiempo despus de cambiar el canal de adquisicin,
antes de que se puedan obtener lecturas de datos vlidos.

i=READ_ADC()

Esta funcin lee el valor digital del conversor analgico digital. Deben hacerse llamadas a
SETUP_ADC() y SET_ADC_CHANNEL() en algn momento antes de la llamada a esta
funcin.

Funciones CCP

SETUP_CCP1(mode)
SETUP_CCP2(mode)

Estas funciones inicializa el contador CCP. Para acceder a los contadores CCP se utilizan las
variables CCP_1 y CCP_2. Los valores para mode son:

CCP_OFF
CCP_CAPTURE_FE
CCP_CAPTURE_RE
CCP_CAPTURE_DIV_4
CCP_CAPTURE_DIV_16
CCP_COMPARE_SET_ON_MATCH
CCP_COMPARE_CLR_ON_MATCH
CCP_COMPARE_INT

101
CCP_COMPARE_RESET_TIMER
CCP_PWM
CCP_PWM_PLUS_1 (slo si se utiliza un ciclo de trabajo de 8 bits)
CCP_PWM_PLUS_2 (slo si se utiliza un ciclo de trabajo de 8 bits)
CCP_PWM_PLUS_3 (slo si se utiliza un ciclo de trabajo de 8 bits)

SET_PWM1_DUTY(value)
SET_PWM2_DUTY(value)

Estas funciones escriben los 10 bits de value al dispositivo PWM para establecer el ciclo de
trabajo. Se puede usar un valor de 8 bits si no son necesarios los bits menos significativos.

Funciones para el manejo de la Eeprom interna

READ_EEPROM(address)

Esta funcin lee un byte en la direccin (address) de Eeprom especificada. La direccin


puede ser 0-63.

WRITE_EEPROM(address, value)

Esta funcin escribe un byte de datos en la direccin de memoria Eeprom especificada.


Value es el byte de datos a escribir.
Definicin de datos

Si TYPEDEF se pone delante de la definicin de un dato, entonces no se asigna espacio de


memoria al identificador a menos que sea utilizado como un especificador de tipo en otras
definiciones de datos.

Si delante del identificador ponemos CONST entonces, el identificador es tratado como


constante. Las constantes deben ser inicializadas y no pueden cambiar en tiempo de ejecucin.

unsigned define un nmero de 8 bits sin signo


unsigned int define un nmero de 8 bits sin signo
int define un nmero de 8 bits sin signo
char define un nmero de 8 bits sin signo
long define un nmero de 16 bits sin signo
long int define un nmero de 16 bits sin signo
signed define un nmero de 8 bits con signo
signed int define un nmero de 8 bits con signo
signed long define un nmero de 16 bits con signo
float define un nmero de 32 bits en punto flotante
short define un bit
short int define un bit

102
BIBLIOGRAFA

[1] J. Gomez Galindo Conjuntos y [9] Ahmad M. Ibrahim Introduction to


sistemas difusos Departamento de Applied Fuzzy Electronics Prentice
lenguajes y ciencias de la computacin, Hall, 1997. tercera edicin.
universidad de malaga, Espaa, Apuntes
de curso de informatica. www.uma.es [10] Martin McNeill et. al., Fuzzy Logic a
visitado en agosto de 2006. practical approach F. AP editorial
profesional, 1997 primera edicin.
[2] Timothy J. Ross Fuzzy logic with
Engineering Aplications McGraw [11] Jose M. Angulo Microcontroladores
Hill 1998. segunda edicion. diseo y aplicaciones Mc Graw Hill,
2002, segunda edicion.
[3] Ordoez Raul, et al Adaptive Fuzzy
Control : Experiments and [12] Manual de especificaciones
comparative Analyses artculo de PIC16F87X datasheet microchip,
IEEE 2001. 2004. www.microchip.com extraido en
Julio de 2006.
[4] Holgado Corrales Javier
Controladores en Lgica Borrosa [13] Custom Computer Services CCS
Servicio de publicaciones Universidad de C compiler Manual reference
Cadiz, Espaa. www.uca.es. Visitado en manual de referencia 2005.
julio de 2006.
[14] Marco Antonio Perez Cisneros, et. al
[5] Jerry M. Mendel, Fuzzy Logic sistema de balancn y pelota
Systems for Engineering: A tutorial U.de.G, artculo - 2004.
IEEE, 1998.
[15] Wen Yu, et. al Stability anlisis of
[6] Giarratano joseph, Sistemas expertos PID regulation for ball and Beam
Principios y programacin Ciencias system artculo de IEEE, 2005.
Thomson 1999. segunda edicin.
[16] Manual de simulink Fuzzy toolbox
[7] Kart Johan Astrom, et al Adaptive matlab, 2004. manual de ayuda del
Control, Addison-wesley 1989. primera software MATLAB 6.5.
edicin.
[17] Valluru B, Rao, C neural network
[8] Francisco Murcia Alvarez Diseo and fuzzy logic MTBooks, 1999
sistematico de Controladores Difusos segnda edicin.
Usando Razonamiento Inductivo
Tesis Doctoral, Universidad Politcnica [18] F. Martin McNeill, et. al, Fuzzy Logic
de Catalua, 1999. a practical approach APprofesional,
2001. tercera edicin.

103
4

Das könnte Ihnen auch gefallen