Está en la página 1de 142

UNIVERSIDAD NACIONAL DE

EDUCACIÓN A DISTANCIA

Ingeniería Industrial

PROYECTO
Fin de Carrera

SISTEMA DE ASISTENCIA AL PILOTO EN ATERRIZAJES DE


HELICÓPTEROS EN CONDICIONES DE BROWN-OUT (BHLAS).

Noviembre 2014

ESCUELA TÉCNICA SUPERIOR


DE INGENIEROS INDUSTRIALES
UNIVERSIDAD NACIONAL DE
EDUCACIÓN A DISTANCIA
S

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

ESCUELA TÉCNICA SUPERIOR


DE INGENIEROS INDUSTRIALES
UNIVERSIDAD NACIONAL DE
EDUCACIÓN A DISTANCIA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA, ELECTRÓNICA Y DE CONTROL

TÍTULO SISTEMA DE ASISTENCIA AL PILOTO EN ATERRIZAJES DE HELICÓPTEROS EN CONDICIONES


DE BROWN-OUT (BHLAS, Brown-Out Helicopter Landing Aid System).

AUTOR

DIRECTOR

CODIRECTOR

PONENTE

ESCUELA TÉCNICA SUPERIOR


DE INGENIEROS INDUSTRIALES
TÍTULO DEL PROYECTO

SISTEMA DE ASISTENCIA AL PILOTO EN ATERRIZAJES DE HELICÓPTEROS EN


CONDICIONES DE BROWN-OUT (BHLAS, Brown-Out Helicopter Landing Aid System).

(A rellenar por el Tribunal Calificador)

TRIBUNAL CALIFICADOR

PRESIDENTE: _________________________________________________________
_________________________________________________________

VOCAL _________________________________________________________
_________________________________________________________

SECRETARIO _________________________________________________________
_________________________________________________________

FECHA DEFENSA ___ de _________________ de _______

CALIFICACIÓN _________________________________________________________

Vocal Presidente Secretario

Fdo.:_________________ Fdo.:_________________ Fdo.:_________________

CÓDIGOS UNESCO
ÍNDICE

Lista de símbolos ........................................................................................................... vi

CAPÍTULO 1. INTRODUCCIÓN...................................................................................... 1
1.1 Objetivos del proyecto ............................................................................................ 1
1.2 Motivación personal ............................................................................................... 1
1.3 Resumen ................................................................................................................ 2

CAPÍTULO 2. CONCEPTO DE BROWNOUT ................................................................. 3


2.1 Brownout/Whiteout ................................................................................................. 3
2.2 Estadísticas de accidentes .................................................................................... 5
2.3 Exposición del problema ........................................................................................ 8
2.3.1 Fenómenos externos no modificables ................................................................. 8
2.3.1.1 Fenómenos debidos al diseño de la aeronave ................................................. 8
2.3.1.2 Fenómenos debidos al entorno/ambiente ........................................................ 9
2.3.2 Fenómenos modificables .................................................................................. 10
2.3.2.1 Velocidad vertical de aproximación ................................................................ 10
2.3.2.2 Actitud de la aeronave en el momento de la toma ......................................... 11
2.3.2.3 Desplazamientos laterales en el momento de la toma ................................... 11
2.3.2.4 Falta de información sobre la altura sobre el suelo ........................................ 12
2.4 Situación actual .................................................................................................... 12
2.5 Análisis de posibles soluciones ............................................................................ 22
2.5.1 Falta de conciencia situacional sobre la aeronave ............................................ 22
2.5.2 Falta de conciencia situacional sobre la zona de aterrizaje .............................. 22
2.5.3 Posibles soluciones ........................................................................................... 23

CAPÍTULO 3. SISTEMA BHLAS (Brownout Helicopter Landing Aid System) ............... 26


3.1 Filosofía del sistema BHLAS ................................................................................ 26
3.2 Concepto del sistema BHLAS .............................................................................. 26
3.2.1 Sensores ........................................................................................................... 27
3.2.2 Unidad de Control ............................................................................................. 34
3.2.3 Interfaz hombre-máquina .................................................................................. 35
3.2.4 Prototipo HE332-01 ........................................................................................... 36
3.2.5 Helicóptero AS332 SuperPuma ........................................................................ 39
3.3 Presentación en cabina ........................................................................................ 43
3.3.1 Tipos de representación ................................................................................... 43
3.3.2 Tipos de simbología .......................................................................................... 44
3.3.3 Sensores utilizados ........................................................................................... 45
3.3.3.1 Sensores Radar ............................................................................................. 45
3.3.3.2 Sensores Láser .............................................................................................. 46
3.3.3.3 Sensores Electro-ópticos pasivos .................................................................. 46
3.4 Sistemas actuales en el mercado ........................................................................ 47

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

CAPÍTULO 5. SOFTWARE ........................................................................................... 70


5.1 Lenguaje Processing ............................................................................................. 71
5.2 Lenguaje Wiring .................................................................................................... 73
5.3 IDE Arduino (Integrated Development Environment) ............................................ 73
5.4 Formulaciones ....................................................................................................... 76
5.4.1 Cálculo de distancias (alturas) ........................................................................... 76
5.4.2 Cálculo de la inclinación del terreno ................................................................... 76
5.4.3 Cálculo del desplazamiento horizontal ............................................................... 77
5.4.4 Cálculo de la velocidad vertical (régimen de descenso) ..................................... 79
5.5 Líneas de programación básicas........................................................................... 79

CAPÍTULO 6. EXTRAPOLACIÓN DEL PROTOTIPO AL AS332 (SuperPuma) ............ 87


6.1 Sistemas de representación en cabina.................................................................. 87
6.1.1 ANVIS-HUD........................................................................................................ 87
6.1.2 Display convencional .......................................................................................... 88
6.2 Sensores reales .................................................................................................... 89
6.2.1 Radioaltímetros .................................................................................................. 89
6.2.2 Giróscopos ......................................................................................................... 90

CAPÍTULO 7. PRUEBAS .............................................................................................. 91


7.1 Pruebas en tierra Prototipo HE332-01................................................................... 91
7.2 Pruebas en vuelo AS332 ....................................................................................... 93
7.3 Maniobra recomendada......................................................................................... 95

CAPÍTULO 8. CONCLUSIONES ................................................................................... 97


8.1 Eficiencia del sistema BHLAS ............................................................................... 98
8.2 Facilidad de implementación ................................................................................. 98
8.3 Líneas futuras........................................................................................................ 99

iv
BIBLIOGRAFÍA ..................................................................................................................... 101

APÉNDICE I. LÍNEAS DE PROGRAMACIÓN…………………………………………....106


APÉNDICE I.1 Líneas de programación en Arduino.
APÉNDICE I.2 Líneas de programación en Processing.

APÉNDICE II. FICHAS TÉCNICAS SISTEMAS ( DATA SHEETS)……………………..135


APÉNDICE II.1 Placa Arduino ATMega 2560.
APÉNDICE II.2 Acelerómetro ADXL345.
APÉNDICE II.3 Giróscopo ITG 3200.
APÉNDICE II.4 Compass HMC5883L.
APÉNDICE II.5 GPS FGPMMOPA6H.
APÉNDICE II.6 Barómetro MPL3115A2.
APÉNDICE II.7 Ultrasonidos MUSRF05.

Currículum Vitae del autor ...................................................................................................... 104

v
LISTA DE SÍMBOLOS

AGL Above Ground Level


AVS Acoustic Vector Sensor
BERP British Experimental Rotor Programme
BLAST Brownout Landing Aid System Technology
BOSS Brownout Symbology System
BHLAS Brownout Landing Aid System
CFD Computacional Fluid Dynamics
CI Circuito Integrado
DP Director del Proyecto
DVE Degraded Visual Environment
DoD Department of Defence
ETSII Escuela Técnica Superior de Ingenieros Industriales
GP Glide Path
GPS Global Position System
GS Glide Slope
HALS Helicopter Autonomous Landing System
HDG Heading
HDD Head Down Displays
HDTS Helmet Display Tracker System
HLZ Helicopter Landing Zone
HMDS Helmet Mounted Displays Systems
HOCAS Hands On Collective And Stick
HUD Head Up Displays
HSI Horizontal Situation Indicator
ICPS In Circuit Serial Programming
IDE Integrated Development Environment
IGE In Ground Effect
ILS Instrumental Landing System
IMU Inertial Measure Unit
ISAF International Security Assistance Force
I2C Inter-Integrated Circuit
MEMS Microelectromechanical Systems
NAAPS Naval Aerosol Analysis Prediction System
NASA National Aeronautic and Space Administration
NVD Night Vision Devices
NVG Night Vision Goggles
OACI Organización Aviación Civil Internacional
OGE Out Ground Effect
ONU Organización de Naciones Unidas
OTAN Organización del Tratado del Atlántico Norte
PCB Print Circuit Board
PFC Proyecto Fin de Carrera
PR Personnel Recovery

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

1.1 Objetivo del proyecto

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.

Antes de profundizar en el proyecto, se debe tener en cuenta que el sistema BHLAS


cuenta con las siguientes ventajas e inconvenientes:

a. Es un sistema considerablemente más barato y simple que los diseños que


están desarrollándose en la industria, tales como la representación sintética en
3D.
b. Al tratarse de un interface con el piloto, no es necesario una complicada
integración con el resto de sistemas con que cuenta un helicóptero.
c. Proporciona información de los mínimos parámetros para realizar el aterrizaje
con garantías, evitando saturar la piloto con datos innecesarios.
d. No puede discriminar respecto a las posibles colisiones con objetos verticales en
la zona de aterrizaje, por lo que solo puede asistir al piloto en tomas en zonas
aisladas.

El prototipo de dicho sistema está basado en la plataforma Arduino, posteriormente


siguiendo la misma filosofía, poder extrapolarlo al modelo de helicóptero que se
considere, por lo que este proyecto desarrollará principalmente el prototipo en Arduino
(HEX332-01) y la filosofía de funcionamiento.

Básicamente es un sistema autónomo que proporciona al piloto, a la hora del aterrizaje,


en un interfaz (display) información integrada sobre:

a. Actitud de la aeronave. (información de alabeo-Roll y cabeceo-Pitch).


b. Inclinación de la zona de toma. (información de grados de desnivel).
c. Desplazamientos horizontales. (información sobre desplazamientos laterales).
d. Altura sobre la zona de toma. (información de distancia al suelo).
e. Régimen/velocidad de descenso (información de velocidad vertical).
f. Rumbo de aproximación. (información del rumbo magnético).
g. Coordenadas de la posición de la zona de toma.

1.2 Motivación personal

Según conclusiones del Departamento de Defensa de los EEUU (U.S Department of


Defence) en el año 2007;

“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

BHLAS es un sistema 2D (2 dimensiones) de simbología autónomo que proporciona


información, para un aterrizaje seguro, de manera integrada al piloto en la parte más
crítica de la toma bajo condiciones de brownout, cuando este pierde las referencias
exteriores.

Representa información sobre la actitud de la aeronave (alabeo-Roll y cabeceo-Pitch),


inclinación de la zona de toma, desplazamientos en el plano horizontal,
velocidad/régimen de descenso, altura sobre la zona de aterrizaje y rumo de
aproximación. Esta información integrada se considera la mínima imprescindible para
poder realizar un aterrizaje sin referencias exteriores debido a una degradación del
campo visual.

Dicho sistema no está enfocado a ser empleado en helicópteros de nueva generación,


que probablemente contarán con sistemas de apoyo mucho más avanzados y
presentarán una imagen completa de la zona de aterrizaje. Por ello, una de las
limitaciones del sistema es el no poder dar información sobre los posibles objetos
verticales en la zona, por lo que solo puede asistir al piloto en tomas en zonas aisladas.

Hoy en día existen diferentes aproximaciones en la industria mucho más complejas en


su desarrollo e implementación, como el 3D Flash LADAR2 (que proporciona una
imagen de 3 dimensiones basado en tecnología láser), el sistema HALS 3 basado en
una combinación de sensores electrópticos y radáricos, el proyecto denominado
BLAST 4 con simbología BOSS-Brownout Symbology System o el sistema AVS-
Augmented Visionics System. A la finalización de este proyecto todas estas iniciativas
se encontraban en desarrollo.

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.

La presentación podrá implementarse tanto en displays convencionales HDD (Head


Down Displays), HUD (Head Up Displays) o en HMDS (Helmet Mounted Displays
Systems).

CAPÍTULO 2. CONCEPTO DE BROWN-OUT

2.1 Brownout/Whiteout

Hoy en día existen multitud de definiciones a cerca del fenómeno denominado


“Brownout”, una de ellas bastante descriptiva es la siguiente:

“Degradación de la visibilidad producida por el polvo o la arena en suspensión cuando


se realiza una aproximación a toma en una zona no preparada. Este fenómeno puede
causar accidentes fatales debido a la desorientación espacial (Spatial Desorientation) y
la pérdida de conciencia de la situación (SA-Situational Awardeness). Este fenómeno
se produce sobre todo durante la toma de helicópteros debido a las nubes de polvo
producidas por la circulación del aire debido al movimiento del rotor principal”. (Ver figura
2.1 y 2.2).

Durante ensayos realizados se ha logrado medir concentraciones de polvo en


suspensión de hasta 2,5g/m3 durante aterrizajes en zonas desérticas. A partir de una
concentración entre 160-320 microg/m3 según el modelo NAAPS 5 se puede hablar de
una reducción de la visibilidad hasta unos 2 km debido a la presencia de partículas
sólidas muy pequeñas como polvo, arcilla, cenizas o arena en suspensión.

Debido a la experiencia obtenida de accidentes anteriores se puede decir que


normalmente la degradación visual comienza en los últimos 80 -70ft de la
aproximación.

La denominación “Whiteout” se utiliza cuando se produce la misma degradación visual


pero en despegues y aterrizajes sobre zonas nevadas con nieve polvo, cuando esta no
está compactada sino suelta. En este caso se puede afirmar que los riesgos son
idénticos que en el caso del brownout.

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:

“Helicopter brownout is a dangerous phenomena experienced by many helicopters


when making landing approaches in dusty environments, whereby sand or dust
particles become swept up in the rotor outwash and obscure the pilot’s vision of the
terrain. This is particularly dangerous because the pilot needs those visual cues from
their surroundings in order to make a safe landing”.

Figura 2.2 Helicóptero CH-53 aterrizando en Afganistán.

Definición adoptada por la OTAN 7:

“Brownout is the condition developed by re-circulating rotor downwash as a helicopter


lands or takes off in an arid or a snowy environment. The resultant mishaps due to the
Degraded Visual Environment (DVE) are a serious problem, especially for operations in
Afghanistan, Iraq, and Africa. It is a $100M/yr problem in the US service alone”.

2.2 Estadísticas de accidentes

Durante la denominada I Guerra del Golfo (1990-91) varios helicópteros militares de la


coalición se perdieron durante tomas y despegues bajo condiciones de brownout. En la
década transcurrida desde entonces hasta la Operación Libertad Duradera (2001), el
Ejército de los EEUU registró más de 40 casos de accidentes durante el entrenamiento
de sus tripulaciones en el Centro Nacional de Entrenamiento en California.
6
National Aeronautic and Space Administration.
7
Organización del Tratado del Atlántico Norte.

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).

Figura 2.3 Helicóptero SuperPuma HD21-12, AGOSTO 2012 Afganistán.

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).

2.3 Exposición del problema


Para poder estudiar el problema, primero deberemos comentar que en el fenómeno de
brownout intervienen una serie de factores externos, difícilmente modificables y otros
factores que también afectan, pero pueden modificarse para mitigar su efecto y lograr
reducir el número de accidentes provocados por ellos.

2.3.1 Fenómenos externos no modificables


Respecto a los primeros, difícilmente modificables, y que afectan a la probabilidad y la
gravedad de dicha degradación visual, se pueden dividir en factores de diseño de la
aeronave y factores debidos al ambiente/entorno.

2.3.1.1 Fenómenos debidos al diseño de la aeronave.

• Carga de disco del rotor.

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.

• Configuración del rotor.

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.

• Tipo de tren de aterrizaje.

Básicamente, hablando de trenes de aterrizaje, existen dos tipos, tren de


aterrizaje de ruedas y tren de aterrizaje de patines. El sistema de tren de patines
se basa en la disposición de unos largueros tubulares unidos al fuselaje
mediante travesaños curvados y cuyo diseño permite la absorción de impactos

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.

El sistema de tren de ruedas está basado en un conjunto de ruedas retráctiles o


no acopladas a la zona inferior del fuselaje del helicóptero mediante un sistema
de suspensión que permite la absorción de impactos derivados de la operación
de la aeronave.

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”).

2.3.1.2 Fenómenos debidos al entorno/ambiente

• Composición del suelo.

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.

• Inclinación del terreno.

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.

El viento y otros fenómenos meteorológicos adversos pueden provocar


accidentes por si solos a la hora del aterrizaje, pero en el caso que nos atañe, si
además del fenómeno de brownout se suma el viento en dirección del sector
trasero, esto provocaría una mezcla explosiva que haría complicada la toma
hasta para tripulaciones muy experimentadas.

• 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.

Figura 2.5 Helicóptero SuperPuma aterrizando en una zona no preparada (Afganistán).

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:

2.3.2.1 Velocidad vertical de aproximación (sobre todo régimen/velocidad de


descenso).
Una velocidad de descenso excesiva (límite en el AS332 900ft/min) puede
provocar daños al tren de aterrizaje, como la rotura asimétrica que provocará el
vuelco lateral, además de daños catastróficos en el rotor principal y fuselaje. Se
debe tener en cuenta que aunque el tren de aterrizaje este diseñado para
absorber regímenes de descenso elevados, estos no serían soportados por la
tripulación.

2.3.2.2 Actitud de la aeronave en el momento de la toma (Pitch y Roll).


Una actitud excesiva en cabeceo (Pitch) y sobre todo en alabeo (Roll), fuera de
los límites de la aeronave puede provocar el denominado Vuelco Lateral Estático
(Static rollover) que no es más que el fenómeno que se experimenta en
aterrizajes de helicópteros en pendientes o terrenos irregulares donde el
helicóptero empieza a volcar cuando el centro de gravedad salga de la línea que
une las ruedas del tren de aterrizaje o los extremos de los patines. Este
fenómeno puede suceder si se aterriza en pendientes pronunciadas o existe un
cambio en la distribución del peso a bordo.

Figura 2.6 Vuelco Lateral Estático (Static rollover).

11
2.3.2.3 Desplazamientos laterales en el momento de la toma

En el caso de realizar la toma con pequeños desplazamientos laterales puede


aparecer el denominado Vuelco Lateral Dinámico (Dinamic rollover). Este
fenómeno se produce ya que todo helicóptero sufre una tendencia de rodadura
lateral, llamada estabilidad dinámica cuando se levanta de la superficie.

Dicho vuelco comienza cuando el helicóptero comienza a pivotar alrededor de su


patín o rueda. Esto puede ocurrir por una variedad de razones, incluyendo el
hecho de no eliminar un amarre o dispositivo de sujeción, o si el patín o rueda de
aterrizaje contacta con un objeto fijo mientras se desplaza hacia un lateral.

Figura 2.7 Vuelco Lateral Dinámico (Dinamic rollover).

2.3.2.4 Falta de información sobre la altura real sobre el suelo.


Esto se produce cuando debido a la degradación visual el piloto, este no tiene
una referencia precisa de la altura a la que se encuentra la aeronave sobre la
zona de aterrizaje, pudiendo, tanto en el caso de estar demasiado bajo provocar
un accidente por Vuelco Lateral Dinámico, como en el caso de estar demasiado
alto ocasionar daños a la aeronave por una toma demasiado dura, debido a un
elevado régimen de descenso.

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.

Figura 2.8 AS330 Puma (801 Escuadrón).

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.

Figura 2.9 AS332 SuperPuma (803 Escuadrón).

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).

Figura 2.10 Sikorsky S-76 (Ala 78).

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).

Figura 2.11 EC-120 (Ala 78).

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).

Figura 2.13 CH-47 (Fuerzas Aeromóviles del Ejército de Tierra FAMET).

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).

Figura 2.14 SH-3 Armada Española

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).

Figura 2.15 SH-60 Armada Española

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).

Figura 2.15 AB-212 Armada Española

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

Todas las medidas y técnicas de aterrizaje bajo condiciones de brownout desarrolladas


o en desarrollo están enfocadas principalmente a evitar las dos siguientes situaciones:

2.5.1 Falta de Conciencia Situacional (en inglés SA13) sobre la actitud de la


aeronave.

• Desorientación espacial del piloto.


A la hora de la toma, la nube de polvo puede causar una falsa ilusión de un
horizonte inclinado. Un piloto puede instintivamente tratar de nivelar la aeronave
con respecto al falso horizonte. Todo lo anterior provoca que el piloto haga
correcciones sobre los controles de vuelo de manera incorrecta, que pueden
conducir a un accidente/incidente cuando la aeronave se encuentra cerca del
suelo. En aterrizajes nocturnos todo esto se complica ya que los dispositivos de
visión nocturna reducen el campo de visión y por tanto las referencias.

• Desplazamientos inadvertidos en el plano horizontal.


La estela del rotor moviendo la arena de la zona de toma puede dar lugar al
piloto a experimentar la ilusión de movimiento del helicóptero cuando en realidad
está en vuelo estacionario. Desplazamientos inadvertidos de la aeronave, sobre
todo laterales pueden producir el denominado “Dinamic Rollover” que se
produce cuando el helicóptero pivota sobre una rueda o skid 14 del tren principal,
cuando el ángulo crítico de rollover se sobrepasa el helicóptero no puede
recuperar la posición vertical y vuelca sobre uno de sus costados.

• Elevada velocidad vertical.


La aproximación incontrolada debido a una excesiva velocidad vertical puede
producir daños en el tren de aterrizaje, en la estructura (fuselaje), en las palas
del rotor principal o de cola, en este último caso podría producir pérdida del
vector anti-par.

2.5.2 Falta de Conciencia Situacional (en inglés SA) de la zona de aterrizaje.

• Colisión con obstáculos.


La falta de referencias exteriores puede producir desplazamientos fuera de la
zona de toma y por tanto colisión con obstáculos que se encuentren fuera de
dicha área.

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.

• Tamaño de la zona menor de lo pensado.


Las dimensiones de las zonas de aterrizaje pueden parecer de un tamaño
adecuado cuando la aeronave de encuentra por encima de 500ft y luego en la
aproximación a unos 100ft, la tripulación darse cuenta que no reúne las
dimensiones necesarias para la toma, esto en caso de brownout, al perder las
referencias exteriores, puede producir incidentes/accidentes.

2.5.3 Posibles soluciones


Actualmente existen varias medidas para prevenir, parcialmente, los accidentes
relacionados con dicho fenómeno ya que o bien no están todavía implementados o por
sus características necesitan de apoyo en tierra. En el capítulo 3.4 se desarrollarán
con mayor profundidad.

• Preparación del terreno.

Tratamientos del terreno como la compactación de la tierra, que su eficacia


dependerá del tipo de terreno, extender productos químicos como Durasoil, o el
montaje de mallas sobre la superficie de aterrizaje como Helimat / Mobi-Mat
HELIPAD.
Una de las acciones muy rudimentarias que solventarían el problema sería
poder humedecer la zona de aterrizaje con anterioridad, claro está que esto no
es posible en todos los casos.

• Técnicas de aterrizaje a toma directa evitando no perder las referencias visuales


durante toda la aproximación, existen dos tendencias:

i. Aterrizaje corto (Short Run-On), el cual se efectúa aproximándose


con una senda tendida, en el momento de la toma se llega con
algo de velocidad longitudinal, de este modo se evita la
recirculación del polvo antes del contacto con el suelo. No es
recomendable en HLZ 15 con pendiente, superficies blandas o de
tamaño reducido.

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.

• Integración de Sistemas Visión sintética (sistemas 2D/3D).

Son sistemas que reproducen en un interfaz de forma sintética en dos o tres


dimensiones la zona de aterrizaje, estos son algunos ejemplos que se están
desarrollando en la actualidad:

La empresa israelita Elbit System está desarrollando un sistema denominado


DUST-OFF que proporciona una imagen/maping 3D sintética en tiempo real de
la zona de aterrizaje mediante una integración del sistema SWORD16 y el
ANVIS/HUD®. Dicha integración en un HDTS (Helmet Display Tracker System)
representa una simbología intuitiva que ayuda al piloto a volar sin necesidad de
referencias visuales exteriores.

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.

• Modificaciones aerodinámicas como el "rotor con alas" en el AgustaWestland


EH101.

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.

El fabricante en su catálogo promocional [29] en el apartado de capacidades


expone lo siguiente:

Figura 2.16 EH.101 “Merlin”

ALL WEATHER CAPABILITY

• The AW101 is designed to operate from ships in extreme weather conditions.


• All weather operational capability from arctic (-45ºC) to tropical/desert (+50ºC).
• De-icing system enables flight in known icing conditions.
• 40 knots crosswind hover capability.
• Rotor design reduces “brown-out” effect.

• Pantallas no visuales de posición y datos de orientación derivados de sensores


adecuados, tales como los Sistemas de Conciencia Situacional Táctiles (TSAS).
Estos sistemas proporcionan información como posición del cuerpo, altitud,
velocidad, aceleraciones etc…reduciendo la posible desorientación espacial y
aumentando la conciencia situacional.

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

CAPÍTULO 3. SISTEMA BHLAS (Brownout Helicopter Landing Aid System)

3.1 Filosofía del sistema BHLAS

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.

3.2 Concepto del sistema BHLAS

El sistema BHLAS es el desarrollo teórico-práctico (mediante un prototipo a escala 1:10


del helicóptero AS332 denominado HEX332-01) para la obtención de una presentación
2D de una serie de parámetros necesarios para un aterrizaje controlado en un
ambiente de visibilidad degradada.

Estos son los pasos que se han seguido durante el proyecto:


1. Desarrollar el prototipo HEX332-01 a escala 1:10, basado en Arduino para la
posterior representación en un PC de la información buscada.

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).

GPS IMU SIST. BAROMÉTRICO

SENSORES ULTRASÓNICOS

MICROPROCESADOR
PANTALLA

Figura 3.1 Esquema sistema BHLAS.

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.

Figura 3.3 Acelerómetro MEMS.

IMU (unidad de medida inercial)


Las unidades de medición inercial son dispositivos electrónicos que miden la velocidad
angular y la aceleración que experimenta la aeronave, usando una combinación de
acelerómetros y giróscopos.
Básicamente las IMU’s son sistemas que constan de diversos componentes eléctricos y
electrónicos montados en un circuito impreso (PCB). En nuestro caso la IMU contiene
un acelerómetro, un giróscopo y un magnetómetro.

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.

Figura 3.5 Sistema GPS para proporcionar posició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.

Figura 3.6 Esquema medidor de distancias ultrasonidos.

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.

Figura 3.7 Esquema sistema barométrico (Vertical Speed Indicator).

3.2.2 Unidad de Control (integración y procesamiento de la información)


En relación con la unidad de control, esta es básicamente un procesador que recoge la
información de una serie de sensores, la procesa y la representa de manera
comprensible para el hombre.
Se ha elegido la plataforma Arduino para el diseño ya que proporciona facilidad en el
uso y programación, además tiene unos costes asequibles. A diferencia de otros
microprocesadores esta plataforma facilita la configuración gracias a unas librerías que
se pueden encontrar en su página oficial [30].
Arduino sigue la línea de código abierto y está basado en una sencilla placa con
entradas y salidas analógicas y digitales, en un entorno de desarrollo que luego se
implementa con el lenguaje de programación Processing.

35
Figura 3.8 Placa Arduino.

3.2.3 Interface hombre-máquina (Displays, Head Mounted Displays, visión


sintética, táctil)
El interfaz puede ser una pantalla de las denominadas Head Down Displays, Head Up
Displays, integrada en el visor del casco HMDS (Helmet Mounted Display System). En
nuestro caso la información del prototipo aparecerá en la pantalla de un PC.
En una misma pantalla se integrará información sobre altura, presentación de actitud,
presentación de desplazamientos en el plano horizontal, rumbo, velocidad vertical e
inclinación del terreno.
BHLAS está diseñado para funcionar por debajo de una altura sobre el suelo (AGL 20)
de 70 ft, la aproximación se realiza en visual con referencias exteriores hasta el
momento en el que el piloto a los mandos deja de tener dichas referencias exteriores
debido al efecto del brownout.
Es un sistema de bajo coste en comparación con otros sistemas en desarrollo, de
integración fácil ya que solo proporciona información y no afecta a los sistemas de la
aeronave, puede ser integrado en un HMDS (Helmet Mounted Displays System) y es
una solución inmediata para helicópteros que hoy en día tienen una vida estimada
hasta el año 2025/30.

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).

3.2.4 Prototipo HEX332-01 (Arduino)


El prototipo está realizado sobre un chasis de madera de 1.20 x 0.40 metros (el dibujo
en planta del AS332 21 está a una escala de 1:10) donde se monta una placa
(protoboard) con conectores de alimentación donde a su vez están dispuestos la IMU,
el sensor GPS, el sensor barométrico y el microprocesador. Fuera y orientados hacia
abajo se encuentran una serie de medidores de distancia ultrasónicos. Tanto la IMU
como los restantes sensores se conectan al microprocesador vía la placa de
conectores mediante cables de Ø=15 cm. El microprocesador Arduino Mega 2560 a su
vez se conecta al PC mediante un conector mini USB.

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).

Figura 3.11 Incorporación de la Protoboard en el chasis (Mayo 2014).

38
Figura 3.12 Conjunto completo a falta del sensor del GPS y de la conexión con el PC (Mayo 2014).

• La IMU Stick 9DOF, que está montada sobre la placa de conectores, es un


pequeño módulo con sensores que permite obtener 9 grados de libertad. Incluye
un acelerómetro ADX345, un magnetómetro HMC5883L y un giróscopo ITG-
3200, todos ellos de 3 ejes. El stick dispone de una sencilla interfaz I2C que
permite comunicarse con los sensores y recuperar sus valores con tan sólo 2
cables.
• La placa Arduino Mega 2560, acoplada junto a la placa de conectores utiliza el
procesador AVR ATmega 2560 a 16 Mhz, alimentado a 5 V, tiene 54 pines
digitales y 16 analógicos y una memoria flash de 256 Mb.

• El módulo barométrico BMP180, es un sensor de presión barométrica 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. Dispone de dos
resistencias pull-up de 4,7k sobre el bus I2C.

• Los medidores de distancia ultrasónicos funcionan como un sonar mediante


ultrasonidos y es capaz de detectar objetos a una distancia de entre 2
centímetros a 3 metros y una resolución de 3mm. Dispone de un indicador LED
y tan sólo requiere de un pin para su funcionamiento. El sensor envía
ultrasonidos por un lado y mide el tiempo de rebote del sonido.

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.

Después de exponer tanto el esquema en su globalidad como cada uno de los


componentes del prototipo, a continuación vamos a explicar que elementos nos
proporcionan la información que aparece en la pantalla, o lo que es lo mismo, vamos a
responder a la siguiente pregunta ¿Qué mide qué?
Para medir la actitud (Pitch y Roll) que aparece representado mediante el horizonte
artificial en el centro del display, utilizaremos el acelerómetro ADX345 y el giróscopo
ITG-3200 que aparecen integrados en la IMU.
Para medir altura, en 1/10 pies (ft), que aparece representado por un valor numérico,
utilizaremos medidores ultrasónicos del tipo MUSRF05.
Para medir la inclinación del terreno, que aparece representado mediante una
simbología donde aparece la inclinación lateral en grados, utilizaremos un par de
medidores ultrasónicos Paralax PING colocados en los extremos del prototipo.
Para medir la velocidad vertical (Rate of Descent), en 1/10 pies por minuto (ft/min), que
aparece representado mediante un variómetro semejante a los instrumentos analógicos
aeronáuticos, utilizaremos el módulo barométrico BMP 180.
Para medir el desplazamiento horizontal lateral, que aparece representado por una
simbología donde el movimiento lateral se identifica por la iluminación de puntos a lo
largo de una línea reglada, utilizaremos un emisor y una serie de receptores
ultrasónicos Paralax PING y apoyándonos en el módulo GPS MTK3339.
Para medir el rumbo, que aparece representado por un valor numérico, utilizaremos el
magnetómetro de la IMU, HMC5883L. Además como ayuda adicional el módulo GPS
(MTK3339) nos proporcionará coordenadas geográficas de la posición de la aeronave.

3.2.5 Desarrollo y extrapolación a un modelo real (AS332 SuperPuma)

Como ya se ha comentado con anterioridad, el objetivo fundamental de este PFC es


exponer la filosofía de presentación/simbología 2D en un prototipo para posteriormente
proyectarla a un modelo real. En este caso en el AS332 Superpuma que opera el
Ejército del Aire.
El AS332 SuperPuma es un helicóptero de tamaño medio, bimotor y 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 Eurocopter. Realizó su primer vuelo en
1978 y el primer modelo fue adquirido por el Ejército del Aire en 1986.

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

Figura 3.13 AS332 SuperPuma (Ejército del Aire).

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:

• Giróscopos GV 76, que nos proporciona información de actitud de la aeronave


tanto en cabeceo como en alabeo, además proporciona información al piloto
automático para los modos de mantenimiento de rumbo, altitud, air speed etc…

• Radioaltímetro AHV8, que nos proporcionará altura, además de información


sobre la inclinación del terreno.

• ANVIS-HUD como interfaz hombre-máquina, en lugar de pantallas


convencionales HDD (Head Down Displays), integrando toda la información al
piloto tanto de día como de noche.

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.

3.3.1. Tipos de representación

• Head Down Display (también denominado Panel-mounted Displays)


Pantallas convencionales colocadas en la cabina de instrumentos, el piloto debe mirar
dentro para obtener la información requerida dejando así de ver “fuera” o lo que es lo
mismo, sin apoyarse en referencias externas a la aeronave.

• 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.

3.3.2 Tipos de simbología


Existen dos vías de desarrollo respecto a la simbología para aterrizajes en situaciones
de degradación de visión, una que proporciona la información en 2 dimensiones y otra
cuya representación es en 3 dimensiones.

• 2-D Low Speed Symbology – Brownout Symbology System (BOSS)


Uno de los sistemas de simbología de baja velocidad es el Brownout Symbology
System (BOSS) desarrollado por el centro de experimentación del Ejército de los
EEUU, AMRDEC (Aviation and Missile Research Development and Engineering
Center). El sistema BOSS fue diseñado tanto para los Panel-Mounted Displays como
para los HMDS (Helmet Mounted Displays System).
La última versión del BOSS ofrece información de actitud (Pitch y Roll), velocidad sobre
el terreno (Ground Speed), altura sobre el terreno en una página denominada “Hover-
Approach-Take-Off (HAT) page”. Una escala logarítmica es usada para la información
de velocidad por debajo de 10Kts y una altura inferior a 100ft. El símbolo del objetivo se
activa a partir de 0.8 NM. También proporciona información de velocidad vertical y el
correcto régimen de descenso.
(Ver figura 3.16).

• 3D Conformal Symbology Display System


Uno de los mayores logros para cualquier tipo de tecnología en ambientes de DVE 23 es
conseguir obtener una información lo más intuitiva posible, la simbología 3D
implementada en los HMDS muestra los símbolos lo más parecido al mundo real. La
gran diferencia entre la simbología 2D tradicional y la 3D es que mientras la primera
muestra información sobre navegación, velocidad, altura o sobre sistemas del
helicóptero, la segunda intenta representar el “mundo real” como referencias en tierra,
obstáculos o la senda de planeo idónea al punto de toma.
El sistema 3D de simbología virtual proporciona todas las ayudas necesarias para una
toma o despegue en condiciones de degradación visual. La intención es proporcional
un ambiente natural y seguro al piloto.

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.

Figura 3.16. 2D Brownout Symbology System (BOSS).

3.3.3 Sensores utilizados


Los sensores utilizados se pueden dividir en Radáricos, del tipo Láser y por último
Electro-ópticos pasivos.

3.3.3.1 Sensores Radar


Los actuales radares que usan los helicópteros como el radar de seguimiento del
terreno (Terrain Following Radar -TFR), el radar de proximidad con el terreno (Terrain
Avoidance Radar -TAR) o el radar meteorológico normalmente operan a una frecuencia
de 15 GHz, esta potencia impide ver a través de la nube de polvo. Los programas están
utilizando frecuencias (35-94 GHz) para garantizar la penetración de las ondas a través
del polvo que se forma en los aterrizajes.

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.

3.3.3.2 Sensores Láser


• Sensores 3D-LADAR
Estos sensores son capaces de generar una imagen 3D del campo visual frontal del
helicóptero en tiempo real. Tienen un alcance de unos 1000m y puede detectar cables
de 5mm de diámetro hasta 600m.
Al ser un sistema óptico tiene unas capacidades limitadas en presencia de niebla,
nubes, polvo y nieve.

3.3.3.3 Sensores Electro-ópticos pasivos

• Cámaras de TV dentro del espectro visible.


No pueden ver a través de las nubes de polvo si estas son muy densas, pero pueden
ser utilizados durante la primera parte de la aproximación.
• Sensor pasivo de imagen de onda milimétrica.
Estos sensores normalmente generan una imagen térmica pero operando a mayores
longitudes de onda pueden ver a través de niebla, nubes y polvo. Operan a una
frecuencia de 94 GHz y pueden utilizarse de noche o de día. A 94GHz la resolución es
de 3,2 mm, mientras que para una cámara IR o visible es de 10 y 5 micrómetros
respectivamente.
• Sensor de imagen térmica.
Estos sensores térmicos operan con una resolución entre los 3-12 micrómetros, no
pueden ver a través de la nube de polvo, algunos están diseñados para operar en el IR
lejano (20 micrómetros) para poder utilizarse en zonas con visibilidad algo degradadas.

47
HORIZONTE
ARTIFICIAL
COORDENADAS

HEADING

INCLINACIÓN
DEL TERRENO
VELOCIDAD
VERTICAL

DESPLAZAMIENTO
HORIZONTAL

ALTURA

Figura 3.17 Representación sistema BHLAS.

3.4 Sistemas actuales en el mercado

Respecto a los sistemas que existen actualmente totalmente desarrollados,


encontramos toda clase de soluciones alternativas que van encaminadas sobre todo a
la preparación del terreno de la zona de aterrizaje, mediante productos que
temporalmente evitan la recirculación del polvo o estructuras como mallas que se
colocan sobre dicha zona.
En este apartado expondremos iniciativas como la malla Helimet, desarrollada por la
empresa CGear, el fluido sintético Durasoil y el sistema basado en sensores acústicos
de la empresa Microflown Technologies.

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.

Helimat es además de ligera y fácil de desplegar, duradera en el tiempo, el tamaño de


cada segmento es de 20ft x 20ft (6.1m x 6.1m), combinando los segmentos se puede
construir el tamaño que se requiera según el tamaño del helicóptero. (Ver figura 3.18)

Figura 3.18 Helisupeficie realizada con Helimat.

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)

Figura 3.19 Tratamiento del terreno realizado con Durasoil.

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.

Figura 3.20 Sistema basado en sensores acústicos.

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.21 Gráfico velocidades de flujo alrededor de un UH-60.

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).

Figura 3.23 Gráfico de magnitud de velocidades alrededor de un EH101 (vista frontal).

Figura 3.24 Gráfico de magnitud de velocidades alrededor de un EH101 (vista lateral).

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

4.1 Estructura física

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.

b. Un software libre y multiplataforma ya que funciona con diferentes sistemas


operativos como Linux, MacOS o Windows.

c. Un lenguaje de programación libre, Arduino, similar a otros lenguajes de


programación con orientación a objetos existentes, donde el entorno de
desarrollo está basado en el lenguaje Processing. El protocolo de comunicación
que usa es I2C (Inter-Integrated Circuit o TWI, Two-Wire), donde se produce una
comunicación utilizando dos líneas para transmitir la información, una llamada
SDA que sirve para transferir los datos y otra SCL que sirve para enviar la señal
de reloj (señal binaria de una frecuencia periódica muy precisa que sirve para
coordinar y sincronizar los emisores y receptores).

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.

Memoria Flash: 32 KB (ATmega328) de los cuales 0.5 KB usados por bootloader


SRAM: 2 KB (ATmega328)
EEPROM: 1 KB (ATmega328)

• 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)

• Arduino Mega 2560


Más grande y potente placa, compatible con los shields de Duemilanove, Diecimila y
Uno. Basada en ATmega2560. Tiene 54 entradas/salidas analógicas y digitales (de las
cuales 14 proporcionan salida PWM), 16 entradas digitales, 4 UARTS (puertos serie
por hardware), un reloj de 16MHz, conexión USB, entrada de corriente, conector ICSP
y botón de reset. Contiene todo lo necesario para hacer funcionar el microcontrolador;
simplemente debe conectarse al ordenador con el cable USB o aliméntalo con un
trasformador o batería.

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

Unidad central ATMega 2560

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.

Es un microcontrolador de alto rendimiento, bajo consumo de energía y de 8 bits.


Arquitectura RISC avanzada, logra acercarse a ejecutar 1MIPS (millones de
instrucciones por segundo).

57
Las funciones del microcontrolador son las siguientes:

• Proveer un voltaje regulado y estable a los sensores mediante el uso de su regulador


de voltaje.

• 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.

• Enviar todos los datos obtenidos por el puerto serie al display.

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:

• VIN: entrada de alimentación cuando no se desea utilizar la USB como fuente.


• 5V: La fuente de voltaje estabilizado usado para alimentar el microcontrolador y
otros componentes de la placa.
• 3V3: Una fuente de voltaje a 3,3 voltios generada en el chip FTDI integrado en la
placa. La corriente máxima soportada es 50mA.
• GND: Pines de toma de tierra.

Figura 4.1 Placa Arduino ATMega 2650 montada en el prototipo.

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:

• Serie: 0 (RX) y 1 (TX), Serie 1: 19 (RX) y 18 (TX); Serie 2: 17 (RX) y 16 (TX);


Serie 3: 15 (RX) y 14 (TX): Usados para recibir (RX) y transmitir (TX) datos a
través de puerto serie TTL.

• Interrupciones Externos: 2 (interrupción 0), 3 (interrupción 1), 18 (interrupción 5),


19 (interrupción 4), 20 (interrupción 3), y 21 (interrupción 2): Estos pines se
pueden configurar para lanzar una interrupción según el comportamiento que
tenga el pin (valor LOW, valor HIGH, cambio de valor o cambio a flanco de
subida/bajada).

• PWM: de 0 a 13. Proporciona una salida PWM de 8 bits de valores de 0 a 255, a


través de la función analogWrite.

• SPI: 50 (SS), 51 (MOSI), 52 (MISO), 53 (SCK). Estos pines proporcionan


comunicación SPI (Serial Peripheral Interface, estándar para controlar casi
cualquier dispositivo electrónico digital que acepte un flujo de bits serie regulado
por un reloj).

• 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.

• I2C: 20 (SDA) y 21 (SCL). Soporte del protocolo de comunicaciones I2C usando


la librería Wire.

• Reset: Suministra un valor LOW para reiniciar el microcontrolador.

59
4.3 Sensores Arduino

4.3.1 Sensor ultrasonidos MUSRF05.

Éste sensor funciona como un sonar mediante ultrasonidos y es capaz de medir


distancias entre los 2 centímetros a los 3 metros. Dispone de un indicador LED y tan
sólo requiere de un pin para su funcionamiento. El sensor envía ecos de ultrasonidos
por un lado y recibe el eco por otro, mide el tiempo de rebote del sonido. En su pin de
salida podremos medir el ancho de pulso PWM en función de la distancia del obstáculo.
Es muy sencillo hacerlo funcionar con un Arduino o cualquier otro microcontrolador.
Internamente está constituido por un microcontrolador y dos cápsulas ultrasónicas de
40khz Una para el disparo y otra para recibir el eco.

Rango de medida: Entre 1.7 y 300cm


Ángulo de emisión: 15º
Tensión de alimentación: 5V
Frecuencia: 40Khz.
Duración mínima del pulso de disparo: 10us
Duración del pulso de eco: 100-25000us
Tiempo de espera entre medidas: 20ms

Figura 4.2 Sensores ultrasónicos MUSRF05.

60
Figura 4.3 Sensores ultrasónicos esquema de funcionamiento.

Figura 4.4 Sensores ultrasónicos montados sobre la Protoboard.

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.

Figura 4.5 Sensor barométrico situado a la derecha de la IMU.

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)

Figura 4.6 Sensor GPS Breakout Ultimate.

63
4.4 IMU 9 DOF RAZOR

El sistema de medición inercial 9DOF Razor IMU dispone de 3 sensores de alta


calidad- un giróscopo de tres ejes ITG3200, un acelerómetro ADXL345 de 3 ejes, y un
compás/magnetómetro HMC5883L de 3 ejes.
El conjunto proporciona 9 grados de libertad. Todas las salidas de los sensores son
procesadas por un microprocesador ATmega328 que envía a su vez la información por
su puerto serie.
La interfaz serie permite conectar tanto un conversor serie/USB, como un módulo
Bluetooth, XBee etc… para enviar los datos sin cables.

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.

Esta es un giróscopo de tres ejes de salida digital. El ITG-3200 incluye tres


convertidores analógicos a digital de 16 bits (ADCs) para la digitalización de las salidas
del giróscopo, un filtro pasa bajos interno seleccionable por el usuario y una interfaz
I2C modo rápido (400 kHz).

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.

Si la rotación es en sentido inverso a las manecillas del reloj, se producirá un voltaje en


sentido positivo, incrementándose respecto al voltaje en posición estable.
Si la rotación es en sentido a las manecillas del reloj, se producirá un voltaje en sentido
negativo, disminuyendo respecto al voltaje en posición estable.
Provee una excelente estabilidad en diferentes rangos de temperaturas, siendo más
eficiente en el rango de -40 ºC a 85 ºC.

Figura 4.8 Giróscopo ITG-3200.

65
• ADXL345 acelerómetro digital 3 ejes.

El ADXL345 es un acelerómetro pequeño, delgado, de bajo consumo de energía de 3


ejes con medidas de alta resolución (13 bits) hasta ±16g. Los datos de salida digitales
se configuran en 16 bits de complemento a dos y es accesible a través de SPI (3-cable
o 4-cable) o a través de la interface digital I2C.

El ADXL345 está completamente capacitado para medir la aceleración estática de la


gravedad en aplicaciones de mediciones de inclinación, así como también en
aceleraciones dinámicas resultantes de movimiento o de choques. Su alta resolución (4
mg/LSB) permite la medición de cambios en la inclinación de objetos de menos de 1.0°.

El ADXL345 es un acelerómetro MEMS de 3 ejes, de bajo consumo de energía,


tamaño reducido (4mm x 4mm x 1.45mm).
Este producto mide aceleración con un rango mínimo de escala total de ±3g. Puede
medir aceleración estática de la gravedad en aplicaciones de inclinación, o aceleración
dinámica proveniente de movimiento, vibración o golpes. Nos entrega información de
aceleración en cada uno de los ejes de medición (x, y, z).

Figura 4.9 Acelerómetro ADXL 345.

66
• HMC5883L magnetómetro digital.

El sensor de Honeywell HMC5883L es un circuito de montaje superficial diseñado para


medición de campos magnéticos tenues con una interfaz digital para aplicaciones de
compás digital o magnetometría. El sensor incluye lo más nuevo en tecnología de
Honeywell en sensores magneto-resistivo de alta resolución. El sensor funciona con el
protocolo I2C. Ideal para utilizarse con dispositivos móviles, netbooks, tablets,
electrónica de consumo, sistemas de auto navegación, etc…

Figura 4.10 Magnetómetro HMC 5883L.

67
4.5 Sistema de representación en cabina

La presentación de la información se puede enviar a una pantalla de ordenador o a un


dispositivo gráfico como la pantalla TFT LCD de 2.8 pulgadas (pantalla táctil resistiva)
que puede ser utilizada con los modelos Arduino UNO y MEGA para proyectos donde
se necesite una interfaz gráfica potente y sencilla. Dicha pantalla utiliza los pines
analógicos de Arduino para poder representar la información. Está basada en el
potente controlador ILI9341 y además dispone de un zócalo para tarjeta de memoria
Micro SD, con un total 65535 colores.

En nuestro caso, aunque se cuenta con dicha pantalla, se ha preferido no utilizarla y


representar la información directamente en la pantalla de un PC portátil.

La disposición de la información en la pantalla está basada en el principio de


comprobación cruzada (comprobación en T, ver Figura 4.12) utilizada en el vuelo con
reglas instrumentales IFR 30, en vuelo instrumental el piloto debe mantener al menos 4
parámetros, actitud mediante el horizonte artificial, rumbo mediante el HSI (Horizontal
Situation Indicator), IAS Indicated Air Speed, velocidad relativa respecto al aire
mediante el anemómetro y por último la altitud/altura mediante el
altímetro/rarioaltímetro.

Dentro del vuelo IFR, y más concretamente en aproximaciones instrumentales de


precisión como el ILS (Instrumental Landing System- sistema de ayuda a la
aproximación y el aterrizaje). Este sistema de control permite que la aeronave sea
guiada con precisión durante la aproximación a la pista de aterrizaje y, en algunos
casos, a lo largo de la misma.

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.

b) Localizador (LOC o localizer), establece el rumbo a mantener en todo momento para


realizar la aproximación con éxito.
c) Velocidad indicada (IAS; Indicated Air Speed). Nos da información de la velocidad
relativa respecto a aire con la que queremos realizar la aproximación, evitando entrar
en velocidades críticas como velocidades máximas estructurales o la velocidad de
pérdida de la aeronave.

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).

Figura 4.11 Sistema ILS indicando localizador y senda.

Figura 4.12 Comprobación cruzada de instrumentos en T.

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

La simbología que aparece en la pantalla se distribuye para lograr dos objetivos; en un


principio para conseguir la máxima de no saturar de datos innecesarios al piloto y por
otro lado para facilitar la comprobación cruzada que se describió en el apartado anterior
(apartado 4.5, página 64).

Los símbolos (Figura 4.13) para representar la información en el display, son los
siguientes:

• Pitch y Roll 1 en grados.


• Rumbo 2 en grados magnéticos.
• Inclinación del terreno 3 en grados.
• Desplazamiento lateral 4 en 0.1m/sg.
• Posición 5 en coordenadas (lon/lat).
• Velocidad vertical 6 en 0.1pies/ minuto (ft/min).
• Altura sobre suelo 7 en 0.1pies.

70
5

2 6

Figura 4.13 Pantalla BHLAS.

71
CAPITULO 5. SOFTWARE

Para el desarrollo del software, se ha empleado el lenguaje de Arduino, basado en


Wiring e implementado en C/C++, y cuyo entorno de programación (gráficos) se basa
en Processing.

En resumen, el microcontrolador de la placa Arduino se programa mediante el lenguaje


de programación Arduino y en su entorno de desarrollo (IDE 31 Arduino), la
representación se realiza en el IDE de Processing. (Ver Figura 4.1).

Arduino es una plataforma de desarrollo de computación física (physical computing) de


código abierto, basada en una placa con un sencillo microcontrolador y un entorno de
desarrollo para crear software (programas) para la placa. Arduino puede crear objetos
interactivos, leyendo datos de una gran variedad de interruptores y sensores, controlar
multitud de tipos de luces, motores y otros actuadores físicos. Los proyectos de Arduino
pueden ser autónomos o comunicarse con un programa (software) que se ejecute en
un ordenador (ej. Flash, Processing, MaxMSP).

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.

El entorno de Arduino incluye el concepto de "sketchbook": que es el lugar estándar


para el almacenamiento de sus programas (o "sketch"). Los "sketches" dentro de su
"sketchbook" pueden abrirse desde el menú File > Sketchbook o desde el botón de la
barra de herramientas Open.

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).

Antes de volcar su "sketch", se necesita seleccionar los elementos correspondientes


desde los menús Tools > Board y Tools > Serial Port.

Cuando se vuelca un "sketch", se está utilizando el "bootloader" de Arduino, un


pequeño programa que ha sido cargado en el microcontrolador en su placa. Permite el
volcado del código sin utilizar hardware adicional. El "bootloader" está activo durante
unos segundos cuando la placa es reseteada; después se inicia el "sketch" que más
recientemente se hubiera actualizado en el microcontrolador.

Las librerías proporcionan funcionalidad extra para la utilización en "sketches", por


ejemplo para trabajar con hardware o manipular datos. Para utilizar una librería en un
"sketch", se deberá seleccionar el menú Sketch > Import Library. Esto insertará y
compilará la librería con su "sketch".

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.

5.1 Lenguaje Processing

Processing es un lenguaje de programación y entorno de desarrollo integrado de


código abierto basado en Java, de fácil utilización, y que sirve como medio para la
enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue
desarrollado en el MIT 32 por el Grupo de Computacion y Estética del MediaLab, dirigido
por John Maeda (1996-2003).

Processing es libre y todavía en desarrollo, cuenta con un interfaz o entorno de


desarrollo (IDE versión 2.1.1) muy simple y posee todo tipo de interfaces de
importación y edición de medios, basados en funciones comunes de multimedia
comercial. En Processing todo se ejecuta usando programas “sketches” y librerías o
programando en Java para proyectos más complicados.

El proceso es el siguiente el Código Processing (.pde) se procesa a Código Java (.java)


se compila a bytecode (.class) y se ejecuta a JVM (Java Virtual Machine).

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

Es pertinente asomarse primero a Wiring ya que de éste lenguaje se desprendió


Arduino. Wiring es un ambiente de programación de código abierto para
microcontroladores. Código abierto significa que es software que se crea y se distribuye
libremente.

Un microcontrolador es un circuito integrado que utiliza un procesador como unidad


central, posee memoria, controlador de tiempo, puertos periféricos de entrada y de
salida. Todo esto se encuentra integrado en un mismo chip, es decir en un computador
miniatura.

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.

El ambiente de desarrollo de Wiring puede ejecutarse en plataformas como Linux,


Windows y MacOS X gracias a que está desarrollado en Java. Permite en un solo
ambiente de programación, el desarrollo de programas en un lenguaje propio o
utilizando C++, su compilación basada en el compilador y sus librerías, además permite
la descarga directamente a través de la conexión con el puerto USB. Esto posibilita
crear y probar rápidamente sketchs sin utilizar herramientas adicionales.

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.

5.3 IDE Arduino

Respecto al entorno de desarrollo, se dispone de versiones para Mac, Windows o


Linux, al igual que en Wiring cuenta con un compilador y un conjunto de librerías.

El código Arduino se debe compilar y convertir a un lenguaje ejecutable por el


microcontrolador, realmente se compila el conjunto de instrucciones en lenguaje C/C+
a binario AVR (formato.hex). El IDE utilizado en este proyecto es la versión 1.0.6.

La estructura básica de un programa es bastante simple y se divide en dos partes,


setup y loop. En la función setup se declaran las variables y se trata de la primera
ejecución del programa, esta función se ejecuta una única vez y es empleada para
iniciar la comunicación en serie. La función loop se incluye un código que será
ejecutado continuamente leyendo las entradas y salidas.

75
COMPILAR

ÁREA DE
EJECUTAR CÓDIGO

NUEVO

ABRIR

SALVAR

ENVIAR ESTATUS

Figura 5.2 IDE Arduino (Versión 1.0.6).

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.

Como funciones básicas y normalmente más utilizadas, podemos comentar las


siguientes:

• PinMode (pin, modo) que configura el pin especificado para configurarse como
entrada o salida.

• DigitalRead (pin) que llama al valor de un pin especificado.

• Serial.begin (speed) establece la velocidad en bits/sg para la transmisión de


datos en serie.

• Serial.read ( ) lee los datos entrantes del puerto serie.

• 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.

Antes de presentar en Processing el resultado de los datos (r [ ]) recogidos por cada


sensor, es posible representarlo en la pantalla del puerto del PC al que está conectada
a la placa Arduino para comprobar el correcto funcionamiento antes de representarlos
en Processing.

EN COLUMNAS DATOS r [ ]

Figura 5.3 Pantalla representación datos sensores.

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.

5.4.1 Cálculo de distancias (alturas)

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.

𝐶𝐶𝐶𝐶 = 34.480 𝑐𝑐/𝑠𝑠 (Velocidad del sonido en el aire a 20º C)


𝛾 = 1,4
𝐽
𝑅 = 8,314 .𝐾
𝑚𝑚𝑚
𝑇 = 293,15𝐾
𝐾𝐾
𝑀 = 0,029
𝑚𝑚𝑚
𝑡 = 𝑡𝑡𝑡𝑡𝑡𝑡

𝐶𝐶𝐶𝐶 = �𝛾 𝑅𝑅⁄𝑀

𝐶𝐶𝐶𝐶
ℎ=( )×𝑡
2

ℎ = (𝐶𝐶𝐶𝐶⁄10.000) × 𝑡

ℎ = 3.448 × 𝑡 Altura (5.1)

5.4.2 Cálculo de la inclinación del terreno

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.

d=33.8 cm (Distancia entre sensores en el prototipo)


h1= Altura medida en el sensor del lado izquierdo
h2=Altura medida en el sensor del lado derecho
𝛽 = á𝑛𝑛𝑛𝑛𝑛 𝑑𝑑 𝑎𝑎𝑎𝑎𝑎𝑎 𝑑𝑑 𝑙𝑙 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎

𝛼 = tan−1((ℎ1 − ℎ2)/ 𝑑)) (5.2)

78
𝛼´ = 𝛼 ± 𝛽 (Siendo 𝛼´𝑒𝑒 ángulo de inclinación del terreno) (5.3)

Si 𝛼>0; pondremos +𝛽 si el alabeo es hacia la izquierda y –β si el alabeo es hacia la


derecha.
Si α<0; pondremos +β si el alabeo es hacia la derecha y –β si el alabeo es hacia la
izquierda.

Siempre deberá ser α´< ±10º.

5.4.3 Cálculo de desplazamiento horizontal.

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.

• Opción A: Obtener velocidad y/o desplazamiento integrando repetidamente


respecto a la aceleración instantánea (5.4) y (5.5) medida por el acelerómetro en
el plano XY.

a=aceleración instantánea obtenida del acelerómetro

v=velocidad instantánea

t1=10msg; t2=20msg; t3=30msg

𝑡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.

La velocidad límite de desplazamiento lateral en el prototipo debe ser inferior a 12


cm/sg (ya que en el modelo real es de 1,2 m/sg), el sensor del GPS solo puede
alcanzar esa resolución en determinadas ocasiones y con un determinado número de
satélites.

• Opción C: Obtener el desplazamiento mediante un par de sensores ultrasónicos


cruzados y orientados posicionados en los extremos del prototipo.

h= 50/70 ft (altura modelo real)

h= 1.5 m (altura prototipo)

S (espacio recorrido)=2 x h

Cair=34.480 cm/sg (Velocidad del sonido en el aire a 20º C)

t= tiempo que tarda en emitir y recibir la señal

Velocidad límite lateral del prototipo es de 12 cm/sg

R= resolución con esta opción

t = S/Cair

t = 3m/344= 8.7 msg

R= 12 cm/sg x 0.0087sg= 1.04 mm

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.

• Opción D: Obtener el desplazamiento mediante un emisor ultrasónico central y


varios receptores dispuestos a cada lado de dicho emisor.

Empíricamente en el prototipo se demostró que colocando un emisor central y dos


receptores colocados a cada lado a una distancia de 0,5 cm, otro par de receptores
colocado y orientado a 3 cm y otro más a 5cm, se debería poder calcular velocidades
en distintos rangos, pero debido a la velocidad del eco ultrasónico (Cair) respeto a la
velocidad de desplazamiento del prototipo, siempre recibía el eco el receptor central
por lo que siempre nos daba indicación de no movimiento

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.

En aeronáutica, la velocidad vertical se mide en ft/min, en nuestro prototipo y por


cuestiones de escala mediremos en 1/10 ft/min., transmitiéndose su movimiento a
través de un sistema de engranajes al indicador de velocidad vertical.

5.5 Líneas de programación básicas

• Programación en Arduino.

La programación en Arduino consiste básicamente en un módulo de declaración


de variables, un módulo de setup, un módulo de loop y por último módulo print
para representar los datos.

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.

Por ejemplo, Inicio variables de la IMU (acelerómetro, giróscopo y


magnetómetro).

/*********************************************************
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.

Por ejemplo Setup ultrasonidos.

/*********************************************************
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
*********************************************************/

A continuación se realiza el loop de los programas anteriores.


Por ejemplo Loop del variómetro.

/***************************************
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(){

// in case you are not using the interrupt above, you'll


// need to 'hand query' the GPS, not suggested :(
if (! usingInterrupt) {
// read data from the GPS in the 'main loop'
char c = GPS.read();
// if you want to debug, this is a good time to do it!
if (GPSECHO)
if (c) Serial.print(c);
}
// if a sentence is received, we can check the checksum, parse it...
if (GPS.newNMEAreceived()) {
// a tricky thing here is if we print the NMEA sentence, or data
// we end up not listening and catching other sentences!
// so be very wary if using OUTPUT_ALLDATA and trytng to print out data
//Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false
if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false
return; // we can fail to parse a sentence in which case we should just wait for another
}
// if millis() or timer wraps around, we'll just reset it
if (timer > millis()) timer = millis();
// approximately every 2 seconds or so, print out the current stats
if (millis() - timer > 2000) {
timer = millis(); // reset the timer
char coordA=GPS.lat;
char coordB=GPS.lon;
if (GPS.fix) {
Serial.print(" ");
Serial.print(GPS.latitude, 4);
Serial.print(" ");
Serial.print(coordA);
Serial.print(" ");
Serial.print(GPS.longitude, 4);
Serial.print(" ");
Serial.print(coordB);
• Serial.print("
Programación "); en Processing
Serial.print(GPS.speed);
Serial.print(" ");
Serial.print(GPS.angle);
Serial.print(" ");
Serial.print((int)GPS.satellites);
}
• Programación en Processing.
}

84
Declaración de variables con sus tipos (float, char etc…).

//PFC Joaquin Aguirre


import processing.serial.*;
//declaracion de variables
Horizonte nuevoHorizonte;
terreno inclinacion_del_terreno;
Variometro nuevoVariometro;
rumbo nuevoRumbo;
desplazamiento nuevoDesplazamiento;
GPS nuevoGps;

float X, Y;
Serial sp;
byte[] buff;
float[] r;
float protz, protx, proty;
float inicioz, iniciox, inicioy;
float altitud;
char lat;
char lon;

Septup del programa, donde se establecen el puerto “COM4”, la velocidad de


transmisión de datos (9600 bytes/sg) y las distintas representaciones en pantalla.

void setup() {//esto solo se repite una vez


size(600, 700);//tamaño pantalla

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

String list[] = split(s, ' ');


int i = list.length;
//String lat;
//String lon;

if (0<i) r[0] = float(list[0]);//pitch acc


if (1<i) r[1] = float(list[1]);//pitch Kalman
if (2<i) r[2] = float(list[2]);//roll acc
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

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 Sistemas de representación en cabina

Respecto a las distintas opciones de representación en cabina en el modelo AS332


podemos diferenciar dos tipos, o presentar la información en una pantalla convencional
en el tablero de instrumentos (cockpit) o hacerlo en el sistema ANVIS-HUD, que es un
dispositivo que tanto de día como de noche presenta la información delante de los ojos
del piloto.

6.1.1 ANVIS-HUD

El sistema ANVIS/HUD está desarrollado por la empresa israelita Elbit Systems, y es


un display avanzado tanto para vuelo diurno como nocturno. Puede ser montado sobre
las propias GVN para vuelo nocturno y sobre el dispositivo de sujeción de las GVN en
vuelo diurno.

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.

Figura 6.1 Sistema ANVIS-HUD sin dispositivos de visión nocturna.

89
Figura 6.2 Sistema ANVIS-HUD con dispositivos de visión nocturna.

6.1.2 Display convencional

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).

Figura 6.3 pantallas HHD (Head Down Displays).

33
Forward Light Infra-Red.

90
6.2 Sensores reales

Como se ha planteado y puesto de ejemplo (apartado 3.2.5), los sensores susceptibles


de utilizarse en el helicóptero real, podían ser el radioaltímetro y los giróscopos
verticales con que cuenta el citado modelo.

6.2.1 Radioaltímetro AHV8/16

El radioaltímetro provee independientemente de las condiciones atmosféricas de una


medida precisa de altura de la aeronave con respecto a tierra, informa a la tripulación
cuando vuela a una altura inferior a la preseleccionada.

La instalación consta de un emisor receptor, una antena de emisión, una antena de


recepción y dos indicadores. Está alimentado por 28V de corriente continua, tiene un
consumo de 25 vatios y ocupa una banda de 4200 a 4400 MHz. La ganancia de las
antenas es de 9 dB a 4300 MHz.

Respecto al principio de funcionamiento, este se basa en la explotación del batimiento


diferencial entre la señal emitida en un momento t2 y la señal reflectada por el suelo,
emitida en t1. El mezclador detecta la frecuencia de batimiento Fb = F(t2) - F(t1) y el
tiempo que tarda la señal en recorrer la ida y vuelta de la distancia al suelo. También
detecta cualquier variación de Fb y lo traduce en una tensión eléctrica continua dirigida
al indicador.

INDICADOR
PILOTO

INDICADOR
COPILOTO

Figura 6.4 Indicadores radioaltímetro en cabina.

91
ANTENA EMISIÓN

ANTENA RECEPCIÓN
EMISOR-RECEPTOR

Figura 6.5 Antenas radioaltímetro.

6.2.2 Giróscopos verticales GV 76-2

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.

La información proporcionada podría ser utilizada para alimentar al sistema BHLAS


igual que se realizó con el giróscopo de la IMU en el prototipo.

92
CAPITULO 7. PRUEBAS

7.1 Pruebas en tierra con el prototipo HEX332-01

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:

1. Primero se adquirieron los distintos sensores, el cableado, la protoboard, la


placa Arduino Mega 2560 y se construyó el chasis de madera a escala 1:10. El
coste de toda la electrónica asciende a 274,40 euros.

2. Sobre la protoboard se conectó la IMU 9 DOF Razor, el sensor de presión


barométrica BMP180, el sensor GPS MTK3339 y el conjunto se conectó a la
placa Arduino Mega 2560.

3. Toda la programación básica se realizó con los distintos dispositivos sobre la


protoboard (conectando el conjunto al PC mediante el cable USB).

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.

5. Una vez el prototipo se completó, se comenzaron las pruebas para determinar


los rangos de toma de datos, los límites de funcionamiento de los sensores,
determinación de unidades mediante semejanza geométrica y cinemática etc…

6. Por último se diseñó (Processing) la representación en pantalla de los datos


requeridos.

Durante la fase de programación se realizaron los siguientes procesos con los


consecuentes problemas y soluciones adoptadas.

a. Se realizó la parametrización a escala de algunas unidades de medida ya


que tanto el rango de medida de los sensores como la escala del prototipo
así lo requerían; en la velocidad vertical por semejanza cinemática se
utilizaron 0.1 ft/min, para medir la velocidad en el plano horizontal se
utilizaron 0.1 m/sg, para medir alturas 0.1 ft y el resto de los parámetros
como grados de inclinación del terreno igual, rumbo o grados de actitud no se
modificaron.

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.

c. Respecto a la obtención del dato de la velocidad vertical se eligieron dos


opciones:

• Opción A: Derivar respecto al tiempo del espacio vertical recorrido medido


por los sensores de ultrasonidos, aunque realmente se realizaban
mediciones cada 2 sg y se restaban los datos de altura en esa ventana de
tiempo de 2 sg, luego se pasaba a unidades 0.1 ft/min.

• Opción B: Mediante el módulo barométrico se obtenía directamente


información de altitud y variaciones de esta con una resolución de 0,03
hPa. Después se pasaron las unidades a 0,1 ft/min.

Se eligió por la opción B ya que es la que se utiliza en aeronáutica para medir la


velocidad vertical y porque la primera opción proporcionaba la información de manera
no continua.

d. En relación a la Velocidad/desplazamiento horizontal, se estudiaron cuatro


alternativas:

• Opción A: Obtener velocidad y/o desplazamiento integrando respecto a la


aceleración medida por el acelerómetro en el plano XY.

• Opción B: Obtener directamente la velocidad mediante el módulo GPS


MTK3339.

• Opción C: Obtener el desplazamiento mediante un par de sensores


ultrasónicos cruzados y orientados posicionados en los extremos del
prototipo.

• Opción D: Obtener el desplazamiento mediante un emisor ultrasónico


central y varios receptores dispuestos en cada lado de dicho emisor.

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.

e. La obtención de información de inclinación del terreno se realizó con un par de


sensores de ultrasonidos colocados en los extremos del tren principal del prototipo (a
una distancia “d” entre ellos) estos captaban la altura hasta el suelo y según las
fórmulas (5.2) y (5.3) calculaban la inclinación del terreno, siendo α el ángulo de alabeo
del helicóptero y h1 y h2 la medida de distancia al suelo de cada sensor.

f. El rumbo de aproximación se obtuvo directamente mediante el magnetómetro


HMC5883L de la IMU.

7.2 Pruebas en vuelo con el AS332

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:

a. El piloto a los mandos supervisado por un piloto instructor realizaba una


aproximación visual normal (con referencias exteriores de altura, velocidad etc) a
una helisuperficie, a unos 50ft de altura este dejaba de mirar fuera y completaba
la aproximación con los instrumentos; horizonte artificial, radioaltímetro,
variómetro y las indicaciones sobre el desplazamiento lateral por parte del piloto
instructor.

b. Estas pruebas se realizaron con un piloto experimentado (>2000 horas de vuelo)


y con otro piloto de experiencia media (>1000 y <1500 horas de vuelo).

c. Una vez completada la aproximación se recogían datos sobre velocidad de


descenso, ángulo de alabeo, ángulo de cabeceo, velocidad de desplazamiento
en el plano horizontal y distancia al punto deseado de toma.

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)

e. Los resultados a pesar de encontrarnos en unas condiciones muy controladas,


nos dan información de que lo que realmente dificulta la maniobra, es en mayor
medida el desplazamiento lateral inadvertido, y en una menor medida el alabeo.

95
TABLA PRUEBAS EN VUELO

PILOTO EXP. ALTA Velocidad de Angulo de Angulo de Velocidad en Distancia a Aproximación


descenso alabeo cabeceo el plano la zona de completada
horizontal toma
deseada

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 000º/10 Kts 100ft/min 0º +3º 1m/sg 5 metros Si


derecha

Viento 030º/08 Kts 100ft/min 2º derecha +4º 2m/sg atrás 6 metros No descontrolado

Viento 030º/08 Kts 100ft/min 3º derecha +3º 0 m/sg 2 metros Si

Viento 330º/08 Kts 100ft/min 0º +3º 1m/sg atrás 5 metros Si

Viento 330º/08 Kts 200ft/min 0º +3º 0 m/sg 2 metros Si

PILOTO EXP. MEDIA Velocidad Angulo de Angulo Velocidad Distancia a Aproximación


de descenso alabeo de en el plano la zona de completada
cabeceo horizontal toma
deseada

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

Viento 030º/04 Kts 200ft/min 3º derecha +2º 1 m/sg 5 metros No descontrolado


derecha y
atrás

Viento 030º/04 Kts 100ft/min 2º derecha +2º 1 m/sg 5 metros Si


derecha

Viento 330º/04 Kts 200ft/min 2º derecha +2º 2 m/sg 5 metros No descontrolado


derecha y
atrás

Viento 330º/04 Kts 100ft/min 0º 0º 1 m/sg 2 metros Si

96
NOTA: Se debe tener en cuenta lo siguiente:

1. Los pilotos en las sucesivas aproximaciones ya contaban con la


experiencia de las primeras, por lo que los resultados eran mejores.

2. Los parámetros no se mantenían constantes durante la aproximación, por


lo que la tabla refleja datos medios.

3. Con desplazamientos horizontales mayores de 2m/sg, el aterrizaje se


considera inseguro.

4. El modelo AS332 en condiciones normales de peso y viento suele


aterrizar entre 5ºy 3º grados positivos en cabeceo y algún grado de alabeo
hacia la derecha.

5. Las condiciones de la primera prueba (piloto experimentado) fueron T=22º


C, Viento 10 Kts, Altitud 2250ft, Peso de la aeronave = 7350 Kg.

6. Las condiciones de la segunda prueba (piloto de experiencia media)


fueron T=18º C, Viento 6 Kts, Altitud 2250ft, Peso de la aeronave = 7550
Kg

7.3 Maniobra recomendada.

Según las pruebas realizadas y descritas en el apartado anterior y teniendo en cuenta


que la aeronave cuenta con el sistema BHLAS, la maniobra recomendada 35 para
realizar con éxito la toma en condiciones de visibilidad reducida o degradada, es la
siguiente:

1. Estacionario a 70/80ft unos 50 metros antes del lugar de aterrizaje. Mantener


una actitud nivelada tanto en cabeceo como en alabeo.

2. Comprobación del rumbo de aproximación, dimensiones e inclinación del terreno


en la zona de aterrizaje (GO/NOGO).

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.

a. Mantener el rumbo de aproximación seleccionado.

b. Mantener un régimen de descenso dentro de límites (entre 200 y


100ft/min).

c. Mantener una actitud de la aeronave dentro de límites (máx 5º Pitch y 5º


Roll).

d. Mantener el desplazamiento lateral próximo a cero.

70/80 ft

50 m

Figura 7.1 Maniobra recomendada.

98
CAPITULO 8. CONCLUSIONES

A la hora de concluir y a modo de resumen, se puede destacar unos puntos fuertes y


otros débiles del sistema BHLAS.

Como puntos fuertes o ventajas respecto a otros sistemas o iniciativas:

• La eficiencia en tiempo y costes del sistema respecto a otras iniciativas actuales,


donde la mayoría de ellos no están todavía desarrollados.

• El sistema es totalmente autónomo y no requiere de apoyos en tierra para


completar con éxito la aproximación.

• La fácil implementación en el helicóptero, tanto del sistema en sí, como de una


posible certificación aeronáutica.

• Proporciona información de los parámetros mínimos para realizar el aterrizaje


con garantías, evitando saturar a la tripulación con datos innecesarios.

• Aumenta la conciencia situacional de la tripulación durante los aterrizajes en


ambientes con visibilidad degradada.

• 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.

Como desventajas o puntos débiles:

• Imposibilidad de detectar y por tanto discriminar respecto a las posibles


colisiones con objetos verticales en la zona de aterrizaje.

• No es un sistema basado en automatismos, por lo que depende en parte de la


pericia del piloto a la hora de mantener los parámetros que el sistema presenta.

99
Figura 7.2 Limitaciones del sistema BHLAS, al no reconocer obstáculos en la zona de toma.

8.1 Eficiencia del sistema BHLAS

El sistema BHLAS, si bien no puede competir con la tecnología de nueva generación


como sistemas de mantenimiento de altura, cuarta vía de piloto automático,
mantenimiento de posición o sistemas autolanding etc…es un sistema autónomo de
bajo coste y fácil implementación sin necesidad de un proceso complicado de
certificación. A la hora de seleccionar un sistema de ayuda, en ambientes con
visibilidad degradada, en helicópteros con una vida media superior a los 20 años, el
sistema BHLAS puede considerarse muy eficiente ya que tanto el proceso de
implementación como los tiempos de inmovilización de las aeronaves no deberían ser
muy elevados.

8.2 Facilidad de implementación

BHLAS debido a que es un sistema totalmente independiente de la aviónica del


helicóptero, no necesita de un proceso arduo de implementación, solo es necesario la
ubicación de los distintos sensores, y la colocación o bien de una pantalla convencional
“Head Down Display” en el panel de instrumentos de la aeronave o un dispositivo
“Head Up Display” como el sistema ANVIS-HUD u otro sistema montado en el casco
del piloto.

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.

Antes de exponer las líneas de investigación y desarrollo futuras, se deben comentar


las líneas que se han seguido y completado:

• Se realizaron pruebas a escala basadas en el prototipo HEX332-01, dicho


prototipo está desarrollado tanto en software (programación) como en hardware
(microprocesador como sensores) en la plataforma Arduino.

• Se programaron vuelos de prueba en el modelo AS332 SuperPuma, para tratar


de diseñar una maniobra recomendada basada en el sistema BHLAS.

• 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

[1] ADXL 345 specsheet. Analog Devices.


http://www.analog.com/static/imported-files/data_sheet/ADXL345.pdf.

[2] Alastair K. Cooke, Eric W.H. Fitzpatrick. Helicopter Test and Evaluation. Blackwell
Science.

[3] ATMEL ATmega 2560 spectsheet.


http://www.atmel.com/devices/atmega2560.aspx

[4] A.R.S. Bramwell, George Done, David Balmford. Bramwell’s Helicopter Dynamics.
Butterwoth Heinemann, 2 Edition 2001.

[5] Brian W. Evans. Arduino programming notebook. 2011.

[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.

[8] Deschamps Mobimat HELIPAD Fact sheet. http://www.mobi-mat.com

[9] ELBIT Systems, “ANVIS/HUD Manual”, Haifa 31053 Israel 2008.

[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.

[13] J. Gordon Leishman. Principles of Helicopter Aerodynamics. Cambridge University


Press, 2000.

[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.

[18] M.A. Barcala Montejano y Ángel A. Rodríguez Sevillano. Helicópteros. Teoría y


Descriptiva. Sección de Publicaciones E.U.I.T. Aeronáutica. Fundación General U.P.M.

[19] Manual de descripción y mantenimeinto del AS332. Eurocopter España.

[20] NATO, “Rotary-Wing Brownout Mitigation TR-HFM-162 Technical Report” Bruselas


(Belgica) 2008-2011.

[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);

writeTo(0x53,0x31,0x09); //Set accelerometer to 11bit, +/-4g


writeTo(0x53,0x2D,0x08); //Set accelerometer to measure mode
writeTo(0x68,0x16,0x1A); //Set gyro to +/-2000deg/sec and 98Hz low pass filter
writeTo(0x68,0x15,0x09); //Set gyro to 100Hz sample rate
//compass
Wire.beginTransmission(0x1E); //open communication with HMC5883
Wire.write(0x02); //select mode register
Wire.write(0x00); //continuous measurement mode
Wire.endTransmission();
//fin compass

delay(100); //wait for gyro


for (i = 0; i < 50; i += 1) {
getGyroscopeReadings(gyroResult);
getAccelerometerReadings(accelResult);

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;

Serial.print("/tPitch accel\tPitch Kalman\t");


Serial.print("\tRoll accel\tRoll Kalman \taltitud \tsensord e izquierdo\n");

/***************************************
fin Setup IMU
***************************************/

/***************************************
inicio Setup variometro
***************************************/
if(IIC_Read(WHO_AM_I) == 196)
Serial.println("MPL3115A2 online!");
else
Serial.println("No response - check connections");

// Configure the sensor


setModeAltimeter(); // Measure altitude above sea level in meters
//setModeBarometer(); // Measure pressure in Pascals from 20 to 110 kPa

setOversampleRate(7); // Set Oversample to the recommended 128


enableEventFlags(); // Enable all three pressure and temp event flag

/***************************************
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;

rollAccel = atan2((accelResult[0] - biasAccelX) / 256, (accelResult[2] - biasAccelZ) / 256) *


360.0 / (2*PI);

rollGyro = rollGyro - ((gyroResult[1] - biasGyroY) / 14.375) * timeStep;


rollPrediction = rollPrediction - ((gyroResult[1] - biasGyroY) / 14.375) * timeStep;

Pxx += timeStep * (2 * Pxv + timeStep * Pvv);


Pxv += timeStep * Pvv;
Pxx += timeStep * giroVar;
Pvv += timeStep * deltaGiroVar;
kx = Pxx * (1 / (Pxx + accelVar));
kv = Pxv * (1 / (Pxx + accelVar));

pitchPrediction += (pitchAccel - pitchPrediction) * kx;


rollPrediction += (rollAccel - rollPrediction) * kx;

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 writeTo(byte device, byte toAddress, byte val) {


Wire.beginTransmission(device);
Wire.write(toAddress);
Wire.write(val);
Wire.endTransmission();
}

void readFrom(byte device, byte fromAddress, int num, byte result[]) {


Wire.beginTransmission(device);
Wire.write(fromAddress);
Wire.endTransmission();
Wire.requestFrom((int)device, num);
int i = 0;
while(Wire.available()) {
result[i] = Wire.read();
i++;
}
}

void getGyroscopeReadings(int gyroResult[]) {


byte buffer[6];
readFrom(0x68,0x1D,6,buffer);
gyroResult[0] = (((int)buffer[0]) << 8 ) | buffer[1];
gyroResult[1] = (((int)buffer[2]) << 8 ) | buffer[3];
gyroResult[2] = (((int)buffer[4]) << 8 ) | buffer[5];
}

void getAccelerometerReadings(int accelResult[]) {


byte buffer[6];
readFrom(0x53,0x32,6,buffer);
accelResult[0] = (((int)buffer[1]) << 8 ) | buffer[0];
accelResult[1] = (((int)buffer[3]) << 8 ) | buffer[2]; accelResult[2] = (((int)buffer[5]) << 8 ) |
buffer[4];
}

void getMagnometerometerReadings() {
int x,y,z; //triple axis data

//Tell the HMC5883L where to begin reading data


Wire.beginTransmission(0x1E);
Wire.write(0x03); //select register 3, X MSB register
Wire.endTransmission();

//Read data from each axis, 2 registers per axis


Wire.requestFrom(0x1E, 6);

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
}

//Print out values of each axis

float rumbo = atan2(y, x);


// Correct for when signs are reversed.
if(rumbo < 0)
rumbo += 2 * PI;
// Check for wrap due to addition of declination.
if(rumbo > 2 * PI)
rumbo -= 2 * PI;
// Convert radians to degrees for readability.
rumbo=degrees(rumbo);
if(rumbo>180)
rumbo=rumbo-180;
else
rumbo=rumbo+180;
Serial.print(rumbo);

119
9. SENSOR GPS.

void gps(){

// in case you are not using the interrupt above, you'll


// need to 'hand query' the GPS, not suggested :(
if (! usingInterrupt) {
// read data from the GPS in the 'main loop'
char c = GPS.read();
// if you want to debug, this is a good time to do it!
if (GPSECHO)
if (c) Serial.print(c);
}
// if a sentence is received, we can check the checksum, parse it...
if (GPS.newNMEAreceived()) {
// a tricky thing here is if we print the NMEA sentence, or data
// we end up not listening and catching other sentences!
// so be very wary if using OUTPUT_ALLDATA and trytng to print out data
//Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false
if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false
return; // we can fail to parse a sentence in which case we should just wait for another
}
// if millis() or timer wraps around, we'll just reset it
if (timer > millis()) timer = millis();
// approximately every 2 seconds or so, print out the current stats
if (millis() - timer > 2000) {
timer = millis(); // reset the timer
char coordA=GPS.lat;
char coordB=GPS.lon;
if (GPS.fix) {
Serial.print(" ");
Serial.print(GPS.latitude, 4);
Serial.print(" ");
Serial.print(coordA);
Serial.print(" ");
Serial.print(GPS.longitude, 4);
Serial.print(" ");
Serial.print(coordB);
Serial.print(" ");
Serial.print(GPS.speed);
Serial.print(" ");
Serial.print(GPS.angle);
Serial.print(" ");
Serial.print((int)GPS.satellites);
}
}

120
10. SENSOR BAROMÉTRICO.

float readAltitude()
{
toggleOneShot(); //Toggle the OST bit causing the sensor to immediately take another reading

//Wait for PDR bit, indicates we have new pressure data


int counter = 0;
while( (IIC_Read(STATUS) & (1<<1)) == 0)
{
if(++counter > 100) return(-999); //Error out
resetFunc();
}

// Read pressure registers


Wire.beginTransmission(MPL3115A2_ADDRESS);
Wire.write(OUT_P_MSB); // Address of data to get
Wire.endTransmission(false); // Send data to I2C dev with option for a repeated start. THIS IS
NECESSARY and not supported before Arduino V1.0.1!
Wire.requestFrom(MPL3115A2_ADDRESS, 3); // Request three bytes

//Wait for data to become available


counter = 0;
while(Wire.available() < 3)
{
if(counter++ > 100) return(-999); //Error
resetFunc();

byte msb, csb, lsb;


msb = Wire.read();
csb = Wire.read();
lsb = Wire.read();

toggleOneShot(); //Toggle the OST bit causing the sensor to immediately take another reading

// The least significant bytes l_altitude and l_temp are 4-bit,


// fractional values, so you must cast the calulation in (float),
// shift the value over 4 spots to the right and divide by 16 (since
// there are 16 values in 4-bits).
float tempcsb = (lsb>>4)/16.0;

float altitude = (float)( (msb << 8) | csb) + tempcsb;

return(altitude);
}

121
//Reads the current pressure in Pa
//Unit must be set in barometric pressure mode

//Sets the mode to Altimeter


//CTRL_REG1, ALT bit
void setModeAltimeter()
{
byte tempSetting = IIC_Read(CTRL_REG1); //Read current settings
tempSetting |= (1<<7); //Set ALT bit
IIC_Write(CTRL_REG1, tempSetting);
}

//Puts the sensor in standby mode


//This is needed so that we can modify the major control registers
void setModeStandby()
{
byte tempSetting = IIC_Read(CTRL_REG1); //Read current settings
tempSetting &= ~(1<<0); //Clear SBYB bit for Standby mode
IIC_Write(CTRL_REG1, tempSetting);
}

//Puts the sensor in active mode


//This is needed so that we can modify the major control registers
void setModeActive()
{
byte tempSetting = IIC_Read(CTRL_REG1); //Read current settings
tempSetting |= (1<<0); //Set SBYB bit for Active mode
IIC_Write(CTRL_REG1, tempSetting);
}

//Call with a rate from 0 to 7. See page 33 for table of ratios.


//Sets the over sample rate. Datasheet calls for 128 but you can set it
//from 1 to 128 samples. The higher the oversample rate the greater
//the time between data samples.
void setOversampleRate(byte sampleRate)
{
if(sampleRate > 7) sampleRate = 7; //OS cannot be larger than 0b.0111
sampleRate <<= 3; //Align it for the CTRL_REG1 register

byte tempSetting = IIC_Read(CTRL_REG1); //Read current settings


tempSetting &= 0b11000111; //Clear out old OS bits
tempSetting |= sampleRate; //Mask in new OS bits
IIC_Write(CTRL_REG1, tempSetting);
}

//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);

tempSetting = IIC_Read(CTRL_REG1); //Read current settings to be safe


tempSetting |= (1<<1); //Set 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
}

// These are the two I2C functions in this sketch.


byte IIC_Read(byte regAddr)
{
// This function reads one byte over IIC
Wire.beginTransmission(MPL3115A2_ADDRESS);
Wire.write(regAddr); // Address of CTRL_REG1
Wire.endTransmission(false); // Send data to I2C dev with option for a repeated start. THIS IS
NECESSARY and not supported before Arduino V1.0.1!
Wire.requestFrom(MPL3115A2_ADDRESS, 1); // Request the data...
return Wire.read();
}

void IIC_Write(byte regAddr, byte value)


{
// This function writes one byto over IIC
Wire.beginTransmission(MPL3115A2_ADDRESS);
Wire.write(regAddr);
Wire.write(value);
Wire.endTransmission(true);
}

123
11. SENSOR ULTRASONIDOS.

void ultraDrch(int *dD){

digitalWrite(TRIGPIND, LOW); // Set the trigger pin to low for 2uS


delayMicroseconds(2);
digitalWrite(TRIGPIND, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(8);
digitalWrite(TRIGPIND, LOW); // Send pin low again
int distanceD = pulseIn(ECHOPIND, HIGH); // Read in times pulse
distanceD= distanceD/58; // Calculate distance from time of pulse
Serial.print(" ");
Serial.print(distanceD);
*dD=distanceD;
delay(50); // Wait 50mS before next ranging
}

void ultraIzq(int *dI){

digitalWrite(TRIGPINI, LOW); // Set the trigger pin to low for 2uS


delayMicroseconds(2);
digitalWrite(TRIGPINI, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(8);
digitalWrite(TRIGPINI, LOW); // Send pin low again
int distanceI = pulseIn(ECHOPINI, HIGH); // Read in times pulse
distanceI= distanceI/58; // Calculate distance from time of pulse
Serial.print(" ");
Serial.print(distanceI);
Serial.print(" ");
getMagnometerometerReadings();
gps();
Serial.print(" f");
*dI=distanceI;//solo pasa por aqui une vez por segundo...el update del valor en la varible
}

124
APÉNDICE I.2
LÍNEAS DE PROGRAMACIÓN (PROCESSING)

125
1. DEFINICIÓN VARIABLES.

//PFC Joaquin Aguirre


import processing.serial.*;
//declaracion de variables
Horizonte nuevoHorizonte;
terreno inclinacion_del_terreno;
Variometro nuevoVariometro;
rumbo nuevoRumbo;
desplazamiento nuevoDesplazamiento;
GPS nuevoGps;

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.

void setup() {//esto solo se repite una vez


size(600, 700);//tamaño pantalla

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.

void draw() {//loop


background(33, 99, 0);//color fondo verde
fill(0);//fondo rectangulo horizonte

stroke(255);
//dibujo del horizonte

nuevoHorizonte.dibujaCielo();//circulo entero azul


nuevoHorizonte.dibujaSuelo(r[1], r[3]);//
nuevoHorizonte.dibujaLineas();
nuevoHorizonte.dibujaBase();
nuevoHorizonte.dibujaLineasCentrales();
nuevoHorizonte.escribeAngulo();
nuevoVariometro.dibujaVelocidad();

//dibujo del terreno


inclinacion_del_terreno.inclinacion();
//dibujo rumbo
nuevoRumbo.dibujaRumbo();

//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

String list[] = split(s, ' ');


int i = list.length;
//String lat;
//String lon;

if (0<i) r[0] = float(list[0]);//pitch acc


if (1<i) r[1] = float(list[1]);//pitch Kalman
if (2<i) r[2] = float(list[2]);//roll acc

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

4. DIBUJO DE LAS CLASES EN PANTALLA.

/******************************
*****Clase Horizonte**********
*******************************/
class Horizonte {//clase horizonte, crea y mueve el suelo
float inicio;//inicio del arco tierra
float fin; //fin del arco tierra

Horizonte(float inicio, float fin) {//constructor


this.inicio=inicio;
this.fin=fin;
}
void dibujaCielo() {//dibuja el cielo azul
fill(0, 180, 255);//color azul
arc(150, 150, 220, 220, 0, 2*PI);//todo el circulo
}
void dibujaBase() {//dibuja cono central
fill(0);//color negro
arc(150, 150, 25, 200, PI/3, 2*PI/3);//todo el circulo
}

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

fill(70, 55, 40);//color tierra


arc(150, 150, 200, 200, radians(pitchk+rollk), radians(rollk+180-pitchk), CHORD);
}
void dibujaLineas() {
float anguloX, anguloY;
int i;
float angulo1;
fill(25);
stroke(25);
strokeWeight(2);
line(90, 150, 130, 150);//linea central izquierda
noFill();//arco vacio
arc(150, 150, 40, 30, 0, PI);//arco de medio
line(170, 150, 210, 150);//linea central derecha
stroke(250);
line(25, 150, 49, 150);//linea central exterior
line(251, 150, 275, 150);//linea central exterior derecha
line(150, 250, 150, 275);//linea central abajo
fill(255);//color blanco
triangle(150, 35, 140, 20, 160, 20); // triangulo blanco arriba

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;

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);

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

text("+2.0 ", 140, 45);text("+1.5 ", 140, 65);


text("+1.0 ", 140, 85);
text("+0.5 ", 140, 105);
text("-00-", 140, 125);
fill(255, 0, 0);//color blanco
text("-0.5 ", 140, 145);
text("-1.0 ", 140, 165);
text("-1.5 ", 140, 185);
text("-2.0 ", 140, 205);
noFill();
stroke(0, 0, 0);//color azul
rect(125, 110+(-r[5]/25), 50, 20, 10);//selector velocidad
fill(255);

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

También podría gustarte