Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EDUCACIÓN A DISTANCIA
Ingeniería Industrial
PROYECTO
Fin de Carrera
Noviembre 2014
Ingeniería Industrial
PROYECTO
Fin de Carrera
TÍTULO SISTEMA DE ASISTENCIA AL PILOTO EN
ATERRIZAJES DE HELICÓPTEROS EN CONDICIONES DE BROWN-
OUT (BHLAS).
AUTOR
DIRECTOR
CODIRECTOR
PONENTE
AUTOR
DIRECTOR
CODIRECTOR
PONENTE
TRIBUNAL CALIFICADOR
PRESIDENTE: _________________________________________________________
_________________________________________________________
VOCAL _________________________________________________________
_________________________________________________________
SECRETARIO _________________________________________________________
_________________________________________________________
CALIFICACIÓN _________________________________________________________
CÓDIGOS UNESCO
ÍNDICE
CAPÍTULO 1. INTRODUCCIÓN...................................................................................... 1
1.1 Objetivos del proyecto ............................................................................................ 1
1.2 Motivación personal ............................................................................................... 1
1.3 Resumen ................................................................................................................ 2
iii
CAPÍTULO 4. HARDWARE........................................................................................... 54
4.1 Estructura Física ................................................................................................... 54
4.2 Placa Arduino ATmega.......................................................................................... 54
4.3 Sensores Arduino .................................................................................................. 58
4.4 IMU (Inertial Measurement Unit) ........................................................................... 62
4.5 Sistemas de representación en cabina.................................................................. 65
4.6 Simbología ............................................................................................................ 68
iv
BIBLIOGRAFÍA ..................................................................................................................... 101
v
LISTA DE SÍMBOLOS
vi
RAF Royal Air Force
SA Situational Awareness
SAR Search and Rescue
SWORD Surveilllance, Wraning, Obstacle Rating and Displays
TAR Terrain Avoidance Radar
TSAS Tactile Situational Awareness Systems
TFR Terrain Following Radar
UNMIS United Nations Mission in Sudan.
UNED Universidad Nacional de Educación a Distancia
US United States
vii
CAPÍTULO 1. INTRODUCCIÓN
El desarrollo del sistema BHLAS (Brown-out Landing Aid System) pretende diseñar un
interface que facilite al piloto de helicópteros el aterrizaje, en una zona no preparada,
cuando debido a la naturaleza del terreno o las condiciones meteorológicas, este pierda
las referencias visuales de dicha zona de toma.
“Helicopter Brownout is a $100 Million per year problem for the U.S. Military in
Afghanistan and Iraq, the Army cites brownout in three out of every four helicopters
accidents there”.
1
La frase anterior, podría valer por sí sola como motivación a la hora de decidir el tema
de un proyecto de fin de carrera (PFC), además de tratar de encontrar una solución
tecnológica a un problema que no solo se mide en millones de dólares, sino en
pérdidas de vidas, y que el autor lo ha sufrido en varias ocasiones durante las distintas
misiones que participó en Afganistán dentro de la misión de ISAF1 desde abril de 2005
hasta febrero de 2012.
1.3 Resumen
1
International Security Assistance Force, Fuerza Internacional de Asistencia para la Seguridad en Afganistán,
activada en diciembre de 2001(Resolución ONU 1386) y liderada por la OTAN desde el año 2003.
2
Laser Detection and Ranging, sistema que proporciona una imagen 3D basándose en la emisión y recepción de
energía electromagnética en la frecuencia de trabajo del láser.
3
Helicopter Autonomous Landing System, Sistema en desarrollado por la empresa SNC Sierra Nevada Corporation
que proporciona una imagen sintética en 3D de la zona de aterrizaje.
4
Brownout Landing Aid System Technology, Sistema desarrollado por la empresa BAE System usa un sensor radar
de 94 GHz.
2
La filosofía del sistema consiste en proporcionar e integrar en un solo interfaz la
información anteriormente descrita, en un primer paso mediante un prototipo basado en
tecnología Arduino y posteriormente poder extrapolar el diseño a un helicóptero real, en
nuestro caso el AS332 SuperPuma.
2.1 Brownout/Whiteout
5
Naval Aerosol Analysis Prediction System, desarrollado por el US Navy Research Laboratory, Monterrey.
3
Figura 2.1 UH-60 “BlackHawk” aterrizando en condiciones brownout (California).
4
La definición adoptada por la NASA 6 es la siguiente:
5
Desde 1991, se han confirmado más de 280 casos de daños de la aeronave y/o
lesiones, y aunque la mayoría de los incidentes se producen durante los aterrizajes,
también ha habido un número significativo de incidentes que ocurren en los despegues.
Durante las operaciones del Ejército de los EEUU en el periodo 2001-2007,
aproximadamente el 85% se produjeron en los aterrizajes y un 15% durante los
despegues.
La OTAN (Organización del Tratado del Atlántico Norte), en uno de sus estudios
proporciona los siguientes datos:
- El departamento de defensa de los EEUU (DoD) informa que ha tenido cerca de
350 accidentes con daños o aparatos siniestrados durante el periodo 1985-2005.
Un 65% de los cuales debidos a degradación visual en operaciones de
despegue y aterrizaje.
- El Reino Unido declara 24 accidentes entre el periodo 2005-2009, de los cuales
el 70% fue debido a desorientación espacial en la toma.
- Francia ha sufrido 8 accidentes relacionados con el brownout en los últimos 15
años durante sus operaciones en África.
- Alemania ha tenido cerca de 30 accidentes provocados por brownout o whiteout
desde el año 1973.
- España perdió dos aparatos (2007 y 2012) debido a dicho fenómeno durante
aterrizajes nocturnos en misiones reales en la misión de ISAF (Afganistán). (Ver
figura 2.3 y 2.4).
6
Figura 2.4 Helicóptero SuperPuma HD21-06, SEPTIEMBRE 2007 Afganistán.
Los accidentes se producen cerca del suelo y a baja velocidad, por ello la
supervivencia de las tripulaciones es mayor que en otros tipos de accidentes. Sin
embargo, ha habido accidentes provocados por brownout con víctimas en misiones en
Irak y Afganistán, en casi todos los casos se podían haber prevenido con la
implementación de un sistema de asistencia a la tripulación en condiciones degradadas
de visibilidad.
Si nos centramos en los datos según el tipo de aeronave:
Cuatro helicópteros de ataque tipo AH-64D 8 sufrieron daños mayores debido a
accidentes en las tres primeras semanas de la invasión de Irak en 2003, mientras que
sólo uno se perdió en combate en el mismo período de tiempo. Estos accidentes se
produjeron por la suma de una mala elección de las zonas de aterrizaje y la falta de
entrenamiento de sus tripulaciones.
El modelo CH-47 9 ha tenido relativamente una alta frecuencia de accidentes
provocados por el fenómeno brownout. A partir de 2001, nueve helicópteros Chinook se
perdieron en combate en Afganistán, y al menos tres aparatos tuvieron como causa
contribuyente dicho fenómeno.
8
Helicóptero de ataque “Apache” desarrollado principalmente por la empresa Boeing, cuenta con dos motores y
con rotores principal y de cola de cuatro palas, la cabina en tándem para dos tripulantes.
9
Helicóptero de transporte “Chinook” desarrollado en los años 1960 por Boeing, bimotor con rotores en tándem.
7
El modelo V-22 10 es una aeronave denominada “Tilt rotor o de rotores basculantes”, se
desplegó para el combate en Irak en septiembre de 2007. La alta carga de disco crea
una corriente descendente de alta velocidad, lo que hace subir la nube de polvo a partir
de una altura mucho mayor que un helicóptero convencional, acentuando la posibilidad
de provocar un accidente. Dicho modelo, desde sus primeros vuelos de prueba en el
año 1989, ha tenido al menos un accidente relacionado con el fenómeno brownout
(Afganistán, 8 de abril de 2010).
Relación entre el peso del total helicóptero y el área del rotor principal. En
helicópteros más pesados, se necesita una mayor área del disco del rotor
principal, esto provoca una recirculación del aire mayor y por tanto incrementa la
degradación visual.
Dependerá del número de palas por rotor, velocidad nominal de giro del rotor,
forma de las puntas de pala, torsión geométrica de la pala etc…todos estos
aspectos influyen en incrementar o reducir el efecto del brownout.
10
“Osprey” desarrollado por Bell Helicopter y Boeing Rotorgraft System, es una aeronave polivalente catalogada
como convertiplano de rotores basculantes. Actualmente operada por los US Marines y la USAF.
8
por deflexión elástica de estos elementos, estos suelen disponer de elementos
que permitan acoplar ruedas para su movimiento en tierra.
Dentro de este tipo (ruedas) debemos diferenciar el tren tipo triciclo con dos
ruedas principales y una de tren de morro y el tren con rueda en el patín de cola
donde el helicóptero cuenta con dos ruedas ubicadas en la parte frontal y una en
la parte posterior.
La experiencia y el tipo de aterrizaje en condiciones de brownout nos dice que
el idóneo es el de tipo de ruedas en el patín de cola (por ejemplo el modelo UH-
60 “Black Hawk”).
Dado que los materiales usados en las zonas de aterrizaje pueden ser desde
cemento/asfalto a zonas no preparadas, donde no existe ningún material ni
infraestructura diseñada por el hombre, en el caso de estas últimas, su
comportamiento dependerá del clima, características de la roca madre, del tipo
de organismos que se desarrollan en ella o del tiempo transcurrido desde que
comenzó su proceso de formación.
Las superficies se pueden clasificar según el tamaño de las partículas minerales
que las componen, arena muy gruesa >2 mm, arena gruesa 1-0,5 mm, arena
fina 0,25-0,10 mm, limo 0,05-0,02 mm o arcilla, siendo estas últimas las más
problemáticas.
La inclinación del terreno es un factor muy importante a la hora del estudio los
accidentes, no solo relacionados con el brownout sino a otros accidentes
debidos al denominado Vuelco Lateral Estático (Static rollover). Normalmente la
más restrictiva es la inclinación lateral, ya que un vuelco en el eje longitudinal del
helicóptero es muy extraño que se produzca.
Como referencia la OACI 11 define, para la aviación general, las helisuperficies
con unos límites de pendiente de 0.5% longitudinal y 2% transversal, además se
debe tener en cuenta que cada modelo de helicóptero tiene unos límites en el
eje transversal y longitudinal de toma/parada de rotores en pendiente.
11
Organización de Aviación Civil Internacional (ICAO en inglés).
9
• Viento y condiciones meteorológicas en la zona.
• Tomas nocturnas.
El vuelo nocturno, ya de por sí, es mucho más exigente que el diurno. En el caso
del vuelo con NVD 12 se complica debido al reducido campo de visión y la falta de
referencias en comparación con el vuelo diurno. Según las estadísticas, la gran
mayoría de los accidentes por brownout se produjeron en ambiente nocturno, ya
que a la degradación de la visión exterior debido al polvo en suspensión hay que
sumarle la pérdida de referencias exteriores intrínsecas al vuelo nocturno.
12
Night Vision Devices, por ejemplo NVG (Night Vision Goggles) Gafas de visión nocturna.
10
2.3.2 Fenómenos modificables
Respecto a los factores modificables que incrementan la probabilidad de
accidente debido al fenómeno de brownout, se pueden citar los siguientes:
11
2.3.2.3 Desplazamientos laterales en el momento de la toma
12
2.4 Situación actual.
Hoy en día existen helicópteros de nueva generación que cuentan con dispositivos
implementados como representaciones sintéticas en 2 y 3D o sistemas de aterrizaje
autónomos basados en pilotos automáticos integrales.
El problema está en conseguir algún sistema no excesivamente complejo y con unos
costes reducidos que se pueda implementar en helicópteros que cuenten con una vida
operativa hasta el año 2025/30.
Hoy en día los helicópteros que opera el Ministerio de Defensa y que pueden sufrir el
fenómeno de brownout se pueden reducir a los modelos que opera el Ejército del Aire,
Ejército de Tierra y la Armada cuando se encuentran desplegados en misiones en el
extranjero.
En España es complicado encontrar zonas en las que dicho fenómeno sea realmente
significativo, en la mayoría de los casos una vez en estacionario el flujo que produce el
rotor principal barre la zona de toma, únicamente en zonas de montaña con mucha
cantidad de nieve en polvo o en zonas de playa podría producirse una degradación
visual equiparable a la que se producen en zonas desérticas de regiones en América,
Asia o África.
En misiones en el extranjero en países como Irak, Afganistán (ISAF) o Djibuti (Atalanta)
pueden producirse accidentes de helicópteros debido al fenómeno brownout.
Actualmente los modelos que operan las Fuerzas Armadas no cuentan con ningún
sistema de ayuda en caso de degradación visual ya que la mayoría de ellos a
excepción del EC-665 Tigre y del EC-135 tienen más de 25 años de vida operativa.
Los modelos citados susceptibles de poder implementarse el sistema BHLAS son:
13
AS330 Puma
Utilizado por el Ejército del Aire para misiones SAR (Search and Rescue), basados en
la Base Aérea de Son San Juan (Islas Baleares).
Helicóptero de transporte medio, bimotor, rotor principal de cuatro palas para usos
civiles o militares. Fue diseñado en los años 1960 y fabricado originalmente por la
compañía francesa Aérospatiale en los años 1970.
CARACTERISTICAS:
Peso máximo al despegue 7400 Kg
Velocidad 130 Knots
Diámetro rotor principal 15 m
Alcance 550 Km
14
AS332 SuperPuma
Utilizado por el Ejército del Aire para misiones PR (Personnel Recovery), MEDEVAC
(Aero Evacuaciones Médicas) y Operaciones Aéreas Especiales (SAO) basados en la
Base Aérea de Cuatro Vientos (Madrid).
Helicóptero de tamaño medio, bimotor, con rotor principal de cuatro palas, diseñado a
partir del SA 330 Puma. Originalmente fue fabricado por la compañía francesa
Aérospatiale y después por el Grupo EADS Eurocopter, tras la integración de
Aérospatiale en el grupo europeo. Realizó su primer vuelo en septiembre de 1978.
CARACTERISTICAS:
Peso máximo al despegue 8350 Kg
Velocidad 130 Knots
Diámetro rotor principal 15 m
Alcance 730 Km
15
Sikorsky S-76
Helicóptero multipropósito de tamaño medio, diseñado por la Sikorsky Aircraft
Corporation. El S-76 dispone de dos motores, tiene el rotor principal así como el rotor
de cola de cuatro palas, cuenta con un tren de aterrizaje retráctil.
Utilizado por el Ejército del Aire para enseñanza desde el año 1991 con Base en
Armilla (Granada).
CARACTERISTICAS:
Peso máximo al despegue 5300 Kg
Velocidad 155 Knots
Diámetro rotor principal 13.4m
Alcance 480 Km
16
EC120 Colibri
Helicóptero ligero monomotor de cinco plazas, diseñado y desarrollado por la compañía
Eurocopter en la fábrica de Marignane de Eurocopter Francia. El Ejército del Aire lo
utiliza para funciones de enseñanza desde el año 2000 desde la Base Aérea de Armilla
(Granada).
CARACTERISTICAS:
Peso máximo al despegue 1570 Kg
Velocidad 120 Knots
Diámetro rotor principal 10m
Alcance 400 Km
17
AS532 Cougar
Helicóptero polivalente bimotor de tamaño medio fabricado por el Grupo Eurocopter. El
AS 532 Cougar es la continuación del desarrollo y actualización tanto del AS330 Puma
como del AS332 SuperPuma.
El Ejército de Tierra lo utiliza como helicóptero multirol. Base de Agoncillo (Logroño).
Figura 2.12 AS530 Cougar (Fuerzas Aeromóviles del Ejército de Tierra FAMET).
CARACTERISTICAS:
Peso máximo al despegue 9000 Kg
Velocidad 130 Knots
Diámetro rotor principal 15m
Alcance 750 Km
18
CH-47 Chinook
Helicóptero de transporte de carga pesada, bimotor con rotores en tándem de origen
estadounidense. Fue diseñado y producido inicialmente por Boeing a principios de los
años 1960,
El Ejército de Tierra lo utiliza como helicóptero de transporte. Base de Colmenar Viejo
(Madrid).
CARACTERISTICAS:
Peso máximo al despegue 22000 Kg
Velocidad 165 Knots
Diámetro rotor principal 18.3m
Alcance 750 Km
19
SH-3 SeaKing
Helicóptero bimotor polivalente, aunque destinado principalmente a la guerra
antisubmarina, fabricado por la compañía estadounidense Sikorsky Aircraft. Ha estado
en servicio con la Armada de los Estados Unidos y en otras fuerzas desde principios de
los años 1960.
Operado por la Amada Española como helicóptero multirol. Base Aeronaval de Rota
(Cádiz).
CARACTERISTICAS:
Peso máximo al despegue 10000 Kg
Velocidad 130 Knots
Diámetro rotor principal 16.3m
Alcance 780 Km
20
SH-60 Seahawk
Helicóptero naval polivalente con dos motores de turbina y para múltiples misiones,
desarrollado durante los años 1980 por Sikorsky Aircraft Corporation para la Armada de
Estados Unidos basándose en la estructura del Sikorsky UH-60 Black Hawk.
Operado por la Armada Española, Base Aeronaval de Rota (Cádiz).
CARACTERISTICAS:
Peso máximo al despegue 9500 Kg
Velocidad 165 Knots
Diámetro rotor principal 16.3m
Alcance 810 Km
21
Agusta Bell 212.
Helicóptero de transporte medio, bimotor y con rotor principal de dos palas, derivado
del Bell 204/205, para ser empleado en actividades civiles y militares. El Bell 212 se
fabricó en las instalaciones de la compañía estadounidense Bell Helicopter en Fort
Worth, Texas. El modelo Bell 212 se produjo bajo licencia en Italia, por la compañía
Agusta, siendo conocidos estos como Agusta-Bell AB.212
Operado por la Armada Española, Base Aeronaval de Rota (Cádiz).
CARACTERISTICAS:
Peso máximo al despegue 5000 Kg
Velocidad 120 Knots
Diámetro rotor principal 14.6m
Alcance 410 Km
22
2.5 Análisis de posibles soluciones
13
Situational Awareness. El término Conciencia Situacional es una representación mental y comprensión del
entorno que nos rodea, interaciones, condiciones ambientales y cualquier otro factor que pueda afectarnos.también
se refiere a mantener la vigilancia sobre la información importante.
14
En inglés, patín del tren de aterrizaje del helicóptero.
23
• Pendiente fuera de límites.
La toma en zonas con pendientes fuera de los límites del modelo de helicóptero
puede producir el denominado “Static Rollover”, este se produce cuando el
centro de gravedad de la aeronave sale fuera de la línea que une los extremos
del tren principal.
15
Helicopter Landing Zone o LZ (Landing Zones). Término frecuentemente utilizado por la OTAN para denominar
las zonas no preparadas de aterrizaje de helicópteros en misiones.
24
ii. Estacionario alto y descenso vertical (High Hover-Vertical
Descent), se realiza un estacionario a más de 100 ft y
posteriormente un descenso con una senda muy pronunciada.
Recomendable en zonas con pendiente, superficie blandas y
tamaño reducido. Produce una ligera recirculación del polvo a partir
de 40-30ft, es preferiblemente que la aproximación esté apoyada
con automatismos.
El sistema SWORD, usa un radar láser activo que cuenta con la capacidad de
detectar obstáculos como cables de tensión a una distancia de 1800 metros.
También realiza un barrido alrededor de la aeronave cada 8 segundos y alerta
de la presencia de obstáculos que pudieran ser un peligro para la aeronave.
El pasado mes de mayo de 2014 esta empresa ganó un concurso con el DoD de
los EEUU de un valor de 11.6 millones de dólares para mejorar las capacidades
del modelo AH-1W SuperCobra con un HDTS (Helmet Display Tracker System)
el cual incrementa la seguridad de vuelo ya que proporciona información,
aumentando la conciencia situacional (SA) incluso en ambientes de visibilidad
degradada como brownout, niebla, o condiciones meteorológicas adversas.
Dicho contrato debe desarrollarse y estar concluido en un plazo máximo de dos
años.
El diseño de las palas del rotor principal del EH 101 corresponde al programa
BERP 17, “programa experimental de rotor británico”. Las primeras palas de este
tipo fueron desarrolladas a mediados de la de 1980 a través de un desarrollo
16
Surveilllance, Wraning, Obstacle Rating and Displays.
17
British Experimental Rotor Programme.
25
conjunto entre el fabricante inglés Westland Aircraft y la Real Fuerza Aérea,
RAF 18). La meta buscada era incrementar la capacidad de elevación de los
helicópteros, así como sus velocidades máximas, al usar nuevos materiales y,
sobre todo, un nuevo diseño revolucionario en los extremos de las palas del
rotor principal. Este diseño permite aumentar la velocidad de vuelo de la
aeronave ya que retrasa la entrada en régimen supersónico del extremo las
palas que avanzan, que son las que mayor velocidad relativa tienen.
Durante los ensayos se observó que el citado diseño, en vuelo estacionario
produce un “donut” alrededor del rotor principal que permite alejar la nube de
polvo del fuselaje de la aeronave.
18
Royal Air Force.
26
Como resumen, podemos afirmar que aunque una solución parcial es el incremento del
entrenamiento de las tripulaciones en situaciones parecidas, tanto en vuelos reales
como en simuladores, está claro que la fusión de este entrenamiento con la tecnología
podría reducir considerablemente el número de accidentes
Debido a que la mayor parte de los accidentes ocurren debido a una o la suma de los
siguientes efectos; desplazamientos laterales inadvertidos, error en la actitud de la
aeronave, inclinación excesiva del terreno etc… necesitamos una serie de elementos
para poder obtener la información requerida cuando no se disponga de referencias
visuales externas, el sistema BHLAS proporcionará una representación simple de los
datos necesarios para un aterrizaje controlado.
La intención del sistema es presentar solo la mínima información, evitando la
saturación de datos innecesarios. Al igual que en una aproximación en condiciones
instrumentales de precisión (ILS- Instrumental Landing System) el piloto, con la técnica
de comprobación cruzada, es capaz de mantener no más de 4 parámetros (actitud de
la aeronave, rumbo/localizador, régimen de descenso/senda y velocidad), BHLAS solo
representará 5 parámetros (actitud de la aeronave, desplazamientos laterales,
velocidad de descenso, rumbo e inclinación del terreno) de los cuales solo 4
parámetros deberán controlarse simultáneamente ya que la inclinación del terreno es
un parámetro limitante que solo deberá tenerse en cuenta al inicio de la maniobra.
El sistema se divide básicamente en una serie de sensores, parte de ellos dispuestos
en una IMU (Inertial Measure Unit), un microcontrolador Arduino y un interfaz/display
donde se representa la información captada por los sensores y transformada
convenientemente.
27
2. Extrapolar el modelo realizado en Arduino a un helicóptero real, en este caso el
AS332 Superpuma.
El prototipo está estructurado según los siguientes módulos, una serie de sensores
integrados o no en una IMU, una unidad de control (una placa con un microcontrolador
Arduino TMega con una serie de pines de entrada/salida) y un interfaz máquina-
hombre (Displays) que en este caso será una pantalla de un PC (Acer TravelMate5720,
pantalla 15.4” WXGA CrystalBrite LCD). (Ver figura 3.1).
SENSORES ULTRASÓNICOS
MICROPROCESADOR
PANTALLA
28
3.2.1 Sensores.
Un sensor es todo dispositivo que, a partir de la energía del medio donde se mide
(temperatura, altitud, inclinación etc…), genera una señal de salida que podemos
interpretar mediante algún parámetro que se modifica en función de la variable medida.
En el prototipo del sistema BHLAS encontramos sensores enfocados a medir la actitud
de la aeronave (giróscopos), velocidad vertical (variómetro/sensores de ultrasonidos),
desplazamientos sobre el plano horizontal (GPS/sensores de ultrasonidos), rumbo de
aproximación (GPS) e inclinación y altura sobre el terreno (sensores de ultrasonidos).
En el sistema implementado en el helicóptero estos cambiaran por sensores propios
del modelo como giróscopos, radioaltímetros etc…
Giróscopos
Un giróscopo es un sólido rígido en rotación alrededor de un eje principal de inercia,
habitualmente se monta sobre unos anillos en suspensión, de esta manera ningún
movimiento que realice el conjunto produce momento externo. Por tanto el momento
angular se conserva y el eje de rotación mantiene una dirección fija en el espacio.
Si bien existen giróscopos que se basan en un elemento mecánico, la realidad es que
la mayoría de los sensores actuales están basados en circuitos integrados construidos
sobre un chip de silicio.
La detección se basa en unas piezas cerámicas en vibración sujetas a una distorsión
que produce el efecto Coriolis (cambios de velocidad angular), como resultado de esta
deformación el giróscopo genera un voltaje de salida que proporciona información
sobre la velocidad angular de rotación, usados en aplicaciones muy críticas como en
aeronáutica.
Existen opciones que son de bajo coste y de tamaño reducido, este nuevo tipo de
giróscopos son fabricados usando tecnología MEMS 19, estos giróscopos utilizan el
efecto Coriolis.
Lo que el giróscopo nos entrega es la medida de la velocidad angular, integrando ese
valor, se obtiene el ángulo de navegación.
19
Sistemas MicroElectroMecánicos, tecnología electromecánica micrométrica en escala nanométrica.
29
Figura 3.2 Giróscopo MEMS.
Acelerómetros
Son sensores inerciales que miden la segunda derivada de la posición, por tanto miden
la fuerza de inercia generada cuando una masa u objeto cambia de velocidad.
Es un dispositivo que mide aceleración, la aceleración que es relativa a la caída libre,
es la misma que experimentan las personas y objetos. Como consecuencia de esto, un
acelerómetro en reposo sobre la superficie de la tierra, leerá aproximadamente 1g en
dirección radial al centro de la tierra. Para encontrar la aceleración debida al
movimiento respecto a la tierra se debe de tener en cuenta el offset de la gravedad.
Conceptualmente un acelerómetro se comporta como una masa amortiguada sobre un
resorte. Cuando experimenta aceleración, la masa es desplazada a un punto el cual el
resorte es capaz de acelerar la masa a la misma velocidad. El desplazamiento que se
mide es proporcional a la aceleración en ese eje de medición.
Los acelerómetros modernos son construidos con tecnología MEMS y de hecho es el
sistema MEMS más sencillo que se puede construir. Bajo la influencia de aceleraciones
externas la masa sísmica se mueve de su posición neutral. La deflexión de la masa es
medida de manera analógica o digital.
Muchos acelerómetros MEMS funcionan solo en su plano de trabajo, esto implica que
hay que orientar el sensor para poder medir el plano deseado. Los MEMS más
modernos integran las mediciones de tres planos en un solo CI (Circuito Integrado). De
esta manera solo se tiene que referenciar la posición del CI para saber que plano es
cada cual.
30
Existen varios tipos de acelerómetros:
• Capacitivos. Se basan en variar la capacidad entre dos o más conductores entre
los cuales existe un dieléctrico.
• Piezoresistivos. Su funcionamiento se basa en la propiedad que tienen las
resistencias eléctricas de variar su valor cuando el material se deforma.
• Piezoeléctricos. Al sufrir una deformación el material cambia su estructura
cristalina y por consiguiente su características eléctricas.
• Mecánicos. Utilizan bobinas, imanes para medir aceleraciones.
• Micromecanizados. Basados en una tecnología que crea dispositivos diminutos,
están formados por una superficie micromecanizada formada por un pequeño
sensor de aceleración en un circuito integrado de silicio.
31
Las más modernas IMU’s son planas, porque los nuevos sensores MEMS no necesitan
estar en el plano que miden.
Los hay de diferentes configuraciones, desde 3 Grados de libertad (DOF) hasta 9 DOF.
El más común es el de 6 DOF que consta tres acelerómetros y tres giróscopos (cada
uno para un eje) lo que hace que se puedan obtener las mediciones exactas de los
ángulos de navegación Pitch (cabeceo) y Roll (alabeo); además de poder tener una
medición no referenciada del ángulo Yaw (guiñada).
Para tener una medición correcta del Yaw se requiere una referencia en el plano
ortogonal al eje Z; lo cual solo lo puede ofrecer un magnetómetro. Este sensor mide la
intensidad del campo magnético en tres ejes ortogonales, dos de estas mediciones se
usan como referencia para corregir la velocidad angular en guiñada del giróscopo.
Estos dispositivos por si solos son relativamente económicos, el más completo (9DOF),
cuesta alrededor de 120 euros; se le conoce como 9DOF porque incluye tres
acelerómetros, tres giróscopos y tres magnetómetros; los últimos como se ha
comentado con anterioridad, para poder tener una referencia con respecto a los polos
magnéticos.
Figura 3.4 Unidad de Medida Inercial (IMU), también con tecnología MEMS.
32
Módulo GPS (Global Position System)
El Sistema de Posicionamiento Global (GPS), permite determinar la posición de un
objeto, vehículo o persona con coordenadas de latitud, longitud y altura.
Es decir que para conocer la posición es necesario de un receptor GPS, que mide la
distancia de cada satélite a la antena del receptor. De esta manera, para reconocer la
distancia los satélites envían ondas de radio y de igual forma, mide el tiempo entre el
momento que sale la señal y el momento en que llega al receptor.
El GPS se creó en el departamento de defensa de Estados Unidos a finales de la
“Guerra Fría” con objetivos militares y su uso pasó a náutica y aviación.
En la actualidad el Sistema de Posicionamiento Global funciona de manera completa,
operativa y es bastante asequible para el mercado que va dirigido.
El funcionamiento del GPS se basa entonces, en el proceso y recepción de los datos
que se emiten a través de NAVSTAR, que es una serie de 24 satélites, que orbitan a
una altura de 20.200 kilómetros aproximadamente por encima de la superficie terrestre.
Los receptores GPS están diseñados de acuerdo al tipo de aplicaciones como:
Geodesia, Topografía, Navegación Marítima, Navegación Aérea, Navegación Terrestre
o Cartografía.
La precisión de los GPS varía desde 100 metros a precisión de metros, esto depende
de la cantidad de satélites que se utilicen para dicha medición.
33
Medidor de distancias (ultrasónicos)
El sensor medidor de distancias ultrasónico usa un sonar para la detección de
obstáculos. Por uno de sus sonares envía la onda sonora en un cono de unos 30º
hacia delante, y por la otra recibe de nuevo la onda sonora, que vuelve tras haber
chocado con el obstáculo.
Tienen un alcance que va desde los 2 cm hasta los 4 m, con una precisión de 3mm. Su
funcionamiento no se ve afectado por la luz ni por ninguna superficie negra.
Aprovechando que la velocidad de dicho ultrasonido en el aire es de valor 344 m/s, o
0,034 cm/microseg. Para calcular la distancia, recordaremos que v=d/t (definición de
velocidad: distancia recorrida en un determinado tiempo). De la fórmula anterior
despejamos d, obteniendo d=v·t, siendo v la constante anteriormente citada y t el valor
devuelto por el sensor a la placa Arduino. Además habrá que dividir el resultado entre 2
dado que el tiempo recibido es el tiempo de ida y vuelta.
Sistema barométrico
El variómetro o indicador de velocidad vertical muestra al piloto dos cosas:
a) Si el helicóptero está ascendiendo, descendiendo, o vuela nivelado.
b) La velocidad vertical o régimen, en pies por minuto (ft/m), del ascenso o descenso.
Este instrumento también se denomina abreviadamente VSI (Vertical Speed Indicator).
34
El principio de funcionamiento de este aparato, similar al del altímetro, está basado en
la contracción/expansión de un diafragma o membrana debido a la diferencia de
presión entre el interior y el exterior de la misma. Aunque este instrumento funciona por
presión diferencial, únicamente necesita recibir la presión estática.
Cuando el helicóptero está en el suelo o en vuelo nivelado, la presión dentro de la
membrana y la existente en la caja son iguales y la aguja debe marcar cero. Pero
cuando la aeronave asciende o desciende, la membrana acusa inmediatamente el
cambio de presión (altura) mientras que en la caja este cambio se produce
gradualmente debido a la toma por el orificio calibrado. Esta diferencia de presión hace
que la membrana se dilate o contraiga, movimiento que a través del sistema de varillas
y engranajes se transmite a la aguja indicadora.
35
Figura 3.8 Placa Arduino.
20
Above Ground Level. Acrónimo del inglés, traducido como sobre el nivel del suelo, término utilizado en
aeronáutica para referirse a la altura real de la aeronave sobre el suelo, normalmente en pies (ft).
36
Figura 3.9 Head Down Displays (HDD).
21
Aéroespatiale 332, helicóptero bimotor de tamaño medio “SuperPuma”.
37
Figura 3.10 Primer diseño del chasis del prototipo (Enero 2014).
38
Figura 3.12 Conjunto completo a falta del sensor del GPS y de la conexión con el PC (Mayo 2014).
39
• El sensor GPS está basado en el chip MTK3339 capaz del seguimiento de 22
satélites en 66 canales, el tiempo, la fecha, la posición y la altura se actualiza
cada 15 segundos.
40
Las características del AS332 operado actualmente por el Ejército del Aire son las
siguientes:
Longitud: 18,7 m
Diámetro rotor principal: 15,08 m
Altura: 4,92 m
Tren de aterrizaje de 3 puntos.
Peso vacío: 4100 kg
Peso máximo al despegue: 8350 kg
Planta motriz: 2 x motores Turbomeca Makila 1A.
Velocidad máxima operativa : 288 km/h
Velocidad crucero : 245 km/h
Alcance: 570 km
Techo de servicio: 20.000 pies
41
Figura 3.14 Cockpit del AS332 SuperPuma.
En relación con los equipos con que cuenta actualmente esta aeronave relacionados
con el sistema BHLAS a integrar, se pueden exponer como ejemplo los siguientes:
42
Figura 3.15 Dimensiones del AS332 SuperPuma.
43
3.3 Presentación en cabina
El denominador común de todos los sistemas en desarrollo es que todos ellos cuentan
con una serie de sensores y una interfaz máquina-hombre (Displays visuales).
Dentro de la descripción del interfaz hombre-máquina del sistema debemos dividirlo en
dos grupos, por un lado el tipo de representación física, pantallas convencionales,
HUD, HMD etc… y por otro lado el tipo de simbología a utilizar en dichos sistemas, 2D
ó 3D.
• Head Up Display
Un HUD es un dispositivo que presenta la información por encima de los instrumentos
de cabina, como su propio nombre indica el piloto puede mantener la vista sobre el
campo de visión y no necesita bajar la mirada para ver los instrumentos de cabina.
Estos dispositivos se pueden configurar para proporcionar la información que el usuario
quiera, potencia de los motores, información de navegación, altura, velocidad de vuelo,
consumo de combustible etc…
El mayor beneficio de estos dispositivos es poder mantener el contacto visual sobre el
exterior, especialmente sobre las maniobras cercanas al suelo, tales como el aterrizaje.
• Head-Mounted Display
En un HMD la información es presentada enfrente de los ojos del piloto, reduciendo así
la necesidad de mirar dentro de la cabina. Los sistemas HMDs pueden ser modulares,
montados sobre un casco de vuelo convencional como el ANVIS-HUD o totalmente
integrados como en los cascos de nueva generación como el usado en el helicóptero
NH-90 o el TIGRE.
Además como los dispositivos de regulación se encuentran en el mando colectivo y el
mando cíclico se consigue el denominado HOCAS (Hands On Collective And Stick) que
en un helicóptero es fundamental.
El ANVIS-HUD 22 es un monocular de pequeño peso que puede ser utilizado tanto de
día como de noche sobre las NVG (Night Vision Goggles), permite representar
información en dicho monocular dentro de un campo de visión de unos 25 grados.
22
Aviator Night Imaging System with Head-Up-Display.
44
Los HMDs integrados proporcionan un campo de visión mayor que el ANVIS-HUD. La
simbología configurada siempre aparece en frente de los ojos del piloto
independientemente de donde esté mirando.
Una de las pocas limitaciones del ANVIS-HUD es durante el amanecer o el ocaso ya
que se debe regular manualmente la intensidad de la imagen dependiendo de la luz
exterior. Otra desventaja es que son normalmente caros e incrementa el peso del
casco, aumentando la fatiga de la tripulación en vuelos de larga duración.
23
Degraded Visual Environment.
45
El objetivo de esta simbología es integrarla en los helicópteros de nueva generación
que contarán con tecnología Digital Automatic Flight Control System (DAFCS) y Fly-By-
Wire 24.
24
Sistema que reemplaza los controles manuales convencionales de una aeronave por un sistema de controles de
vuelo electrónico.
46
• Radioaltímetro de onda milimétrica.
Operan en la banda desde 77 GHz a 94 GHz con una gran capacidad de penetración.
Los radioaltímetros convencionales operan en la banda de los 4 GHz. Son pequeños
en tamaño y peso con la posibilidad de una buena integración de las antenas en el
fuselaje. El inconveniente es que tienen un alcance efectivo de unos 100 metros (330
ft).
• Sensores radar electrónicos de onda milimétrica.
Basados en onda radar milimétrica, y pueden proporcionar la detección de obstáculos
(en movimiento o estáticos) en la zona de aterrizaje con una cobertura de 360º. Una de
sus limitaciones es que cuentan con un alcance efectivo de 300m.
• Sensores radar de onda milimétrica de escáner activo.
Operan en la banda desde 77 GHz a 94 GHz con una gran capacidad de penetración,
este tipo de radar es capaz de obtener una imagen en 3D.
47
HORIZONTE
ARTIFICIAL
COORDENADAS
HEADING
INCLINACIÓN
DEL TERRENO
VELOCIDAD
VERTICAL
DESPLAZAMIENTO
HORIZONTAL
ALTURA
48
3.4.1 Malla CGear Tactical Helimat
Es una malla de polietileno que evita la circulación de polvo y arena en la zona de
aterrizaje. Fabricada por la empresa australiana CGear.
49
3.4.2 Durasoil
La empresa estadounidense Soilworks ha desarrollado un fluido sintético que esparcido
por la superficie en cuestión, reduce significativamente la aparición de nubes de polvo.
El fluido es transparente, no tóxico e incoloro, de fácil aplicación garantizando una
duración de sus efectos entre los 9 a 16 meses. Utilizable en helisuperficies, pistas de
aterrizaje no preparadas, campos deportivos, caminos o pistas forestales. Las
Naciones Unidas para su misión de mantenimiento de paz en Sudán (UNMIS 25) ha
utilizado este sistema en helisuperficies y campamentos.
(Ver figura 3.19)
25
United Nations Mission in Sudan. Misión humanitaria/Mantenimiento de Paz de Naciones Unidas en Sudán desde
el año 2005 al 2011. Resolución 1590 de 24 de marzo de 2005.
50
3.4.3 Helicopter White/Brown-out Landing System (Microflown Technologies)
La empresa holandesa Microflown Technologies ha desarrollado un sistema basado en
sensores acústicos (Acoustic Vector Sensors, AVS) que puede ayudar a los
helicópteros en aterrizajes en condiciones de visibilidad degradada.
El procedimiento se basa en unos sensores en el helicóptero que detecta las emisiones
de las balizas de la estación en tierra que emiten ondas acústicas. La estación en tierra
detecta la posición del helicóptero (altura, velocidad de aproximación etc...) y toda esa
información puede enviarse al piloto en tiempo real.
La principal restricción que tiene dicho sistema es la necesidad de contar con una
estación y una serie de sensores en tierra que apoyen la aproximación en condiciones
de visibilidad degradada.
Después de explorar lo que existe hoy en día en la industria, podemos afirmar que
todavía no hay un sistema autónomo totalmente desarrollado que mitigue los riesgos
en aterrizajes en condiciones de brownout, si bien nos hemos encontrado con varias
aproximaciones que se están desarrollando, desde la dinámica de fluidos (CFD
Computacional Fluid Dynamics) usada para predecir las características del flujo a
través del rotor (Ver figura 3.21 y 3.22), hasta sistemas que ofrecen una presentación
3D basada en onda milimétrica radar como el Brownout Landing Aid System
Technology (BLAST) desarrollado por BAE System (Ver figura 3.25).
51
Este último sistema usa ondas de 94GHz para crear una imagen sintética en tres
dimensiones de lo que hay alrededor del helicóptero, la cual puede ser proyectada en
la visera del casco del piloto para aumentar la conciencia situacional a la hora de la
toma en una zona con visibilidad degradada.
Figura 3.22 Helicóptero UH-60 preparado para el ensayo sobre velocidades de flujo de rotores (ver detalle de los
filamentos para medir dirección e intensidad de fluyo dispuestos en el suelo).
52
También como se ha expuesto con anterioridad (apartado 2.5.3) en el modelo
AgustaWestland EH101, mediante el sistema BERP (British Experimental Rotor
Programme) se han estudiado los flujos que dicho rotor modificado produce alrededor
de la aeronave y si este evita la pérdida de visibilidad desde la cabina de pilotaje (figura
3.23 y 3.24).
53
Por último y según el informe de la OTAN TR-HFM-162 “Rotary-Wing Brownout
Mitigation” del año 2012 [20], las capacidades actuales para desarrollar un sistema
autónomo efectivo se pueden resumir en la suma de sensores de Imagen Termal (MW
o LW infra-rojo) para obtener una imagen en 2D que represente información del
terreno, con monoculares HMSD para una visión tanto nocturna como diurna.
Figura 3.25 Sistema BLAST sobre un “Black Hawk” en desarrollo por la empresa BAE System.
54
CAPÍTULO 4. HARDWARE
Debido a que el desarrollo enteramente del prototipo está basado en Arduino, debemos
aclarar que Arduino, desde sus comienzos, abarca en realidad 3 conceptos
fundamentales:
a. Una placa (PCB, Printed Circuit Board) hardware libre, que incorpora un
microprocesador programable con una serie de pines-hembra que permiten
conectar de forma muy sencilla diferentes sensores. Nuestra placa Arduino, está
basada en el microcontrolador ATmega2560 y dispone de 54 pines de
entrada/salida digitales, consta de una memoria Flash de 256 Kbts, una memoria
RAM de 8 KB y una ROM de 4 KB. Su voltaje de trabajo es de 5 voltios. La
conexión USB 26 de la placa, además de servir de alimentación eléctrica, es un
medio para transmitir datos entre nuestro ordenador (PC) y la placa.
Si nos referimos al Hardware, el sistema se basa en una estructura compuesta por una
serie de sensores, donde en este caso algunos de ellos están integrados en una IMU y
otros son independientes, una unidad central que es una placa con un microcontrolador
ATmega y un interfaz/display (pantalla) que muestra la información requerida.
26
Bus Universal en Serie, es un estándar industrial desarrollado en la década de los 90’s que define los cables,
conectores y protocolos usados en un bus para conectar, comunicar y proveer de alimentación eléctrica entre
ordenadores, periféricos y dispositivos electrónicos.
55
4.2 Placa Arduino ATmega.
En un principio se puede decir que existe una variedad de placas Arduino, cada una de
ellas basadas en distintos tipos de microprocesadores ATMega y con diferentes
prestaciones. La selección de placa tiene dos efectos: los parámetros utilizados cuando
compilar y volcar los "sketches27"; y el tipo de fichero y configuración utilizados por el
gestor bootloader 28 al ser cargado.
Hoy en día existen multitud de modelos de placas de Arduino (Arduino Pro, Arduino
Nano, Aduino Esplora, o el Arduino Ethernet con una conexión wireless que incorpora
un módulo para la transmisión de datos hasta 100 metros de distancia, con esta placa
se puede programar sin cables así como también realizar comunicaciones en serie con
cualquier dispositivo bluetooth), a modo de historia podemos citar los siguientes:
• Arduino Uno
Es una revisión de la placa Arduino USB básica. Se conecta al ordenador con un cable
USB estándar y contiene todo lo necesario para programar la placa. Se puede ampliar
con gran variedad de shields. Tiene un ATmega328, también consta de 14 pines de
entrada/salida de los cuales 6 se pueden usarse como salidas, 6 como entradas
analógicas, cuenta con una velocidad de reloj de 16 MHz y un conector ICSP 29.
Existen varias revisiones de esta placa, en las cuales se suelen añadir nuevas
funcionalidades más útiles. En la última revisión (R3) se han añadido unos pines
llamados SDA y SCL cerca del pin AREF y 2 nuevos pines cerca del RESET.
• Arduino Diecimila
Versión posterior al Uno. Es una placa microcontroladora basada en el chip
ATmega168. Tiene 14 E/S digitales (6 de las cuales se puedes utilizar como salidas
PWM), 6 entradas analógicas, un reloj de 16MHz, conexión USB y botón de RESET.
Voltaje de funcionamiento: 5V
Voltaje de entrada (recomendado): 7-12 V
Voltaje de entrada (limites): 6-20 V
Intensidad por pin de E/S: 40 mA
Intensidad por pin de 3.3V: 50 mA
Memoria Flash: 16 KB (2 KB reservados para el gestor de arranque)
SRAM: 1 KB
EEPROM: 512 bytes
27
Programas que se ejecutan dentro del entorno IDE Arduino.
28
Es el gestor de arranque que permite procesar sketches a la placa de Arduino.
29
In Circuit Serial Programming. Una manera de programar un microcontrolador a través de un solo conector.
56
• Arduino Duemilanove
Versión actualizada del Diecimila y presenta pocas diferencias con ese modelo. Basada
en el ATmega168 o el ATmega328. Tiene 14 pines con entradas/salidas digitales (6 de
las cuales pueden ser usadas como salidas PWM), 6 entradas analógicas, un reloj de
16Mhz, conexión USB, entrada de alimentación, una cabecera ISCP, y un botón de
RESET.
Voltaje de funcionamiento: 5V
Voltaje de entrada (recomendado): 7-12V
Voltaje de entrada (limite): 6-20V
Intensidad por pin: 40 mA
Intensidad en pin: 3.3V50 mA
Memoria Flash: 16 KB (ATmega168) o 32 KB (ATmega328) de los cuales 2 KB de
bootloader
SRAM: 1 KB (ATmega168) o 2 KB (ATmega328)
EEPROM: 512 bytes (ATmega168) o 1 KB (ATmega328)
Voltaje de funcionamiento: 5V
Voltaje de entrada (recomendado): 7-12V
Voltaje de entrada (límite): 6-20V
Intensidad por pin: 40 mA
Intensidad en pin 3.3V: 50 mA
Memoria Flash: 128 KB de las cuales 4 KB las usa el gestor de arranque (bootloader)
SRAM: 8 KB
EEPROM: 4 KB
El Atmega2560 tiene 256KB de memoria flash para almacenar código (4KB son usados
para el arranque del sistema). Además cuenta con 8 KB de memoria SRAM.
57
Las funciones del microcontrolador son las siguientes:
• Leer las señales de salida que entrega la IMU con el convertidor analógico a digital
(ADC) que tiene integrado.
• Calcular los ángulos roll y pitch mediante el uso de un filtro digital paso-bajas y la
implementación de un filtro Kalman.
• Leer las señales de los distintos sensores ultrasónicos para la medida de altura,
inclinación del terreno, desplazamiento lateral y rumbo de la aproximación.
El Arduino, tiene un regulador de voltaje, que además de poder ser alimentado con un
mínimo de 6 volts y un máximo de 20 volts tiene 2 salidas de voltaje para alimentar
sensores, una de 5 V y otra de 3.3 V. Respecto a los pines de alimentación tenemos:
58
Las entradas/salidas digitales del microprocesador:
Cada uno de los 54 pines digitales puede ser declarado como entradas o salidas
gracias a la función pinMode. Luego, según como se haya declarado dicho pin
podremos trabajar con él utilizando las funciones digitalWrite o digitalRead. Los pines
trabajan con 5 voltios; y cada pin puede proporcionar o recibir una intensidad máxima
de 40mA. Además poseen una resistencia de pull-up (desconectada por defecto) de
20-50kOhms. Aparte, hay pines que tienen una serie de funciones especiales:
• Pin 13: pin con un led integrado que se enciende cuando el pin toma el valor
HIGH y se apaga al tomar el valor LOW.
59
4.3 Sensores Arduino
60
Figura 4.3 Sensores ultrasónicos esquema de funcionamiento.
61
4.3.2 Sistema Barométrico BMP 180
Ésta placa incluye un sensor de presión barométrica BMP180 de alta precisión con un
rango de medida de entre 300 y 1100 hPa con un margen de error mínimo de tan sólo
0,03 hPa. Está basado en tecnología piezo-resistiva de alta eficiencia, linealidad y larga
duración. El sensor tiene un rango de alimentación de entre 1,8 y 3,6 V. Está diseñado
para ser conectado directamente a un microcontrolador mediante su interfaz I2C.
Este sensor proporciona información de presión y es capaz de dar variaciones de
altitud de hasta 30 cm, también proporciona información de temperatura en grados
Celsius.
62
4.3.3 Sistema GPS Breakout Ultimate
Este sensor GPS está basado en el chip MTK3339, capaz del seguimiento de 22
satélites en 66 canales, el tiempo, la fecha, la posición y la altura se actualiza cada 15
segundos.
Potente y compacto con antena incorporada y muy bajo consumo.
Características:
Cantidad de satélites: tracking de 22 satélites en 66 canales
Posibilidad opcional de agregar una pila de litio CR1220
Dimensiones: 23mm x 35mm x 8mm
Dimensiones de la antena: 15mm x 15mm x 4mm
Peso: 8.5 gramos
Tasa de refresco: 1 a 10 Hz
Error de posición: 2,8 metros
Error de velocidad: 1 m/s
Arranque en tibio/frío: 38 seg.
Sensibilidad en adquisición: -145dBm
Sensibilidad en tracking: -165dBm
Máxima altitud: sin límite
Máxima velocidad: 515 m/s
Rango de tensiones de alimentación: 3,0 – 5,5 V (regulador ultra LDO incorporado)
63
4.4 IMU 9 DOF RAZOR
GISRÓSCOPO
ACELERÓMETRO Figura 4.7 IMU 9 DOF RAZOR. ITG 3200
ADXL345
MAGNETÓMETRO
HMC5883L
64
• ITG-3200 - giróscopo digital 3 ejes.
El ITG-3200 puede ser alimentado con tensiones entre 2.1 y 3.6V. Para flexibilidad de
suministro de energía, el ITG-3200 tiene un pin independiente de referencia VLOGIC
(llamado VIO). En funcionamiento normal del sensor el consumo es solo 6.5mA.
La comunicación con el ITG-3200 se logra a través de una interfaz de dos hilos (I2C).
El sensor también cuenta con salida de interrupción y una entrada de reloj opcional.
Estos dispositivos MEMS son giróscopos cuya función es detectar la razón de cambio
en los ejes Roll, Pitch y Yaw. Son la combinación de un actuador y un acelerómetro en
una estructura conjunta.
Incluye un elemento sensor compuesto de una masa móvil, que se mantiene en
movimiento de oscilación continuo y es capaz de reaccionar cuando se produce un
cambio angular y estos producen voltajes analógicos proporcionales a la razón del
cambio angular.
65
• ADXL345 acelerómetro digital 3 ejes.
66
• HMC5883L magnetómetro digital.
67
4.5 Sistema de representación en cabina
El sistema ILS consiste de dos subsistemas independientes: uno de ellos sirve para
proporcionar guía lateral (localizador) y el otro para proporcionar guía vertical (senda de
planeo).
Durante una aproximación ILS, el piloto debe mantener al menos cuatro parámetros:
a) Senda de planeo (G/S, del inglés: Glide Slope o GP: Glide Path) indica el régimen de
descenso óptimo que se debe mantener en todo momento para realizar la
aproximación según esta publicada.
30
Intrumental Flight Rules (Reglas de Vuelo Instrumentales).
68
d) Altitud/Altura. Tanto una como otra nos indica que estamos siguiendo las alturas en
cada tramo de la aproximación, además de indicarnos cuando llegamos a mínimos,
donde deberemos ver la pista de aterrizaje y tomar o en caso contrario frustrar.
Normalmente el localizador y senda de planeo, están dispuestos sobre el horizonte
artificial con dos barras, una vertical y otra horizontal. (Ver figura 4.11).
69
El sistema de representación de información del BHLAS se ha distribuido para poder
realizar una comprobación cruzada en T a la hora de la toma, en la parte superior lado
derecho las coordenadas de la posición, en la parte superior el horizonte artificial
(actitud, pitch y roll), inmediatamente debajo el rumbo, luego la inclinación del terreno y
después información de desplazamiento en el plano horizontal. A la derecha
información sobre velocidad vertical.
4.6 Simbología
Los símbolos (Figura 4.13) para representar la información en el display, son los
siguientes:
70
5
2 6
71
CAPITULO 5. SOFTWARE
El software Arduino está publicado bajo una licencia libre, y preparado para ser
ampliado por programadores experimentados a través de librerías.
El entorno de desarrollo Arduino está constituido por un editor de texto para escribir el
código, un área de mensajes, una consola de texto, una barra de herramientas con
botones para las funciones comunes, y una serie de menús. Permite la conexión con el
hardware de Arduino para cargar los programas y comunicarse con ellos.
Arduino utiliza para escribir el software lo que denomina "sketch" (programa). Estos
programas son escritos en el editor de texto. Existe la posibilidad de cortar/pegar y
buscar/remplazar texto etc… En el área de mensajes se muestra información mientras
se cargan los programas y también muestra errores. La consola muestra el texto de
salida para el entorno de Arduino incluyendo los mensajes de error completos y otras
informaciones. La barra de herramientas permite verificar el proceso de carga,
creación, apertura y guardado de programas, y la monitorización.
Se pueden encontrar otros comandos en los cinco menús: File, Edit, Sketch, Tools,
Help. Los menús son sensibles al programa, lo que significa que estarán disponibles
sólo los elementos relevantes para la tarea que esté realizando en ese momento.
31
Integrated Development Environment, programa informático compuesto por una serie de herramientas de
programación para ser utilizado con uno o varios lenguajes de programación
72
Permite manejar "sketches" con más de un fichero (cada uno de los cuales aparece en
su pestaña). Pueden ser normalmente ficheros de código Arduino (sin extensiones) u
otros tipos de ficheros como C (extensiones .c) o ficheros c++ (.cpp).
Existe una lista de librerías de referencia, algunas de estas librerías están incluidas en
el software Arduino [30], otras pueden ser descargadas desde una gran variedad de
fuentes. Para instalar estas librerías de terceros, se deberá crear un directorio
denominado “libraries” en su Directorio sketchbook.
32
Instituto Tecnológico de Massachussets.
73
Figura 5.1 Pantalla de la izquierda IDE Processing (Versión 2.1.1).
IDE PROCESSING
74
5.2 Lenguaje Wiring
Wiring y Arduino controlan todo tipo de sensores y actores. Los sensores “comprenden”
el ambiente alrededor (temperatura, luz, distancias, sonidos, etc.) y los actores (luces,
motores, osciladores, generadores de calor, etc.) modifican ese mismo ambiente.
También es posible desarrollar librerías que pueden ser instaladas dentro del ambiente
de desarrollo y existe un gran número de ellas en el sitio oficial de Wiring [36] y en
Internet, que permiten el manejo de Servos, Comunicacion Serial, pantallas LCD, GPS
y muchos otros componentes.
75
COMPILAR
ÁREA DE
EJECUTAR CÓDIGO
NUEVO
ABRIR
SALVAR
ENVIAR ESTATUS
Dentro de estas dos partes se integraran funciones que se ejecutaran cuando sean
llamadas, en la declaración de una función se incluye el tipo de datos, el nombre de la
función y los parámetros de la misma.
• PinMode (pin, modo) que configura el pin especificado para configurarse como
entrada o salida.
• Serial.print ( ) imprime los datos del puerto serie como texto ASCII.
Las variables deben ser declaradas en el inicio del programa antes del setup,
opcionalmente se les puede asignar un valor. En la declaración de la variable se debe
indicar el tipo de datos que almacenarán (byte, int, float, long, arrays).
76
Además existen operadores aritméticos, sentencias condicionales y funciones para
configurar entradas y salidas digitales y analógicas. Algunas sentencias condicionales
if, if…else, for, while, do…while.
EN COLUMNAS DATOS r [ ]
77
5.4 Formulaciones
En el siguiente apartado vamos a exponer cuales han sido las ecuaciones necesarias
para calcular con los sensores disponibles toda la información que aparece en pantalla,
y que se han introducido en las líneas de programación.
Para el cálculo de la altura los sensores calculan el tiempo que transcurre entre la
emisión y la recepción del eco y mediante la fórmula (5.1) calcula la distancia al suelo.
𝐶𝐶𝐶𝐶 = �𝛾 𝑅𝑅⁄𝑀
𝐶𝐶𝐶𝐶
ℎ=( )×𝑡
2
ℎ = (𝐶𝐶𝐶𝐶⁄10.000) × 𝑡
Para el cálculo de la inclinación del terreno, se debe medir las distancias de los
sensores tanto del lado izquierdo como en el lado derecho y según las fórmulas (5.2) y
(5.3) hallamos la inclinación de la zona de aterrizaje.
78
𝛼´ = 𝛼 ± 𝛽 (Siendo 𝛼´𝑒𝑒 ángulo de inclinación del terreno) (5.3)
Como se verá más adelante (capítulo 7.1), se estudiaron varias opciones para calcular
los desplazamientos en el plano horizontal, este cálculo fue sin duda el más complicado
de obtener del prototipo por lo que en total se contemplaron cuatro opciones de estudio
A, B, C y D.
v=velocidad instantánea
𝑡1
𝑣0 = ∫0 𝑎 𝑑𝑑 (5.4)
𝑡2
𝑣 = ∫𝑡1 𝑎 𝑑𝑑 (5.5)
𝑣 = 𝑣0 ± 𝑎 × 𝑡(10msg)
Esta aproximación (ya en la primera integral) produce muchos errores, por lo que se
descartó desde el primer momento.
79
• Opción B: Obtener directamente la velocidad por el módulo GPS MTK3339.
S (espacio recorrido)=2 x h
t = S/Cair
Al ser la velocidad del sonido (Cair) en dimensiones muy superior a velocidad límite del
desplazamiento lateral (12 cm/sg), los sensores no captaban los desplazamientos
laterales, ya que hablamos de desviaciones (R) cercanas a 1mm. El resultado es que
siempre indicaba movimiento cero.
80
5.4.4 Cálculo de la velocidad vertical (régimen de descenso)
Los variómetros “analógicos” tienen una cápsula barométrica, pero ésta, al contrario
que un altímetro, mide el régimen de cambio de presión en lugar de la variación
absoluta. La cápsula tiene una conexión al sistema medidor de presión estática. Esto
significa que dentro de la misma hay una presión igual a la de la atmósfera que rodea a
la aeronave., así de esta forma, la cápsula recibe la misma presión por el interior y el
exterior, pero ésta última más lentamente, ya que su entrada se produce por un tubo
capilar. Esta diferencia o retardo en proceso de igualar las presiones es acusada y
medida.
En nuestro caso, para el cálculo del régimen de descenso, el sensor utiliza la variación
de presión (voltaje) respecto al tiempo cuando dicho sensor se mueve verticalmente.
• Programación en Arduino.
En Arduino primero se declara las variables tanto para la IMU, como los demás
sensores (GPS, variómetro, ultrasonidos).Todo esto se realiza en el entorno de
desarrollo IDE para después trasladarlo al IDE de Processing para su
representación.
/*********************************************************
inicio variables IMU
*********************************************************/
int gyroResult[3], accelResult[3], rumbo[3];
float timeStep = 0.02;
float biasGyroX, biasGyroY, biasGyroZ, biasAccelX, biasAccelY, biasAccelZ;
float pitchGyro = 0;
float pitchAccel = 0;
float pitchPrediction = 0; //Output of Kalman filter
float rollGyro = 0;
float rollAccel = 0;
float rollPrediction = 0; //Output of Kalman filter
float giroVar = 0.1;
float deltaGiroVar = 0.1;
float accelVar = 5; 81
Después se realiza el Setup de cada programa.
/*********************************************************
inicio setup ultrasonidos
*********************************************************/
starTime=millis(); //para medir cada segundo para que el giróscopo
pierda menos tiempo
pinMode(ECHOPIND, INPUT);
pinMode(TRIGPIND, OUTPUT);
pinMode(ECHOPINI, INPUT);
pinMode(TRIGPINI, OUTPUT);
/*********************************************************
fin setup ultrasonidos
*********************************************************/
/***************************************
inicio loop variometro
***************************************/
altitud2 =altitude0;
altitude0 = int(readAltitude());
Serial.print(" ");
Serial.print(altitude0);
Serial.print(" ");
altitud2=(altitude0-altitud2);
altitud2=altitud2*3*60*2;
Serial.print(altitud2);
/***************************************
fin loop variometro
***************************************/
82
Por último la presentación de los datos en bruto antes de pasarlos a Processing
(Ver Figura 5.3).
/***************************************
inicio print datos [r]
***************************************/
ultraDrch(&dD);//ultrasonico derecho
ultraIzq(&dI);//ultrasonico izquierdo
Serial.println();
starTime=millis();
}
else{
Serial.print(" ");
Serial.print(int(altitude0));
Serial.print(" ");
Serial.print(altitud2);
Serial.print(" ");
Serial.print(dD);
Serial.print(" ");
Serial.print(dI);
Serial.print(" ");
getMagnometerometerReadings();
gps();
Serial.print(" f");
Serial.println();
}}
/***************************************
fin print datos [r]
***************************************/
83
Respecto a los datos que se rescatan de los programas específicos para el
programa principal.
Por ejemplo del sensor del GPS.
void gps(){
84
Declaración de variables con sus tipos (float, char etc…).
float X, Y;
Serial sp;
byte[] buff;
float[] r;
float protz, protx, proty;
float inicioz, iniciox, inicioy;
float altitud;
char lat;
char lon;
smooth();
sp = new Serial(this, "COM4", 9600);//inicio comunicacion serie con arduino
buff = new byte[5026];//pila datos
r = new float[20];//linea de datos hasta 20
//creacion objetos
nuevoHorizonte=new Horizonte(0, 0);
inclinacion_del_terreno=new terreno (0, 300);//punto de inicio del cuadrado
nuevoVariometro=new Variometro();//punto de inicio del cuadrado
nuevoRumbo=new rumbo();//
nuevoDesplazamiento = new desplazamiento(200, 200);
nuevoGps= new GPS();
85
Declaración de datos r [ ], como ángulo de cabeceo, ángulo de alabeo, altura, distancia
ultrasonido derecho, distancia ultrasonido izquierdo, rumbo, coordenadas, módulo
velocidad plano horizontal, ángulo velocidad plano horizontal etc…
//declaracion de funcion
void setVals(String s) {//lectura de los datos
86
Por ejemplo, la clase inclinación del terreno, para representar dicha información, que
tiene en cuenta los datos r [6], r [7] además de constantes y funciones aritméticas.
/******************************
*****Clase inclinación terreno***
*******************************/
class terreno {// mide la inclinacon del terreno en grados
float iniciox;//inicio del dibujo
float inicioy;//
float desnivel=0;
float desnivel2;
terreno(float iniciox, float inicioy) {
this.iniciox=iniciox;
this.inicioy=inicioy;
}
void inclinacion() {
float x=0, y=0;//angulo suelo
pushMatrix();
translate(iniciox, inicioy);
fill(0);
stroke(255);
noFill();
fill(255);
text("ALTURA", 400, 100);
text(((r[7]+r[6])/2), 450, 100);//altura ultrasonicos
text("cm", 500, 100);//altura ultrasonicos
87
x=(r[6]-r[7])/33;
desnivel=atan(x);//cambiar a distancia entre sensores ultrasonicos
if((degrees(desnivel)<12) && degrees(desnivel)>-12){
fill(255);
text(degrees(desnivel), 125, 70);
text("°", 160, 70);
line(100, 80+(90*tan(desnivel)), 190, 80-(90*tan(desnivel)));//suelo
line(90, 85+(100*tan(desnivel)), 200, 85-(100*tan(desnivel)));//suelo
line(80, 90+(110*tan(desnivel)), 210, 90-(110*tan(desnivel)));//suelo
line(70, 95+(120*tan(desnivel)), 220, 95-(120*tan(desnivel)));//suelo
line(60, 100+(130*tan(desnivel)), 230, 100-(130*tan(desnivel)));//suelo
line(50, 105+(140*tan(desnivel)), 240, 105-(140*tan(desnivel)));//suelo
line(40, 110+(150*tan(desnivel)), 250, 110-(150*tan(desnivel)));//suelo
if (desnivel>=0)
desnivel=desnivel-(radians(r[3]));
if (desnivel<0)
desnivel=desnivel+(radians(r[3]));
}
else{
fill(255,0,0);
textSize(20);
text("NO LANDING",95,90);//
}
}
/******************************
***** Fin Clase inclinación terreno***
*******************************/
88
CAPITULO 6 EXTRAPOLACIÓN DEL PROTOTIPO AL AS332
6.1.1 ANVIS-HUD
El sistema es un HUD (Head Up Display), que como su propio nombre indica mantiene
los ojos del piloto fuera de la cabina de pilotaje, reduce el movimiento de los ojos y
cabeza del piloto alrededor de los instrumentos de la cabina aumentando la seguridad
de vuelo y la conciencia situacional (SA). En maniobras con mal tiempo, condiciones de
baja visibilidad a bajas altitudes y sobre todo en operaciones nocturnas reduce las
probabilidades de accidentes.
Con independencia con la simbología que pueda aparecer en el display sobre heading,
altitud, régimen de los motores etc… existe la posibilidad de adaptar y priorizar por
parte del usuario que información se quiera que aparezca en el display.
89
Figura 6.2 Sistema ANVIS-HUD con dispositivos de visión nocturna.
Los displays convencionales suelen ser pantallas de cristal líquido LCD que se
encuentran en la zona de instrumentos de la cabina y debido a su posición no son
HUD, por lo que el piloto debe mirar dentro para comprobar los parámetros. En el
modelo AS332 podría presentarse en una pantalla multifunción (radar meteorológico,
maping, FLIR 33 y BLASH).
33
Forward Light Infra-Red.
90
6.2 Sensores reales
INDICADOR
PILOTO
INDICADOR
COPILOTO
91
ANTENA EMISIÓN
ANTENA RECEPCIÓN
EMISOR-RECEPTOR
Para la recogida de información de cabeceo (Pitch) y alabeo (Roll) el AS332 cuenta con
dos centrales de referencia vertical debajo de la cabina de pilotaje. Estos giróscopos
alimentados por 115V de corriente alterna, proporcionan información al horizonte
artificial y al piloto automático.
92
CAPITULO 7. PRUEBAS
Antes de describir las pruebas realizadas con el prototipo, el autor cree que se debería
exponer el proceso de creación y el montaje del prototipo:
4. Una vez finalizada toda la programación se montó todo el conjunto, los distintos
sensores de ultrasónicos se conectaron mediante cables a la protoboard y se
montaron directamente sobre el chasis, la protoboard se montó sobre el chasis
en la zona central junto a la placa Arduino Mega 2560 y este último se conectó al
PC.
93
b. Durante la programación para obtener el horizonte artificial, al principio las
mediciones que proporcionaban tanto el acelerómetro como el giróscopo de la IMU
eran muy sensibles por lo que se implementó un filtro Kalman 34. El algoritmo del filtro
provee estimaciones de las variables del sistema para ponderar cada una de las
nuevas mediciones, además determina incertidumbres actualizadas de los datos
estimados proporcionando lecturas mucho más estables, en nuestro caso grados de
alabeo y cabeceo.
34
Algoritmo que se usa para predecir el valor real de un dato cuando las mediciones, en su mayoría, contienen ruido.
Fue desarrollado en 1960 por Rudolf E. Kalman. En pocas palabras, es un sistema recursivo y eficiente que aplica
el método de mínimos cuadrados. Esta solución permite determinar el estado de un proceso en un momento t con la
información que se tiene del momento t-1 más la información de t.
En este proyecto, se utilizará este filtro para poder obtener un valor estimado del ángulo de inclinación del horizonte
artificial usando los datos obtenidos de la IMU (giroscopio y acelerómetro).
94
Se seleccionó la segunda opción (B); ya que la opción A, aún en la primera integral
(para obtener la velocidad) acumulaba en las sucesivas lecturas errores que daban
resultados no asumibles, respecto a la opción C y D también se desecharon ya que la
magnitud de la velocidad del sonido (344 m/sg) es muy superior a la magnitud de
velocidad de desplazamiento lateral (0,12 m/sg) del prototipo, por lo que siempre daba
información de no movimiento. Respecto a la elegida (opción B), esta nos daba
información de desplazamiento lateral, pero se debe exponer que solo contaba con una
resolución de 0,1 m/sg cuando se disponía de una cobertura de más de 12 satélites.
A la hora de detectar cuáles son las causas y cuál puede ser la maniobra recomendada
para un aterrizaje con éxito, se realizó una serie de pruebas en vuelo con las siguientes
características y resultados:
d. Se realizaron 6 tomas con cada uno de los pilotos con diferentes vientos
relativos (dos con viento en cara, dos con vientos 30º por la derecha y dos con
vientos 30º por la izquierda)
95
TABLA PRUEBAS EN VUELO
Viento 000º/10 Kts 200ft/min 2º derecha +5º 2m/sg 8 metros No, descontrolado
derecha y y fuera de la
atrás helisuperficie
Viento 030º/08 Kts 100ft/min 2º derecha +4º 2m/sg atrás 6 metros No descontrolado
Viento 000º/06 Kts 50ft/min 4º derecha +5º > 2m/sg atrás 10metros No descontrolado
y fuera de la
helisuperficie
Viento 000º/06 Kts 100ft/min 2º derecha +5º 2 m/sg atrás 6 metros No descontrolado
96
NOTA: Se debe tener en cuenta lo siguiente:
3. Antes de iniciar el descenso con una senda algo pronunciada (entre 30º- 40º)
mantener una actitud del helicóptero (Pitch y Roll) dentro de límites.
35
La maniobra tiene aspectos similares al tipo de aproximación denominado “High Hover-Vertical Descent” que fue
descrito en el punto 2.5.3 de este proyecto.
97
4. Empezar el descenso de forma suave controlando al menos los siguientes 4
parámetros mediante una comprobación cruzada, ya que como se ha visto en
apartados anteriores el sistema BHLAS proporciona además posición y altura
sobre la zona de aterrizaje.
70/80 ft
50 m
98
CAPITULO 8. CONCLUSIONES
• Por último, cabe destacar que la información que proporciona sobre inclinación
del terreno, no solo es indispensable en aterrizajes en condiciones de visibilidad
degradada, sino que también en cualquier aterrizaje, ya que en la mayoría no se
dispone de esa información hasta que se está a punto de tomar.
99
Figura 7.2 Limitaciones del sistema BHLAS, al no reconocer obstáculos en la zona de toma.
Los sensores (radioaltímetros, giróscopos etc…) posibles para ser utilizados en los
modelos reales dependerán de tecnología actual en el mercado y de las características
de la aeronave en cuestión.
100
8.3 Líneas futuras
Como se ha expuesto al comienzo del proyecto, la filosofía de este era comenzar con
el desarrollo del prototipo a escala 1:10 y después estudiar la implementación o
extrapolación a un modelo/aeronave real.
• Por último se realizó una aproximación a los posibles sensores propios del
AS332 que podrían utilizarse en lugar de los que contempla el prototipo.
Se debe recalcar que durante el desarrollo del prototipo se ha estado limitado por la
tecnología que actualmente existe en materia de sensores Arduino, ya que por ejemplo,
en el caso de obtener desplazamientos laterales, se podrían haber utilizado sensores
del tipo radar doppler, pero estos no existen a día de hoy en esta tecnología.
Respecto a las líneas futuras de desarrollo, se debería, sobre una aeronave real,
implementar el sistema BHLAS con los sensores adecuados y realizar las pruebas en
vuelo pertinentes.
101
Figura 8.1 Sistema BHLAS, prototipo completo (Noviembre 2014).
102
BIBLIOGRAFÍA
[2] Alastair K. Cooke, Eric W.H. Fitzpatrick. Helicopter Test and Evaluation. Blackwell
Science.
[4] A.R.S. Bramwell, George Done, David Balmford. Bramwell’s Helicopter Dynamics.
Butterwoth Heinemann, 2 Edition 2001.
[6] C. Phillip, H.W. Kim, R.E. Bown. Helicopter brownout. Can it be modelled? The
Aeronautical Journal Volume 115 nº 1164 February 2011.
[7] C.W. Johnson Ph.D. Interactions between Brownout accidents and Night Vision
Equipment in Military Aviaton Accidents, Universty of Glasgow, Scotland. 2013.
[10] G. Jaison and J.S Shrimpton. Prediction of brownout inception beneath a full-scale
helicopter downwash. Journal of American Helicopter Society, nº 57 2012.
[11] Gregory Teofil Jasion Ph D. Toward a Physics Based Entrainment Model for Simulation
of Helicopter brownout. University of Southampton. March 2013.
[12] IMU Analog Combo Board Razor- 9DOF Product Catalog. SparkFun 2012.
[14] John Watkinson. The Art of the Helicopter. Elsevier Butterwoth Heinemann, 2004.
[15] J. Seddon, Simon Newman. Basic Helicopter Aerodynamics. Blackwell Science, second
edition 2002.
[16] K. McNulty. Rotorcraft brownout science and the technology update. US Air Force
Research Laboratory. 2008.
103
[17] L. Sabbagh. Flying blind in Iraq: US helicopters navigate real desert storms. Popular
Mechanics, 3 October 2006.
[21] NAVAIR, US DoD, “Public Release 11-033 3D Flash Ladar Helicopter Landing Sensor
for Brownout and reduced visual Cue”, Patuxent River (USA) 2011.
[22] Oscar Torrente Artero, “Arduino, Curso práctico de formación”, RC Libros, Madrid,
2013.
[23] Patizia M. Knabl, Hans-Ullrich Doehler, Sven Schmerwitz, Marcus Biella. Integration of
a helmet-mounted display for helicopter operations in degraded visual environment: A
human factors perpective. DLR (Deutsches Zentrum fur Luft und Raumfahrt) Germany.
2013.
[24] Pycke, Tom. Kalman filering of IMU data. Mayo 2006 http://tom.pycke.be/71(kalman-
filtering-of-imu-data.
[25] Sierra Nevada Corporation “HALS Helicopter Autonomous Landing System”, Spark
Nevada 89434 USA, 2012.
[26] US Air Force HSI Handbook “AFD-090121-025, Brownout with Rotorcraft Operations”
Wright Patterson USA, 2010.
[27] Welch, Greg. Bishop Gary. An introduction to the Kalman Filter. North Caroline
University. 2006 http:// www.cs.unc.edu/welch/media/pdf/kalman intro.pdf
[28] Yeh, M. Wickens C, Seagull F. Effects of frame of reference and viewing condition on
attentional issues with helmet mounted displays. Mariland US Army Research
Laboratory. 1998.
[29] www.agustawestland.com/system/files/brochures_new_product/EH080510_small.pdf.
[30] www.arduino.cc/
[31] www.cslibrary.stanford.edu/101/
[32] www.elbitsystem.com/elbitmain/HMS
[33] www.microcontroladores.com
104
[34] www.paralax.com/sites/default/files/download/28015-PING-Sensor-Product-Guide-
v.2.0.pdf
[35] www.processing.org
[36] www.wiring.org.co
105
.
APENDICE I.1
LÍNEAS DE PROGRAMACIÓN (ARDUINO)
106
1. INICIO DEFINICIÓN VARIABLES IMU.
#include <Wire.h>
/*********************************************************
inicio variables IMU
*********************************************************/
int gyroResult[3], accelResult[3], rumbo[3];
float timeStep = 0.02;
float biasGyroX, biasGyroY, biasGyroZ, biasAccelX, biasAccelY, biasAccelZ;
float pitchGyro = 0;
float pitchAccel = 0;
float pitchPrediction = 0; //Output of Kalman filter
float rollGyro = 0;
float rollAccel = 0;
float rollPrediction = 0; //Output of Kalman filter
float giroVar = 0.1;
float deltaGiroVar = 0.1;
float accelVar = 5;
float Pxx = 0.1; // angle variance
float Pvv = 0.1; // angle change rate variance
float Pxv = 0.1; // angle and angle change rate covariance
float kx, kv;
unsigned long timer;
/*********************************************************
fin variables IMU
*********************************************************/
107
2. INICIO DEFINICIÓN VARIABLES SENSOR GPS.
/*********************************************************
inicio variables GPS
*********************************************************/
// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver
// This code shows how to listen to the GPS module in an interrupt
// which allows the program to have more 'freedom' - just parse
// when a new NMEA sentence is available! Then access data when
// desired.
// Tested and works great with the Adafruit Ultimate GPS module
// using MTK33x9 chipset
// ------> http://www.adafruit.com/products/746
// Pick one up today at the Adafruit electronics shop
// and help support open source hardware & software! -ada
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
// If you're using a GPS module:
// Connect the GPS Power pin to 5V
// Connect the GPS Ground pin to ground
// If using software serial (sketch example default):
// Connect the GPS TX (transmit) pin to Digital 3
// Connect the GPS RX (receive) pin to Digital 2
// If using hardware serial (e.g. Arduino Mega):
// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3
// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3
// If you're using the Adafruit GPS shield, change
// SoftwareSerial mySerial(3, 2); -> SoftwareSerial mySerial(8, 7);
// and make sure the switch is set to SoftSerial
// If using software serial, keep this line enabled
// (you can change the pin numbers to match your wiring):
//SoftwareSerial mySerial(13, 12);
// If using hardware serial (e.g. Arduino Mega), comment out the
// above SoftwareSerial line, and enable this line instead
// (you can change the Serial number to match your wiring):
HardwareSerial mySerial = Serial1;
Adafruit_GPS GPS(&mySerial);
// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console
// Set to 'true' if you want to debug and listen to the raw GPS sentences.
#define GPSECHO false
// this keeps track of whether we're using the interrupt
// off by default!
boolean usingInterrupt = false;
void useInterrupt(boolean);
/*********************************************************
fin variables GPS
108
**********************************************************
3. INICIO DEFINICIÓN VARIABLES SENSOR BAROMÉTRICO.
/*********************************************************
inicio variables variometro
*********************************************************/
#define STATUS 0x00
#define MPL3115A2_ADDRESS 0x60 // 7-bit I2C address
#define OUT_P_MSB 0x01
#define OUT_P_CSB 0x02
#define OUT_P_LSB 0x03
#define OUT_T_MSB 0x04
#define OUT_T_LSB 0x05
#define CTRL_REG1 0x26
#define PT_DATA_CFG 0x13
#define WHO_AM_I 0x0C
int altitude0;
int altitud2;
/*********************************************************
fin variables variometro
*********************************************************/
109
4. INICIO VARIABLES SENSORES ULTRASONIDOS.+
/*********************************************************
inicio variables ultrasonidos
*********************************************************/
#define ECHOPIND 2 // Pin to receive echo pulse
#define TRIGPIND 3 // Pin to send trigger pulse
#define ECHOPINI 4 // Pin to receive echo pulse
#define TRIGPINI 5 // Pin to send trigger pulse
long starTime;
int dD=0,dI=0;
/*********************************************************
fin variables ultrasonidos
*********************************************************/
110
5. SETUP PROGRAMA.
void setup() {
/***************************************
inicio Setup IMU
***************************************/
int totalGyroXValues = 0;
int totalGyroYValues = 0;
int totalGyroZValues = 0;
int totalAccelXValues = 0;
int totalAccelYValues = 0;
int totalAccelZValues = 0;
int i;
//Inicio conexion serie
Wire.begin();
//velocidad de tranferencia 9600 bit/seg
Serial.begin(9600);
totalGyroXValues += gyroResult[0];
totalGyroYValues += gyroResult[1];
totalGyroZValues += gyroResult[2];
totalAccelXValues += accelResult[0];
totalAccelYValues += accelResult[1];
totalAccelZValues += accelResult[2];
delay(50);
}
biasGyroX = totalGyroXValues / 50;
biasGyroY = totalGyroYValues / 50;
biasGyroZ = totalGyroZValues / 50;
111
biasAccelX = totalAccelXValues / 50;
biasAccelY = totalAccelYValues / 50;
biasAccelZ = (totalAccelZValues / 50) - 256;
/***************************************
fin Setup IMU
***************************************/
/***************************************
inicio Setup variometro
***************************************/
if(IIC_Read(WHO_AM_I) == 196)
Serial.println("MPL3115A2 online!");
else
Serial.println("No response - check connections");
/***************************************
fin Setup variometro
***************************************/
112
/*********************************************************
inicio setup ultrasonidos
*********************************************************/
starTime=millis(); //para medir cada segundo..para que el giro pierda menos tiempo
pinMode(ECHOPIND, INPUT);
pinMode(TRIGPIND, OUTPUT);
pinMode(ECHOPINI, INPUT);
pinMode(TRIGPINI, OUTPUT);
/*********************************************************
fin setup ultrasonidos
*********************************************************/
/*********************************************************
inicio setup GPS
*********************************************************/
GPS.begin(9600);
// 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800
GPS.begin(9600);
// uncomment this line to turn on RMC (recommended minimum) and GGA (fix data)
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
// uncomment this line to turn on only the "minimum recommended" data
//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
// For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
// the parser doesn't care about other sentences at this time
// Set the update rate
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
// For the parsing code to work nicely and have time to sort thru the data, and
// print it out we don't suggest using anything higher than 1 Hz
// Request updates on antenna status, comment out to keep quiet
//GPS.sendCommand(PGCMD_ANTENNA);
// the nice thing about this code is you can have a timer0 interrupt go off
// every 1 millisecond, and read data from the GPS for you. that makes the
// loop code a heck of a lot easier!
useInterrupt(true);
delay(1000);
// Ask for firmware version
mySerial.println(PMTK_Q_RELEASE);
}
// Interrupt is called once a millisecond, looks for any new GPS data, and stores it
SIGNAL(TIMER0_COMPA_vect) {
char c = GPS.read();
// if you want to debug, this is a good time to do it!
#ifdef UDR0
if (GPSECHO)
if (c) UDR0 = c;
113
// writing direct to UDR0 is much much faster than Serial.print
// but only one character can be written at a time.
#endif
}
void useInterrupt(boolean v) {
if (v) {
// Timer0 is already used for millis() - we'll just interrupt somewhere
// in the middle and call the "Compare A" function above
OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
usingInterrupt = true;
} else {
// do not call the interrupt function COMPA anymore
TIMSK0 &= ~_BV(OCIE0A);
usingInterrupt = false;
}
}
/*********************************************************
fin setup GPS
*********************************************************/
114
6. INICIO LOOP PROGRAMA.
void loop() {
/***************************************
inicio loop IMU
***************************************/
timer = millis();
getGyroscopeReadings(gyroResult);
getAccelerometerReadings(accelResult);
//Filtro Kalman
pitchAccel = atan2((accelResult[1] - biasAccelY) / 256, (accelResult[2] - biasAccelZ) / 256) *
360.0 / (2*PI);
pitchGyro = pitchGyro + ((gyroResult[0] - biasGyroX) / 14.375) * timeStep;
pitchPrediction = pitchPrediction + ((gyroResult[0] - biasGyroX) / 14.375) * timeStep;
Pxx *= (1 - kx);
Pxv *= (1 - kx);
Pvv -= kv * Pxv;
//Fin Filtro Kalman
// Serial.print(int(pitchGyro));//solo necesario para el calculo
// Serial.print("\t");
Serial.print(int(pitchAccel));
Serial.print(" ");
Serial.print(int(pitchPrediction));
Serial.print(" ");
Serial.print(int(rollAccel));
Serial.print(" ");
Serial.print(int(rollPrediction));
115
timer = millis() - timer;
timer = (timeStep * 1000) - timer;
delay(timer);
/***************************************
fin loop IMU
***************************************/
if((millis()-starTime)>500){
/***************************************
inicio loop variometro
***************************************/
altitud2 =altitude0;
altitude0 = int(readAltitude());
Serial.print(" ");
Serial.print(altitude0);
Serial.print(" ");
altitud2=(altitude0-altitud2);
altitud2=altitud2*3*60*2;
Serial.print(altitud2);
/***************************************
fin loop variometro
***************************************/
116
7. PRINT DATOS.
/***************************************
inicio print datos [r]
***************************************/
ultraDrch(&dD);//ultrasonico derecho
ultraIzq(&dI);//ultrasonico izquierdo
Serial.println();
starTime=millis();
}
else{
Serial.print(" ");
Serial.print(int(altitude0));
Serial.print(" ");
Serial.print(altitud2);
Serial.print(" ");
Serial.print(dD);
Serial.print(" ");
Serial.print(dI);
Serial.print(" ");
getMagnometerometerReadings();
gps();
Serial.print(" f");
Serial.println();
}
}
/***************************************
fin print datos [r]
***************************************/
117
8. SENSOR IMU.
void getMagnometerometerReadings() {
int x,y,z; //triple axis data
118
if(6<=Wire.available()){
x = Wire.read()<<8; //X msb
x |= Wire.read(); //X lsb
z = Wire.read()<<8; //Z msb
z |= Wire.read(); //Z lsb
y = Wire.read()<<8; //Y msb
y |= Wire.read(); //Y lsb
}
119
9. SENSOR GPS.
void gps(){
120
10. SENSOR BAROMÉTRICO.
float readAltitude()
{
toggleOneShot(); //Toggle the OST bit causing the sensor to immediately take another reading
toggleOneShot(); //Toggle the OST bit causing the sensor to immediately take another reading
return(altitude);
}
121
//Reads the current pressure in Pa
//Unit must be set in barometric pressure mode
//Clears then sets the OST bit which causes the sensor to immediately take another reading
//Needed to sample faster than 1Hz
122
void toggleOneShot(void)
{
byte tempSetting = IIC_Read(CTRL_REG1); //Read current settings
tempSetting &= ~(1<<1); //Clear OST bit
IIC_Write(CTRL_REG1, tempSetting);
//Enables the pressure and temp measurement event flags so that we can
//test against them. This is recommended in datasheet during setup.
void enableEventFlags()
{
IIC_Write(PT_DATA_CFG, 0x07); // Enable all three pressure and temp event flags
}
123
11. SENSOR ULTRASONIDOS.
124
APÉNDICE I.2
LÍNEAS DE PROGRAMACIÓN (PROCESSING)
125
1. DEFINICIÓN VARIABLES.
float X, Y;
Serial sp;
byte[] buff;
float[] r;
float protz, protx, proty;
float inicioz, iniciox, inicioy;
float altitud;
char lat;
char lon;
2. SETUP PROGRAMA.
smooth();
sp = new Serial(this, "COM4", 9600);//inicio comunicacion serie con arduino
buff = new byte[5026];//pila datos
r = new float[20];//linea de datos hasta 20
//creacion objetos
nuevoHorizonte=new Horizonte(0, 0);
inclinacion_del_terreno=new terreno(0, 300);//punto de inicio del cuadrado
nuevoVariometro=new Variometro();//punto de inicio del cuadrado
nuevoRumbo=new rumbo();//
nuevoDesplazamiento = new desplazamiento(200, 200);
nuevoGps= new GPS();
}
126
3. LOOP PROGRAMA.
stroke(255);
//dibujo del horizonte
//desplazamiento
nuevoDesplazamiento.dibuja_rosa();
//GPS
nuevoGps.dibuja();
//leo puerto
String bytes = sp.readStringUntil('f');//lee hasta encontrar f
println(bytes);
if (bytes == null) {
println(bytes);
} else {
setVals(bytes);
}
}
//declaracion de funcion
void setVals(String s) {//lectura de los datos
127
if (3<i) r[3] = float(list[3]);//roll Kalman
if (4<i) r[4] = float(list[4]);//altitud
if (5<i) r[5] = float(list[5]);//velocidad descenso
if (6<i) r[6] = float(list[6]);//ultrason derecho
if (7<i) r[7] = float(list[7]);//ultrason iz
if (8<i) r[8] = float(list[8]);//rumbo
if (9<i) r[9] = float(list[9]);//latitud
if (10<i) lat = list[10];//N o S
if (11<i) r[11] = float(list[11]);//longitud
if (12<i) lon = list[12];//E o W
if (13<i) r[13] = float(list[13]);//velocidad modulo
if (14<i) r[14] = float(list[14]);//velocidad Angulo
if (15<i) r[15] = float(list[15]);//n satelites
}//fin draw
/******************************
*****Clase Horizonte**********
*******************************/
class Horizonte {//clase horizonte, crea y mueve el suelo
float inicio;//inicio del arco tierra
float fin; //fin del arco tierra
void dibujaLineasCentrales () {
pushMatrix();
translate(150, 150);
128
fill(255);
line(-6, 100*sin(-PI/18), 6, 100*sin(-PI/18));
text("-10", 100*sin(-PI/18)-23, 100*sin(-PI/18)+5);//10°
line(-12, 100*sin(-PI/9), 12, 100*sin(-PI/9));
text("-20", 100*sin(-PI/18)-23, 100*sin(-PI/9)+5);//20°
line(-6, 100*sin(-PI/6), 6, 100*sin(-PI/6));
text("-30", 100*sin(-PI/18)-23, 100*sin(-PI/6)+5);//30°
line(-12, 100*sin(-PI/4), 12, 100*sin(-PI/4));
text("-45", 100*sin(-PI/18)-23, 100*sin(-PI/4)+5);//30°
line(-6, 100*sin(-PI/3), 6, 100*sin(-PI/3));
text("-60", 100*sin(-PI/18)-23, 100*sin(-PI/3)+5);//60°
fill(255);
line(-6, 100*sin(PI/18), 6, 100*sin(PI/18));//10°
text("10", 100*sin(PI/18), 100*sin(PI/18)+5);//10°
line(-12, 100*sin(PI/9), 12, 100*sin(PI/9));//20°
text("20", 100*sin(PI/18), 100*sin(PI/9)+5);//20°
line(-6, 100*sin(PI/6), 6, 100*sin(PI/6));//30°
text("30", 100*sin(PI/18), 100*sin(PI/6)+5);//30°
line(-12, 100*sin(PI/4), 12, 100*sin(PI/4));//45°
text("45", 100*sin(PI/18), 100*sin(PI/4)+5);//45°
line(-6, 100*sin(PI/3), 6, 100*sin(PI/3));//60°
text("60", 100*sin(PI/18), 100*sin(PI/3)+5);//60°
popMatrix();
}
void dibujaSuelo(float pitchk, float rollk) {//dibuja el suelo marron
129
//calculo lineas angulos;
pushMatrix();
translate(150, 150);
//dibuja pequeños circulos exteriores
angulo1=0 ;//45
for (i=0; i<4; i++) {
ellipse(100*cos(angulo1), 100*sin(angulo1), 5, 5);
ellipse(100*cos(angulo1+PI), 100*sin(angulo1+PI), 5, 5);
angulo1 = angulo1+PI/4;
}
popMatrix();
}
void escribeAngulo()//texto del pitch y roll
{
fill(255);
text("Roll:", 229, 260);
text(parseInt(r[3]), 260, 260);
text("Pitch:", 229, 280);
text(parseInt(r[1]), 260, 280);//escribe angulo
}
/******************************
*****Fin Clase Horizonte******
*******************************/
}
/******************************
*****Clase inclinacion********
*******************************/
class terreno {// mide la inclinacon del terreno en grados
float iniciox;//inicio del dibujo
float inicioy;//
float desnivel=0;
float desnivel2;
stroke(255);
130
noFill();
fill(255);
text("ALTURA", 400, 100);
text(((r[7]+r[6])/2), 450, 100);//altura ultrasonicos
text("cm", 500, 100);//altura ultrasonicos
x=(r[6]-r[7])/33;
desnivel=atan(x);//cambiar a distancia entre sensores ultrasónicos
if((degrees(desnivel)<12) && degrees(desnivel)>-12){
fill(255);
text(degrees(desnivel), 125, 70);
text("°", 160, 70);
line(100, 80+(90*tan(desnivel)), 190, 80-(90*tan(desnivel)));//suelo
line(90, 85+(100*tan(desnivel)), 200, 85-(100*tan(desnivel)));//suelo
line(80, 90+(110*tan(desnivel)), 210, 90-(110*tan(desnivel)));//suelo
line(70, 95+(120*tan(desnivel)), 220, 95-(120*tan(desnivel)));//suelo
line(60, 100+(130*tan(desnivel)), 230, 100-(130*tan(desnivel)));//suelo
line(50, 105+(140*tan(desnivel)), 240, 105-(140*tan(desnivel)));//suelo
line(40, 110+(150*tan(desnivel)), 250, 110-(150*tan(desnivel)));//suelo
if (desnivel>=0)
desnivel=desnivel-(radians(r[3]));
if (desnivel<0)
desnivel=desnivel+(radians(r[3]));
}
else{
fill(255,0,0);
textSize(20);
text("NO LANDING",95,90);//
}
popMatrix();
fill(255);
textSize(12);
}
}
/********************************
*clase velocidad vertical
*********************************/
class Variometro {
void Varimetro() {
}
void dibujaVelocidad() {
pushMatrix();
translate(300, 150);
fill(255);
131
text("Velocidad Vertical (ft/min)", 100, 10);
fill(0, 0, 255);
rect(125, 20, 50, 200, 7);
fill(255);//color blanco
stroke(255, 0, 0);//color azul
popMatrix();
}
}
/********************************
* fin clase velocidad vertical
*********************************/
/********************************
*clase rumbo
*********************************/
class rumbo {
int x, xx, y, yy;
void rumbo() {
x=5;
}
void dibujaRumbo() {
pushMatrix();
translate(90, 290);
for (int i=0; i<21; i++) {
y=10;
x=x+5;
stroke(255);
if (i%2==0)
line(x, y, x, y+20);
else
line(x, y+5, x, y+15);
132
if (i==10) {
line(x, y, x, y+30);
text("HDG", x-45, y-10);
text(r[8], x-20, y-10);
}
}
x=5;//volver al principio
popMatrix();
}
}
/********************************
*fin clase rumbo
*********************************/
/*********************************
*Clase desplazamiento Horizontal
/********************************/
class desplazamiento {
int altura;
int anchura;
desplazamiento(int anchura, int altura) {
this.altura=altura;
this.anchura=anchura;
}
void dibuja_rosa() {
pushMatrix();
translate(150, 550);
fill(255);
strokeWeight(8);
line(80, 0, 100, 0);
line(0, 80, 0, 100);
line(0, -80, 0, -100);
line(-80, 0, -100, 0);
line(80*0.7, 80*0.7, 100*0.7, 100*0.7);
line(-80*0.7, 80*0.7, -100*0.7, 100*0.7);
line(80*0.7, -80*0.7, 100*0.7, -100*0.7);
line(-80*0.7, -80*0.7, -100*0.7, -100*0.7);
text(parseInt(r[13]),-20,0);
text("kts",15,0);
noFill();
if(int(r[13])>0){
arc(0, 0, 150, 150, radians(r[14]+r[8]-105),radians(r[14]+r[8]-75));
}
strokeWeight(3); // Default
popMatrix();
}
}
133