Memoria. Prólogo 1 Parte I Memoria

Anuncio
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
Descargar