diseño y simulación de un sistema mecánico subactuado
TRANSCRIPT
� � ��
DISEÑO Y SIMULACIÓN DE UN SISTEMA MECÁNICO SUBACTUADO: PÉNDULO INVERTIDO TRASLACIONAL CONFIGURABLE
ILDEFONSO COLLAZOS MAMIAN EDWIN FERNANDO ERAZO MUÑOZ OSCAR ROMAN MORA CARABALI
UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA
DEPARTAMENTO DE AUTOMATICA Y MECANICA PROGRAMA DE INGENIERA MECATRONICA
SANTIAGO DE CALI 2006
� � ��
DISEÑO Y SUMILACIÓN DE UN SISTEMA MECÁNICO SUBACTUADO: PÉNDULO INVERTIDO TRASLACIONAL CONFIGURABLE
�
ILDEFONSO COLLAZOS MAMIAN EDWIN FERNANDO ERAZO MUÑOZ OSCAR ROMAN MORA CARABALI
Trabajo de grado para optar al titulo De Ingeniero Mecatrónico
Director FREDDY NARANJO PEREZ
Ingeniero Mecanico Doctor en Automática e Informática Industrial
UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA
DEPARTAMENTO DE AUTOMATICA Y MECANICA PROGRAMA DE INGENIERA MECATRONICA
SANTIAGO DE CALI 2006
� � ��
JUAN CARLOS MENA
�����������������������������
Jurado
JUAN CARLOS PERAFAN
_________________________�
Jurado
Santiago de Cali, 16 de Febrero de 2006
Nota de Aceptación
Trabajo aprobado por el comité de grado
por el cumplimiento de los requisitos
exigidos por la Universidad Autonoma de
Occidente para optar al titulo de Ingeniero
Mecatrónico
� � ��
CONTENIDO Pág.
RESUMÉN 15
INTRODUCCIÓN 17
1. OBJETIVOS 19
1.1 OBJETIVO GENERAL. 19
1.2 OBJETIVOS ESPECIFICOS. 19
2. MODELAMIENTO Y ANALISIS MATEMÁTICO 20
2.1. PÉNDULO SIMPLE 20
2.1.1 Modelo no lineal 21
2.1.2 Linealización del modelo matemático 25
2.1.3 Representación en el espacio de estados 25
2.2 PÉNDULO DOBLE 28
2.2.1 Modelo no lineal 29
2.2.2 Linealización del modelo matemático 38
2.2.3 Representación en el espacio de estados 39
2.3 VALIDACIÓN DE LOS MODELOS MATEMÁTICOS 43
2.3.1 Modelo Péndulo Invertido Simple 44
2.3.2 Modelo del Péndulo Invertido Doble 48
2.4 ANALISIS DE CONTROLABILIDAD 53
2.4.1 Péndulo Invertido Simple. 53
2.4.2 Péndulo Invertido Doble 54
�
� � ��
Pág.
3. PLANEACIÓN DEL PRODUCTO 55
3.1. JUSTIFICACIÓN 55
3.2. PLANTEAMIENTO DE LA MISIÓN 56
4. DESARROLLO CONCEPTUAL 58
4.1 IDENTIFICACIÓN DE NECESIDADES 58
4.1.1 Recolección de información primaria 58
4.1.2 Interpretación de datos primarios en términos de necesidades 58
4.1.3 Organización de necesidades por jerarquía 58
4.1.4 Importancia relativa de las necesidades 61
4.2 ESPECIFICACIONES PRELIMINARES 62
4.2.1 Establecimiento de métricas 62
4.2.2 Benchmarking competitivo 64
4.2.3 Establecimiento de valores marginales 69
4.2.4 Especificaciones preliminares 71
4.3 GENERACIÓN DE CONCEPTOS 72
4.3.1 Clarificación del problema 72
4.3.2 Rama critica 74
4.3.3 Exploración sistemática de información 75
4.3.4 Conceptos generados 81
4.4 SELECCIÓN DE CONCEPTOS 86
4.4.1 Matriz de Tamizaje de Conceptos 86
4.4.2 Matriz de Evaluación de Conceptos 88
5. DISEÑO A NIVEL DE SISTEMA 90
� � ��
Pág.
5.1. ARQUITECTURA DEL PRODUCTO 91
5.1.1. Esquema del Producto 92
5.1.2. Agrupación de Elementos 93
5.1.3. Distribución Geométrica 94
5.1.4. Interacciones Fundamentales 95
5.1.5. Interacciones Incidentales. 96
5.2. DISEÑO INDUSTRIAL 97
5.2.1. Necesidades Ergonómicas. 97
5.2.2. Necesidades Estéticas. 99
5.2.3. Dominación del Producto 99
5.2.4. Evaluación de la Calidad del Diseño Industrial: 100
5.3. DISEÑO PARA MANUFACTURA 101
5.3.1 Reducción de Costos 101
5.4. PROTOTIPADO 105
6. DISEÑO DETALLADO 106
6.1. SISTEMA MECÁNICO 107
6.1.1. Subconjunto Montaje Motor-Sensor 107
6.1.2. Subconjunto Carro 108
6.1.3. Subconjunto Péndulos 109
6.1.4. Subconjunto Tensor 110
6.1.5. Subconjunto Estructura 111
6.1.6. Correa Dentada 113
6.1.7. Rodamientos 114
6.2. SISTEMA ELECTRICO Y ELECTRONICO 115
6.2.1. Actuador 116
� � �
Pág.
�6.2.2. Sensores 121
6.2.3. Fuente de Alimentación DC 121
6.2.4. Amplificación de Señales 121
6.2.5. Acondicionamiento de señales 122
6.3. DISEÑO DEL SISTEMA ELECTRÓNICO 123
6.3.1 Fuentes de Alimentación 124
6.3.2 Amplificador de Voltaje 125
7 ESTRATEGIAS DE CONTROL DEL SISTEMA 128
7.1. MODELADO DEL ACTUADOR 129
7.2. CONTROL PÉNDULO SIMPLE 131
7.2.1. Diseño del sistema de control para la zona Lineal 133
7.2.2. Diseño de sistema de control para zona lineal por modos deslizantes 136
7.2.3. Corrección de las oscilaciones de alta frecuencia en el controlador CMD 144
7.2.4. Diseño del sistema de control para la zona de balanceo 145
7.3. CONTROL PÉNDULO DOBLE 148
7.3.1. Diseño del sistema de control 148
7.4. IMPLEMENTACIÓN Y SIMULACIÓN DE CONTROLADORES 149
7.4.1. Péndulo Invertido Simple 150
7.4.2. Péndulo Invertido Doble 173
8. PROTOTIPO VIRTUAL DIRECTX 179
8.1. REQUERIMIENTOS DEL SISTEMA. 179
8.2. CASOS DE USO. 181
8.2.1. Diagrama de casos de uso 181
� � �
Pág.
�8.2.2. Descripción de los casos de uso 182
8.2.3. Implementación del software 185
8.3. RESULTADOS OBTENIDOS 187
9. CONCLUSIONES 188
10. FUTURAS MEJORAS 190
BIBLIOGRAFÍA 191
�ANEXOS 194
� � ��
LISTA DE FIGURAS
Pág.
Figura 2.1: Sistema Péndulo Invertido Simple 20
Figura 2.2 Sistema Péndulo Invertido Doble 28
Figura 2.3: Vectores que determinan la posición del diferencial de masa del péndulo 1 30
Figura 2.4: Vectores que determinan la posición del diferencial de masa del péndulo 2 31
Figura 2.5: Implementación del Modelo No Lineal del Péndulo Simple en Simulink 46
Figura 2.6: Respuesta Natural del Sistema Péndulo Simple 47
Figura 2.7: Implementación del Modelo No lineal del Péndulo Doble en Simulink 49
Figura 2.8: Subsistema Funciones 50
Figura 2.9: Subsistema Complementario del Modelo 50
Figura 2.10: Respuesta Natural del Sistema Péndulo Doble 52
Figura 4.1: Péndulo Invertido Feedback 33-005-2M5 64
Figura 4.2: Péndulo Invertido Googol Tech GLIP2002 65
Figura 4.3: Péndulo Invertido Quanser IP01 66
Figura 4.4: Péndulo Invertido Universidad Lakehead (Canadá) 66
Figura 4.5: a) Caja negra y b) Descomposición funcional 73
Figura 4.6: Árbol de clasificación Aceptar energía externa 76
Figura 4.7: Árbol de clasificación convertir energía a fuente de fuerza 77
Figura 4.8: Árbol de clasificación Aplicar fuerza al péndulo 77
Figura 4.9: Árbol de clasificación Sensar movimiento 78
Figura 4.10: Combinación de conceptos 80
Figura 4.11: Concepto A 81
Figura 4.12: Concepto B 82
Figura 4.13: Concepto C 83
Figura 4.14: Concepto D 84
Figura 5.1: Esquema del producto 93
Figura 5.2: Agrupación de elementos funcionales 94
Figura 5.3: Distribución geométrica (layout) 95
Figura 5.4: Interacciones fundamentales 96
� ����
Pág.
�Figura 5.5: Interacciones incidentales 97
Figura 5.6: Representación visual de la dominación del producto 100
Figura 5.7: Primer esquema del elemento soporte 102
Figura 5.8: Segundo esquema del elemento soporte. 103
Figura 5.9: Tercer diseño del elemento soporte 104
Figura 5.10: Esquema final del elemento soporte. 105
Figura 6.1: Esquema general del U.M.S 106
Figura 6.2: Subconjunto montaje motor-sensor 108
Figura 6.3: Subconjunto carro 109
Figura 6.4: Subconjunto péndulos 110
Figura 6.5: Subconjunto tensor 111
Figura 6.6: Subconjunto estructura 112
Figura 6.7: Sistema mecánico completo 112
Figura 6.8: Parámetros de selección de la correa dentada 113
Figura 6.9: Principio del doble apoyo para ubicación de sensores. 115
Figura 6.10: Principales requerimientos del sistema electrónico 116
Figura 6.11 Requerimientos de fuerza del sistema 118
Figura 6.12 Fuente de alimentación regulada ± 30 v. 124
Figura 6.13 Fuente Regulada 5 v. 125
Figura 6.14 Amplificador de voltaje 126
Figura 7.1: Descripción de las diferentes zonas de movimiento del péndulo 131
Figura 7.2: Regulador lineal por LQR 133
Figura 7.3: Regulador diseñado para el péndulo doble 148
Figura 7.4: Esquema en Simulink del control por realimentación del estado 150
Figura 7.5: Respuestas del sistema para x0 = 0 y Angulo0 =30º 151
Figura 7.6: Respuesta del sistema para x0 = 0 y Angulo0 =20º 152
Figura 7.7: Respuesta del sistema para condiciones iniciales lejanas de la zona lineal 153
Figura 7.8 Respuesta del sistema para condiciones para X0 diferente a cero 153
Figura 7.9: Respuesta de las variables de control ante prueba fallida 154
� ����
Pág.
�Figura 7.10: Cambio en el controlador para hacer que siga referencia en x 155
Figura 7.11: Resultados del regulador 155
Figura 7.12 Implementación en Simulink del controlador CMD 156
Figura 7.13 Controlador CMD si c=1 con ángulo = 20º 157
Figura 7.14: Controlador CMD si c=1 con ángulo = 31º 157
Figura 7.15: Controlador CMD si c=1 con ángulo = 58º 158
Figura 7.16: Controlador CMD si c=1 con ángulo = 59º 159
Figura 7.17: Controlador CMD si c=2 con ángulo = 20º 160
Figura 7.18: Controlador CMD si c=2 con ángulo = 30º 160
Figura 7.19: Controlador CMD si c=2 con ángulo = 69º 161
Figura 7.20: Controlador CMD si c=2 con ángulo = 70º 161
Figura 7.21: Controlador CMD si c=3 con ángulo = 20º 162
Figura 7.22: Controlador CMD si c=3 con ángulo = 69º 163
Figura 7.23: Implementación de la estrategia de control ecuación (7.50) 163
Figura 7.24: Controlador CMD con corrección de Chattering para ángulo =20º 164
Figura 7.25 CMD con corrección de Chattering para ángulo =59º 165
Figura 7.26 CMD con corrección de Chattering para ángulo =60º 165
Figura 7.27 Señal de voltaje para controlador CMD con corrección 166
Figura 7.28: Montaje de la ley de control del Swing Up 167
Figura 7.29: Esquema completo del Swing Up 167
Figura 7.30: Posición del Carro (x) (Metros) 168
Figura 7.31: Posición Angular (Grados) 168
Figura 7.32: Velocidad angular del péndulo (rad/seg). 168
Figura 7.33: Esfuerzo de Control (Voltios) 169
Figura 7.34: Esquema Final para Control del Péndulo Simple 170
Figura 7.35: Esquema del Bloque Switche para 30 y 35 grados 170
Figura 7.36: Posición del Carro con el Control Final (Metros) 171
Figura 7.37: Posición Angular (�) (Grados) 171
Figura 7.38: Esfuerzo de Control (Voltios) 172
� ����
Pág.
�Figura 7.39: Implementación del Controlador en Simulink 173
Figura 7.40: Graficas de la prueba 1 174
Figura 7.41: Graficas de la Prueba 2 175
Figura 7.42: Graficas de la prueba 3 176
Figura 7.43: Esfuerzo de Control para las tres pruebas 177
Figura 7.44: Resultados prueba 4 178
Figura 8.1: Diagrama de Casos de Uso 181
Figura 8.2: Implementacion del software 186
� ����
LISTA DE TABLAS
Pág.
Tabla 2-1: Descripción y símbolos usados en el modelamiento del péndulo 21
Tabla 2-2: Descripción y símbolos usados en el modelado del péndulo doble 29
Tabla 2-3: Valores simbólicos de las constantes hi 37
Tabla 2-4: Cambios en definición de constantes 38
Tabla 2-5: Tabla de constantes para los elementos de la matriz H-1 42
Tabla 2-6: Valores numéricos de los parámetros del sistema péndulo invertido. 45
Tabla 2-7: Valores numéricos para los parámetros del sistema péndulo doble. 48
Tabla 4-1: Listado de planteamiento de usuarios 59
Tabla 4-2: Interpretación de necesidades 59
Tabla 4-3: Jerarquía de necesidades. 60
Tabla 4-4: Importancia relativa de las necesidades de los usuarios del UMS 61
Tabla 4-5: Listado de métricas del UMS a partir de necesidades de usuarios 63
Tabla 4-6: Benchmarking basado en la satisfacción de las necesidades de los clientes 68
Tabla 4-7: Evaluación de métricas con otros productos 69
Tabla 4-8: Establecimiento de valores ideales y marginales 70
Tabla 4-9: Especificaciones preliminares 71
Tabla 4-10: Matriz de tamizaje de conceptos 87
Tabla 4-11 Matriz de Evaluación de conceptos 88
Tabla 8-1 Requerimientos del sistema 180
Tabla 8-2 Caso de uso seleccionar configuración 182
Tabla 8-3 Caso de uso generar configuración 183
Tabla 8-4 Caso de uso graficar variables 183
Tabla 8-5 Caso de uso establecer condiciones 184
Tabla 8-6 Caso de uso prototipo 184
Tabla 8-7 Caso de uso simulación 185
� ����
LISTA DE ANEXOS
Pág.
ANEXO A: DIAGRAMAS DE ENSAMBLE Y PLANOS MECANICOS 194
ANEXO B: INFORME IFAC 243
ANEXO C: HOJAS DE ESPECIFICACIONES TÉCNICAS 255
ANEXO D: CODIGOS FUENTE DE PROGRAMAS 264
ANEXO E: MANUAL DE USUARIO 323
� ����
RESUMÉN � El presente informe enmarca las etapas de diseño que se han llevado a cabo para el
desarrollo del proyecto de iniciación a la investigación que se expone. La concatenación
de capítulos que se propone, se hace con el fin de organizar la extensa información
obtenida y generada a lo largo del proceso, pero es claro que este es iterativo y que la
conclusión de muchos capítulos son el resultado de la sobre posición en el tiempo de
diversas etapas.
En el capitulo dos se hace el modelado de las plantas péndulo invertido simple y doble,
donde se tienen en cuenta no linealidades que son seleccionadas a partir de catálogos
luego de la etapa de diseño detallado y se hace una validación rápida del comportamiento
del sistema.
El capitulo de planeacion del producto, tiene como principal objetivo dar a conocer el
planteamiento del mismo, donde se asumen premisas y restricciones que serán tenidas
en cuenta a lo largo del proyecto. El capitulo cuatro esta dedicado a la etapa de desarrollo
conceptual, en ella se establecen las necesidades del cliente, y con estas siguiendo una
metodología estructurada de diseño, se obtienen las especificaciones preliminares del
sistema a diseñar, que enmarcan desde el punto de vista técnico todas las necesidades
obtenidas, haciéndolas medibles o tangibles para el equipo de diseño. Con base en estas
métricas y con un modelo de caja negra del sistema, donde de forma muy básica, se
describe el funcionamiento de la planta, se entra a la fase de generación y selección de
conceptos donde a partir de tecnologías disponibles se obtiene un concepto del sistema.
El capitulo cinco aborda la etapa de diseño a nivel de sistema. Primero se establece la
arquitectura del producto, hallando las interacciones que pueden afectar el diseño, para
luego pasar a establecer la dominación del diseño industrial del mismo, etapa que
precede y determina decisiones tomadas durante el diseño para manufactura, donde se
toma la decisión de la disposición final del sistema
� ����
El capitulo seis se dedica al diseño detallado del UMS, en este se hace referencia al
diseño mecánico y al tipo de circuitos eléctricos que se usaran en el desarrollo del equipo,
teniendo en cuenta para esto los resultados obtenidos a partir del control del sistema.
Solo hasta este momento se establecen dimensiones y se asignan los materiales finales
con los que se va a construir el prototipo físico.
El capitulo siete se presenta el diseño de controladores para las dos configuraciones que
tendrá el UMS. En primera instancia se adicionan al modelo obtenido en el capitulo dos el
actuador seleccionado. El diseño de controladores para el sistema péndulo simple,
contempla controladores por realimentación del estado diseñado a través del control
óptimo cuadrático LQR, control por modos deslizantes y una estrategia conmutada para el
levantamiento del sistema. El sistema péndulo invertido doble es controlado en la zona
lineal (± 20º) por un regulador LQR por realimentación del estado.
Finalmente en el capitulo ocho se describe el diseño del prototipo virtual, para el cual se
tienen en cuenta los capítulos mencionados anteriormente. En un primera instancia se
sigue una metodología de POO (programación orientada a objetos), esto con el fin de
realizar un bosquejo del comportamiento requerido así como encontrar un modo eficiente
de implementar el software. Por ultimo se describen las principales características de la
implementación del prototipo en un programa orientado a eventos como lo es Visual
Basic, con su herramienta DirectX. En los anexos del trabajo se presenta el código
utilizado.
� ���
INTRODUCCIÓN
�En el desarrollo de este trabajo de iniciación a la investigación se expone el diseño y
control de una planta que pueda configurarse como péndulo invertido simple y doble la
cual a lo largo del presente informe se llamara UMS (Underactuated Mechanical system).
El péndulo invertido es un sistema clásico en problemas de control, y su propósito es
estabilizarlo en su punto de equilibrio inestable. El sistema péndulo invertido doble es una
extensión del anterior y el objetivo de control al igual que en el péndulo simple es
estabilizar ambas barras en la posición vertical mientras se mantiene la posición deseada
en el carro. La dificultad en controlar el péndulo invertido doble es que se trata de un
sistema caótico por naturaleza, lo que indica que ante pequeños cambios en las
condiciones iniciales, la respuesta a lo largo del tiempo varía fuertemente. Luego es
extremadamente difícil controlar el sistema si no es posible predecir acertadamente el
movimiento de los péndulos.
Los sistemas péndulo simple y doble hacen parte de una clase de sistemas mecánicos
llamado sistemas mecánicos subactuados, en los que se cuentan con menos entradas
que grados de libertad, y el control de sistemas de esta naturaleza es actualmente un
campo muy activo de investigación, sobretodo por sus aplicaciones en robótica, vehículos
aeroespaciales y vehículos marinos. Los ejemplos de sistemas mecánicos subactuados
incluyen robots móviles, robots caminantes, sistemas de locomoción, aerodeslizadores,
satélites entre otros.
El diseño y control de los péndulos invertidos requiere un gran numero de pasos, primero
debe ser obtenido un modelo matemático, y después la etapa de diseño mecánico y
eléctrico del sistema se debe concatenar con la del desarrollo de una estrategia de control
adecuada , para esto se propone la metodología de diseño mecatrónico, con el fin que
desde el punto de vista de la ingeniería concurrente se aborde este problema de diseño y
se logre obtener un sistema adecuado a las necesidades de la universidad.
� ���
Con el presente trabajo también se incluye el desarrollo de un prototipo virtual del
sistema, diseñado de modo que es posible observar el desarrollo de estrategias de control
en la planta antes de implementarse en el prototipo físico
Los prototipos virtuales permiten una visualización muy cercana la realidad de prototipos
físicos; debido a esto se utilizan para el monitoreo de plantas a distancia, en las cuales la
presencia física de un operario podría ser peligrosa. El desarrollo de prototipos virtuales
en 3D es de gran importancia debido a que representa la posibilidad de implementar
sistemas mecánicos interactivos (prototipado virtual) sin necesidad de construcción física,
consiguiendo con ello reducción de costos y de tiempo. Además debido a los
inconvenientes con la transmisión de video a través de Internet (La velocidad de la
transmisión), estos prototipos son una herramienta fundamental para el desarrollo de
laboratorios virtuales.
�
Se espera que el desarrollo de este trabajo inicie todo un campo de investigación sobre
este tipo de sistemas en la Universidad que como se ha expuesto es altamente estudiado
en diversos centros tecnológicos del mundo entero, además sus resultados pueden ser
aplicados en diversas ramas que competen a muchos programas académicos enseñados
al interior de la institución.
�
�
�
�
�
�
�
�
�
�
�
�
� ����
1. OBJETIVOS
1.1 OBJETIVO GENERAL.
• Diseñar, controlar y simular un péndulo invertido traslacional, con la posibilidad de
configurarse como péndulo simple y doble, de modo que se puedan implementar
diferentes estrategias de control.
1.2 OBJETIVOS ESPECIFICOS.
• Diseñar el sistema: configuración, dimensiones, materiales, selección de
actuadores, sensores, drivers, acondicionamiento de señales etc.
• Desarrollar un prototipo virtual 3D interactivo en DirectX; el cual permita ingresar
las estrategias de control y realizar simulaciones, para comprobar la funcionalidad
del controlador antes de realizar cualquier prueba en la planta real.
• Presentar el informe final del trabajo con la debida fundamentación matemática y
haciendo énfasis en los métodos y herramientas matemáticas utilizadas.
• Probar diferentes estrategias de control
• Determinar el estado del arte y los problemas en el control de un sistema no lineal,
en general y de un péndulo invertido traslacional en particular.
• Construir el prototipo físico modular de forma que permita configurar el sistema de
diferentes de modos en nuestro caso simple y doble, con cambios muy pequeños
en su estructura.
� ����
2. MODELAMIENTO Y ANALISIS MATEMÁTICO
El modelo matemático es un conjunto de ecuaciones dinámicas que proveen una
adecuada descripción para el movimiento de un sistema en particular. Este modelo es
muy importante cuando se intenta diseñar un controlador para estabilizar el sistema,
además es fundamental para la etapa de modelado en Directx que se desarrolla en el
capitulo 8. El modelo matemático del péndulo simple y doble se discute en las secciones
de este capitulo
En general a lo largo de este capitulo se trabaja el modelo matemático del péndulo simple
y el péndulo doble, en dos partes, la primera consiste en encontrar el sistema de
ecuaciones no lineales usadas para representar el sistema, y la segunda se centra en
tomar dichas ecuaciones no lineales y linealizarlas para aplicar técnicas de control
lineales
2.1. PÉNDULO SIMPLE
Figura 2.1 �Sistema Péndulo Invertido Simple
� ����
Los símbolos utilizados para el modelamiento se definen en la siguiente tabla
Tabla 2-1: Descripción y símbolos usados en el modelamiento del péndulo �
Símbolo Descripción Unidad M Masa del carro Kg. m Masa del péndulo Kg. c Constante de fricción entre carro - pista N/m/s. b Constante de fricción entre péndulo - carro N/m/s. L Longitud total del péndulo m I Inercia del péndulo Kg./m2
g Gravedad m/s2
� Angulo de posición del péndulo Rad. F Fuerza aplicada al carro N
2.1.1 Modelo no lineal. El péndulo invertido hace parte de los sistemas subactuados,
pues tiene un solo actuador y dos grados de libertad, el desplazamiento horizontal del
carro (x) y el ángulo de rotación con respecto a la vertical (�). La dirección positiva del
desplazamiento del carro es hacia la derecha y la rotación es positiva en el sentido de
giro de las manecillas del reloj.
La herramienta utilizada para el análisis dinámico fue el método de Energías de
Lagrange.
�
��
�
�
�
�
�
��
� =∂
∂−���
�
�
���
�
�
∂
∂•
L = T-V
Donde T es la energía cinética, V es la energía potencial, q es el mínimo número de
coordenadas necesario para describir el sistema que en el caso tratado se refiere a los
(2.1)
(2.2)
� ����
dos grados de libertad, finalmente L conocido como el lagrangiano es la resta de la
energía cinética y la potencial.
A continuación se obtendrán las expresiones para la energía cinética y potencial de cada
componente del sistema, y así aplicar la ecuación de Lagrange, para obtener las
ecuaciones diferenciales que caracterizan la dinámica del sistema.
Para el Péndulo
• Energía Cinética ��
��
�
�
�
� •+= θ��� �
Donde � es la velocidad del centro de masa de la barra, la posición del centro de
masa esta dada por:
( ) ( )∧∧∧
��
���
�+��
���
� += ���������� θθ ����
�
�
�
Entonces la velocidad será:
( ) ( )∧•∧••
∧∧
��
���
�−+��
���
� +== ����������
��
�� θθθθ
�
����
�
�
Por lo tanto la energía cinética del péndulo será:
( ) ( ) ( )��
���
���
�
�
�
����
�
����
�
� ••••••+��
�
����
�+++= θθθθθθθ ����������
Simplificando la expresión nos queda:
( )��
�
�
�
�
�
����
�
� •••••+���
����
�++= θθθθ ������
(2.3)
(2.4)
(2.5)
(2.6)
(2.7)
� ����
• Energía Potencial �
( )���
��� � =
Para el Carro
• Energía Cinética � �
�
� •= ���
• Energía Potencia
�=
La Energía Cinética de todo el sistema será la suma de la Energía Cinética del Péndulo
mas la del Carro.
( )��
�
��
�
�
�
����
�
�
�
� ••••••+���
����
�+++=
+=
θθθθ �������
����
La Energía Potencial de todo el sistema será solamente la energía del Péndulo.
( )���
��� =
Utilizando las ecuaciones (2.11) y (2.12) el Lagrangiano se puede escribir así:
( ) ( )θθθθθ ����
�
�
�
�
����
�
�
�
���
�
��
��������� −+���
����
�+++=
••••••
(2.8)
(2.9)
(2.10)
(2.11)
(2.12)
(2.13)
� ����
Ecuación General de Lagrange
�
�
�
�
�
��
� =∂
∂−���
�
�
���
�
�
∂
∂•
Para la posición (x)
�
�
�
�
�
��
� =∂
∂−��
�
�
��
�
�
∂
∂••
( )••••
−=−��
���
� ++ ����������
�������
�
� θθ
( ) ( ) ( ) ������
�
�
��
����������� =++−+••••••
θθθθ
Para el Angulo (�)
( ) ( ) ( )••••••
−=��
���
� +−−��
���
� ++ θθθθθθθ ����������������
�
�
�
�
�
�
����
�
� �
( ) ( ) ��
����
�
�
�
� � =+−+��
���
� +•••••θθθθ ���������
Reescribiendo las dos ecuaciones para (x) y para (�) tenemos:
( ) ( ) ( ) ����������������
��������
�
�������
�
=++−+••••••
(2.14)
(2.15)
(2.16)
(2.17)
(2.18)
(2.19)
(2.20)
� ����
( ) ( ) �������������
����������
�
�����
�
�� � =+−+�
�
���
� +•••••
2.1.2 Linealización del modelo matemático. La linealización se efectúa cuando el
péndulo se encuentra muy cercano a su posición de equilibrio inestable (� = 0º). La
linealización de las ecuaciones (2.20) y (2.21) se realizan mediante aproximaciones de
series de Taylor, para ángulos muy pequeños se obtienen estas aproximaciones
θθ ≈������ ������ ≈θ ��
≈•θ
Las ecuaciones resultantes del proceso de linealización son:
( ) ������������
������ =+++
•••••
���������
�����
�
�����
�
�� � =+−+�
�
���
� +•••••
θ
2.1.3 Representación en el espacio de estados. La representación en el espacio de
estados brinda cierta facilidad para diseñar sistemas reguladores, los cuales se utilizan
cuando el péndulo esta en la región cercana al equilibrio inestable.
La representación en el espacio de estados hace parte de la teoría de control moderno,
este enfoque se basa en el concepto de estados y se realiza en el dominio del tiempo.
Tener un modelado en el espacio de estados brinda ciertos beneficios, como facilidad
para trabajar sobre sistemas complejos de múltiples entradas y múltiples salidas, además
mediante sus variables de estado se logra describir por completo el comportamiento de un
sistema dinámico y así observar si es posible controlarlo.
(2.21)
(2.22)
(2.23)
(2.24)
� ����
Un sistema lineal en el espacio de estados se representa mediante las siguientes
ecuaciones:
����� +=•
����� +=
Para hacer esta representación se hace uso de las ecuaciones linealizadas (2.23) y (2.24)
y así obtener la matriz de estados (A), la matriz de entrada (B) y la matriz de salidas (C) y
haciendo.
� ���=
��! ���=
�� �" +=
�
��# +=
Las ecuaciones (2.23) y (2.24) se transforman en:
������������ =++•••••
"
��������� =+−+•••••
θ! #
Despejando de la ecuación (2.32) se tiene:
#
� �!•••
•• −−= θθθ
Reemplazando (2.33) en (2.31) resulta
�
��
"#
� !��#�#��
−+−−=
•••• θθ
(2.25)
(2.26)
(2.27)
(2.28)
(2.29)
(2.30)
(2.31)
(2.32)
(2.33)
(2.34)
� ���
De (2.34) se reemplaza en (2.33), se tiene
••••
���
����
�+��
�
����
�−��
�
����
�+−��
�
����
�+= �
�
���
�
�
$
#!
$
#��
�� ��
θθθ
Donde se tiene
P = # "# �� −
Q = � "# −
Ahora para la representación en variables de estado se tiene:
••==== ������ ���� ������ � ����
••••••••••====== ����� ������ ����� ��� ������
Teniendo las variables de estado organizadas se procede a formar la matriz de estados
(A), la matriz de entradas (B) y la matriz de salidas (C).
[ ]��
�
�
�
�
�
�
���
����
�
����
�
�
�
�
��
��
�
�
#
�
�
�
�
�$
#!
$
#�
�
�
� �
!
�
#�
�
�
�
�
⋅
�����������
�
�
�
−
+
��������
�
�
�
⋅
�����������
�
�
�
⋅���
����
�+−⋅��
�
����
�+
⋅⋅−⋅−
=
������������
�
�
�
•
•
•
•
En la matriz (C) las salidas de interés son la posición lineal (x) y la posición angular �)
(2.35)
(2.36)
(2.37)
(2.38)
� ���
[ ]��
�
�
�
�
�
�
�
�
����
������
�
�
�
�
% ⋅
����
�
�
�
+
����
�
�
�
⋅��
�
�=
2.2 PÉNDULO DOBLE
El péndulo doble generalmente es descrito como un sistema no lineal1. El objetivo
fundamental del sistema es estabilizar ambos péndulos en la posición vertical, y la
dificultad radica en que es un sistema subactuado donde se tienen tres grados de libertad
y solo una entrada de control. En la figura 2.2 se presenta el modelo físico que se usara
para obtener el modelo matemático del sistema.
Figura 2.2 Sistema Péndulo Invertido Doble
�������������������������������������������������1�COWAN, Jeffrey; ERICKSON, Chris y ZLATANOVIC, Andrej. “Computer Based State Feedback Control of a
Double Inverted Pendulum”, 2004. p 79. Trabajo de Grado (ingeniero electrico). Lakehead University. Facultad de Ingenierias. �
(2.39)
� ����
Para describir matemáticamente el sistema contenido en la figura 2.2 es necesario definir
cierto número de elementos que se presentan en la tabla 2.2, en la que se muestran las
convenciones seguidas para el modelado matemático.
Tabla 2-2: Descripción y símbolos usados en el modelado del péndulo doble �
Símbolo Descripción Unidades M Masa del carro kg
m1 Masa del péndulo 1 kg m2 Masa del péndulo 2 kg me Masa de la unión entre péndulos kg L1 Longitud del péndulo 1 m L2 Longitud del péndulo 2 m Xc Posición del carro m �1 Posición angular del péndulo 1 rad �2 Posición angular péndulo 2 rad �3 Suma de posiciones angulares 1 y 2 rad G Constante gravitacional m/s2 F Fuerza de control aplicada al carro N
2.2.1 Modelo no lineal. Aplicando el método de Lagrange expresado en la ecuación
(2.1), se procede a calcular la energía cinética y potencial total del sistema, teniendo en
cuenta las siguientes definiciones para las energías:
= ��� �
�
�
= dmrgV z
Donde v es la velocidad lineal del elemento diferencial de masa, rz es el vector posición
del elemento diferencial de masa, y dm es el elemento diferencial de masa del elemento
al que se le están calculando la energía.
Como es claro del conjunto de ecuaciones (2.40) y (2.41) es necesario obtener una
definición del vector posición de los diferenciales de masa de cada uno de los elementos
que compone el sistema como se ilustra a continuación.
(2.40)
(2.41)
� ����
Vectores posición y velocidad para los péndulos
• Péndulo 1
De acuerdo a la figura 2.3 el diferencial de masa dm del péndulo 1 se define con respecto
al sistema de coordenadas con respecto al que se realiza el modelo del sistema mediante
el vector ����
, al derivarlo se obtiene el vector velocidad.
Figura 2.3: Vectores que determinan la posición del diferencial de masa del péndulo 1
De la figura 2.3 se tiene que:
( ) jaiasenxr cLˆcosˆ)( 111 θθ +�
�
���
� +=�
Donde a se define como el la magnitud del vector que define la posición del diferencial de
masa dm a lo largo de la barra que forma el péndulo, y �! e �! representan los vectores
unitarios en dirección de los ejes coordenado x e y.
A partir de de la ecuación (2.42) se obtiene el vector velocidad derivando con respecto al
tiempo.
(2.42)
(2.43)
� ����
( ) ( ) jaiaxr cLˆsinˆ)cos( 11111 θθθθ ����� −+=
Donde la magnitud del vector velocidad representa la rapidez como se expresa en 2.44
( )( ) ( )211
2
1112 )sin(cos θθθθ ��� aaxV cL ++=
• Péndulo 2
Al igual que el procedimiento seguido para obtener el vector posición y la velocidad del
diferencial de masa del péndulo 1, se efectúa un procedimiento similar con el segundo
péndulo de modo que la representación se muestra en la figura 2.4.
Figura 2.4: Vectores que determinan la posición del diferencial de masa del péndulo 2
De la figura 2.4 se establece:
( ) ( ) �&��&������ ��!����������!��"���� ������� θθθθ ++++=�
( ) ( ) �&��&��� �� ��"����"��!����������!����������� θθθθθθθθ ������ −−+++=
( ) ( )�
�����
�
������� ��"����"������������ θθθθθθθθ ����� &�&�� �� ++++=
Donde �� es la magnitud del vector velocidad del diferencial de masa del péndulo 2.
(2.44)
(2.45)
(2.46)
(2.47)
� ����
Energía cinética del sistema
La energía cinética total del sistema está definida por la suma algebraica de la energía de
cada uno de los componentes del sistema:
�� $���'(�$���'(��&������(�$���'(� ���� ++=
• Energía cinética del carro
cCarro MxT 2
21=
• Energía cinética para el péndulo 1
Teniendo en cuenta 2.40, y 2.44 la energía cinética del péndulo 1 se plantea así:
( )[ ] 112
1222
111 )(sin)cos(21
dmaaxTPendulo ++= θθθθ ���
Ahora teniendo en cuenta que la masa puede expresarse como � ⋅= µ , donde µ es
la densidad lineal de masa y L es la longitud es claro como el diferencial de masa se
puede expresar como se muestra en 2.28
�(�
� =
Ahora de (2.51) en (2.50)
[ ]
( ) 121
2
11112
11
1
01
2211
2
1
11
321
)cos(21
)cos(221
θθθ
θθθ
����
����
LmLxxmT
dlaaxxLm
T
Pendulo
L
Pendulo
++=
++=
(2.48)
(2.51)
(2.52)
(2.53)
(2.49)
(2.50)
� ����
• Energía cinética para el péndulo 2
A partir de (2.40), (2.47), y (2.51) la energía cinética se plantea como se expone en
(2.54).
[ ]
[ ]
( ) ( )[ ]
��
�
�+++
+++=
++
++=
))cos()(cos(3
)sin()sin(21
)cos()sin()cos(21
)sin()sin(
)cos()cos(21
111332322
2
3131122
332
2
111
2
11122
22
033111
2
2
22
0 332
1112
22
θθθθθθθθθ
θθθθθθ
θθθθ
θθθθ
�����
�����
��
���
LLL
LLm
xLLLxmT
daaLLm
daaLxLm
T
cPendulo
L
L
Pendulo
Energía Potencial del sistema
La energía potencial total del sistema esta definida por la suma algebraica de la energía
de cada uno de los componentes del sistema:
�� $���'(�$���'(����(�$���'(� ��� +=
• Para el péndulo 1
A partir de 2.41 y 2.51 se expresa la energía potencial como se muestra abajo
)cos(21
)cos(
1111
1
0 11
11
θ
θ
gLmU
daaLm
gU
Pendulo
L
Pendulo
=
⋅=
• Para el péndulo 2
A partir de 2.41 y 2.51 se expresa la energía potencial como se muestra abajo
(2.54)
(2.55)
(2.56)
(2.57a)
(2.57b)
� ����
[ ]
��
���
� +=
⋅+=
)cos()cos(2
)cos()cos(
1132
22
2
0 1132
22
θθ
θθ
LL
gmU
daLaLm
gU
Pendulo
L
Pendulo
Calculo del lagrangiano
A partir de la ecuación 2.2 y de las ecuaciones de energía de cada componente del
sistema se obtiene el lagrangiano del sistema.
��
�
� +−−
��
�
�+++
��
�
� +++
+++=
�����������
������
�
�����"��
���"���
�
�
������
������
�
��
�������
�
�
�
�
����
����
���
��
���
����
�
���
����
��
��
����
�
�
�
θθθ
θθθθθ
θθθθ
θθθ
��
���
���
���
�������
��
���
����
Para usar la ecuación de Lagrange (Ver Ecuación 2.1) Las matrices �� y �� deben ser
determinadas. Para el Péndulo invertido doble estas matrices se muestran a continuación
���
�
�
�
=���
�
�
�
=00Q y i
3
1
Fxq
c
i
θθ
Como se observa en las ecuaciones 2.60, las coordinadas que describen el sistema son
�) , �θ y �θ . Como hay tres diferentes coordinadas generalizadas o grados de libertad, La
ecuación de Lagrange debe ser aplicada para cada una de estas coordenadas, haciendo
(2.58 b)
(2.58 a)
(2.59)
(2.60)
� ����
esto obtenemos tres ecuaciones lineales. La solución de la ecuación de Lagrange para
cada una de las coordenadas se expone a continuación:
Para �� = x
( ) ( )
( ) ��
����
=−+
��
���
� +−+++
��"��������
�
�
���"�������
���
����
�������
����
θθθθ
θθθθ
���
�����
Para �� = �θ
( )
���"���
�
��"��������
������
�
�
�����
����
����
��
���
�
��
������
=��
���
� +−
−+−+
���
����
�++�
�
���
� +
θ
θθθθθθ
θθ
����
��
��
���
���
����
Para �� = �θ
���"���
��"���
�
������
�
�
������
�
�
��
�����
���
���������
����
=−−−
−++
θθθθ
θθθθθ
����
�����
�
������
Finalmente tenemos que el conjunto de ecuaciones diferenciales que describen el sistema
es:
�****�* � =−−++••••••••
�
�
���
�
��������� �"��"������� θθθθθθθθ
( ) ( ) ��"��"������� ����
�
���������� =−−+−++•••••••
θθθθθθθθθ ****�* �
(2.61)
(2.62)
(2.63)
(2.65)
(2.64)
� ����
( ) ( ) ��"��"������� ���
�
��������� =−−−−++•••••••
θθθθθθθθθ ****�* �
Esta serie de ecuaciones representan el modelo del sistema en la figura 2.2, además
como el ángulo del segundo péndulo en un modelo real es medido relativo al primer
péndulo, las ecuaciones se deben representar en términos de �θ en lugar de �θ esto se
logra observando que ��� θθθ −= . Reescribiendo las ecuaciones (2.64) a (2.66), en
términos de �θ se tiene.
( ) ( ) �****�* � =+��
���
� +−−+��
���
� +++•••••••••••
��
�
����
�
����������� �"��"������� θθθθθθθθθθθθ
��"��"������� ���
�
����������� =−��
���
� +−��
���
� +++••••••••••
θθθθθθθθθ ****�* �
( ) ( ) ��"��"������� ���
�
���������� =+−++��
���
� +++•••••••••
θθθθθθθθθθ ****�* �
Con este conjunto de ecuaciones ya se tiene descrito el comportamiento dinámico del
sistema de modo que ahora ya es posible diseñar y simular controladores para este, el
paso a seguir es incluir dentro de este la dinámica del motor, pero este paso se muestra
en el capitulo dedicado a las estrategias de control puesto que solo hasta ese momento
es posible completar el modelo pues en la fase de diseño detallado (Ver capitulo 5), se
define el sistema de transmisión que afecta la dinámica del sistema.
Las constantes incluidas en las ecuaciones (2.64) a (2.69) se exponen el la tabla 2.3.
(2.66)
(2.68)
(2.67)
(2.69)
� ���
Tabla 2-3: Valores simbólicos de las constantes hi
Constante Valor
h1 �� � ++
h2 �����
��� +
h3 ���
��
h4 ��
�
��
�
��
�+
h5 ����
���
h6 ���� �����
� +
h7 ��
��
��
h8 �
��
��
2.2.1.1 Cambios en el modelo matemático. En el modelo matemático descrito hasta ahora
se ha asumido que la conexión entre los dos péndulos es hecha a través de un dispositivo
sin masa, o cuya masa es despreciable con respecto a los otros componentes del
sistema; pero en la práctica esto no es cierto, pues este dispositivo de conexión afecta la
dinámica del sistema, así que si se tiene en cuenta esta masa se presentan cambios en
algunas de las constantes presentadas en la tabla 2.3, estos cambios luego de hacer el
respectivo análisis llevado a cabo para cada componente del sistema se ilustran en la
tabla 2.4, donde me es la masa del dispositivo de conexión
� ���
Tabla 2-4: Cambios en definición de constantes Constante Valor
h1 �� +++ ��
h2 ������
����� ++
h4 ��
��
�
��
�
����
�++
h6 ������� �
�����
� ++
De igual manera si se tiene en cuenta las fuerzas disipativas del rozamiento como se hizo
para el modelo del péndulo simple las ecuaciones 2.67 a 2.69 se transforman en:
( ) ( )2
21
2
21112212131121 sin3sincoscos••••••••••••
−=+��
���
� +−−+��
���
� +++ cc xcFhhhhxh θθθθθθθθθθθθ
( ) 21162
2
21522151412 sinsincoscos•••••••••••
−=−��
���
� +−��
���
� +++ θθθθθθθθθθ bhhhhxh c
( ) ( ) 222182
215215217213 sinsincoscos
••••••••••−=�
�
���
� +−++��
���
� ++��
���
� + θθθθθθθθθθθ bhhhhxh c �
Donde c y b representan los coeficientes de rozamiento del carro con su superficie de
desplazamiento, y el de los péndulos respectivamente
2.2.2 Linealización del modelo matemático. El propósito de la linealización es permitir
el diseño de técnicas de control lineal, para aplicarlas al modelo no lineal; y para realizar
la linealización, ciertas aproximaciones deben ser hechas al sistema. El sistema será
linealizado alrededor de su punto de equilibrio inestable es decir, cuando el péndulo esta
en su posición vertical (ángulos �θ y �θ =0), para esto se usaran aproximaciones por
(2.67a)
(2.68a)
(2.69a)
� ����
series de Taylor expresadas en (2.22), lo que produce las ecuaciones linealizadas del
sistema expresadas en 2.70 a 2.74
Fhhhxh c =+++••••••••
2313121 θθθ
���������� =+−++••••••••
θθθθ ****�* �
�������� =−+−++••••••••
θθθθθ *****�* �
2.2.3 Representación en el espacio de estados. Para la representación en el espacio
de estados las segundas derivadas de cada uno de los tres grados de libertad deben ser
despejadas, a partir de las ecuaciones 2.45 a 2.47 despejar sucesivamente o transformar
este conjunto de ecuaciones en una ecuación matricial como se muestra a continuación.
( )���
�
�
�
+=
�����
�
�
�
���
�
�
�
+++
••
••
••
��
��
�
�
��
����
����
θθθ
θ
θ*
*
��
****
****
**** �
Las segundas derivadas pueden ser encontradas si ambos lados de la ecuación 2.48 se
multiplica por la inversa de la matriz de coeficientes así:
( ) ����
�
�
�
+
−
���
�
�
�
+++
=
�����
�
�
� •−
••
••
••
��
��
���
�
��
����
����
�
�
θθθ
θ
θ*
*
�* *
****
****
****��
�
(2.71)
(2.70)
(2.72)
(2.73)
(2.74)
� ����
La inversa de la matriz de coeficientes H se calcula así:
( ) ( )HH
H adjdet
11 =−
Donde el determinante de H se expresa en la ecuación (2.76).
( ) 42
353272
22
51741 2det hhhhhhhhhhhh −+−−=H
Donde la inversa de la matriz H será:
( ) ���
�
�
�
−−+−−+−−+−−−−−−
=−
��
�
��������
�
����������
����
�
�����
�������
�
��
�
#��
�
**********************
***********
***********
��
El determinante de la matriz H debe ser revisado con el fin de evaluar si algún valor hace
que el determinante sea igual a cero. Si este es el caso se debe tener especial cuidado
en el diseño mecánico del sistema con el fin de evitar que esto suceda.
Luego de manipular matemáticamente la ecuación 2.76 es posible demostrar que el
determinante del sistema es:
( ) �
�
�
�
�
�
�
�
�
���
�
�
�
��
�
�
�
�
�
�
�
����
�
�
�
��
�
��
�#�� ���������� +++=�
De donde es claro que como los valores de masas y longitudes son siempre enteros
positivos el determinante será siempre mayor que cero. Este determinante es hallado si
se considera que el centro de masa de los péndulos esta en su centro, pero de no ser así
también es demostrable que el determinante siempre será mayor a cero.
(2.75)
(2.76)
(2.77)
(2.78)
� ����
Ahora que el determinante ha sido revisado si se sustituye el valor de la inversa de la
matriz H en la ecuación 2.74, se obtiene el modelo matricial para las segundas derivadas
así:
( )���
�
�
�
+���
�
�
�
−−−=
�����
�
�
�
••
••
••
218
16
564523
542
321
2
1
θθθ
θ
θh
hF
wwwwwwwwwwwwxc
Donde los valores de las constates wi de la ecuación 2.79 son mostradas en la tabla 2.4;
y si se transforma dicha ecuación a un sistema de ecuaciones, se obtiene la solución para
las aceleraciones de las coordenadas que definen el sistema así:
2831831621 θθθ hwhwhwFwx c +++=••
28518516421 θθθθ hwhwhwFw +++=••
( ) ( ) ( ) ( ) 285618561645232 θθθθ hwwhwwhwwFww −+−+−+−=••
(2.79)
(2.80)
(2.81)
(2.82)
� ����
Tabla 2-5: Tabla de constantes para los elementos de la matriz H-1
Constante Valor Constante Valor
W1 ( )Hhhh
det
2574 −
W4 ( )Hhhh
det
2371 −
W2 ( )Hhhhh
det7253 −
W5 ( )Hhhhh
det5132 −
W3 ( )Hhhhh
det4352 −
W6 ( )Hhhh
det
2241 −
det(H) 42
353272
22
51741 2 hhhhhhhhhhhh −+−−
Ahora que las aceleraciones ya han sido despejadas, la representación en espacio de
estados puede ser realizada, para ello es preciso primero establecer las variables de
estado del sistema así:
26
25
14
13
2
1
•
•
•
=
==
==
=
θ
θθ
θ
x
xx
xxx
xx
c
c
Ahora de acuerdo a las ecuaciones 1.21, 1.22, y 2.80 a 2.82 tenemos las matrices A, B y
C para que la representación en espacio de estados del péndulo doble sea completa.
Las matrices A, B y C se muestran a continuación:
� ����
( ) ( ) ( ) ( ) ��������
�
�
�
−−+−−
+−
+−
=
000100000000001000000000010
856856645932
85856492
83836291
hwwhwwhwwhww
hwhwhwhw
hwhwhwhw
A
( )
���
�
�
�
=
��������
�
�
�
−
=010000000100000001
C ,
0
0
0
1023
102
101
hww
hw
hw
B
�
2.3 VALIDACIÓN DE LOS MODELOS MATEMÁTICOS
El modelo tenido en cuenta hasta el momento tiene como entrada del sistema la fuerza, y
no se ha tomado el actuador del sistema, sin embargo a partir de este momento tanto en
esta sección como en la del analisis de controlabilidad se incorporara al sistema el motor
que actua como fuente de fuerza para el sistema. La documentación de la selección del
motor y su modelado se encuentra referenciada en los capitulos 6 y 7.
Los modelos matemáticos son de gran ayuda para identificar, reconocer y definir
aspectos característicos de un sistema o proceso en el cual se implementara en la
mayoría de los casos algún tipo de estrategia de control. La gran parte de estos sistemas
son de comportamiento no lineal y en algunos casos se pueden realizar aproximaciones
lineales por medio de técnicas de identificación, aunque al realizarse estas se debe tener
en cuenta que se pierden propiedades del sistema, para otros se deben linealizar
analíticamente partiendo como base del modelo no lineal esto al igual que el caso anterior
(2.83a)
(2.83b)
� ����
tiene como consecuencia la perdida de información en la dinámica del sistema para
sectores fuera de los puntos de trabajo alrededor de los cuales se hace la linealización.
Para obtener buenos resultados en el diseño, simulación y posterior implementación de
controladores, es necesario que los modelos matemáticos desarrollados de la planta o
proceso expresen al máximo el comportamiento real de esta y si es posible que reflejen
sus limitaciones, por ello es necesario realizar una validación de los modelos pues este
paso permite que errores en los modelos sean identificados y corregidos.
La validación que se propone en es trabajo es muy sencilla, y consiste en observar la
respuesta natural del sistema, es decir se coloca como entrada cero y se itera con la
posición inicial de los ángulos observando la salida o salidas para analizar si su
comportamiento es parecido a un prototipo físico; pero así mismo es importante tener
amplios conocimientos acerca del sistema para poder certificar y validar los datos
resultante del análisis del modelo matemático.
La respectiva validación de los modelos efectuados anteriormente del péndulo invertido
simple y doble se realiza con ayuda del Simulink de Matlab 6.5, debido a que permite
elaborar fácilmente y de manera confiable los respectivos modelos de las plantas ya
mencionadas.
2.3.1 Modelo Péndulo Invertido Simple. En primer lugar es necesario realizar una
representación numérica del péndulo simple, para esto es preciso, reemplazar los valores
de los parámetros del sistema que se encuentran en los modelos obtenidos hasta ahora
por valores con los que se construirá el sistema. En la tabla 2-6 se muestran los valores
numéricos que se utilizan obtenidos a partir de los valores obtenidos en el diseño
detallado.
� ����
Tabla 2-6: Valores numéricos de los parámetros del sistema péndulo invertido. Símbolo Descripción Valor Unidad
M Masa del carro 0.5 Kg. m Masa del péndulo 128.3 Kg. c Constante de fricción entre carro - pista 0.1 N/m/s. b Constante de fricción entre péndulo - carro 0.001 N/m/s. L Longitud total del péndulo 0.5 m I Inercia del péndulo 0.0107 Kg./m2
g Gravedad 9.81 m/s2
r Radio de la rueda dentada acoplada al motor 0.02 m
Km Constante de Torque 0.0333 Nm/A KG Relación de Reducción 1 --------- Ra Resistencia de Armadura 0.62 �
En la tabla 2-6 los valores de los coeficientes de rozamiento han sido estimados de
acuerdo a información obtenida de los rodamientos utilizados para los acoples tanto
lineales como rígidos de bolas, y en cualquier caso en un sistema real estos pueden variar
y los valores correspondientes a las constantes del motor se encuentran en el catalogo de
este. Los valores de la tabla 2-6 se sustituyen en la representación de espacio de
estados que se presenta a continuación.
������
�
�
�
•
•
•
•
4
3
2
1
x
x
x
x
=
����
�
�
�
−
−−
0584.09933.174225.1301000
0029.08763.09506.700010
.
����
�
�
�
4
3
2
1
xxxx
+ u⋅
����
�
�
�
− 8852.70
6707.40
Teniendo como base el modelo matemático no lineal, y la representación en variables de
estado, se procede a escribir las expresiones debidamente despejadas en Simulink con
ayuda de la herramienta fcn, el cual es un bloque de expresión general donde se utiliza
“U()” como entrada de la variable, en donde se transcriben las expresiones matemáticas
de las ecuaciones.
�2.84��
� ����
La figura 2.5 ilustra la representación del sistema péndulo simple en Simulink, en la cual al
modelo se le ha incluido la dinámica del motor DC como fuente de fuerza, y la entrada del
sistema como consecuencia es el voltaje aplicado al motor.
Figura 2.5: Implementación del Modelo No Lineal del Péndulo Simple en Simulink
Después de tener el modelo de la figura 2.5, para iniciar la validación se debe inicializar
las variables para realizar la previa simulación, se inicializa el ángulo del péndulo con
respecto a la vertical Phi (�) en un grado (1°), la posición lineal del carro (X) en cero, y se
aplica en la entrada un voltaje cero (0), y se simula el sistema con estas condiciones
iniciales para observar la respuesta natural del sistema.
En Figura 2.6 se observa al movimiento que realiza el péndulo cuando se deja caer
desde la posición inicial (1°). Se nota claramente que el péndulo al soltarlo desde su
posición vertical y no tener ningún voltaje aplicado, tiende a su posición de equilibrio
estable (180°) debido a la acción de la gravedad. En este modelo se pueden cambiar
parámetros como las constantes de rozamiento para intentar “sintonizar” el modelo con el
prototipo físico construido.
� ���
Figura 2.6: Respuesta Natural del Sistema Péndulo Simple
��
Tambien se muestra la representación del movimiento que realiza el carro debido a la
acción que ejerce el movimiento pendular sobre él. Se observa que el movimiento del
carro es de un lado a otro casi en forma simétrica alrededor de cero, de acuerdo con la
amplitud de la oscilación que realiza el péndulo, ya que, al final, cuando el péndulo tiende
a quedarse sin movimiento, el carro también debido a la reacción que ejerce el péndulo
sobre este.
De acuerdo a los resultados obtenidos en el sistema y expresado en la Figura 2.6 se
puede concluir que el modelo matemático construido es valido pues expresa las
características dinámicas del sistema que son de interés para los objetivos de control.
� ���
2.3.2 Modelo del Péndulo Invertido Doble. Al igual que en el modelo anterior es
preciso realizar una representación numérica del sistema a fin de caracterizar el mismo y
poder realizar las simulaciones con parámetros obtenidos del sistema físico. En la tabla 2-
7 se ilustran los valores numéricos para los parámetros del sistema péndulo doble. Los
valores de los coeficientes de rozamiento y de las constantes del motor son iguales que
para el péndulo simple
Tabla 2-7: Valores numéricos para los parámetros del sistema péndulo doble. Símbolo Descripción Valor Unidades
M Masa del carro 0.5 Kg
m1 Masa péndulo 1 0.1026 Kg
m2 Masa péndulo 2 0.1026 Kg
L1 Longitud péndulo 1 0.4 m
L2 Longitud péndulo 2 0.4 m
g Gravedad 9.81 m/s2
A partir del modelo no lineal de la planta, y de la definición de las variables de estado, se
realiza la implementación en Simulink del modelo no lineal del péndulo doble pero para
este caso, las ecuaciones que representan a la planta son más complejas que las
anteriores, por lo que se tuvo un hacer un sistema más estructurado y dividido en algunos
subsistemas en la implementación en Simulink.
Como se expresó anteriormente las ecuaciones que definen el sistema no lineal son
bastante complejas y por eso requieren de manipulación matemática para poder ser
implementadas fácilmente en simulink, lo que da como resultado que el modelo se divida
en dos partes o subsistemas que se aprecian en la figura 2.7.
� ����
Figura 2.7: Implementación del Modelo No lineal del Péndulo Doble en Simulink
En el primer subsistema se localizan los bloques Fcn, dentro de los cuales se escriben
las expresiones algebraicas del modelo no lineal del Péndulo Invertido Doble, estos se
muestran el la figura 2.8. Básicamente las expresiones que se muestran en la figura 2.8
son simplemente combinación de las variables de estado que son muy comunes en el
despeje de cada una de estas.
En la figura 2.9 se muestra el otro subsistema se encuentran expresiones y operaciones
algebraicas complementarias que se presenta el modelo no lineal dentro de su
modelamiento matemático. Las expresiones contenidas en este subsistema son
combinación de las expresiones del subsistema funciones.
�
�
�
�
�
�
� ����
Figura 2.8: Subsistema Funciones
Figura 2.9: Subsistema Complementario del Modelo
� ����
Después de la implementación de simulink, se procede a la inicialización de las variables
del sistema, para este caso y como se había realizado con el modelo del péndulo simple,
se analiza la respuesta natural del péndulo inicializando el ángulo del péndulo 1 Phi (�) a
1° con respecto a la vertical, y el ángulo del péndulo 2 Theta (�) en cero con respecto al
péndulo 1, también se procede a inicializar la posición lineal del carro en cero y se aplica
un voltaje nulo en la entrada.
La figura 2.10 muestra como el péndulo 1, partiendo desde su punto de inicialización,
realiza oscilaciones alrededor de su punto de equilibrio estable (180°) y su tendencia a
detener su movimiento se observa en la disminución periódica de su amplitud en cada
oscilación, siendo este comportamiento, el esperado de acuerdo a la dinámica del
sistema. Esta disminución será diferente si se cambian los coeficientes de rozamiento,
pero para el caso actual con el fin de hacer más real el modelo estos son tenidos en
cuenta
Tambien se observa que el péndulo 2, reacciona al movimiento que le produce el péndulo
1, lo cual hace que este realice varias vueltas alrededor de su punto de pivote que se
encuentra en el extremo del péndulo 1, es por ese motivo que el péndulo 2 se estabiliza
en el punto de equilibrio estable (0°) que es equivalente a la posición de 720º que se
puede apreciar en la figura. Es decir que el péndulo 2 se estabiliza formando un ángulo de
0º con respecto a su punto de pivote
Ademas se grafica el movimiento del carro cuando el sistema esta configurado como
péndulo doble, posee un comportamiento muy similar al de la configuración de péndulo
simple, ya que este movimiento es consecuencia de las oscilaciones de los péndulos, lo
que hace que el carro también oscile alrededor de su punto de inicialización, hasta que se
detenga y se estabilice al igual que los péndulos.
�
�
�
�
�
�
�
� ����
Figura 2.10: Respuesta Natural del Sistema Péndulo Doble
En general la Figura 2.10 se valida el modelo construido para el péndulo simple. Es
conveniente aclarar que los resultados aquí consignados son simplemente una parte
resultantes de comprobar el comportamiento del sistema para diversas condiciones
iniciales.
� ����
2.4 ANALISIS DE CONTROLABILIDAD
2.4.1 Péndulo Invertido Simple. Antes de iniciar con el diseño de cualquier
controlador es necesario saber si el sistema es completamente controlable, “se dice que
un sistema es controlable en el tiempo t0 si se puede llevar de cualquier estado inicial x(t0)
a cualquier otro estado, mediante un vector de control sin restricciones, en un intervalo de
tiempo finito.2 Para conocer si el péndulo invertido es controlable se requiere calcular la
matriz de controlabilidad (C0) que se describe a continuación.
C0 = [B � AB � A2B � A3B]
Donde A = n x n Matriz de estados
B = n x 1 Matriz de entradas
A partir de la representación numérica del sistema linealizado expresado en la ecuación
2.84 y 2.85 se tiene que la matriz de controlabilidad del sistema péndulo invertido
traslacional es:
����
�
�
�
−−−−
−−−
=
��������������
����������
���������
������
��
Para conocer si el sistema es completamente controlable se calcula el rango de la matriz
de controlabilidad, y si la matriz C0 es de rango completo (rango = n = 4) significa que el
sistema es completamente controlable.
�
�
�
�������������������������������������������������2 OGATA, Katsuhiko. Ingeniería de control de moderna. 3 ed. México: Pearson, 1998. p.737.
(2.85)
(2.86)
� ����
2.4.2 Péndulo Invertido Doble. Como el controlador que se va a implementar es de
tipo lineal es necesario observar la controlabilidad del sistema antes de diseñar cualquier
tipo de controladores.
La matriz de controlabilidad del sistema péndulo invertido doble se muestra en 2.87, y
con la ayuda de matlab al ejecutar el comando Rank (Co), se obtiene que el rango es
igual a 6, lo que equivale a decir que el sistema es completamente controlable.
��������
�
�
�
−−−−−−−−
−−−−−−
−−
=
������������������������������
����������������������������
���������������������������������
�����������������������������
���������������������������
����������������������
�
���
�
�
Con los analisis de controlabilidad termina este capitulo en el que se ahondado en las
caracteristicas dinámicas del UMS, con el fin de conocer su comportamiento y entrar enla
etapa de diseño mecatrónico que se aborda en los capitulos 3 a 6, y de igual manera con
el analisis de controlabilidad del sistema es posible que en el capitulo 7 se proceda al
diseño de controladores para ambas configuraciones.
(2.87)
� ����
3. PLANEACIÓN DEL PRODUCTO
3.1. JUSTIFICACIÓN Los sistemas mecánicos subactuados son una importante área de investigación en el
campo de la robótica a nivel mundial, debido a que representan la posibilidad de manejar
más grados de libertad con menos actuadores, lo que trae beneficios en costos,
producción y seguridad de futuros sistemas.
Cuando se trabaja con sistemas mecánicos en los que hay igual numero de actuadores
que grados de libertad se debe tener en cuenta que en el momento de presentarse fallas,
el mecanismo tiende a colapsar o a no comportarse de una manera adecuada, debido a
que no está en capacidad de actuar como un sistema subactuado, de modo que es
evidente el estudio de esta clase de dispositivos como una herramienta fundamental para
actuar en estos casos, siendo precisamente en este campo donde se encuentra una de
las principales aplicaciones, y ramas de investigación a nivel mundial, pues implica
ahorros en recursos técnicos, financieros y humanos.
Los sistemas no lineales constituyen un interesante campo de estudio para sistemas de
control, debido a que nos permiten entrarnos en un tema interesante el cual es muy
centrado en la realidad y poco explorado en el ámbito nacional y sobretodo en niveles de
pregrado. Además es posible mostrar como las herramientas matemáticas, usadas de
forma adecuada, pueden ser muy útiles en estas aplicaciones sacando el mejor provecho
para la solución de este tipo de problemas.
Los resultados son de interés académico debido a que servirán como bases para cursos
impartidos en la universidad, tales como control digital, control moderno, sistemas en
tiempo real y sistemas inteligentes.
� ����
Por otro lado los prototipos virtuales permiten una visualización muy cercana la realidad
de prototipos físicos; debido a esto se utilizan para el monitoreo de plantas a distancia, en
las cuales la presencia física de un operario podría ser peligrosa.
El desarrollo de prototipos virtuales en 3D es de gran importancia debido a que representa
la posibilidad de implementar sistemas mecánicos interactivos (prototipado virtual) sin
necesidad de construcción física, consiguiendo con ello reducción de costos y de tiempo.
Además debido a los inconvenientes con la transmisión de video a través de Internet (La
velocidad de la transmisión), estos prototipos son una herramienta fundamental para el
desarrollo de laboratorios virtuales.
La industria Colombiana tiene muchas empresas que no proporcionan el suficiente grado
de automatización requerido para obtener productos de alta calidad que puedan ser
exportados además de que no se ha generado de una manera efectiva en las
universidades grupos fuertes de investigación que estén obteniendo nuevos desarrollos y
que estén impulsando el área de automatización y control una forma más efectiva; y el
desarrollo de proyectos de este tipo posicionan a la universidad como pionera colocándola
a la vanguardia en la región y en el país en generación de tecnología nacional.
3.2. PLANTEAMIENTO DE LA MISIÓN �Descripción del Proyecto
Péndulo invertido traslacional configurable como péndulo simple y péndulo doble, para
desarrollo de prácticas de control automático.
Principales Objetivos del producto
Generar un producto competitivo en sector académico nacional y andino.
• Dotar al laboratorio de una nueva planta para practicas de control avanzado
• Trabajar técnicas de control no convencionales
• Emplear diferentes estrategias de control en las distintas formas de trabajo del
sistema.
• Generar documento con conclusiones del proceso.
� ���
• Desarrollar un dispositivo fiable, robusto y con diseño industrial aceptable.
Premisas y Restricciones
• Costo total para la construcción del dispositivo no debe exceder los $ 5’500.000.
• Fácil mantenimiento y reparación.
• Control por medio del computador utilizando el software Matlab y la tarjeta de
adquisición de datos PCI 1200.
Mercado Primario
• Sector académico, Universidades y centros de educación superior donde se
dicten materias relacionadas con control.
Mercado Secundario
• Grupos de investigación
Partes Implicadas
• Director del proyecto, diseñadores, usuarios, entidad de financiamiento y
proveedores de servicios y suministros
� ���
4. DESARROLLO CONCEPTUAL
4.1 IDENTIFICACIÓN DE NECESIDADES
4.1.1 Recolección de información primaria. Para la recolección de información
primaria se acudió a las principales partes implicadas relacionadas en el planteamiento de
la misión, es así como se recogieron las inquietudes de los usuarios de las plantas que se
encuentran en el laboratorio de automática de la universidad tanto de estudiantes de
semestres superiores que ya tienen identificados falencias y fortalezas en los equipos,
como de estudiantes que apenas inician sus practicas, e igualmente se obtuvieron
valiosos aportes de docentes y el personal encargado de manipulación de los equipos; es
así como se obtuvo un compendio numeroso de inquietudes y expectativas sobre el
equipo que forma la materia prima para obtener las principales necesidades a satisfacer.
4.1.2 Interpretación de datos primarios en términos de necesidades. De los datos
recolectados en la información primaria se obtuvieron múltiples planteamientos de los
usuarios del sistema, los cuales luego de un proceso de filtración se agruparon en una
serie de planteamientos globales que envuelven de manera integral las características de
desempeño esperadas del sistema, estos son numerados en la tabla 4-1. La tabla 4-2
ilustra la interpretación de los planteamientos esperados del dispositivo en términos de
necesidades; en general fueron detectadas diez y seis necesidades que abarcan
principalmente diseño industrial e instrumentación, en esta tabla al sistema a desarrollar
se hace referencia como UMS por las siglas en ingles de Underactuated Mechanical
System, y a lo largo de todo el documento.
�
4.1.3 Organización de necesidades por jerarquía. Las diez y seis necesidades
identificadas son reagrupadas en cuatro necesidades primarias, y a su vez de acuerdo a
los parámetros de diseño definidos en el planteamiento de la misión del proyecto se
define nivel de importancia para cada necesidad secundaria dada por el numero de
puntos ( ), tal como es ilustrado en la tabla 4-3.
�
�
� ����
Tabla 4-1: Listado de planteamiento de usuarios a “Instrumentación más robusta” b “Que la interfaz de conexión sea ordenada y clara”�c “No quiero que se descuadre la instrumentación”�
d Que la variable de proceso este completamente instrumentada con voltajes estándares”
e “Buen diseño industrial”�f “Que sea lo más modular posible”�g “Agradable a la vista” h “Que todo este incluido en la mesa de trabajo”�i “Que tenga buena ilustración en el momento de conectar”�j “Quiero que sea cómodo y fácil de usar”�k “Que sea de fácil mantenimiento”�l “Flexibilidad para cambios en la configuración”�
m “Que sea autónoma en la parte de potencia”�
n “Me estresa llamar al auxiliar del laboratorio para que calibre el sistema”�
o “Que este bien documentada, que tenga manual técnico” p “Que sea resistente, materiales finos” q “Que sea robusta, que no sea delicada” r “Que sea económico”�s “Que sea fácil de transportar”�t “Que sea durable”�
Tabla 4-2: Interpretación de necesidades
NECESIDADES PLANTEAMIENTO USUARIOS
1. El UMS es ordenado en su sistema de conexiones b, i 2. El UMS presenta señales instrumentadas y confiables a, d, n 3. Los sensores funcionan correctamente después de excesivo uso c, n 4. El UMS es atractivo e innovador en su diseño e 5. El UMS es fácil de ensamblar f 6. El UMS presenta interfaz agradable al usuario g 7. El UMS es de fácil operación 8. El UMS permite el almacenamiento de sus distintos accesorios
h, j
9. El UMS es de fácil mantenimiento y reparación K 10. El UMS tiene integrados en su estructura las etapas de potencia,
instrumentación y alimentación. m
11. El UMS posee la capacidad de hacer diferentes pruebas 12. El UMS presenta posibilidad de configurarse en distintas
modalidades. l
13. El UMS es fácil de transportar s 14. El UMS presenta manual técnico. o 15. La estructura mecánica del UMS se compone de elementos de
manufactura nacional y fácil de consecución 16. El UMS es duradero
p, r, t
� ����
Tabla 4-3: Jerarquía de necesidades.
1. EL SISTEMA ELECTRÓNICO DEL UMS ES CONFIABLE Y ROBUSTO
El UMS es ordenado en su sistema de conexiones
�El UMS presenta señales instrumentadas y confiables�
�Los sensores funcionan correctamente después de excesivo Uso�
�El UMS tiene integrados en su estructura las etapas de potencia, instrumentación y alimentación.�
2. EL DISEÑO DEL UMS ES ÓPTIMO Y COMPETITIVO
El UMS es atractivo e innovador en su diseño
El UMS es fácil de ensamblar
�El UMS presenta posibilidad de configurarse en distintas modalidades�
El UMS presenta interfaz agradable al usuario
3. EL UMS ES DE FÁCIL MANTENIMIENTO Y CONFIGURACIÓN
El UMS es de fácil mantenimiento y reparación
El UMS posee la capacidad de hacer diferentes pruebas
El UMS presenta manual técnico
El UMS es de fácil operación
4. LA ESTRUCTURA MECÁNICA DEL UMS ES SENCILLA Y ROBUSTA
La estructura mecánica del UMS se compone de elementos de manufactura nacional y fácil de consecución en el mercado.
�El UMS es duradero�
�El UMS es fácil de transportar�
El UMS permite el almacenamiento de sus distintos accesorios
� ����
La agrupación por jerarquías permite formar grupos de necesidades primarias permiten
obtener el pareto del proceso de diseño de modo que simplifica cualquier decisión a
tomar, pues resumen en la fiabilidad del sistema electrónico y mecánico, en el diseño
industrial y en la fácil operación del equipo todas las necesidades de los usuarios que
delimitan los puntos clave a tener en cuenta de aquí en adelante.
4.1.4 Importancia relativa de las necesidades. Finalmente a cada una de las
necesidades que se obtuvieron se le asignará la importancia relativa que representa para
el proceso de diseño, teniendo en cuenta la lista jerárquica de necesidades y el grupo de
necesidades primarias al que pertenecen, son ponderadas con un orden de importancia
de 1 a 5, ilustrado en la tabla 4-4.
Tabla 4-4: Importancia relativa de las necesidades de los usuarios del UMS # NECESIDAD IMP.
1 El UMS es ordenado en su sistema de conexiones 4
2 El UMS presenta señales instrumentadas y confiables 5
3 Los sensores funcionan correctamente después de excesivo Uso 3
4 El UMS es atractivo e innovador en su diseño 4
5 El UMS es fácil de ensamblar 4
6 El UMS presenta interfaz agradable al usuario 3
7 El UMS es de fácil operación 4
8 El UMS permite el almacenamiento de sus distintos accesorios 2
9 El UMS es de fácil mantenimiento y reparación 4
10 El UMS integra en su estructura las etapas de potencia, instrumentación y alimentación 5
11 El UMS posee la capacidad de hacer diferentes pruebas 4
12 El UMS presenta posibilidad de configurarse en distintas modalidades 5
13 El UMS es fácil de transportar 3
14 El UMS presenta manual técnico 5
15 La estructura mecánica del UMS se compone de elementos de manufactura nacional
y fácil de consecución en el mercado 3
16 El UMS es duradero 4
De la tabla 4-4 es importante aclarar la diferencia existente entre la necesidad 11 y 12,
pues el dispositivo como se menciona en el planteamiento de la misión puede
� ����
configurarse como péndulo simple y doble, pero a su vez debe permitir hacer diferentes
pruebas con estas dos configuraciones como swing up, control de oscilaciones, y control
de posición del carro, que exigen un diseño mecánico versátil que en algunos dispositivos
presentes en el mercado y tenidos en cuenta en el Benchmarking competitivo no
presentaban
�
�
4.2 ESPECIFICACIONES PRELIMINARES
�
4.2.1 Establecimiento de métricas. De acuerdo a las necesidades expuestas se
establecen las métricas que son el punto de partida para definir las especificaciones
preliminares que enmarcan las condiciones de diseño que se deben cumplir y con las
cuales se medirá el producto al final de este trabajo de modo que son el indicador para
evaluar si los objetivos trazados son o no alcanzados
En la tabla 4-5 se muestran las métricas con su importancia relativa para el diseño del
dispositivo, en total se obtuvieron veinte métricas luego de un proceso de refinación,
dentro de las cuales dos de ellas se miden con listas, referentes a las necesidades de
cableado y organización así como el tipo y numero de pruebas que el sistema debe
permitir realizar; de la misma forma la métrica número 4 es subjetiva pues tiene que ver
con el diseño y apariencia en general del equipo, luego solo con una comunicación previa
del concepto será posible evaluar esta métrica.
� ����
Tabla 4-5: Listado de métricas del UMS a partir de necesidades de usuarios
Nº Necesidad Métrica Importancia Unidades
1 1, 4, 6 Organización y disposición del cableado 4 Lista 1
2 2, 10 Rango de voltaje para adquisición de datos y control 4 Voltios
3 2, 3, 16 Vida en Operación de sensores 4 Ciclos
4 1, 4, 6 Diseño atractivo 5 Subj.
5 5, 7, 11, 12 Tiempo medio para cambio de configuración 3 Minutos
6 2, 10 Voltaje de alimentación 3 Voltios
7 4, 8, 13 Dimensiones Almacén para accesorios (Ancho x Alto x Profundidad) 3 cm x cm x cm.
8 11, 12 Pruebas que se pueden realizar 4 Lista 2
9 13, 15 Masa total del dispositivo 4 Kg.
10 7, 13 Dimensiones generales sin incluir péndulos (Ancho x Alto x Profundidad) 4 cm x cm x cm.
11 4, 5, 7, 9, 10, 14 Manual Técnico de iniciación rápida 4 Binario
12 2, 4, 10, 11, 14, 15 Costo Unitario 5 Pesos
13 3, 4, 15, 16 Tiempo de vida útil del sistema 4 Años
14 4, 6, 7, 11, 12 Longitud Péndulo 1 3 Cm
15 4, 6, 7, 11, 12 Longitud Péndulo 2 3 Cm
16 4, 6, 7, 11, 12, 13 Masa Péndulo 1 3 Gramos.
17 4, 6, 7, 11, 12, 13 Masa Péndulo 2 3 Gramos.
18 4, 6, 7, 11, 12, 13 Masa del Carro 3 Gramos.
19 4, 6, 7, 11 Dimensiones del Carro (Ancho, Alto, Profundo) 3 cm x cm x cm.
20 4, 8, 11, 13 Longitud Carrera Efectiva 4 Metros
Tabla 4-5a: Información complementaria de la tabla 4.5
LISTA 2
A Estabilización del péndulo simple alrededor del punto de equilibrio inestable.
B Estabilización del péndulo doble alrededor del punto de equilibrio inestable.
C Swing up de péndulo simple y doble D Control de posición del carro E Control de Oscilaciones F Control péndulo dual
Lista 1 A Señalización
B Agrupación
C Visibilidad externa
� ����
4.2.2 Benchmarking competitivo. El benchmarking competitivo se centro en marcas
de productos similares que se encuentran en el mercado o que han sido desarrollados en
proyectos similares, a fin de enriquecer la información obtenida hasta el momento, y lograr
un posicionamiento del producto, además en el planteamiento de la misión es
fundamental la competitividad del producto. En la búsqueda de productos similares se
encontraron gran cantidad de dispositivos parecidos pero los que son tenidos en cuenta
son conocidos por su calidad y trayectoria en el caso de los comerciales, no se ha podido
tener acceso a buena parte de la documentación en el caso del proyecto de grado que se
tiene en cuenta. Así con base en estos criterios de selección de productos para el
Benchmarking se escogieron los que se mencionan a continuación.
• Péndulo Invertido Feedback Modelo 33-005-2M5: Este empresa presenta al
péndulo invertido con una mesa soporte integrado a sus mecanismos y elementos
tales como un actuador rotacional, encoders para sensar posiciones, un carro y
limitadores de carrera. Para transmitir el movimiento al carro utiliza dos poleas y una
correa dentada, sobre unos rieles desliza un carro haciendo uso de sus ruedas
laterales. Además del sistema mecánico la empresa entrega un software con el fin de
mostrar algunas técnicas de control sobre la maquina.
Figura 4.1: Péndulo Invertido Feedback 33-005-2M5
� ����
• Péndulo Invertido Googol Tech GLIP2002: El péndulo invertido realizado por esta
empresa se caracteriza por su gran diseño y fácil construcción de sus elementos que
conforman al sistema. Posee una base sólida, sobre la cual se montan todos los
componentes tales como sensores, motor, carro, ejes de guía y sistema de transmisión
(polea y correa dentada). Dos de sus principales atractivos son la variedad de
experimentos que se pueden realizar y su pequeño tamaño ya que facilita la posibilidad
de trabajar en cualquier lugar.
Figura 4.2: Péndulo Invertido Googol Tech GLIP2002
• Quanser IP01 – IP02: Esta empresa se considera una de las importantes en la
fabricación y venta de productos académicos debido a su amplia gama de productos
que ofrece, uno de ellos es el péndulo invertido traslacional, este sistema presenta un
diseño muy atractivo debido a la manufactura realizada en cada una de sus piezas.
Emplea como medio de transmisión el mecanismo cremallera - piñón, y sobre el carro
realiza el montaje del actuador rotacional y los encoders absolutos correspondientes al
sensado de la posición lineal y angular. Este sistema fue concebido como una
plataforma para realizar practicas de control.
� ����
Figura 4.3: Péndulo Invertido Quanser IP01
• Péndulo Lakehead University: Este es un sistema desarrollado en la universidad de
Lakehead en el año 2004 como proyecto de grado en ingeniería eléctrica. Al cual se
ha tenido acceso a su documentación y se tienen videos del comportamiento así como
simulaciones de controladores implementados y la comparación teórico-practica, por
tanto es una importante referencia pues es posible comparar los resultados obtenidos
de este trabajo con el que se está implementando, además es la única fuente de
información académica de la que se tiene una basta información.
Figura 4.4: Péndulo Invertido Universidad Lakehead (Canadá)
� ���
En una primera etapa del Benchmarking se evalúa como los productos competidores
satisfacen las necesidades de los usuarios de modo que se crea un escenario en el cual
se califica en una escala de 1 a 5 a juicio del equipo de diseño y con base en la
información obtenida se asigna su medida, como se ilustra en la tabla 4-6, siendo claro
como los productos más competitivos son el modelo de Quanser y el de Googol Tech
pues debido a su excelente diseño industrial y desempeño constituyen un punto de
referencia muy interesante.
De igual manera se realiza una evaluación de las métricas entre los productos escogidos
para el benchmarking de modo que es posible establecer los valores preliminares del
UMS, de acuerdo a lo encontrado entre los productos tenidos en cuenta en este proceso.
La tabla 4-7 ilustra la evaluación de las métricas.
� ���
Tabla 4-6: Benchmarking basado en la satisfacción de las necesidades de los clientes
# Necesidad IMP IP01-IP02 QUANSER LAKEHEAD FEEDBACK GOOGOL
TECH
1 El UMS es ordenado en su sistema de conexiones 4 3 4 3 3
2 El UMS presenta señales instrumentadas y confiables 5 5 3 4 4
3 Los sensores funcionan correctamente después de excesivo Uso 3 4 3 4 4
4 El UMS es atractivo e innovador en su diseño 4 4 3 3 4
5 El UMS es fácil de ensamblar 4 4 3 3 4
6 El UMS presenta interfaz agradable al usuario 3 3 3 3 3
7 El UMS es de fácil operación 4 4 4 4 4
8 El UMS permite el almacenamiento de sus distintos accesorios 4 1 1 1 1
9 El UMS es de fácil mantenimiento y reparación 4 3 3 3 3
10 El UMS tiene integrados en su estructura las etapas de potencia, instrumentación y alimentación
5 1 1 1 1
11 El UMS posee la capacidad de hacer diferentes pruebas 4 4 4 5 4
12 El UMS presenta posibilidad de configurarse en distintas modalidades 5 4 4 5 4
13 El UMS es fácil de transportar 3 4 4 2 4
14 El UMS presenta manual técnico 5 5 3 5 5
15
La estructura mecánica del UMS se compone de elementos de manufactura nacional y fácil de consecución en el mercado
3 2 2 2 2
16 El UMS es duradero 4 4 4 4 4
� ����
Tabla 4-7: Evaluación de métricas con otros productos
# Métrica Imp Unidades IP01-IP02 QUANSER LAKEHEAD FEEDBACK GOOGOL
TECH
1 Organización y disposición del cableado 4 Lista 1 A, B A, B A, B A, B
2 Rango de voltaje para adquisición de datos y control 4 V 6 5 ��� ���
3 Vida en Operación de sensores 4 Ciclos ������� �����
�������
�� ����
���
4 Diseño atractivo 5 Subj. 4 4 3 3
5 Tiempo medio para cambio de configuración 3 Minutos �$� $�� $�� $��
6 Voltaje de alimentación 3 Voltios 120 V AC 120 V AC 120 V AC 120 V AC
7 Dimensiones Almacén para accesorios (Ancho x Alto x Profundidad)
3 cmxcmxcm. - - - -
8 Pruebas que se pueden realizar 4 Lista 2 A, B, D, E A, B, C, D, E A, B, C, D, E, F A, B, C, D, E
9 Masa total del dispositivo 4 Kg. - - - -
10 Dimensiones generales sin incluir péndulos (Ancho x Alto x Profundidad)
4 cmxcmxcm - - - -
11 Manual Técnico de iniciación rápida 4 Binario Si No Si Si
12 Costo Unitario 5 US - - 6000 7000
4.2.3 Establecimiento de valores marginales. De acuerdo a los resultados obtenidos
del benchmarking competitivo (sintetizado en tablas 4-6 y 4-7), y teniendo en cuenta las
limitaciones, se establecen los valores marginales para las métricas de modo que se
alcance el objetivo de hacer un sistema competitivo y de excelente desempeño; estos
valores son mostrados en la tabla 4-8.
� ���
En el establecimiento de valores ideales y marginales, la métrica Nº 4 Diseño Atractivo,
cuya unidad de medida es subjetiva tiene colocados como valores marginales una nota <
3.5 y como valor ideal una nota >4.5 en una escala de 1 a 5, esta decisión se adopta
como método para medir esta métrica que se considera importante para el equipo.
Tabla 4-8: Establecimiento de valores ideales y marginales
# Métrica Unidades Valor Marginal Valor Ideal
1 Organización y disposición del cableado Lista 1 A, B A, B, C
2 Rango de voltaje para adquisición de datos y control Voltios ±10 ±5
3 Vida en Operación de sensores Ciclos > 3x106 � 5x106
4 Diseño atractivo (1 –5) Sub. > 3.5 > 4.5
5 Tiempo medio para cambio de configuración Minutos < 10 < 5
6 Voltaje de alimentación Voltios 120 V AC 120 V AC
7 Dimensiones Almacén para accesorios (Ancho x Alto x Profundidad) cmxcmxcm. <100x30x20 < 80x15x15
8 Pruebas que se pueden realizar Lista 2 A, B A, B, C, D
9 Masa total del dispositivo Kg. �25 �20
10 Dimensiones generales sin incluir péndulos (Ancho x Alto x Profundidad) cmxcmxcm 160x110x10 140x100x20
11 Manual Técnico de iniciación rápida Binario Si Si 12 Costo Unitario US <7000 �5000 13 Tiempo de vida útil del sistema Años >5 >7 14 Longitud Péndulo 1 cm <60 �45 15 Longitud Péndulo 2 cm >30 �40 16 Masa Péndulo 1 Gramos. <200 �150
17 Masa Péndulo 2 Gramos. <160 �120
18 Masa del Carro Gramos <100 �300
19 Dimensiones del Carro (Ancho, Alto, Profundo) Cm, cm, cm 10x10x10 6x8x6
20 Longitud Carrera Efectiva Metros > 1.7 � 1.4
� ���
4.2.4 Especificaciones preliminares. Con el fin de enriquecer la fase subsiguiente
como lo es la generación y selección de conceptos se establecen las especificaciones
preliminares ilustradas en la tabla 4-9 del UMS, de modo que los esfuerzos en esta etapa
de desarrollo conceptual converjan hacia el cumplimiento de estas especificaciones, y
cuando sea seleccionado el concepto se establecerán las especificaciones finales
Tabla 4-9: Especificaciones preliminares # Métrica Unidades Valor 1 Organización y disposición del cableado Lista 1 A, B, C
2 Rango de voltaje para adquisición de datos y control Voltios ±5
3 Vida en Operación de sensores Ciclos � 20 e 9 4 Diseño atractivo Subj. 4
5 Tiempo medio para cambio de configuración Minutos 8
6 Voltaje de alimentación Voltios 120 V AC
7 Dimensiones Almacén para accesorios (Ancho x Alto x Profundidad) cmxcmxcm. 80x16x13
8 Pruebas que se pueden realizar Lista 2 A, B, C, D 9 Masa total del dispositivo Kg. 25
10 Dimensiones generales sin incluir péndulos (Ancho x Alto x Profundidad) cm, cm, cm 160x110x10
11 Manual Técnico de iniciación rápida Binario Si 12 Costo Unitario US 5000 13 Tiempo de vida útil del sistema Años >5 14 Longitud Péndulo 1 Cm 45 15 Longitud Péndulo 2 Cm 35 16 Masa Péndulo 1 Gramos. 100 17 Masa Péndulo 2 Gramos. 90 18 Masa del Carro Gramos 180
19 Dimensiones del Carro (Ancho, Alto, Profundo) cm, cm, cm
6x8x6 20 Longitud Carrera Efectiva Metros 1.2
� ���
4.3 GENERACIÓN DE CONCEPTOS
�
4.3.1 Clarificación del problema. Como entradas para esta fase tenemos el
planteamiento de la misión, la lista de necesidades de los usuarios y las especificaciones
preliminares que se desarrollaron en las dos fases anteriores de este capitulo, de acuerdo
con ellas se procede a la descomposición funcional. En la figura 4-5a se representa al
U.M.S como una caja negra aclarando que solo se tiene en cuenta al sistema
electromecánico de péndulo, pues como se estableció en el planteamiento de la misión
que el control se realizará utilizando Simulink y Matlab en un PC, así que se tienen las
siguientes entradas:
• Energía. Hace referencia a la forma de energía que se va a introducir al sistema
para hacerlo operar de acuerdo a las especificaciones y objetivos establecidos
• Señal On/Off. Es la señal que habilita o deshabilita el sistema para la operación y
por ende para aceptar energía; es un tipo de señal muy sencillo.
• Señal de Control. Es la señal que se recibe desde el computador de acuerdo a
los algoritmos de control implementados, y que necesariamente va a operar sobre
el actuador del sistema.
Y como salidas se tienen
• Señales de las variables. Hace referencia a las señales obtenidas de los
sensores de los que se compone el sistema y que son enviadas al computador
para la implementación y ejecución de los algoritmos de control implementados
• Péndulos en posición deseada. Con esta salida se hace referencia a la señal
visual de los péndulos en la posición deseada, pero en un sentido estricto son una
consecuencia de la salida anterior, aunque se coloca porque es una manera de
controlar la correcta operación de los sensores que miden las variables del
sistema.
� ���
La figura 4.5b ilustra un diagrama funcional en el que se muestran las funciones más
importantes que ilustran el comportamiento del sistema, conectadas de forma que se
exponen los flujos de energía y señales.
En el desarrollo de esta sección se enfoca la metodología a trabajar con la ruta crítica,
que es señalada en color rojo en la figura 4.5b, de modo que esta representa los
principales sub problemas en los que se deben concentrar esfuerzos a fin de lograr un
desempeño optimo del sistema.
Figura 4.5: a) Caja negra y b) Descomposición funcional
Aceptar Energía Externa
Convertir Energía a fuente
de fuerza
Aplicar fuerza al Péndulo
Amplificar Sensar
Movimientos Acondicionar
Señales
Señales del Sistema�
Señal de Control
U.M.S
ENERGÍA SEÑAL ON/OFF SEÑAL DE CONTROL
SEÑALES DE VARIABLES �
PÉNDULOS EN POSICIÓN DESEADA�
Señal
(a)
(b)
Péndulos en Posición deseada�
Flujo de señales
Flujo de energía�
� ���
4.3.2 Rama critica. De la figura 4.5b se observa que los componentes de la rama
crítica son:
• Aceptar Energía Externa:
En este grupo funcional se refiere a la forma de energía externa que se va a utilizar
para la operación del sistema y los medios que tiene asociados este tipo de energía
para su correcta utilización de modo que se garantice una operación confiable siempre
con énfasis a cumplir y satisfacer las especificaciones preliminares establecidas.
Dentro de este grupo funcional existen gran cantidad de ofertas tentadoras que se
exponen en la sección siguiente, y es determinante ya que de ella depende en gran
medida el espacio de soluciones posibles para la rama critica que se esta trabajando,
en especial con el subconjunto que tiene asociado el actuador a utilizar por el sistema.
• Convertir Energía a fuente de fuerza
En este grupo funcional se hace referencia a la forma como el sistema toma la energía
que recibe del exterior, y se convierte como una fuente de fuerza de modo que se
pueda aplicar ésta al móvil que soporta los péndulos, lo cual es una premisa
fundamental para que el sistema se comporte como el péndulo que se modelo en el
capitulo 2. De igual manera en este grupo funcional la cantidad de ofertas encontradas
es abundante y requiere de gran cuidado ya que en gran parte determina el
comportamiento del sistema
• Aplicar fuerza al péndulo
La fuerza que se obtiene a partir de la energía externa, debe ser transmitida al sistema
del péndulo en su grado de libertad traslacional, y los medios utilizados para la
transmisión de esta fuerza que se ve reflejada en movimiento, son los que tienen
referencia a este grupo funcional.
• Sensar Movimiento
Uno de los principales objetivos, es tener un sistema de sensores fiables, por medio
de los cuales se obtenga una medida de los grados de libertad que tiene el sistema, y
� ���
así entregar al sistema de control implementado en el PC, medida de las variables de
interés. En este grupo funcional la variedad de ofertas es la más abundante de los
grupos hasta ahora expuestos, y de acuerdo a los objetivos impuestos en el
planteamiento de la misión así como las características de la dinámica misma del
sistema, se debe hacer una selección muy cuidadosa.
4.3.3 Exploración sistemática de información. Para los grupos funcionales obtenidos
a partir de la rama crítica se realizo búsqueda externa, acudiendo a distintas fuentes de
información, como Internet, libros de diseño, distribuidores de sensores y elementos de
maquinas, fabricantes de dispositivos similares, catálogos técnicos entre otros
consignados en la bibliografía, y de toda esta búsqueda se obtuvo un compendio muy
extenso de información relacionada, que para efectos de su correcta organización y
selección se organizo en árboles de clasificación de conceptos, y en tablas de
combinación de conceptos, de modo que al final de este proceso de exploración
sistemática se obtienen los conceptos generados que serán puestos a consideración para
su desarrollo.
4.3.3.1 Árboles de clasificación. El objetivo principal de los árboles de clasificación es
poder organizar toda la información que se ha recopilado, de un modo jerárquico de
manera que se van creando ramas interconectadas unas con las otras, de manera que se
tiene un esbozo rápido del espacio explorado, e igualmente las ramas menos
prometedoras de acuerdo a los objetivos o por sus limitaciones son podadas, para no ser
tenidas en cuenta al momento de la combinación de conceptos. Los árboles de
clasificación aquí presentados son los finales, es decir los que resultaron luego de un
proceso exhaustivo de análisis y poda de los mismos
�
• Árbol de clasificación aceptar energía externa
Para este grupo funcional la variedad de ofertas es bastante amplia pero se ilustran en
el árbol de clasificación contenido en la figura 4.6 solo las que para efectos del sistema
pueden ser viables, a fin de usarlas en el U.M.S, es así como fuentes de energía
alternativas no han sido consignadas. En el árbol de clasificación se ha tenido en
cuenta solo fuentes de energía eléctrica, neumática e hidráulica, de las cuales a través
� ���
de distribuidores y por otros sistemas similares que se han utilizado en otras regiones
del mundo con este tipos de energía
Figura 4.6: Árbol de clasificación Aceptar energía externa
• Árbol de clasificación Convertir energía a fuente de fuerza
Al igual que el árbol anterior, varias ramas de este árbol han sido podadas a fin de
hacer el espacio de soluciones más manejable. La rama de actuadores hidráulico y
neumático es mucho más extensa pero entrar a describirlas, implica citar modelos de
actuadores y marcas especificas lo cual no es el objetivo de esta etapa donde los
esfuerzos están concentrados en encontrar las limitaciones y alcances de cada una de
las ramas representadas en el árbol. Este árbol de clasificación esta contenido en la
figura 4.7
�������������� �����
�����������
����������
���������
�������������
���������
� ��
Figura 4.7: Árbol de clasificación convertir energía a fuente de fuerza
• Árbol de clasificación Aplicar fuerza a péndulos
La figura 4.8 ilustra el árbol de clasificación para este grupo funcional de la ruta crítica,
y es claro como se ilustran muchos sistemas de transmisión, que han sido tenidos en
cuenta luego de la poda de muchas ramas, debido a su simplicidad, y fácil
consecución en el ámbito local que es uno de los principales objetivos trazados para el
diseño.
Figura 4.8: Árbol de clasificación Aplicar fuerza al péndulo
�������������������������
��������������� !�
����!�
"�#����$������
������%�����
�������&������
��'������������
��(������������#��������#������
)�����&��
)��������
)�����������������
)���������*�����
�������������������
)������������&��
"��(�������&��
��������������������
� ��
• Árbol de clasificación Sensar movimientos.
En la figura 4.9 es mostrado el árbol de clasificación para Sensar movimientos, donde
se muestran solo sensores de tipo óptico y resistivo, de los cuales se tienen referencias
en este tipo de aplicaciones, además es colocado de manera tentativa un sensor
inalámbrico (wireless) para evitar los inconvenientes que trae consigo la presencia de
cables, y su posible intervención en el cambio de dinámica en el sistema debido a la
fuerza que estos pueden ejercer sobre las barras, si no se disponen de una manera
eficiente
Figura 4.9: Árbol de clasificación Sensar movimiento
4.3.3.2 Tablas de combinación de conceptos. De acuerdo a los árboles de clasificación
finales que se exponen en las figuras 4.6 a 4.9 se tienen un total de 1152 posibles
conceptos, esta información es organizada como se ilustra en la figura 4.10, donde se
muestran algunos de los conceptos más prometedores evaluados, y es claro ya en esta
fase del proceso que se ha decidido a la fuente de energía eléctrica como la forma de
suministrar energía al sistema, así que los conceptos generados estarán dominados por
esta. Las otras fuentes de energía no se van a tener más en cuenta debido a los altos
costos de implementación que traían consigo, pero además criterios como la fácil
operación, mantenimiento y portabilidad del sistema fueron determinantes e inclinaron la
balanza hacia la opción ya mencionada
�
�
"�����)�(�������
�������'�������
������������
$���������+�������������
������,���������
��������!������
�����(����
� ���
En la figura 4.10 son ilustrados 9 posibles conceptos a ser desarrollados, tomando como
base las combinaciones de las distintas opciones de los árboles de clasificación, en
general fueron evaluados alrededor de 30 conceptos, que se redujeron a los nueve
mencionados y que tienen un color asignado en la figura 4.10. Luego de un proceso de
selección iterativo se llego a cinco conceptos para continuar en el proceso de selección.
En el proceso de pasar de un número muy amplio de conceptos a un número más
manejable se tuvieron en cuenta los siguientes criterios:
• Costo estimado de desarrollo del equipo.
• Versatilidad del equipo
• Dificultad de construcción y fabricación de piezas
• Necesidad de mantenimiento y reparación
• Portabilidad del equipo.
• Fiabilidad de instrumentos.
�
� � ��
Figura 4.10: Combinación de conceptos
�������������
)�����&��
)���������*�����
)������������&��
"��(�������&��
��������������� !�
"�#����$������
������%�����
�������&������
��'������������
�������'�������
������������
$���������+�������������
������,���������
��������!������
�����(����
�������������
)�����&��
)���������*�����
)������������&��
"��(�������&��
��������������� !�
"�#����$������
������%�����
�������&������
��'������������
�������'�������
������������
$���������+�������������
������,���������
��������!������
�����(����
�������������� �����
��(��������������)�(�������
$���������)�(�����������������
"�����)�(�������
� ���
4.3.4 Conceptos generados
• Concepto A. Red Eléctrica – Servomotor DC – Banda Lisa – Clarostatos
Este concepto que se ilustra en la figura 4.11, tiene como fuente de torque un
Servomotor DC, que transmite la fuerza al carro que tiene pivotado sobre sí el
péndulo, a través de una banda lisa, y la medida de los tres grados de libertad se
hace a través de clarostatos o resistores lineales. Como ventajas se puede
mencionar que el costo de los sensores es reducido comparado con el de los otros
conceptos presentados así como la fiabilidad que el uso de un servomotor imprime
a un sistema de control , pero se ve limitado por la carrera efectiva en el grado de
libertad traslacional que se puede tener, debido a que este tipo de sensores tiene
un limite de giros, además el acondicionamiento de señal para estos sensores es
más elaborado que para otro tipo de sensores, de igual manera se puede
mencionar que las bandas lisas pueden presentar deslizamiento si no se tienen las
condiciones de tensión necesarias, conjuntamente con su tiempo de estiramiento
corto en relación con otro tipo de bandas
Figura 4.11: Concepto A
� ���
• Concepto B. Red Eléctrica – Motor DC – Correa Dentada – Encoder Absoluto
La figura 4.12 presenta un esbozo de este concepto en el que la fuente de torque
es un motor DC convencional, y la transmisión de fuerza al sistema de péndulos se
hace a través de una correa dentada o timing belt, que garantiza menos perdida
de fuerza que las correas lisas, de igual forma reduce notablemente las
condiciones de tensión necesarias para su correcta operación, y el hecho de usar
encoders absolutos como sensores, permite que el acondicionamiento de señal
sea casi nulo y dependiendo de las características de estos se puede tener un
sistema de sensado fiable. Como desventaja principal se tiene el costo de los
componentes, y la dificultad de encontrar en el mercado nacional correas dentadas
con el paso y longitud requerida, lo que incidiría en algunas características
deseables del sistema
Figura 4.12: Concepto B
� ���
• Concepto C. Red Eléctrica – Motor DC – Cremallera Piñón – Encoder Incremental
En este concepto que se expone en la figura 4.13, la principal novedad radica en
que el motor que se utiliza como fuente de tórque no esta estático en un extremo
del dispositivo sino que se incorpora al carro y se mueve a lo largo de un conjunto
cremallera y piñón, lo que garantiza que el tórque aplicado sea constante, por
consiguiente hay menos perdidas y la eficiencia del sistema seria muy superior,
además el uso de encoders elimina problemas que se tiene con otro tipo de
sensores, sin olvidar que el carro utiliza solo un eje guía que permite que la
perdida por rozamiento sea menor que en los otros conceptos, pero la
construcción de este sistema en el país en mucho más costosa que los otros
conceptos, sumado esto a que el motor que se debe incorporar al carro debe ser
liviano esto con el fin de que no afecte la masa del sistema en forma muy drástica.
Figura 4.13: Concepto C
� ���
• Concepto D. Red Eléctrica – Motoreductor DC – Cable de Acero – Encoder
incremental y Absoluto.
La principal novedad que presenta este sistema es que el sistema de transmisión
se hace a través de un cable de acero que funciona de manera similar a las
correas, con la diferencia que la carrera puede ser mucho más larga, y la tensión
puede variarse sin preocuparse por la perdida de elasticidad, y además este
sistema es ampliamente usado en dispositivos industriales de trabajo pesado, el
inconveniente es que la literatura e información sobre este sistema de transmisión
es mas bien escasa, y a pesar de que en la búsqueda de información se encontró
un sistema similar3 operando con este sistema de transmisión de forma
satisfactoria
Figura 4.14: Concepto D
�������������������������������������������������3
AVELLO, A., RUBI, J. y RUBIO, A. Swing-up Control Problem for a Self-Erecting Double Inverted Pendulum [en linea]. San Sebastián, 2002. [Consultado en Marzo de 2005]. Disponible en Internet: http://www.ccse.kfupm.edu.sa/~selferik/download/00997871p5.pdf. p. 1-7.
� ���
• Concepto E. Red Eléctrica – Motoreductor DC – Correa Dentada – Encoder
Incremental
Básicamente este concepto es el mismo concepto B pero con la diferencia que los
encoders utilizados son encoders incrementales, esto con el fin de evaluar el
efecto que puede tener el precio elevado de encoders absolutos. Este concepto
surgió luego de las primeras etapas de selección de conceptos como una variación
del concepto B. y como ya ha sido mencionado en el presente informe solo se
presentan los resultados finales y no se hace énfasis en el largo proceso iterativo
que llevo esta fase del desarrollo del producto.
� ���
4.4 SELECCIÓN DE CONCEPTOS
Los conceptos elegidos para esta etapa de selección fueron elegidos mediante el análisis
de la combinación de conceptos mostrada en la etapa anterior, para luego evaluarlos
mediante la matriz de tamizaje y realizar la selección del concepto a desarrollar.
Tanto en la matriz de tamizaje como en la de selección de conceptos que se exponen en
las secciones siguientes de este capitulo, se ha escogido como referencia el péndulo de
Quanser IP01-IP02 debido que comercialmente representa una de las marcas más
representativas en el mercado de este tipo de dispositivos, además las referencias y
conocimientos que se tienen de este modelo permiten establecer más a fondo una
comparación con respecto a las características que se desean obtener.
4.4.1 Matriz de Tamizaje de Conceptos. En la matriz de tamizaje de conceptos que se
muestra en la tabla 4-10 los criterios de selección escogidos son la lista de necesidades
que se extraen de la tabla 4-4, pues se verificara como cada uno de los conceptos
seleccionados cumple con esta con el fin de establecer en que medida se esta
consumando la meta final de lograr satisfacer estas necesidades dentro del proceso de
diseño.
De la matriz de tamizaje se tiene como resultado que los conceptos A y D, no continuaran
en el proceso de diseño debido a que quedaron por debajo de la referencia en la medida
de satisfacción de necesidades de los clientes, esto principalmente debido a que en el
concepto A, el tipo de sensores escogido no tiene la sufriente fiabilidad comparado con
los de la referencia, y esto representa además que la interfase para su acondicionamiento
de señal así como la limitación en la carrera y el número de vueltas que pueden dar los
péndulos sobre su eje, acarreen desventajas decisivas con respecto a los otros
conceptos. En cuanto al concepto D el hecho de no contar con suficiente información y
referencias disponibles que resultaran en indicaciones de la fiabilidad y desarrollo del
sistema de tracción, sumados a que no se contaba con unificación del tipo de sensores a
utilizar llevo a la decisión de no continuidad del concepto.
� ��
Tabla 4-10: Matriz de tamizaje de conceptos
VARIANTES DE CONCEPTOS
Criterio de Selección A B C D E Ref.
(Quanser IP01-IP02)
El UMS es ordenado en su sistema de conexiones 0 + + 0 0 0 El UMS presenta señales instrumentadas y confiables - 0 0 0 0 0
Los sensores funcionan correctamente después de excesivo Uso - 0 0 0 0 0 El UMS es atractivo e innovador en su diseño 0 0 0 0 0 0 El UMS es fácil de ensamblar + + 0 - + 0 El UMS presenta interfaz agradable al usuario - - - - - 0 El UMS es de fácil operación 0 0 0 0 0 0
El UMS permite el almacenamiento de sus distintos accesorios + + + + + 0 El UMS es de fácil mantenimiento y reparación 0 0 0 0 0 0
El UMS tiene integrados en su estructura las etapas de potencia, instrumentación y alimentación + + + + + 0 El UMS posee la capacidad de hacer diferentes pruebas 0 0 0 0 0 0
El UMS presenta posibilidad de configurarse en distintas modalidades(simple y doble) 0 0 0 0 0 0 El UMS es fácil de transportar - - - - - 0 El UMS presenta manual técnico 0 0 0 0 0 0
La estructura mecánica del UMS se compone de elementos de manufactura nacional y fácil de consecución + 0 0 0 0 0 El UMS es duradero - 0 0 0 0 0 Positivos 4 4 3 2 3 Negativos 5 2 2 3 2 Iguales 7 10 11 11 11 Total -1 2 1 -1 1 Orden 4 1 2 5 2 ¿Continuar? No Si Si No Si
En este punto es importante aclarar que uno de los aspectos a evaluar en el concepto D
era la conveniencia de utilizar sensores diferentes para la medida de las posiciones
angulares lineales del sistema, llegando a la conclusión que las posibles ventajas
económicas debidas a la diferencia de precios entre estos sensores, pueden ser
sopesadas dada la versatilidad y el reducido número de partes que implica tener una sola
� ��
referencia de sensores, además se existen referencias de sensores económicos con muy
buenas características de desempeño.
4.4.2 Matriz de Evaluación de Conceptos. En la tabla 4-11 se ilustra la matriz de
evaluación de conceptos, en la que evalúan los conceptos que pasaron la etapa anterior.
Como criterios de evaluación se utilizan las especificaciones preliminares que se
establecieron para el dispositivo a desarrollar con el fin de ponderar la medida en que
cada uno de los conceptos seleccionados satisface los objetivos de desarrollo.
Tabla 4-11 Matriz de Evaluación de conceptos B C E
Criterio de Selección % Nota Criterio Pondera
do Nota
Criterio Pondera
do Nota
Criterio Pondera
do
Organización y disposición del cableado
9 4 0,36 3 0,27 4 0,36
Rango de voltaje para adquisición de datos y control
5 4 0,2 4 0,2 4 0,2
Vida en Operación de sensores 10 4 0,4 3 0,3 3 0,3
Diseño atractivo 9 4 0,36 4 0,36 4 0,36
Tiempo medio para cambio de configuración
5 4 0,2 3 0,15 3 0,15
Voltaje de alimentación 5 3 0,15 3 0,15 3 0,15
Dimensiones Almacén para accesorios (Ancho x Alto x Profundidad)
5 3 0,15 3 0,15 3 0,15
Pruebas que se pueden realizar 8 4 0,32 4 0,32 4 0,32
Masa total del dispositivo 5 5 0,25 4 0,2 3 0,15
Dimensiones generales sin incluir péndulos (Ancho x Alto x Profundidad)
6 4 0,24 3 0,18 4 0,24
Costo Unitario 10 4 0,4 2 0,2 3 0,3
Tiempo de vida útil del sistema 8 3 0,24 4 0,32 3 0,24
Dimensiones del Carro (Ancho, Alto, Profundo)
6 4 0,24 3 0,18 4 0,24
Longitud Carrera Efectiva 9 4 0,36 4 0,36 4 0,36
TOTAL 3,87 3,34 3,52
ORDEN 1 3 2
DESARROLLAR SI NO NO �
� ���
De la tabla 4.11 es claro que el concepto a desarrollar es el concepto B, y los conceptos C
y E no continúan el proceso, pues el primero obtuvo un porcentaje del 77.4 % en
comparación con el 67% y 70% obtenido por los otros dos conceptos.
Es claro que para escoger el concepto B es preponderante que las características
deseables que ofrece la correa sincrónica en transmisión de potencia así como las
ventajas que ofrece el tipo de sensor propuesto, hacen a este concepto la mejor opción a
desarrollar debido que ofrece grandes ventajas en cuanto a aspectos técnicos y
económicos, lo que no ofrecen los otros conceptos, pues a pesar de que en transmisión
no es la mejor opción si representa una muy buena alternativa, pues garantiza que las
probabilidades de consecución nacional sean viables y su desempeño en teoría es muy
bueno.
El concepto C al tener la cremallera, implica que la transmisión de potencia es más
efectiva lo que redunda en una característica de desempeño muy deseable, pero en
comparación con la correa dentada del concepto B, sus ventajas no son tan superiores,
además su elevado costo, así como la limitación en la carrera del péndulo y su difícil
consecución o construcción hacen que la balanza se incline hacia el segundo sistema de
transmisión.
El concepto E que es una variante del concepto seleccionado, en el sistema de sensores,
finalmente no fue elegido pues las ventajas económicas que ofrecían no son lo
suficientemente “pesadas”, como para compensar las desventajas de desempeño que
podría conllevar, y dentro del primer presupuesto establecido en la etapa de ingeniería
conceptual (que es donde se enmarcaría parte de este proceso) se cuenta con este tipo
de sensores.
Con la elección del concepto a desarrollar finaliza el capitulo de desarrollo conceptual, en
el que se paso de un conjunto de necesidades y expectativas creadas alrededor del
producto a desarrollar, a un concepto más propio de un trabajo en ingeniería apoyados en
la metodología de diseño mecatrónico, y se abre paso a una nueva fase en el desarrollo
del producto, que es diseño a nivel de sistema, en la que se trabajara a partir del concepto
aquí desarrollado.
� ����
5. DISEÑO A NIVEL DE SISTEMA
En el diseño a nivel de sistema se toma como entrada el concepto seleccionado del
capitulo anterior y se hace un primer esbozo del mismo de modo que se define la
arquitectura del producto y se realiza la descomposición del producto en subsistemas y
componentes, de manera que en el capitulo siguiente que corresponde al diseño detallado
se tomen las definiciones y decisiones tomadas en esta fase para darle forma final al
producto.
Si bien en el proceso de desarrollo de un producto la etapa de de diseño a nivel de
sistema incluye etapas que se traslapan con las etapas de diseño conceptual y la etapa
de diseño detallado, pero para efectos del presente informe se incluirán en está etapa las
siguientes fases:
• Arquitectura del producto:
En esta fase se establece la arquitectura del producto, y se obtiene una
descomposición funcional del producto, de modo que las interacciones incidentales
y fundamentales son establecidas de manera que en la etapa de diseño detallado
no se deje nada al azar y la mayoría de los efectos externos que puedan afectar el
desempeño del sistema puedan ser previstos y tomadas las precauciones
necesarias a fin de satisfacer la necesidades reflejadas en las especificaciones
finales.
• Diseño industrial:
En esta fase se hace una valoración de las necesidades estéticas, ergonómicas y
de la dominación del producto, de modo que en el momento de tomar decisiones
en la fase de diseño detallado se recurra a esta valoración y así poder alcanzar las
expectativas esperadas en esta fase.
� ����
• Diseño para manufactura
Esta fase es de suma importancia y a lo largo del proceso han primado las
características de construcción y ensamble para el dispositivo, en el presente
informe se presenta solo la elección del soporte elegido para el sistema, cuya
decisión tiene gran impacto sobre el costo de la construcción del sistema, y
además define muchas de la características funcionales y estéticas del mismo, así
de una manera diáfana se expone el proceso de elección del concepto de mesa
soporte final.
• Prototipado.
En cuanto a la etapa de prototipado se citan los diversos prototipos construidos en
las diversas etapas de diseño, y se referencia cada capitulo, y la construcción del
prototipo 3D que encierra gran parte de lo que representa este trabajo, esta
debidamente detallada en el capitulo 8.
5.1. ARQUITECTURA DEL PRODUCTO La arquitectura en un producto es un factor de suma importancia, ya que mediante la
utilización de alguna arquitectura el sistema ha desarrollar puede tomar ciertas
características que influyen mucho en su diseño, concepción y fabricación en grandes
cantidades. Según las necesidades mas importantes de los clientes y los objetivos
principales por el cual se diseña el Péndulo Invertido, la arquitectura mas apropiada ha
implementar es la arquitectura modular, pues el sistema debe servir como una plataforma
para diferentes sistemas de control y para muchas configuraciones futuras, además debe
poseer características como simplicidad y reutilización de muchas de sus partes y así
poder aumentar la gama de posible configuraciones, esto sumado a que muchas de las
características deseables del producto implican tener este tipo de arquitectura.
� ����
5.1.1. Esquema del Producto. El esquema del producto se constituye como una
herramienta de gran ayuda en la realización de una arquitectura y se considera muy
importante en el diseño, porque permite tener una idea mas clara de la organización de
los conjuntos y elementos físicos y funcionales que conforman el sistema. Los elementos
más importantes del producto se presentan a continuación:
� Base: Este elemento sirve como soporte, pues sobre este va montado todo
el sistema.
� Almacén: Permite almacenar los circuitos de potencia y los péndulos
cuando no se estén utilizando.
� Prensas: Constituyen el elemento mediante el cual se sostiene la base a la
mesa donde se ubicara todo el sistema.
� Alimentación Eléctrica: Es la fuente de poder para el sistema electrónico y
de potencia.
� Sistema Electrónico y de Potencia: Este elemento se encarga de
amplificar la señal de control que proviene del computador y también brindar
energía a los elementos electrónicos que se tenga (sensores, motor, finales
de carrera).
� Carro: Este elemento se desplazara horizontalmente por acción del motor y
una correa dentada, también permite realizar el montaje de los péndulos.
� Guías: Estas barras sirven como soporte y como un medio de transporte
lineal del conjunto carro y péndulos.
� Motor: Es un actuador rotacional que generará el movimiento al sistema a
través de un medio de transmisión.
� Banda: Es el elemento mediante el cual el motor le transmite el moviendo al
carro y a los péndulos.
� Tensor: Este elemento permite mantener y ajustar una tensión sobre la
banda dentada.
� Acople Carro/Pendulo1: Este elemento físico permite la unión entre el
carro y el primer péndulo.
� Pendulo1: Esta barra tendrá un movimiento rotacional y permite observar
cuando la acción de control se ha realizado con éxito para la prueba del
péndulo simple.
� ����
Base
Almacén�
Prensas�
Pend2�
Pend1�
Acople P1/P2
Acople Carro/P1
Motor
Banda
Tensor
Carro
Guías�
Alimentación�
Eléctrica�
Sistema Electrónico y Potencia
� Acople Pendulo1/Pendulo2: Este elemento físico permite la unión entre el
primer péndulo y el segundo péndulo.
� Pendulo2: Tiene un movimiento rotacional y permite observar cuando la
acción de control se ha realizado con éxito para la prueba del péndulo doble
Figura 5.1: Esquema del producto
5.1.2. Agrupación de Elementos. Con los elementos antes mencionados se procede a
realizar la agrupación de estos. Para lograr agrupar adecuadamente los elementos se
tuvo en cuenta la función que cada uno cumple dentro del esquema del producto. En esta
parte se identificaron seis grupos funcionales. Los seis grupos identificados fueron
a. Base Soporte (Base, Almacén, Prensas)
b. Sistema Péndulos (Pend1, Pend2, Acople P1/P2, Acople Carro/P1)
c. Sistema de Transmisión (Motor, Banda, Tensor)
d. Etapa de Energía y Potencia (Alimentación Eléctrica, Sistema Electrónico
y de Potencia)
e. Conjunto de Soporte y Transporte (Carro, Guías)
� ����
Figura 5.2: Agrupación de elementos funcionales
5.1.3. Distribución Geométrica. La distribución geométrica es una herramienta visual
que ayuda ha mejorar la utilización del espacio de una forma mas eficiente. En el
siguiente esquema, se muestra la agrupación de los diferentes elementos en un espacio
definido, esto nos permite visualizar si la colocación de cada uno de ellos es la correcta.
Para diferenciar un conjunto del otro, se utilizaron distintos colores
Base
Almacén�
Prensas�
a
Pend1
Acople P1/P2
Acople Carro/P1
b
Motor
Banda
Tensor
c
Alimentación Eléctrica
Sistema Electrónico y Potencia
��
Carro�
Guías�
e
Pend2
� ����
Figura 5.3: Distribución geométrica (layout)
5.1.4. Interacciones Fundamentales. Las Interacciones Fundamentales deben ser bien
comprendidas con el fin de conocer el comportamiento de sus elementos cuando se
relacionan entre si, el análisis de estas también influye en el diseño de tal forma que estas
interacciones no sean perjudiciales en ningún momento para el producto a desarrollar, ni
tampoco que conlleven indirectamente ha interacciones incidentales.
Base Soporte
Sistema Péndulo
Sistema de Transmisión
Etapa de Energía y Potencia
Sistema de Soporte de Transmisión
� ����
Figura 5.4: Interacciones fundamentales
5.1.5. Interacciones Incidentales. Las Interacciones Incidentales son problemas que en
cualquier diseño aparecen y por lo general se derivan de la implementación física y pocas
veces se pueden evitar cuando se esta desarrollando un nuevo producto. En lo posible se
debe tener mucho cuidado pues estas interacciones pueden ocasionar serios
inconvenientes en el buen funcionamiento del sistema, algunas ejemplos son: vibraciones,
distorsiones térmicas, interferencias por radio frecuencias entre otras.
Base
Almacén
Prensas a
Pend2
Pend1
Acople P1/P2
Acople Carro/P1
b
Motor
Banda
Tensor
c
Alimentación Eléctrica
Sistema Electrónico y Potencia
d
Carro
Guías
e
Flujo de Energía o Fuerza
Flujo Señal o Datos
� ���
Figura 5.5: Interacciones incidentales Con el establecimiento de las interacciones incidentales se termina la etapa de
arquitectura del producto de modo que ya se tiene definido que se espera del producto y
cuáles deben ser los aspectos a tener en cuenta para el diseño detallado.
5.2. DISEÑO INDUSTRIAL
5.2.1. Necesidades Ergonómicas. La Facilidad de Uso del UMS hace referencia a la
versatilidad que posee en su estructura, y debido a que se puede desarrollar distintas
pruebas sobre esta, se utiliza una serie de distintivos gráficos fáciles de entender y
pensados para que el usuario final interactúe en forma sencilla con la planta.
Por motivo de que el UMS esta diseñado con una arquitectura modular, permite que el
mantenimiento sea en medianos aspectos, fácil de realizar, ya que, se poseen todos los
módulos separados de fácil acceso. Al ser el UMS compuesto por elementos mecánicos,
eléctricos y electrónicos se hace necesaria la utilización de herramientas sencillas y
estándar para poder realizar algún tipo de mantenimiento o revisión.
BASE SOPORTE
SISTEMA DE SOPORTE DE TRANSMISIÓN
SISTEMA��������
SISTEMA������ �������
ETAPA DE ENERGIA Y POTENCIA
Distorsión Térmica
Vibración
Vibración
Ruido
Vibración
� ���
Las interacciones necesarias para que el UMS funcione correctamente son de un nivel
aproximadamente medio-bajo, pero con una gran facilidad de manejo. Las interacciones
son
• Conectar
• Sacar péndulo del almacén
• Instalar Péndulo
• Encender
• Realizar Conexiones externas
• Activar Software de control (interacción externa a la planta)
La novedad de las interacciones se encuentra básicamente en la facilidad en las que el
usuario las realiza aunque algunas de estas son interacciones normales y obvias, las
cuales no necesitan mayor comunicación entre la planta y el usuario.
La estructura y el funcionamiento del UMS permiten que sea una planta segura, pero
posee algunos riesgos contra el usuario, debido a que este debe estar posicionado al
frente de la planta en el momento de su funcionamiento, por lo cual se utilizan una serie
de advertencias preventivas gráficas para contrarrestar esto.
Facilidad de Uso
Facilidad de Mant.
Cantidad de Interacciones
Novedad en Interacciones
Seguridad
� � � ���� �� �
� ����
5.2.2. Necesidades Estéticas. La alta diferenciación visual que posee el UMS es
debido a su apariencia estructural, ya que, esta planta es de tipo subactuado, lo cual hace
que sea atractiva hacia el usuario u otras personas dentro del medio, además las piezas
y/o partes de la que esta conformada son de materiales adecuados y de excelente
manufactura y acabados.
Otro punto que ayuda a su diferenciación visual es su parte gráfica moderna y hace que la
interacción con el usuario sea relativamente sencilla, la cual es necesaria para la
interacción con los usuarios.
Al ser el UMS una planta relativamente nueva en su estilo en el laboratorio de automática,
y además con el valor agregado de que la realizaron estudiantes de ingeniería, hace que
el orgullo de posesión no solo lo tengan los estudiantes sino la misma institución.
Todas las plantas subactuadas poseen una excelente calidad y un buen funcionamiento,
lo cual hace que la motivación del equipo de trabajo y diseño sea alta, porque se debe
procurar la búsqueda de la excelencia, la funcionalidad y la versatilidad del UMS, al este
ser un sistema subactuado.
Diferenciación Visual
Orgullo de Posesión
Motivación al Equipo
5.2.3. Dominación del Producto. En las etapas anteriores del diseño del UMS, se han
tenido en cuenta muy a la par los requerimientos técnicos de todo el sistema para su buen
funcionamiento y los aspectos estéticos dirigidos al manejo e interacción con los usuarios,
lo cual hace que el UMS este dominado de igual forma por la tecnología y por el usuario.
� � � ���� � �� �
� �����
Figura 5.6: Representación visual de la dominación del producto �
�
�
5.2.4. Evaluación de la Calidad del Diseño Industrial. La calidad de las interfases del
modulo UMS tiene un nivel relativamente medio-alto, al poseer unas interfases
comunicativas y fáciles de usar, lo cual hace que el usuario haga funcionar la planta
sencillamente, pero al tener la capacidad de realizar diferentes pruebas, se debe efectuar
una aclaración previa al usuario antes de su uso.
El UMS como producto es muy llamativo hacia el consumidor, tanto por su diseño gráfico
como por su diseño a nivel de estructura, así mismo expresa funcionalidad y calidad, lo
cual hace que los requerimientos emocionales hacia el consumidor sean satisfechos.
Como se mencionó anteriormente, la arquitectura modular hace del UMS, un producto de
fácil mantenimiento y reparación.
En la etapa de diseño del UMS, se han realizados varias revisiones en cuanto a piezas y
estructura se refiere, todo con el fin de optimizar el funcionamiento, costo de material,
manufactura y espacio que va a utilizar la planta cuando este en uso.
La diferenciación del UMS con respecto a otros productos de su tipo, tiene un grado
relativamente alto, por motivo de su versatilidad, tamaño y funcionalidad que posee
alrededor de todo su entorno.
�������
�������������� ������� !��
� �����
Calidad de las Interfases
Requerimientos Emocionales
Facilidades de Mant. Y Rep.
Uso Apropiado de Recursos
Diferenciación del Producto
5.3. DISEÑO PARA MANUFACTURA El diseño para manufactura para el péndulo invertido fue de gran importancia, pues para
la construcción del sistema se contaba con un presupuesto fijo. Por lo tanto para cada
concepto diseñado era necesario evaluarlo económicamente, y con base a ese resultado
fue preciso mejorar algunos elementos o crear nuevos diseños de los elementos sin
afectar la estética y la ergonomía del producto. La concepción del sistema se realizó bajo
una arquitectura modular, la cual presenta como desventajas un alto costo por su
diversidad de partes y reutilización de sus conjuntos.
Como el objetivo principal del sistema péndulo invertido es crear un producto Mecatrónico
que sirva como plataforma de sistemas para realizar distintas técnicas de control, por
ende la construcción de las piezas y el sistema de potencia se hizo bajo el modelo de
maquila.
5.3.1 Reducción de Costos. Cuando se realizó el proceso de generación y selección
de conceptos se realizó sobre los elementos principales tales como actuador, sistema de
transmisión, sensores etc. Los cuales van montados sobre una primera platina soporte. El
sistema completo se compone de una primera platina y de un dispositivo de soporte para
esta. El diseño y elección del elemento de soporte final es un de los principales causantes
� � � ���� � �� �
� �����
de la disminución de costos del producto, a continuación se presentan los distintos
dispositivos diseñados para el sistema y el porque de su elección.
El esquema ilustrado en la figura 5.7 fue el primer diseño realizado para el soporte del
sistema, consistía en una mesa de dos pilares en los extremos y en cada pilar contiene
una zapata cuyo propósito es la estabilidad. El inconveniente que presenta radicaba en el
poco apoyo que existía en la mitad, pues la longitud del sistema es extensa y podrían
surgir problemas de flexión. En lo referente al costo del soporte era un diseño factible,
pero presentaba falencias en los requerimientos estéticos y ergonómicos del diseño
industrial.
Figura 5.7: Primer esquema del elemento soporte
El siguiente diseño ilustrado en la figura 5.8 presenta muchas ventajas con respecto al
anterior, pues posee muy buen diseño industrial, esto en gran medida se debe a
elementos como los perfiles de aluminio utilizados.
� �����
Esta mesa soporte se proyectaba como un diseño final, pero su gran problema era el alto
costo en la adquisición de los perfiles Bosch, ya que con estos se lograba superar el
presupuesto existente, lo que provocaba desechar este diseño.
Figura 5.8: Segundo esquema del elemento soporte.
Este tercer diseño presentaba grandes diferencias con respecto a los anteriores, pues ya
no utiliza el concepto de mesa soporte, sino de una caja donde internamente llevaría los
circuitos de potencia y el almacén para péndulos, esta caja debe ser instalada sobre una
mesa debido a la altura de los péndulos. En cuanto al costo este concepto era muy
inferior con relación al anterior, pero uno de los inconvenientes que se encontró fue la
falta de elementos de apoyo a la superficie donde se iba a instalar, además para darle
estabilidad ha este diseño se necesita tener un considerable peso en su caja, pues el
movimiento del carro obliga al elemento soporte ha tener muy buena estabilidad.
� �����
Figura 5.9: Tercer diseño del elemento soporte
El cuarto diseño que se presenta en la figura 5.10 tiene como grandes ventajas la
versatilidad para ser instalado en distintos sitios debido a elementos como las tres
prensas las cuales le ofrecen al sistema estabilidad, además se integra del concepto
anterior la idea de tener una caja que contendrá los circuitos de potencia y el almacén
para péndulos, y será montada sobre una sola platina soporte, suprimiendo la idea de la
primera platina que se mencionó con anterioridad, esto implica una reducción de costos,
lo cual hace que el producto presente un valor considerable dentro del presupuesto. En lo
referente al diseño industrial la imagen que proyecta este concepto es agradable para los
usuarios. Debido a las razones anteriores este fue el diseño que se decidió implementar.
� �����
Figura 5.10: Esquema final del elemento soporte.
5.4. PROTOTIPADO
Para el desarrollo del péndulo en realidad se han creado gran variedad de prototipos
como se pueden mencionar el modelo matemático desarrollados en el capitulo 2 y
representados en Simulink TM en el capitulo 7, además como apoyo del diseño detallado la
creación de prototipos 3D a través un software CAD como lo es Solid Edge TM para la
elaboración de piezas y ensambles es fundamental y esta debidamente documentada en
el capitulo 6 y los anexos.
Finalmente todos estos prototipos además de ayudar convenientemente en cada etapa
del proceso de desarrollo del producto convergen hacia el prototipo 3D de la dinámica del
sistema que se desarrolla en Directx bajo Visual Basic, que se documenta en el capitulo 8
� �����
6. DISEÑO DETALLADO
La figura 6.1 ilustra un esquema de la concepción del producto que fue previamente
establecido desde el planteamiento de la misión en el capitulo 3, en ella se nota
claramente que las estrategias de control van a ser implementadas en Matlab y la
comunicación con el prototipo físico va a ser a través de la tarjeta de adquisición de datos
PCI 1200, esto justifica el hecho de que hasta el momento en el proceso de diseño no se
haya tenido en cuenta el software donde se implementaran las estrategias de control así
como el medio da adquisición de datos entre el sistema físico y el PC.
Figura 6.1: Esquema general del U.M.S
El diseño y desarrollo del péndulo invertido traslacional UMS, debe cumplir con todas las
exigencias establecidas en las necesidades y especificaciones definidas anteriormente,
además de desarrollar el concepto seleccionado no se debe olvidar los requerimientos y
� ����
expectativas surgidas en el capitulo 5, lo cual tiene que ver con la arquitectura, diseño
industrial y el diseño manufactura. Tendiendo en cuenta estos aspectos, y sin perder la
concepción mecatrónica que se le ha dado al producto el diseño del UMS se divide en los
siguientes sistemas funcionales que serán objeto del diseño detallado de modo que a
través de ellos se da forma final al concepto seleccionado para desarrollar el producto.
• Sistema mecánico
En este sistema se explica con detalle los subsistemas en que se ha divido la parte
mecánica del UMS y se referencia los planos que dimensionan sus componentes.
• Sistema electrónico
Se expone el acondicionamiento de señal de los sensores y actuadores así como su
selección.
• Sistema de control
Este sistema de control se expone en el capitulo 7, así como su implementación.
6.1. SISTEMA MECÁNICO Debido a que para el UMS se escogió una arquitectura modular, el sistema mecánico
posee cinco subconjuntos funcionales predominantes y cada uno de estos con sus
respectivas piezas, los cuales fueron resultados de numerosas revisiones y rediseños con
el objetivo de crear y diseñar una planta de buen funcionamiento y robustez para
garantizar un tiempo de vida amplio. En cada subconjunto se describen sus
características y funcionalidades. El diagrama de ensamble de cada subconjunto para
formar el sistema completo se encuentra en el anexo A.
6.1.1. Subconjunto Montaje Motor-Sensor. Este conjunto consta de las piezas que
sostienen y aseguran al motor DC el cual permite dar movimiento al carro, el sensor de
posición lineal y a una de las dos poleas en donde se monta la correa dentada. El
conjunto Motor–Sensor posee 8 piezas, están construidas en aluminio debido a razones
de economía, facilidad para su fabricación, así como su resistencia a la corrosión en
� ����
ambientes relativamente húmedos como es el caso del laboratorio que será el ambiente
de trabajo del sistema; cada una de las piezas que conforman este subconjunto se
pueden observar en detalle en el anexo A, así como si diagrama de ensamble en el anexo
A 2.
Figura 6.2: Subconjunto montaje motor-sensor
6.1.2. Subconjunto Carro. Es uno de los subconjuntos mas importantes, debido a que
es el elemento activo, el que prácticamente transmite el movimiento hacia los péndulos,
por esta característica, el diseño se orientó a buscar la facilidad para el libre movimiento
del carro, es decir, evitar al máximo que las fuerzas de fricción reduzcan su
desplazamiento pero al mismo tiempo tener el apoyo suficiente para que el sistema no
tuviese vibraciones o desajustes que cambiaran y/o afectaran la dinámica del sistema, por
tal motivo se optó por utilizar rodamientos lineales, para que el deslizamiento del carro
sobre las guías fuese el mejor y de forma puntual y no el que se presenta en los bujes. La
construcción en aluminio brinda ventajas, ya que permite que esta pieza sea liviana y por
ende reduce esfuerzos en el actuador. El subconjunto lo complementan otras piezas que
se ubican sobre el carro, las cuales sirven para colocar el sensor de posición angular del
péndulo No. 1, para sujetar la correa dentada y para instalar el conector DIN que se
utiliza para las señales del sensor. Para ver en detalle este subconjunto ir al anexo A 4
donde se muestra su diagrama de ensamble.
� �����
Figura 6.3: Subconjunto carro
6.1.3. Subconjunto Péndulos. Este es el subconjunto objetivo de todo el sistema, ya
que en éste se centra la mayor atención del desarrollo del UMS debido a que los péndulos
deben ser sostenidos en posición vertical por el sistema de control, es por esta razón que
este subconjunto debe presentar poca fricción y la suficiente robustez en su ensamble
debido al fuerte movimiento que se presenta cuando el sistema esta activo. El
subconjunto consta de 6 piezas distintas las cuales fueron construidas en aluminio para
que su peso no fuera tan significativo, se destaca en este subconjunto la pieza que acopla
los dos péndulos (cuando se configura la planta como péndulo doble), ya que paso por
muchos rediseños, pues esta pieza debía ser muy sencilla y de poco peso para que no
afectara en gran medida la dinámica del sistema, en esta pieza se monta el sensor de
posición angular del péndulo No. 2 y los dos rodamientos con sus respectivos anillos de
retención. En el anexo A 5 se encuentran con detalle las piezas de este subconjunto y su
diagrama de ensamble.
� �����
Figura 6.4: Subconjunto péndulos
6.1.4. Subconjunto Tensor. Un problema muy frecuente en los sistemas que utilizan
bandas, para la transmisión de potencia o de movimiento, es que estas tienden a
presentar un estiramiento de modo que la tensión en ellas va cambiando
dependientemente del tiempo y el uso de las mismas lo que ocasiona una perdida en la
eficiencia del sistema. Debido a esto la función principal de este subconjunto es brindar la
posibilidad graduar la tensión que necesita la correa dentada para su buen
funcionamiento (Dentro los limites permisibles de acuerdo al fabricante), la tensión de la
correa mediante tornillos que se acoplan al eje de la polea y así darle un uso mas
eficiente a la correa cuando comience a ceder. El subconjunto Tensor posee 5 piezas
independientes las cuales están detalladas en el anexo A, con su diagrama de ensamble
en el anexo A 3.
� �����
Figura 6.5: Subconjunto tensor
6.1.5. Subconjunto Estructura. Este subconjunto es básicamente donde descansan
todos los subconjuntos anteriores, además tiene la característica de poseer tres prensas,
las cuales hacen que todo el sistema se pueda ubicar en cualquier mesa o estructura que
pueda soportarla, esto brinda transportabilidad a todo el sistema. Este subconjunto consta
de 4 piezas independientes una de ellas es la platina soporte, cuya función es servir de
base a todos los subconjuntos anteriores y piezas del sistema tales como el almacén o
carcaza, en el cual se encuentran alojados todos los circuitos eléctricos y electrónicos
mas los accesorios modulares del UMS (péndulo simple y doble), y de las guías circulares
por donde se desliza el carro con sus respectivos soportes, para mas detalle, ir al anexo
A1.
� �����
Figura 6.6: Subconjunto estructura
Figura 6.7: Sistema mecánico completo
Existen a parte de las piezas manufacturadas para la planta otros elementos mecánicos
de vital importancia para el buen funcionamiento de todo el sistema UMS, los cuales son
elementos que se consiguen en el mercado local.
� �����
6.1.6. Correa Dentada. Este es el elemento primario de transmisión de movimiento,
esta conectada a través de una polea dentada, con el motor y sujetado al carro para
brindarle movimiento a éste.
La longitud de la correa dentada es calculada a partir de parámetros del sistema como la
distancias entre centros de las dos poleas y el diámetro entre estas4, según la expresión
Figura 6.8: Parámetros de selección de la correa dentada
( ) ( )��
�
�
×−++×+×=�
������
�����
�
Donde L= Longitud de la Correa
C=Distancia entre Centros
D= Diámetro de la Polea Mayor
d=Diámetro de la Polea Menor
�������������������������������������������������4 Mechanical Product Selection Catalog. [en linea] Chambersburg: TB Woods, 2005 [Consultado Septiembre,
2005]. Disponible en Internet: http://www.tbwoods.com. p. BEV_2.
(6.1)
� �����
Dado que los dos diámetros son iguales, el ultimo termino de la ecuación se cancela, los
valores correspondientes a la distancia entre centros es de 61 pulgadas y el diámetro de
las poleas es de 1.575 pulgadas
( )
�%����%���������
��������������
�'�'�
�
≈=
+×+×=
Longitudes de correas de las dimensiones calculadas son de difícil consecución a nivel
local, por lo tanto se optó por unir cuatro correas de 37 pulgadas de longitud, referencia
370XL037, con un paso 1/5 de pulgada (XL) y un ancho de 3/8 de pulgada (037), esta
unión no afecta el paso ni ancho de la correa dentada original.
6.1.7. Rodamientos. La utilización de rodamientos en distintas partes de la planta es de
gran ayuda para su correcto funcionamiento. Prácticamente se utilizaron dos clases de
rodamientos en el UMS, rodamientos lineales referencia KH1228, en el carro para que se
deslizara sobre las guías circulares debido a que estos ofrecen menor fricción entre el
carro y las guías, y rodamientos rígidos de bolas que gracias a su capacidad de soportar
altas cargas radiales son los útiles para sostener los ejes donde están los péndulos y las
poleas de la correa dentada, estos rodamientos son de referencia EE3. Las hojas de
datos de estos rodamientos se muestran en el anexo C.
Un aspecto importante en la concepción del sistema mecánico es que este fue diseñado
con el objetivo de que los sensores sufrieran el menor daño posible debido a las
condiciones de trabajo extremas a pueden ser sometidas y en especial en este tipo de
plantas. Por esto es un común denominador que las piezas donde van ubicados los
sensores se presente doble apoyo con rodamientos rígidos de bolas, esto con el objetivo
de que el momento provocado por los péndulos sea absorbido en los apoyos y no por el
eje del sensor tal como se ilustra en la figura 6.9.
(6.2)
(6.3)
� �����
Figura 6.9: Principio del doble apoyo para ubicación de sensores.
6.2. SISTEMA ELECTRICO Y ELECTRONICO El sistema eléctrico para el UMS se presenta como una caja negra introducida dentro del
almacén, buscando evitar el uso de elementos externos tales como fuentes de poder y
amplificadores de corriente. Este sistema consta de tres partes importantes que son
fuente de alimentación DC., amplificación de señales y acondicionamiento de señales. En
la figura 6.10 se expone claramente este concepto, ilustrando todas las entradas y las
salidas del sistema.
Dentro de este sistema se presentan elementos como el actuador y los sensores, los
cuales son de vital importancia para el funcionamiento total de la planta y conllevan a que
se realice sobre ellos todo el tratamiento eléctrico y electrónico que posee el sistema.
� �����
Figura 6.10: Principales requerimientos del sistema electrónico
6.2.1. Actuador. La selección del actuador a utilizar es uno de los aspectos más
importantes en la etapa de diseño detallado, para esto en primer lugar se diseñó el
sistema de control del UMS sin tener en cuenta la dinámica del motor, de modo que la
entrada a la planta fuese la fuerza aplicada al carro, así se obtiene a partir de muchos
controladores diseñados para las distintas configuraciones del sistema una aproximación
a la fuerza necesaria requerida para controlar este con ciertas condiciones iniciales.
Como es evidente en esta primera parte las condiciones iniciales bajo las cuales se
probaron los controladores fueron los limites de la zona lineal, es decir que se buscaba
que el sistema pudiese controlar al UMS si para la configuración péndulo simple el ángulo
era de 20º y para la configuración péndulo doble el ángulo 1 fuese de 20º y el ángulo 2 de
0º. Como resultado de esta fase la experiencia arrojo que si se controlaba el sistema
péndulo doble cumpliendo con el comportamiento esperado, la configuración péndulo
� ����
simple podía ser controlada sin problemas, entonces se decidió concentrar esfuerzos en
la primera configuración.
Del comportamiento deseado de los controladores diseñados se espera que a parte de
cumplir con el objetivo de estabilizar el sistema en la posición deseada, no utilice más de
la carrera disponible de acuerdo a las especificaciones de diseño del sistema (es decir +/-
0.7m ó 1.4m de carrera efectiva), esto con el objeto de acotar el diseño con el fin de que
la implementación de controladores en el UMS permita el trabajo pleno en la zona lineal y
a parte de que la posible implementación de un controlador de swing_up para las distintas
configuraciones pueda ser vislumbrada en el sistema.
La figura 6.11 ilustra uno de los resultados que se obtuvieron de esta fase en la selección
del actuador; en ella se observa como el recorrido del carro esta dentro de los límites
colocados como objetivo por parte del equipo de diseño.
Un aspecto importante en el comportamiento de la entrada al sistema, es que los
controladores diseñados no pueden exigir que se le apliquen cantidades elevadas de
fuerza para lograr el comportamiento deseado, pues esto implica que en el momento de
colocar un actuador real se necesite de un voltaje excesivo aplicado, en un intervalo de
tiempo muy pequeño, lo que no es posible de lograr en la realidad dado la saturación
propia de un actuador y las limitaciones de tiempo que se tienen, pues a pesar de que el
sistema es tratado a lo largo de este trabajo como continuo, no se debe perder la
generalidad de que en realidad se montara un sistema de control discreto, lo que impone
la restricción del tiempo de muestreo. Como resultado de esta última observación muchos
controladores deben ser rediseñados hasta alcanzar valores aceptables, los que fueron
establecidos a partir de la experimentación. Las caracteristicas de los controladores
diseñados es esta etapa no se exponen en el presente informe, dado que solo sirvieron
de apoyo para la selección del actuador y la efectividad del método usado se analiza en el
capitulo 7, pues los objetivos esperados con el actuador seleccionado fueron alcanzados.
� ����
Figura 6.11 Requerimientos de fuerza del sistema
En el capitulo 7 se expone el modelado del actuador y a continuación se reescribe la
ecuación final del modelo de fuerza del mismo obtenida en dicho capitulo
c
A
gM
A
gM xRrKK
VrR
KKF
•−= 2
22
Donde:
F = Fuerza que el motor aplica al carro V = Voltaje aplicado al motor
Kg = Reducción a la salida del eje. KM = Constante de Torque del motor
r = Radio de la polea dentada a la que se acopla el motor
Si de esta ecuación ignoramos el segundo sumando en el lado derecho debido a que la
velocidad del carro cuando se adicione la dinámica del motor variara, es posible obtener
� �����
una aproximación de un indicador, que señala las características que un motor debe tener
para lograr una operación optima del sistema, así a partir de los resultado de simulación
de la figura 6.11 se puede establecer que:
��
+&
, ���'����&≥
Teniendo entonces que La Frequerida es la máxima fuerza obtenida de las simulaciones, y el
V el voltaje máximo que se puede aplicar al motor, pues siendo la fuerza directamente
proporcional al voltaje la máxima fuerza en este caso la Frequerida, se alcanza cuando se
aplica el máximo voltaje al motor.
El indicador Km/Ra es solo una aproximación que ayuda a establecer una condición
mínima que un actuador debe cumplir si se espera que probablemente tenga un buen
desempeño en el sistema.
De acuerdo a los resultados experimentales se encontró que este indicador debe estar
por encima de 0.05 (valor al que se llega si en 6.4 se utiliza el máximo valor de la figura
6.11). De la simple observación de la ecuación de la dinámica del motor se entiende que
si el indicador propuesto se acerca a 1, el voltaje tiende a ser igual a la fuerza neta
transmitida al carro, si la velocidad de este es pequeña. Así se establece como valor limite
inferior para el indicador Km/Ra el valor de 0.05, pero los valores ideales estarán por
encima de 1.
Teniendo ya las características de torque del motor definidas con el indicador
seleccionado, se establecen otras particularidades que se deben tener en cuenta como:
• Velocidad de rotación del motor: Preferiblemente de regímenes altos dada la
respuesta esperada del sistema, y la posibilidad de implementar controladores de
swing_up
(6.4)
� �����
• Poca inercia en el eje: Para afectar poco los cambios bruscos de velocidad que
tendrá el sistema, y se puede traducir en buena velocidad de respuesta ante estos
cambios
• Consumo moderado de energía: Por requerimientos de diseño y costos del mismo
• Costo del motor: Por requerimientos de diseño
• Calidad del motor: Por requerimientos de diseño
Con estas características adicionales se termina de perfilar el motor deseado y se busca
dentro de la gran gama de este tipo de artefactos disponibles en el mercado, encontrando
que los requerimientos de Km/Ra deseados están por encima del presupuesto estimado
para el motor, pues se encuentran actuadores con excelentes especificaciones técnicas
pero cuyo precio supera el presupuesto total estimado para el proyecto, pero partiendo del
hecho que los controladores diseñados no requieren cantidades excesivas de fuerza en
tiempos muy pequeños es posible trabajar con 4 motores candidatos, que cumplen con
las expectativas esperadas siendo el indicador KM/RA,, cercano al valor inferior de 0.05.
El analisis de las curvas de torque disponibles de estos motores y los regimenes de
velocidad bajo los cuales pueden trabajar sin entrar en zonas de operación que
comprometan la vida util del motor, asi como el torque que deben vencer cuando el
sistema esta en reposo, fueron factores fundamentales al momento de escoger estos
motores.
Haciendo un analisis económico más riguroso, teniendo en cuenta que los motores
encontrados no se consiguen en el país, se opto por considerar solo dos motores
candidatos los cuales se relacionan a continución:
• Motor Buehler modelo 368: Voltaje de operación 12V, KM=0.0102, Ra=1.4. Pais
de Origen Estados Unidos
• Motor Faulhaber modelo 3863 H 024C: Voltaje de operación 24V, Km=0.0333,
Ra=0.62. Pais de Origen Alemania
� �����
Con los 2 motores candidatos se realizo todo el proceso desarrollado en el capitulo 7
dedicado al control, obteniendo resultados adecuados con el motor Faulhabber, cuyas
especificaciones se anexan en el apéndice C, siendo solo mostrados el el capitulo de
control estos resultados.
Es claro como el diseño del sistema de control estuvo muy relacionado con la selección
del actuador, y finalmente fue validada el uso del indicador propuesto que disminuyo
notablemente el gran espacio de soluciones disponibles para concluir el problema de la
selección del actuador, conduciendo a un número reducido de actuadores, lo que redujo
notablemente el proceso de diseño.
�
�
6.2.2. Sensores. Dentro del sistema Péndulo Invertido Traslacional es necesaria la
medición de dos variables físicas distintas, posición lineal y angular. Se opto para la
medición de estas variables por una misma clase de sensor de tipo absoluto, para que el
acondicionamiento y el funcionamiento se realicen de una manera fácil y duradera.
Teniendo en cuenta estos dos aspectos se seleccionó un sensor de posición angular de
marca VISHAY, modelo 601-1045 Smart Position Sensor, el cual dentro de su
empaquetamiento posee una salida eléctrica análoga que varia entre 0 y 5 voltios sobre
un rango de 360º sin necesidad de electrónica o instrumentación externa, tiene una
resolución menor a los 0.5º, trabajan a una velocidad moderada de 5 rev./seg, esta
versatilidad de los sensores hace que la adecuación de las señales sea sencilla. Para
más información acerca de este sensor ver el anexo C.
6.2.3. Fuente de Alimentación DC. Es la encargada de suministrar la energía eléctrica
a todos los componentes eléctricos y electrónicos del sistema, su funcionamiento es el
convencional, es decir, toma la señal eléctrica AC de la red y la transforma en energía
DC.
6.2.4. Amplificación de Señales. Este sistema cumple una labor importante debido a
que las señales de control provenientes del PC poseen baja corriente, lo cual hace que el
actuador no responda adecuadamente ante estas señales, además de colocar en peligro
� �����
la integridad de las salidas análogas de la tarjeta de adquisición de datos; para evitar
este inconveniente es necesario realizar una amplificación a la señal de control antes de
enviarla al actuador.
En este aspecto es importante saber que para la amplificación de estas señales existen
diferentes alternativas, las cuales fueron evaluadas y de entre las cuales se tenían el
puente H (H BRIDGE) , realizado con transistores de alta potencia que garantizan la
corriente necesaria para la operación del actuador, y por otro lado se tenia como
alternativa realizar un amplificador lineal con amplificadores operacionales que tuviesen
las características de desempeño necesarias para las condiciones de control que se
exponen.
La alternativa seleccionada fue utilizar un amplificador lineal realizado con amplificadores
operacionales, pues para señales de control es mucho más recomendado, debido esto a
que como se observara en el capitulo 7 la señal de control para muchos controladores
conmuta rápidamente y es necesario garantizar desde el punto de vista de el hardware
que el sistema pueda responder a las señales que el calculo del controlador envía desde
el PC, lo cual incrementa la robustez general del sistema, de lo contrario no se lograría el
objetivo pues nada se gana con implementar una excelente estrategia de control si el
hardware que se encarga de llevar esta estrategia hacia el actuador no puede hacerlo
convenientemente.
Además a pesar de que un modelo sea muy aproximado a la realidad siempre existirán
factores externos que no se tienen en cuenta (La naturaleza es imposible de reducir a un
modelo matemático, por muy complejo que este sea), y entre estos están los retardos que
se pueden tener a causa del hardware, siendo la alternativa más eficiente diseñar un
sistema electrónico muy robusto que induzca la menor cantidad de perturbaciones
posibles al sistema dinámico en general o le alejen demasiado del modelo realizado.
6.2.5. Acondicionamiento de señales. En este subsistema se realiza el filtrado de los
sensores de posición lineal y angular para bajar el nivel de ruido en la señales de estos,
para que al ser enviadas al PC tomen un valor con mayor precisión del estado de las
� �����
variables físicas. También en esta parte se encuentra el acondicionamiento de los
sensores limitadores de carrera, los cuales permiten alertar si el carro a llegado a los
limites del sistema, en este caso, se activaran estos sensores haciendo que el sistema no
envié energía al actuador y el sistemas se detenga, esto se hace como medida de
autoprotección de la planta.
El filtro de estas señales debe ser un filtro pasa bajos con su frecuencia de corte en 40Hz,
debido al ruido eléctrico que existe en el ambiente por razones conocidas es de alrededor
de 60HZ, y con base en la experiencia es conocido que con un filtro activo de estas
características se logra un buen comportamiento.
6.3. DISEÑO DEL SISTEMA ELECTRÓNICO
En esta sección se mostrara los distintos circuitos eléctricos que se describieron en la
sección 6.2, los se utilizaran para colocar en funcionamiento los dispositivos electrónicos
como sensores, finales de carrera y motor, siendo este último el elemento con mayor
requerimiento de potencia y por lo tanto necesitará mas énfasis.
El actuador es un motor DC y funciona en un rango de voltaje de ± 24 voltios y con una
demanda de corriente de 3.8 amperios trabajando en sus condiciones extremas. Debido a
estas necesidades se diseñó una fuente de alimentación de ± 30 V. a 15 A. y un
amplificador de voltaje de alta corriente (mayor o igual a 10 A.). Las características de
estos circuitos surgieron del análisis de los movimientos del actuador cuando se
encuentra en funcionamiento, pues el motor desplazará al carro en dos sentidos con gran
velocidad para darle el suficiente balanceo a los péndulos y lograr situarlos en la posición
deseada. Por lo tanto en cada cambio del sentido de giro del motor habrá una urgente
necesidad de corriente y es por esta razón que se tienen estas altas especificaciones en
la fuente de energía.
� �����
6.3.1 Fuentes de Alimentación. La fuente regulada simétrica se compone de un
transformador para bajar la tensión de 110 AC y que proporcione una corriente mínima de
15 amperios seguidamente se encuentra un puente rectificador de 20 amperios. Una vez
rectificada la señal se filtra mediante los condensadores electrolíticos colocados en
paralelo, luego se encuentran los integrados LM317 y LM337, los cuales son reguladores
de voltaje positivo y negativo respectivamente, su rango salida puede variar entre 1.25 a
37 v. Por ultimo se conectan 4 transistores de potencia en paralelo para cada regulador,
los cuales son los encargados de generan esta cantidad de corriente.
La segunda fuente que se mostrará es una fuente sencilla de 5 voltios para alimentar a los
tres sensores y a los dos finales de carrera. El montaje posee como elemento principal el
regulador LM7805, el cual nos entrega un voltaje fijo de 5 voltios a su salida, también
consta de un condensador a la entrada para filtrar la tensión de posibles transitorios y
picos indeseables y otro condensador a la salida encargado de mejorar la tensión de
rizado de la señal de salida
Figura 6.12�Fuente de alimentación regulada ± 30 v.
� �����
Figura 6.13 Fuente Regulada 5 v. �
6.3.2 Amplificador de Voltaje. Este circuito se puede mencionar como el mas
importante pues a través de este se introduce la acción de control enviado por el
computador con la ayuda de la tarjeta de adquisición de datos PCI 1200, cuyo rango de
salida a utilizar varia entre ± 5v. con una corriente muy baja (menor a 200mA). Debido a
que el motor requiere una corriente alta fue necesario usar un amplificador operacional
de referencia LM12CL el cual soporta corrientes de ± 10 A y puede ser alimentado por ±
30 v., pero por seguridad se coloco este amplificador en paralelo con otro integrado
semejante y poder manejar mayor cantidad de corriente. Cada operacional se configuro
como un amplificador no inversor logrando tener a la salida un voltaje máximo de ± 24 v
ante una entrada de ± 5v., es decir con una ganancia de 4.8.
� �����
Figura 6.14 Amplificador de voltaje �
Con la configuración mostrada (conexión en paralelo), la corriente que se puede
suministrar al motor es de aproximadamente 16 Amperios, lo que es necesario debido a
las grandes corrientes de arranque que puede tener el motor.
El circuito integrado seleccionado LM12Cl es un amplificador operacional con grandes
ventajas, pues tiene protección contra sobrevoltaje lo que hace más seguro el circuito y en
términos de costo beneficio muy conveniente, su hoja de especificaciones se puede
observar en el anexo C
� ����
Con este capitulo se cierra la fase de diseño mecatrónico del sistema, en el que se han
definido y dimensionado cada parte que conforma el UMS, asi se da paso para el
desarrollo de las estrategias de control del sistema, que sera el tema del siguiente
capitulo. Es claro en la presentación del documento que esta fase de diseño detallado
estuvo muy ligada a la etapa de control y su desarrollo fue simultáneo.
� ����
7 ESTRATEGIAS DE CONTROL DEL SISTEMA �
�
A lo largo de este capitulo se presentan las estrategias de control que se diseñaron para
cada una de las configuraciones del sistema, que fueron modeladas en el capitulo 2.
En una primera instancia se muestra el modelado del actuador (motor) que no ha sido
presentado hasta el momento y se incorpora a la descripción de la dinámica del sistema
como la fuente de fuerza que actúa sobre el carro incluyendo la transmisión escogida y
que ha sido documentado en capítulos anteriores (Ver capítulos 4, 5 y 6); es conveniente
aclarar como ha sido una constante en el desarrollo de este trabajo que los resultados
aquí mostrados se desarrollaron en conjunto con la etapa de selección de actuadores en
el diseño detallado, pues el actuador seleccionado es elegido con base a los
requerimientos de tórque y de fuerza necesarios para la correcta operación del sistema.
Seguido al modelado del actuador se presenta una validación de los modelos
matemáticos obtenidos en el capitulo 2, y a continuación se muestra el diseño de los
diferentes tipos de controladores, obteniendo resultados de las simulaciones y su
comparación con el desempeño en la implementación al sistema físico, insistiendo en que
son presentados solo los resultados de un proceso en el que se diseñaron gran cantidad
de controladores que como es anotado en cada uno por la metodología seguida requerían
de ajustes y procesos iterativos que no son mostrados a menos que impliquen relevancia
para el desarrollo del presente trabajo.
� ����
7.1. MODELADO DEL ACTUADOR El proceso de diseño desarrollado previamente se ha seleccionado como actuador del
sistema un motor DC, el cual proporcionara la fuerza necesaria para dar el movimiento al
carro y subsecuentemente a los péndulos.
Es importante modelar matemáticamente el actuador, en este caso particular del motor
DC, debido a que en el diseño y simulaciones de los controladores se deben tener en
cuenta los efectos que éste causa en la dinámica del sistema. El modelo del motor DC a
utilizar es el de fuerza, lo que quiere decir que la ecuación electromotriz debe relacionar el
voltaje aplicado al motor con la fuerza de éste.
El voltaje del motor esta definido por la ecuación
(7.1)
Donde V = Voltaje
RA = Resistencia de Armadura
IA = Corriente de Armadura
KM = Constante de Torque del Motor
�M = Velocidad Angular del Motor
El tórque generado por el motor es directamente proporcional a la corriente de armadura
que se aplica, lo que se muestra en la ecuación (7.2)
Donde �τ = Tórque Generado en la Salida Del Eje del Motor
Kg = Reducción a la salida del eje.
��� , ω+= &'��(
���� ,,=τ (7.2)
� ����
La fuerza que se aplica al carro es proporcional al tórque generado en la salida del eje
del motor y esta dado por la ecuación (7.3).
Donde F = Fuerza Generada por el Motor
r = Radio de salida de la polea dentada
La velocidad angular del motor se relaciona con la velocidad lineal alcanzada por la
banda dentada y por ende la desarrollada por el carro al que se acopla el péndulo, por el
radio r de la polea dentada de salida acoplada al eje del motor; esta relación se define en
la ecuación (7.4).
Donde •
�� = Velocidad Lineal del carro
Tomando la ecuación (7.2) sustituyéndola en la ecuación (7.3) y despejando la corriente
de armadura, resulta
Para completar el modelo electromotriz del motor, se reemplazan las ecuaciones (7.4) -
(7.5) en la ecuación (7.1), reorganizando la nueva ecuación y despejando la fuerza, se
obtiene el modelo electromotriz del motor en términos del voltaje aplicado y de la
velocidad del carro.
�� �τ=
��
� ,�
�•
=ω
��
�,,
�� =
�
�
��
�
���
+�
,,
�+
,,�
•−=
�
��
(7.3)
(7.4)
(7.5)
(7.6)
� ����
La ecuación (7.6) es utilizada para complementar los modelos del péndulo simple y
doble, donde la fuerza F es reemplazada por el modelo del motor, de modo que se tiene
una descripción matemática completa de la dinámica del sistema en términos de
parámetros de funcionamiento real, como es expresado más adelante en el desarrollo de
este capitulo.
7.2. CONTROL PÉNDULO SIMPLE El control para el sistema péndulo invertido consiste en llevar la barra colgante desde su
posición de equilibrio estable (�=180º) hasta su posición de equilibrio inestable (�=0º),
esto se consigue gracias al movimiento traslacional del carro producido por el actuador.
La estrategia de control implementada para lograr el objetivo de control se basa en un
análisis hecho al comportamiento dinámico del sistema, en la cuál se han identificado tres
zonas en el espacio de control del sistema. Las tres zonas se ilustran en la figura 7.10
Figura 7.1: Descripción de las diferentes zonas de movimiento del péndulo
� ����
• Zona de balanceo
Esta zona representa las regiones donde la linealización hecha para el modelo
matemático no es valida es decir en regiones donde el ángulo del péndulo con
respecto a la horizontal esta fuera del intervalo [ )��)�� −<< ϕ ]. El objetivo principal
en esta zona, (que es la posición inicial del péndulo), es llevar el péndulo a la zona
lineal con velocidades angular y lineal del carro cero, para que así pueda utilizarse un
controlador lineal.
Para el control en esta zona se encuentran muchas alternativas en la bibliografía
consultada, y aquí se implementará una técnica llamada “Swing_up”.
• Zona muerta (dead zone)
Mediante las técnicas de Swing Up existentes, el péndulo se lleva a la zona lineal pero
con velocidades angular y lineal lejanas de cero lo que implica que los controladores
lineales implementados no funcionen. Para solucionar este problema se implementa
la llamada zona muerta que consiste en aplicarle al sistema una entrada cero en un
intervalo comprendido entre el final de la zona de balanceo y el inicio de la zona lineal,
con esto se garantiza que el sistema queda dentro de la zona lineal, en condiciones
iniciales aptas para que el controlador lineal pueda actuar sobre el sistema sin ningún
inconveniente, pues la energía extra que lleva el sistema cuando termina el
controlador de swing up es “gastada” venciendo la gravedad. Esta zona muerta se
ajusta en simulación de acuerdo ala dinámica del sistema
• Zona lineal
La zona lineal comprende la zona en la cual se hace la linealización para el modelo
matemático [ )��)�� <<− ϕ ], y en ella se aplican técnicas de control lineales para
llevar el sistema a )�=ϕ
� ����
7.2.1. Diseño del sistema de control para la zona Lineal. Para la zona lineal se
implementará un regulador lineal cuadrático (LQR) cuya implementación se expone a
continuación.
Este controlador obedece la ley de control −−= ���,�,�� donde el error (e) es igual a
(r - y), el valor fijado para (r) corresponde a la referencia a la cual se desea llevar al
sistema, e (y) es la salida. La figura 7.11 expone la implementación del controlador en
Simulink.
Figura 7.2: Regulador lineal por LQR
Para encontrar el valor de la ganancia (Ki) se debe aumentar el sistema de la siguiente
manera:
��
�
�=�
�
�
�
−=
�*���������������
�
� � ��
�
�� �'���&�&
��
�'���&�&
Reemplazando el valor las matrices A, C, B y un vector ceros de tamaño (nx1) se halla el
valor de las matrices aumentadas (AAumentada) y (BAumentada ).
����
� ����
������
�
�
�
−
−−=
�����
��������������������
�����
�����������������
�����
����&�&�
������
�
�
�
=
�
���$
�
����
�
�'���&�&�
Para calcular la vector de ganancias aumentado (KAum= [K � Ki]) se utiliza el control
lineal cuadrático, este método tiene una ventaja sobre el método de asignación de polos
pues nos permite determinar los valores de las ganancias y utilizar una cantidad mínima
de energía para estabilizar el sistema, la técnica LQR calcula el vector de realimentación
óptima tal que el sistema en lazo cerrado minimiza un índice de desempeño cuadrático J:
( ) ⋅⋅+⋅= ��# ������ +,
Donde Q es una matriz simétrica real definida positiva o semidefinida positiva, por medio
de ella se asignan el peso correspondiente a cada variable de estado. La matriz R es
simétrica real definida positiva y permite penalizar el esfuerzo de control y u es la acción
de control. El problema del control optimo se reduce a encontrar la matriz de ganancias K
que minimizan el índice de desempeño y esto se consigue al resolver la ecuación de
Ricatti adjunta al problema de optimización que se muestra en (7.11).
�� =+−+ ∗−∗∗ �������� ��
����
(7.9)
(7.10)
(7.11)
� ����
En donde si existe una matriz P definida positiva entonces el sistema es estable, o la
ecuación característica del sistema tendrá todos sus autovalores con parte real negativa.
Una vez la matriz P es encontrada (La ecuación de Ricatti es resuelta), la matriz de
ganancias K viene dada por 7.12
��� �∗−∗ = �
Los valores numéricos de las matrices Q y R se presentan a continuación
������
�
�
�
=
������
������
�������
�������
�������
�
[ ]�=�
De los valores que se asignan a la matriz Q en (7.13), se entiende que para la estrategia
de control, tiene más peso la posición del carro y la posición del péndulo, y esto se vera
reflejado en el desempeño del controlador. A estos valores se llego a partir de la iteración
observando el desempeño y el cambio en las estrategias de control cuando se variaban
estos valores.
Utilizando el comando lqr de Matlab (que resuelve la ecuación de Ricatti adjunta al
problema de optimización) se calcula el vector de realimentación (Kaum) dando como
resultado.
[ ]
[ ]
1623.3
22.9231- 95.8173- 26.1823- 27.5649-
3.1623 22.9231- 95.8173- 26.1823- 27.5649-
=
=
=
i
aum
K
K
K
(7.13)
(7.15 a)
(7.14)
(7.15 b)
(7.15 c)
(7.12)
� ����
El código de Matlab para el cálculo de estas constantes se muestra en el anexo D
7.2.2. Diseño de sistema de control para zona lineal por modos deslizantes. A
continuación se presenta el diseño de un controlador alternativo para la zona lineal del
péndulo simple utilizando modos deslizantes5, que es una técnica que se basa en la teoría
de estabilidad de Lyapunov y que representa un enfoque diferente de los algoritmos de
control tradicionales. La teoría de sistemas de Control por Modo Deslizante (CMD)
representa una parte fundamental de la teoría de sistemas no lineales propuesta en la
antigua Unión Soviética por S.V. Emelyanov del Institute of Control Sciences, Y. Itkis y V.
A. Utkin (HUNG 1993, UTKIN 1977-1978, ITKIS 1976). Esta teoría consiste en el empleo
de acciones de control conmutadas o discontinuas sobre una o varias superficies de
conmutación y uno de los principales inconvenientes asociados a la técnica de CMD es la
intensa actividad que debe ejercer la señal de control, lo que resulta en la presencia de
oscilaciones de alta frecuencia conocidas como “chattering”.
La literatura sobre modos deslizantes es dispersa y hay múltiples enfoques para abordar
el diseño de un controlador con la técnica de CMD, en general la metodología que se va a
abordar va a consistir de dos etapas: selección de una variable interruptora y luego
encontrar el control que force el modo deslizante en esta variable.
En (7.16) se muestra la llamada forma regular de sistemas mecánicos, donde �� �� ��� � �� ∈∈ − y B2 es una m x m matriz no singular, siendo n el número de variables
del sistema, y m el numero de entradas del sistema
'���������
�����
� �� �
� �
�������
����
+==
�
�
�������������������������������������������������5 FRIDMAN, Leonid. Notas del curso Introducción al control por modos deslizantes [en linea]. Mexico: Autonomous
University of Mexico, 2005. [consultado 05 de Diciembre, 2005]. Disponible en Internet: http://verona.fi-p.unam.mx/~lfridmn/archivos.html.
(7.16)
� ���
El primer bloque no depende del control, y la dimensión del segundo bloque coincide con
la dimensión del control. La primera etapa del diseño consiste en manejar el m-
dimensional vector de estado x2, como el control del primer bloque y diseñado como una
función del estado x1 del primer bloque, en correspondencia con algún criterio de
desempeño.
�� ��� �-� −=
En la segunda etapa, el control discontinuo es para ser seleccionado para forzar el modo
deslizante en la variable
���� � ����� =+= �-����-
Después el modo deslizante ocurre en la variable deslizante (7.17), la condición (7.18) es
sostenida y el movimiento adicional en el sistema es gobernado por la ecuación
diferencial
�� � � ����� ��-��� −=�
Con las propiedades dinámicas deseadas.
Luego se debe encontrar una transformación de coordenadas reduciendo el sistema
original expresado en las ecuaciones (2.20) y (2.21), a la forma regular (7.16) antes de
diseñar el control de modo deslizante.
Para la transformación de coordenadas se asume que el sistema en la forma original tiene
la forma
[ ]��� ���'�
'�������
������
� �� �
�=ℜ∈ℜ∈+=�
b(x, t) es un vector n-dimensional con componentes bi(x, t), i=1...., n. Asumimos que el
más pequeño de ellos, es bn(x, t), es diferente de cero para cualquier x y t:
�� � ≠����
Permitimos una solución para un sistema auxiliar de orden (n-1)
1-1....ni // == nini bbdxdx
(7.17)
(7.18)
(7.19)
(7.20)
(7.21)
� ���
Es un juego de funciones
��$�������"������������� � == ��� ��� ϕ
Si se introduce la transformación de coordenadas
��$�������"������ � =−= ���� ���� ϕ
De acuerdo a las ecuaciones (7.20) a (7.23), las ecuaciones de movimiento con respecto
al nuevo vector de estado (y1,…, yn-1, xn) son de la forma
'���
��
��
'���
�'���
��
���
��
����
���
�
�
�
�
��
�
�
���
�
�
�
�
����
+=
=−=
+−+=−=
−=
�
��
��
��$�������"�����������
�������
� �ϕ
Reemplazando Xi por � � ��� ��� ϕ+ lleva a las ecuaciones de movimiento
utxybxyfxtxyfy
nnnn
n
),,(),(*),,(*+=
=�
�
Donde y y f* son vectores n-dimensiónales, y fn* y b*n son funciones escalares.
Para expresar la dinámica del péndulo simple en la forma (7.16), se toman las ecuaciones
(2.20) y (2.21) y se expresan como se muestra a continuación, por simple despeje
algebraico de variables
( ))cos(*)sin()(1
*34
)sin()cos(1
θθθ
θθ
ugmMkl
umgk
x
−+=
��
���
� +−=
��
��
(7.22)
(7.23)
(7.24)
(7.25)
� ����
Donde
������������������������������������������������"��+��������������������������������������������������������
����������������������������������������������
���������������������������������������������������
�
�
θθ
θ
�(''
�.
+=
>−+=
El sistema re expresado en (7.25), tiene la forma
'������
'������
��� �
��� �
���
���
≈≈
≈≈
+=
+=
���
���
Que es el caso particular de n=2 del sistema expresado en (7.20)
Se debe encontrar tal que la ecuación diferencial de segundo orden con respecto a y no
dependa del control u*, asi que de acuerdo a (7.23) y (7.21)
��������������������������������������������
�
�
�
�-
�-
��������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������
θθϕ
θϕ(
�
�
��
−==∂∂
−=
De donde se halla
( ) ��������������������������./���0�����
������������������������������������������������� θθϕ +−= (
(�
Ahora a partir de (7.28) y (7.30) se deriva y con respecto al tiempo obteniendo
(7.30)
(7.29)
(7.28)
(7.27)
(7.26)
� ����
)tan(),(
)tan()cos(3
434
)(cos34
)(cos)sin()cos(
34l
xy
)cos(3
4
22
2
2
θθθ
θθθ
θ
θθθθθ
θθ
���
���
�������
���
Gy
lMmkg
y
lxy
=���
���
+��
�
�+�
�
���
� −=
���
����
� ++=
+=
�
�
Luego a partir de (7.25) y (7.34) se expresa la forma regular del sistema asi:
*),(
)tan(),(
uv
Gy
θθθθθ
==
��
��� (7.35)
Donde
( )( )θθθ
θθθθθ
cos*sin1
*),(
y
cos34
34
cos34
),(2
2
ugmMkl
uv
lMm
kg
G
−+=
+���
����
�+�
�
���
� −=��
�
(7.36)
El diseño del controlador para este sistema se muestra a continuación
Paso 1
La ecuación ),( θθ �G en (7.35) es positiva si –�/2>�< � /2, luego la función tan(�) se
maneja como control de acuerdo a lo expresado en (7.17)
�**0����������������/� �����+=>= ααθ - (7.37)
(7.31) (7.32) (7.33) (7.34) �
� ����
Entonces la ecuación superior del sistema (7.35) se puede expresar como
( ) 212
2
1),( SGyS
Syy
−−−=
+−=
θθα ��
�
(7.38)
Para el sistema expresado en (7.38) se debe garantizar que el punto de equilibrio es
asintoticamente estable con
(0,0))(x, teconsiguien por y ,t como asi 0S y 0y 2 →∞→→→ θ , que es la
característica deseada del sistema. Para lograr esto se tiene la constante �1 y en hallar
o establecer un valor de esta constante que garantice la estabilidad asintótica del sistema
finaliza el primer paso del diseño.
Apoyándose en la teoría de estabilidad de Lyapunov si se tiene la siguiente función
candidata de Lyapunov
( )22
2
21
SyV +=
Con V= 0 en el origen (y,S2)=(0,0), su derivada con respecto al tiempo será: 2
212 )1( SGyV −−−= α�
Luego la derivada de la función candidata de Lyapunov es negativa (Por tanto
garantizando la estabilidad asintótica), si ��� >−!α , y dado que la función G es positiva
si �1�1 πθπ >>− , que es el dominio donde se pretende controlar el sistema entonces,
bastara con �1�� >> !α
Paso 2
De (7.18) se establece que:
( )��- �++= �� �/� αθ (7.39)
� ����
Luego el implementar la señal de control U* tal que permita que la expresión en (7.39)
tienda asintoticamente a cero, es el objetivo de este segundo paso en el diseño del
controlador.
La función S1 tiende asintoticamente a cero si es una solución de la ecuación diferencial
��
��
���--
θα
−=� (7.40)
Ó
������ � ��
�
� =+= --��- αθθθ ��� (7.41)
Con
( )θαθθ
�/����
���� !�- ++−= ��� (7.42)
De (7.41) se tiene que la superficie de deslizamiento es
( ) 0tancos 11
21 =+++= SGyS αθθαθ �� (7.43)
Luego el modo deslizante existe si S tiene signo opuesto con respecto a su deriva con
respecto al tiempo.
Calculando la derivada de S con respecto al tiempo se tiene:
( )( ) ( )
( )( ) θθ
θθθθθθαθθθθα
αθθαθθθθα
����
���
��
���
� ++−−+
++��
���
� −+��
���
� +=
22
12
1
12
11
cossin
34
sincos2
sincossin2sincos2
tancoscos*sin1
sin38
1
lkgm
GyG
SGugmMkl
lS
(7.44)
� ����
),,(),( yFvS ���� θθθθ +Ψ= (7.45)
Donde
θθαθθ sin38
1),( 1�� l+=Ψ (7.46)
( )( )θ
θθθθθθθα
θθθθααθθαθθ
��
�����
��
���
� +
−−++=
22
1
211
21
cossin
34
sincos2
sincos
sin2sincos2costan),,(
lkgm
GyGSGyF (7.47)
Deteniéndose en (7.45) es deducible que el control conmutado solo afecta a v pues es la
única función que depende de U*, luego se debe hacer que v garantice la condición de
existencia del modo deslizante, esto se logra si se define la funcion v como se expresa a
continuación.
maxmin
0
0
1
)),((
Fv
DondeSsignvv
Ψ≥
Ψ−= θθ �
(7.48)
Pues asi se garantiza que el primer sumando del lado derecho de (7.45), nunca sea
menor al segundo sumado del mismo lado, luego el signo de S define el signo de la
derivada de S.
Luego la señal de control U se obtiene a partir de (7.48) , (7.36) y (7.27)
( )( ) ( )( )Ψ+−+= -����.(�(��' �
� �"�����"����
� θθθθθ
� (7.49)
� ����
A partir de (7.45), e igualando a –n*sign(S), se puede a través de despeje matemático
llegar a la función U, pero el análisis realizado evita este procedimiento, y se basa en la
estabilidad en el sentido de Lyapunov.
Para la implementación del controlador, el valor de klv0 es de 24V, que es el límite de
voltaje que se le puede aplicar al motor que actúa como fuente de fuerza para el sistema.
La ecuación 7.49 puede se escrita como se expone en 7.49b, pues al ser S la superficie
de deslizamiento su signo prevalece sobre el de la función además en (7.48) al dividir
entre 22ψ el signo de ψ , su signo es tenido en cuenta.
( )( ) ( )( )-����.(�(��' �
� �"�����"����
� +−+= θθθθθ
� (7.49b)
En la sección de simulación se observaran las diferencias entre aplicar cualquiera de las
dos estrategias aquí propuestas
7.2.3. Corrección de las oscilaciones de alta frecuencia en el controlador CMD.
Como se anotó anteriormente el control por modos deslizantes tiene el inconveniente de
que se presentan oscilaciones de alta frecuencia, debido a la naturaleza misma del
controlador, pues se utilizan acciones de control conmutadas; esto ha llevado a que en
muchos sistemas reales no se implemente este tipo de controladores debido a los
problemas que en muchos sistemas esto significa (por ejemplo control de posición en
robots, maquinas de control numérico, etc.), además en el momento de una
implementación, los sistemas de regulación de potencia a actuadores, pueden tender a
disipar más calor que el que se debería, disminuyendo además la vida útil de los equipos,
sin contar con la lentitud en la respuesta que puede tener un sistema mecánico, cuando
en la señal de control la acción conmuta por encima de sus limites, hecho este que puede
llevar al colapso a un sistema completo.
� ����
Es entonces importante para dar valor agregado a un sistema de control por modos
deslizantes que se puedan atenuar estas oscilaciones o “chattering” en la señal de
control, a fin de hacer el controlador mucho más fiable al momento de una
implementación real, sin perder las buenas características que pueda tener el controlador.
De acuerdo a Slotine6, una solución para atenuar las oscilaciones es introducir una capa
límite alrededor de la superficie de conmutación, y usar una aproximación lineal de la
función Sign con la capa limite. Entonces la expresión Sign(S), deberá ser reemplazada
por:
���
����
�
γ-
-&� (7.50)
Donde la constante � define la amplitud de la capa límite, y la función Sat se define como
���
�
���
�
�
>���
����
�
≤
=���
����
�
�
�
γγ
γγ
γ-
��-
����
-��
-
-�&� (7.51)
Luego es claro como la conmutación solo se hace si se esta fuera de la capa limite, pero
la robustez del sistema es una función de la magnitud de � 7.
7.2.4. Diseño del sistema de control para la zona de balanceo. Esta técnica de
control se basa en inyectar energía al péndulo invertido cuando se encuentra en un
estado de reposo y lograr que este a través del balanceo alcance una zona cercana a su
posición erecta y es entonces donde actúa el controlador de la zona muerta y el control
de la zona lineal.
�������������������������������������������������6 SLOTINE J.J. and Li W., Applied Nonlinear Control, Englewood Cliffs, NJ: Prentice-Hall, 1991. p. 461. �
�
�
� ����
Sea la masa del péndulo, el momento de inercia del péndulo con respecto al pivote,
y ( es la distancia desde el apoyo a su centro de masa. El ángulo entre la vertical y el
péndulo es θ , θ es positivo en el sentido de las manecillas del reloj. La aceleración de la
gravedad � y la aceleración del pivote es (v) se tiene que la ecuación que define la
dinámica del sistema se puede expresar como se muestra en la ecuación 7.52.
�������� =+−••
θθθ �(�(���
��
=∂∂φ
Introduciendo las normalizaciones
(�/�
⋅⋅=
�
�' =
Las ecuaciones de movimiento para el péndulo son
��������� θωθωθ ⋅−=
••'��� ��
�'�
⋅=∂∂φ
La energía en su respuesta natural, haciendo uso de la terminología anterior, se expresa
como en (7.58).
(7.52)
(7.53)
(7.54)
(7.55)
(7.57)
(7.56)
� ���
�������
�
�−+==
•
θωθ
�
��(
La ley de control propuesta por Astrom y Furuta7 (1999) es
����������� θθ•
⋅−= ���� ,�&�' ��
La energía deseada es tomada cuando el péndulo se encuentra en el punto de equilibrio
inestable (�=0º)
�
�� � ⋅⋅=
La ecuación (7.59) propone que la ley de control aplicada al sistema sea proporcional en
un factor K a la diferencia de energía entre la energía total del sistema y la energía
deseada, con la correspondiente función de saturación que garantiza que se tengan en
cuenta parámetros existentes en una implementación real.
El parámetro de diseño es la ganancia (K), cuyo valor asignado luego de un proceso
iterativo es el mostrado en (7.61).
K=1.04
Los límites de saturación corresponden a ��± voltios, debido a los rangos de voltaje del
motor DC.
�������������������������������������������������7� ASTROM, K y FURUTA, K. Swining Up A Pendulum By Energy Control [en línea]. San Francisco: IFAC World Congreso, 1996. [Consultado Agosto, 2005] Disponible en Internet: http://www.control.lth.se/~kja/furutapaper.pdf . p. 1-12. �
(7.58)
(7.59)
(7.60)
(7.61)
� ���
7.3. CONTROL PÉNDULO DOBLE El control del péndulo doble que se expone en esta sección esta orientado a la zona lineal
del sistema, aunque el prototipo físico ha sido diseñado con la posibilidad de explorar
diversas técnicas de levantamiento del péndulo desde su posición de equilibrio estable.
Para estabilizar ambos péndulos del sistema en su posición de equilibrio inestable, un
sistema de control en lazo cerrado es necesario para que el sistema pueda resistir
perturbaciones externas. El controlador también debe ser diseñado para que el carro
regrese al set point deseado.
7.3.1. Diseño del sistema de control. Al igual que en el péndulo simple (en la zona
lineal) se realizará un regulador lineal cuadrático (LQR) cuya implementación se expone
a continuación.
Figura 7.3: Regulador diseñado para el péndulo doble
A continuación se muestran los valores para las matrices Q y R que se utilizaron para el
calculo de la matriz de ganancias K. Dichas matrices fueron establecidas luego de correr
muchas simulaciones y establecer que los valores aquí consignados minimizan el voltaje
aplicado al sistema para un rango de operación bastante amplio.
� ����
���������
�
�
�
=
�������
��������
�������
�������
�������
����������
���������
�
[ ]�=�
Con la ayuda del comando lqr de Matlab obtenemos como resultado la matriz de
ganancias para la realimentación de los estados y la ganancia Ki mostradas en (7.64).
[ ]����$��
������������������������������������������������
==
�
El código completo de la implementación se muestra en el anexo D
7.4. IMPLEMENTACIÓN Y SIMULACIÓN DE CONTROLADORES
El proceso de simulación es importante cuando se desea controlar un sistema, porque es
aquí donde se ajustan y definen ciertos parámetros de las técnicas de control, cuyas
respuestas son posibles de visualizar, para posteriormente realizar un análisis de los
sucedido y lograr así que el sistema sea controlado en un corto tiempo.
En esta sección se mostraran los resultados de la implementación de controladores
expuestos en la sección anterior para las dos configuraciones del U.M.S. los cuales se
realizaron en SimulinkTM V 6.5 , y para todos el algoritmo de resolución de las ecuaciones
diferenciales que describen el sistema fue un método de paso fijo ODE 4 (Runge Kutta de
Orden 4), con un tamaño de paso de 0.01 s, esto con el fin de aproximar la simulación al
posible tiempo de muestreo que se utilicé en la DAQ en una implementación real, además
será importante en el momento de realizar el prototipo virtual
(7.62)
(7.63)
(7.64)
� ����
7.4.1. Péndulo Invertido Simple
7.4.1.1. Control por Realimentación del estado mediante LQR. La figura 7.4 ilustra
la implementación en Simulink del controlador diseñado para la zona lineal del sistema.
En la figura el subsistema “PLANTA” es el subsistema expuesto en la figura 2.5, y es claro
como en la acción de control se ha impuesto un saturador cuyos limites son +/- 24 V, pues
se simula la limitación del sistema de solo poder funcionar bajo estos rangos de voltaje
debido al actuador utilizado.
Figura 7.4: Esquema en Simulink del control por realimentación del estado
La figura 7.5 muestran la respuesta del sistema de control implementado sobre la planta
para las condiciones iniciales Posición del Carro (x): 0 m. y Posición Angular (�): 30º; en
ella es claro como el sistema mueve el carro aproximadamente 69 cm del origen y lo
retorna a cero en aproximadamente 2.7 segundos, pero la posición del péndulo es llevada
de su posición inicial de 30º a -17 y luego a cero en 2.5 segundos lo que indica que el
sistema primero estabiliza el péndulo en su posición de equilibrio inestable (Cero grados),
y luego lleva el sistema a x=0, en la grafica del esfuerzo de control se muestra el voltaje
aplicado al actuador, el cual no supera el valor de saturación de +- 24V propuesto en el
diseño del controlador.
� ����
Figura 7.5: Respuestas del sistema para x0 = 0 y Angulo0 =30º �
La figura 7.6 muestra la respuesta del controlador para las condiciones iniciales posición
angular 20º, posición lineal del carro 0 m. se puede apreciar que el movimiento máximo
del carro utilizado para estabilizar el sistema es de 40 cm logrando la estabilización total
del sistema en un tiempo de 2.5 s.
En las dos pruebas realizadas hasta el momento el sistema fue estabilizado por el
controlador propuesto, sin superar la carrera máxima que se tiene para el sistema que es
de +/- 0.7 m, pero estuvo muy cerca de llegar a este limite. En la figura 7.7 se ilustran los
resultados de colocar al sistema partiendo desde varias condiciones iniciales, siendo
siempre x=0 y los ángulos 30º, 40º y 53º, siendo claro como es todos los casos el sistema
es controlado aun para estas condiciones tan severas y lejanas de la zona lineal, lo que
es un indicador de la efectividad del controlador diseñado, pues a pesar de ser un
� ����
controlador hecho a partir de la planta lineal, al simularlo en la planta no lineal estabiliza al
sistema para condiciones muy alejadas de la zona lineal del mismo
Figura 7.6: Respuesta del sistema para x0 = 0 y Angulo0 =20º
�
�
El principal inconveniente de los resultados mostrados en la figura 7.7 es que la carrera
necesaria para controlar el sistema es mayor que 0.7, una solución posible para este
problema e implementar en el prototipo real este tipo de ángulos tan grandes, es variar la
condición inicial del carro, la cual puede ser hasta de -0.7 m. La figura 7.8 muestra los
resultados para los mismos ángulos simulados en la figura 7.7, pero la condición inicial
será -0.6 m. Como es claro en dicha figura solo no será posible implementar la condición
inicial cuyo ángulo es 52º pues requiere de una carrera efectiva superior a 1.4 m.
� ����
Figura 7.7: Respuesta del sistema para condiciones iniciales lejanas de la zona lineal �
Figura 7.8 Respuesta del sistema para condiciones para X0 diferente a cero
� ����
En la figura 7.9 se ilustra la respuesta del sistema cuando las condiciones iniciales son :
posición angular 55º y posición lineal del carro 0 m, es claro como el controlador
implementado no puede controlar el sistema, dado que se encuentra muy lejos de la zona
lineal, además en la grafica del esfuerzo de control muestra como la saturación +/-24V,
incide pues la energía que se debe ingresar al sistema es superior a la que este limite de
saturación impone y la equivalencia que el sistema hace ingresando el máximo valor
permitido durante un periodo de tiempo resulta insuficiente
Figura 7.9: Respuesta de las variables de control ante prueba fallida
Otra característica interesante es la de hacer que el sistema siga una referencia, en su
posición lineal, basado esto en que el sistema es estable cuando el ángulo es cero
grados sin importar la posición. Para esto en la realimentación del estado, a x se le resta
el valor de la referencia como se muestra en la figura 7.10, con esto se logra que la
realimentación de este estado sea el error de la posición del carro, y como el regulador
� ����
hace que el estado realimentado converja a cero, se hace que el sistema lleve el error de
posición a cero logrando alcanzar la posición deseada
Figura 7.10: Cambio en el controlador para hacer que siga referencia en x
La figura 7.11 ilustra los resultados del regulador, siendo la condición inicial -0.6 m para
todos los casos, y es claro como para todos los casos se sigue la referencia que se coloco
en 0.3 m, sin sobrepasar el limite de 0.7 m
Figura 7.11: Resultados del regulador
�
� ����
7.4.1.2. Control por Modos deslizantes. Las estrategias de control que se diseñaron en las
ecuaciones (7.49) a (7.50), se implementaron en simulink como se ilustra en la figura
7.12, en ella al variar el valor de la constante c (en color rojo), cambia el tipo de
controlador que se va utilizar de manera que si se hace igual a 1 la estrategia de control
implementada en la ecuación (7.49), si es 2 se implementa la (7.49b), y si es 3 el ultimo
termino de la ecuación 7.49 es S, es decir se tiene en cuenta solo el valor de la superficie
de deslizamiento. En la figura 7.12 la constante llamada eta indica el valor de la
saturación de la superficie de deslizamiento, por tanto al cambiar esta constante se varia
la magnitud de el control conmutado, y es interesante observar la respuesta del sistema
frente a los cambios en esta. En las figuras de resultados de estas simulaciones las
magnitudes para voltaje, posición angular, y posición lineal son Voltios, Grados y Metros
respectivamente
La figura 7.13 muestra los resultados de la implementación de la estrategia de control de
la ecuación (7.49) con 20º en la posición del péndulo, en ella si se compara su respuesta
con las mismas condiciones iniciales, es claro como la acción de este controlador es más
efectiva desde el punto de vista que el máximo desplazamiento en la posición del carro es
0.3 m que es inferior a la respuesta del LQR, además el ángulo solo es desplazado a -5º
en su recorrido hacia el punto de equilibrio.
Figura 7.12 Implementación en Simulink del controlador CMD �
� ���
Figura 7.13�Controlador CMD si c=1 con ángulo = 20º
�Figura 7.14:�Controlador CMD si c=1 con ángulo = 31º
� ���
La figura 7.14 ilustra la reapuesta de este controlador cuando la condición inicial del
ángulo es 31º, en ella su respuesta es muy similar al controlador lqr diseñado con
anterioridad.
Figura 7.15: Controlador CMD si c=1 con ángulo = 58º
En la figura 7.15 se observa la respuesta del controlador ante una condición inicial de
ángulo de 58º que a pesar de estar lejos de la zona lineal controla el sistema, pero en
comparación con el controlador LQR diseñado anteriormente no ofrece grandes
ventajas, pues solo se logran tres grados más en el control del sistema, pues la respuesta
ante una condición inicial del ángulo de 59º se ilustra en 7.16 y no se controla el sistema.
�
�
�
�
�
�
�
� ����
Figura 7.16: Controlador CMD si c=1 con ángulo = 59º
�
Si en el esquema de la figura 7.12 se hace 2 la constante c la estrategia de control
implementada es la de la ecuación (7.49b) por tanto la superficie de deslizamiento será
solo S. es decir que el ultimo término de la ecuación será sign(S)
Las figuras 7.17 a 7.20 se ilustran los resultados de hacer este cambio al controlador por
modos deslizantes, siendo 24 el valor de eta.
�Con las figuras 7.17 y 7.18 los resultados obtenidos son similares a los que se vieron en
los controladores expuestos anteriormente (LQR y Modos deslizantes con c=1), pues con
20º y 30º su respuesta es similar.
� ����
Figura 7.17: Controlador CMD si c=2 con ángulo = 20º
�
�
Figura 7.18: Controlador CMD si c=2 con ángulo = 30º
�
�
� ����
Las figura 7.19 y 7.20 son contundentes al demostrar que al utilizar esta superficie de
deslizamiento se aumenta notablemente la robustez del controlador pues es posible
controlar hasta 69º , lo que indica que se justifica la elaboración de este tipo de
controladores dado que el margen de control en el ángulo del péndulo aumenta
considerablemente. La figura 7.20 ilustra que solo hasta 70º se pierde la posibilidad de
controlar el sistema
Figura 7.19: Controlador CMD si c=2 con ángulo = 69º
�
Figura 7.20: Controlador CMD si c=2 con ángulo = 70º
�
� ����
Cuando se diseñan controladores por modos deslizantes la condición de ( )--���- η−=� ,
se establece para hacer que la función de deslizamiento S decrezca con el tipo cuando
este tiende a infinito ella tienda a cero, pero si esto esta garantizado , es posible cambiar
este término en la estrategia de control y colocar directamente la función de deslizamiento
S, con esto se logra eliminar la función conmutada que hace aparecer esas oscilaciones
que los controladores anteriores presentan cuando alcanzan el punto de equilibrio.
Para observar cual seria el comportamiento del sistema frente a este cambio en la
estrategia de control la constante c se hace 3 en el esquema de la figura 7.12. La figura
7.21 y 7.22 ilustra el comportamiento del sistema frente a esta estrategia de control
cuando la posición del ángulo es 20º y 69º lo que indica que iguala al controlador anterior,
pero como era de esperarse se elimina la presencia de la función conmutada en la señal
de control.
Figura 7.21:�Controlador CMD si c=3 con ángulo = 20º
�
�
�
�
� ����
Figura 7.22:�Controlador CMD si c=3 con ángulo = 69º
�
�
Como se ha observado a lo largo de las graficas de los controladores por modos
deslizantes estos debido a la presencia de señales conmutadas han introducido
vibraciones en las señales controladas que solo se eliminaron, suprimiendo la señal
conmutada de la función signo y aplicando directamente la función S, pero en algunas
aplicaciones esto al no ser posible requiere de métodos como el propuesto en (7.50), el
cual para implementarse basta con incluir un sistema como el que plantea en la figura
7.23 antes de eta en el esquema de la figura 7.12
Figura 7.23: Implementación de la estrategia de control ecuación (7.50)
�
�
�
�
�
�
1/R
� ����
En la implementación la constante R delimita el ancho de la capa límite y la efectividad del
controlador viene determinada por su magnitud. Las figura 7.24 a 7.26 ilustran los
resultados de simulaciones ante condiciones iniciales de 20º, 59º y 60º respectivamente
para valores de R de 1 y 5. Como es claro a lo largo de estas los controladores logran
llevar al sistema a la condición de operación deseada, en dos de las tres condiciones
iniciales pero para 60º el controlador cuyo valor de R es 1 no logra controlar el sistema.
En la figura 7.27 se muestra cual fue el comportamiento del voltaje aplicado para las
condiciones de 20º y 59º de ambos controladores, siendo evidente la supresión de la
señal conmutada que antes se presentaba.
Figura 7.24��Controlador CMD con corrección de Chattering para ángulo =20º
��
�
�
�
�
�
�
�
�
� ����
Figura 7.25�CMD con corrección de Chattering para ángulo =59º
��Figura 7.26 CMD con corrección de Chattering para ángulo =60º
� ����
Figura 7.27 Señal de voltaje para controlador CMD con corrección
��
7.4.1.3. Swing Up. En la figura 7.28 se muestra la implementación de la ley de
control para realizar el control del balanceo (Swing up). Después de crear la ley de control
se construye el subsistema para luego ser montado en el esquema de control del swing
up ilustrado en la figura 7.29.
Como es obvio las condiciones iniciales para el swing up son posición del Carro (x): 0m. y
Posición Angular (�): 180º, en las figuras 7.30 a 7.33 se ilustra el comportamiento del
controlador swing _up, es claro como la posición angular del péndulo comienza a crecer
como una función sinusoidal hasta que esta cerca de la zona lineal (aproximadamente
350º), que es el objetivo de este controlador. Es importante observar que en la grafica
7.32 se ilustra la velocidad angular del péndulo y se observa como esta en el instante de
tiempo cuando la posición está cerca de la zona lineal (|�|< 20º), su valor es
aproximadamente 2.5 Rad/seg., lo que implica que su velocidad es demasiado grande
para que un controlador lineal pueda actuar sin inconvenientes, esto de nuevo reafirma la
� ���
necesidad de utilizar un zona muerta si se va a utilizar un regulador lineal en la zona
superior.
Figura 7.28: Montaje de la ley de control del Swing Up
Figura 7.29: Esquema completo del Swing Up
� ���
Figura 7.30: Posición del Carro (x) (Metros)
Figura 7.31: Posición Angular (Grados)
�
� �
�
�
�
�
�
�Figura 7.32: Velocidad angular del péndulo (rad/seg). �
� ����
Figura 7.33: Esfuerzo de Control (Voltios)
La figura 7.33 ilustra el voltaje aplicado al sistema durante el controlador de swing up, es
interesante ver como solo en una primera etapa se alcanza el valor de 2,4 V, y luego a
medida que el sistema va ganando energía es necesario aplicar menos energía al sistema
hasta que se llega a una zona en la que las grafica es simétrica, y la posición angular
crece sin control.
7.4.1.4. Esquema de Control Péndulo Invertido. En la figura 7.34 se ilustra el
sistema de control completo implementado para el control del péndulo invertido simple, en
esta figura se muestra el acople de los dos controladores implementados anteriormente,
en conjunto con la zona muerta cuya implementación se hace por medio del bloque
“switche”, el cual es mostrado en la figura 7.35, y básicamente consiste en controlar que
tipo de controlador va a actuar sobre la planta dependiendo de la posición angular, y en la
zona comprendida entre 30º y 35º se aplica cero al sistema.
La figura 7.36 muestra el movimiento del carro, el cual es oscilante para provocar el
consecuente movimiento de balanceo necesario en el péndulo para que este se levante
desde su posición colgante, y al final antes de los 10 segundos la acción del controlador
lineal hace que su posición tienda a cero grados.
� ���
Figura 7.34: Esquema Final para Control del Péndulo Simple
Figura 7.35: Esquema del Bloque Switche para 30 y 35 grados
�
�
� ���
Figura 7.36: Posición del Carro con el Control Final (Metros)
Figura 7.37: Posición Angular (�) (Grados)
� ���
En la figura 7.37 se pueden distinguir dos zonas comprendidas entre 0 y 8 segundos y de
8 segundos en adelante. En la primera zona el péndulo se balancea y cambia su posición
hasta estar cerca de la zona muerta luego entra en la segunda zona que es donde actúa
el regulador, y el sistema es rápidamente llevado a la posición de equilibrio inestable,
manteniéndolo en esa posición.
En la grafica del esfuerzo de control se muestra todo el comportamiento de la señal de
voltaje, siendo clara la aplicación del valor 0 Voltios entre 8 y 9 segundos.
Figura 7.38: Esfuerzo de Control (Voltios)
Como resultados de esta fase de simulación se observa que dentro de las limitaciones de
voltaje y de carrera efectiva para el carro del péndulo, los controladores diseñados
obtienen la meta final de control y demuestran su efectividad, quedando solo pendiente su
implementación en el sistema físico.
En el anexo D se expone el código en MatlabTM utilizado en esta fase de simulación.
� ���
7.4.2. Péndulo Invertido Doble. En esta sección se expone la implementación y
simulación del controlador diseñado para el péndulo invertido doble en la zona lineal. La
figura 7.39 ilustra la implementación del sistema de control para el sistema péndulo
invertido doble realizada en Simulink TM v 6.5, en donde al igual que para el caso péndulo
simple se adicionado al modelo un saturador en la señal de control debido a las
limitaciones expuestas anteriormente.
Figura 7.39: Implementación del Controlador en Simulink
En esta simulación de al igual que en las del péndulo simple se ha supuesto que se tienen
todos los estados disponibles para su utilización, aunque en una implementación real,
estos serán derivados de la señal enviada por los sensores de posición que se tienen.
A continuación se presentan los resultados obtenidos de la simulación en la que se han
variado las condiciones iniciales y se ha observado el desempeño del controlador y la
respuesta del sistema.
• Prueba 1: Condiciones iniciales: ángulo Péndulo 1 = 20º, ángulo péndulo 2 = 0º,
las otras cuatro variables =0
Las figura 7.40 ilustra los resultados de esta prueba, en ellas se observa como la
posición del carro parte de cero, hace un movimiento brusco moviéndose a 50 cm del
� ���
origen y luego regresa lentamente hacia cero en un tiempo de 8 segundos. El ángulo
del péndulo 1 crece hasta 30º y cuando el carro cambia de dirección bruscamente
este comienza a decrecer hasta -20º haciendo estos dos cambios en 0.25 s
aproximadamente, para luego tender a cero en un tiempo de 0.9 segundos, como
consecuencia de estos movimientos el péndulo 2 oscila ente -10º y 15º para luego
llegar a cero, lo que es claro es que el sistema hace que la dinámica de la planta
tienda a la de un péndulo simple para luego llega r a su control.
Figura 7.40: Graficas de la prueba 1
� El sistema primero controla la posición de los péndulos para finalmente llevar el carro al
origen.
• Prueba 2: Condiciones iniciales: ángulo péndulo1 = 15º, ángulo péndulo2 = 10º,
las otras cuatro variables =0
� ���
Los resultados de esta prueba se exponen en la figura 7.41 y en ella el sistema tiene
un comportamiento similar al de la prueba anterior en la que primero se controla la
posición del péndulo 2 y la del péndulo 1 para luego llevar el carro hacia el origen
Figura 7.41: Graficas de la Prueba 2 �
El voltaje que se debe aplicar al motor en esta prueba se visualiza en la grafica 7.43,
donde se observa que en dos ocasiones se alcanza el valor de saturación de +/-24V, pero
como la energía que necesita el sistema se iguala rápidamente a la que la estrategia de
control necesita imprimir al sistema finalmente el control es exitoso
• Prueba 3: Condiciones iniciales: ángulo péndulo1 = 0º, ángulo péndulo2 = 25º, las
otras cuatro variables =0
Los resultados de esta prueba se visualizan en la grafica 7.42 donde una vez más el
orden de estabilización de las variables es angulo2, angulo1 y posición del carro
respectivamente. Es de anotar que el ángulo 2 esta en una región considerada por fuera
� ���
de la zona lineal (Mayor a 20º), y sin embargo el control del sistema se logra sin
problemas.
Figura 7.42: Graficas de la prueba 3
� La grafica 7.43 ilustra el voltaje aplicado al motor para las tres pruebas anteriores, donde
en varias ocasiones se alcanza el máximo valor permitido para el sistema.
� ��
Figura 7.43: Esfuerzo de Control para las tres pruebas �
• Prueba 4: Condiciones iniciales: ángulo péndulo1 = 21º, ángulo péndulo2 = 0º, las
otras cuatro variables =0.
En la figura 7.44 es claro como el carro se mueva con demasiada velocidad para
estabilizar el péndulo 1 lo que hace que este invierta su dirección, pero con tal intensidad
que el péndulo 2 crece igualmente sin control de modo que el sistema entra a una región
dentro del espacio de estados donde para el controlador implementado es imposible
controlarlo así que la carrera crece sin control y los ángulos igualmente. En el prototipo
físico y virtual del UMS este fenómeno de velocidades altas y gran número de vueltas de
los péndulos no se puede apreciar debido a las limitaciones físicas de la carrera.
� ��
Figura 7.44: Resultados prueba 4
�
�
� ���
8. PROTOTIPO VIRTUAL DIRECTX
�
Como parte de los objetivos planteados para este trabajo de investigación se menciona la
construcción de un prototipo virtual en 3D que simulará las características físicas del
prototipo real donde la dinámica del sistema estará gobernada por las ecuaciones
diferenciales que definen el movimiento del sistema, y los controladores diseñados en la
etapa de control del sistema serán probados. Como desarrollo de este capitulo se
mencionará la metodología seguida para el desarrollo del software que compone esta
parte del proyecto, mencionando sus principales componentes y su interacción interna,
además en el anexo E se muestra un manual de usuario del sistema en el que se
exploran las diferentes características que tiene el prototipo virtual.
En una primera fase se establecen los requerimientos del sistema, para diseñar los casos
de uso que se tienen y su respectiva descripción, más adelante se expone la fase de
implementación y las principales decisiones tenidas en cuenta que gobiernan de una u
otra manera la respuesta del sistema.
�
8.1. REQUERIMIENTOS DEL SISTEMA. �El prototipo virtual a diseñar debe ser un software que permita la simulación de la
respuesta de las plantas péndulo invertido simple y doble, así como la acción de los
controladores diseñados en el capitulo 7, de modo que se establezcan las restricciones
que se tendrían en una planta real. Los requerimientos generales del sistema se exponen
en la tabla 8.1.
� ���
Tabla 8-1 Requerimientos del sistema
Requerimiento Descripción
R1 El sistema de estar en la capacidad de
Permitir al usuario seleccionar el tipo de configuración que se desea trabajar con el UMS
R2 … Generar un ambiente gráfico en el que se visualice un prototipo 3D de la configuración del UMS seleccionada
R3 … Permitir al usuario establecer las condiciones iniciales
R4 … Permitir al usuario simular la respuesta natural del sistema
R5 … Permitir al usuario simular la respuesta ante la acción de un controlador
R6 … Permitir al usuario seleccionar y cargar varios controladores para determinado sistema en caso de que para este se hayan diseñado
R7 … Permitir al usuario detener la simulación en cualquier momento
R8 … Permitir al usuario cambiar parámetros de los controladores que están cargados por defecto.
R9 …
Permitir al usuario cambiar parámetros de la dinámica del sistema para observar su comportamiento. (Longitudes de péndulos, carrera efectiva, y coeficientes de rozamiento)
R10 … Permitir manipulación grafica sobre el prototipo 3D (opciones de zoom, rotar, y trasladar el prototipo en la pantalla)
R11 … Reestablecer los valores que tiene el sistema por defecto, en caso de que se solicite por parte del usuario
R12 … Permitir la visualización de graficas de las variables del sistema en el momento en que ocurre la simulación
R13 … Permitir la visualización de las graficas de las variables durante toda la simulación
R14 … Establecer restricciones sobre la planta de modo que el sistema tenga un comportamiento similar al del prototipo real del UMS
R15 … Permitir salir en cualquier momento del tipo de configuración escogida y seleccionar el otro
R16 … Permitir visualizar los valores actuales de las variables y los parámetros del sistema
R17 … Permitir establecer una referencia para el carro del péndulo
R18 … Cerrar la aplicación
� ���
8.2. CASOS DE USO. �
8.2.1. Diagrama de casos de uso. La figura 8.1 hace una ilustración de los casos de
uso desarrollados para el sistema del prototipo virtual del UMS.
Figura 8.1: Diagrama de Casos de Uso
�
� ���
8.2.2. Descripción de los casos de uso. Las tablas 8.2 a 8.7 describen los casos de
uso planteados en la figura 8.1 para el sistema a desarrollar.
Tabla 8-2�Caso de uso seleccionar configuración�Nombre SELECCIONAR CONFIGURACIÓN
Alias
Referencias R1 - R6 - R18-R16
Función El caso de uso permite al usuario escoger el tipo de configuración con la que se desea trabajar o salir definitivamente de la aplicación
Evento Respuesta del sistema
1. Se selecciona el tipo de configuración con la que se desea trabajar
2. El sistema inicializa las constantes, y carga los valores necesarios y lanza el caso de uso generar configuración
3. Finaliza el caso de uso
Flujo de eventos
Flujos alterno 1-2. Se selecciona la opción salir El sistema cierra la aplicación
� ���
Tabla 8-3 Caso de uso generar configuración Nombre GENERAR CONFIGURACIÓN
Alias Referencias R2 - R15 CU. SELECCIONAR CONFIGURACIÓN
Función El caso de uso genera la interfaz grafica de acuerdo al la inicialización de las constantes cargadas y la configuración escogida, a fin de que se pueda acceder a las características deseadas del sistema
Evento Respuesta del sistema
1. Se cargan en la memoria los valores de las constantes e interfaz grafica
2.De acuerdo al valor de las constantes se cargan los valores del sistema y se generan los botones y comandos necesarios de acuerdo al tipo de configuración
3. Se cargan los valores de constantes graficas del sistema
4,El Caso de uso Prototipo genera el prototipo 3D del sistema y lo muestra en pantalla
Flujo de eventos
4. Finaliza el caso de uso 3 - 4, No se puede inicializar Prototipo 3D
Se Muestra Error de resolución al usuario Flujos
alterno Se cierra la aplicación
Tabla 8-4�Caso de uso graficar variables Nombre GRAFICAR VARIABLES
Alias Referencias R2 - R10 - R14 Caso de uso Simulación
Función Grafica los valores de la variables del sistema que el usuario defina
Evento Respuesta del sistema Flujo de eventos 1. hay un cambio en las variables del
sistema 2.Se utiliza una interfaz grafica para graficar las variables con respecto al tiempo
1-2. El usuario desea ver alguna de las variables en tiempo real
SE hacen visibles las variables que el usuario elija
Flujos alterno 1-2 El usuario desea el
comportamiento de las variables a lo largo de toda la simulación
Se hace visible la interfaz que grafica muestra las variables del sistema en tiempo real
� ���
Tabla 8-5 Caso de uso establecer condiciones Nombre ESTABLECER CONDICIONES
Referencias R3 - R4 - R5 - R9 - R11- R8-R17
Función El caso de uso establece las condiciones iniciales del sistema seleccionado, incluyendo parámetros del sistema y valores de variables
Evento Respuesta del sistema
1. El usuario cambia alguno de los valores que varia alguno de los parámetros del sistema, o las condiciones iniciales de la simulación
2.El sistema lee el valor ingresado y se asigna a la variable correcta
3. Se repiten pasos 1 y 2 tantas veces como se ingresen variables
Flujo de eventos
4. Se selecciona aceptar 5. Se actualizan las variables 6. Finaliza el caso de uso
Flujos alternos 1 -2
Si el valor no es numérico se establece "0" como condición inicial. Si el numero esta fuera del rango se avisa al usuario y se establece cero en la condición inicial
�Tabla 8-6 Caso de uso prototipo �
Nombre PROTOTIPO
Alias Referencias R12 - R13 Caso de uso simulación y generar configuración
Función Visualiza en pantalla el prototipo 3D del sistema con las condiciones que se requieren
Evento Respuesta del sistema
1.Se recibe el movimiento que se desea graficar
2.Se utilizan funciones de directx para graficar el movimiento del sistema
Flujo de eventos
3. Finaliza el caso de uso
�
� �
� ���
Tabla 8-7 Caso de uso simulación �
Nombre SIMULACIÓN
Alias Referencias R4 - R5- R6- R7 Caso de uso Establecer Condiciones
Función Inicia La simulación del sistema seleccionado, calculando lo valores en el tiempo de muestreo siguiente, usando los casos de uso prototipo y graficar
Evento Respuesta del sistema
1. El usuario da la orden de iniciar simulación
2.El sistema calcula el valor de las variables en el tiempo de muestreo siguiente
3.Se cambian las variables asignadas al modelo grafico
4. El caso de uso Prototipo 3D Grafica el nuevo punto de simulación. De la misma manera el caso de uso graficar Grafica las variables y hace las respectivos cálculos para guardar en memoria los datos de toda la simulación
Flujo de eventos
5.Finaliza el caso de uso
Flujos alterno
1-2. El usuario quiere detener la simulación Finaliza el caso de uso
8.2.3. Implementación del software. Hasta el momento la metodología seguida para el
diseño del sistema ha sido orientada a objetos, pero en la implementación del sistema se
diseño en un programa orientado a eventos como lo es Visual Basic, de modo que los
casos de uso que se tienen hasta el momento, se utilizan para diseñar las opciones de los
formularios y el flujo de información en el programa.
La figura 8.2 ilustra la forma como se implemento la simulación en Visual Basic, en ella El
bloque X tiene el valor de las variables de estado del sistema (X, tetha1, tetha2 y sus
respectivas derivadas), las cuales son variadas si se cambian las condiciones iniciales del
sistema y se espera que se active un timer cuya configuración de interrupción esta a
10ms (que es el mismo tamaño de paso que se utiliza en las simulaciones de matlab),
cuando se selecciona activa simulación se activa el timer y con base a la estrategia de
control establecida en el controlador se calcula el valor de la entrada de control que en
� ���
conjunto con los valores de las variables del sistema ingresan al bloque donde están
descritas las ecuaciones diferenciales que describen la dinámica del sistema que se
resuelven por medio de un algoritmo de Runge Kutta orden 4, el cual calcula el valor de
las variables en el tiempo de muestreo siguiente, que se escriben en el espacio de
memoria asignado a ellas, y en la próxima interrupción del timer se repite la misma
secuencia, grafica en el prototipo 3d y en las funciones para visualizar las variables
Figura 8.2: Implementacion del software
�
�
�
�
�
�
�
�
�
�
� ��
El software implementado cuyo código se expone en el anexo D utiliza el algoritmo de
Runge_Kutta que se expone a continuación:
( )
( )
( ) ( ) ( )4321
34
23
12
2261
22
22
....��*��
*�.�*�.
*�
.�*�.
*�
.�*�.
��*�
�����
��
++++=
++=
��
���
� ++=
��
���
� ++=
=
=
3
� �
�
8.3. RESULTADOS OBTENIDOS
El prototipo diseñado con cuyo manual de usuario se coloca en el anexo E, cumple a
cabalidad con los objetivos planteados y permite visualizar claramente la respuesta del
sistema, en condiciones muy aproximadas a las que responderá la planta real.
Es importante señalar que es una primera aproximación y que en el transcurso del
desarrollo del presente trabajo se espera adicionar características de funcionamiento tales
como poder realizar control desde el mismo prototipo virtual sobre la planta real, para ello
se utilizara la tarjeta de adquisición de datos y las librerías para su utilización a través de
Visual Basic que viene con la misma.
Se adiciona a este trabajo un instalador del programa llamado “Virtual UMS” el cual
permite tener acceso al prototipo virtual aquí mencionado.
� ��
9. CONCLUSIONES
�
�
Se logro el objetivo de diseñar y controlar una planta en donde se puede tener distintas
configuraciones como péndulo invertido traslacional simple y doble, con todos sus
componentes mecánicos y electrónicos de modo que teóricamente se pueda implementar
diferentes estrategias de control.
Se desarrollo plenamente un prototipo virtual 3D bajo Visual Basic, el cuál permite realizar
las pruebas de las estrategias de control diseñadas para cada una de las configuraciones
del sistema, permitiendo variar parámetros tanto de controladores como del sistema físico,
dando esto el valor agregado de visualizar los limites y la robustez de los controladores
diseñados.
Las diferentes estrategias de control diseñadas para el sistema péndulo invertido simple y
doble fueron simuladas plenamente en Matlab y en el prototipo virtual obteniendo
resultados similares, y controlando el sistema por medio de diferentes estrategias de
control.
El diseño del sistema permite cambiar de configuración péndulo simple a péndulo doble
con pocos cambios en la estructura física de modo que se obtiene un sistema versátil
El controlador por realimentación del estado por medio de control óptimo LQR controla
eficazmente el sistema péndulo invertido simple más allá de la zona lineal, con la carrera
máxima que tiene el futuro sistema físico.
El controlador por medio de modos deslizantes diseñado logro un mayor rango en la
posición del ángulo, pudiendo controlar el sistema para ángulos de inclinación del péndulo
mayores a 65º si la superficie de deslizamiento es S; pero para esto necesita de una
carrera más larga que la que tiene disponible en el sistema físico.
� ���
El controlador por medio de modos deslizantes con corrección de oscilaciones de alta
frecuencia mejora la respuesta del sistema si se hace seguir una referencia al carro
cuando el sistema se ha estabilizado en la posición superior, en comparación con los
controladores CMD de señales conmutadas.
Si en el controlador por modos deslizantes el factor alpha se varia se logra que la
superficie de desplazamiento (S*), logre niveles de respuesta similares a los de la
superficie de desplazamiento S.�
� ����
10. FUTURAS MEJORAS
En el momento de la entrega del presente informe, el sistema mecánico del proyecto esta
en construcción, y el actuador esta en proceso de compra por parte de la universidad.
Los controladores para el swing up del péndulo invertido doble se encuentran en fase de
desarrollo donde se ha logrado la aproximación a la zona lineal pero debido a la falta de
repetibilidad en los resultados se decidió dejarlos por fuera del presente informe.
En un desarrollo futuro a parte de la construcción del sistema mecánico, es posible con
pocos cambios en el sistema mecánico poder construir la planta péndulo invertido dual, en
la que dos péndulos se colocan sobre el carro y no de forma serial como el que se planteo
para este trabajo de investigación.
El desarrollo de estrategias de control diferentes a las estudiadas hasta el momento como
lógica difusa, redes neuronales, algoritmos genéticos y demás técnicas de control no
lineal.
Como se planteo en el desarrollo del prototipo virtual con la implementación del prototipo
físico, por medio de la tarjeta de adquisición de datos se podría implementar los
controladores desde el programa virtual UMS.
�
�
� ����
BIBLIOGRAFÍA
�
ASTROM, K y FURUTA, K. Swining Up A Pendulum By Energy Control [en línea]. San
Francisco: IFAC World Congreso, 1996. [Consultado Agosto, 2005] Disponible en Internet:
http://www.control.lth.se/~kja/furutapaper.pdf . 15 p.
AVELLO, A., RUBI, J. y RUBIO, A. “Swing-up Control Problem for a Self-Erecting Double
Inverted Pendulum” [en linea]. San Sebastián, 2002. [Consultado en Marzo de 2005].
Disponible en Internet: http://www.ccse.kfupm.edu.sa/~selferik/download/00997871p5.pdf
7 p.
BUGEJA, Marvin. Non-Linear Swing-Up and Stabilizing Control of an Inverted Pendulum
System [en linea]. Ljubljana: Faculty of Engineering University of Malta, 2003. [consultado
03 de septiembre, 2005]. Disponible en internet http://
www.sps.ele.tue.nl/members/m.j.bastiaans/spc/bugeja.pdf . 5 p.
COWAN, Jeffrey; ERICKSON, Chris y ZLATANOVIC, Andrej. “Computer Based State
Feedback Control of a Double Inverted Pendulum”, 2004. 79 p. Trabajo de Grado
(ingeniero electrico). Lakehead University. Facultad de Ingenierias.
FRIDMAN, Leonid. Notas del curso Introducción al control por Modos deslizantes [en
linea]. Mexico: Autonomous University of Mexico, 2005. [consultado 05 de Diciembre,
2005]. Disponible en Internet: http://verona.fi-p.unam.mx/~lfridmn/archivos.html.
GAFVERT, M Modeling the furuta Pendulum. [en linea]. Lund: Lund institute of
Technology, 1998. [Consultado Noviembre, 2004] Disponible en internet:
http://web.njit.edu/~sxn5261/gafvert_modelling_furuta.pdf. 10 p.
� ����
MCGILVRAY, Stephen Self-Erecting Inverted Pendulum: Swing up and Stabilization
Control [en linea]. Thunder Bay: Lakehead University, 2005 [Consultado 06 de Julio,
2005]. Disponible en internet http://www.lakeheadu.ca. 29 p.
Mechanical Product Selection Catalog. [en linea] Chambersburg: TB Woods, 2005
[Consultado Septiembre, 2005]. Disponible en Internet: http://www.tbwoods.com. 300 p.
MENDEZ, P. Arnaldo. Notas de clase Diseño mecatrónico 1 y 2 [en linea]: Santiago de
Cali: Universidad Autonoma de Occidente, 2005. [Consultado 03 de junio, 2005].
Disponible en Internet: http://www.uao.edu.co.
MURILLO, O Jaime. Amplificadores operacionales. Santiago de Cali: Instituto tecnológico
municipal Antonio José Camacho, 2002. 292 p.
NORTON, Robert L. Diseño de Máquinas. México: Prentice Hall, 1999. 1048 p.
OGATA, Katsuhiko. Ingeniería de Control Moderna. 3 ed. México: Pearson, 1998. 997 p.
OLFATI, Reza Saber. Nonlinear Control of Underactuated Mechanical Systems with
Application to Robotics and Aerospace Vehicles. Cambriidge Massachusetts, 2001. 307 p.
Trabajo de grado (Doctorado de filosofia en ingeniería electrica y ciencias de la
computación). Massachusetts Institute of Technology. Department of Electrical
Engineering and Computer Science.
OSORIO, Carlos. Tutorial de DirectX Para el Desarrollo de Aplicaciones 3D [en linea].
Santiago de Cali: Universidad Autónoma de Occidente, 2004. [consultado 31 de Agosto,
2005]. Disponible en Internet: http://www.uao.edu.co. 40 p.
POPOVIC, Dobrivoje; VLACIC, Ljubo. Mechatronics in Engineering Design and Product
Development. New York: Marcel Dekker, Inc., 1999. 615 p.
� ����
RAFIMANZELAT, M; YAZDANPANAH M. A Novel Low Chattering Sliding Mode
Controller [en linea]. Tehran: Control & Intelligent Processing Center of Excellence.
University of Tehran, 2000 [consultado 01 de Octubre ,2005]. Disponible en Internet:
ascc2004.ee.unimelb.edu.au/conferences/ascc2004/proceedings/papers/P283.pdf. 6 p.
SLOTINE J.J; Li W., Applied Nonlinear Control. Englewood Cliffs, NJ: Prentice-Hall, 1991.
461 p.
STIMAC, Andrew K. Stand up and Stabilization of the Inverted Pendulum. Cambridge,
1999. 62 p. Trabajo de grado (Bachelor of science). Massachusetts Institute of
Technology. Department of Mechanical Engineering.
ULRICH, Karl; EPPINGER, Steven D. Product Design and Development. 2 ed. Boston:
McGraw Hill, 2000. 358 p.
ZHONG, Wei; RÖCK, Helmut. Energy and Passivity Based Control of the Doyble Invertid
Pendulum on a Cart [en linea]. Mexico: IEEE internacional conference of control
applications, 2001. [Consultado 03 enero, 2005]. Disponible en Internet:
http://www.tf.unikiel.de/etech/ART/Publications/IEEE_CCA_ISIC_Zhong.pdf. 6 p.
� ����
ANEXO A: DIAGRAMAS DE ENSAMBLE Y PLANOS MECANICOS �
� ����
ANEXO A 1. ENSAMBLE SUBCONJUNTO ESTRUCTURA ��
� ����
ANEXO A 2: ENSAMBLE SUBCONJUNTO MOTOR - SENSOR �
�
� ���
ANEXO A 3. ENSAMBLE SUBCONJUNTO TENSOR
� ���
ANEXO A: 4. ENSAMBLE SUBCONJUNTO CARRO �
�
�
�
�
� ����
�ANEXO A 5. ENSAMBLE SUBCONJUNTO PÉNDULOS
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
�ANEXO A 6
�
� ����
�ANEXO A 7
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO A 8 �
� ����
ANEXO A 9 �
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO A 10 �
�
� ����
ANEXO A 11 �
� ����
ANEXO A 12
� ���
ANEXO A 13
�
� ���
ANEXO A 14 �
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO A 15 �
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO A 16 �
�
�
�
�
�
�
� ����
�ANEXO A 17
�
� ����
� ANEXO A 17
� ����
�ANEXO A 18
� ����
�ANEXO A 19
� ����
�ANEXO A 20
� ����
� ANEXO A 21
� ���
� ANEXO A 22
� ���
� ANEXO A 23
� ����
� ANEXO A 24
� ����
�ANEXO A 25
� ����
� ANEXO A 26
� ����
�ANEXO A 27
� ����
� ANEXO A 28
� ����
�ANEXO A 29
� ����
� ANEXO A 30
� ����
� ANEXO A 31
� ���
�ANEXO A 32
� ���
� ANEXO A 33
� ����
� ANEXO A 34
� ����
� ANEXO A 35
� ����
� ANEXO A 36
� ����
� ANEXO A 37
� ����
� ANEXO A 38
� ����
�ANEXO A 39
� ����
� ANEXO A 40
� ����
� ANEXO A 41
� ���
� ANEXO A 42
� ���
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
ANEXO A 43
� ����
�
�
ANEXO A 44
� ����
� ANEXO A 45
� ����
� ANEXO A 46
� ����
�
ANEXO A 47
� ����
ANEXO B: INFORME IFAC
� ����
�
��
��
�
�
�������������� �������������������������������� ����� �����������
�
�
���� !"#!� !��$%!#��$&�'"(���)�"���*"$"�!��*$%!��+(��#,$*��!&-"��!*$� +����
���������&�0�'�1��&0��02��������30,3040�5&0�&(�6#&'��50
�'������((&7��8*��&�(3��90����&7�8*��&�(3��90���&��&�8*��&�(3��0
�
�
'��4���� 5�� ����� �6/�/7�� � ��� 86�����/� %��� 6��4%�/#��� #�� %/� �"�4%/�"9�� *� ����6�%� #�� 8:�#4%���
"�;�6�"#��� �6/�%/�"��/%��� #��%��� *� �"�8%�� �<�� *� <�=� � #��#�� ��� #��/66�%%/#�� 4�� ����>/6�� ?4��
�4���6/�/%�4�4/6"��4��86����"8��;"6�4/%��=�?4��8�6�"���;"�4/%"@/6�%/�6��84���/�#�%��"����/�/����
#"��"���������6�%/#�6����5��/������"����/���%���7��";��������/�"%"@/6�%/�8%/��/����%/�8��"�"9��#��
�?4"%"�6"�� "����/�%��/�8/6�"6�#�%���;"�"�����#�%��/66���</6/��%�<�����#��/66�%%/�4�/� �:��"�/�#��
����6�%�?4��%�;/��/��%��"����/�#��#���4�8��"�"9����%�/����A/��/�%/�8��"�"9����8�6/#/ �4�"%"@/�#��
�:��"�/��#���>"���48�8/6/�/��6�/6��%��"����/�/�%/�@��/�%"��/% �*�����6�%�8�6�6�/%"����/�"9��#�%�
���/#����#"/�����B'�/�C����������6�%�8�6���#���#��%"@/�����8/6/����/�"%"@/6��%�8:�#4%���D���
�%� <�=� ��� �4���6/�� %��� 6��4%�/#��� � #�� #��� ����6�%/#�6��� 8�6� 6�/%"����/�"9�� #�%� ���/#�� ��� %/�
@��/�%"��/%���
�
&���6/�� ��A"��8/8�6�86��������A��6��4%���/��4���A���"�4%/�"���/�#�����6�%����"�;�6��#�8��#4%4���
��"�8%��8��#4%4���<�/�#�#�4�%��8��#4%4��=�<��/�#��A��#�;�%�8������������>/6��>A�6��/��=�
86����*8���/����������/�#��A��4��6��/���"�4%/����A���"���6��8��#�����A���*�����������A�����A�
�*�������A��/"������A��86��%���"���A����/�"%"@/�"�������A��4���/�%���?4"%"�6"4��8�"����E�6��A���<�
/����A�"?4��>A�6���A��8��#4%4��"��#6";���6���#�>�6"�A�����486"�A��4�"����>"���48 ��B'�/�#�
�%"#"�����#�������6�%%�6���E�6��A��=�<��A��6��4%�������>���B'�����6�%%�6��/6��86������#��
�
F�*>�6#� � <:�#4%�� "�;�6�"#� � �>"���48 � �B' � ��#��� #��%"@/���� � ="6���� G � %�>� �A/���6"�� ��
86����"8���;"6�4/% ��"����/����H�"����4�/��4/#��
�
� ����
.+� ������� �/���
5%� 8:�#4%�� "�;�6�"#�� ��� 4�� �"����/� �%H�"��� ���
86��%��/�� #�� ����6�% � *� �4� 86�89�"��� ���
���/�"%"@/6%������4�84����#���?4"%"�6"��"����/�%���5%�
�"����/�8:�#4%�� "�;�6�"#��#��%�����4�/�������"9��
#�%�/���6"�6� �*��%���7��";��#������6�%�/%� "�4/%�?4��
��� �%� 8:�#4%�� �"�8%�� ��� ���/�"%"@/6� /��/�� �/66/��
��� %/� 8��"�"9�� ;�6�"�/%� �"���6/�� ��� �/��"���� %/�
8��"�"9�� #���/#/� ��� �%� �/66��� �/� #"�"�4%�/#� ���
����6�%/6��%�8:�#4%��"�;�6�"#��#��%�����?4������6/�/�
#�� 4�� �"����/� � �/9�"��� 8�6� �/�46/%�@/ � %�� ?4��
"�#"�/� ?4�� /���� 8�?4�I��� �/��"��� ��� %/��
���#"�"����� "�"�"/%�� � %/� 6��84���/� /� %�� %/6��� #�%�
�"��8�� ;/6C/� �4�6��������� �4���� ���
���6��/#/������#"�C�"%�����6�%/6��%��"����/���"����
��� 8��"�%�� 86�#��"6� /��6�/#/������ �%� ��;"�"�����
#��%���8:�#4%����
�
�����"����/��8:�#4%���"�8%��*�#��%��A/����8/6���
#�� 4�/� �%/��� #�� �"����/�� ���H�"���� %%/�/#��
�"����/�� ���H�"���� �4�/��4/#�� � ��� %��� ?4�� ���
�4���/�� ���� ������ ���6/#/�� ?4�� �6/#��� #��
%"��6�/# �*��%�����6�%�#���"����/��#�����/��/�46/%�@/�
��� /��4/%������ 4�� �/�8�� �4*� /��";�� #��
"�;���"�/�"9� � ���6���#�� 8�6� �4�� /8%"�/�"����� ���
6��9�"�/ � ;�AC�4%��� /�6���8/�"/%��� *� ;�AC�4%���
�/6"����� ���� �7��8%��� #�� �"����/�� ���H�"����
�4�/��4/#��� "��%4*��� 6������ �9;"%�� � 6������
�/�"�/���� � �"����/�� #�� %������"9� �
/�6�#��%"@/#�6�� ��/�:%"�������6����6����
�
0+ ��� ��� �/�����������������
J�/� 6�86�����/�"9�� #�%� �"����/� 8:�#4%�� #��%�� ���
86�����/� ��� %/� �"�46/� � � �%� �4H%� ����"���� ��� #���
�/66/��/6�"�4%/#/��#"�84���/�����6��4���/66���D/#/�
�/66/�6��/����6���%�8%/���;�6�"�/%�/%6�#�#�6�#�%��7��
#�� 4�/� /6�"�4%/�"9� � #��"�"��#�� #��� �6/#��� #��
%"��6�/# � � ������ *� ����� � ?4�� ���� /6�"�4%/�"����� #���
/6�"�4%/�"����� 8/�";/�� 84��� ��� ��� /8%"�/� ��6?4��
#"6���������%%/��8�6��"��4�/��%/���#��/��4/#�6��5%�
�/66��#��"�����6���6/#��#��%"��6�/#��6/�%/�"��/%�������
/%� ��6� ���#4�"#�� /� �6/;:�� #�� 4�� �"����/� #��
�6/���"�"9�� 8�6� 4�� /��4/#�6� ?4�� %�� "�84%�/K� %��
?4�� %�� ���;"�6��� ��� �%� L�"��� �6/#�� #�� %"��6�/#�
/��4/#���5%��"����/�8:�#4%���"�8%���"����%/��"��/�
����"�46/�"9��?4���%�#��%������%/�;/6"/�"9��#��?4��
��%�� ��� �"���� 4�/� �/66/� ���6�� �%� �/66� �
���;"6�":�#�%�� ��� 4�� �"����/� ���� �� �6/#��� #��
%"��6�/#�#��%����4/%���4������/��4/#����
�
��
��1�*$�.����#�%��#�%��"����/�
�
5%���#�%���/���H�"���#��%����"����/���4��
�%/��6/#��4�/�#���%��:��#��#���/�6/�����/7��/�%/�
�48��"�"9��#��?4��%/���/66/�������4�68���6C�"#����
5%����74����#����4/�"�����#"��6���"/%������
%"��/%����6��4%�/#��#�%���#�%/#��8�6��%��:��#��#��
�/�6/����84�#����6����6"������%/��"�4"�������6�/ �
�
τ=++ ��� ��� �!�� ��� ��� �
�
=��#�� � M� 6�86�����/� �%� ;����6� #�� %/�� �4�6@/��
����6�/��������:6�"����#��%/��/�6"@�#��"��6�"/�� �
�%�;����6�#��D�6"�%%"��(�*��%�;����6�#�� %/����6�C/�
8�����"/%� N� ;/6C/�� ��� #"����"9�� *� ���8��������
#�8��#"��#���"�����6/�/�#�%��"����/�8:�#4%���"�8%��
��#�%�8:�#4%��#��%���5��%/�����"9��#��/8:�#"�������
�4���6/��%�;/%�6�#�����������8��������#�%���#�%��
8/6/��/#/��"����/��
�
0"� ��� ��� ����"#�6/�� %/�� �4�6@/�� #�� �6"��"9�� �%�
;����6�M���6H������%��"%4��6/��%/����4/�"�������/��
8/6/� �%� 8:�#4%�� �"�8%�� *� ����� 8/6/� �%� 8:�#4%��
#��%� �
[ ]�� 0=τ �
������ [ ]�� 00=τ �
�
�
0"� ��� �"����� ��� �4���/� %/�� �4�6@/�� #�� �6"��"9�� %/��
/���6"�6�����4/�"���������6/����6�/���� �
��/��
�����
����
� ����
�
���� ��
�
� −−=••
21
2 θτ �
�
�
����� ��
�
�−−−=
•••2
22
1
2
θθτ �
�
�
=��#��������%�����"�"�����#���6"��"9�����6���%��/66��
*� %/� �48�6�"�"�� #��#��8%/@/�"���� � *��� 6�86�����/�
�%�����"�"�����#���6"��"9��?4��A/*�����/#/�4�/�#��
%/��/6�"�4%/�"������
�
�2+� �������3���� �������������
�4��������������
5%� ����6�%� 8/6/� �%� �"����/� 8:�#4%�� "�;�6�"#��
����"���� ��� %%�;/6� %/� �/66/� ��%�/���� #��#�� �4�
8��"�"9�� #�� �?4"%"�6"�� ���/�%�� ��O��)�� A/��/� �4�
8��"�"9�� #�� �?4"%"�6"�� "����/�%�� ��O�)� � ����� ���
����"�4�� �6/�"/�� /%� ��;"�"����� �6/�%/�"��/%� #�%�
�/66��86�#4�"#�� 8�6� �%� /��4/#�6���/� ���6/���"/� #��
����6�%� "�8%�����/#/� 8/6/� %��6/6� �%� ��7��";�� #��
����6�%� ��� �/�/� ��� 4�� /�H%"�"�� A��A�� /%�
���8�6�/�"�����#"�H�"���#�%� �"����/ � ��� %/� �4H%�
��� A/�� "#���"�"�/#�� �6��� @��/�� ��� �%� ��8/�"�� #��
����6�%�#�%��"����/���/���6���@��/�����"%4��6/�����%/�
�"�46/���
�
P��/� #�� �/%/���� � 5��/� @��/� 6�86�����/� %/��
6��"����� #��#�� %/� %"��/%"@/�"9�� A��A/� 8/6/� �%�
��#�%�� �/���H�"��� ��� ��� ;/%"#/� � ��� #��"6� ���
6��"�����#��#���%�H��4%��#�%�8:�#4%������6��8�����
/� %/� A�6"@���/%� ���/� �4�6/� #�%� "���6;/%�� Q�
)��)�� −<< ϕ �R��5%���7��";��86"��"8/%�������/�
@��/ � �?4�� ��� %/� 8��"�"9�� "�"�"/%� #�%� 8:�#4%�� � ���
%%�;/6��%�8:�#4%��/�%/�@��/�%"��/%�����;�%��"#/#���
/��4%/6�*�%"��/%�#�%��/66��"�4/%���/���6� �8/6/�?4��
/�C�84�#/�4�"%"@/6���4������6�%/#�6�%"��/%��
�
</6/��%�����6�%�������/�@��/�������4���6/���4�A/��
/%��6�/�";/�����%/��"�%"��6/�C/�����4%�/#/ �*�/?4C����
"�8%�����/6H� � 4�/� �:��"�/� %%/�/#/� S-:����'�T��
86�84���/�8�6�&��6���Q�R��
�
�
���1�*$�0��=���6"8�"9��#��%/��#"��6������@��/��#��
��;"�"�����#�%�8:�#4%���
�
P��/� �4�6�/� �#�/#� @���� � ��#"/���� %/�� �:��"�/��
#�� 0>"��� J8� ��"������� � �%� 8:�#4%�� ��� %%�;/� /� %/�
@��/� %"��/%�8�6������;�%��"#/#���/��4%/6�*� %"��/%�
%�7/�/�� #�� ��6�� %�� ?4�� "�8%"�/� ?4�� %��� #�� %���
����6�%/#�6��� %"��/%��� "�8%�����/#��� ���
�4��"������ </6/� ��%4�"��/6� ����� 86��%��/� � ���
"�8%�����/� %/� %%/�/#/� @��/� �4�6�/� ?4�� ����"����
��� /8%"�/6%�� /%� �"����/� 4�/� ���6/#/� ��6�� ��� 4��
"���6;/%�����86��#"#�����6���%��"�/%�#��%/�@��/�#��
�/%/�����*��%� "�"�"��#��%/�@��/�%"��/% �������������
�/6/��"@/�?4���%� �"����/� ?4�#/�#���6��#�� %/� @��/�
%"��/% � ��� ���#"�"����� "�"�"/%��� /8�/�� 8/6/� ?4�� �%�
����6�%/#�6� %"��/%� 84�#/� /��4/6� ���6�� �%� �"����/�
�"�� �"��L�� "����;��"���� � 84��� %/� ���6�C/� ���6/�
?4��%%�;/��%��"����/��4/�#����6�"�/��%�����6�%/#�6�
#���>"���48����S�/��/#/T�;���"��#�� %/��6/;�#/#��
5��/� @��/� �4�6�/� ��� /74��/� ��� �"�4%/�"9�� #��
/�4�6#��/%/�#"�H�"�/�#�%��"����/�
�
P��/�%"��/% ��/�@��/�%"��/%����86��#��%/�@��/����
%/� �4/%� ��� A/��� %/� %"��/%"@/�"9�� 8/6/� �%� ��#�%��
�/���H�"��� Q )��)�� <<− ϕ R � *� ��� �%%/� ���
/8%"�/�� �:��"�/�� #�� ����6�%� %"��/%��� 8/6/� %%�;/6� �%�
�"����/�/� )�=ϕ �
�
;3<30������(&���0�&�&0(&07��&0��0�&(&����300
�/� %�*�#������6�%�86�84���/�8�6�&��6���*�E464�/�
�������Q�R�����
����������� θθ•
⋅−= ���� ,�&�' ���������������
�
��/��
�����
� ���
=��#� �
�������
�
�−+==
•
θωθ
�
��(
����������������������
�
�� � ⋅⋅= ������������������������������������������������������
(�/�
⋅⋅= �����������������������������������������������������
&� %�� %/6��� #�� %/�� ��4/�"����� ���� /� �� � � 0��
6�86�����/�%/����6�C/�#�%�8:�#4%� �5=����%/����6�C/�
#���/#/� #�%� 8:�#4%�� ���� #��"6� %/� ���6�C/� ��� %/�
8��"�"9���48�6"�6� �������%���������#��"��6�"/ ���
��� %/� �/�/� #�%� 8:�#4%� � %� %/� %���"�4#� #��#�� %/�
/6�"�4%/�"9������%��/66��A/��/��%�����6��#���/�/�#�%�
8:�#4%��*������%/�%���"�4#����/%�#��������
�
;3430������(&���0�&�&0(&07��&0(���&(300
</6/� %/� @��/� %"��/%� ��� #"��I/6��� #��� �"8��� #��
����6�%/#�6��� 4��� ��� 4�� 6��4%/#�6� %"��/%� 8�6�
��#"�� #�� ����6�%� �8�"��� �B' � *� �%� ��6�� 4��
����6�%/#�6� 8�6� ��#��� #��%"@/����� � D�=��
E6"#�/��Q�R��
�
+��'(&���0���0��+00
J�"%"@/�#��%/�%"��/%"@/�"9��#�%���#�%���/���H�"���
��� ��� � � ��� 8��"�%�� "�8%�����/6� 4�� ����6�%/#�6�
%"��/%� � ?4�� ���#�@�/� /� %/� %�*� #�� ����6�%�
�.' ⋅−= � #��#�� �%� ;����6� #�� �/�/��"/�� #��
6�/%"����/�"9��5 ����A/%%/#��8�6���#"��#���:��"�/��
#������6�%�98�"����4/#6H�"����B'��=��/�4�6#��/�
%/� �/�%/� � � �%� ;/%�6� #�%� ;����6� 5 � 4�"%"@/�#�� �%�
���/�#���B'�#���/�%/���� �
�
[ ]�������$���������$����������$����������$=, ����
�
�/� "�8%�����/�"9�� #�� ����� ����6�%/#�6� ���
0"�4%"�3� .�� ��� "%4��6/� ��� %/� �"�46/� �� *� %���
6��4%�/#��� ��� /86��"/�� ��� %/� �"�46/� �K� #��#�� ���
�%/6�� ����� ����� ����6�%/#�6� %��6/� ���/�"%"@/6� /%�
�"����/� 8/6/� H��4%��� �4*� /%�7/#��� #�� %/� @��/�
%"��/%��
�
���1�*$�2����8%�����/�"9�����0"�4%"�30
�
�
���1�*$�6��'��4%�/#���#�%�����6�%/#�6��B'��
�
5��������6�%/#�6��4��"��/����;��"����������A/��/�
%��� ��) � ��� %��6/�#�� ����6�%/6� �%� �"����/� 8/6/�
H��4%����48�6"�6���/��������
�
������(&���0���0
5%�����6�%/#�6�8�6���#���#��%"@/���������/�/����%/�
86�84���/� #�� E6"#�/�� Q�R� � #��#�� %/� ��I/%� #��
����6�%���6H �
�
( )( ) ( )( )Ψ+−+= -����.(�(��' �
� �"�����"����
� θθθθθ
� ���������
�
=��#���%�����6�%/#�6�A/��"#��#"��I/#��/�8/6�"6�#��
4�/��6/����6�/�"9��#��%/�#"�H�"�/�#�%��"����/����
%/� %%/�/#/� ��6�/� 6��4%/6� #�� �"����/�� ���H�"����
E6"#�/�� Q�R�� *� U� �%� �H�"��� ;/%�6� #�� %/� ��I/%�
����4�/#/���
�
=�� /�4�6#�� /� %/� #��"�"�"9�� #�� ��#��� #��%"@/������
%/� %�*� #�� ����6�%� #�� %/� ��4/�"9�� �� ��� 84�#��
6����6"�"6������%�� "�#"�/�%/���4/�"9��������#��#��
����
� ���
%/� �48�6�"�"�� #�� #��%"@/�"����� ��� ��%�� 0� 84��� �%�
;/%�6�#��U��������"��%4*��/�V �
�
( )( ) ( )( )-����.(�(��' �
� �"�����"����
� +−+= θθθθθ
� �
�/�� �"�4"������ ��4/�"����� ���8%�����/�� /� ���� *�
�����
�
( ) ��/���� ��
�
� =+++= -!�- αθθαθ �� �
( )��- �++= �� �/� αθ �
( )θθ �/����%� ++=34(
�� �
�
θθθθθ
������� �
22
34
34
34 ��
� (�
.
�! +��
�
����
� +��
���
� −= �
θθαθθ �"��
�� � �
�� (+=Ψ �
�
�/�� �"�46/� �� *� �� "%4��6/�� %��� 6��4%�/#��� #�� %/�
"�8%�����/�"9��#��%/��%�*���#������6�%�#"�84���/��
�������*������ �����%%/������%/6����������%/���I/%�#��
����6�%� %/� 86�����"/� #�� %/� ��I/%� ����4�/#/ �
��/�"��/����"%/�"�����#��/%�/��6��4���"/�������/��
�
�
���1�*$�7��'��4%�/#���#�%�����6�%/#�6�<�6���#���
=��%"@/����������48�6�"�"��#��#��%"@/�"�����0WV�
�)��
�
���1�*$�8��'��4%�/#���#�%�����6�%/#�6�<�6���#���
=��%"@/����������48�6�"�"��#��#��%"@/�"�����0���)��
�
</6/� %/� ��66���"9�� #�� %/�� ���"%/�"����� #�� /%�/�
�6��4���"/�#/#/�� %/���/6/���6C��"�/��#�%��"����/����
84�#�� ;/6"/6� %/� #��"�"�"9�� #�� %/� �4��"9��
����4�/#/� #�� /�4�6#�� /� %�� 86�84����� 8�6�
'/�"�/�@�%/��Q�R�/�" �
�
���
����
�
γ-
�&� �
���
�
���
�
�
>���
����
�
≤
=���
����
�
1
1
γγ
γγ
γ-
��-
����
-��
-
-�&�
�
D���%/��/8%"�/�"9��#�����/�;/6"/�"9�������66"������/�
���"%/�"9����� %/���I/%�#������6�%�����������8����
���%/��"�46/��
�
���1�*$�9��'��4%�/#���#�%�����6�%/#�6�<�6���#����
=��%"@/����� ���� ��66���"9�� #�� ���"%/�"����� ��� %/�
��I/%�#������6�%���)�
�
�
�
�����
�����
�����
�����
�����
����������
����
� ����
;3;3 +��'(�&���0 ��0 (&0 ��(����&��1�0 ��0 (&0����&����&0��0������(0���(��&30
0
5%���?4��/����8%����8/6/��%�����6�%�#�%�8:�#4%��
"�;�6�"#�� �����/� #�� #��� ����6�%�� � �%� 86"��6�� ���
���/6�/� #�� "�*���/6%�� ���6�C/� /%� �"����/� 8/6/�
86�;��/6���L%�"8%����/%/������0>"���J8��*�8�#�6�
%%�;/6%��/�%/�@��/��4�6�/�8/6/�?4���"�/%���������6��
/� /��4/6��%� ����6�%�6��4%/#�6�*� %�� ���/�"%"��� ��� %/�
8��"�"9�� ���/%������ ;�6�"�/%�� &� ����"�4/�"9�� ���
�4���6/�%/�"�8%�����/�"9��#�%��>"��A�4�"%"@/#�����
%/� @��/� �4�6�/�� 5���� �>"��A� ��� #���� ����/6� 8/6/�
%��6/6� ?4�� �%� 8:�#4%�� �4/�#�� ���6�� ��� �%� 6/����
���)�*���)�����%��/�4%��%/�/��"9��#������6�%�%��?4��
����6/� ?4�� %/� �/66/� /;/���� *� ���6�8/��� %/� @��/�
�4�6�/� #��"#�� /� �4� "��6�"/� ���� 4�/� ;�%��"#/#�
����6 ������"�"/�#��/%�����6�%�6��4%/#�6�8/6/�?4��
���6������4��"��/�"������
�
���
��1�*$�:��5�?4��/�#������6�%�#�%�0>"���J8��
�
���1�*$�;����8%�����/�"9��#�%�0>"��A�8/6/�%/�@��/�
�4�6�/��
�
��1�*$�.<��5�?4��/�#������6�%��"�/%���
�
�
���1�*$�..��'��4%�/#�� #�� %/� 8��"�"9�� %"��/%� #�� %/�
"�8%�����/�"9�����8%��/�
�
���1�*$�.0��'��4%�/#��#��%/�8��"�"9��/��4%/6�#��%/�
"�8%�����/�"9�����8%��/�
�
� ����
���1�*$� .2�� '��4%�/#�� #�%� ;�%�/7�� /8%"�/#�� #�%�
����6�%����%/�"�8%�����/�"9�����8%��/�
�
�
6+ �������3���� �����������������������+�
�5%�����6�%�#�%�8:�#4%��#��%��?4�������8����������/�
����"9�����/��6"���/#��/�%/�@��/�%"��/%�#�%��"����/ �
/4�?4�� ��"���� %/� 8��"�"%"#/#� #�� ��8%�6/6� #";�6�/��
�:��"�/�� #�� %�;/��/�"����� #�%� 8:�#4%�� #��#�� �4�
8��"�"9��#���?4"%"�6"�����/�%���
�
</6/����/�"%"@/6�/�����8:�#4%���#�%��"����/�����4�
8��"�"9�� #�� �?4"%"�6"�� "����/�%� � 4�� �"����/� #��
����6�%� ��� %/@�� ��66/#�� ��� �����/6"�� 8/6/� ?4�� �%�
�"����/�84�#/�6��"��"6�8�6�46�/�"����� ����6�/���5%�
����6�%/#�6��/��":��#������6�#"��I/#��8/6/�?4���%�
�/66��6��6����/%�����8�"���#���/#��
�
5�� �"����/� #�� ����6�%� #"��I�� 8/6/� �%� ����6�%� #�%�
8:�#4%��"�;�6�"#��#��%�����4��6��4%/#�6�%"��/%�?4��
�4�8%/�����%/�%�*�#������6�%� �⋅−= .� �#��#��
�%� ;����6� #�� �/�/��"/�� #�� 6�/%"����/�"9�� #��
���/#���. � ��� �/%�4%/#�� �������� �%� �/��� /���6"�6 �
���� �:��"�/�� #�� ����6�%� 98�"��� �4/#6H�"��� �B'�
�����/���%/� �/�%/���?4��"�#"�/��%���;/%�6���#��%/��
�����/�����#�%��"����/��5%�;/%�6�#�%�;����6�.��� �
��
��������
�
�
�
=
�����
����������
������
������
������
��������
�
�
�/� "�8%�����/�"9�� *� �"�4%/�"9�� #�%� ����6�%/#�6�
#"��I/#�� 8/6/� �%� 8:�#4%�� "�;�6�"#�� #��%�� ��� %/�
@��/� %"��/%� ����4���6/���� %/� �"�46/��� � %/� �4/%� ���
6�/%"@/� ��� 0"�4%"�3� .�� (�� ��� � ��� #��#�� /%� "�4/%�
?4��8/6/��%��/����#�%�8:�#4%���"�8%�����/#"�"��9�/%�
��#�%��4���/�46/#�6����%/���I/%�#������6�%�#��"#��
/�%/��%"�"�/�"�������84���/��/���6"�6��������
�
���1�*$�.6����8%�����/�"9���"�/%�#�%�����6�%�8/6/�
�%�8:�#4%��#��%���
�
&� ����"�4/�"9�� ��� 86�����/�� %��� 6��4%�/#���
�����"#��� #�� %/� �"�4%/�"9�� 8/6/� %/�� ���#"�"�����
"�"�"/%��� H��4%�� 4��� ��)� *� H��4%�� #��� ��)��
0��4"#/������ ��� 86�����/� �%� ;�%�/7�� /8%"�/#�� /%�
/��4/#�6� 8/6/� ���/� 864��/ � #��#�� �%� ;/%�6� #��
�/�46/�"9����8��"�"�/#�����X����;�%�"����
�
�
���1�*$�.7��'��4%�/#��� #�%� ����6�%� %"��/%� 8/6/� �%�
8:�#4%��#��%���
�
����1�*$�.8��(�%�/7��/8%"�/#��/%�/��4/#�6���
����
� ����
�
�
7+ ������ �/��������������������
5%� 86����"8�� ;"6�4/%� ��� �=� �"�4%/6H� %/��
�/6/���6C��"�/���C�"�/��#�%�86����"8��6�/%����%/�?4� �
%/� #"�H�"�/� #�%� �"����/� ���/6H� ����6�/#/� 8�6� %/��
��4/�"����� #"��6���"/%��� ?4�� #��"���� �%�
��;"�"����� #�%� �"����/ � *� %��� ����6�%/#�6���
#"��I/#������%/���/8/�#������6�%�#�%��"����/���6H��
86��/#����
�
����6�?4�6"�"������#�%�86����"8��;"6�4/%�/�#"��I/6�
#���� ��6� 4�� 0���>/6�� ?4�� 8�6�"�/� � %/� �"�4%/�"9��
#�� %/� 6��84���/� #�� %/�� 8%/��/�� 8:�#4%�� "�;�6�"#��
�"�8%�� *� #��%� � /�C� ����� %/� /��"9�� #�� %���
����6�%/#�6��� #"��I/#��� 8/6/� ������ �"����/� � #��
��#�� ?4�� ��� ���/�%�@�/�� %/�� 6���6"��"����� ?4�� ���
���#6C/�� ��� 4�/� 8%/��/� 6�/%�� D��� �/��� ��� %���
6�?4�6"�"����������"����%����"�4"�������/����#��4���
"%4��6/#������%/��"�4"������"�46/ �*����%/��/�%/������
#���6"���%/��4��"9��#���/#/��/���#��4����
�
���1�*$�.9��="/�6/�/�#���/����#��4����
�
�
�
�
�
�
�
./�%/�� �=���6"8�"9��#��%����/����#��4����
�
���������� ��� �/��
���� ����� ������� �/��
5%� �/��� #�� 4��� 8�6�"��� /%�
4�4/6"�� ������6� �%� �"8�� #��
����"�46/�"9�� ���� %/� ?4�� ���
#���/� �6/�/7/6� �� �/%"6�
#��"�"�";/������ #�� %/�
/8%"�/�"9��
������� ������� �/��
5%� �/��� #�� 4��� ����6/� %/�
"���6�/@� �6/�"�/� #�� /�4�6#�� /%�
%/� "�"�"/%"@/�"9�� #�� %/��
�����/����� �/6�/#/�� *� %/�
����"�46/�"9�� �����"#/ � /� �"��
#��?4�� ���84�#/� /���#�6�/� %/��
�/6/���6C��"�/�� #���/#/�� #�%�
�"����/�
������ ��� ���� ������
5%� �/��� #�� 4��� ���/�%���� %/��
���#"�"����� "�"�"/%��� #�%�
�"����/� ��%���"��/#� �
"��%4*��#�� 8/6H���6��� #�%�
�"����/�*�;/%�6���#��;/6"/�%���
����� �/��
��"�"/� �/� �"�4%/�"9�� #�%�
�"����/� ��%���"��/#� �
�/%�4%/�#�� %�� ;/%�6��� ��� �%�
�"��8�� #�� �4���6��� �"�4"���� �
4�/�#�� %��� �/���� #�� 4���
86����"8���*��6/�"�/6�
���� ����������
N6/�"�/� %��� ;/%�6��� #�� %/�
;/6"/�%��� #�%� �"����/� ?4�� �%�
4�4/6"��#��"�/�
����������
("�4/%"@/� ��� 8/��/%%/� �%�
86����"8�� �=� #�%� �"����/� ����
%/�� ���#"�"����� ?4�� ���
6�?4"�6���
�
�/�����#�%��C/����4"#/�8/6/��%�#"��I��#�%��"����/�
A/� �"#�� �6"���/#/� /� ��7���� � 8�6�� ��� %/�
"�8%�����/�"9�� #�%� �"����/� ��� #"��I�� ��� 4��
86��6/�/� �6"���/#�� /� �;������ ����� %�� ��� ("�4/%�
Y/�"� �#����#��?4��%����/����#��4���?4������"�����
A/��/� �%� ������� � ��� 4�"%"@/�� 8/6/� #"��I/6� %/��
�8�"����� #�� %��� ��6�4%/6"��� *� �%� �%47�� #��
"���6�/�"9������%�86��6/�/��
�
�/��"�46/���"%4��6/�%/���6�/���������"�8%�����9�
%/��"�4%/�"9�����("�4/%�Y/�"� �����%%/��%��%�?4��G�
�"���� �%� ;/%�6� #�� %/�� ;/6"/�%��� #�� � ���/#�� #�%�
�"����/� �G � ���A/� � ���A/�� *� �4�� 6��8���";/��
� ����
#�6";/#/�� � %/�� �4/%��� ���� ;/6"/#/�� �"� ��� �/��"/��
%/�� ���#"�"����� "�"�"/%��� #�%� �"����/� *� ��� ��8�6/�
?4�� ��� /��";�� 4�� �"��6� �4*/� ����"�46/�"9�� #��
"���6648�"9�����/�/�������?4������%��"�����/�/I��
#�� 8/��� ?4�� ��� 4�"%"@/� ��� %/�� �"�4%/�"����� #��
�/�%/�� ��4/�#�������%���"��/�/��";/��"�4%/�"9�����
/��";/��%��"��6�*������/���/�%/����6/���"/�#������6�%�
���/�%��"#/�����%�����6�%/#�6�����/%�4%/��%�;/%�6�#��
%/� ���6/#/� #�� ����6�%� ?4�� ��� ���74���� ���� %���
;/%�6��� #�� %/�� ;/6"/�%��� #�%� �"����/� "��6��/�� /%�
�%�?4�� #��#�� ���H�� #���6"�/�� %/�� ��4/�"�����
#"��6���"/%��� ?4�� #���6"���� %/� #"�H�"�/� #�%�
�"����/� ?4�� ��� 6��4�%;��� 8�6� ��#"�� #�� 4��
/%��6"����#��'4���$F4��/��6#���� ��%��4/%��/%�4%/�
�%�;/%�6�#��%/��;/6"/�%�������%��"��8��#���4���6���
�"�4"���� � ?4�� ��� ���6"���� ��� �%� ��8/�"�� #��
����6"/� /�"��/#�� /� �%%/� � *� ��� %/� 869�"�/�
"���6648�"9�� #�%� �"��6� ��� 6�8"��� %/� �"��/�
���4���"/� �6/�"�/� ��� �%� 86����"8�� �=� *� ��� %/��
�4��"�����8/6/�;"�4/%"@/6�%/��;/6"/�%����
�
���1�*$� .:�� ��8%�����/�"9�� #�%� ����>/6�� #��
�"�4%/�"9�����;"�4/%�Y/�"����
�
�8+� ������������������������
��������
5�� �%� ����>/6�� #�� �"�4%/�"9�� 86�����/� �6���
8/��/%%/�� 86"��"8/%�� � ��� %/� 86"��6/� ��� �6"�#/� /%�
4�4/6"�� %/� 8��"�"%"#/#� #�� �%��"6� ���� �4/%� �8�"9��
#���/� �6/�/7/6� �8:�#4%�� �"�8%�� *� 8:�#4%�� #��%�� �
��� %/� �"�46/���� ���84�#��;"�4/%"@/6� %/�8/��/%%/�#��
"�"�"��� 5�� %/�� �"�46/�� ��� *� ��� ��� �4���6/� %/��
8/��/%%/��#��%/��#�������"�46/�"������<��*�<�=�����
#��#�����84�#���6�/%"@/6��"�4%/�"�����#������6�%�
8/6/�%4������6�"�8%�����/#/�����%/�8%/��/�6�/%����
�
�
���1�*$�.;��</��/%%/�#����"�"��
�
���1�*$�0<��</��/%%/�8:�#4%���"�8%��
�
���1�*$�0.��</��/%%/�8:�#4%��#��%��
�
&� ����"�4/�"9�� ��� 86�����/� 4�/� #�� %/�� 864��/��
6�/%"@/#/�� ���6�� %/� ����"�46/�"9�� #�%� 8:�#4%��
�"�8%���=��#�����84�#��/86��"/6�%/��6��84���/��#��
%/�8��"�"9��#�%�8:�#4%��*��4�;�%��"#/#��
�
� ����
���1�*$� 00�� '��84���/�� #�%� ����>/6�� #��
�"�4%/�"9���
�
�9+� �� ���������
�
�/�� #"��6������ ���6/���"/�� #�� ����6�%� #"��I/#/��
8/6/� �%� �"����/� 8:�#4%�� "�;�6�"#�� �"�8%�� *� #��%��
�4�6��� �"�4%/#/�� 8%��/������ ��� �/�%/�� *� ��� �%�
86����"8�� ;"6�4/%� �����"��#�� 6��4%�/#��� �"�"%/6�� �
*� ����6�%/�#�� �%� �"����/�8�6� ��#"��#��#"��6������
���6/���"/��#������6�%��
�
5%� #"��I�� #�%� �"����/� 8�6�"��� �/��"/6� #��
����"�46/�"9��8:�#4%���"�8%��/�8:�#4%��#��%������
8������/��"������%/����64��46/��C�"�/�#����#��?4��
������"����4���"����/�;�6�H�"%��5%�����6�%/#�6�8�6�
6�/%"����/�"9�� #�%� ���/#�� 8�6� ��#"�� #�%� ����6�%�
98�"��� �B'� ����6�%/� ��"�/@������ �%� �"����/�
8:�#4%�� "�;�6�"#�� �"�8%�� �H�� /%%H� #�� %/� @��/�
%"��/% � ���� %/� �/66�6/� �H�"�/� ?4�� �"���� �%� �4�46��
�"����/��C�"����
�
5%� ����6�%/#�6� 8�6� ��#"�� #�� ��#��� #��%"@/�����
#"��I/#��%��6��4���/*�6�6/�������%/�8��"�"9��#�%�
H��4%� � 84#"��#�� ����6�%/6� �%� �"����/� 8/6/�
H��4%���#��"��%"�/�"9��#�%�8:�#4%���/*�6���/���)�
�"� %/� �48�6�"�"�� #�� #��%"@/�"����� ��� 0K� 8�6�� 8/6/�
����������"�/�#��4�/��/66�6/��H��%/6�/�#��%/�?4�����
#"�8�������%/��"����/��C�"����
�
�
�
�
�
������� ����
Q�RZ�/�/ � F�� ������ �����"�6C/� #�� ����6�%�
��#�6���<6���"��$[/%% �5��%�>��#�D%"��� �\]�
������
�
Q�RZ��6"� �D/6%���*�N4�":66�@ �'�#6"����S.4��6"/%�
#��="6���G�</6/��%�=��/66�%%��#��&8%"�/�"�����
�=T�� J�";�6�"#/#� &4�9���/� #�� Z��"#������
]4%"��#��������
�
Q�R'/�"�/�@�%/�����'��/�#��^/@#/�8/�/A����]�S&�
\�;�%� ��>� DA/���6"��� 0%"#"��� ��#��
D���6�%%�6T�� D���6�%� _� ����%%"����� <6�����"���
D����6����5���%%���� �=�8/6���������5%���6"�/%�
/�#� D��84��6� 5��"���6"�� � J�";�6�"�*� ���
.�A6/� ��6/���
�
Q�R&��6�� � F� *� E464�/ � F�� 0>"�"��� J8� &�
<��#4%4�� Y*� 5��6�*� D���6�%� Q5�� %C��/R�� 0/��
E6/��"��� � D/%"��6�"/�� �E&D� ` �6%#� D���6��� �
������ QD���4%�/#�� &������ #�� ����R�
="�8��"�%�� ��� ����6��� �
A��8 11>>>�����6�%�%�A���1-37/1�464�/8/8�6�8#��
�
Q�R� E'�=�&\� ����"#� S\��/�� #�%� �46���
���6�#4��"9��/%�����6�%�8�6���#���#��%"@/����T�
\/�"��/%�&4������4��J�";�6�"�*�������"�����
�
Q�R� 0%��"��� ]�]�� /�#� �"� ` � � ���(���0 =��(���&�0
������( � 5��%�>��#� D%"��� � \] � <6���"��$[/%% �
������
�
�
�
&<5\=�D50�
����;/%�6���#��%������8��������#��%/���/�6"����#�%�
��#�%���/���H�"���#�%��"����/�8:�#4%���"�8%����� �
� ����
( )( ) ( )
( ) ( )( ) ( )
( ) ( )( ) ( )
( ) ( )( ) ( )( ) ( )
( ) ( )( ) ( )( )( ) ( )
( ) ( )( )( ) ( )
( ) ( )
�����
�
�"�
�"��$�������
�"�
�
�"�
�"�
�"��������
�"��
�����������
���
���$��
���$����������
���
�����������
��������������
�������
�����������
�������
�
�
�
�������
�
�
��
�
�������
��
�
����
�
����
�
�
����������
�
���
�
������������
����������
������
�������������
�
���
�
����
�
���
�
��
������
�
�����
�
����
�������
φφφ
φφ
φφφφφφ
φφφφφφ
φφ
φ
φφφφ
φ
φ
++−=++++
++−==
+=
+−+=
+++++
+++=
+
++==
++==++
+++−==++=
+++
++++++=
++++=
(���!
��(�(�((
(���!
!
((��
((��
��(
(��(�(
(
��((����
(����
(��
((�(����
((���
((��
((��
(����
���
�
���
����
�
�
�
./�%/�� �</6H���6���#�%��"����/��"�8%��*�#��%��
�
�=&>!�!�
��#,*�?,�@"��$�!*�
�"��+�
�� �/�/�#�%��/66�� ���� F���
�� �/�/�#�%�8:�#4%���"�8%������
��F���
��D����/����#���6"��"9��
���6���/66��$�8"��/������
\1�1
���
��
D����/����#���6"��"9��
���6��8:�#4%�$�/66��*�
8��#$8��#�
����
��
\1�1
���
������"�4#����/%�#�%�8:�#4%��
�"�8%������ ��
�� ���6�"/�#�%�8:�#4%���"�8%������
��
F��1
���
���
�/�/�#�%�8:�#4%����
�#��%���
����
��� 3��
���
�/�/�#�%�8:�#4%����
�#��%���
����
��� 3��
���
�/�/�#��%/�4�"9�����6��
8:�#4%��������
3��
���
����"�4#�#�%�8:�#4%����
�#��%��������
��
���
����"�4#�#�%�8:�#4%����
�#��%��������
��
]� �]��
���6�"/�#��%���8:�#4%���
� ���#��%���
����
���
F��1
���
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO C: HOJAS DE ESPECIFICACIONES TÉCNICAS
� ����
ANEXO C 1. ESPECIFICACIONES DEL MOTOR
� ���
�
�
ANEXO C 2: ESPECIFICACIONES DE LOS SENSORES
� ���
�
�
� ����
�ANEXO C 3. ESPECIFICACIONES DE LOS RODAMIENTOS LINEALES
� ����
�
� ����
��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
� ����
ANEXO C 4. ESPECIFICACION GENERAL LM12CL �
�
� ����
ANEXO C5: RODAMIENTO RIGIDO DE UNA HILERA DE BOLAS
�
� ����
�
ANEXO D: CODIGOS FUENTE DE PROGRAMAS
� ����
ANEXO D1: CODIGO FUENTE DEL VIRTUAL UMS Declaraciones de variables usadas en el sistema, que se realizan en un modulo Public DirectX As DirectX7 Option Explicit Public vx(), vy1(), vy2() ,vy3(), vy4(), vy5(), vy6(), vxg(), vy1g(), vy2g(), vy3g(), vy4g(), vy5g() Public vy6g(), vyag(), vybg(), vy1aux(), vy1auxg(), vxd(), vy1d(), vy2d(), vy3d(), vy4d(), vy5d() Public vy6d() 'DECLARACIONES PARA RUNGE KUTTA Public tmin, h, y1inicial, y2inicial, y3inicial, y4inicial, y5inicial, y6inicial, tmind, y1iniciald, y2iniciald, y3iniciald, y4iniciald, y5iniciald, y6iniciald, mt, mp, ma, lp, la, j, pi, grav, a, b, c, d, a1, a2, b1, b2, kt, r, ka, kf, mc, m1, m2, me1, l1, l2, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, ls, ms, alpha, beta, iner, gamma, zita, area, prueba, w0, x_abs, integral, ki, sumavs, sumavsant, sumavsaux, x3_aux, x3d_aux, x3_aux1, x3d_aux1d, x5_aux, x5d_aux, x5_aux1, x5d_aux1d, jj1, jj2, gain1, gain2, gain3, gain4, gaini, posxsb, x_absd, gains1, gaind1, gaind2, gaind3, gaind4, gaind5, gaind6, gaindi, ki_d, N,gd1, gd2, gd3, gd4, gd5, gd6, gdi, xgra, xdgra, phigra, phidgra, posxsbd, xgrad, xdgrad, phigrad, phidgrad, tethagrad, tethadgrad, tiempo, angulo_teta, angulo, d_angulo_teta, d_angulo_phi, angulo_phid,d_angulo_phid, pos_x, pos_x, pos_xd, d_pos_xd, nnn, swing_up, linezone, lqrc, smc, slpd, smclow, carrant, mdsd, carrera, carrgraf, pxsb, dpxsb, posxref, x_refsimple, smcgain As Double Public crk, grafos, Public contv, sps As Integer Public Const deg2rad = 3.14159265358979 / 180 Public Const rad2deg = 180 / 3.14159265358979 'PARAMETROS DE ROZAMIENTO UTILIZADOS EN EL MODELO DEL PENDULO Public bbb, ccc As Double 'PARAMETROS DEL MOTOR Public Const km = 0.0333 Public Const kg = 1 Public Const rr = 0.02 Public Const ra = 0.62 Public Const den = 2.7 Public Const pen_con = -0.5 Public m_bMouseDown As Boolean Public reproduciendo As Boolean Public roty As Integer Dim m_lastX ,m_lastY , delta_last, m_lastXd, m_lastYd, delta_lastd As Integer Public todo, todo1 As Direct3DRMFrame3, Public rotyd As Integer '- Rotate Track ball given a point on the screen the mouse was moved to simulate a track ball Public Sub RotateTrackBall(X As Integer, Y As Integer) Dim delta_x As Single, delta_y As Single Dim delta_r As Single, radius As Single, denom As Single, angle As Single Dim delta As Single ' rotation axis in camcoords, worldcoords, sframecoords Dim axisC As D3DVECTOR
� ����
Dim wc As D3DVECTOR Dim axisS As D3DVECTOR Dim base_v As D3DVECTOR Dim origin As D3DVECTOR delta_x = X - m_lastX delta_y = Y - m_lastY m_lastX = X m_lastY = Y delta_r = Sqr(delta_x * delta_x + delta_y * delta_y) radius = 50 denom = Sqr(radius * radius + delta_r * delta_r) If (delta_r = 0 Or denom = 0) Then Exit Sub angle = (delta_r / denom) axisC.X = (-delta_y / delta_r) axisC.Y = (-delta_x / delta_r) axisC.z = 0 Form1.espacio.CameraFrame.Transform wc, axisC todo.InverseTransform axisS, wc Form1.espacio.CameraFrame.Transform wc, origin todo.InverseTransform base_v, wc axisS.X = axisS.X - base_v.X axisS.Y = axisS.Y - base_v.Y axisS.z = axisS.z - base_v.z axisS.X = axisS.X * roty axisS.z = axisS.z * roty todo.AddRotation D3DRMCOMBINE_BEFORE, axisS.X, axisS.Y, axisS.z, angle End Sub Public Sub RotateTrackBalld(Xd As Integer, Yd As Integer) Dim delta_xd As Single, delta_yd As Single Dim delta_rd As Single, radiusd As Single, denomd As Single, angled As Single Dim deltad As Single ' rotation axis in camcoords, worldcoords, sframecoords Dim axisCd As D3DVECTOR Dim wcd As D3DVECTOR Dim axisSd As D3DVECTOR Dim base_vd As D3DVECTOR Dim origind As D3DVECTOR delta_xd = Xd - m_lastXd delta_yd = Yd - m_lastYd m_lastXd = Xd m_lastYd = Yd delta_rd = Sqr(delta_xd * delta_xd + delta_yd * delta_yd) radiusd = 50 denomd = Sqr(radiusd * radiusd + delta_rd * delta_rd) If (delta_rd = 0 Or denomd = 0) Then Exit Sub angled = (delta_rd / denomd) axisCd.X = (-delta_yd / delta_rd) axisCd.Y = (-delta_xd / delta_rd) axisCd.z = 0
� ���
form2.espaciod.CameraFrame.Transform wcd, axisCd todo1.InverseTransform axisSd, wcd form2.espaciod.CameraFrame.Transform wcd, origind todo1.InverseTransform base_vd, wcd axisSd.X = axisSd.X - base_vd.X axisSd.Y = axisSd.Y - base_vd.Y axisSd.z = axisSd.z - base_vd.z axisSd.X = axisSd.X * rotyd axisSd.z = axisSd.z * rotyd todo1.AddRotation D3DRMCOMBINE_BEFORE, axisSd.X, axisSd.Y, axisSd.z, angled End Sub Formulario Pantalla Inicial Option Explicit Private Sub About_Click() frmAbout.Show End Sub Private Sub Command1_Click() sps = 1 angulo = 180 * (3.14159265 / 180) d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 x_refsimple = 0 gain1 = -27.552 gain2 = -26.07 gain3 = -95.0953 gain4 = -22.5443 gaini = 3.1623 gains1 = 1.04 '0.99 smcgain = 24 Load Form1 Form1.Show ini.Hide End Sub Private Sub Command2_Click() sps = 0 gd1 = 15.7221 gd2 = 31.7154 gd3 = 190.4397 gd4 = 65.0519 gd5 = 396.3124 gd6 = 56.1956 gdi = -0.7071
� ���
smcgain = 24 x_refsimple = 0 ini.Hide Load form2 form2.Show End Sub Private Sub Command3_Click() End End Sub Private Sub Form_Load() bbb = 0.001 ccc = 0.1 x_refsimple = 0 Unload Form1 gain1 = -27.552 gain2 = -26.07 gain3 = -95.0953 gain4 = -22.5443 gaini = 3.1623 gains1 = 1.04 '0.99 smcgain = 24 Unload form2 gd1 = 15.7221 gd2 = 31.7154 gd3 = 190.4397 gd4 = 65.0519 gd5 = 396.3124 gd6 = 56.1956 gdi = -0.7071 End Sub Private Sub Pd_Click() Load form2 form2.Show ini.Hide End Sub Private Sub Ps_Click() angulo = 180 * 3.14159265 / 180 d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 Load todo Form1.Show ini.Hide End Sub Private Sub sal_Click()
� ����
End End Sub Private Sub T_Click() tutor.Show End Sub Private Sub Form_unload(cancel As Integer) End End Sub Formulario de Simulación del Péndulo Simple Option Explicit Dim lupa As Boolean Dim Mover As Boolean Dim rotar As Boolean Dim ejesc As Boolean Dim movx As Single Dim posx As Integer Dim posy As Integer Dim posz As Integer Dim mov As Single Dim acum As D3DVECTOR Dim var1 As Single Dim prueba As Double Dim inc As Single Dim deg2rad As Double Dim cont As Double Dim nat As Double Dim aux_x As Double Dim aux_y As Double Dim aux_z As Double Public espaciod As RMCanvas Dim acum1 As Single Dim acum2 As Single Dim acum3 As Single Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Const SM_CXSCREEN = 0 'X Tamaño de la pantalla Const SM_CYSCREEN = 1 'Y Tamaño de la pantalla Public base As Direct3DRMFrame3 Public base_m As Direct3DRMMeshBuilder3 Public baseguia As Direct3DRMFrame3 Public baseguia_m As Direct3DRMMeshBuilder3
� ���
Public baseguia1 As Direct3DRMFrame3 Public baseguia1_m As Direct3DRMMeshBuilder3 Public guia As Direct3DRMFrame3 Public guia_m As Direct3DRMMeshBuilder3 Public guia1 As Direct3DRMFrame3 Public guia1_m As Direct3DRMMeshBuilder3 Public polea As Direct3DRMFrame3 Public polea_m As Direct3DRMMeshBuilder3 Public polea1 As Direct3DRMFrame3 Public polea1_m As Direct3DRMMeshBuilder3 Public bandadent As Direct3DRMFrame3 Public bandadent_m As Direct3DRMMeshBuilder3 Public carro As Direct3DRMFrame3 Public carro_m As Direct3DRMMeshBuilder3 Public carrob As Direct3DRMFrame3 Public carrob_m As Direct3DRMMeshBuilder3 Public motor As Direct3DRMFrame3 Public motor_m As Direct3DRMMeshBuilder3 Public senint As Direct3DRMFrame3 Public senint_m As Direct3DRMMeshBuilder3 Public senint1 As Direct3DRMFrame3 Public senint1_m As Direct3DRMMeshBuilder3 Public ejesen As Direct3DRMFrame3 Public ejesen_m As Direct3DRMMeshBuilder3 Public pend1 As Direct3DRMFrame3 Public pend1_m As Direct3DRMMeshBuilder3 Private Sub Check1_Click() Check2.Value = 0 Check7.Value = 0 'Check8.Value = 0 lqrc = 1 smc = 0 End Sub Private Sub Check2_Click() Check1.Value = 0 Check7.Value = 0 'Check8.Value = 0
� ���
lqrc = 0 smc = 1 smclow = 0 End Sub Private Sub Check3_Click() If Check3.Value = 0 Then Frame11.Visible = True Frame5.Height = 3015 Frame5.Left = 0 Frame5.Top = 7320 Frame5.Width = 2655 Else Frame11.Visible = False Frame5.Height = 1335 Frame5.Left = 120 Frame5.Top = 8760 Frame5.Width = 2655 d_angulo_phi = 0 d_pos_x = 0 End If End Sub Private Sub Check4_Click() If Check4.Value = 1 Then Frame14.Visible = True Check6.Value = 0 Else Frame14.Visible = False End If End Sub Private Sub Check5_Click() refex.Value = 0 x_refsimple = 0 If Check5.Value = 1 Then carrob.SetPosition todo, 0, 1.9, -3.1 framereferencia.Visible = True refex.Max = carrera * 10 refex.Min = -carrera * 10 Else carrob.SetPosition todo, 1110, 1111.9, -1113.1 framereferencia.Visible = False End If carrob.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) carrob.SetColorRGB 0, 0, 0 espacio.Viewport.SetBack var1 espacio.Render End Sub
� ���
Private Sub Check6_Click() If Check6.Value = 1 Then Frame13.Visible = True Check4.Value = 0 Else Frame13.Visible = False End If Text16.Text = bbb Text18.Text = ccc Text17.Text = carrera Text19.Text = gain1 Text15.Text = gain2 Text22.Text = gain3 Text21.Text = gain4 Text20.Text = smcgain Text23.Text = gains1 Text14.Text = gaini Text10.Text = ms Text11.Text = ls End Sub Private Sub Check7_Click() Check1.Value = 0 Check2.Value = 0 clow = 1 End Sub Private Sub Check8_Click() Check1.Value = 0 Check2.Value = 0 Check7.Value = 0 End Sub Private Sub Command1_Click() todo.AddRotation D3DRMCOMBINE_REPLACE, 0, 1, 0, (45 * deg2rad) espacio.CameraFrame.SetPosition Nothing, -48, 4, -49 espacio.Render posx = -48 posy = 4 posz = -49 End Sub Private Sub de_frente_Click() todo.AddRotation D3DRMCOMBINE_REPLACE, 0, 1, 0, (45 * deg2rad) espacio.Render End Sub Private Sub Command2_Click() grafps = 1 graph.Show
� ���
End Sub Private Sub ini_simus_Click() If cont = 1 Or nat = 1 Then Timer1.Enabled = True ini_simus.Visible = False stopp.Visible = True Command2.Enabled = False Else Timer1.Enabled = False End If End Sub Private Sub Controlado_Click() cont = 1 nat = 0 natural.Enabled = True Controlado.Enabled = False End Sub Function inici() deg2rad = 3.14159265 / 180 angulo = 180 * deg2rad d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 End Function Private Sub Form_Load() Load Runge_kuttasimple Load graf Load graph ini.Hide Call inici bbb = 0.001 ccc = 0.1 carrera = 0.7 carrgraf = 27 posxref = 0 x_refsimple = 0 Check3.Value = 1 mdsd = 1 swing_up = 1 lqrc = 1 smc = 0 crk = 0 smclow = 0 Frame5.Height = 1335
� ���
Frame5.Left = 120 Frame5.Top = 8760 Frame5.Width = 2655 grafps = 0 deg2rad = 3.14159265 / 180 Timer1.Enabled = False angulo = 180 * (3.14159265 / 180) d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 prueba = 1 ReDim vxg(120000) ReDim vy1g(120000) ReDim vy2g(120000) ReDim vy3g(120000) ReDim vy4g(120000) ReDim vy1auxg(120000) Dim lScreenWidth As Long Dim lScreenHeight As Long lScreenWidth = GetSystemMetrics(SM_CXSCREEN) lScreenHeight = GetSystemMetrics(SM_CYSCREEN) If lScreenWidth < 1024 And lScreenHeight < 768 Then MsgBox "La resolución de su pantalla no es la adecuada. Asegurese que sea de mínimo 1024x768 pixeles", vbOKOnly, "Error de Resolución" End End If CommonDialog1.flags = cdlOFNOverwritePrompt CommonDialog1.CancelError = True Set DirectX = New DirectX7 With espacio deg2rad = 3.14159265 / 180 espacio.SceneFrame.SetSceneBackgroundRGB 0.1, 0.4, 0.65 '0.1, 0.4, 0.8 espacio.AmbientLight.SetColorRGB 50 / 255, 50 / 255, 50 / 255 Set todo = .D3DRM.CreateFrame(.SceneFrame) .StartWindowed Set base = .D3DRM.CreateFrame(.SceneFrame)
� ���
Set base_m = .D3DRM.CreateMeshBuilder() base_m.LoadFromFile App.Path + "\baseX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing base.AddVisual base_m Set baseguia = .D3DRM.CreateFrame(.SceneFrame) Set baseguia_m = .D3DRM.CreateMeshBuilder() baseguia_m.LoadFromFile App.Path + "\base_guia_newX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing baseguia.AddVisual baseguia_m Set baseguia1 = .D3DRM.CreateFrame(.SceneFrame) Set baseguia1_m = .D3DRM.CreateMeshBuilder() baseguia1_m.LoadFromFile App.Path + "\base_guia_newX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing baseguia1.AddVisual baseguia1_m Set guia = .D3DRM.CreateFrame(.SceneFrame) Set guia_m = .D3DRM.CreateMeshBuilder() guia_m.LoadFromFile App.Path + "\guia_circularX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing guia.AddVisual guia_m Set guia1 = .D3DRM.CreateFrame(.SceneFrame) Set guia1_m = .D3DRM.CreateMeshBuilder() guia1_m.LoadFromFile App.Path + "\guia_circularX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing guia1.AddVisual guia1_m Set polea = .D3DRM.CreateFrame(.SceneFrame) Set polea_m = .D3DRM.CreateMeshBuilder() polea_m.LoadFromFile App.Path + "\poleaX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing polea.AddVisual polea_m Set polea1 = .D3DRM.CreateFrame(.SceneFrame) Set polea1_m = .D3DRM.CreateMeshBuilder() polea1_m.LoadFromFile App.Path + "\poleaX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing polea1.AddVisual polea1_m Set bandadent = .D3DRM.CreateFrame(.SceneFrame) Set bandadent_m = .D3DRM.CreateMeshBuilder() bandadent_m.LoadFromFile App.Path + "\banda_dentX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing bandadent.AddVisual bandadent_m Set carro = .D3DRM.CreateFrame(.SceneFrame) Set carro_m = .D3DRM.CreateMeshBuilder() carro_m.LoadFromFile App.Path + "\carroX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing carro.AddVisual carro_m Set carrob = .D3DRM.CreateFrame(.SceneFrame)
� ���
Set carrob_m = .D3DRM.CreateMeshBuilder() carrob_m.LoadFromFile App.Path + "\carroX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing carrob.AddVisual carrob_m Set motor = .D3DRM.CreateFrame(.SceneFrame) Set motor_m = .D3DRM.CreateMeshBuilder() motor_m.LoadFromFile App.Path + "\motor110X.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing motor.AddVisual motor_m Set senint = .D3DRM.CreateFrame(.SceneFrame) Set senint_m = .D3DRM.CreateMeshBuilder() senint_m.LoadFromFile App.Path + "\Sensor InteligX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing senint.AddVisual senint_m Set senint1 = .D3DRM.CreateFrame(.SceneFrame) Set senint1_m = .D3DRM.CreateMeshBuilder() senint1_m.LoadFromFile App.Path + "\Sensor InteligXX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing senint1.AddVisual senint1_m Set ejesen = .D3DRM.CreateFrame(.SceneFrame) Set ejesen_m = .D3DRM.CreateMeshBuilder() ejesen_m.LoadFromFile App.Path + "\ejeX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing ejesen.AddVisual ejesen_m Set pend1 = .D3DRM.CreateFrame(.SceneFrame) Set pend1_m = .D3DRM.CreateMeshBuilder() pend1_m.LoadFromFile App.Path + "\pend1X.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing pend1.AddVisual pend1_m carrob_m.SetColorRGB 0, 0, 0 var1 = 5000 base.SetPosition todo, 0, 0, 0 base.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 baseguia.SetPosition todo, 28.2, 0, -3.1 baseguia.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espacio.Viewport.SetBack var1 baseguia1.SetPosition todo, -28.3, 0, -3.1 baseguia1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espacio.Viewport.SetBack var1 guia.SetPosition todo, 1.6, 1.9, 0 guia.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad)
� ��
espacio.Viewport.SetBack var1 guia1.SetPosition todo, 4.6, 1.9, 0 guia1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 polea.SetPosition todo, 3.1, 0, -30.3 polea.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 polea1.SetPosition todo, 3.1, 0, 30.7 polea1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 bandadent.SetPosition todo, 3.1, 1.2, 0.2 bandadent.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 carro.SetPosition todo, 0, 1.9, -3.1 carro.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espacio.Viewport.SetBack var1 carrob.SetPosition todo, 1110, 1111.9, -1113.1 carrob.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) carrob.SetColorRGB 0, 0, 0 espacio.Viewport.SetBack var1 motor.SetPosition todo, 1, 1.3, -30.3 motor.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 senint.SetPosition todo, 30.3, 1.25, 3.9 senint.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (180 * deg2rad) espacio.Viewport.SetBack var1 senint1.SetPosition todo, 0, 3.7, -4.2 senint1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espacio.Viewport.SetBack var1 ejesen.SetPosition todo, 5.2, 3.8, 0 ejesen.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espacio.Viewport.SetBack var1 pend1.SetPosition todo, -5.4, 5.5, 0 pend1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) pend1.AddRotation D3DRMCOMBINE_AFTER, 1, 0, 0, (180 * deg2rad) espacio.Viewport.SetBack var1 todo.AddChild base base.AddChild baseguia base.AddChild baseguia1
� ��
base.AddChild polea base.AddChild polea1 base.AddChild bandadent baseguia.AddChild guia baseguia.AddChild guia1 polea.AddChild motor polea.AddChild senint guia.AddChild carro guia1.AddChild carro guia1.AddChild carrob carro.AddChild senint1 senint1.AddChild ejesen ejesen.AddChild pend1 End With inc = 4 posx = -52 posy = 4 posz = -45 espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.CameraFrame.AddRotation D3DRMCOMBINE_BEFORE, 0, 1, 0, (45 * deg2rad) contv = 3 End Sub Private Sub lqr_Click() If Check6.Value = 1 Then Check6.Value = 0 Else Check6.Value = 0 End If Check5.Value = 0 Timer1.Enabled = False stopp.Visible = False ini_simus.Visible = True Load lqrr lqrr.Show End Sub Private Sub Modificar_Click() Check5.Value = 0 Timer1.Enabled = False stopp.Visible = False ini_simus.Visible = True Load Modifi Modifi.Show End Sub
� ���
Private Sub mover_mas_x_Click() posz = posz + inc posx = posx - inc espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub mover_menos_x_Click() posz = posz - inc posx = posx + inc espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub natural_Click() cont = 0 nat = 1 natural.Enabled = False Controlado.Enabled = True End Sub Private Sub Option1_Click() swing_up = 1 End Sub Private Sub Option2_Click() swing_up = 0 End Sub Private Sub pend2_Click() angulo = 180 * deg2rad d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 Load ini Unload Me Me.Hide ini.Show End Sub Private Sub graf_var_Click() graf.Show End Sub Private Sub Reestablecerval_Click() Unload Form1 Load Form1 Form1.Show End Sub
� ���
Private Sub refex_Change() x_refsimple = Val(refex.Value) / 10 Text9.Text = Val(refex.Value) / 10 End Sub Private Sub restab_Click() gain1 = -27.552 gain2 = -26.07 gain3 = -95.0953 gain4 = -22.5443 gaini = 3.1623 gains1 = 1.04 smcgain = 24 mdsd = 1 End Sub Private Sub sal_Click() End End Sub Private Sub sal_swing_Click() End End Sub Private Sub Sliding_Click() If Check6.Value = 1 Then Check6.Value = 0 Else Check6.Value = 0 End If Check5.Value = 0 Timer1.Enabled = False stopp.Visible = False ini_simus.Visible = True Load slidings slidings.Show End Sub Private Sub stopp_Click() Timer1.Enabled = False stopp.Visible = False ini_simus.Visible = True Command2.Enabled = True End Sub
� ���
Private Sub su_Click() If Check6.Value = 1 Then Check6.Value = 0 Else Check6.Value = 0 End If Check5.Value = 0 Timer1.Enabled = False stopp.Visible = False ini_simus.Visible = True Load swing swing.Show End Sub Private Sub subir_y_Click() posy = posy - inc espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub bajar_y_Click() posy = posy + inc espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub sur1_Click() mdsd = 1 End Sub Private Sub sur2_Click() mdsd = 2 End Sub Private Sub sur3_Click() mdsd = 3 End Sub Private Sub Text1_Change() d_angulo_phi = Val(Text1.Text) * deg2rad End Sub Private Sub Text2_Change() d_pos_x = Val(Text2.Text) * deg2rad End Sub Private Sub Text4_Change() If (StrComp(Text4.Text, "")) = 0 Then Else
� ���
If (Abs(Val(Text4.Text)) <= 360 And Abs(Val(Text4.Text)) >= 0) Then ejesen.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (Val(Text4.Text) * deg2rad - angulo) angulo = Val(Text4.Text) * deg2rad If Check3.Value = 1 Then d_angulo_phi = 0 d_pos_x = 0 End If espacio.Render Else Text4.Text = Atn(Sin(Val(Text4.Text)) / Sqr(-Sin(Val(Text4.Text)) * Sin(Val(Text4.Text)) + 1)) * rad2deg End If End If End Sub Private Sub Text7_Change() If (StrComp(Text7.Text, "")) = 0 Then Else If (Abs(Val(Text7.Text)) <= carrera And Abs(Val(Text7.Text)) >= 0) Then posxsb = Val(Text7.Text) 'Text8.Text = posxsb x_abs = Abs(posxsb - pos_x) 'Text9.Text = x_abs If (posxsb < pos_x) Then x_abs = -1 * x_abs End If If posxsb > carrera Then x_abs = carrera End If If posxsb < -carrera Then x_abs = -carrera End If x_abs = (carrgraf / carrera) * x_abs If (Abs(posxsb * carrgraf / carrera) > carrgraf) Then Unload Me Dialog.Show End If pos_x = posxsb If Check3.Value = 1 Then d_angulo_phi = 0 d_pos_x = 0 End If carro.AddTranslation D3DRMCOMBINE_BEFORE, x_abs, 0, 0 Else Dialog.Show Timer1.Enabled = False
� ���
stopp.Visible = False ini_simus.Visible = True Command2.Enabled = True Text7.Text = 0 End If End If espacio.Render End Sub Private Sub Text9_Change() Dim posxsbref, x_absref As Double If (StrComp(Text9.Text, "")) = 0 Then 'Text7.Text = "0" Else If (Abs(Val(Text9.Text)) <= carrgraf And Abs(Val(Text9.Text)) >= 0) Then posxsbref = refex.Value / 10 'Text8.Text = posxsb x_absref = Abs(posxsbref - posxref) 'Text9.Text = x_abs If (posxsbref < posxref) Then x_absref = -1 * x_absref End If If posxsbref > carrera Then x_absref = carrera End If If posxsbref < -carrera Then x_absref = -carrera End If x_absref = (carrgraf / carrera) * x_absref If (Abs(posxsbref * carrgraf / carrera) > carrgraf) Then End If posxref = posxsbref carrob.AddTranslation D3DRMCOMBINE_BEFORE, x_absref, 0, 0 End If End If espacio.Render End Sub Private Sub Timer1_Timer() Text3.Text = pos_x Text5.Text = d_pos_x Text6.Text = angulo * rad2deg Text8.Text = d_angulo_phi * rad2deg
� ���
If (angulo > pi) Then angulo = angulo - 2 * pi End If If (angulo <= -pi) Then angulo = angulo + 2 * pi End If Runge_kuttasimple.recibo pos_x, d_pos_x, angulo, d_angulo_phi, 2 ejesen.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (vy3(1) - angulo) x_abs = Abs(vy1(1) - pos_x) If (vy1(1) < pos_x) Then x_abs = -1 * x_abs End If x_abs = (carrgraf / carrera) * x_abs If (Abs(vy1(1) * carrgraf / carrera) >= carrgraf) Then natural.Enabled = False Controlado.Enabled = True End If carro.AddTranslation D3DRMCOMBINE_BEFORE, x_abs, 0, 0 prueba = (angulo * rad2deg) graf.dibujar vy1(1), vy2(1), vy3(1), vy4(1) angulo = vy3(1) d_angulo_phi = vy4(1) pos_x = vy1(1) d_pos_x = vy2(1) vy1g(crk) = pos_x vy2g(crk) = d_pos_x vy3g(crk) = angulo * rad2deg vy4g(crk) = d_angulo_phi * rad2deg vy1auxg(crk) = vy1aux(1) espacio.Render End Sub Private Sub zoom_mas_Click() If contv = 1 Then aux_x = posx 'BACKUP DE LAS POSICIONES
� ���
aux_y = posy aux_z = posz posz = posz + 3 espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render posx = aux_x posy = aux_y posz = aux_z End If If contv = 2 Then aux_x = posx 'BACKUP DE LAS POSICIONES aux_y = posy aux_z = posz posx = aux_x posy = aux_y posz = aux_z End If posz = posz + 5 posx = posx + 5 espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub zoom_menos_Click() posz = posz - 5 posx = posx - 5 espacio.CameraFrame.SetPosition Nothing, posx, posy, posz espacio.Render End Sub Private Sub Espacio_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) m_bMouseDown = True acum1 = Y acum3 = X End Sub Private Sub Form_Resize() Me.WindowState = 2 End Sub Private Sub manipular_Click() rota_Click End Sub Function rota_Click()
� ���
manipular.Appearance = 1 rotar_click.Appearance = 0 rotar = True lupa = False Mover = False roty = 1 End Function Private Sub rotar_click_Click() rotar_click.Appearance = 1 'zoom.Appearance = 0 manipular.Appearance = 0 rotar = True lupa = False Mover = False roty = 0 End Sub Private Sub pan_Click() rotar = False Mover = True lupa = False End Sub If m_bMouseDown = False Then Exit Sub End If If rotar = True Then RotateTrackBall CInt(X), CInt(Y) End If If Mover = True Then acum.z = -75 acum3 = X acum1 = Y acum.X = ((X * -0.01) + (acum3 * 0.13) + 1.3) acum.Y = ((Y * 0.01) - (acum1 * 0.06) - 0.6) espacio.CameraFrame.SetPosition Nothing, acum.X, acum.Y, acum.z End If If lupa = True Then acum2 = Y If acum1 < acum2 Then mov = mov - 1 Else mov = mov + 1 End If acum.z = (mov * 0.2) - 45 espacio.CameraFrame.SetPosition Nothing, acum.X, acum.Y, acum.z
� ��
End If espacio.Render End Sub Private Sub Espacio_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) m_bMouseDown = False End Sub Private Sub zoom_Click() manipular.Appearance = 0 rotar_click.Appearance = 0 rotar = False lupa = True Mover = False End Sub Private Sub centrar_Click() manipular.Appearance = 0 rotar_click.Appearance = 0 todo.AddTranslation D3DRMCOMBINE_REPLACE, 0, 0, 0 espacio.CameraFrame.SetPosition Nothing, -52, 4, -45 espacio.Render centrar.Appearance = 0 posx = -52 posy = 4 posz = -45 End Sub Private Sub Form_unload(cancel As Integer) angulo = 180 * deg2rad d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 Unload graph Load ini ini.Show Unload Runge_kuttasimple Unload Me Me.Hide End Sub Formulario de Simulación Péndulo Doble Private Sub Form_Load() Text10.Text = pos_xd Text9.Text = d_pos_xd Text6.Text = angulo_phid Text8.Text = d_angulo_phid Text12.Text = angulo_teta
� ��
Text11.Text = d_angulo_teta Text16.Text = bbb Text18.Text = ccc slpd = 0 dpxsb = 0 crk = 0 Load Runge_kutta Load graph Frame5.Height = 1095 Frame5.Left = 240 Frame5.Top = 8880 Frame5.Width = 4335 Panel_theta.Left = 120 panel_phi.Left = 1440 Frame1.Left = 2760 Check1.Value = 1 deg2rad = 3.14159265 / 180 Timer1.Enabled = False angulo_teta = 0 * deg2rad angulo_phid = 180 * deg2rad d_angulo_phid = 0 d_angulo_teta = 0 pos_xd = 0 d_pos_xd = 0 bbb = 0.001 ccc = 0.1 carrera = 0.7 carrgraf = 27 posxref = 0 x_refsimple = 0 ReDim vxg(120000 ReDim vy1g(120000) ReDim vy2g(120000) ReDim vy3g(120000) ReDim vy4g(120000) ReDim vy5g(120000) ReDim vy6g(120000) ReDim vy1auxg(120000) Dim lScreenWidth As Long Dim lScreenHeight As Long lScreenWidth = GetSystemMetrics(SM_CXSCREEN) lScreenHeight = GetSystemMetrics(SM_CYSCREEN) If lScreenWidth < 1024 And lScreenHeight < 768 Then MsgBox "La resolución de su pantalla no es la adecuada. Asegurese que sea de mínimo 1024x768 pixeles", vbOKOnly, "Error de Resolución" End End If CommonDialog1.flags = cdlOFNOverwritePrompt CommonDialog1.CancelError = True Set DirectX = New DirectX7
� ���
With espaciod deg2rad = 3.14159265 / 180 espaciod.SceneFrame.SetSceneBackgroundRGB 0.1, 0.4, 0.65 '(80,150,255) espaciod.AmbientLight.SetColorRGB 50 / 255, 50 / 255, 50 / 255 Set todo1 = .D3DRM.CreateFrame(.SceneFrame) .StartWindowed Set base = .D3DRM.CreateFrame(.SceneFrame) Set base_m = .D3DRM.CreateMeshBuilder() base_m.LoadFromFile App.Path + "\baseX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing base.AddVisual base_m Set baseguia = .D3DRM.CreateFrame(.SceneFrame) Set baseguia_m = .D3DRM.CreateMeshBuilder() baseguia_m.LoadFromFile App.Path + "\base_guia_newX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing baseguia.AddVisual baseguia_m Set baseguia1 = .D3DRM.CreateFrame(.SceneFrame) Set baseguia1_m = .D3DRM.CreateMeshBuilder() baseguia1_m.LoadFromFile App.Path + "\base_guia_newX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing baseguia1.AddVisual baseguia1_m Set guia = .D3DRM.CreateFrame(.SceneFrame) Set guia_m = .D3DRM.CreateMeshBuilder() guia_m.LoadFromFile App.Path + "\guia_circularX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing guia.AddVisual guia_m Set guia1 = .D3DRM.CreateFrame(.SceneFrame) Set guia1_m = .D3DRM.CreateMeshBuilder() guia1_m.LoadFromFile App.Path + "\guia_circularX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing guia1.AddVisual guia1_m Set polea = .D3DRM.CreateFrame(.SceneFrame) Set polea_m = .D3DRM.CreateMeshBuilder() polea_m.LoadFromFile App.Path + "\poleaX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing polea.AddVisual polea_m Set polea1 = .D3DRM.CreateFrame(.SceneFrame) Set polea1_m = .D3DRM.CreateMeshBuilder() polea1_m.LoadFromFile App.Path + "\poleaX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing polea1.AddVisual polea1_m Set bandadent = .D3DRM.CreateFrame(.SceneFrame) Set bandadent_m = .D3DRM.CreateMeshBuilder() bandadent_m.LoadFromFile App.Path + "\banda_dentX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing bandadent.AddVisual bandadent_m
� ����
Set carro = .D3DRM.CreateFrame(.SceneFrame) Set carro_m = .D3DRM.CreateMeshBuilder() carro_m.LoadFromFile App.Path + "\carroX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing carro.AddVisual carro_m Set carroc = .D3DRM.CreateFrame(.SceneFrame) Set carroc_m = .D3DRM.CreateMeshBuilder() carroc_m.LoadFromFile App.Path + "\carroX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing carroc.AddVisual carroc_m Set motor = .D3DRM.CreateFrame(.SceneFrame) Set motor_m = .D3DRM.CreateMeshBuilder() motor_m.LoadFromFile App.Path + "\motor110X.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing motor.AddVisual motor_m Set senint = .D3DRM.CreateFrame(.SceneFrame) Set senint_m = .D3DRM.CreateMeshBuilder() senint_m.LoadFromFile App.Path + "\Sensor InteligX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing senint.AddVisual senint_m Set senint1 = .D3DRM.CreateFrame(.SceneFrame) Set senint1_m = .D3DRM.CreateMeshBuilder() senint1_m.LoadFromFile App.Path + "\Sensor InteligXX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing senint1.AddVisual senint1_m Set senint2 = .D3DRM.CreateFrame(.SceneFrame) Set senint2_m = .D3DRM.CreateMeshBuilder() senint2_m.LoadFromFile App.Path + "\Sensor InteligXX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing senint2.AddVisual senint2_m Set pend21 = .D3DRM.CreateFrame(.SceneFrame) Set pend21_m = .D3DRM.CreateMeshBuilder() pend21_m.LoadFromFile App.Path + "\pend21X.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing pend21.AddVisual pend21_m Set pend1 = .D3DRM.CreateFrame(.SceneFrame) Set pend1_m = .D3DRM.CreateMeshBuilder() pend1_m.LoadFromFile App.Path + "\pend1X.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing pend1.AddVisual pend1_m Set ejesen1 = .D3DRM.CreateFrame(.SceneFrame) Set ejesen1_m = .D3DRM.CreateMeshBuilder() ejesen1_m.LoadFromFile App.Path + "\ejeX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing ejesen1.AddVisual ejesen1_m
� ����
Set ejesen2 = .D3DRM.CreateFrame(.SceneFrame) Set ejesen2_m = .D3DRM.CreateMeshBuilder() ejesen2_m.LoadFromFile App.Path + "\ejeX.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing ejesen2.AddVisual ejesen2_m var1 = 5000 base.SetPosition todo1, 0, 0, 0 '10 5 0 base.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 baseguia.SetPosition todo1, 28.2, 0, -3.1 '32 3 30 baseguia.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espaciod.Viewport.SetBack var1 baseguia1.SetPosition todo1, -28.3, 0, -3.1 '32 3 30 baseguia1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espaciod.Viewport.SetBack var1 guia.SetPosition todo1, 1.6, 1.9, 0 guia.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 guia1.SetPosition todo1, 4.6, 1.9, 0 guia1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 polea.SetPosition todo1, 3.1, 0, -30.3 '(z,y,x)(polea izquierda) polea.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 polea1.SetPosition todo1, 3.1, 0, 30.7 '(z,y,x)(polea der.) polea1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 bandadent.SetPosition todo1, 3.1, 1.2, 0.2 '(z,y,x) bandadent.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 carro.SetPosition todo1, 0, 1.9, -3.1 carro.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espaciod.Viewport.SetBack var1 carroc.SetPosition todo1, 1110, 1111.9, -1113.1 carroc.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espaciod.Viewport.SetBack var1 motor.SetPosition todo1, 1, 1.3, -30.3 motor.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1
� ����
senint.SetPosition todo1, 30.3, 1.25, 3.9 senint.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (180 * deg2rad) espaciod.Viewport.SetBack var1 senint1.SetPosition todo1, 0, 3.7, -4.2 senint1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) espaciod.Viewport.SetBack var1 senint2.SetPosition todo1, 0, 15.6, -5 senint2.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (0 * deg2rad) senint2.AddRotation D3DRMCOMBINE_AFTER, 0, 0, 1, (180 * deg2rad) espaciod.Viewport.SetBack var1 ejesen1.SetPosition todo1, 4.9, 3.8, 0 ejesen1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 ejesen2.SetPosition todo1, 6.1, -15.6, 0 ejesen2.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) espaciod.Viewport.SetBack var1 pend21.SetPosition todo1, 5.1, 5.5, 0 pend21.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) pend21.AddRotation D3DRMCOMBINE_AFTER, 0, 0, 1, (180 * deg2rad) espaciod.Viewport.SetBack var1 pend1.SetPosition todo1, -6.2, 24.8, 0 pend1.AddRotation D3DRMCOMBINE_AFTER, 0, 1, 0, (90 * deg2rad) pend1.AddRotation D3DRMCOMBINE_AFTER, 1, 0, 0, (180 * deg2rad) espaciod.Viewport.SetBack var1 todo1.AddChild base base.AddChild baseguia base.AddChild baseguia1 base.AddChild polea base.AddChild polea1 base.AddChild bandadent baseguia.AddChild guia baseguia.AddChild guia1 polea.AddChild motor polea.AddChild senint guia.AddChild carro guia.AddChild carroc guia1.AddChild carro guia1.AddChild carroc carro.AddChild senint1 senint1.AddChild ejesen1 ejesen1.AddChild pend21 pend21.AddChild senint2 senint2.AddChild ejesen2 ejesen2.AddChild pend1
� ����
End With inc = 4 posx = -87 posy = 4 posz = -82 'Posicion de la Camara espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz ' -5 5 70 buena vista 'Vista Derecha espaciod.CameraFrame.AddRotation D3DRMCOMBINE_BEFORE, 0, 1, 0, (45 * deg2rad) End Sub Private Sub Form_unload(cancel As Integer) Unload Runge_kutta Unload graph angulo = 180 * deg2rad d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 Timer1.Enabled = False angulo_teta = 0 * deg2rad angulo_phid = 180 * deg2rad d_angulo_phid = 0 d_angulo_teta = 0 pos_xd = 0 d_pos_xd = 0 Unload form2 Load ini ini.Show End Sub Private Sub lqr_doble_Click() Check3.Value = 0 Timer1.Enabled = False stopp_d.Visible = False ini_simud.Visible = True Load lqrr_doble lqrr_doble.Show End Sub Private Sub lqr1_Click() gd1 = 15.7221 gd2 = 31.7154 gd3 = 190.4397 gd4 = 65.0519 gd5 = 396.3124 gd6 = 56.1956
� ����
gdi = -0.7071 If Check3.Value = 1 Then Check3.Value = 0 Check3.Value = 1 Else Check3.Value = 1 Check3.Value = 0 End If End Sub Private Sub lqr2_Click() gd1 = 0.7071 gd2 = 0.6061 gd3 = 13.4541 gd4 = 6.4199 gd5 = 54.1951 gd6 = 7.4119 gdi = 0 If Check3.Value = 1 Then Check3.Value = 0 Check3.Value = 1 Else Check3.Value = 1 Check3.Value = 0 End If End Sub Private Sub modificarpar_Click() Check2.Value = 0 Timer1.Enabled = False stopp_d.Visible = False ini_simud.Visible = True Load Modifi Modifi.Show End Sub Private Sub mover_mas_x_Click() posz = posz + inc posx = posx - inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub Private Sub mover_menos_x_Click() posz = posz - inc posx = posx + inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub
� ����
Private Sub rest_Click() posx = -67 posy = 18 posz = -62 espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub Private Sub natural_Click() cont = 0 nat = 1 natural.Enabled = False Controlado.Enabled = True End Sub Private Sub Option1_Click() slpd = 1 Frame12.Visible = True Check2.Value = 0 Check2.Enabled = False End Sub Private Sub Option2_Click() slpd = 0 Check2.Enabled = True Frame12.Visible = False End Sub Private Sub pend11_Click() angulo = 180 * deg2rad d_angulo_phi = 0 pos_x = 0 d_pos_x = 0 Timer1.Enabled = False angulo_teta = 0 * deg2rad angulo_phid = 180 * deg2rad d_angulo_phid = 0 d_angulo_teta = 0 pos_xd = 0 d_pos_xd = 0 Unload form2 Load ini ini.Show End Sub Private Sub refex_Change() x_refsimple = Val(refex.Value) / 10 Text13.Text = Val(refex.Value) / 10 End Sub
� ����
Private Sub Resspendo_Click() Unload form2 Load form2 form2.Show End Sub Private Sub sal_doble_Click() End End Sub Private Sub salir_Click() End End Sub Private Sub stopp_d_Click() Timer1.Enabled = False stopp_d.Visible = False ini_simud.Visible = True Command2.Enabled = True Command4.Enabled = True End Sub Private Sub subir_y_Click() posy = posy - inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz ' -5 5 70 buena vista espaciod.Render End Sub Private Sub bajar_y_Click() posy = posy + inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub Private Sub Text1_Change() d_angulo_phid = Val(Text1.Text) * deg2rad sumavs = 0 End Sub Private Sub Text13_Change() Dim posxsbref, x_absref As Double If (StrComp(Text13.Text, "")) = 0 Then 'Text7.Text = "0" Else If (Abs(Val(Text13.Text)) <= carrgraf And Abs(Val(Text13.Text)) >= 0) Then posxsbref = refex.Value / 10 'Text8.Text = posxsb x_absref = Abs(posxsbref - posxref) 'Text9.Text = x_abs If (posxsbref < posxref) Then x_absref = -1 * x_absref
� ���
End If If posxsbref > carrera Then x_absref = carrera End If If posxsbref < -carrera Then x_absref = -carrera End If x_absref = (carrgraf / carrera) * x_absref If (Abs(posxsbref * carrgraf / carrera) > carrgraf) Then End If posxref = posxsbref carroc.AddTranslation D3DRMCOMBINE_BEFORE, x_absref, 0, 0 End If End If espaciod.Render End Sub Private Sub Text2_Change() d_angulo_teta = Val(Text2.Text) * deg2rad sumavs = 0 End Sub Private Sub Text3_Change() d_pos_xd = Val(Text3.Text) * deg2rad sumavs = 0 End Sub Private Sub Text4_Change() If (StrComp(Text4.Text, "")) = 0 Then Else If (Abs(Val(Text4.Text)) <= 360 And Abs(Val(Text4.Text)) >= 0) Then ejesen1.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (Val(Text4.Text) * deg2rad - angulo_phid) angulo_phid = Val(Text4.Text) * deg2rad If Check1.Value = 1 Then d_angulo_phid = 0 d_angulo_teta = 0 d_pos_xd = 0 End If 'd_angulo_phid = 0 espaciod.Render Else Text4.Text = Atn(Sin(Val(Text4.Text)) / Sqr(-Sin(Val(Text4.Text)) * Sin(Val(Text4.Text)) + 1)) * rad2deg 'Arcsin(X) = Atn(X / Sqr(-X * X + 1))
� ���
End If End If sumavs = 0 End Sub Private Sub Text5_Change() If (StrComp(Text5.Text, "")) = 0 Then Else If (Abs(Val(Text5.Text)) <= 360 And Abs(Val(Text5.Text)) >= 0) Then ejesen2.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (Val(Text5.Text) * deg2rad - angulo_teta) angulo_teta = Val(Text5.Text) * deg2rad If Check1.Value = 1 Then d_angulo_phid = 0 d_angulo_teta = 0 d_pos_xd = 0 End If 'd_angulo_teta = 0 espaciod.Render Else Text5.Text = Atn(Sin(Val(Text5.Text)) / Sqr(-Sin(Val(Text5.Text)) * Sin(Val(Text5.Text)) + 1)) * rad2deg End If End If sumavs = 0 End Sub Private Sub Text5_KeyUp(keyCode As Integer, Shift As Integer) If Not ((keyCode >= 96 And keyCode < 106) Or (keyCode >= 48 And keyCode < 58) Or keyCode = 110 Or (keyCode >= 37 And keyCode <= 40) Or keyCode = 46) Then End If End Sub Private Sub Text7_Change() If (StrComp(Text7.Text, "")) = 0 Then Else If (Abs(Val(Text7.Text)) <= carrera And Abs(Val(Text7.Text)) >= 0) Then posxsbd = Val(Text7.Text) 'Text8.Text = posxsb x_absd = Abs(posxsbd - pos_xd) 'Text9.Text = x_abs If (posxsbd < pos_xd) Then x_absd = -1 * x_absd End If
� ����
If posxsbd > carrera Then x_absd = carrera End If If posxsbd < -carrera Then x_absd = -carrera End If x_absd = (27 / carrera) * x_absd If (Abs(posxsbd * 27 / carrera) > 27) Then Unload Me Dialog1.Show End If pos_xd = posxsbd If Check1.Value = 1 Then d_angulo_phid = 0 d_angulo_teta = 0 d_pos_xd = 0 End If 'd_pos_xd = 0 carro.AddTranslation D3DRMCOMBINE_BEFORE, x_absd, 0, 0 Else Dialog1.Show Text7.Text = 0 Timer1.Enabled = False stopp_d.Visible = False ini_simud.Visible = True Command2.Enabled = True Command4.Enabled = True End If End If sumavs = 0 espaciod.Render End Sub Private Sub Timer1_Timer() Text10.Text = pos_xd Text9.Text = d_pos_xd Text6.Text = angulo_phid * rad2deg Text8.Text = d_angulo_phid * rad2deg Text12.Text = angulo_teta * rad2deg Text11.Text = d_angulo_teta * rad2deg If (angulo_teta > pi) Then angulo_teta = angulo_teta - 2 * pi End If If (angulo_teta <= -pi) Then
� ����
angulo_teta = angulo_teta + 2 * pi End If If (angulo_phid > pi) Then angulo_phid = angulo_phid - 2 * pi End If If (angulo_phid <= -pi) Then angulo_phid = angulo_phid + 2 * pi End If nnn = 2 Runge_kutta.recibo pos_xd, d_pos_xd, angulo_phid, d_angulo_phid, angulo_teta, d_angulo_teta, nnn ejesen1.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (vy3d(1) - angulo_phid) ejesen2.AddRotation D3DRMCOMBINE_BEFORE, 1, 0, 0, (vy5d(1) - angulo_teta) 'Se calcula la pocisión absoluta que se debe mover el carro x_absd = Abs(vy1d(1) - pos_xd) If (vy1d(1) < pos_xd) Then x_absd = -1 * x_absd End If x_absd = (27 / carrera) * x_absd If (Abs(vy1d(1) * 27 / carrera) >= 27) Then natural.Enabled = False Controlado.Enabled = True End If carro.AddTranslation D3DRMCOMBINE_BEFORE, x_absd, 0, 0 graf2.dibujar vy1d(1), vy2d(1), vy3d(1), vy4d(1), vy5d(1), vy6d(1) pos_xd = vy1d(1) d_pos_xd = vy2d(1) angulo_phid = vy3d(1) d_angulo_phid = vy4d(1) angulo_teta = vy5d(1) d_angulo_teta = vy6d(1) vy1g(crk) = pos_xd vy2g(crk) = d_pos_xd vy3g(crk) = angulo_phid * rad2deg vy4g(crk) = d_angulo_phid * rad2deg vy5g(crk) = angulo_teta * rad2deg vy6g(crk) = d_angulo_teta * rad2deg vy1auxg(crk) = vy1aux(1) espaciod.Render End Sub Private Sub voltage_Change()
� ����
If (StrComp(voltage.Text, "")) = 0 Then Else If (Abs(Val(voltage.Text)) <= 24 And Abs(Val(voltage.Text)) >= 0) Then dpxsb = Val(voltage.Text) Else If (Val(voltage.Text)) < -24 Then dpxsb = -24 Else dpxsb = 24 End If End If End If voltagesb.Value = dpxsb End Sub Private Sub voltagesb_Change() voltage.Text = voltagesb.Value dpxsb = voltagesb.Value End Sub Private Sub zoom_mas_Click() posz = posz + inc posx = posx + inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub Private Sub zoom_menos_Click() posz = posz - inc posx = posx - inc espaciod.CameraFrame.SetPosition Nothing, posx, posy, posz espaciod.Render End Sub Private Sub cmdSalir_Click() Unload Me ini.Show End Sub Private Sub espaciod_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) m_bMouseDown = True acum1 = Y acum3 = X End Sub Private Sub Form_Resize() Me.WindowState = 2 End Sub
� ����
Private Sub manipular_Click() rota_Click End Sub Function rota_Click() manipular.Appearance = 1 rotar_click.Appearance = 0 rotar = True lupa = False Mover = False rotyd = 1 End Function Private Sub rotar_click_Click() rotar_click.Appearance = 1 manipular.Appearance = 0 rotar = True lupa = False Mover = False rotyd = 0 End Sub Private Sub pan_Click() rotar = False Mover = True lupa = False End Sub Private Sub espaciod_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If m_bMouseDown = False Then Exit Sub End If If rotar = True Then RotateTrackBalld CInt(X), CInt(Y) End If If Mover = True Then acum.X = ((X * -0.01) + (acum3 * 0.013) + 1.3) acum.Y = ((Y * 0.01) - (acum1 * 0.006) - 0.6) espaciod.CameraFrame.SetPosition Nothing, acum.X, acum.Y, acum.z End If If lupa = True Then acum2 = Y If acum1 < acum2 Then mov = mov - 1 Else mov = mov + 1 End If acum.z = (mov * 0.8) - 45 espaciod.CameraFrame.SetPosition Nothing, acum.X, acum.Y, acum.z
� ����
End If espaciod.Render End Sub Private Sub espaciod_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) m_bMouseDown = False End Sub Private Sub centrar_Click() manipular.Appearance = 0 rotar_click.Appearance = 0 todo1.AddTranslation D3DRMCOMBINE_REPLACE, 0, 0, 0 espaciod.CameraFrame.SetPosition Nothing, -87, 4, -82 ' -5 5 70 buena vista espaciod.Render centrar.Appearance = 0 posx = -87 posy = 4 posz = -82 End Sub Codigo del formulario Runge kutta Option Explicit Function pendulum() kt = 0.1475 kf = 0.1 pi = 3.14159265358979 grav = 9.81 mc = 0.5 ls = 0.5 area = pi * ((1.1 ^ 2) / 4) ms = (den * (ls * 100) * area) / 1000 iner = (ms * ls ^ 2) / 3 integral = 0 sumavs = 0 sumavsant = 0 ki = 3.1623 alpha = mc + ms beta = 0.5 * ms * ls gamma = iner + (ms * ls ^ 2) / 4 zita = 0.5 * ms * grav * ls h9 = km * km * kg * kg / ((rr * rr) * ra) h10 = km * kg / (rr * ra) w0 = (ms * grav * 0.5 * ls / iner) ^ (0.5) End Function Function v_in(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double Dim ys, ys_dot, ks, gs, alphas, ss1, ss, phis, sli As Double If (Abs(x3) < pi / 2) Then ys = (x1 - x_refsimple) + (4 * 0.5 * ls * (Log((1 + Tan(0.5 * x3)) / (1 - Tan(0.5 * x3)))) / (3)) ys_dot = x2 + (4 * 0.5 * ls * x4) / (3 * Cos(x3))
� ����
ks = ((4 * (mc + ms)) / 3) - ms * Cos(x3) * Cos(x3) gs = (9.81 * (ms * ((4 / 3) - Cos(x3) * Cos(x3)) + 4 * mc / 3) / ks) + ((4 * 0.5 * ls * x4 * x4) / (3 * Cos(x3))) alphas = 15 / gs ss1 = Tan(x3) + (ys + ys_dot) * alphas ss = x4 + alphas * Cos(x3) * Cos(x3) * (ys_dot + gs * Tan(x3)) + alphas * ss1 phis = 1 + (8 * 0.5 * ls * alphas * x4 * Sin(x3)) / 3 If mdsd = 1 Then sli = ss * phis Else sli = ss End If End If If Not (Form1.Controlado.Enabled) Then If swing_up = 1 Then x3_aux = x3 x3_aux1 = Abs(x3_aux) If ((x3_aux1 < 35 * deg2rad And x3_aux1 > 30 * deg2rad)) Then 'Or (x3 > 325 * deg2rad And x3 < 335 * deg2rad)) Then v_in = 0 Else If (x3_aux1 < 30 * deg2rad) Then 'Or x3 > 330 * deg2rad) Then If smc = 1 And lqrc = 0 Then If smclow = 0 Then If mdsd = 3 Then v_in = (ss + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else If (sli > 0) Then v_in = (smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else v_in = (-smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) End If End If Else If (sli / 2) <= 1 Then v_in = (((sli / 2) * smcgain) + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else If (sli / 2) > 0 Then v_in = (smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else v_in = (-smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) End If End If End If
� ����
Else v_in = -(gain1 * (x1 - x_refsimple) + gain2 * x2 + gain3 * x3_aux + gain4 * x4) End If Else 'SWING UP v_in = gains1 * (((0.5 * (x4 * x4) / (w0 * w0) - 1) + Cos(x3_aux)) - (0.5 * ms * ls * grav)) If (x4 * Cos(x3) < 0) Then v_in = -1 * v_in End If End If End If Else If lqrc = 0 And smc = 1 Then If smclow = 0 Then If mdsd = 3 Then v_in = (ss + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else If (sli > 0) Then v_in = (smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else v_in = (-smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) End If End If Else If (sli / 2) <= 1 Then v_in = (((sli / 5) * smcgain) + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else If (sli / 2) > 0 Then v_in = (smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) Else v_in = (-smcgain + ((ms + mc) * 9.81 * Sin(x3) - ms * 0.5 * ls * x4 * x4 * Cos(x3) * Sin(x3))) / Cos(x3) End If End If End If Else x3_aux = x3 v_in = -(gain1 * (x1 - x_refsimple) + gain2 * x2 + gain3 * x3_aux + gain4 * x4) End If End If If v_in > 24 Then ' Se establece la saturación del voltaje v_in = 24
� ����
End If If v_in < -24 Then v_in = -24 End If Else v_in = 0 'Voltaje para respuesta natural End If vy1aux(1) = v_in End Function Function u(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double u = h10 * v_in(T, x1, x2, x3, x4) - h9 * x2 End Function ''X dot Function f(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double f = x2 End Function ''PHI dot Function g(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double g = x4 End Function ''X DOT dot Function m(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double 'm = (gamma * u(t, x1, x2, x3, x4) + gamma * beta * Sin(x3) * x4 ^ 2 + zita * bb * Cos(x3) * x4 - zita ^ 2 * Cos(x3) * Sin(x3) - gamma * cc * x2) / (alpha * gamma - zita * beta * Cos(x3) * Cos(x3)) m = (zita * Sin(x3) - bbb * x4 - gamma * p(T, x1, x2, x3, x4)) / (beta * Cos(x3)) 'm = (beta * Cos(x3) * zita * Sin(x3) - bb * x4 * beta * Cos(x3) - gamma * u(t, x1, x2, x3, x4) + gamma * beta * Sin(x3) * x4 * x4 - gamma * cc * x2) / (beta * beta * Cos(x3) * Cos(x3) - gamma * alpha) 'm = (beta * Cos(x3) * zita * Sin(x3) - bb * x4 * beta * Cos(x3) - gamma * u(t, x1, x2, x3, x4) + gamma * beta * Sin(x3) * x4 * x4 - gamma * cc * x2) / (beta * beta * Cos(x3) * Cos(x3) - gamma * alpha) End Function ''PHI DOT dot Function p(ByVal T As Double, ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, ByVal x4 As Double) As Double 'p = ((-bb * x4 + zita * Sin(x3)) / (gamma)) - beta * Cos(x3) * ((u(t, x1, x2, x3, x4) + beta * Sin(x3) * x4 * x4 - cc * x2) / (alpha * gamma - zita * beta * Cos(x3) * Cos(x3))) - beta * gamma * Cos(x3) * ((bb * Cos(x3) * x4 - zita * Cos(x3) * Sin(x3)) / (alpha * gamma * gamma - gamma * zita * beta * Cos(x3) * Cos(x3))) p = (beta * Cos(x3) * (u(T, x1, x2, x3, x4) + beta * Sin(x3) * x4 * x4 - ccc * x2) + alpha * (bbb * x4 - zita * Sin(x3))) / (beta * beta * Cos(x3) * Cos(x3) - alpha * gamma)
� ���
'p = (u(t, x1, x2, x3, x4) + beta * Sin(x3) * x4 * x4 - cc * x2 - alpha * ((beta * Cos(x3) * (zita * Sin(x3) - bb * x4) - gamma * (u(t, x1, x2, x3, x4) + beta * Sin(x3) * x4 * x4 - cc * x2)) / (beta * beta * Cos(x3) * Cos(x3) - gamma * alpha))) / (beta * Cos(x3)) 'p = ((-bb * x4 + zita * Sin(x3)) / (gamma)) - beta * Cos(x3) * ((u(t, x1, x2, x3, x4) + beta * Sin(x3) * x4 * x4 - cc * x2) / (alpha * gamma - beta * beta * Cos(x3) * Cos(x3))) - beta * beta * Cos(x3) * ((bb * Cos(x3) * x4 - zita * Cos(x3) * Sin(x3)) / (alpha * gamma * gamma - gamma * beta * beta * Cos(x3) * Cos(x3))) End Function Function kuta() Dim k11, k12, k13, k14 As Double 'los k1 para las ecuaciones Dim k21, k22, k23, k24 As Double 'los k2 para las ecuaciones Dim k31, k32, k33, k34 As Double 'los k3 para las ecuaciones Dim k41, k42, k43, k44 As Double 'los k4 para las ecuaciones Dim y1, y2, y3, y4, X, i As Double ReDim vx(N) ' REDIMENCIONAMOS LOS ARRAYS DINAMICOS ReDim vy1(N) ReDim vy2(N) ReDim vy3(N) ReDim vy4(N) ReDim vy1aux(N) y1 = y1inicial y2 = y2inicial y3 = y3inicial y4 = y4inicial For i = 0 To (N - 1) X = tmin + h * i vx(i) = X vy1(i) = y1 vy2(i) = y2 vy3(i) = y3 vy4(i) = y4 k11 = h * f(X, y1, y2, y3, y4) k12 = h * m(X, y1, y2, y3, y4) k13 = h * g(X, y1, y2, y3, y4) k14 = h * p(X, y1, y2, y3, y4) k21 = h * f(X + h / 2, y1 + k11 / 2, y2 + k12 / 2, y3 + k13 / 2, y4 + k14 / 2) k22 = h * m(X + h / 2, y1 + k11 / 2, y2 + k12 / 2, y3 + k13 / 2, y4 + k14 / 2) k23 = h * g(X + h / 2, y1 + k11 / 2, y2 + k12 / 2, y3 + k13 / 2, y4 + k14 / 2) k24 = h * p(X + h / 2, y1 + k11 / 2, y2 + k12 / 2, y3 + k13 / 2, y4 + k14 / 2) k31 = h * f(X + h / 2, y1 + k21 / 2, y2 + k22 / 2, y3 + k23 / 2, y4 + k24 / 2) k32 = h * m(X + h / 2, y1 + k21 / 2, y2 + k22 / 2, y3 + k23 / 2, y4 + k24 / 2) k33 = h * g(X + h / 2, y1 + k21 / 2, y2 + k22 / 2, y3 + k23 / 2, y4 + k24 / 2) k34 = h * p(X + h / 2, y1 + k21 / 2, y2 + k22 / 2, y3 + k23 / 2, y4 + k24 / 2)
� ���
k41 = h * f(X + h, y1 + k31, y2 + k32, y3 + k33, y4 + k34) k42 = h * m(X + h, y1 + k31, y2 + k32, y3 + k33, y4 + k34) k43 = h * g(X + h, y1 + k31, y2 + k32, y3 + k33, y4 + k34) k44 = h * p(X + h, y1 + k31, y2 + k32, y3 + k33, y4 + k34) y1 = y1 + (1 / 6) * (k11 + 2 * k21 + 2 * k31 + k41) y2 = y2 + (1 / 6) * (k12 + 2 * k22 + 2 * k32 + k42) y3 = y3 + (1 / 6) * (k13 + 2 * k23 + 2 * k33 + k43) y4 = y4 + (1 / 6) * (k14 + 2 * k24 + 2 * k34 + k44) Next i End Function Public Function recibo(ByVal y10 As Double, ByVal y20 As Double, ByVal y30 As Double, ByVal y40 As Double, y50 As Double) As Double tmin = 0 h = 0.01 crk = crk + 1 If crk > 120000 Then crk = 0 End If y1inicial = y10 y2inicial = y20 y3inicial = y30 y4inicial = y40 N = y50 Call kuta If vy1(1) >= carrera Then vy1(1) = carrera vy2(1) = 0 End If If vy1(1) <= -carrera Then vy1(1) = -carrera vy2(1) = 0 End If vxg(crk) = crk * 0.01 End Function Private Sub cmdSalir_Click() Unload Me End Sub Private Sub Form_Load() Call pendulum End Sub Private Sub Form_unload(cancel As Integer)
� ����
Call pendulum 'Unload grafica End Sub Codigo para formulario Runge_Kutta doble Option Explicit Function pendoble() pi = 3.14159265358979 grav = 9.81 mc = 0.5 'm1 = 0.1026 'm2 = 0.1026 me1 = 0.1 l1 = 0.4 l2 = 0.4 m1 = ((pi * 1.1 ^ 2 / 4) * l1 * 270) / 1000 m2 = ((pi * 1.1 ^ 2 / 4) * l2 * 270) / 1000 jj1 = m1 * l1 ^ 2 / 12 jj2 = m2 * l2 ^ 2 / 12 h1 = mc + m1 + m2 + me1 h2 = m1 * l1 * 0.5 + m2 * l1 + me1 * l1 h3 = m2 * l2 * 0.5 h4 = m1 * l1 * l1 * 0.5 * 0.5 + m2 * l1 * l1 + jj1 + me1 * l1 ^ 2 h5 = m2 * l1 * l2 * 0.5 h6 = m1 * l1 * 0.5 * grav + m2 * l1 * grav + me1 * l1 * grav h7 = m2 * l2 * l2 * 0.5 * 0.5 + jj2 h8 = grav * m2 * l2 * 0.5 h9 = km * km * kg * kg / ((rr * rr) * ra) h10 = km * kg / (rr * ra) w0 = (m1 * grav * 0.5 * l1 / (m1 * l1 * l1 / 3)) ^ (0.5) End Function Function v_ind(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double If Not (form2.Controlado.Enabled) Then kf = 0 If (x5d > 180 * deg2rad) Then x5d_aux = x5d - 2 * pi Else x5d_aux = x5d End If x5d_aux1d = Abs(x5d_aux) If (x3d > 180 * deg2rad) Then x3d_aux = x3d - 2 * pi Else x3d_aux = x3d End If x3d_aux1d = Abs(x3d_aux)
� ����
If slpd = 0 Then v_ind = -1 * (gd1 * (x1d - x_refsimple) + gd2 * x2d + gd3 * x3d + gd4 * x4d + gd5 * x5d + gd6 * x6d) Else v_ind = dpxsb End If Else kf = 0.1 v_ind = 0 End If If v_ind > 24 Then v_ind = 24 End If If v_ind < -24 Then v_ind = -24 End If vy1aux(1) = v_ind End Function Function u(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double u = h10 * v_ind(td, x1d, x2d, x3d, x4d, x5d, x6d) - h9 * x2d - ccc * x2d ' con rozamiento End Function ''AA Function aa(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double aa = ((h6 * Sin(x3d)) / (h5 * Cos(x5d))) + ((Sin(x5d) * (x4d + x6d) * (x4d + x6d)) / (Cos(x5d))) + bbb * x4d / h5 'con rozamiento End Function '' BB Function bb(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double bb = ((h4) / (h5 * Cos(x5d))) + 1 End Function '' CC Function cc(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double cc = (h2 * Cos(x3d)) / (h5 * Cos(x5d)) End Function ''DD Function dd(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double dd = (h8 * Sin(x3d + x5d) / h7) - (h5 * x4d * x4d * Sin(x5d)) / (h7) - bbb * x6d / h7 'con rozamiento End Function ''ee
� ����
Function ee(ByVal x5d) As Double ee = ((h5 * Cos(x5d)) / (h7)) + 1 End Function '' ff Function ff(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double ff = (h3 * Cos(x3d + x5d)) / (h7) End Function ''GG Function gg(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double gg = (h2 * Cos(x3d)) + (h3 * Cos(x3d + x5d)) End Function ''JJ Function jj(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double jj = h3 * Cos(x3d + x5d) End Function ''LL Function ll(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double ll = -h2 * x4d * x4d * Sin(x3d) - h3 * (x4d + x6d) * (x4d + x6d) * Sin(x3d + x5d) End Function ''F-C Function fmc(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double fmc = ff(td, x1d, x2d, x3d, x4d, x5d, x6d) - cc(td, x1d, x2d, x3d, x4d, x5d, x6d) End Function ''E-B Function emb(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double emb = ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d) End Function ''DEN Function den(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double 'den = h1 - ((gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d)) + jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ((ee(x5d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d)) / (emb(td, x1d, x2d, x3d, x4d, x5d, x6d)) - ff(td, x1d, x2d, x3d, x4d, x5d, x6d)) den = h1 - gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) + jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * (ee(x5d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - ff(td, x1d, x2d, x3d, x4d, x5d, x6d)) End Function ''num Function num(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double
� ����
'num = u(td, x1d, x2d, x3d, x4d, x5d, x6d) - gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * (dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - aa(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ee(x5d) * (aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - dd(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - ll(td, x1d, x2d, x3d, x4d, x5d, x6d) num = u(td, x1d, x2d, x3d, x4d, x5d, x6d) - gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * (dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - aa(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ee(x5d) * (aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - dd(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - ll(td, x1d, x2d, x3d, x4d, x5d, x6d) End Function ''X dot Function f(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double f = x2d 'f = x3d End Function ''PHI dot Function g(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double 'g=x4d g = x4d End Function ''TETHA dot Function m(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double m = x6d 'm = (c * Sin(x1d) + b * Cos(x1d) * Sin(x1d) * x4d ^ 2 - a * Cos(x1d) * p(td, x1d, x2d, x3d, x4d, x5d, x6d)) / b - kf * x3d End Function ''X DOT dot Function p(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double ''p = (u(td, x1d, x2d, x3d, x4d, x5d, x6d) + (a * Sin(x1d) * x3d ^ 2) - 2 * b * Cos(x1d) * Sin(x1d) * x4d * x3d - (a / b) * Cos(x1d) * (c * Sin(x1d) + b * Cos(x1d) * Sin(x1d) * x4d ^ 2)) / (d + b * Sin(x1d) ^ 2 - (a ^ 2 / b) * Cos(x1d) ^ 2) - kf * x4d 'p = (u(td, x1d, x2d, x3d, x4d, x5d, x6d) - (jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * dd(td, x1d, x2d, x3d, x4d, x5d, x6d)) - ll(td, x1d, x2d, x3d, x4d, x5d, x6d) - ((gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * (dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - aa(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d))) - (jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ee(x5d) * (aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - dd(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (h1 - (jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ff(td, x1d, x2d, x3d, x4d, x5d, x6d)) + ((jj(td, x1d, x2d, x3d, x4d, x5d, x6d) * ee(x5d) * (ff(td, x1d, x2d, x3d, x4d, x5d, x6d) - cc(td, x1d, x2d, x3d, x4d, x5d, x6d)) - gg(td, x1d, x2d, x3d, x4d, x5d, x6d) * (ff(td, x1d, x2d, x3d, x4d, x5d, x6d) - cc(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d)))) p = num(td, x1d, x2d, x3d, x4d, x5d, x6d) / den(td, x1d, x2d, x3d, x4d, x5d, x6d) End Function ''PHI DOT dot
� ����
Function qq(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double ''qq = x4d qq = (dd(td, x1d, x2d, x3d, x4d, x5d, x6d) - aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - p(td, x1d, x2d, x3d, x4d, x5d, x6d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) End Function ''TETHA DOT dot Function rrr(ByVal td As Double, ByVal x1d As Double, ByVal x2d As Double, ByVal x3d As Double, ByVal x4d As Double, ByVal x5d As Double, ByVal x6d As Double) As Double ''rr = (c * Sin(x1d) + b * Cos(x1d) * Sin(x1d) * x4d ^ 2 - a * Cos(x1d) * p(td, x1d, x2d, x3d, x4d, x5d, x6d)) / b - kf * x3d 'rrr = (p(td, x1d, x2d, x3d, x4d, x5d, x6d) * (((ee(x5d) * (ff(td, x1d, x2d, x3d, x4d, x5d, x6d) - cc(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d))) - ff(td, x1d, x2d, x3d, x4d, x5d, x6d))) + ((ee(x5d) * (aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - dd(td, x1d, x2d, x3d, x4d, x5d, x6d))) / (ee(x5d) - bb(td, x1d, x2d, x3d, x4d, x5d, x6d))) + (dd(td, x1d, x2d, x3d, x4d, x5d, x6d)) rrr = dd(td, x1d, x2d, x3d, x4d, x5d, x6d) + ee(x5d) * (aa(td, x1d, x2d, x3d, x4d, x5d, x6d) - dd(td, x1d, x2d, x3d, x4d, x5d, x6d)) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) + p(td, x1d, x2d, x3d, x4d, x5d, x6d) * (ee(x5d) * fmc(td, x1d, x2d, x3d, x4d, x5d, x6d) / emb(td, x1d, x2d, x3d, x4d, x5d, x6d) - ff(td, x1d, x2d, x3d, x4d, x5d, x6d)) End Function Function kutad() Dim k11d, k12d, k13d, k14d, k15d, k16d As Double 'los k1 para las ecuaciones Dim k21d, k22d, k23d, k24d, k25d, k26d As Double 'los k2 para las ecuaciones Dim k31d, k32d, k33d, k34d, k35d, k36d As Double 'los k3 para las ecuaciones Dim k41d, k42d, k43d, k44d, k45d, k46d As Double 'los k4 para las ecuaciones Dim y1d, y2d, y3d, y4d, y5d, y6d, Xd, i As Double ReDim vxd(N) ReDim vy1d(N) ReDim vy2d(N) ReDim vy3d(N) ReDim vy4d(N) ReDim vy5d(N) ReDim vy6d(N) ReDim vy1aux(N) y1d = y1iniciald y2d = y2iniciald y3d = y3iniciald y4d = y4iniciald y5d = y5iniciald y6d = y6iniciald 'X es el tiempo que cambia de acuerdo al paso or i = 0 To (N - 1) Xd = tmind + h * i vxd(i) = Xd vy1d(i) = y1d vy2d(i) = y2d vy3d(i) = y3d
� ����
vy4d(i) = y4d vy5d(i) = y5d vy6d(i) = y6d k11d = h * f(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k12d = h * p(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k13d = h * g(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k14d = h * qq(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k15d = h * m(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k16d = h * rrr(Xd, y1d, y2d, y3d, y4d, y5d, y6d) k21d = h * f(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k22d = h * p(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k23d = h * g(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k24d = h * qq(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k25d = h * m(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k26d = h * rrr(Xd + h / 2, y1d + k11d / 2, y2d + k12d / 2, y3d + k13d / 2, y4d + k14d / 2, y5d + k15d / 2, y6d + k16d / 2) k31d = h * f(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k32d = h * p(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k33d = h * g(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k34d = h * qq(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k35d = h * m(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k36d = h * rrr(Xd + h / 2, y1d + k21d / 2, y2d + k22d / 2, y3d + k23d / 2, y4d + k24d / 2, y5d + k25d / 2, y6d + k26d / 2) k41d = h * f(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) k42d = h * p(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) k43d = h * g(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) k44d = h * qq(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) k45d = h * m(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) k46d = h * rrr(Xd + h, y1d + k31d, y2d + k32d, y3d + k33d, y4d + k34d, y5d + k35d, y6d + k36d) y1d = y1d + (1 / 6) * (k11d + 2 * k21d + 2 * k31d + k41d) y2d = y2d + (1 / 6) * (k12d + 2 * k22d + 2 * k32d + k42d) y3d = y3d + (1 / 6) * (k13d + 2 * k23d + 2 * k33d + k43d) y4d = y4d + (1 / 6) * (k14d + 2 * k24d + 2 * k34d + k44d) y5d = y5d + (1 / 6) * (k15d + 2 * k25d + 2 * k35d + k45d) y6d = y6d + (1 / 6) * (k16d + 2 * k26d + 2 * k36d + k46d)
� ����
If (y3d > pi) Then y3d = y3d - 2 * pi End If If (y3d <= -pi) Then y3d = y3d + 2 * pi End If If (y5d > pi) Then y5d = y5d - 2 * pi End If If (y5d <= -pi) Then y5d = y5d + 2 * pi End If Next i End Function Public Function recibo(ByVal y10d As Double, ByVal y20d As Double, ByVal y30d As Double, ByVal y40d As Double, ByVal y50d As Double, ByVal y60d As Double, ByVal y70d As Double) As Double tmind = 0 h = 0.01 y1iniciald = y10d y2iniciald = y20d y3iniciald = y30d y4iniciald = y40d y5iniciald = y50d y6iniciald = y60d crk = crk + 1 If crk > 120000 Then crk = 0 End If N = y70d Call kutad If vy1d(1) >= carrera Then vy1d(1) = carrera vy2d(1) = 0 End If If vy1d(1) <= -carrera Then vy1d(1) = -carrera vy2d(1) = 0 End If End Function
� ����
Private Sub cmdSalir_Click() Unload Me End Sub Private Sub Form_Load() Call pendoble End Sub Private Sub Form_unload(cancel As Integer) Call pendoble End Sub Codigo para formulario modif. Private Sub Command1_Click() If (StrComp(Text3.Text, "")) = 0 Then l1 = l1 Else If (Val(Text3.Text)) = 0 Then l1 = l1 Else l1 = Val(Text3.Text) End If End If If (StrComp(Text4.Text, "")) = 0 Then l2 = l2 Else If (Val(Text4.Text)) = 0 Then l2 = l2 Else l2 = Val(Text4.Text) End If End If pi = 3.14159265358979 grav = 9.81 mc = 0.5 me1 = 0.1 m1 = ((pi * 1.1 ^ 2 / 4) * l1 * 270) / 1000 m2 = ((pi * 1.1 ^ 2 / 4) * l2 * 270) / 1000 jj1 = m1 * l1 ^ 2 / 12 jj2 = m2 * l2 ^ 2 / 12 h1 = mc + m1 + m2 + me1 h2 = m1 * l1 * 0.5 + m2 * l1 + me1 * l1 h3 = m2 * l2 * 0.5 h4 = m1 * l1 * l1 * 0.5 * 0.5 + m2 * l1 * l1 + jj1 + me1 * l1 ^ 2 h5 = m2 * l1 * l2 * 0.5 h6 = m1 * l1 * 0.5 * grav + m2 * l1 * grav + me1 * l1 * grav h7 = m2 * l2 * l2 * 0.5 * 0.5 + jj2 h8 = grav * m2 * l2 * 0.5
� ���
End Sub Private Sub Command111_Click() If (bbnuevo.Text = "") Then bbb = bbb Else bbb = Val(bbnuevo.Text) End If If (StrComp(ccnuevo.Text, "")) = 0 Then ccc = ccc Else ccc = Val(ccnuevo.Text) End If End Sub Private Sub Command2_Click() carrant = carrera If (StrComp(carr.Text, "")) = 0 Then carrera = carrera Else If (Val(carr.Text)) = 0 Then carrera = carrera Else carrera = Val(carr.Text) End If End If pos_x = carrera * pos_x / carrant pos_xd = carrera * pos_xd / carrant End Sub Private Sub Command3_Click() If (StrComp(Text1.Text, "")) = 0 Then ls = ls Else If (Val(Text1.Text)) = 0 Then 'carr.Text = Val(carrera) ls = ls Else ls = Val(Text1.Text) End If End If ms = (den * (ls * 100) * area) / 1000 iner = (ms * ls ^ 2) / 3 integral = 0 sumavs = 0 sumavsant = 0 alpha = mc + ms beta = 0.5 * ms * ls
� ���
gamma = iner + (ms * ls ^ 2) / 4 zita = 0.5 * ms * grav * ls w0 = (ms * grav * 0.5 * ls / iner) ^ (0.5) End Sub Private Sub Form_Load() carrant = carrera Form1.Enabled = False form2.Enabled = False End Sub Private Sub Form_unload(cancel As Integer) Form1.Enabled = True form2.Enabled = True End Sub Formulario Para Cagar Valores de LQR Option Explicit Private Sub cargar_doble_Click() If (StrComp(Text1_d1.Text, "")) = 0 Then gd1 = gd1 Else gd1 = Val(Text1_d1.Text) End If If (StrComp(Text2_d2.Text, "")) = 0 Then gd2 = gd2 Else gd2 = Val(Text2_d2.Text) End If If (StrComp(Text3_d3.Text, "")) = 0 Then gd3 = gd3 Else gd3 = Val(Text3_d3.Text) End If If (StrComp(Text4_d4, "")) = 0 Then gd4 = gd4 Else gd4 = Val(Text4_d4.Text) End If If (StrComp(Text5_d5.Text, "")) = 0 Then gd5 = gd5 Else gd5 = Val(Text5_d5.Text)
� ����
End If If (StrComp(Text6_d6.Text, "")) = 0 Then gd6 = gd6 Else gd6 = Val(Text6_d6.Text) End If If (StrComp(Text7_d7.Text, "")) = 0 Then gdi = gdi Else gdi = Val(Text7_d7.Text) End If Unload lqrr_doble End Sub Private Sub salir_double_Click() Unload lqrr_doble End Sub Private Sub Form_unload(cancel As Integer) form2.Enabled = True End Sub Private Sub Form_Load() form2.Enabled = False End Sub Formulario Para Cargar Valores de Swing Up Option Explicit Private Sub Command1_Click() Unload swing End Sub Private Sub Command111_Click() If (StrComp(text_swing, "")) = 0 Then gains1 = gains1 Else gains1 = Val(text_swing.Text) End If Unload swing End Sub Private Sub Form_unload(cancel As Integer) Form1.Enabled = True End Sub Private Sub Form_Load() Form1.Enabled = False
� ����
End Sub Formulario Para Cargar Valores de Modos Deslizantes Private Sub Command1_Click() Unload slidings End Sub Private Sub Command111_Click() If (StrComp(text_sliding, "")) = 0 Then smcgain = smcgain Else smcgain = Abs(Val(text_sliding.Text)) End If Unload slidings End Sub Private Sub Form_unload(cancel As Integer) Load Form1 Form1.Show End Sub Private Sub Form_Load() Form1.Enabled = True End Sub
ANEXO D2: CODIGO DE MATLAB Control por Realimentación del estado para péndulo simple den=2.7 area=pi*((1.1^2)/4) M=0.5; L=0.5; m=(den*(L*100)*area)/1000; b=0.001; c=0.1; I=(1/3)*m*L^2; g=9.81; Wo=sqrt((m*g*(L/2))/I); r=0.02; Ra=0.62; Kg=1; Km=0.0333; h1=( (Km*Kg)/(r*(Ra)) ); h2=( (Km^2*Kg^2)/((r^2)*Ra) ); E=M+m; F=0.5*m*L; G=0.25*m*(L^2)+I;
� ����
H=0.5*m*g*L; [A,B,C,D]=linmod('NOLINEALL') Cf=[1 0 1 0]; Au=[A zeros(4,1);-Cf, 0]; Bu=[B;0] Q=zeros(5); Q(1,1)=605; %605 %45 %90 Q(2,2)=100; %100 %15 %15 Q(3,3)=456; %456 %39 %390 Q(4,4)=15; %15 %25 %25 Q(5,5)=10; %10 %1 %15 U=5; %0.5 Ku = lqr(Au,Bu,Q,U) K=[Ku(1) Ku(2) Ku(3) Ku(4)]; Ki=Ku(5); Control por realimentación del estado para péndulo doble M=0.5; bbbb=0.001 cccc=0.1 L1=0.4; L2=0.4; l1=L1/2; l2=L2/2; m1=((pi*1.1^2/4)*L1*270)/1000; m2=((pi*1.1^2/4)*L2*270)/1000; men=0.1 J1=m1*L1^2/12; J2=m2*L2^2/12; g=9.81; r=2/100; Ra=0.62; kg=1; km=0.033; kma=km*kg/(r*Ra); kmb=km*km*kg*kg/(r*r*Ra); h1= M+m1+m2+men; h2=m1*l1+m2*L1+men*L1; h3=m2*l2; h4=m1*l1*l1+m2*L1*L1+J1+men*L1*L1; h5=m2*L1*l2; h6=m1*l1*g+m2*L1*g+men*L1*g h7=m2*l2^2+J2;
� ����
h8=g*m2*l2; h9=kmb; h10=kma; Calculo para control por realimentación del estado péndulo doble [A,B,C,D]= linmod('penduloecuaciones'); C=[1 0 1 0 1 0]; Q=diag([400,1000,0,0,0,40,1]); Zi=zeros(6,1); Zo=zeros(3,3); Aau=[A Zi;-C 0]; Bau=[B;0]; R=2; [Kgain,P,E]=lqr(Aau,Bau,Q,R); Kfedback=Kgain(1:6); Ki=Kgain(7);�
� ����
ANEXO E: MANUAL DE USUARIO �
� ����
�
�
TUTORIAL DE USO DEL VIRTUAL UMS
El Virtual UMS es un programa diseñado para realizar simulaciones de estrategias de
control aplicadas hacia los sistemas de péndulo invertido traslacional simple y doble
(UMS) por medio de un prototipo virtual de estos sistemas.
Las simulaciones realizadas en el Virtual UMS permiten conocer el comportamiento
aproximadamente real del sistema seleccionado ante la acción de un controlador
previamente diseñado, convirtiendo al Virtual UMS en una herramienta fundamental y
muy importante para los usuarios del UMS, ya que, además de poder trabajar con los
controladores prediseñados, pueden cambiar los parámetros de estos para así simular y
previamente afinar o sintonizar los controladores diseñados por el usuario antes de
implementarlos en el sistema real.
• Interfaz de VIRTUAL UMS
El Virtual UMS consta de tres pantallas funcionales, la primera, la “pantalla principal”, la
cual se accede a ella al ejecutar el programa, esta pantalla permite el acceso a las otras
dos de acuerdo a la necesidad del usuario, por medio de los botones laterales que posee,
además de dar la opción de salir totalmente del programa.
Las otras pantallas pertenecen a las dos configuraciones básicas del sistema, “Péndulo
Simple” y “Péndulo Doble”.
� ����
• Pantalla “Péndulo Simple”: Sobre esta pantalla se realiza todo lo que tiene que
ver con la simulación del péndulo simple. Para la adecuada utilización de esta
pantalla se deben seguir en orden los cuatro pasos fundamentales.
� ����
Paso 0 => Se selecciona el tipo de simulación a realizar, si es Swing Up que
significa controlarlo desde el rango completo o desde su posición inferior, o Lineal
que es controlarlo solo en su zona lineal o cercana a esta, también se escoge que
tipo de regulador prediseñado se quiere utilizar LQR, Modos Deslizantes y Low
Chattering.
Paso 0
� ���
Paso 1 => El paso 1 corresponde a las condiciones iniciales del sistema, las
cuales el usuario puede manipular para evaluar la eficiencia del controlador
diseñado, se puede inicializar la variable Phi, correspondiente a la posición angular
del péndulo y X, correspondiente a la posición lineal del carro
Paso 1
� ���
Paso 2 => En el paso dos se elige que acción que se llevara a cabo en la
simulación, si se desea una “dinámica natural” del sistema, es decir que se mueva
naturalmente sin acción de ningún tipo de controlador, o si se “activa control”, para
que el controlador seleccionado actué sobre el sistema.
Paso 2
� ����
Paso 3 => En el paso 3 se da inicio a la simulación, haciendo clic sobre el botón
de inicio o play, y al mismo tiempo poder detenerla haciendo clic en el botón de
stop.
Paso 3
� ����
También en el paso tres se encuentra las opciones de “Graficas en tiempo real”,
las cual nos da acceso a las graficas de las variables del sistema mientras se
realiza la simulación, esta da la libertad de escoger que variable se quiere
observar, haciendo clic en las opciones que se encuentra a la derecha de estas.
� ����
Además, en el paso tres se pueden observar las “graficas históricas” de todas la
simulaciones realizadas hasta el momento, también dando la opción de escoger
que variable se desea observar y analizar.
� ����
Una vez realizados los pasos anteriores para poner en marcha la simulación del
Virtual UMS en la modalidad de péndulo simple, se pueden utilizar otras
herramientas u “opciones adicionales” para verificar o probar el controlador que
esta funcionando.
Entre las “Opciones Adicionales” se encuentran “Ver Valores Actuales de las
Variables”, esta opción permite ver en tiempo real los valores de las variables del
sistema (posición del Carro, velocidad del carro, posición de péndulo, velocidad
del péndulo) en sus respectivas unidades.
Aquí se observan las variables del sistema
Se selecciona la opción
� ����
Otra opción a la que se puede acceder es la de “Otras Condiciones Iniciales = 0”,
esta es un complemento del paso 1, ya que, al ser seleccionada
automáticamente asigna cero a las variables correspondientes a la velocidad del
carro y del péndulo, y cuando sucede todo lo contrario, al no estar seleccionada,
se pueden inicializar estas dos variables. Por defecto esta opción siempre esta
seleccionada.
Se inicializan las variables
� ����
También dentro de las “Opciones Adicionales” se pueden observar los valores
constantes del sistema, seleccionando la opción con este nombre permite ver
valores como los coeficientes de fricción, las masas, las longitudes y las
constantes de los controladores prediseñados dentro del programa.
Se observan los valores constantes del sistema
� ����
La ultima opción que nos permite seleccionar es “Establecer Referencia del
Carro”, la cual permite por medio de una barra de desplazamiento mover un carro
fantasma para que el caro del péndulo tienda hacia el valor del dicho carro
fantasma, haciendo así con dicha perturbación una prueba a los controladores
diseñados en la zona lineal.
Carro Fantasma para mostrar la Referencia
Se establece la referencia
� ����
La barra de menú de la pantalla “péndulo simple” posee las opciones para
reestablecer los valores iniciales de los controladores y del sistema, también
posee el cambio de los parámetros de los controladores prediseñados y además
de los parámetros del sistema.
Reestablecer Valores
� ���
Para modificar los parámetros de los controladores se debe hacer clic en el menú
“controladores”, el cual despliega un menú donde se encuentra los controladores
prediseñados (Regulador Lineal, Swing Up, Sliding).
Al hacer clic en “Regulador Lineal” se despliega una ventana, en la cual se
pueden modificar cada una de las ganancias del regulador por realimentación de
estados diseñado para el sistema y posteriormente se cargan.
Ganancias de los controladores
Regulador Lineal
� ���
En la opción “Swing Up” se puede modificar la ganancia Ka del controlador y
cargarlo al sistema, para aumentar o atenuar según el valor la capacidad de
acción del controlador hacia el sistema.
Modificación de Parametros
Swing Up
� ����
Cuando se activa “Sliding” da la opción de modificar la constante Kd, la cual varía
el límite de voltaje que puede utilizar el controlador por modos deslizantes, el cual
por defecto es 24 voltios.
Modificación del Parámetro Kd
Sliding
� ����
También se encuentran las opciones “Superficie 1”, “Superficie 2” y “Superficie 3”,
las cuales se refieren a las diferentes superficies de control del controlador por
modos deslizantes.
La “Superficie 1” indica la superficie ( )Ψ⋅--��� , la “superficie 2” describe la
superficie ( )--��� y la “superficie 3” se refiere a la superficie - .
Superficies de Control
� ����
Las dos últimas opciones del menú son “Restablecer los Valores de los
Controladotes”, y “Salir”, la primera reactiva los valores por defecto de los
controladores y la otra sale completamente del programa.
La otra opción de la barra de menú es la de “Editar Parámetros”, en la cual se
pueden modificar los valores constantes del prototipo físico del sistema, tales
como, carrera efectiva, longitudes de los péndulos tanto como del sistema de
péndulo simple y doble y los coeficientes de rozamiento en el encoder y en el
carro, todo esto para ver el comportamiento de los controladores afectando las
propiedades físicas del sistema completo.
Modificación de parámetros del Sistema
Editar Parámetros
� ����
Se encuentran también opciones de manipulación visual del prototipo virtual tales
como girar alrededor de dos ejes, girar alrededor de un eje, ubicar vista frontal y
restaurar, las cuales se encuentran en la sección “Manipular”.
También hay opciones de movimiento sobre el plano frontal del prototipo y por
ultimo la opción de alejar y acercar “Zoom”.
Opciones Visuales
� ����
• Pantalla “Péndulo Doble”: Sobre esta pantalla se realiza todas las simulaciones
acerca del UMS en la modalidad de “Péndulo Doble”, los cuatro pasos esenciales
de funcionamiento de la pantalla del Péndulo Simple son los mismos para esta,
solo se encuentra pequeños cambios.
En el Paso 0 da la opción de escoger el controlador lineal prediseñado y otra
opción “Manual” la cual aplica un voltaje manejado por una barra de
desplazamiento para el funcionamiento del péndulo.
La diferencia en el Paso 1 radica a que el péndulo doble posee mas grados de
libertad con respecto al péndulo simple.
El Paso 3 a diferencia de la pantalla anterior, permite mediante un botón llamado
“Step”, mostrar la simulación del control paso a paso mientras se presione ese
botón.
Las “opciones adicionales”, las opciones visuales de “Movimiento”, “Manipular” y
“Zoom” y las opciones de la barra de menú exceptuando la opción de
“Controladores”, son similares a la anterior pantalla, ya que, en este se pueden
modificar solo las ganancias del controlador lineal, además de cargar dos
controladores por defecto que se encuentran dentro del software los cuales se
diferencian solo en los valores de las ganancias.
� ����
Paso 0
Paso 1 Paso 2 Paso 3
Opciones Visuales Menu
Voltaje Manual