UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA · BERP British Experimental Rotor Programme . ......

142
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

Transcript of UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA · BERP British Experimental Rotor Programme . ......

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

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

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

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

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

iii

Í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

iv

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

v

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

vi

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

vii

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

1

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

2

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 HALS3 basado en una combinación de sensores electrópticos y radáricos, el proyecto denominado BLAST4 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.

3

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

4

Figura 2.1 UH-60 “BlackHawk” aterrizando en condiciones brownout (California).

5

La definición adoptada por la NASA6 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 OTAN7: “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.

6

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.

7

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-64D8 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-479 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.

8

El modelo V-2210 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.

9

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

10

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

11

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

12

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.

13

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:

14

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

15

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

16

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

17

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

18

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

19

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

20

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

21

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

22

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

23

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

24

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

25

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 BERP17, “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.

26

conjunto entre el fabricante inglés Westland Aircraft y la Real Fuerza Aérea, RAF18). 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.

27

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.

28

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.

29

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 MEMS19, 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.

30

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.

31

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.

32

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.

33

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.

34

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

35

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.

36

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

37

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

38

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

39

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.

40

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

41

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

42

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.

43

Figura 3.15 Dimensiones del AS332 SuperPuma.

44

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

45

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

46

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

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.

47

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

48

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.

HORIZONTE ARTIFICIAL

HEADING

INCLINACIÓN DEL TERRENO

DESPLAZAMIENTO HORIZONTAL

COORDENADAS

VELOCIDAD VERTICAL

ALTURA

49

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.

50

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

51

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

52

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

53

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

54

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.

55

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

56

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 bootloader28 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 ICSP29. 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.

57

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

58

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.

59

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.

60

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.

61

Figura 4.3 Sensores ultrasónicos esquema de funcionamiento.

Figura 4.4 Sensores ultrasónicos montados sobre la Protoboard.

62

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.

63

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.

64

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.

Figura 4.7 IMU 9 DOF RAZOR.

GISRÓSCOPO ITG 3200

MAGNETÓMETRO HMC5883L

ACELERÓMETRO ADXL345

65

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

66

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

67

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

68

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

69

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.

70

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.

71

Figura 4.13 Pantalla BHLAS.

1

2

3

4

5

6

7

72

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 (IDE31 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

73

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

74

Figura 5.1 Pantalla de la izquierda IDE Processing (Versión 2.1.1).

IDE PROCESSING

75

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.

76

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

COMPILAR

EJECUTAR

NUEVO

ABRIR

SALVAR

ENVIAR

ÁREA DE CÓDIGO

ESTATUS

77

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.

Figura 5.3 Pantalla representación datos sensores.

EN COLUMNAS DATOS r [ ]

78

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)

79

𝛼´ = 𝛼 ± 𝛽 (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

𝑎0 = ∫ 𝐶𝑡10 𝑑𝑡 (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.

80

• 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

81

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;

82

Después se realiza el Setup de cada programa. Por ejemplo Setup ultrasonidos. A continuación se realiza el loop de los programas anteriores. Por ejemplo Loop del variómetro.

/********************************************************* inicio setup ultrasonidos *********************************************************/ starTime=millis(); //para medir cada segundo para que el giróscopo pierda menos tiempo pinMode(ECHOPIND, INPUT); pinMode(TRIGPIND, OUTPUT); pinMode(ECHOPINI, INPUT); pinMode(TRIGPINI, OUTPUT); /********************************************************* fin setup ultrasonidos *********************************************************/

/*************************************** inicio loop variometro ***************************************/ altitud2 =altitude0; altitude0 = int(readAltitude()); Serial.print(" "); Serial.print(altitude0); Serial.print(" "); altitud2=(altitude0-altitud2); altitud2=altitud2*3*60*2; Serial.print(altitud2); /*************************************** fin loop variometro ***************************************/

83

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

84

Respecto a los datos que se rescatan de los programas específicos para el programa principal. Por ejemplo del sensor del GPS.

• Programación en Processing

• Programación en Processing.

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

85

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

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.

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

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

86

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

87

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

88

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

89

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.

90

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, FLIR33 y BLASH).

Figura 6.3 pantallas HHD (Head Down Displays).

33 Forward Light Infra-Red.

91

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.

Figura 6.4 Indicadores radioaltímetro en cabina.

INDICADOR PILOTO

INDICADOR COPILOTO

92

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.

ANTENA EMISIÓN

ANTENA RECEPCIÓN EMISOR-RECEPTOR

93

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.

94

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

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

95

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.

96

TABLA PRUEBAS EN VUELO

PILOTO EXP. ALTA Velocidad de descenso

Angulo de alabeo

Angulo de cabeceo

Velocidad en el plano horizontal

Distancia a la zona de toma deseada

Aproximación completada

Viento 000º/10 Kts 200ft/min 2º derecha +5º 2m/sg derecha y atrás

8 metros No, descontrolado y fuera de la helisuperficie

Viento 000º/10 Kts 100ft/min 0º +3º 1m/sg derecha

5 metros Si

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 de descenso

Angulo de alabeo

Angulo de cabeceo

Velocidad en el plano horizontal

Distancia a la zona de toma deseada

Aproximación completada

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 derecha y atrás

5 metros No descontrolado

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

5 metros Si

Viento 330º/04 Kts 200ft/min 2º derecha +2º 2 m/sg derecha y atrás

5 metros No descontrolado

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

97

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

98

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.

99

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.

100

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.

101

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.

102

Figura 8.1 Sistema BHLAS, prototipo completo (Noviembre 2014).

103

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.

104

[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

105

[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

106

.

APENDICE I.1 LÍNEAS DE PROGRAMACIÓN (ARDUINO)

107

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

108

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

109

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

110

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

111

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;

112

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

113

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

114

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

115

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

116

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

117

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

118

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

119

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

120

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

121

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

122

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

123

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

124

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

}

125

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

126

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

127

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

128

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

129

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

130

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

131

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

132

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

133

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