Memoria. Prólogo Parte I Memoria ..................................................................................................4 Prólogo ....................................................................................................................5 Capítulo 1 Introducción....................................................................................8 1 Estudio de los trabajos existentes / tecnologías existentes................................ 8 2 Motivación del proyecto .................................................................................... 10 3 Objetivos............................................................................................................. 11 4 Metodología / Solución desarrollada................................................................ 12 5 Recursos / herramientas empleadas................................................................. 13 Capítulo 2 Introducción Teórica a los Helicópteros de Radiocontrol ..........15 1 Compensación del momento de rotación......................................................... 15 2 La cabeza del rotor ............................................................................................ 17 2.2 Control vertical mediante variación del número de revoluciones (Paso Fijo) ................. 17 2.3 Control vertical mediante paso colectivo de la pala (Paso Variable) .............................. 20 2.4 Control del movimiento horizontal (Paso Colectivo) ...................................................... 23 2.4.1 Paso cíclico de la pala.............................................................................................. 25 3 Estabilidad.......................................................................................................... 29 3.1 Ayuda de estabilización de Bell ...................................................................................... 32 3.2 Sistema de estabilización de Hiller.................................................................................. 34 3.3 Combinación de diferentes sistemas de estabilización .................................................... 36 3.3.1 El rotor Schlüter....................................................................................................... 37 4 Funciones de pilotaje ......................................................................................... 41 Capítulo 3 Modelos Matemáticos ...................................................................43 1 ¿Para qué un modelo? ....................................................................................... 43 2 Modelo para un helicóptero de radio control.................................................. 44 3 Metodología para la determinación de parámetros de un modelo................ 44 4 Los Ensayos ........................................................................................................ 45 4.1 Requisitos de los ensayos ................................................................................................ 45 4.2 La elaboración de un protocolo de ensayos..................................................................... 47 Capítulo 4 1 El Módulo Senoidal ......................................................................51 Características del módulo ............................................................................... 51 1.1 Características de la señal PPM....................................................................................... 52 1 Memoria. Prólogo 2 El hardware del módulo.................................................................................... 53 2.1 Los “Fuse Bits” del ATmega8515................................................................................... 56 3 El software del módulo senoidal....................................................................... 58 3.1 Software en el PC ............................................................................................................ 58 3.2 Software en el módulo senoidal....................................................................................... 60 3.2.1 Bootloader ............................................................................................................... 61 3.2.2 Programa principal................................................................................................... 62 Capítulo 5 Instalación Abordo .......................................................................67 1 Posibilidades de carga ....................................................................................... 67 2 Tren de carga ..................................................................................................... 68 3 Instalación IMU ................................................................................................. 71 4 Correspondencia de los ejes.............................................................................. 73 Capítulo 6 1 Experimentos ................................................................................76 Proceso de un vuelo de captura ........................................................................ 76 1.1 Revisión de la mecánica y estado de los componentes.................................................... 76 1.2 Vuelos de calentamiento y comprobación....................................................................... 76 1.3 Vuelos de captura de datos .............................................................................................. 77 2 Análisis de datos................................................................................................. 77 2.1 Representación de datos .................................................................................................. 78 2.2 Filtrado de datos y análisis .............................................................................................. 81 Capítulo 7 Resultados y Conclusiones ...........................................................86 1 Primeros ensayos de vuelo ................................................................................ 86 2 Prueba de las primeras modificaciones ........................................................... 90 3 Helicóptero nuevo .............................................................................................. 93 4 Prueba de modificaciones y módulo senoidal.................................................. 98 Capítulo 8 Futuros desarrollos.....................................................................107 1 Aumentar la frecuencia del ruido .................................................................. 107 2 Aplicación de filtros dinámicos....................................................................... 107 3 Mejora del módulo senoidal............................................................................ 108 4 Influencia del ruido magnético ....................................................................... 108 5 Drift en los sensores ......................................................................................... 109 2 Memoria. Prólogo 6 Búsqueda de las mejores RPM ....................................................................... 109 Bibliografía .........................................................................................................111 Apéndice I Programa Principal Módulo ...........................................................112 Apéndice II Código Bootloader Módulo............................................................118 Anexo III Programa Configurador para PC.....................................................126 Apéndice IV Programas Análisis de Datos........................................................134 Parte II Capítulo 1 Estudio económico..........................................................................143 Evaluación de costes...................................................................144 3 Memoria. Prólogo 4 Parte I MEMORIA Memoria. Prólogo PRÓLOGO Fue en 1969 cuando el primer modelo de helicóptero radiocontrolado hizo su vuelo inaugural. Era un modelo muy básico, cuyo lema de diseño se basaba en suprimir todo lo que no fuese estrictamente necesario, puesto que las “copias” a escalas de helicópteros reales resultaban demasiado complicadas, delicadas e inefectivas. El helicóptero estaba diseñado y construido por Dieter Schlüter, y fue el primer modelo que consiguió hacer una translación y aterrizar sano y salvo. Atrás quedaban un gran número de diseños y modelos, algunos de los cuales no tuvieron una vida útil superior a los veinte segundos, debido a la dificultad de su manejo y a las habilidades y entrenamiento exigidos para su correcto pilotaje. Desde entonces los helicópteros de radio control han avanzado increíblemente. Tanto en diseño, como en las calidades de los materiales. Y también ha avanzado enormemente la electrónica de control, haciéndolos mucho más fáciles de pilotar. Esto los convierte hoy en día en la nueva revolución de un hobby, el aeromodelismo, plagando los campos de vuelo con estos pequeños modelos y, en algunos casos, no tan pequeños. Además han reducido enormemente los precios y los costes de los repuestos, a la vez que han reducido su mantenimiento. Actualmente en el mercado hay una gran variedad de modelos con diferentes tamaños y cualidades. Los hay tan pequeños que se pueden posar en la palma de una mano, y tan grandes que pueden levantar varios kilos y volar con soltura. Son estos últimos, los que tienen gran capacidad de carga, a pesar de su tamaño y su sencillez, los que han llamado nuestra atención y han motivado este proyecto. 5 Memoria. Prólogo En la actualidad hay gran cantidad de operaciones y trabajos que se apoyan en los helicópteros reales como herramienta básica, y sin los cuales sería muy difícil realizar dichas tareas. Entre dichos trabajos podemos encontrar labores de control y seguimiento del tráfico, asistencia en accidentes, asistencia en incendios, control y revisión de embalses y presas hidráulicas, seguimiento y verificación de líneas de alta tensión, toma de imágenes tanto de fotografía aérea como en rodajes de películas, control de plagas agrícolas y fumigación, y un sinfín de aplicaciones militares, entre otros. En estos trabajos, el presupuesto destinado a la compra, utilización y mantenimiento de un helicóptero es muy elevado (suponiendo un gran desembolso de varios millones de Euros). Sin embargo, algunas de estas mismas tareas se pueden resolver mediante la utilización de helicópteros de radio control. Son muchas ya las compañías de cine que los utilizan para hacer rodajes, y las empresas de fotografía que los emplean para realizar fotografía aérea. Pero su manejo, a pesar de haberse simplificado mucho a lo largo de los años sigue siendo complicado, son necesarios muchos meses de práctica con simuladores y en el campo de vuelo para aprender a volar un helicóptero de radio control con la habilidad suficiente como para no estrellar el costoso equipo que portan, además de requerirse una visibilidad perfecta del helicóptero por parte del piloto. Es por esto por lo que nos animamos a elegir como tema de proyecto de fin de carrera intentar desarrollar un “estabilizador de vuelo para helicópteros de radio control”. El objetivo de este proyecto es claro, intentar dotar a un helicóptero de radio control de la electrónica (y la inteligencia artificial) necesaria para que sea capaz de realizar un vuelo autónomo no dirigido, y que así se pudiese emplear para realizar los ya diversos trabajos antes mencionados, sin la necesidad de una inversión tan elevada, y sin necesidad de un piloto ni un mantenimiento tan exhaustivo. Este asistente está especialmente concebido para facilitar el vuelo y el 6 Memoria. Prólogo control de este tipo de helicópteros. De este modo el helicóptero se convierte en un UAV (Unmanned Aerial Vehicle). De querer conseguir esta meta última el proyecto sería muy largo, requiriéndose varios años para conseguir un desarrollo realmente efectivo y que sea capaz de volar el helicóptero. Razón por la cual este proyecto de fin de carrera se va a limitar a dar unos primeros pasos en este apasionante proyecto, pretende servir de toma de contacto con la idea y realizar unos primeros desarrollos de utilidad para el proyecto global. Es por esto que esta memoria incorpora gran cantidad de información sobre los helicópteros de radio control y sus peculiaridades, para que futuros proyectandos puedan continuar esta labor con las menores complicaciones a la hora de entender aquello que se encuentra hecho, y puedan conocer a fondo el trabajo que he realizado a lo largo de este año de trabajo. En concreto este proyecto se centra en el “análisis de datos y en la estimación de estado”. Esto es, elaborar un procedimiento sistemático para la obtención de datos helicóptero, ya que los procedimientos manuales no sirven, y analizar los mismos para determinar si son válidos para conocer cual es la orientación del helicóptero o no. El proyecto se va a llevar a cabo en paralelo y muy en muy estrecha colaboración con otra parte fundamental del asistente de vuelo: “El sistema de adquisición y almacenamiento de datos”. El encargado del estudio de esta otra faceta del desarrollo es Miguel Ángel Torroba Cañas. Ambas partes son complementarias y están fuertemente relacionadas, motivo que va a generar una estrecha colaboración entre ambos autores. 7 Memoria. Introducción 8 Capítulo 1 INTRODUCCIÓN El proyecto está organizado de la siguiente manera: En el presente Capítulo 1 se Introduce el proyecto. En el Capítulo 2 se hace una Introducción teórica a los helicópteros de radio control y sus características. En el Capítulo 3 se comentan los modelos matemáticos y las necesidades de éstos. En el Capítulo 4 se describe el módulo senoidal y su funcionamiento. En el Capítulo 5 se explica cómo se ha procedido a instalar los equipos en el helicóptero. Los resultados de los experimentos se comentan en el Capítulo 6, y en el Capítulo 7 de dan las conclusiones de este proyecto. También se hacen futuras sugerencias y posibilidades de mejora en el Capítulo 8. 1 Estudio de los trabajos existentes / tecnologías existentes Durante los primeros meses de proyecto se realizó una investigación exhaustiva con el objetivo de recavar información sobre los sistemas de vuelo autónomos y sus necesidades. Todos en general coinciden en el tipo y número de sensores utilizados para determinar la orientación espacial del vehículo: tres acelerómetros y tres giróscopos. También coinciden en la utilización de sistemas GPS para conocer las coordenadas del UAV y radiomodems para la transmisión de datos. Pero, por otro lado, no coinciden en la utilización de un vehículo aéreo. Hay gran variedad de ellos. La mayoría helicópteros y aviones, pero también aparecen gran cantidad de híbridos/VTOL(Vertical Take Off and Landing) de diseño particular. Se comenzó decidiendo cual sería el tipo de vehículo automatizar y sobre el que realizaríamos nuestra investigación. Se buscó en Internet y se encontró gran Memoria. Introducción 9 cantidad de vehículos diferentes, muchos de ellos de fabricación propia. Entre ellos existen los aviones, autogiros, helicópteros, y los VTOL. Pero después de hacer un estudio amplio se decidió que un helicóptero era el mejor vehículo a utilizar. Esta decisión se basaó en un análisis que realiza la Universidad de Arizona [1] sobre el mismo dilema utilizando la Tabla 1. En él se presentan las cuatro opciones a emplear como vehículo aéreo junto con una serie de aspectos a evaluar de cada uno de ellos. Dichos aspectos se puntúan en una escala del 1 al 4, siendo el 1 el mejor y el 4 el peor. Después se suman todos los puntos de cada opción, que representan la dificultad de emplear dicho vehículo para nuestros fines. Como resultado obtenemos que el helicóptero es el vehículo aéreo más Complegidad Estructural Dimensión máxima Monitorización de los controles Número de partes mecánicas Índice de fallo mecánico Distancia de aterrizaje y Velocidad máxima de vuelo Velocidad mínima de vuelo Duración en estacionario Estados característicos Modos de control de vuelo Maniobrabilidad en áreas Grados de libertad Total indicado para utilizarlo como UAV (Unmanned Aerial Vehicle). Avión 1 4 1 1 1 4 1 4 4 1 1 4 4 31 Autogiro 2 3 2 2 2 3 3 3 3 2 2 3 3 33 Helicóptero 3 1 3 3 3 1 4 1 1 3 3 1 1 28 VTOL/ 4 2 4 4 4 2 2 2 2 4 4 2 2 38 Tipo de vehículo Híbrido Tabla 1: Elección del vehiculo aéreo Los grupos de investigación suelen comenzar inicialmente con aviones. Son más fáciles de controlar y la electrónica sufre menos el ruido producido por las vibraciones de la mecánica. Además tienen la ventaja de la autonomía. Memoria. Introducción Sin embargo, carecen de las ventajas de un helicóptero en cuanto a cualidades de vuelo. Los helicópteros tienen la posibilidad de parar en el aire para realizar un análisis de imagen exhaustivo, cosa fundamental en la mayoría de las aplicaciones que anteriormente hemos comentado. Existen ya varios grupos abiertos de investigación sobre UAV’s como el de Autopilot [2], de donde conseguimos gran cantidad de información para los primeros pasos. Este grupo abierto de investigación cuenta con una amplia base de datos con correos electrónicos enviados a lo largo de varios años con todas las respuestas registradas, de manera que pudimos accedes a todas las preguntas y respuestas de los componentes del grupo a cerca del desarrollo y funcionamiento de un sistema inercial de medida. Este grupo está también estrechamente relacionado con una empresa llamada Rotomotion [3], de donde se obtuvo la Unidad Inercial de Medida (IMU) utilizada para realizar este proyecto. Un documento fundamental para orientar este proyecto fue el artículo “System Identification Modeling of a Model-Scale Helicopter” [4], en el cual se estudia la adaptabilidad de los modelos matemáticos empleados para los helicópteros de escala real. Éste estudio defiende la validez de dichos modelos y su aplicación para helicópteros a escala, a pesar de sus diferencias de funcionamiento, y nos proporciona un modelo matemático inicial. 2 Motivación del proyecto Dos son las razones fundamentales de elegir este proyecto. La primera es que tanto mi director como yo somos aeromodelistas dedicados y la idea de automatizar un helicóptero nos producía gran interés personal. Por otro lado, y probablemente la razón más fuerte, es que es un campo de investigación muy reciente y todavía no hay mucha documentación ni soluciones realmente eficientes. Por ello comenzar esta investigación ha sido tan interesante. 10 Memoria. Introducción Tenemos posibilidades de colocarnos rápidamente a la cabeza, puesto que esta universidad tiene mucha experiencia en el análisis de ruido en señales, principal problema de estos vehículos. De tener éxito en este proyecto, y conseguir crear las condiciones necesarias para la creación de un proyecto mayor cuyo objetivo fuese el desarrollo de un helicóptero autónomo, habríamos ayudado a nuestra universidad en el proceso de introducirse en un nuevo campo de investigación con multitud de oportunidades de desarrollo y, de llegar a buen puerto, podría encontrar un medio económico para realizar todas las tareas anteriormente comentadas. 3 Objetivos Entre los pasos previos a la realización de un asistente de vuelo encontramos: • Realización de ensayos: Estos ensayos están destinados a la obtención de grandes cantidades de datos del comportamiento en vuelo de un helicóptero de estas características. Estos datos son tomados de una Unidad Inercial de Medidas (IMU). • Filtrado de las señales: Las señales medidas por la IMU han de ser filtradas para la eliminación de ruidos no deseados. • Modelado y Control del helicóptero: Estas tareas quedan fuera de nuestro proyecto debido a los límites que el tiempo impone. A pesar de ello estimamos que dejaremos esta parte bastante orientada para su posterior desarrollo en otro proyecto. Nuestra intención es dotar de todos los medios necesarios al grupo de trabajo de forma que esta fase sea abordable en la práctica. 11 Memoria. Introducción Estos pasos previos para el diseño de un asistente de vuelo autoestable generan unos objetivos principales a alcanzar durante el desarrollo de este proyecto: • Establecimento del protocolo de ensayos: La necesidad de dicho protocolo resulta fundamental si se desea que los datos obtenidos de los diferentes ensayos sean comparables y directamente relacionables entre sí. La necesidad de repetitividad se hace imprescindible. Además debemos determinar las condiciones necesarias que han de cumplir los ensayos en cuanto a datos obtenidos e influencia de agentes externos en los mismos. • Adaptación de los recursos a dicho protocolo: Se ha de determinar cual es la disposición adecuada de la electrónica a bordo del helicóptero para propiciar las mejores medidas posibles. También se ha que elegir la manera más apropiada de realizar los ensayos con el equipo de que se dispone, acondicionando este a las exigencias del protocolo. • Procesamiento de los datos obtenidos: No sólo se han de aplicar filtros a las señales medidas para eliminar los ruidos que presentan, sino que también se han de clasificar los datos obtenidos dividiéndolos en eje, movimiento deseado, frecuencia, etc… Todo ello con el objetivo de determinar si los datos son válidos para someterlos a un proceso de identificación de parámetros y si, por consiguiente, los objetivos anteriores se han satisfecho correctamente. El objetivo último de este proyecto es obtener “Datos de Calidad”. 4 Metodología / Solución desarrollada Debido a las características de este proyecto, la metodología ha sido la propia de una investigación. Donde cabe destacar la estrecha colaboración con 12 Memoria. Introducción Miguel Ángel Torroba Cañas, que trabajaba en su proyecto complementario a éste de desarrollo del sistema de medición y adquisición de datos. Una parte fundamental del proyecto ha sido la documentación. Es un tema de investigación muy reciente y del cual no hay mucha labor desarrollada, por lo que esta etapa resultó ser especialmente difícil. Evidentemente también se requiere una gran inversión de tiempo en la ideación y realización de ensayos. Esta fue la parte más lenta y costosa del proyecto, puesto que los helicópteros de radio control sufren una importante dependencia del clima, y este año no ha sido muy propicio para la práctica de este hobby, por lo que resultaba difícil encontrar en el campo de vuelo las condiciones apropiadas para la realización de unos ensayos de calidad. 5 Recursos / herramientas empleadas Entre los diversos recursos utilizados para el proyecto encontramos de dos clases: los de la electrónica específica para el proyecto, y los característicos de un helicóptero de radio control. Los recursos empleados en lo referente a la electrónica específica para este proyecto encontramos: • Sistema de adquisición y almacenamiento de datos inerciales: Diseñado por Miguel Ángel Torroba Cañas en su proyecto de fin de carrera [7]. • Sistema generador de tren de pulsos PPM senoidales: Diseñado como parte de este proyecto. • Software vario de diseño: Cadsoft Eagle 4.11 Standard, para el diseño de los circuitos; Atmel AVR Studio 4, para la compilación 13 Memoria. Introducción del Bootloader de los microprocesadores; Avrdude, para configurar los fuse bits y para programar el bootloader en el microcontrolador; CodeVision AVR, para el diseño del software introducido en los microprocesadores; Kargador Bootloader, para la precarga de software en los microprocesadores; Visual Studio .NET, para el diseño de las aplicaciones de PC. • Software de representación y análisis de datos: Matlab 7. Por otro lado tenemos los recursos propiamente aeromodelísticos: • Helicópteros de radio control: Venture 30, Airskipper 50. • Emisora de radio control: JR PCM9X. • Governor: Throttle Jockey Pro. 14 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Capítulo 2 INTRODUCCIÓN TEÓRICA A LOS HELICÓPTEROS DE RADIOCONTROL El objetivo de este capítulo es familiarizar al lector con determinados aspectos de los helicópteros de radio control que son importantes conocer para conseguir un buen entendimiento de su funcionamiento, y de gran importancia para entender este proyecto. Se necesita mucho tiempo para entender a fondo el comportamiento de los helicópteros de radio control y las características de sus sistemas de control, pero espero que esta breve introducción sea suficiente para poder entender fácilmente el contenido de esta memoria. La mayor parte de la información contenida en este capítulo ha sido obtenida del libro “Helicópteros de Radio Control” [5] que por estar descatalogado es difícil de conseguir. 1 Compensación del momento de rotación Tanto en los helicópteros de radio control, como en los reales, el rotor es impulsado directamente a través del eje del rotor principal. Pero el mismo momento que hace girar el eje del rotor, y con ello el rotor principal, produce un momento de reacción en el fuselaje exactamente de la misma magnitud pero en la dirección de giro opuesta. Esto significa que el conjunto del fuselaje del helicóptero «querrá» girar en dirección contraria a la dirección de giro del rotor principal. El momento de rotación que actúa sobre el fuselaje debe ser equilibrado mediante una compensación especial. Para ello existe la posibilidad de una 15 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol compensación del momento de rotación mediante una hélice de cola de acción transversal. En este sistema se monta en la cola del helicóptero una hélice de paso variable en posición transversal respecto a la dirección de vuelo. Esta hélice, denominada también rotor de cola, efectúa una compensación del momento de rotación. La posibilidad de variar el paso de dicha hélice y, por consiguiente, su empuje, permite que se pueda adaptar a los requerimientos de cada momento. El inconveniente de todas las propulsiones en el eje con un rotor reside, sin embargo, en que cada variación de la situación de vuelo y cada variación de la potencia de propulsión requieren una variación exactamente sincronizada de la compensación del momento de rotación. En la práctica, esto implicaba un considerable esfuerzo adicional para el piloto hasta hace tan sólo unos pocos años, momento en el cual comenzaron a utilizarse unos pequeños dispositivos electrónicos llamados giróscopos. Los giróscopos para helicópteros de radio control, son el resultado de un enorme esfuerzo tecnológico de investigación en el campo de los sensores en miniatura. Como el que se muestra el la Ilustración 1, no son más que un pequeño sensor de velocidad angular que se interpone entre el receptor del helicóptero y el servo de mando del rotor de cola. Si el giroscopio detecta un movimiento de cola no deseado lo corrige automáticamente. Si embargo, si la orden procede del receptor, el giroscopio deja que el rotor de cola se mueva sin aplicar dicha corrección. 16 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 1 - giróscopo para helicóptero de radio control 2 La cabeza del rotor Suponiendo que en el mercado el 99% de los helicópteros son los compuestos por un único rotor principal, y un rotor secundario de cola para corregir el par de reacción creado por el rotor principal, vamos a explicar cómo en los helicópteros de esta configuración se resuelve el control del movimiento vertical y del movimiento horizontal. 2.2 Control vertical mediante variación del número de revoluciones (Paso Fijo) La forma más sencilla de controlar un helicóptero en dirección vertical es mediante la variación del número de revoluciones. En este caso, el paso de las palas del rotor se ajustan con un valor determinado fijo, de manera que, en relación con la potencia del motor, a todo gas se produzca la mejor elevación posible. Sencillamente quitando gas, se puede dosificar la potencia del motor y adaptarla al movimiento deseado de elevación, suspensión o descenso. Esta forma de controlar el movimiento de vuelo vertical ha demostrado ser extraordinariamente eficaz para el helicóptero de modelismo. Inicialmente, era incluso el único camino que, en realidad, se podía imaginar para aprender el pilotaje de un helicóptero, puesto que mediante la regulación del número de revoluciones no solo se conseguía una adaptación automática de la potencia al movimiento de vuelo deseado en cada momento, sino que, al mismo tiempo, con 17 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol el rotor principal también cambiaba el numero de revoluciones del rotor de cola necesario para la compensación del momento de rotación. De este modo se conseguía, con la correspondiente sincronización, una facilitación del control del rotor de cola que resultaba extraordinariamente bienvenida. La otra ventaja de este tipo de control en el helicóptero de radio control es que la complejidad mecánica se puede mantener a un nivel muy bajo. Las palas se pueden fijar al rotor prácticamente rígidas y en principio solo se han de ajustar una vez. El control del movimiento de elevación en sí se produce entonces exclusivamente mediante la estrangulación del motor. Una ventaja adicional es la posibilidad de percepción acústica, ya que a un ruido del motor determinado le corresponde siempre una fuerza de ascenso determinada y, al cabo de poco tiempo, esto representa una nueva ayuda para el pilotaje. El inconveniente de este tipo de control del movimiento de vuelo vertical reside, no obstante, en que para que varíe el numero de revoluciones se requiere siempre cierto tiempo. Este lapso de tiempo implica en la práctica un retraso entre la orden de pilotaje y la consiguiente reacción del modelo. Así, en el control mediante el número de revoluciones, uno esta obligado a pensar siempre con cierta anticipación y a calcular el retraso en el control. Sin embargo, esto se aprende con relativa facilidad y existen diversas posibilidades para mantener el retraso dentro de unos límites razonables. Otro factor importante para el buen control del movimiento vertical mediante la variación del numero de revoluciones es la elección de un diámetro adecuado del rotor, de las palas del rotor y del perfil de la pala. Por ejemplo, en el control mediante el numero de revoluciones, en general se utilizan palas con un perfil de impulso de ascenso muy pronunciado, que incluso con variaciones relativamente pequeñas de la velocidad del aire que incide en la pala (o del numero de revoluciones) producen una clara modificación del 18 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol movimiento vertical. De esta forma se reduce también el retraso entre la orden de pilotaje y la reacción del modelo a una medida aceptable. Además, se procura que la pala sea lo mas ligera posible, manteniendo siempre un nivel aceptable de firmeza y estabilidad, para que adopte la variación del numero de revoluciones relativamente deprisa y sin mucha resistencia. Esto se debe al hecho de que siempre se necesita una fuerza de propulsión determinada para variar el número de revoluciones, y esta fuerza puede ser tanto mas pequeña cuanto mas ligero sea el sistema del rotor y menos resistencia oponga a un cambio de revoluciones. De los conceptos previos se deduce la necesidad de tomar en consideración multitud de influencias, y por ello la especial tarea de un constructor de helicópteros consiste en encontrar equilibrio ideal a partir de las relaciones dadas. Muchos constructores de éxito han demostrado que en este campo se pueden lograr resultados excelentes, y puede decirse que el control mediante el número de revoluciones para el movimiento de vuelo vertical es, sin lugar a dudas, el sistema más sencillo, más robusto y más sólido en cuanto al ajuste. En la práctica, sin embargo, se comprueba que el modelo controlado mediante el número de revoluciones ha desaparecido casi por completo, porque solo permite realizar vuelos circulares normales y no es posible la autorrotación en caso de fallo del motor. 19 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol 2.3 Control vertical mediante paso colectivo de la pala (Paso Variable) En este sistema de control del movimiento vertical del helicóptero, las palas del rotor, al contrario que en el control mediante el número de revoluciones, no se fijan de forma rígida a la cabeza del rotor con un ángulo de incidencia elegido previamente, sino que en la cabeza del rotor se encuentran unas articulaciones de inclinación de la pala que permiten variar el ángulo de incidencia de las palas del rotor en el vuelo mediante una orden de pilotaje. Los movimientos de vuelo verticales ya no se controlan mediante una variación del número de revoluciones, sino que este permanece constante. Lo que varia es el ángulo de incidencia de las palas del rotor de forma conjunta e idéntica, o COLECTIVAMENTE, lo cual significa variar inmediatamente el impulso de ascenso en el rotor y, con ello, tener un control directo del movimiento vertical. En este caso se habla también de PITCH COLECTIVO. Este tipo de control se utiliza, sin excepción, en los helicópteros grandes, ya que en ellos el cambio de inclinación de la pala se requiere también por motivos de seguridad para poder controlar las palas del rotor en caso de fallo del motor en una especie de «posición de planeo>> o, para expresarlo con el termino especializado, en autorrotación. 20 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 2- Paso colectivo de la pala (simplificado). Como se muestra en la Ilustración 2, al subir y bajar las vanillas A, se modifica del mismo modo (colectivamente) el ángulo de incidencia de las dos palas del rotor. La indiscutible ventaja del paso colectivo de la pala reside en que permite controlar directamente todos los movimientos de vuelo y sin retraso temporal. Incluso los movimientos verticales de pocos centímetros se pueden controlar con exactitud y, por ejemplo con un tiempo muy variable, los movimientos verticales repentinos se pueden corregir de manera instantánea y directa. El <<inconveniente>> del paso colectivo de la pala en el helicóptero de modelismo reside en la complicación considerablemente mayor de la estructura de la cabeza del rotor y de los mecanismos de control. La sincronización de todas las funciones de control y el ajuste de todas las varillas de control es significativamente más costosa y complicada que en el control mediante el número de revoluciones. 21 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Las razones son múltiples. La cabeza del rotor ha de estar equipada con articulaciones para la inclinación de la pala que trabajan libremente bajo cualquier carga, lo cual exige una cabeza del rotor relativamente cara. La variación del ángulo de incidencia de las palas se debe efectuar de modo uniforme, es decir, colectivo, y esto exige un movimiento homogéneo y ajustado de las palas. Las palas del rotor han de estar bien equilibradas y ser homogéneas en cuanto a su comportamiento aerodinámico y a los diferentes ángulos de incidencia. Esto exige una construcción muy cuidadosa de las palas del rotor y también un acabado y un montaje escrupulosos. La potencia del motor debe estar sincronizada de modo que el rotor principal mantenga en lo posible el mismo número de revoluciones bajo todas las condiciones de carga. Este factor es el punto crítico del sistema, ya que hasta ahora solo se ha solucionado de forma incompleta el problema de mantener constante el número de revoluciones. Para ello hay que servirse de una ayuda que consiste en combinar el control del paso colectivo de la pala con el estrangulamiento del motor e intentar regular los dos elementos de manera que en el motor se de siempre gas suficiente para mantener el numero de revoluciones con un ángulo de incidencia mayor de las palas del rotor. Esto se realiza por medio de un acoplamiento mecánico de los reguladores de <<gas>> y <<pitch>> en el modelo o a través de una combinación electrónica de estas dos funciones mediante un dispositivo especial de control a distancia para helicópteros. 22 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Este sistema de ajuste es delicado y constituye el punto crítico en el empleo del paso colectivo de la pala. Basta una variación en el ajuste de la aguja de inyección, una variación del carburante o de la bujía, una situación meteorológica distinta o una altura diferente del campo de vuelo para que se modifiquen los valores ajustados. Se requiere una experiencia bastante considerable para poder arreglárselas con todas estas modificaciones. En la práctica esto significa que si bien un sistema de rotor principal con paso colectivo de la pala proporciona resultados óptimos en cuanto a la rapidez del control del movimiento vertical, plantea en cambio dificultades en el aspecto del ajuste. 2.4 Control del movimiento horizontal (Paso Colectivo) El sistema del rotor se puede imaginar como una especie de disco o superficie circular, que en la práctica se designa con el nombre de superficie de giro del rotor. Si esta superficie se inclina hacia un lado, resultara, según el grado de inclinación, una fuerza adicional horizontal en la dirección de esta inclinación. Esta fuerza horizontal ocasionara una aceleración continua del helicóptero en la dirección mencionada. Esta aceleración horizontal se mantendrá tanto tiempo como permanezca inclinada la superficie de giro del rotor y no se produzca ningún frenado debido a la creciente intensidad de la resistencia del aire como consecuencia del aumento de la velocidad. Si se volviera a orientar la superficie de giro en posición horizontal, desaparecería la fuerza adicional horizontal y el helicóptero continuaría 23 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol moviéndose permanentemente en la dirección fijada si no se viera frenado de manera automática poco a poco por la resistencia del aire. Si se quiere frenar este movimiento horizontal que se ha instaurado inicialmente, hay que inclinar el sistema circular del rotor en la dirección opuesta al movimiento. Esta inclinación opuesta se mantendrá hasta que se haya frenado el movimiento horizontal. A continuación, la superficie de giro del rotor se llevara de nuevo a la posición horizontal, ya que en otro caso se produciría una aceleración en la dirección opuesta. La inclinación del sistema del rotor para conseguir un movimiento horizontal se puede lograr de diferentes maneras: • Mediante el movimiento del centro de gravedad, como se muestra en la Ilustración 3. Ilustración 3 – Control mediante movimiento del centro de gravedad. • Mediante el desplazamiento de la cabeza rotora, como se muestra en la Ilustración 4. 24 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 4 - Control mediante el movimiento de la cabeza rotora. • Mediante cabeza basculante, como muestra la Ilustración 5. Ilustración 5 - Control mediante cabeza basculante. 2.4.1 Paso cíclico de la pala Este sistema de control se puede encontrar prácticamente en todos los helicópteros grandes y también ha demostrado su superioridad en el helicóptero de modelismo. En él se hace use de un <<truco>> que, de hecho, no tiene absolutamente nada que ver con las fuerzas giroscópicas que a menudo se analizan en este contexto y que siempre se traen a colación de forma equivocada al explicar el paso cíclico de la pala. Esencialmente, este truco consiste, en realidad, en un control mediante cabeza basculante, con la diferencia de que no se inclina toda la cabeza rotor con la propulsión sino que son solo las palas del rotor las que mantienen una inclinación correspondiente al movimiento basculante, como muestra la Ilustración 6. Para ello las palas del rotor se fijan a la cabeza de modo que sea posible modificar el ángulo de incidencia con independencia de la cabeza del rotor. 25 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 6 - Control mediante paso cíclico. El movimiento basculante de las palas del rotor se realiza en la mayoría de los casos a través de un disco oscilante, un anillo montado con articulación cardánica que gira con el sistema del rotor y se puede inclinar o hacer bascular en todas direcciones mediante los controles de pilotaje. Este disco se llama “plato cíclico”. Las palas del rotor, que pueden modificar su ángulo de incidencia, están unidas mediante unas varillas con el anillo del disco que gira y, según que este anillo se mueva hacia arriba o hacia abajo, varia positiva o negativamente el ángulo de incidencia de cada una de las palas para el control del movimiento vertical del helicóptero. Como se muestra en la Ilustración 7, hay un sistema de sujeción que hace que no gire con el rotor el anillo exterior (Soporte A). Sin embargo el anillo interior del plato cíclico se hace girar solidario al rotor principal con el apoyo de una guía situada en éste (Guía B). 26 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 7 - Plato cíclico Si el disco oscilante esta, por ejemplo, totalmente horizontal y el eje del rotor, por tanto, perpendicular al disco, el ángulo de incidencia de las palas del rotor se mantendrá siempre invariable, ya que, en una revolución (ciclo), el anillo del disco oscilante que gira no sube ni baja. Así pues, la situación dada de la superficie de giro del rotor en relación con el fuselaje permanecerá constante. Ilustración 8 - Inclinación de las palas en un movimiento de cíclico hacia adelante. 27 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Si el disco oscilante se inclina, el ángulo de incidencia de las palas individuales varía de forma diferenciada en concordancia con esta inclinación dentro de una revolución, y lo hace como si se inclinara todo el rotor o todo el helicóptero. Expresado de otro modo, el ángulo de incidencia de las palas individuales del rotor sigue siempre exactamente la posición del anillo del disco oscilante que gira. Esto significa que el ángulo de incidencia de la pala individual del rotor varía en cada momento en el curso de una revolución en consonancia con la inclinación del disco oscilante. Sí es aquí donde entra en juego el efecto giroscópico, como se representa en la Ilustración 8. El ángulo de incidencia normal que se ilustra es de +3º y el plato cíclico se ha inclinado 3º hacia adelante. Al seguir las palas la inclinación del plato cíclico con un desfase de -90º aparece una variación en la fuerza de sustentación generada por el plano de sustentación de +90 grados. Que debido al efecto giroscópico hace que el plano de rotación de las palas se incline en el mismo sentido que el plato cíclico. De ese modo, el sistema del rotor se ve forzado, mediante las correspondientes variaciones cíclicas del ángulo de incidencia de las palas individuales del rotor, a seguir la inclinación del disco oscilante hasta que el rotor haya adoptado la misma inclinación del disco. Esto corresponde, en principio, al control mediante cabeza basculante. Aquí, en principio, la situación en que se encuentre el conjunto del helicóptero en el aire es totalmente irrelevante. Si, por ejemplo, el helicóptero vuela en suspensión con un disco oscilante completamente vertical, el sistema del rotor girara también en esta posición y (si prescindimos del efecto del viento) se mantendrá estacionario en el lugar determinado inicialmente. 28 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Si ahora el disco oscilante se orienta en una dirección determinada, las palas del rotor variarán cíclicamente su ángulo de incidencia en cada revolución hasta llegar a adoptar, con cierta demora, la inclinación del disco oscilante. Como es evidente, esto significa, respecto a la anterior situación de vuelo, una inclinación del conjunto del sistema del rotor y, con ello, un movimiento de vuelo en la dirección de la inclinación. En muchos casos, independientemente del paso cíclico de la pala, también se controla con el disco oscilante el paso colectivo de la pala. Esto se realiza subiendo y bajando adicionalmente el disco oscilante con independencia de su inclinación, con lo cual de forma automática se aumenta o disminuye el ángulo de incidencia de todas las palas del rotor. 3 Estabilidad En las consideraciones anteriores acerca de las características de vuelo y las técnicas de control de un helicóptero no se ha comentado aún la cuestión de la estabilidad de vuelo o el comportamiento de vuelo. Comúnmente se piensa que un helicóptero, debido a su estructura, cuelga, en cierto modo, bajo el sistema del rotor en movimiento como si fuera un para caídas y que, tras una eventual perturbación, se equilibra de nuevo y permanece estable. Pero éste no es el caso. Aquí es necesario definir en primer lugar con mayor precisión los diferentes conceptos individuales lo que puede ser la estabilidad de un helicóptero. Dichas definiciones pueden verse mejor en la Ilustración 9. 1. Estable significa que la perturbación se extingue tras la supresión de la causa y se vuelve al estado anterior. 2. Indiferente significa que la perturbación no se refuerza ni se debilita, sino que permanece el estado dado. 29 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol 3. Inestable significa que, tras la supresión de la causa, la perturbación se va reforzando cada vez más. Según esta definición de estabilidad, un helicóptero es, como máximo, indiferente e, incluso, inestable. Ilustración 9 - Conceptos de estabilidad Esto es también muy ilustrativo en tanto que, por ejemplo, en un helicóptero que se encuentra en vuelo en suspensión, no existe fuerza o influencia alguna que haga que mantenga su posición en el espacio o que vuelva a la anterior posición tras una perturbación. Para un helicóptero es completamente indiferente si en ese momento está volando a 10 o a l00 m de distancia. No hay nada que lo haga volver al punto de partida. Para el sistema del rotor (circular) no existe «adelante» o «atrás» que pueda servir de orientación. Por eso, tampoco tiene importancia para un helicóptero la dirección en que se aleje de su emplazamiento. La cuestión de la estabilidad de un helicóptero es, por consiguiente, superflua por principio; más bien debería plantearse la cuestión de la indiferencia. Por eso, todos los esfuerzos para hacer «estable» un helicóptero se orientan en la práctica a la construcción de un helicóptero «indiferente» en lo posible, es decir, a que el helicóptero mantenga el mayor tiempo posible una posición de vuelo o un movimiento de vuelo dado, sin variarlo por su cuenta y, sobre todo, a 30 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol que no refuerce por sí mismo un movimiento de vuelo iniciado en un momento dado. Sin contar con instalaciones especiales, las siguientes reglas técnicas básicas contribuirán a mejorar la estabilidad: 1. Baja carga del rotor, es decir, baja carga por superficie. 2. Relación pala del rotor-ángulo de incidencia pequeña, es decir, baja carga aerodinámica de las palas del rotor. 3. Palas del rotor pesadas, es decir, comportamiento relativamente lento del conjunto del sistema del rotor. 4. Distancia grande de las articulaciones de batida, es decir, la transmisión más clara posible de las fuerzas de las palas del rotor al cubo del rotor para amortiguar los movimientos del fuselaje (la máxima se daría en un rotor rígido). Así pues, también se puede conseguir una estabilidad alta a través de medidas puramente constructivas o reducir la inestabilidad a un grado aceptable y que el piloto pueda dominar. Por este motivo, hoy en día los helicópteros grandes funcionan, en general, sin dispositivos especiales de estabilización, por cuanto los pilotos han aprendido además a arreglárselas con cierta inestabilidad. En los helicópteros antiguos, sobre todo en los pequeños utilizados para transporte de personas, no se podía prescindir de dispositivos adicionales de estabilización, porque debido a su tamaño ya tenían una estabilidad propia relativamente baja y existía el deseo de facilitar en lo posible el vuelo al piloto. 31 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol También en los helicópteros de modelismo se procura facilitar al máximo el contról al «piloto» mediante ayudas de estabilización, Aunque existen helicópteros de modelismo sin estabilización, con ellos no resulta sencillo dominar el vuelo. Casi todos los sistemas de estabilización se basan en que la composición de un sistema giroscópico en un asiento de cardán completo mantiene temporalmente la posición en el espacio aunque varíe el eje de propulsión. Así, en el eje del rotor principal del helicóptero se instala un «giroscopio» sobre un soporte cardánico que en general consiste en una vara larga (vara de estabilización) con pesos que giran en los extremos. Este sistema giroscópico adopta un movimiento de rotación junto con el rotor principal, manteniendo al hacerlo su posición en el espacio aunque el helicóptero se mueva de algún modo, por ejemplo, inclinándose. Esta inercia del sistema de estabilización se aprovecha para efectuar una regulación o efecto de amortiguación en el sistema de control del rotor principal. 3.1 Ayuda de estabilización de Bell En este sistema de estabilización se instala, como se ha descrito anterior mente, una vara de estabilización con pesos que giran en los extremos, los cuales, a través del correspondiente sistema de palanca, están unidos con las palancas para la variación del ángulo de incidencia de las palas del rotor principal. Esta configuración puede verse en la Ilustración 10. Si el helicóptero se inclina, la vara de estabilización mantiene su antigua posición en el espacio y no participa de esta inclinación. Al mismo tiempo orienta, a través de la palanca antes mencionada, las palas del rotor principal de manera que éstas continúan moviéndose en su posición anterior y tampoco participan de la inclinación. 32 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Pero esta «antigua» posición no debe mantenerse indefinidamente y el piloto ha de poder controlar también el sistema del rotor principal. Para ello, las palas del rotor se pueden orientar además de forma independiente con respecto a la estabilización. Ilustración 10 - Sistema de estailización Bell El «inconveniente» de este tipo de regulación es, sin embargo, que el sistema de estabilización no sigue una inclinación del helicóptero efectuada deliberadamente, lo cual representa un obstáculo en el pilotaje. Por este motivo se instalan unos «amortiguadores» que fuerzan a la vara de estabilización a seguir una inclinación del helicóptero. De este modo, la estabilización se amortigua de forma totalmente deliberada para poder conseguir un control efectivo del helicóptero. Es obvio que el ajuste correcto de estos amortiguadores tiene especial importancia, y por eso también en los helicópteros de Bell se dan instrucciones muy precisas para este ajuste que influye de forma decisiva en el comportamiento de la dirección del helicóptero. 33 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol El sistema de estabilización de Bell se ha empleado en muchas variantes en el helicóptero de modelismo, pero no se ha podido realizar según el sistema original debido a la dificultad para obtener la amortiguación adecuada. En el helicóptero de modelismo, sólo se ha podido aplicar con éxito una modificación del sistema de Bell con una amortiguación que trabaja aerodinámicamente según el sistema Hiller. 3.2 Sistema de estabilización de Hiller El sistema de estabilización de Hiller utiliza un segundo rotor, denomina do rotor auxiliar, para controlar e influir en el rotor principal. Este rotor auxiliar trabaja igualmente como un sistema giroscópico estabilizador, pero los pesos que giran son unas pequeñas alas perfiladas, que reciben los nombres de alas de estabilización o alas auxiliares y, en ocasiones, también remos. Estas alas se pueden controlar cíclicamente a través del disco oscilante de idéntica forma como se controlan las palas del rotor principal. Mientras las alas de estabilización no se controlan, éstas se comportan como puros pesos de estabilización y mantienen su posición en el espacio, y, con ello, la de la vara de estabilización. Pero si las alas auxiliares se controlan cíclicamente a través del disco oscilante, cambia su posición en el espacio mientras dure este control. Si se retira el control cíclico, las alas de estabilización vuelven a trabajar de nuevo como estabilizador en la nueva posición en el espacio. Este rotor auxiliar está unido al rotor principal mediante varillas y transmite directamente su movimiento a las palas del rotor principal. De este modo se consiguen una estabilización directa y un control indirecto del rotor principal. 34 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Además, las alas auxiliares hacen que, cuando se produce una inclinación del helicóptero, el sistema de estabilización siga esta inclinación con algún retraso y, así, se consigue cierto control aerodinámico posterior. Esto proporciona, junto con una estabilidad relativamente buena, una capacidad de control también buena, con la única imitación de que existe siempre una pequeña demora entre la orden de pilotaje y la reacción, puesto que en primer lugar se orienta el rotor auxiliar y sólo después éste controla el rotor principal. Sin embargo, este retraso se puede dominar fácilmente y, en la práctica, no constituye un inconveniente. Por el contrario, es una gran ventaja que los valores de retraso permanezcan constantes y no dependan de las diferentes posibilidades de ajuste de las amortiguaciones o de mecanismos similares. El sistema de estabilización de Hiller se adapta en principio de manera excelente al helicóptero de modelismo porque no requiere amortiguador mecánico alguno. Además, para orientar los rotores auxiliares se necesitan fuerzas de control significativamente menores que en la regulación directa de las palas del rotor principal. Sin embargo, el sistema original de Hiller no se puede aplicar sin más al helicóptero de modelismo. Las alas de estabilización, por ejemplo, están sus pendidas en brazos individuales que, por su parte, se apoyan en el rotor principal y se orientan individualmente. Todas las fuerzas de control y centrífugas cargan en este apoyo y. por consiguiente, apenas se pueden dominar en la construcción de modelos o bien requerirían un coste considerable en los soportes, etcétera. Además, en el sistema original de Hiller se necesitan varillas de unión entre las alas de estabilización o tos brazos individuales que se complican aún más con los elementos de control para el paso colectivo de la pala y, por otro lado, también se necesitan, en cualquier caso, articulaciones de inclinación de la pala para las palas del rotor principal. Para hacerse una idea de la complejidad de este mecanismo de estabilización basta con fijarse en la Ilustración 11. 35 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 11 - Sistema de estabilización Hiller 3.3 Combinación de diferentes sistemas de estabilización Existe también la posibilidad de combinar, total o parcialmente, los dos sistemas de estabilización de Dell y de Hiller conocidos en los helicópteros grandes. No hay noticia de que esto se haya realizado en los helicópteros grandes y sólo la experimentación con helicópteros de modelismo ha llevado a realizar diferentes ensayos en esta dirección. Una variante posible es la de convertir los pesos de la vara de estabilización del sistema Bell en alas de estabilización como las del sistema Hiller y suprimir los amortiguadores de Bell. En el caso «normal» las alas auxiliares, debido a su propio peso, sólo actuarán como estabilizadores, pero si el helicóptero se inclinara, por ejemplo mediante una orden de pilotaje, también lo harían las alas y se produciría una reconducción aerodinámica de la vara de estabilización. 36 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ensayos prácticos han demostrado que esta combinación funciona bastan te bien, pero que tiene sus limitaciones en cuanto a la reconducción de la vara de estabilización, y que un helicóptero equipado de este modo ya no puede enderezarse con seguridad en situaciones de vuelo extremas y con una velocidad de vuelo creciente. Otra variante consiste en equipar el sistema Bell, como se ha descrito, con alas de estabilización, pero disponerlas de manera que no sean rígidas si no que se pueda variar su ángulo de incidencia y se puedan orientar igualmente desde el disco oscilante. En el caso «normal», es decir, sin orden de pilotaje, las alas auxiliares actúan de nuevo sólo como estabilizadores, pero, con una orden de pilotaje, las alas se inclinan de acuerdo con la inclinación del disco oscilante de esta forma, se lleva a la vara de estabilización de forma deliberada y controlable a adoptar una inclinación determinada. El disco oscilante dirige así, por un lado, las palas del rotor principal y, con ello, el helicóptero y, por otro lado, las alas de estabilización y, por consiguiente, la posición de la vara de estabilización, Estas dos circunstancias, juntas, proporcionan una alta estabilidad y una elevada capacidad de respuesta al control. Todavía hoy, en todo el mundo, todos los helicópteros están equipados con un sistema de control combinado Bell-Hiller que se corresponde en sus principios con el sistema de control que en su tiempo Dieter Schlüter consideró adecuado para la construcción de aparatos de modelismo. 3.3.1 El rotor Schlüter Los experimentos para encontrar una mecánica de la combinación BellHiller aplicable en el helicóptero de modelismo tropezaron con multitud de dificultades en relación no sólo con el aspecto mecánico sino también con la total falta de experiencia en el vuelo con helicópteros de modelismo. Sobre todo, en aquellos tiempos era imposible el dominio del rotor de cola en relación con el paso colectivo de la pala y la consiguiente variación continua del momento de 37 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol rotación. Esto implicaba que prácticamente nunca era posible emprender, durante un período prolongado, ensayos con los sistemas de estabilización o, simplemente, acumular una experiencia de vuelo seria. Así surgió la necesidad de llevar a cabo una simplificación máxima absolutamente radical del sistema del rotor, en la cual era esencial, en primer lugar, suprimir el paso colectivo de la pala con todos los problemas de momento de rotación que implicaba, los primeros ensayos sin pitch colectivo transcurrieron con éxito, la combinación Bell-Hliller funcionaba, pero era todavía demasiado complicada en el aspecto mecánico y fue completamente eliminada en el curso de sucesivas simplificaciones a finales de 1969. Así surgió el rotor Schlüter. En él es esencial la vara de estabilización continua; ésta, construida de una sola pieza, pasa a través del centro de la suspensión cardánica de la pala y tiene las correspondientes alas de estabilización en los extremos. Todas las fuerzas centrífugas se compensan ahora en la vara de estabilización continua y no cargan el sistema ni el soporte. Al mismo tiempo, se suprimen las varillas de unión, ya que las alas de estabilización están unidas obligatoriamente por la vara de estabilización. Ya no se necesitan varillas individuales que lleguen a cada una de las alas de estabilización para el control cíclico de las alas, puesto que ahora basta el giro de la vara de estabilización para que giren las alas de manera uniforme. Para girar la vara de estabilización son suficientes unas únicas varillas, Junto con la vara de estabilización continua, ésta es otra característica típica del rotor Schlüter. Todo esto puede observarse en la Ilustración 12. 38 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 12 - Sistema de estabilización Schlüter La reducción de los elementos de control a unas varillas únicas, la ausencia de problemas en la forma de funcionamiento de la vara de estabilización continua en conexión con el principio Hiller y las sucesivas y considerables simplificaciones realizadas produjeron enseguida resultados positivos e hicieron posible que entre finales de 1969 y principios de 1970 llevara a cabo los primeros vuelos controlados en todo el mundo con un helicóptero de modelismo de radio control. En su momento se patentaron también las características esenciales del rotor Schlúter. Para conseguir una simplificación mayor, la vara de estabilización continua se apoyó directamente de forma que pudiera girar en la articulación de cardán total del rotor principal. Con ello se logró que, sin otros elementos de transmisión, todo movimiento de estabilización o control de la vara de estabilización se transmitiera directamente a las palas del rotor principal. 39 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol En cuanto a las palas del rotor principal, se hallan unidas entre sí rígida mente a través de un elemento de unión común en el centro del rotor, la báscula, y tienen un ángulo de incidencia constante. De este modo, se suprime también la especial complejidad técnica mencionada. La elevación se controla mediante la variación del número de revoluciones. Una variante de este sistema de rotor es el rotor Schlüter Expert. En este caso también hay una vara de estabilización continua, pero ésta no se halla articulada en una báscula rígida sino en las palancas de control de los ejes individuales de inclinación de la pala. El paso cíclico de la pala se efectúa de la forma ya conocida según el sistema Hiller y el movimiento adicional de elevación y descenso del aparato se realiza por medio de un paso colectivo de la pala adicional, como se muestra en la Ilustración 13, perteneciente a un helicóptero actual. Ilustración 13 - Sistema de estabilización Schlüter Expert 40 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol 4 Funciones de pilotaje Al contrario que un aeroplano convencional, un helicóptero puede no sólo volar hacia adelante, sino también permanecer inmóvil en el aire, volar hacia los lados o hacia atrás y verticalmente hacia arriba y hacia abajo y girar entorno a su propio eje. Naturalmente, esta capacidad de maniobra no constituye sólo una ventaja, sino que también entraña un pilotaje más complejo. En el pilotaje de un helicóptero se multiplican la complicación y la dificultad respecto al de un aeroplano, sobre todo porque en él se combinan muchos movimientos y controles. Sin tener en cuenta estas combinaciones de diferentes funciones, se han de controlar los siguientes movimientos principales de vuelo: 1. Control del movimiento vertical hacia arriba y hacia abajo. 2. Control de la dirección del fuselaje. 3. Control del movimiento de vuelo horizontal. Este último se divide, generalmente, en movimiento de vuelo en dirección longitudinal y en dirección transversal. Esta división es falsa, al menos para un rotor individual, en tanto que para este rotor en concreto no existe «adelante» o «atrás» ni «derecha» o «izquierda». El rotor es redondo y se puede mover en cualquier dirección que se desee sin que importe el nombre que ésta reciba. Así pues, el control horizontal del rotor principal se debe indicar siempre en relación sólo con el fuselaje del helicóptero. La dirección del fuselaje determina el movimiento horizontal efectivo de todo el helicóptero. 41 Memoria. Introducción Teórica a los Helicópteros de Radiocontrol Ilustración 14 - Nombres de los movimientos de un helicóptero En la Ilustración 14 se muestran los nombres de los diferentes ejes en los que pueden inducirse movimientos en un helicóptero. 42 Memoria. Modelos Matemáticos Capítulo 3 MODELOS MATEMÁTICOS Este capítulo tiene la prentensión de hacer entender al lector de esta memoria unos breves conceptos a cerca del modelado de sistemas y concretamente del modelo de un helicóptero, así como relacionar dichos modelos con el proyecto global. 1 ¿Para qué un modelo? Durante los años 90 muchos UAV basados en helicópteros utilizaban sistemas de control clásico como por ejemplo un lazo simple PD. Los parámetros del lazo de control normalmente eran ajustados a mano para los distintos modos de vuelo. Esto resulta sorprendente dada la enorme abundancia de efectivos sistemas de síntesis de sistemas multivariable. Una posible razón para esta situación es que los modelos de control multivariable se basan en la utilización de un modelo del sistema a controlar, y en este caso en particular, los modelos para un helicóptero de radio control no están todavía desarrollados. Los modelos dinámicos utilizados para la síntesis de controles u optimización de controles tienen requerimientos estrictos, el modelo debe reunir todos los efectos que rigen el funcionamiento y la maniobrabilidad del vehículo. Un control de estas características requiere un modelo de gran precisión. Y deben recoger gran cantidad de efectos, como por ejemplo la interacción rotor-fuselaje. Pero los modelos además deben ser suficientemente sencillos para su ejecución en tiempo real. 43 Memoria. Modelos Matemáticos 2 Modelo para un helicóptero de radio control El diseño de un modelo y la obtención de sus parámetros es un proceso muy complejo que requiere un conocimiento considerable de la dinámica de los rotores y de las ecuaciones que los gobiernan. Es necesario, además, realizar profundos análisis de vuelos de validación y refinamiento del modelo. El objetivo de este capítulo es, dado un modelo de helicóptero ya existente, determinar que tipo de ensayos son necesarios para poder identificar los parámetros del mismo. 3 Metodología para la determinación de parámetros de un modelo Un ejemplo de utilización de este tipo de sistemas de identificación de parámetros para el diseño de un modelo para un helicóptero es la investigación cuyos resultados se publicaron en el anteriormente comentado artículo “System Identification Modeling of a Model-Scale Helicopter” [4]. En este artículo se utilizó un método de dominio en frecuencia diseñado por la Armada de los EEUU y la NASA. El método se llama CIFER (Comprehensive Identification from FrEquency Responses), y establece que los pasos a seguir para el proceso de identificación son: • Colección de datos de vuelo: Los datos de vuelo se recogen durante vuelos experimentales utilizando barridos de frecuencia. • Cálculo de la respuesta en frecuencia: La respuesta en frecuencia de cada entrada-salida es analizada utilizando la transformada Chirp-Z. Al mismo tiempo, se calcula una función para cada respuesta en frecuencia. 44 Memoria. Modelos Matemáticos • Análisis multivariable del dominio en frecuencia: Las respuestas en frecuencia de “una entrada, una salida” con acondicionadas eliminando los efectos de entradas secundarias. Los resultados parciales son procesados. • Combinación de ventanas: La precisión de la respuesta en los límites de la baja y la alta frecuencia se mejora mediante la combinación de respuestas en frecuencia generada utilizando ventanas de diferente anchura. • Identificación Estado-Espacio: Los parámetros de un modelo estado-espacio definido previamente son identificados resolviendo un problema de optimización guiado por la coincidencia en respuesta en frecuencia. • Verificación en el dominio del tiempo: La verificación final de la precisión del modelo se realiza comparando respuestas temporales predecidas del modelo con las respuestas recogidas de vuelos experimentales . 4 Los Ensayos Como ya se ha explicado, todo comienza con la obtención de una amplia colección de datos de ensayos de vuelos del helicóptero a modelar. Para posteriormente someterlos a un profundo proceso de análisis de identificación de parámetros y así perfilar el modelo deseado. 4.1 Requisitos de los ensayos Los ensayos experimentales que tienen las características de los realizados en este proyecto, se caracterizan por tener un gran número de exigencias que han de satisfacerse para poder darse por válidos los datos medidos en dichos experimentos. 45 Memoria. Modelos Matemáticos En nuestro caso analizamos las características que dichos experimentos debían cumplir y llegamos a la necesidad de satisfacer los siguientes requisitos: • Patrón del ensayo: Es necesario el establecimiento de un patrón a seguir cada vez que se lleva a cabo un ensayo y así asegurar que se mantienen lo más parecidas posibles las condiciones del ensayo. • Mediciones y datos a tomar: Se ha de determinar que datos son relevantes para satisfacer los objetivos y por tanto han de ser medidos y almacenados. • Precisión y repetitividad: Los ensayos han de ser lo más precisos posibles y han de ser repetibles para así asegurar la capacidad de comparación de los datos entre sí. La repetitividad es uno de los factores más importantes en la realización de los ensayos. Hemos de ser capaces de repetir los ensayos cuando nos sea necesario, y a poder ser con sencillez, puesto que esto nos ahorrará mucho trabajo. De estas necesidades surgió la idea de diseñar un dispositivo electrónico, sencillo, pequeño, y cuya única misión fuese generar una orden de mando senoidal. En dicho dispositivo debería poder ajustarse las propiedades de la senidal definiendo los parámetros que la caracterizan. De este modo podríamos repetir exactamente los mismos ensayos con tan sólo ajustar los mismos parámetros. De entre las diferentes posibilidades de diseño se decidió que el módulo se conectaría en la emisora de radio control, puesto que ésta ya está pensada par recibir la entrada de una señal de mando externa a través del llamado conector “Trainer”. 46 Memoria. Modelos Matemáticos Como resultado del diseño de este dispositivo, posteriormente bautizado como “Módulo Senoidal”, hemos logrado mejorar significativamente el proceso de obtención de ratos y realización de ensayos. Simplificando enormemente la labor del piloto y aumentando eficazmente la precisión y la repetitividad. 4.2 La elaboración de un protocolo de ensayos Se llevaron a cabo dos tipos de ensayos. Los que se hacía al comienzo eran ensayos hechos a mano en los que seguíamos un patrón de movimientos determinado. Con ello pretendíamos ser capaces de leer los datos que la unidad inercial medía. El objetivo de repetir siempre la misma secuencia era para facilitar la identificación del movimiento a la hora de analizar los datos. Dicho patrón de ensayos de plasmó en la hoja de ensayos de la Tabla 2, en la que también se apuntaban los diversos datos relevantes del ensayo que luego ayudasen a entender mejor los datos, cuando ya había transcurrido un largo tiempo después de la toma de los mismos, y no nos acordábamos de las circunstancias que habían acontecido en el momento del ensayo. 47 Memoria. Modelos Matemáticos 48 Protocolo de ensayos para la determinación de parámetros Fecha: Helicóptero: Versión hardware: Versión software: ___/___/___ __________ __________ __________ Ensayo nº: Acciones a realizar Comentarios __________ 1. Subir Cola a la izquierda 90º y volver Bajar a estacionario. 2. Subir Cola a la derecha 90º y volver Bajar a estacionario. 3. Subir Oscilaciones varias en mando Bajar alabeo. La primera a la derecha 4. Subir Oscilaciones varias en mando Bajar profundidad. La primera a adelante. 5. Subir Varias vueltas completas en el Bajar eje yaw. Cola a la derecha. 6. Subir Varias vueltas completas en el Bajar eje yaw. Cola a la izquierda. 7. Subir Translaciónes completas Bajar realizando varios ochos. 8. Subir Autorrotación. Bajar Incidencias: Tabla 2- Protocolo de ensayos hechos a mano Memoria. Modelos Matemáticos 49 Cuando se completó el desarrollo del módulo senoidal se modificó el patron para la realización de los ensayos. Ahora el patrón es el que aparece en la Tabla 3. Protocolo de ensayos para la determinación de parámetros Fecha: Helicóptero: ___/___/___ Nombre archivo Canal Frecuencia Amplitud Versión Versión hardware: software: Comentarios Incidencias: Tabla 3- Protocolo de ensayos hechos con el módulo senoidal Memoria. Modelos Matemáticos Los ensayos con el módulo senoidal son más precisos que los hechos a mano, y su repititividad aumenta enormemente al eliminar en gran parte el factor humano de ellos. El piloto sólo ha de preocuparse por mantener el helicóptero bajo control, los movimientos en frecuencia los genera el módulo senoidal. Esta aportación del módulo senoidal supone un gran avance en la realización de ensayos en frecuencia en helicópteros para la identificación de parámetros en modelos. 50 Memoria. El Módulo Senoidal Capítulo 4 EL MÓDULO SENOIDAL Este módulo nace de la necesidad de realizar análisis en frecuencia con cierta precisión, más allá de la que puede dar el piloto volando el helicóptero manualmente. En este capítulo se explican el diseño y las características de este módulo. 1 Características del módulo La labor del módulo es elaborar una señal de mando senoidal conforme a unos parámetros que determinan dicha señal. Los parámetros que caracterizan la señal son frecuencia y amplitud. La señal generada ha de llegar al helicóptero, para que éste realice los movimientos deseados. Esto se realiza a través de la emisora de radio control, y para que esta entienda la señal, la información a de ir codificada en formato PPM. El esquema de funcionamiento del conjunto se puede observar en la Ilustración 15. Ilustración 15 - Esquema funcionamiento módulo senoidal 51 Memoria. El Módulo Senoidal 1.1 Características de la señal PPM Un esquema simplificado del proceso de comunicación que se utiliza para transmitir al helicóptero las órdenes de mando que el piloto determina es el que se ilustra en la Ilustración 16. Ilustración 16 - Proceso de comunicación piloto – helicóptero La electrónica de la emisora convierte el voltaje de los potenciómetros de los mandos en una señal binaria. En un tren de pulsos PPM, en el que la información de la posición de cada servo se codifica a modo de anchura de un pulso, habiendo tantos pulsos como canales en la emisora de radiocontrol. Dicho tren a continuación es codificado en una señal de radio modulada en la banda de los 35 MHz, y se emite al aire. El receptor recibe dicha señal de radio y la demodula, obteniendo de nuevo el tren de pulsos PPM original. A continuación un multiplexor envía a cada servo 52 Memoria. El Módulo Senoidal el pulso del tren que le corresponde. El servo entonces la decodifica y se mueve a la posición que se le ordena. Ilustración 17 - Tren de pulsos de una señal PPM Un tren completo de pulsos PPM puede verse en la Ilustración 17. Tiene una longitud de 22,5 ms. Consiste en un pulso largo de reset o sincronización y en una serie de pulsos más cortos con la información a transmitir. Entre pulso y pulso hay un ancho de separación de 0,3 ms, y la longitud de cada pulso de información varía entre 0,7 ms y 1,7 ms, cuyo ancho se corresponde con la posición del mando de la emisora. En la imagen de ejemplo el canal 1 está en su amplitud máxima, el canal 2 en la mínima y el canal 3 en el centro de recorrido. El pulso de reset se ajusta para que el tren completo tenga 22,5 ms. 2 El hardware del módulo El módulo se ha diseñado a partir de un microcontrolador ATmega8515. Este micro nos proporcionaba los recursos necesarios y, además, lo podíamos encontrar fácilmente en cualquier tienda de electrónica al ser un micro muy extendido. El programa utilizado para realizar el diseño y la impresión de los fotolitos para los PCB’s ha sido el EAGLE. El circuito está equipado con lo esencial: 53 Memoria. El Módulo Senoidal • Microcontroladorprocesador: Un ATmega8515 realiza todo el trabajo de generación de la senoidal y comunicación con el PC. • Un cristal de 8MHz: para establecer la velocidad de trabajo del micro. • Estabilizador de tensión: Para alimentar toda la circuitería. • Comunicación serie: Para comunicar el micro con el PC de manera rápida y sencilla utilizando el protocolo de comunicación serie RS232. • 2 Leds: uno rojo y otro verde para hacer señales luminosas. • 2 Jumpers: para introducir órdenes al micro. • Puerto de conexión PPM: Para enviar la señal del micro a la emisora de radio control. • Puerto de conexión SPI: Para realizar la configuración del micro y la programación del bootloader. Todo el conjunto se interconecta como se muestra en la Ilustración 18. El esquema se muestra como se ha diseñado en el Eagle. 54 Memoria. El Módulo Senoidal Ilustración 18 - Esquema del diseño del módulo SD Las placas PCB se isolaron en el taller de electrónica de la universidad, siendo yo quien soldó los componentes. En la Ilustración 19 se puede observar cómo es el módulo por detrás y en la Ilustración 20 se observa como es por delante. Ilustración 19 - Módulo senoidal por la parte de los componentes 55 Memoria. El Módulo Senoidal Como es fácil comprobar, los componentes y las pistas están en la misma cara, cuando usualmente están en caras opuestas. Esto es debido a un error de colocación del fotolito en el taller de la universidad al isolar la placa. Aunque se solventó con soltura y el módulo funciona perfectamente. Ilustración 20 - Módulo senoidal por la cara de conexión. Antes de instalar ningún programa en el microcontrolador, es necesario configurarlo mínimamente para que este funcione correctamente. Dicha configuración mínima se centra en el ajuste de los “Fuse Bits” del microcontrolador. 2.1 Los “Fuse Bits” del ATmega8515 Los “Fuse Bits” son unos bytes de configuración del micro que se utilizan para configurar cosas como la velocidad de arranque, el tamaño de memoria para el bootloader, la velocidad del cristal, etc… 56 Memoria. El Módulo Senoidal En nuestro micro encontramos dos “Fuse Bytes”. Uno llamado “HighHuse” y otro llamado “Low-Fuse”. La Ilustración 21 muestra las posibilidades de configuración del High Fuse Byte, mientras que la Ilustración 22 muestra las posibilidades de configuración del Low Fuse Byte. Ilustración 21 - Configuración del fuse High Ilustración 22 - Configuración fuse Low 57 Memoria. El Módulo Senoidal La configuración programada 58 en los “Fuse Bits” de nuestro microcontrolador es: • CKSEL 3-1: 111 (reloj externo de 8 MHz) • CKOPT: 1 • CKSEL 0 : 1 • SUT 10: 11 • BOOTSZ 10: 10 • BOOTRST: 0 El resto de las opciones las dejamos con la configuración por defecto. Dando como resultado los siguiente “Fuse Bytes”: • High Byte: 0xDC • Low Byte: 0xFF La programación de los “Fuse Bytes” se realiza a través del puerto SPI del micro utilizando el programa “avrdude.exe”, que se incluye al instalar el programa “WinAvr”. 3 El software del módulo senoidal El software del módulo se divide en dos grandes secciones. Una son los programas que se ejecutan en un PC, y la otra son los programas que se ejecutan en el microcontrolador del módulo senoidal. 3.1 Software en el PC Para el PC se ha diseñado un programa muy elemental. En el se configura la onda senoidal deseada y se especifican el tipo de emisora y el puerto de conexión. En la Ilustración 23 puede verse la pantalla del programa. Memoria. El Módulo Senoidal Ilustración 23 - Configurador del módulo senoidal. Como se observa en dicha pantalla los valores de amplitud y frecuencia están predefinidos. Se consideró que de este modo se evitaban errores de configuración que pudiesen forzar los servos del helicóptero o incluso hacer perder el control del mismo. También así se simplificaba mucho el tratamiento de los datos a la hora de la comunicación con el microprocesador, puesto que no se le pasa el dato en sí, sino simplemente un índice que el micro utiliza para buscar en arrays donde tiene almacenados todos los posibles valores de frecuencia y amplitud. Cuando se presiona el botón “Enviar configuración” el programa lee las opciones marcadas, y las relaciona con los índices de configuración correspondientes. Con todo ello crea una cadena de 8 caracteres que es la “palabra de configuración”, y comienza una sesión de comunicación con el módulo senoidal como se muestra en la Ilustración 24. 59 Memoria. El Módulo Senoidal Ilustración 24 - Proceso comunicación PC-Módulo El ordenador envía la cadena “hello_pc” al módulo senoidal, y éste responde “hello_tj”. Después la tarjeta envía la cadena “damedato” y el ordenador envía la palabra de configuración creada a partir de los datos seleccionados anteriormente. Cuando el módulo ha recibido los datos se los devuelve al PC para asegurarnos de que los ha recibido bien. El PC los comprueba y, en caso de que sean correctos, devuelve la cadena “correcto”, con lo que termina la comunicación y el módulo pasa a estar “armado”. El programa tiene también una pequeña ventana llamada “Debug” donde muestra la palabra de configuración enviada, así como las incidencias de la comunicación y los errores, en caso de que los hubiese. 3.2 Software en el módulo senoidal La parte del software presente en el módulo senoidal se compone de dos programas bien diferenciados. Uno es el bootloader “Kargador”. Y el otro es el programa principal que queremos ejecutar. 60 Memoria. El Módulo Senoidal 3.2.1 Bootloader Un bootloader es un programa que se instala en el microcontrolador con el objetivo de facilitar la comunicación y la programación del mismo. Se compone también de dos partes: Un software que se instala en el PC, y un programa que se instala en el microporocesador. El que se ha utilizado se llama Kargador, y es un programa cedido por Alejando Weinstein [6]. La aplicación para el PC fue ajustada a las necesidades de este proyecto por el mismo Alejando, quien se ofreció a compilar una versión del programa para la velocidad de COM de 38400 baudios, que era la que se utilizó. Se necesitó su colaboración porque dicha aplicación estaba diseñada en Delphi, lenguaje que desconocemos. La Ilustración 25 muestra cómo es dicha aplicación. La adaptación y compilación del código ensamblador que se programa en el autor de este proyecto. Ilustración 25 - Aplicación PC del Kargador bootloader Cuando el microcontrolador arranca acude al vector de reset que apunta al inicio del bootloader. Este se ejecuta. Lo primero que hace es leer el pin PB3. Si éste está conectado a GND entonces el bootloader se pone en modo escucha esperando órdenes del PC y enciende el led rojo PA3. Si por el contrario está 61 Memoria. El Módulo Senoidal conectado a V++, se pasa a ejecutar el programa residente en la memoria principal del microcontrolador. Una vez que el bootloader se encuentra en escucha se acude a la aplicación del PC. Primero se elige el microcontrolador a programar y el puerto donde está conectado. A continuación se presiona sobre “load file”, y aparece una ventana de navegación widows para buscar el archivo a grabar en el micro Luego se presiona “program” y, si todo va bien, comienza la programación del micro y la posterior verificación del contenido programado. 3.2.2 Programa principal Como ya se ha contado antes, la misión de este módulo es aplicar sobre el helicóptero un mando senoidal, para así poder realizar un análisis en el dominio de la frecuencia. También se ha explicado que dicho mando senoidal ha de ir codificado en formato PPM para que la emisora de radio control lo entienda. Para producir este mando senoidal el programa se basa en un efecto común del trabajo con señales digitales. Para generar una señal senoidal el programa se vale de unos valores constantes predefinidos, dichos valores, un total de 20, han sido obtenidos de un periodo de onda senoidal de frecuencia 1Hz y amplitud 1, como el que muestra la Ilustración 26. Como se puede comprobar, entre punto y punto hay una separación de 50ms. Si se cambia de valor en valor, a una velocidad constante de 50ms, se obtiene una senoidal de la misma frecuencia que la original, pero si se cambia el doble de rápido, cada 25ms, se obtiene una senoidal del doble de frecuencia, 2Hz. 62 Memoria. El Módulo Senoidal X: 0.2 Y: 0.9511 1 63 X: 0.25 Y: 1 X: 0.3 Y: 0.9511 0.8 X: 0.15 Y: 0.809 X: 0.1 Y: 0.5878 0.6 X: 0.35 Y: 0.809 X: 0.4 Y: 0.5878 X: 0.45 Y: 0.309 0.4 X: 0.05 Y: 0.309 0.2 X: 0.5 Y: 1.225e-016 X: 0 Y: 0 X: 1 Y: -2.449e-016 0 -0.2 X: 0.55 Y: -0.309 X: 0.95 Y: -0.309 -0.4 X: 0.6 Y: -0.5878 X: 0.9 Y: -0.5878 -0.6 X: 0.65 Y: -0.809 X: 0.85 Y: -0.809 -0.8 X: 0.7 Y: -0.9511 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 X: 0.8 Y: -0.9511 0.8 X: 0.75 Y: -1 0.9 1 Ilustración 26 - Puntos para la generación de la senoidal Por otro lado, recordamos que para mover un servo lo que se ha de hacer es variar la anchura del pulso de la señal PPM. Para ello se han definido un conjunto de variables que definen completamente el tren de pulsos. Dichas variables son: • Ancho_de_separación: Contiene el valor del ancho de separación entre canal y canal del tren de pulsos. • Ancho_variable: Contiene el valor máximo en que se puede modificar el ancho de cada canal. Es decir, el recorrido máximo de los servos. • Ancho_defecto_canal: Contiene el valor central por defecto del canal, es decir, la posición central de los servos. • Ancho_total: Contiene el valor de la longitud total del tren PPM. Memoria. El Módulo Senoidal • Ancho_reset: Este valor es variable y se calcula para que los anchos de información de cada canal, más el ancho de reset, sumen la longitud total del tren de pulsos PPM. Siguiendo este principio, se ha creado en el micro una cadena con los valores de los puntos tomados de la senoidal, llamada seno[i]. Dicha cadena de valores se puede observar en la Ecuación 1. seno[20] = {0, 0.31, 0.59, 0.81, 0.95, 1, 0.95, 0.81, 0.59, 0.31, 0, - 0.31, - 0.59, - 0.81, - 0.95, - 1.05, - 0.95, - 0.81, - 0.59, - 0.31} Ecuación 1 - Cadena de valores de la onda senoidal Para determinar la posición de los servos en cada periodo, se calcula otra cadena, llamada dato[i], a partir de los valores de seno [i], de la amplitud “A”, y de las variables predefinidas en el micro de “ancho por defecto del pulso” y “ancho variable del pulso”, y con la ayuda de la Ecuación 2. Dicha cadena dato[i], almacena por tanto el valor del ancho del pulso correspondiente a cada una de las posiciones por las que va a pasar el servo en su movimiento senoidal. datos[i] = ancho_defecto_canal + A * ancho_variable * seno[i] Ecuación 2 - Ecuación de cálculo del ancho del pulso. Lo que se hace para cambiar la frecuencia del movimiento senoidal de los servos es ajustar la velocidad a la que el timer fuerza el cambio de un valor al siguiente de la cadena datos. El funcionamiento completo del programa se muestra en el diagrama de flujo de la Ilustración 27. Al arrancar el programa principal del módulo senoidal lo primero que se hace es configurar todos los periféricos del micro, y ajustarlos a 64 Memoria. El Módulo Senoidal nuestras necesidades. A continuación hace un pequeño parpadeo con los dos leds para indicar que la placa está inicializando y cuando finaliza dicha opeación se enciende el led rojo para indicar que el módulo está encendido. Entonces se pone en escucha de la línea RS-232 y espera hasta que se produce una comunicación completa satisfactoria. Es decir, hasta que recibe una configuración y luego la validez de la comprobación de los datos. Una vez que disponemos de una cadena de configuración correcta, lo que hace primero es descifrarla y extraer de ella los datos de configuración. Una vez que se han extraído dichos datos de configuración el módulo calcula la cadena dato[i]. Luego enciende el led verde y queda “armado” a la espera de la señal para comenzar la generación del tren de pulsos senoidal. Cuando se cierra el interruptor conectado al pin PB2 del micro, comienza la generación del tren de pulsos. Cada vez que se completa un tren de pulsos PPM, se comprueba el estado del pin PB2. Si el interruptor sigue cerrado se genera otro tren, si no se sale de la función de generación de trenes de pulsos. El programa funciona de modo que cada vez que rebosa el timer se cambia el valor de la anchura de los canales del tren de pulsos, pasando al siguiente en la cadena de datos y, por consiguiente, cambiando la posición del servo. 65 Memoria. El Módulo Senoidal Ilustración 27 - Diagrama de flujo del programa principal. 66 Memoria. Instalación Abordo Capítulo 5 INSTALACIÓN ABORDO Como se ha comprobado durante la realización de este proyecto, un de los puntos más críticos es la instalación del sistema de adquisición de datos en nuestro helicóptero a modelar. El objetivo de este capítulo es explicar cómo se instaló dicho sistema en los helicópteros utilizados. 1 Posibilidades de carga A la hora de cargar un helicóptero de radio control con cualquier tipo de equipo hay que tener en cuenta varios factores. Dichos factores han de ser analizados para estudiar la mejor manera de montar el equipo, tratando de modificar lo menos posible las características del helicóptero. Uno de los factores más importantes es la limitación de peso. La capacidad de carga de un helicóptero de radio control depende directamente del tamaño de mismo. En nuestro caso, al iniciar la investigación con un helicóptero pequeño, un JR Venture del segmento .30, la capacidad de caga es extremadamente reducida. El diseño de este helicóptero está orientado al aprendizaje y a la introducción al mundo del aeromodelismo, por lo que es un diseño robusto y sencillo. El helicóptero de por sí ya pesa 3,6 Kg. y el motor tan sólo tiene 1,1 caballos, por lo que nuestra capacidad de carga es inferior al kilogramo. Posteriormente se cambió a un helicóptero más grande, a un JR AirSkipper del segmento .50. Éste helicóptero, además de más grande, es de un diseño radicalmente diferente al anterior. Está fuertemente orientado al campo de la acrobacia aérea, por lo que es un modelo muy ligero y potente, cualidades que resaltan especialmente si se compara con el modelo anterior. El nuevo modelo utilizado pesa tan sólo 3,7 Kg. y tiene una potencia de 1,9 caballos, lo que aumentó la capacidad de carga a casi 2 kilogramos, conservando, a pesar de dicha 67 Memoria. Instalación Abordo carga, buenas aptitudes de vuelo. Las cuales, en el modelo anterior, se veían seriamente mermadas. Otro parámetro profundamente modificado son las inercias del helicóptero. Estamos añadiendo mucho peso, por lo que la localización del mismo dentro de la estructura del helicóptero resulta crucial. Especialmente se ha de tener en cuenta este aumento de las inercias durante el vuelo, puesto que al helicóptero le cuesta más responder y lo hace de manera más lenta. También se ha de tratar de mantener el “centrado” del modelo para que luego éste resulte estable. La posición del centro de gravedad ha de estar siempre en línea con el eje del rotor principal. Si se desplaza el peso en alguna de las direcciones el modelo ya no volará bien y adquirirá tendencias y hábitos extraños de vuelo. 2 Tren de carga La tónica general, y la opción más cómoda para cargar equipo en un helicóptero de radio control, es construir un tren de aterrizaje alto con una o varias bandejas de carga, para poder distribuir en ellas toda la electrónica a cargar en el helicóptero. Para nuestros fines el tren tan sólo necesitaba una pequeña bandeja donde colocar la IMU, por lo que se decidió construirlo lo más pequeño y ligero posible. El material utilizado para la construcción fue el aluminio, por ser un material fácil de trabajar, suficientemente robusto y más ligero que el acero. De hecho, gran parte de las piezas y “up-grades” que se instalan en los helicópteros de radio control son de aluminio. Se hicieron tres versiones del citado tren. El tren original del primer helicóptero utilizado, el Venture, se muestra en la Ilustración 28. 68 Memoria. Instalación Abordo Ilustración 28 - Tren original del helicóptero La primera versión de nuestro tren de carga se puede observar en la Ilustración 29. La bandea inferior es la destinada a la carga de los componentes electrónicos, mientras que la superior tiene el objetivo de protegerlos de los humos del tubo de escape y de los posibles goteos de aceite y combustible producidos por el motor. Ilustración 29 - Primera versión del tren de carga 69 Memoria. Instalación Abordo Este primer tren de carga resultó ser un muy pesado, pudiendo ser aligerado por numerosos sitios, lo que en breve tiempo nos llevó a realizar una segunda versión del tren. En dicha versión, como se muestra en la Ilustración 30, se sustituyó la bandeja superior de aluminio por una lámina mucho más ligera de fibra de vidrio. Dicha lámina era resistente al combustible y cumplía sobradamente su labor. La bandeja inferior se aligeró sensiblemente realizándole una serie de recortes de gran tamaño. Con esto el peso del tren se redujo drásticamente y obtuvimos mejores resultados de vuelo. Ilustración 30 - Segunda versión del tren de carga El cambio de helicóptero fue lo que motivó la tercera y última versión del tren de carga. El nuevo helicóptero resultaba más grande, por lo que el portapatín delantero del tren tuvo que ser adelantado para ajustarlo a los agujeros de fijación en el chasis. Como se puede observar en la Ilustración 31, al alargar el tren tuvimos que modificar los sistemas de anclaje de la bandeja de carga y de la lámina de protección. Se decidió utilizar tablero de contrachapado de 3 mm. para realizar el nuevo anclaje con el objetivo de reducir las vibraciones que sufría la electrónica. Esta decisión será comentada más en profundidad en el Capítulo 7. 70 Memoria. Instalación Abordo Ilustración 31 - Última versión del tren de carga utilizada en el proyecto 3 Instalación IMU La IMU viene instalada ya en una caja de plástico. En la Ilustración 32 se muestra como es la disposición de los interruptores y la ranura para la manipulación de la tarjeta SD. Ilustración 32 - Caja donde está instalada la IMU 71 Memoria. Instalación Abordo Dicha caja va sujeta al tren de carga del helicóptero mediante unas bridas como se muestra en la Ilustración 33. Se ha utilizado un poco de gomaespuma para acomodar mejor la caja y que apoye bien, puesto que por abajo no es 100% plana, resaltan los tornillos. Ilustración 33 - Se puede apreciar la instalación de la IMU El tren de carga sustituye al tren original del helicóptero. Una vez todo montado y en orden de vuelo en resultado es el mostrado en la Ilustración 34. 72 Memoria. Instalación Abordo Ilustración 34 - Helicóptero cargado y listo para volar. 4 Correspondencia de los ejes Con la IMU instalada como se muestra en la Ilustración 34, la correspondencia entre los ejes del helicóptero y los de la IMU es la mostrada en la Ilustración 35. Ilustración 35 - Ejes de la IMU 73 Memoria. Instalación Abordo 74 Con esta instalación los canales muestreados por la IMU, e incluidos en la cadena de medidas que se almacena en la tarjeta SD, siguen la correspondencia marcada por la Tabla 4. Canal ADC Parámetro medido ADC1 Velocidad Angular eje Z ADC2 Velocidad Angular eje Z ADC3 Velocidad Angular eje X ADC4 Velocidad Angular eje Y ADC5 Aceleración eje Z ADC6 Aceleración eje Y ADC7 Aceleración eje X ADC8 Velocidad Angular eje Z Tabla 4 - Relación canales ADC – Medidas Como se observa en la Tabla 4, los canales ADC1, ADC2 y ADC 8 miden la velocidad angular en el eje Z. Esto no es del todo cierto, pero es una aproximación que hemos dado por válida a la vista de los resultados expresados por la Ilustración 36. No hemos determinado las diferencias entre dichos canales porque este hecho no afectaba apreciablemente a los objetivos de este proyecto. Memoria. Instalación Abordo 75 160 140 120 100 80 60 4500 4550 4600 4650 4700 Ilustración 36 - Canales ADC1, ADC2 y ADC8 juntos 4750 Memoria. Experimentos Capítulo 6 EXPERIMENTOS En este capítulo se muestra el proceso de obtención de datos y cómo se realizan los ensayos. También se explica cómo se analizan los datos una vez capturados. 1 Proceso de un vuelo de captura El proceso seguido durante la realización de cada vuelo de toma de datos ha sido el mismo, y se resume en este apartado de la memoria. 1.1 Revisión de la mecánica y estado de los componentes Debido a la naturaleza, complejidad y delicadeza de los helicópteros de radio control, resulta necesario revisarlos cuidadosamente antes de cada día de vuelo. Por ello, previamente a volarlo se ha de revisar la mecánica y el funcionamiento de la electrónica. En los vuelos se generan muchas vibraciones y éstas aflojan los tornillos y deterioran los contactos eléctricos. Tanto entre cables como entre componentes soldados. Estas vibraciones no sólo obligan a realizar estas comprobaciones previas a cada vuelo, sino que también obligan a tenerlas en cuenta a la hora de proceder al montaje del helicóptero y de realizar los diseños de los componentes que van abordo. 1.2 Vuelos de calentamiento y comprobación Para asegurar que el funcionamiento del helicóptero es el correcto y que todo está en orden, se realizaban primero al menos un vuelo de comprobación. 76 Memoria. Experimentos Se iniciaba realizando un vuelo tranquilo, a baja altura y no muy alejado del piloto para tratar de observar nuevas vibraciones y escuchar los posibles sonidos extraños que pudiesen avisar de que algo no va bien. Una vez realizados los retoques pertinentes, y comprobado el funcionamiento correcto del aparato, se realiza un vuelo de calentamiento que sirve al piloto para desentumecer los dedos y calentar, para después poder realizar los vuelos de captura de datos de manera más segura. 1.3 Vuelos de captura de datos Estos vuelos son delicados puesto que para la realización de estos ensayos se monta en el helicóptero la unidad de media inercia (IMU), de la cual no hay repuesto, y que puede quedar completamente destruida si se sufre un incidente durante el vuelo. El helicóptero se arrancaba con la IMU instalada pero apagada. A continuación se procedía a realizar un estacionario para calentar el motor. Una vez que el motor ya está caliente se aterriza el helicóptero y se enciende la IMU. A continuación se activa el interruptor de grabación de datos y se procede a la realización del vuelo de ensayo, realizando todos los ensayos planeados según el modelo de ensayo a realizar, pudiendo elegir entre los dos modelos de hoja de ensayos comentados en el apartado 4 del Capítulo 3. 2 Análisis de datos Los datos medidos por la IMU son almacenados en una tarjeta SD en archivos de texto en codificación ASCI. El archivo de texto se llama 77 Memoria. Experimentos “VUELOXX.TXT”, donde XX es el número de vuelo realizado. Para poder representar y analizar dichos datos es imprescindible su conversión a formato numérico. El programa utilizado para la representación y análisis de datos es el Matlab. En él se han escrito una serie de programas que tratan los datos para realizar las conversiones a numérico y aplicar algunos filtros para determinar la validez de los mismos. 2.1 Representación de datos Para representar los datos primero han de convertirse a numéricos, como ya se ha comentado anteriormente. Para ello se ha escrito un programa en matlab llamado “imu2d.m”. Este programa separa los datos del archivo VUELO.TXT en diferentes archivos. En el archivo PPM.TXT contiene la información sobre la señal PPM almacenada. En el archivo ADC.TXT se almacena toda la información de los 8 canales que emite la IMU y, a su vez, se separa cada canal en un archivo ADCX.TXT, donde X es el número se canal y va de 1 a 8. Para utilizar el programa se sigue el siguiente procedimiento: 1. Se copia el archivo imu2d.m a la carpeta donde esta el archivo VUELOXX.TXT que se quiere procesar 2. Se crea una variable llamada “file_name” que contiene el nombre del archivo a tratar (Ilustración 37). 78 Memoria. Experimentos Ilustración 37 - Creamos a la variable file_name en nombre del archivo a tratar 3. Y se ejecuta el archivo imu2d. Automáticamente nuestro programa comienza a tratar los datos del archivo (Ilustración 38). Ilustración 38 - el programa imu2d comienza a tratar el archivo de vuelo 79 Memoria. Experimentos 80 Cuando el programa ha acabado el tratamiento del archivo de vuelo tenemos un conjunto de archivos nuevos con los datos anteriormente comentados. El programa imu2d carga automáticamente dichos archivos en el Matlab, de modo que en el workspace se crean automáticamente un conjunto de variables con el nombre de los archivos cargados (adc, adc1, adc2, …… , adc8). Ahora podemos representar dichas variables y obtener una gráfica temporal de los datos medidos por la IMU durante el vuelo. Si por ejemplo representamos la variable que contiene la información de todos los canales muestreados, la variable adc, obtenemos una gráfica como la que se muestra en la Ilustración 39. 900 800 700 600 500 400 300 200 100 0 400 600 800 1000 1200 1400 1600 1800 2000 2200 Ilustración 39 - Ejemplo de representación de datos de un vuelo Si por el contrario queremos representar únicamente la información de un único canal, debemos acudir a las variables numeradas. Como ejemplo vamos a representar la variable de la aceleración en el eje x, que corresponde al canal 7, Memoria. Experimentos 81 por lo que representamos la variable adc7, el resultado se muestra en la Ilustración 40. 750 700 650 600 550 500 450 400 400 600 800 1000 1200 1400 1600 1800 2000 2200 Ilustración 40 - Representación del canal adc7 (eje x) 2.2 Filtrado de datos y análisis Como se puede observar en la Ilustración 40, el resultado de la medición lleva asociadas grandes cantidades de ruido. Es por ello que resulta imprescindible reducir dicho ruido. El objetivo de reducir el ruido es para poder apreciar mejor visualmente la gráfica de los datos adquiridos, y determinar más fácilmente la validez de los mismos. Para cumplir este objetivo se han realizado pruebas con filtros de media móvil, puesto que, al ser el ruido de elevada frecuencia en comparación con la señal a tratar, estábamos interesados en un filtro pasa baja. Memoria. Experimentos El filtro ha sido una media móvil simple de seis elementos. Para elegir el número de elementos a promediar se analizó la forma del ruido de la señal. Como se puede apreciar en la Ilustración 41, el ruido de la señal tiene casi siempre periodos de seis elementos. Si los promediamos entre sí, los picos del ruido se compensan. Ilustración 41 - Análisis de la característica del suido de la señal Para aplicar este filtro se han escrito un programa. La media móvil simple se aplica con el programa “media_movil.m”. Sigue el mismo esquema de funcionamiento que el “imu2d.m”: 1. Se copia el archivo que contiene el algoritmo de lo filtro, “media_movil.m” a la carpeta donde se encuentran los archivos “adcx.txt”, resultado del programa imu2d.m. 82 Memoria. Experimentos 2. A continuación se crea la variable “file_name” con el nombre del archivo “adcx.txt” correspondiente al canal que se quiere filtrar (Ilustración 42). Ilustración 42 - Creamos a la variable file_name en nombre del archivo a filtrar 3. Y se ejecuta el programa del filtro a utilizar, media_móvil. En la Ilustración 43 se ha aplicado el algoritmo de media móvil. La Ilustración 44 muestra el canal adc7 antes de ser filtrado y en la Ilustración 45 se muestra el resultado del filtrado. 83 Memoria. Experimentos 84 Ilustración 43 - ejecución de la media movil simple de un adc 800 700 600 500 400 300 200 0 500 1000 1500 2000 2500 3000 Ilustración 44 - Canal adc7 antes de ser filtrado 3500 4000 Memoria. Experimentos 85 700 600 500 400 300 200 100 0 500 1000 1500 2000 2500 3000 3500 4000 Ilustración 45 - Canal adc7 después de ser filtrado Aunque realmente, el ruido de la señal no es de frecuencia constante, por lo que la media de un número fijo de elementos no siempre cancelará el ruido existente. Habría que aplicar algún algoritmo de ancho ventana variable, pero la elección y aplicación de dicho filtro acarrea un estudio de la señal tan profundo, exhaustivo y complicado, que es digno de una tesis doctoral a parte de este proyecto. De modo que vamos a intentar deducir algo de la aplicación de estos filtros sencillos que hemos elegido. También se ha escrito un programa llamado “fourier.m”, que contiene todos los comandos necesarios para hacer el análisis de fourier de una variable ya cargada. Tan sólo se ha de editar el código para modificar el nombre de la variable a analizar en la línea: Y = fft(adcx); Donde acdx se sustituye por el canal del que se desea realizar el análisis. Memoria. Resultados y Conclusiones Capítulo 7 RESULTADOS Y CONCLUSIONES Después de todo lo comentado en los capítulos anteriores, ya sólo queda analizar los datos grabados en los diferentes días de vuelo y extraer las conclusiones de todo el trabajo realizado durante este largo proyecto. 1 Primeros ensayos de vuelo Como ya se ha contado antes, los primeros ensayos de vuelo se hicieron con un helicóptero modelo Venture 30. Una imagen de dicho helicóptero con el equipo a bordo la tenemos en la Ilustración 46. Ilustración 46 - El primer helicóptero empleado. Venture 30. 86 Memoria. Resultados y Conclusiones El primer día de vuelo fue el 14 de enero del 2005. En estos vuelos se empleó el primer modelo de ensayo, sin módulo senoidal. Se trataba simplemente de realizar unos vuelos de prueba a ver que tal medía la IMU, que nunca se había probado en un helicóptero, y comprobar también el funcionamiento del módulo de almacenamiento que la acompaña, puesto que teníamos nuestras dudas de que el conector de la tarjeta SD funcionase correctamente bajo tantas vibraciones. El la Ilustración 47 se muestra al Venture en pleno vuelo de captura de datos. Ilustración 47 - Primeros vuelos del Venture 30 Toda la electrónica funcionó a la perfección, y se obtuvieron varios archivos de datos. En la Ilustración 48 se muestra el archivo de datos “vuelo19.txt”. 87 Memoria. Resultados y Conclusiones 88 1000 900 800 700 600 500 400 300 200 100 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 48 - Ejemplo de los datos obtenidos el día 14 de enero Como se puede ver en estos datos, hay una enorme cantidad de ruido que imposibilita utilizarlos para intentar inferir ningún tipo de medida, como se observa en la Ilustración 49. Si de todos modos optamos por aplicar el filtro de media móvil obtenemos como resultado lo mostrado por la Ilustración 50. Memoria. Resultados y Conclusiones 89 900 800 700 600 500 400 300 200 0 500 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 49 - datos del canal adc7 (aceleración en X) sin aplicar filtros 700 600 500 400 300 200 100 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 50 - datos del canal adc7 (aceleración en X) después de filtrados Memoria. Resultados y Conclusiones Estos datos tienen mucho ruido, por lo que claramente no son muy útiles para inferir la orientación del helicóptero en el aire. Si detectamos, sin embargo, que el helicóptero volaba demasiado forzado, tenía demasiada carga, y eso nos obligaba a volar con muchas revoluciones en la cabeza del rotor y, en consecuencia, con el motor muy acelerado. 2 Prueba de las primeras modificaciones Debito al exceso de peso detectado en la prueba anterior se decidió aumentar la potencia del helicóptero instalando un motor más grande, uno del tamaño .50 (8,5 cm3), a la vez que se redujo sensiblemente el peso del tren de carga. Con este nuevo equipo, fuimos al campo de vuelo el día 22 de febrero. En esta ocasión los resultados fueron similares a los obtenidos en la prueba anterior, pero había una pequeña mejora, tal y como muestra la Ilustración 51. Dicha mejora presumimos se debió a la mayor capacidad de carga del helicóptero y mayor ligereza del tren del mismo, gracias a lo cual el helicóptero volaba a menores revoluciones y el motor trabajaba a un régimen más pausado, con lo que se crearon menos vibraciones. En la Ilustración 51 también se observa que hay partes en la que los datos se miden muy claramente y sin apenas ruido, que siempre coincide con una caída en el valor medido por el canal adc5 (de color morado). Dicho eje, como ya se ha explicado con anterioridad, es el eje Z. Inicialmente está más abajo que las otras dos aceleraciones (adc7 – eje X y adc6 – eje Y) porque está midiendo la gravedad. El hecho de que coincida una disminución del ruido medio, y la bajada de la señal adc5, es porque esto sucede cada vez que se corta gas de manera acusada, de 90 Memoria. Resultados y Conclusiones 91 modo que el motor reduce su régimen y con el las vibraciones, y el helicóptero comienza a perder altura. 1000 800 600 400 200 0 2500 3000 3500 4000 4500 5000 5500 6000 6500 Ilustración 51 - ejemplo de los datos obtenidos el día 26 de febrero Vamos, al igual que hemos hecho antes, a representar un canal de medida antes (Ilustración 52) y después (Ilustración 53)de la aplicación de la media móvil. El resultado obtenido es similar al anterior, los datos no son muy útiles para la obtención de la orientación del helicóptero en el aire. No obstante, se observa que son mejores que los obtenidos el día de vuelo anterior. Memoria. Resultados y Conclusiones 92 1000 900 800 700 600 500 400 300 200 0 2000 4000 6000 8000 10000 12000 Ilustración 52 - canal adc7 (aceleración en X) sin filtrar 900 800 700 600 500 400 300 200 100 0 2000 4000 6000 8000 10000 12000 Ilustración 53 - Canal adc7 (aceleración en X) filtrado con algoritmo de media móvil Memoria. Resultados y Conclusiones 3 Helicóptero nuevo A la vista de los resultados anteriores se optó por cambiar el helicóptero utilizado en este proyecto. Se adquirió un AirSkipper 50, que además de tener un motor .50 para así tener una generosa capacidad de carga, tiene elevadas características acrobáticas, por lo que goza de una rígida estructura y un menor peso que el Venture 30. De este modo aumentábamos la capacidad de carga. Tuvimos entonces que proceder a adaptar el tren a este nuevo helicóptero, como ya se ha comentado en el Capítulo 5. El helicóptero en vuelo se muestra en la Ilustración 54. Ilustración 54 - Helicóptero AirSkipper en vuelo de captura de datos Con este nuevo helicóptero y este nuevo tren, volvimos a disfrutar de otro fantástico día de vuelo el 14 de mayo. En esta ocasión, al haber modificado el tren de carga con los listones de contrachapado, observamos un fenómeno que nos dio la pista para seguir avanzando. 93 Memoria. Resultados y Conclusiones 94 Los listones estaban colocados de manera que conducían las vibraciones de alta frecuencia en las direcciones X y Z, pero por el contrario, en la dirección Y, vibraban a baja frecuencia, colando el ruido en el acelerómetro de dicho eje. Este efecto puede observarse en la representación del archivo “vuelo1.txt” que aparece en la Ilustración 55. 1000 900 800 700 600 500 400 300 200 100 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 55 - Archivo de datos del día 14 de mayo También se observa que los ejes X y Z han mejorado mucho la calidad de la señal medida, de modo que si los sometemos a un filtrado como los realizados anteriormente, obtenemos resultados sensiblemente mejores (Ilustración 56 e Ilustración 57). Si bien, estos datos todavía no son suficientemente buenos como para poder estimar la orientación del helicóptero en el aire de manera sencilla. Requerirían un análisis exhaustivo y profundo, con el consiguiente esfuerzo de Memoria. Resultados y Conclusiones 95 cálculo, por lo que no resultarían óptimos para su utilización con fines de control en tiempo real. 900 800 700 600 500 400 300 200 1000 1500 2000 2500 3000 3500 Ilustración 56 - Canal ADC7 sin filtrar 4000 4500 Memoria. Resultados y Conclusiones 96 700 600 500 400 300 200 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 57 - Canal ADC7 una vez filtrado con media móvil Un hecho claro es que la vibración de baja frecuencia en el eje Y era de tal amplitud, que podía observarse su efecto a simple vista. De aquí concluimos que es mejor transmitir vibración de alta frecuencia que intentar aislarla y como consecuencia transmitir vibración de baja frecuencia, con el problema asociado de que se cuele a través del filtro antialiasing. Si realizamos un análisis de Fourier a los canales ADC de aceleración, confirmamos este fenómeno. En la Ilustración 58 se representa el análisis de Fourier del canal ADC7 (aceleración del eje X), en la Ilustración 59 se representa la del ADC5 (aceleración eje Z), y en la Ilustración 60 se representa el ADC6 (aceleración eje Y). Memoria. Resultados y Conclusiones 10 x 10 8 97 análisis de fourier 9 8 7 6 5 4 3 2 1 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 0.4 0.45 0.5 Ilustración 58 - Fourier del canal ADC7 18 x 10 8 análisis de fourier 16 14 12 10 8 6 4 2 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 Ilustración 59 - Fourier del canal ADC5 0.4 0.45 0.5 Memoria. Resultados y Conclusiones 2 x 10 10 98 análisis de fourier 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 0.4 0.45 0.5 Ilustración 60 - Fourier del canal ADC6 4 Prueba de modificaciones y módulo senoidal Nos decidimos entonces a rigidificar un poco la bandeja del tren de carga y así tratar de evitar la vibración de baja frecuencia. Instalamos unas bridas a modo de tensores, de manera que aumentase la frecuencia del ruido que transmitíamos a los sensores. La Ilustración 61 muestra el resultado de este montaje. Fuimos a probar este nuevo montaje el día 22 de mayo. Primero realizamos un par de vuelos de prueba para comprobar la efectividad de los tensores. Los resultados del vuelo5.txt se muestran en la Ilustración 62. Como se puede observar, son altamente satisfactorios. Memoria. Resultados y Conclusiones 99 Ilustración 61 - Instalación con bridas a modo de tensores 1000 900 800 700 600 500 400 300 200 100 500 1000 1500 2000 2500 3000 3500 4000 Ilustración 62 - Ejemplo de vuelo del día 22 de mayo 4500 5000 Memoria. Resultados y Conclusiones 100 Representando también el canal ADC7 antes (Ilustración 63) y después (Ilustración 64) de aplicar el filtro de media móvil observamos que los resultados son muy positivos. 750 700 650 600 550 500 450 400 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Ilustración 63 - Canal ADC7 antes de filtrar 600 500 400 300 200 100 500 1000 1500 2000 2500 3000 3500 4000 4500 Ilustración 64 - Canal ADC7 con filtro de media móvil 5000 Memoria. Resultados y Conclusiones 101 La representación de los análisis de Fourier de este vuelo tenemos los siguientes resultados. El Fourier del canal ADC7 se representa en la Ilustración 65, el del ADC5 en la Ilustración 66 y del canal ADC6 en la Ilustración 67. 2.5 x 10 10 análisis de fourier 2 1.5 1 0.5 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 0.4 0.45 0.5 Ilustración 65 - Fourier del canal ADC7 (aceleración eje X) 4 x 10 9 análisis de fourier 3.5 3 2.5 2 1.5 1 0.5 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 0.4 0.45 Ilustración 66 - Fourier del canal ADC5 (aceleración eje Z) 0.5 Memoria. Resultados y Conclusiones 6 x 10 10 102 análisis de fourier 5 4 3 2 1 0 0 0.05 0.1 0.15 0.2 0.25 frec 0.3 0.35 0.4 0.45 0.5 Ilustración 67 - Fourier del canal ADC6 (aceleración eje Y) Ante el éxito de estas nuevas medidas, nos decidimos a probar el módulo senoidal. Hicimos un montaje sencillo para hacer cómoda su utilización en el campo de vuelo. “Empaquetamos” el módulo con la batería que lo alimentaba y el interruptor que activaba el inicio de la generación de la señal. El resultado se muestra en la Ilustración 68. Memoria. Resultados y Conclusiones Ilustración 68 - Instalación del módulo senoidal Realizamos varios vuelos a distinta frecuencia probando la introducción de la senoidal en cada una de las diferentes funciones de la emisora de radio control, y cada vez en una sola función. La señal se introdujo en las funciones de alabeo, cabeceo y desviación. Lo primero que se observó fue que el centrado del canal senoidal generado no era correcto, estaba un poco desviado, de manera que no sólo teníamos una señal senoidal, sino que además teníamos una pequeña componente constante de mando, la cual desviaba el helicóptero en una dirección. En el mando de alabeo el helicóptero iba poco a poco desviándose hacia la derecha, en el de cabeceo hacia atrás, y en el de desviación el helicóptero se desviaba también hacia la derecha. Eso sí, con movimientos senidales. En el archivo “vuelo3.txt” se realizó un ensayo en el mando de cabeceo a frecuencia de 2Hz y amplitud 0,8. El resultado del canal ADC7 es el mostrado por 103 Memoria. Resultados y Conclusiones 104 la Ilustración 69, la aceleración en el eje X, y la Ilustración 70 muestra el canal ADC4, es decir el giro en el eje Y. 600 500 400 300 200 100 600 800 1000 1200 1400 1600 1800 2000 2200 Ilustración 69 - Canal ADC7 (aceleración eje X) filtrado Si realizamos un cálculo del número de muestras que se toman en un movimiento senoidal a la frecuencia de 2 Hz obtenemos el resultado de la Ecuación 3. Muestras = 0.5 Periodo = = 15.26 TiempoEntreMuestras 0.03276 Ecuación 3 - número de muestras por periodo Dicho número de muestras es demasiado bajo para ser visto en unos datos con tanto ruido, sin embargo, ensayos en frecuencias más bajas y a mayor amplitud si podrían ser fuesen identificables. Memoria. Resultados y Conclusiones 105 Para ello habría que poder trimar la señal senoidal generadora por el módulo para que la realización del ensayo no supusiese un peligro para el helicóptero debido a la desviación que sufre a causa del mal centrado de la senoidal. 300 250 200 150 100 50 0 600 800 1000 1200 1400 1600 1800 2000 2200 Ilustración 70 - Canal ADC4 (giro eje Y) filtrado A pesar de ello, se observa que los datos han mejorado muchísimo con respecto a los obtenidos en los primeros ensayos realizados en el proyecto, y ya casi podemos decir que de estos datos se puede inferir la orientación del helicóptero en el aire. La explicación de este fantástico resultado se debe a que el helicóptero fundamentalmente produce vibraciones de alta frecuencia, al introducir en medio un elemento aislante para intentar reducir las vibraciones que llegan a la electrónica, hacemos que el elemento aislante vibre a su frecuencia natural, introduciendo ahora una vibración de baja frecuencia. Memoria. Resultados y Conclusiones Debido al filtro antialiasing de la IMU, el ruido de alta frecuencia se reduce muchísimo, mientras que el ruido en baja frecuencia se cuela con facilidad. Es por esto por lo que rigidificando el tren de carga obtuvimos mejores resultados. Si se aumentase la rigidez de la instalación de los sensores en el helicóptero, para así conseguir desplazar el ruido hacia frecuencias mayores, las mediciones serían previsiblemente mejores. En este sentido, hay un límite que no hay que descuidar, y es una instalación excesivamente rígida podría transmitir las vibraciones con demasiada amplitud, llegando a saturar los sensores. Hay que buscar el nivel de aislamiento adecuado, pero manteniendo la unión lo más rígida posible. Aún así, sería precisa la utilización de filtros dinámicos para lograr una mejora satisfactoria en el tratamiento de los datos medidos, para así poder realizar un análisis de la orientación del helicóptero en el aire. 106 Memoria. Futuros desarrollos Capítulo 8 FUTUROS DESARROLLOS De todo este trabajo se ha adquirido un significativo “know how” relacionado con los vehículos autónomos y los sistemas inerciales de medida. En el presente capítulo se comentan algunas ideas nuevas y posibles mejoras del sistema para aumentar su fiabilidad y perfeccionar su funcionamiento. 1 Aumentar la frecuencia del ruido Tal y como se ha ido observando durante el proyecto. A medida que endurecíamos el tren de aterrizaje, es decir, lo hacíamos más rígido, obteníamos mejores resultados en la medida de datos. El siguiente paso para continuar aumentando la frecuencia del ruido es instalar los sensores en el propio chasis del helicóptero. De este modo no hay elementos en medio que puedan producir vibraciones de baja frecuencia, de modo que mejoramos las medidas tomadas. Hay que tener especial cuidado con el tren de carga, porque si vibra a baja frecuencia puede transmitir dichas vibraciones al chasis del helicóptero, aminorando o eliminando la ventaja que obtenemos al montar los sensores en esta nueva ubicación. También es necesario rigidificarlo en esta nueva disposición de los sensores. 2 Aplicación de filtros dinámicos Como ya se ha visto, la frecuencia del ruido no es constante puesto que las revoluciones del motor y de los rotores no lo son. En este sentido la aplicación de 107 Memoria. Futuros desarrollos un filtro estático como los que se han utilizado en este proyecto da poco resultado, y como se ha observado, el ruido no se elimina con mucha eficacia. Para poder conseguir buenos resultados en el análisis de los datos capturados es fuertemente recomendable la utilización de filtros dinámicos, los cuales pueden adaptar su ancho de ventana a la frecuencia del ruido que persiste en cada instante, siendo así mucho más eficaces y obteniéndose posiblemente mejores resultados. 3 Mejora del módulo senoidal El módulo senoidal podría mejorarse rápidamente de dos maneras; aumentando la resolución, y posibilitando el trim. En lo referente a aumentar la resolución decir que esto suavizaría el comportamiento del helicóptero en los movimientos a baja frecuencia, por lo que se obtendrían mejores resultados de los test al moverse el helicóptero de manera menos escalonada y más continuada. Por otro lado, ya se ha dicho que el helicóptero tendía a irse hacia un lado al realizar el test en frecuencia, por lo que trimarlo mejoraría el test y posibilitaría prolongarlo durante mucho tiempo, al no tener que abortarlo para recuperar el control del helicóptero ante la inminente colisión. 4 Influencia del ruido magnético Convendría también investigar la influencia del ruido electromagnético y electrostático producido al girar partes metálicas en fricción a altas velocidades. 108 Memoria. Futuros desarrollos Este tipo de ruidos es muy común en los helicópteros de radio control y es fuente de muchas interferencias en el sistema de control, razón por la cual suele optarse en el control de un helicóptero por una modulación PCM, que es una variante de la PPM digitalizada y codificada. El aislamiento de la IMU en un contenedor metálico podría aislar de dicho ruido electromagnético, eliminando interferencias y mejorando las señales, y como consecuencia, los datos. 5 Drift en los sensores Algo que no se ha tenido en cuenta es el drift de los sensores. El drift es un fenómeno por el cual el sensor varía el valor medio de la salida por efecto de la temperatura. Es fácil de compensar, y no supondría un gran esfuerzo en la investigación, ni requeriría una gran inversión de tiempo. Siempre se dejó reposar la IMU en el campo de vuelo el tiempo suficiente hasta que adoptase la temperatura ambiente, pero al encenderla y producirse un consumo de corriente la circuitería se calienta más. Éste último calentamiento no se tuvo en cuenta, y no se esperó a que la temperatura se estabilizase. 6 Búsqueda de las mejores RPM Debido a la falta de tiempo, se nos ha quedado en el tintero esta fase del proyecto. Consiste en variar las revoluciones de vuelo del rotor principal con la ayuda de un governor. Un governor es un instrumento aeromodelístico muy utilizado en la actualidad. Su principio de funcionamiento es muy simple; mide las revoluciones del motor y lo acelera/decelera en consecuencia, con el objetivo de mantener las revoluciones constantes. 109 Memoria. Futuros desarrollos La idea de su utilización es muy sencilla. Se basa en que, al igual que existe una frecuencia de resonancia de la estructura del helicóptero, existirá también un rango de revoluciones para el cual se reducirá la amplitud de las vibraciones del helicóptero en su conjunto, y en consecuencia, las medidas por la Unidad Inercial de Medida. Se trata pues de tomar datos a diferentes velocidades de rotor para así evaluar la influencia de ésta en los datos medidos. 110 Memoria. Bibliografía BIBLIOGRAFÍA [1] Brock, K. Development of an Autonomous Robotic Aerial Vehicl.e. Fuente: The University of Arizona, Tucson. http://engr.arizona.edu/~rav [2] http://Autopilot.sf.net [3] http://www.rotomotion.com [4] Bernard Muttler; Takeo Kanade; Mark B. Tischler. System Identification Modeling of a Model-Scale Helicopter. Fuente: http://www.ri.cmu.edu/projects/project_93.html [5] Dieter Schlüter. Helicópteros de Radio Control. Editorial Cúpula. ISBN 84-3291337-5 [6] Alejandro Weinstein. Cargador bootloader. Fuente: http://www.on.cl/~linux/Kargador.zip [7] Miguel Ángel Torroba Cañas. Primeras etapas en el diseño de un estabilizador de vuelo para helicópteros a escala. Primera I: Sistema de adquisición y almacenamiento de datos. Fuente: PFC 2005, ICAI 111 Memoria. Apéndice I Programa Principal Módulo APÉNDICE I PROGRAMA PRINCIPAL MÓDULO Nombre del archivo: main.c #include #include #include #include #include #define #define #define #define #define #define #define <stdio.h> <stdlib.h> <delay.h> <string.h> <mega8515.h> RXC 7 PB2 2 PA1 1 PA2 2 UDRE CLI() SEI() 5 #asm("cli") #asm("sei") #define SMAX 9 #define MINCHAR 30 #define #define #define #define rx_counter0 tx_counter0 rx_counter1 tx_counter1 (UCSRA & 0x80) ((!UCSRA) & 0x40) (UCSRA & 0x80) ((!UCSRA) & 0x40) //#define DEBUG //arrays con los valores del seno y longitud de los trenes de pulsos float seno[20]={0, 0.31, 0.59, 0.81, 0.95, 1, 0.95, 0.81, 0.59, 0.31, 0, -0.31, -0.59, -0.81, -0.95, -1.05, -0.95, -0.81, -0.59, 0.31}; int datos[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //vector de anchos de pulso de canal int ndato=0; int atics[10]={0x04E2,0x061A,0x0823,0x0C35,0x186A,0x30D4,0x493E,0x61A8 ,0x7A12,0xC350}; //variables de información para la confrccion del pulso unsigned int tics; //velocidad a la que cambia el indice del array datos float A=1; //factor de corrección del recorrido del servo int invertida=0; //factor para determinar el nivel lógico de la señal //variables de parametros fijos del pulso int ancho_separacion=6, ancho_variable=8, ancho_total=440, ancho_defecto_canal=26, ancho_reset=300; //van divididos por intervalos de 50us //Para recepción serie 112 Memoria. Apéndice I Programa Principal Módulo char buffer[SMAX]="tj_lista", config[SMAX] ="T00A00I0", recive_hola[]="hello_pc", recive_valido[]="correcto", responde_hola[]="hello_tj", pide_datos[]="damedato"; //escribir interrupción timer para la cuenta de tiempo interrupt [5] void cmptimer(void) //incrementa contador de usecs { ndato++; if(ndato==20) ndato=0; } void port_init(void) { PORTA = 0xFF; DDRA = 0xFF; //Todo salidas. LEDs apagados al inicio PORTB = 0xFF; DDRB = 0xB3; //todo salidas excepto MISO & Jumpers(con pull-up activado) PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; PORTE = 0x7; DDRE = 0x7; //PortE: sólo 3 pins } void uart0_init(void) { UCSRB = 0x00; UCSRA = 0x00; UCSRC = 0x86; UBRRH = 0x00; UBRRL = 0x0C; //38400 bauds with a 8.0MHz Xtal UCSRB = 0x18; //todavía no activamos la interrupción de recepción completada } void timer1_init(void) //configuracion timer0 { TCNT1=0x00; OCR1A=0xFF; TCCR1A=0x00; //Prescaler = 64 y Modo=CTC TCCR1B=0x0B; TIFR = 0X00; //limpiamos las interrupciones pendientes TIMSK = 0xC0; //activamos Timer1A Compare-Match Interrupt } void init_devices(void) { //paramos las interrupciones hasta que acabe la configuración CLI(); //desactivamos todas las interrupciones port_init(); uart0_init(); ACSR=0x80; SFIOR=0x00; timer1_init(); //Comparador analógico desactivado SEI(); //re-enable interrupts //all peripherals are now initialised 113 Memoria. Apéndice I Programa Principal Módulo } void CalculaDatos (void) { int i=0; for(i=0;i<20;i++) { datos[i] = ancho_defecto_canal + A*ancho_variable*seno[i]; } } int GeneraTren(void) { int i=0,j=0; int ancho_canal=0; ancho_canal=datos[ndato]; ancho_reset=ancho_total-4*ancho_canal-5*ancho_separacion; if(invertida){ //info en el nivel alto PORTA |= (1<<PA1); //PA1 arriba para reset for(j=0;j<ancho_reset;j++) //el ancho de canal va en múltiplos de 50us delay_us(45); PORTA &= (!(1<<PA1)); //PA1 abajo para separar canal for(j=0;j<ancho_separacion;j++) delay_us(45); for(i=0; i<4 ; i++) { PORTA |= (1<<PA1); //PA1 arriba para info canal for(j=0;j<ancho_canal;j++) delay_us(45); PORTA &= (!(1<<PA1)); //PA1 abajo para separar canal for(j=0;j<ancho_separacion;j++) delay_us(45); } } else{ //info en el nivel bajo PORTA &= (!(1<<PA1)); //PA1 abajo para reset for(j=0;j<ancho_reset;j++) //el ancho de canal va en múltiplos de 50us delay_us(45); PORTA |= (1<<PA1); //PA1 arriba para separar canal for(j=0;j<ancho_separacion;j++) delay_us(45); for(i=0; i<4 ; i++) { PORTA &= (!(1<<PA1)); //PA1 abajo para info canal for(j=0;j<ancho_canal;j++) delay_us(45); PORTA |= (1<<PA1); //PA1 arriba para separar canal for(j=0;j<ancho_separacion;j++) 114 Memoria. Apéndice I Programa Principal Módulo delay_us(45); } } if(!(PINB & (1<<PB2))) return 1; else return 0; } int ComunicacionDatos(void) //Protocolo de comunicación PCTarJeta. Devuelve 1 si correcto y 0 si comunicación incorrecta { int seguir=0; //esperamos hello world del pc gets(buffer , (SMAX-1)); //comprobamos que lo recibido es un hello world del pc if(strcmp(buffer,recive_hola)){ seguir=0; printf("hello_no"); return seguir; } //respondemos hello world printf("%s", responde_hola); //pedimos datos printf("%s", pide_datos); //esperamos recibir datos gets(buffer , (SMAX-1)); strcpy(config,buffer); //enviamos datos al PC printf("%s",config); //esperamos confirmacion datos correctos gets(buffer,(SMAX-1)); if(!(strcmp(buffer,recive_valido))) { seguir=1; printf("todobien"); } else { printf("err_dato"); seguir=0; } return seguir; } void ConvierteDatos() { char aux[4]="000"; int i=0; 115 Memoria. Apéndice I Programa Principal Módulo //frecuencia aux[0]=config[1]; aux[1]=config[2]; aux[2]='\0'; #ifdef DEBUG printf("tics %s", aux); #endif i = atoi(aux); tics = atics[i]; //factor A aux[0]=config[4]; aux[1]=config[5]; aux[2]='\0'; #ifdef DEBUG printf("auxiliar amplitud %s", aux); #endif A = atoi(aux); A /= 10; //invertida aux[0]=config[7]; aux[1]='\0'; #ifdef DEBUG printf("auxiliar invertida %s", aux); #endif invertida = atoi(aux); } void main (void) { #ifdef DEBUG int i=0; #endif //Inicialización de los dispositivos init_devices(); //Pequeño parpadeo para comprobar que el programa comienza. PORTA &= 0xF3; //encendemos los leds (rojo y verde) delay_us(2500); PORTA |= 0x0C; //apagandos los leds (rojo y verde) delay_us(2500); PORTA &= 0xF7; //Cuando esta inicializada encendemos el led rojo while(1){ while(!ComunicacionDatos()); #ifdef DEBUG printf("datos recibidos"); #endif 116 Memoria. Apéndice I Programa Principal Módulo ConvierteDatos(); #ifdef DEBUG printf("datos convertidos"); printf("tics %i , amplitud %f , invertido %i", A, invertida); #endif tics, CLI(); timer1_init(); OCR1A=(tics); SEI(); #ifdef DEBUG printf(" vector de datos antes de calcula= "); for(i=0;i<20;i++) { printf(" %i ", datos[i]); } #endif CalculaDatos(); #ifdef DEBUG printf(" vector de senos= "); for(i=0;i<20;i++) { printf(" %f ", seno[i]); } printf(" vector de datos despues de calcula= "); for(i=0;i<20;i++) { printf(" %i ", datos[i]); } #endif PORTA &= 0xFB; //si los datos son OK led verde on. while((PINB & (1<<PB2))); delay_ms(100); while(GeneraTren()); PORTA |= (1<<PA2); //apagandos el led verde al finalizar el ensayo #ifdef DEBUG printf("fin del ensayo"); #endif } } 117 Memoria. Apéndice II Código Bootloader Módulo APÉNDICE II CÓDIGO BOOTLOADER MÓDULO Nombre del archivo: bootloader.asm ;**************************************************************************** ; File name: bootloader.asm ; Titulo: Bootloader ; Assembler: AVR studio ; Version: 1.0 ; Creted: 03-04-04 ; Last updated: 03-04-04 ; Target: ATmega8515 ; Size: 256 bytes ; Author: Alejandro Weinstein ; Modified by: Fernando Angulo ; Notes: This code is based in Design Note #32 ; This bootloader is supposed to be used with Kargador ; Copyright: Alejandro Weinstein 2004 (c) ;*****************************************************************************/ ; Set the UBR value according to your oscilator value ;.equ UBR = 23 ; Baud rate = 19.200 bps with fCK = 7.3728 MHz ;.equ UBR = 11 ; Baud rate = 19.200 bps with fCK = 3.6869 MHz ;.equ UBR = 12 ; Baud rate = 19.200 bps with fCK = 4.0000 MHz ;.equ UBR = 38 ; Baud rate = 19.200 bps with fCK = 12.0000 MHz .equ UBR = 12 ; Baud rate = 38.400 bps with fCK = 8.0000 MHz 118 Memoria. Apéndice II Código Bootloader Módulo ;.equ UBR = 25 ; Baud rate = 34.800 bps with fCK = 16.0000 Mhz .def temp=r20 .INCLUDE "m8515def.inc" ;Include Register/Bit Definitions for the mega163 .org SECONDBOOTSTART ; ($0F00) second boot. Block size is 512B sbi PORTB,PB3 ; Pull Up Enable nop nop nop sbic PINB,PINB3 ; Skip next instruction if PINB 3 cleared rjmp FLASHEND+1 ; else normal execution from Reset (FLASHEND+1 = Address 0000) ; Programming mode ldi R24,low(RAMEND) ldi R25,high(RAMEND) out SPL,R24 out SPH,R25 ; SP = RAMEND ldi R24,UBR ; Baud rate = 38.400 bps out UBRRL,R24 ldi R24,(1<<RXEN)|(1<<TXEN) out UCSRB,R24 ; Enable receiver & transmitter, 8-bit mode cbi UCSRA,U2X 119 Memoria. Apéndice II Código Bootloader Módulo ;turn on led in PA3 to indicate bootloader mode ldi R24,0x08 ;make PA3 an output out DDRA,R24 cbi PORTA,3 ;LED ON L10: rcall uartGet ; repeat (R16 = uartGet) cpi R16,27 ; while (R16 == ESCAPE) breq L10 L12: cpi R16,'A' ; else if(R16=='A') write address brne L14 rcall uartGet mov R27,R16 ; R27 = address high byte rcall uartGet mov R26,R16 ; R26 = address low byte lsl R26 ; address=address<<1 rol R27 ; convert from byte address to word address rjmp L68 ; uartSend('\r') L14: cpi R16,'c' ;else if(R16=='c') write program memory, low byte brne L16 rcall uartGet mov R22,R16 ; R22 = data low byte rjmp L68 ; uartSend('\r') 120 Memoria. Apéndice II Código Bootloader Módulo L16: cpi R16,'C' ;else if(R16=='C') write program memory,high byte brne L18 rcall uartGet mov R23,R16 ; R23 = data high byte movw R30,R26 ; Z pointer = address movw R0,R22 ; R0&R1 = data ldi R24,1 ; SPMCR = 0x01 out SPMCR,R24 ; page load (fill temporary buffer) spm ; Store program memory adiw R26,2 ; address=address+2 rjmp L68 ; uartSend('\r') L18: cpi R16,'e' ; else if(R16=='e') Chip erase brne L28 ; for(address=0; address < (2*SECONDBOOTSTART); address += (2*PAGESIZE)) clr R26 ; page_erase(); clr R27 rjmp L24 L20: movw R30,R26 ; Z-pointer = address ldi R24,3 ; SPMCR = 0x03 out SPMCR,R24 ; page_erase spm ; Store program memory nop Wait2: in temp,SPMCR 121 Memoria. Apéndice II Código Bootloader Módulo sbrc temp,SPMEN rjmp Wait2 subi R26,low(-2*PAGESIZE) ; address += (2*PAGESIZE) sbci R27,high(-2*PAGESIZE) L24: ldi R24,low(2*SECONDBOOTSTART) ldi R25,high(2*SECONDBOOTSTART) cp R26,R24 ;address < Boot Flash address(byte address) 0x3E00 ? cpc R27,R25 brlo L20 rjmp L68 ; uartSend('\r') L28: cpi R16,'m' ; else if(R16== 'm') Write page brne L34 movw R30,R26 ; Z-pointer = address ldi R24,5 ; SPMCR = 0x05 Write page out SPMCR,R24 spm ; Store program memory nop Wait: in temp,SPMCR sbrc temp,SPMEN rjmp Wait ldi R24,(1<<RWWSRE)|(1<<SPMEN) out SPMCR,R24 122 Memoria. Apéndice II Código Bootloader Módulo spm nop L32: rjmp L68 ; uartSend('\r') L34: L38: cpi R16,'R' ; else if(R16=='R') Read program memory brne L40 movw R30,R26 ; Z-pointer <= address lpm R24,Z+ ; read program memory LSB; store LSB in R24 and Z pointer ++ lpm R16,Z+ ; read program memory MSB; store MSB in R16 and Z pointer ++ rcall uartSend ; uartSend(R16) MSB movw R26,R30 ; address += 2 mov R16,R24 ; LSB stored in R16 rjmp L70 ; uartSend(R16) LSB L40: cpi R16,'D' ; else if (R16=='D') Write data to EEPROM brne L42 rcall uartGet out EEDR,R16 ; EEDR = uartGet() ldi R17,6 ; write EEPROM rcall EepromTalk rjmp L68 ; uartSend('\r') L42: cpi R16,'d' ; else if (R16=='d') Read data from EEPROM brne L44 ldi R17,1 ; read EEPROM rcall EepromTalk ; R16 = EEPROM data 123 Memoria. Apéndice II Código Bootloader Módulo rjmp L70 ; uartSend(R16) L44: LXX: cpi R16,'y' brne L66 sbic PINB,PINB5 ;Si esta el jumper puesto, sigo en bootloader rjmp FLASHEND+1 rjmp L70 L66: ldi R16,'?' ; else uartSend('?') rjmp L70 ; uartSend(R16) L68: ldi R16,13 ; uartSend('\r') L70: rcall uartSend ; uartSend(R16) L72: rjmp L10 EepromTalk: ; if R17 == 6 then Write, if R17 == 1 then Read out EEARL,R26 ; EEARL = address low out EEARH,R27 ; EEARH = address high adiw R26,1 ; address++ sbrc R17,1 ; skip if R17 == 1 (read Eeprom) 124 Memoria. Apéndice II Código Bootloader Módulo sbi EECR,EEMWE ; EEMWE = 1 (write Eeprom) out EECR,R17 ; EECR = R17 (6 write, 1 read) L90: sbic EECR,EEWE ; wait until EEWE == 0 rjmp L90 in R16,EEDR ; R16 = EEDR ret uartSend: ; send R16 sbis UCSRA,UDRE ; wait for empty transmit buffer (until UDRE==1) rjmp uartSend out UDR,R16 ; UDR = R16, start transmission ret uartGet: sbis UCSRA,RXC ; wait for incoming data (until RXC==1) rjmp uartGet in R16,UDR ; return received data in R16 ret 125 Memoria. Anexo III Programa Configurador para PC 126 ANEXO III PROGRAMA CONFIGURADOR PARA PC Nombre del archivo: Generador PPMDlg.cpp // Generador PPMDlg.cpp: archivo de implementación // #include #include #include #include #include "stdafx.h" "Generador PPM.h" "Generador PPMDlg.h" ".\generador ppmdlg.h" <windows.h> #ifdef _DEBUG #define new DEBUG_NEW #endif // Cuadro de diálogo CAboutDlg utilizado para el comando Acerca de class CAboutDlg : public CDialog { public: CAboutDlg(); // Datos del cuadro de diálogo enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); Compatibilidad con DDX/DDV // // Implementación protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // Cuadro de diálogo de CGeneradorPPMDlg CGeneradorPPMDlg::CGeneradorPPMDlg(CWnd* pParent /*=NULL*/) : CDialog(CGeneradorPPMDlg::IDD, pParent) Memoria. Anexo III Programa Configurador para PC { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CGeneradorPPMDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGeneradorPPMDlg) DDX_Control(pDX, IDC_DEBUG, m_Debug); DDX_Check(pDX, IDC_INVERTIR, m_bInvertir); DDX_Radio(pDX, IDC_COM1, m_iCom); DDX_Radio(pDX, IDC_FREC5, m_iFrec); DDX_Radio(pDX, IDC_AMPLI1, m_iAmpli); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGeneradorPPMDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_ENVIAR, OnBnClickedEnviar) ON_BN_CLICKED(IDC_CERRAR, OnBnClickedCerrar) ON_BN_CLICKED(IDC_ACERCADE, OnBnClickedAcercade) ON_BN_CLICKED(IDC_INVERTIR, OnBnClickedInvertir) END_MESSAGE_MAP() // Controladores de mensaje de CGeneradorPPMDlg BOOL CGeneradorPPMDlg::OnInitDialog() { CDialog::OnInitDialog(); // Agregar el elemento de menú "Acerca de..." al menú del sistema. // IDM_ABOUTBOX debe estar en el intervalo de comandos del sistema. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Establecer el icono para este cuadro de diálogo. El marco de trabajo realiza esta operación // automáticamente cuando la ventana principal de la aplicación no es un cuadro de diálogo SetIcon(m_hIcon, TRUE); // Establecer icono grande 127 Memoria. Anexo III Programa Configurador para PC SetIcon(m_hIcon, FALSE); pequeño // Establecer icono // TODO: agregar aquí inicialización adicional //Valores iniciales m_iCom=0; m_iFrec=0; m_iAmpli=0; UpdateData(FALSE); return TRUE; foco en un control } // Devuelve TRUE a menos que establezca el void CGeneradorPPMDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // Si agrega un botón Minimizar al cuadro de diálogo, necesitará el siguiente código // para dibujar el icono. Para aplicaciones MFC que utilicen el modelo de documentos y vistas, // esta operación la realiza automáticamente el marco de trabajo. void CGeneradorPPMDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Contexto de dispositivo para dibujo SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Centrar icono en el rectángulo de cliente int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Dibujar el icono dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } 128 Memoria. Anexo III Programa Configurador para PC // El sistema llama a esta función para obtener el cursor que se muestra mientras el usuario arrastra // la ventana minimizada. HCURSOR CGeneradorPPMDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CGeneradorPPMDlg::OnBnClickedEnviar() { // TODO: Add your control notification handler code here //variables generales int iCom=1, iInvertir=0, iFrec=0 , iAmpli=0, error=0; char sInvertir[2], sCom[2], sFrec[3], sAmpli[3], sDebug[70], pcCommPort[5], sConfig[9], sEnviaHola[]="hello_pc", sReciveHola[]="hello_tj", sPidenDatos[]="damedato", sEnviaValida[]="correcto" ,sTodoBien[]="todobien"; //variables de utilizacion del puerto serie HANDLE hCom; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts={0}; char sBuffer[9] = {0}; DWORD dwBytesRead = 0; UpdateData(TRUE); //Actualizamos los valores del diálogo if(m_bInvertir) la casilla invertir iInvertir=1; //miramos a ver si esta seleccionada iCom=m_iCom+1; iFrec=m_iFrec; iAmpli=-(m_iAmpli-10); itoa(iInvertir,sInvertir,10); //para imprimir los int itoa(iCom,sCom,10); itoa(iFrec,sFrec,10); itoa(iAmpli,sAmpli,10); strcpy(sDebug, "Datos: Com= "); strcat(sDebug, sCom); strcat(sDebug, " Frecuencia= "); strcat(sDebug, sFrec); strcat(sDebug, " Amplitud= "); strcat(sDebug, sAmpli); strcat(sDebug, " Invertir= "); strcat(sDebug, sInvertir); m_Debug.AddString(sDebug); //creamos la cadena de configuracion if(iAmpli<10) { strcpy(sConfig, strcat(sConfig, strcat(sConfig, strcat(sConfig, strcat(sConfig, "F0"); sFrec); "A0"); sAmpli); "I"); 129 Memoria. Anexo III Programa Configurador para PC strcat(sConfig, sInvertir); m_Debug.AddString(sConfig); } else { strcpy(sConfig, "F0"); strcat(sConfig, sFrec); strcat(sConfig, "A"); strcat(sConfig, sAmpli); strcat(sConfig, "I"); strcat(sConfig, sInvertir); m_Debug.AddString(sConfig); } strcpy(pcCommPort, "COM"); strcat(pcCommPort, sCom); //abrimos el com para nuestro uso hCom = CreateFile( pcCommPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); // comprobamos que se ha abierto if(hCom==INVALID_HANDLE_VALUE) { if(GetLastError()==ERROR_FILE_NOT_FOUND) m_Debug.AddString("ERROR: El puerto no existe"); m_Debug.AddString("ERROR: Error abriendo el puerto"); } //configuramos el puerto dcbSerialParams.DCBlength=sizeof(dcbSerialParams); if (!GetCommState(hCom, &dcbSerialParams)) { m_Debug.AddString("ERROR: Error obteniendo el estado del puerto"); } dcbSerialParams.BaudRate=CBR_38400; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; if(!SetCommState(hCom, &dcbSerialParams)) { m_Debug.AddString("ERROR: Error estableciendo el estado del puerto"); } //Configuramos los tiempos de error del puerto timeouts.ReadIntervalTimeout=50; timeouts.ReadTotalTimeoutConstant=50; timeouts.ReadTotalTimeoutMultiplier=10; 130 Memoria. Anexo III Programa Configurador para PC timeouts.WriteTotalTimeoutConstant=50; timeouts.WriteTotalTimeoutMultiplier=10; if(!SetCommTimeouts(hCom, &timeouts)) { m_Debug.AddString("ERROR: Error configurando los tiempos del puerto"); } if(!error) { //iniciamos la conexion con la tarjeta if(!WriteFile(hCom, sEnviaHola, 8, &dwBytesRead, NULL)) { m_Debug.AddString("ERROR: Error iniciando comunicacion"); error=1; } if(!ReadFile(hCom, sBuffer, 8, &dwBytesRead, NULL) && (error==0)) { m_Debug.AddString("ERROR: Error recibiendo datos"); error=1; } //m_Debug.AddString(sBuffer); if((strcmp(sReciveHola,sBuffer)!=0) && (error==0)) error=1; if((!ReadFile(hCom, sBuffer, 8, &dwBytesRead, NULL)) && (error==0)) { m_Debug.AddString("ERROR: Error recibiendo datos"); error=1; } //m_Debug.AddString(sBuffer); if((strcmp(sPidenDatos,sBuffer)==0) && (error==0)) if(!WriteFile(hCom, sConfig, 8, &dwBytesRead, NULL)) { m_Debug.AddString("ERROR: Error enviando datos"); error=1; } if((!ReadFile(hCom, sBuffer, 8, &dwBytesRead, NULL)) && (error==0)) { m_Debug.AddString("ERROR: Error recibiendo datos"); error=1; 131 Memoria. Anexo III Programa Configurador para PC } //m_Debug.AddString(sBuffer); if((strcmp(sConfig,sBuffer)==0) && (error==0)) if(!WriteFile(hCom, sEnviaValida, 8, &dwBytesRead, NULL)) { m_Debug.AddString("ERROR: Error enviando datos"); error=1; } if((!ReadFile(hCom, sTodoBien, 8, &dwBytesRead, NULL)) && (error==0)) { m_Debug.AddString("ERROR: Error recibiendo datos"); error=1; } } if(!error) m_Debug.AddString("Datos del Test enviados"); //Avisamos del envío de los datos del test else m_Debug.AddString("ERROR: Datos del Test NO enviados"); //Avisamos del fallo en el envío de los datos del test CloseHandle(hCom); } void CGeneradorPPMDlg::OnBnClickedCerrar() { // TODO: Add your control notification handler code here OnCancel(); //Cerramos el programa } void CGeneradorPPMDlg::OnBnClickedAcercade() { // TODO: Add your control notification handler code here CDialog aboutDlg(IDD_ABOUTBOX); //Mostramos la ventana de ayuda aboutDlg.DoModal(); } void CGeneradorPPMDlg::OnBnClickedInvertir() { // TODO: Add your control notification handler code here } 132 Memoria. Anexo III Programa Configurador para PC 133 Nombre del archivo: Generado PPMDlg.h // Generador PPMDlg.h: archivo de encabezado // #pragma once // Cuadro de diálogo de CGeneradorPPMDlg class CGeneradorPPMDlg : public CDialog { // Construcción public: CGeneradorPPMDlg(CWnd* pParent = NULL); estándar // Constructor // Datos del cuadro de diálogo enum { IDD = IDD_GENERADORPPM_DIALOG }; //{{AFX_DATA(CGeneradorPPMDlg) CListBox m_Debug; BOOL m_bInvertir; int m_iCom; int m_iFrec; int m_iAmpli; //}}AFX_DATA protected: virtual void DoDataExchange(CDataExchange* pDX); Compatibilidad con DDX/DDV // Implementación protected: HICON m_hIcon; // Funciones de asignación de mensajes generadas virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedEnviar(); afx_msg void OnBnClickedCerrar(); afx_msg void OnBnClickedAcercade(); afx_msg void OnBnClickedInvertir(); }; int abrepuerto(char *pcCommPort); // Memoria. Apéndice IV Programas Análisis de Datos APÉNDICE IV PROGRAMAS ANÁLISIS DE DATOS Nombre del archivo: imu2d.m %Este programa separa los datos de la IMU (hexadecimal) %en varios ficheros (ppm, adcx ) transformandolos a decimal. %abrimos los archivos que necesitamos pf_vuelo = fopen(file_name, 'r') pf_ppm = fopen('ppm.txt', 'w') pf_adc = fopen('adc.txt', 'w') %para separar los canales pf_adc1 = fopen('adc1.txt', 'w') pf_adc2 = fopen('adc2.txt', 'w') pf_adc3 = fopen('adc3.txt', 'w') pf_adc4 = fopen('adc4.txt', 'w') pf_adc5 = fopen('adc5.txt', 'w') pf_adc6 = fopen('adc6.txt', 'w') pf_adc7 = fopen('adc7.txt', 'w') pf_adc8 = fopen('adc8.txt', 'w') pf_msg = fopen('mensajes.txt', 'w') %almaceno la hora de inicio del tratamiento de datos vector_FechaHora_ComienzoEjecucion = clock 134 Memoria. Apéndice IV Programas Análisis de Datos 135 i=1 while ~feof(pf_vuelo) cad_lect = textscan(pf_vuelo, '%s',1, 'delimiter', ',') if strcmp(cad_lect{:} , '$GPADC') last = 'adc' %fprintf(pf_adc,'$GPADC ') cad_lect = fscanf(pf_vuelo,'%c',1) %quito la primera coma antes del textscan cad_lect='' for i = 1 : 8 cad_lect = textscan(pf_vuelo, '%s ',1, 'delimiter', ',') cad_lect{:} dec = hex2dec(cad_lect{:}) fprintf(pf_adc,'%d ',dec) el canaly en el que contiene a todos los canales if i == 1 fprintf(pf_adc1,'%d\n',dec) end if i == 2 fprintf(pf_adc2,'%d\n',dec) end if i == 3 %escribo en cada archivo según Memoria. Apéndice IV Programas Análisis de Datos fprintf(pf_adc3,'%d\n',dec) end if i == 4 fprintf(pf_adc4,'%d\n',dec) end if i == 5 fprintf(pf_adc5,'%d\n',dec) end if i == 6 fprintf(pf_adc6,'%d\n',dec) end if i == 7 fprintf(pf_adc7,'%d\n',dec) end if i == 8 fprintf(pf_adc8,'%d\n',dec) end i = i + 1 end elseif strcmp(cad_lect{:} , '$GPPPM') last = 'ppm' %fprintf(pf_ppm,'$GPPPM ') 136 Memoria. Apéndice IV Programas Análisis de Datos 137 for i = 1 : 6 cad_lect = textscan(pf_vuelo, '%s ',1, 'delimiter', ',') cad_lect{:} dec = hex2dec(cad_lect{:}) fprintf(pf_ppm,'%d ',dec) %escribo en archivo ppm i = i + 1 end else fprintf(pf_msg,'ERROR_INV_CAD : Cadena distinta de $GPADC o $GPPPM en linea %d\n',linea) fgets(pf_vuelo) %quito el resto de la linea end i=1 if last == 'adc' fprintf(pf_adc,'\n' ) elseif last == 'ppm' fprintf(pf_ppm,'\n' ) end end %calcualmos el tiempo de ejecucion vector_FechaHora_FinalEjecucion = clock vector_FechaHora_TiempoEjecucion vector_FechaHora_ComienzoEjecucion = vector_FechaHora_FinalEjecucion - Memoria. Apéndice IV Programas Análisis de Datos fprintf(pf_msg,'El tiempo de ejecución ha sido 138 de: %d Horas %d Min %d Secs',vector_FechaHora_TiempoEjecucion(4),vector_FechaHora_TiempoEjecucion(5),vect or_FechaHora_TiempoEjecucion(6)) %cerramos los archivos creados fclose(pf_msg) fclose(pf_ppm) fclose(pf_adc) fclose(pf_adc1) fclose(pf_adc2) fclose(pf_adc3) fclose(pf_adc4) fclose(pf_adc5) fclose(pf_adc6) fclose(pf_adc7) fclose(pf_adc8) fclose(pf_vuelo) %cargamos los archivos para que aparezcan como variables en el workspace load 'adc.txt' load 'adc1.txt' load 'adc2.txt' load 'adc3.txt' load 'adc4.txt' load 'adc5.txt' load 'adc6.txt' load 'adc7.txt' load 'adc8.txt' Memoria. Apéndice IV Programas Análisis de Datos Nombre del archivo: media_movil.m %media_movil: Aplica un algoritmo de media movil a los datos procedentes %del archivo file_name. %abrimos los archivos necesarios pf_acel = fopen(file_name, 'r') pf_media = fopen('resultado.txt', 'w') %anotamos comienzo tratamiento de datos vector_FechaHora_ComienzoEjecucion = clock %variables necesarias acel = 0 acel_ant1 = 0 acel_ant2 = 0 acel_ant3 = 0 acel_ant4 = 0 acel_ant5 = 0 while ~feof(pf_acel) %leo el dato de aceleración y lo transformo a numérico acel = fgets(pf_acel) acel = str2num(acel) %media móvil acel = (acel + acel_ant1 + acel_ant2 + acel_ant3 + acel_ant4 + acel_ant5 )/6 %almaceno el valor en archivo 139 Memoria. Apéndice IV Programas Análisis de Datos 140 fprintf(pf_media,'%d\n',acel) %almaceno el estados "anteriores" acel_ant1 = acel acel_ant2 = acel_ant1 acel_ant3 = acel_ant2 acel_ant4 = acel_ant3 acel_ant5 = acel_ant4 end %calculo el tiempo total de proceso vector_FechaHora_FinalEjecucion = clock vector_FechaHora_TiempoEjecucion = vector_FechaHora_FinalEjecucion vector_FechaHora_ComienzoEjecucion %cierro los archivos fclose(pf_media) fclose(pf_acel) %%Carga los datos y los muestrao figure grafico_a = load(file_name) plot (grafico_a, 'DisplayName', 'original', 'YDataSource', 'grafico') figure(gcf) figure grafico_media = load('resultado.txt') - Memoria. Apéndice IV Programas Análisis de Datos plot (grafico_media, 'DisplayName', 'resultado', 'YDataSource', 'grafico') figure(gcf) 141 Memoria. Apéndice IV Programas Análisis de Datos Nombre del archivo: fourier.m figure Y = fft(adc6); N = length(Y); Y(1) = []; power = abs(Y(1:N/2)).^2; nyquist = 1/2; freq = (1:N/2)/(N/2)*nyquist; plot(freq,power), grid on xlabel('frec') title('análisis de fourier') 142 Estudio económico. Apéndice IV Programas Análisis de Datos Parte II ESTUDIO ECONÓMICO 143 Estudio económico. Evaluación de costes 144 Capítulo 1 EVALUACIÓN DE COSTES Para el cálculo del sueldo del ingeniero y del coste de luz se han utilizado los datos mostrados en la Tabla 5. Horas laborales año Horas proyecto Sueldo Ingeniero Número de ingenieros Cosumo medio Precio KWh Precio ordenador 1800 700 23000 1 0,6 0,06 1479 horas/año horas/ingeniero €/año KW €/KWh € Tabla 5 - Datos estimados de duración y coste En la Tabla 6 se desglosa la relación de costes en que se ha incurrido durante la realización de este proyecto. En ella figuran tanto los costes de materiales y equipos, como los de recursos de software y de personal. Estudio económico. Evaluación de costes 145 Construcción de prototipos Módulo Senoidal Fabricación placas 30,0 Componentes varios 25,0 Tren aterrizaje 110,0 Sueldo Ingeniero 8944,4 Consumo eléctrico Ordenador 25,2 1479,0 Licencias software Code Vision Eagle v4.11 Standart AVR Studio 4 AVR Dude Kargador Visual Studio.NET MatLab (HP-InfoTech) (CadSoft) (ATMEL) (Microsoft) (MathWorks) 150,0 798,0 0,0 0,0 0,0 799,0 2110,0 672,5 Sistema de medida inercial y adquisición de datos Recursos Aeromodelísticos Venture 30 4 Servos JR 539 Giroscopo JR 460T+Servo 810G Receptor JR R700 Xtal 35.290 Baterias Ni-Cd Sanyo 2400mAh 299,0 72,0 200,0 48,0 9,8 31,0 AirSkiper 50 Palas Fibra SAB 550mm Giroscopo JR 490T Servo 8700G Emisora PCM 9X + 4 Servos 811+Receptor R900S Baterias Ni-Cd Sanyo 2400mAh Gobernor Throttle Jockey Pro Varios 525,0 45,0 165,0 135,0 725,0 31,0 80,0 200,0 Combustible 100,0 TOTAL Tabla 6 - Desglose de los costes del proyecto 17808,9