scieee AI-readable full text Open interactive document viewer

Diseño de bancada y sistema de control de plantas de potencia híbridas en aeronaves no tripuladas

Quintana Hernández, Javier Alejandro

Abstract

En este trabajo se diseña, analiza y monta una bancada de pruebas del sistema de propulsión para sistemas aéreos no tripulados ( UAVs por sus siglas en ingles). Para ello será necesario la búsqueda del material necesario, para su posterior montaje y realización de ensayos. Siendo necesario desarrollar herramientas a nivel de software para el control del sistema propulsivo y la adquisición de datos. La planta de potencia pensada estará compuesta por baterías y energías renovables, como las pilas de hidrógeno y paneles solares. Además, se plantearán otras alternativas como los supercondensadores. Para el sistema de gestión de energía (BMS), se ha desarrollado un sistema en Arduino capaz de cargar baterías cuando el nivel de carga cae a un valor fijado previamente. Esto permite aumentar la autonomía con los excesos de potencia generados por la pila de combustible para recargar las baterías. El objetivo del diseño de esta planta de potencia es el estudio del control de la gestión de energía, particularmente las energías renovables en vehículos aéreos, estando enmarcado en los proyectos SAFEMPC y EMERGENTIA, liderados por Carlos Bordons y Sergio Esteban, respectivamente.

Full text

Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Proyecto Fin de Grado Grado en Ingeniería Aeroespacial Diseño de bancada y sistema de control de plantas de potencia híbridas en aeronaves no tripuladas Autor: Javier Alejandro Quintana Hernández Tutores: Carlos Bordons Alba .Sergio Esteban Roncero Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2022 Proyecto Fin de Grado Grado en Ingeniería Aeroespacial Diseño de bancada y sistema de control de plantas de potencia híbridas en aeronaves no tripuladas Autor: Javier Alejandro Quintana Hernández Tutores: Carlos Bordons Alba Catedrático de Universidad Sergio Esteban Roncero Profesor Contratado Doctor Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2022 Proyecto Fin de Grado: Diseño de bancada y sistema de control de plantas de potencia híbridas en aeronaves no tripuladas Autor: Javier Alejandro Quintana Hernández Tutores: Carlos Bordons Alba Sergio Esteban Roncero El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Agradecimientos De sde el comienzo de este grado, han sido muchos los momentos pasados y las lecciones aprendidas. Todas ellas aunque en algunas ocasiones parecieran sin relevancia, han logrado forjar un carácter, una forma de ver la vida y una forma de pensar, que marcará el resto del largo camino que aún queda por recorrer. Eso es para mi la Ingeniería, un estilo de vida mucho más allá de cualquier conocimiento que pueda adquirir. Es destacable decir que nada de esto hubiese sido posible sin las grandes personas que me han acompañado y apoyado en este camino. En especial a mis padres, cuya exigencia y apoyo me han motivado a no dejar de luchar por conseguir mis objetivos, y a mi hermana que aunque nos hayamos separado por primera vez me seguía aguantando y apoyando cuando estaba estresado. Tampoco puedo dejar de hacer mención tanto a los amigos que me ha dado la carrera como los de mi infancia junto a la familia, gracias a todos de verdad, sin ustedes no hubiese sido posible. Por último, agradecer a mis tutores Carlos Bordons, el cual desde el primer momento me ha mostrado el maravilloso mundo del Hidrógeno y la energía, y Sergio Esteban, por todo lo enseñado no solo del mundo de la aeronáutica sino por su implicación y dedicación en todo lo que hace, y a Juan José Márquez por su apoyo y conocimiento mostrado durante todos los ensayos realizados. Muchas gracias a todos de verdad, ha sido un placer estos meses de trabajo junto a ustedes. Tras esto y 4 años se pone culmen a mi Grado en Ingeniería Aeroespacial. Javier Alejandro Quintana Hernández Grado en Ingeniería Aeroespacial Sevilla, 2022 I Resumen En este trabajo se diseña, analiza y monta una bancada de pruebas del sistema de propulsión para sistemas aéreos no tripulados ( UAVs por sus siglas en ingles). Para ello será necesario la búsqueda del material necesario, para su posterior montaje y realización de ensayos. Siendo necesario desarrollar herramientas a nivel de software para el control del sistema propulsivo y la adquisición de datos. La planta de potencia pensada estará compuesta por baterías y energías renovables, como las pilas de hidrógeno y paneles solares. Además, se plantearán otras alternativas como los supercondensadores. Para el sistema de gestión de energía (BMS), se ha desarrollado un sistema en Arduino capaz de cargar baterías cuando el nivel de carga cae a un valor fijado previamente. Esto permite aumentar la autonomía con los excesos de potencia generados por la pila de combustible para recargar las baterías. El objetivo del diseño de esta planta de potencia es el estudio del control de la gestión de energía, particularmente las energías renovables en vehículos aéreos, estando enmarcado en los proyectos SAFEMPC y EMERGENTIA, liderados por Carlos Bordons y Sergio Esteban, respectivamente. III XÍndice 5.3 Funcionamiento 52 5.4 Hardware y Software desarrollado 54 5.5 Simulaciones y funcionamiento 57 5.6 Conclusiones 63 6 Planta propulsora con pilas de combustible 65 6.1 Setup 65 6.2 Pruebas iniciales 66 6.2.1 Curva de polarización 66 6.2.2 Determinación de límites operaciones 70 6.3 Método de Caracterización de Sistema Propulsor de UAV 73 6.3.1 Hélices de Paso Fijo 73 6.3.2 BLDC Motor 74 6.3.3 Setup y adquisición de datos 74 6.3.4 EPU Mapas estáticos 75 6.3.5 Fuerzas aerodinámicas y momentos 76 6.3.6 Consumo de energía y eficiencia 76 6.4 Caracterización de sistema propulsor en misiones 77 6.4.1 Simulación de perfiles de vuelo 77 6.4.2 Caracterización de una misión real 79 6.5 Medidas de seguridad adoptadas 82 6.6 Conclusiones 83 7 Planta propulsora con baterías 85 7.1 Setup 85 7.2 Caracterización de sistema propulsor 86 7.2.1 Mapas estáticos 86 7.2.2 Fuerzas Aerodinámicas y Momentos 87 7.2.3 Consumo de Energía y Eficiencia 88 8 Planta propulsora con hibridación 91 8.1 Componentes clave de Sistemas Híbridos Pilas de Combustible-Baterías 91 8.2 Pruebas iniciales 92 8.3 Caracterización con convertidor DC-DC 95 8.4 Implementación con Pila de hidrógeno 97 8.5 Mejoras del Sistema Pila-Baterías 101 9 Conclusión 105 10 Líneas futuras 107 Apéndice A Códigos desarrollados 109 A.1 BMS en Arduino 109 A.2 Conexión UDP 113 A.3 Interfaz de simulación de misiones 118 Índice de Figuras 131 Índice de Tablas 135 Índice de Códigos 137 Bibliografía 139 Glosario 141 Notación PEM Proton Exchange Membrane REDOX Reducción-oxidación UAV Unmanned Aerial Vehicle PC Personal Computer GUI Graphic User Interface ESC Electronic Speed Controler DC Direct Current BMS Battery Management System PCB Printed Circuit Board UDP User Datagram Protocol PWM Pulse-Width Modulation FC Fuel Cell PC Pila de Combustible BAT Batería PV PhotoVoltaic MCU Micro Controller Unit XI 1 Introducción y objetivos del proyecto En este capítulo se introduce la motivación que ha llevado a la realización de este documento, así como los objetivos y alcances que se pretenden cumplir durante su realización, detallándose en los proyectos que se encuentra enmarcado. 1.1 Contexto Los vehículos aéreos no tripulados actualmente no contemplan diseños de plantas de potencia con motores convencionales térmicos, debido a varios aspectos técnicos: contaminación acústica y medioambiental; vibraciones transmitidas; y peso aportado al sistema. Con lo que se han buscado alternativas adecuadas a las exigencias encontradas en motores eléctricos, baterías y pilas de combustible. Los motores eléctricos proporcionan alta eficiencia, poco impacto acústico y son muy ligeros y compactos. Pero las limitaciones en densidad energética no son capaces de solucionarse con plantas de potencias basadas únicamente en baterías poliméricas de litio, siendo una de la posibles soluciones la hibridación con pilas de combustible que permite casi duplicar la energía por unidad peso introducido. Este descubrimiento ha permitido aumentar notablemente el rango de operación de los UAVs, aumentando su autonomía y carga útil. Por lo que partiendo de la idea de la hibridación de diferentes fuentes de energía, se plantea el desarrollo de una planta de potencia híbrida para un futuro UAV en diseño para el proyecto EMERGENTIA-PROVANT (concurrent devElopment of an unManned convERtible aircraft for rapid, safe and efficient deployment in emerGENcy situaTIons), junto con el estudio de nuevas técnicas de control para la gestión de la energía del proyecto SAFEMPC (Técnicas de Gestión Segura y Fiable de la Energía en Microrredes Integrando Cambios en la Demanda y Control Predictivo Estocástico). 1.2 Motivación Las sociedades siempre desde sus inicios han requerido de energía para su desarrollo, las primeras se obtenían en los alimentos que ingerían que les permitía realizar labores de caza y vigilancia, orientado principalmente a lograr la supervivencia de la especie. En cambio, eso ha cambiado actualmente, ya nuestras necesidades son otras y no debemos luchar por sobrevivir, con esto hemos logrado pasar a una sociedad que busca un confort de los individuos, que va creciendo exponencialmente debido al crecimiento de la población mundial y sus demandas. Este confort requiere de una ingente cantidad de energía para alimentar los coches, aviones, trenes y cualquier otro medio de transporte tanto para ocio como para el trabajo diario; los alimentos, tras las revoluciones industriales esta industria cambió completamente pasando a procesos completamente automatizados desde la elaboración hasta la entrega a las grandes superficies de venta; tecnología, ha cambiado completamente la forma de vivir, teléfonos móviles, ordenadores, televisores, relojes inteligentes, todos estos dispositivos requieren de un suministro continuo de energía para funcionar, y que sin ellos hoy en día no podríamos 1 2Capítulo 1. Introducción y objetivos del proyecto concebir la vida. Esta demanda tan agresiva por los consumidores ha impulsado la búsqueda de lograr producir energía de la forma más barata sin dar prioridad a respetar el medio ambiente, creándose una gran degradación que ya podemos empezar a apreciar en nuestros días. Por suerte, grandes grupos por todo el mundo se han movilizado en busca de alternativas que provoquen una menor incidencia en el ambiente, motivando y allanando el camino a otros proyectos, en búsqueda de un mundo más limpio y seguro para las próximas generaciones. Esos son los ideales principales que los investigadores de la Universidad de Sevilla quieren aportar, especialmente en este proyecto contribuyendo al sector aeronáutico que a pesar de la existencia de grandes proyectos planteados para los próximos años, no existe ninguno con firmeza suficiente para ser realidad debido a los grandes retos en densidad energética. 1.3 Objetivos y alcance El proyecto abordado tiene como objetivo el estudio de la planta de potencia de un dron para su posterior implementación en un UAV, conformado inicialmente en un sistema híbrido de baterías y pilas de combustible. Para ello será necesario el diseño de una bancada de pruebas de tanto la planta propulsora como la planta de potencia (formada por las diferentes fuentes de energía) con la que se realizarán pruebas para el testeo y optimización previas al montaje en el UAV. Con el fin de lograr un correcto funcionamiento se deberán cumplir especificaciones técnicas para suministro y almacenaje de hidrógeno, adecuar la tensión e intensidad generada por la pila para el correcto aprovechamiento y sistemas de control de la carga de baterías. El orden cronológico de objetivos propuesto para el proyecto consiste en una primera aproximación a el estado de la tecnología actual y proyectos existentes. Posteriormente se plantearan dos bancadas de pruebas, una para la planta de potencia y otra para el sistema propulsor, para las que será necesario la búsqueda de materiales necesarios y plantear los esquemas de conexiones. Una vez logrado el montaje de las bancadas, será necesario comprender el funcionamiento de la pila y el software de la hélice, creándose las herramientas necesarias para la correcta realización de los ensayos. Los ensayos se realizarán con las instalaciones de hidrógeno de el laboratorio y unos depósitos portables para los ensayos en el túnel de viento, para ello deberán demostrar la viabilidad de la planta de potencia con las diferentes fuentes de energía, tanto de forma aislada como híbrida. Posteriormente planteada la planta de potencia híbrida, se deberá de realizar una optimización solventando los problemas que puedan haber surgido durante los ensayos. Entre los sistemas auxiliares necesarios para el funcionamiento de la hibridación, se encuentra un sistema de monitorización de la carga de las baterías, este sistema debe de ser capaz de aprovechar los excesos de producción de energía de la pila o cualquier otra fuente, para recargar las baterías cuando sea necesario. Además, otras tecnologías como la carga regenerativa debido a la autorotación de la hélice podrán ser exploradas con el objetivo de aumentar la autonomía de las baterías. Finalmente al tratarse el objetivo de el proyecto en la implementación de una planta de potencia en un UAV para su vuelo, será necesario demostrar la viabilidad de cumplir dichas misiones exigidas para el UAV, analizándose mejoras y soluciones a los problemas que puedan generarse. 1.3.1 Estructura del documento La estructura que seguirá el documento comenzará por un capítulo introductorio a las pilas de combustible (capítulo 2) que responderá a las preguntas, ¿Qué son?, ¿Cuándo surgieron? y ¿Por qué usarlas?, tras esta introducción se encuentran 2 capítulos, el primero acerca de la pila de hidrógeno empleada (capítulo 3) y el segundo acerca de la bancada de pruebas del sistema propulsor (capítulo 4) formado por el conjunto hélice 1.4 Acerca del Proyecto 3 más el hardware y software de RCBenchmark junto a la jaula protectora de ensayos. Una vez sentadas las bases de las herramientas disponibles, se procede a plantear los problemas a solucionar para su posterior resolución, primero de forma teórica y luego práctica (en forma de ensayos en laboratorio). El capítulo 5 propone un sistema capaz de realizar la carga de baterías cuando su nivel de carga es bajo mediante un algoritmo desarrollado e implementado en Arduino, y los capítulos 6, 7 y 8, plantean diferentes variantes de plantas propulsoras, alimentadas con pilas de hidrógeno, con baterías y con hibridación, respectivamente. Finalmente, este documento se concluye con las conclusiones (capítulo 9) y líneas futuras (capítulo 10). Recordar al lector que podrá encontrar todos los códigos desarrollados para los ensayos en los anexos al final del documento donde se encuentran explicados con anotaciones en forma de comentarios. 1.4 Acerca del Proyecto Este TFG está relacionado con el proyecto EMERGENTIA-PROVANT, que lidera Sergio Esteban Roncero y con el SAFEMPC, liderado por Carlos Bordons Alba. El SAFEMPC, Técnicas de Gestión Segura y Fiable de la Energía en Microrredes Integrando Cambios en la Demanda y Control Predictivo Estocástico (SAFEMPC), PID2019-104149RB-I00, financiado por el Ministerio de Ciencia e Innovación, Plan Estatal 2017-2020 Retos - Proyectos I+D+i, uno de sus objetivos es el estudio de nuevas técnicas de control para la gestión de energía en vehículos, tanto terrestres como aéreos. Para poder hacer un control avanzado es fundamental poder conectarse con la pila y enviarle comandos de encendido/apagado y solicitarle una potencia deseada. El concurrent devElopment of an unManned convERtible aircraft for rapid, safe and efficient deployment in emerGENcy situaTIons (EMERGENTIA-PROVANT), propone explorar el uso de aronaves de ala fija convertibles con capacidad VTOL diseñadas específicamente para misiones SAR. Esta aeronave será fácil de operar y rápida de desplegar por lo que requiere el uso de una electrónica eficiente y altamente integrada, además con el objetivo de lograr un incremento de la autonomía se diseñarán e implementaran sistemas de gestión de energías renovables, como paneles solares y pilas de combustible, de ahí la importancia de este TFG en dichos proyectos. 2 Estado del arte Este capítulo pretende ser una introducción a las pilas de hidrógeno, para ello en primer lugar se explican las partes que la conforman y se detalla su funcionamiento interno (sección 2.1), mientras en la segunda sección se realiza una pequeña introducción histórica pasando por algunos de los mayores hitos de esta tecnología. Tras esto, en la última sección del capítulo (sección 2.3) se justifican las causas del empleo del hidrógeno como combustible apoyándose en comparativas con tecnologías similares como motores de combustión y baterías. Si el lector lo desea puede profundizar más en estos conceptos consultando la bibliografía [ 9 , 13 , 5 ] 2.1 ¿Qué es una pila de combustible? Se puede pensar en las pilas de combustible (PC) como una fábrica que toma combustible de entrada y produce electricidad como salida. Como una fábrica, una pila de combustible continuará generando productos (electricidad) así como quede materia bruta (combustible). Esta es la diferencia clave entre una PC y una batería. Mientras en ambas descansa su magia en la electroquímica para funcionar, una pila no es consumida cuando está produciendo electricidad. Esta es realmente una fábrica, que transforma energía química almacenada en un combustible en energía eléctrica. Visto de este modo, los motores de combustión también son fábricas químicas. También toman de la energía química almacenada en un combustible y la transforman en energía mecánica útil o energía eléctrica. Entonces, ¿Cuál es la diferencia entre estas dos? En un motor convencional, el combustible es quemado, liberando calor. Considere el ejemplo de la combustión de hidrógeno y observe la figura 2.1: H2+1 2O2⇋H2O(2.1) Figura 2.1 Esquema pila combustible[13]. 5 6Capítulo 2. Estado del arte En la escala molecular, colisiones entre moléculas de hidrógeno y oxígeno resultan en una reacción. Las moléculas de hidrógeno son oxidadas, produciendo agua y liberando calor. Para producir electricidad, este calor debe ser convertido en energía mecánica, y luego en energía eléctrica. La realidad es que realizar todos estos pasos es altamente complejo y poco eficiente. Considere como una solución alternativa producir electricidad directamente de la reacción química partiendo del punto de que los electrones se mueven de estados de alta energía a baja energía. Esto es justo lo que una PC realiza. En una pila de combustible, la reacción del hidrógeno se divide en dos reacciones electroquímicas: H2⇋2H++2e−(2.2) 1 2O2+2H++2e−⇋H2O(2.3) Los electrones transferidos del combustible son forzados a fluir por un circuito externo (generando una corriente eléctrica) donde una carga es demandada antes de que ellos puedan completar la reacción. Para separar las reacciones se emplea un electrolito. Un electrolito es un material que permite a los iones (átomos cargados) fluir pero no a los electrones. Como mínimo, un pila debe tener dos electrodos, donde las dos reacciones electroquímicas ocurren, separadas por un electrolito. Figura 2.2 Pila de combustible simple[13]. La corriente producida por una pila es escalada con el tamaño de la zona de reacción donde los reactantes, el electrodo, y el electrolito se encuentran. En otras palabras, doblando el área de una pila aproximadamente se dobla la corriente producida. Fijándonos en la figura 2.2, podemos seguir los pasos involucrados en la producción de electricidad en una pila. 1. Llegada del reactante a la pila. 2.2 Historia de las PEM 7 2. Reacción electroquímica. 3. Conducción iónica a través del electrolito y conducción eléctrica por el circuito externo. 4. Eliminación de productos de la pila. Figura 2.3 Pasos en generación electroquímica de electricidad[13]. La reacción es exotérmica y muy lenta, no siendo operativa sin catalizadores, siendo lo común que los electrodos funcionen como catalizadores. La ventaja de utilizar el oxígeno gaseoso como oxidante, es su gran disponibilidad y los productos generados, el agua, permitiendo que sea neutro en emisiones contaminantes. Entre las ventajas de emplear este tipo de pilas se encuentran: • Rendimiento elevado, en torno a 40-50% , frente al 25% de los motores de combustión convencionales. •Diseño compacto y fácilmente escalable. • No generan gases de efecto invernadero siendo una de las futuras alternativas a los combustibles tradicionales. •Alta densidad energética, llegando a duplicar algunas baterías. • Bajo mantenimiento, silenciosas y no producen vibraciones, gracias a que no dispone de partes móviles. 2.2 Historia de las PEM Aunque se crea que el uso de pilas de combustible es algo muy novedoso, debido al auge que están viviendo en nuestros tiempos, la realidad es que no es una invención moderna con casi dos siglos de antigüedad. Si es cierto que no disponían de la refinada tecnología que presentan las actuales, pero la idea que sustenta su funcionamiento es la misma, una reacción tipo REDOX, que permite la disociación de un compuesto, creando otro y liberando electrones en el proceso provocando la creación de un potencial eléctrico. Los padres de esta tecnología son considerados Christian Friedrich Schönbein que desarrolló sus trabajos en Suiza y, paralelamente, el físico y jurista galés Sir William Grove (se puede observar el dispositivo ideado por él en la figura 2.4), cuyos resultados fueron publicados en 1843. Los años siguientes esta tecnología pasaría desapercibida, en principal medida por su escaso calado en la sociedad de la época y la ausencia de un problema a resolver.[19] 14 Capítulo 3. Pila de hidrógeno Figura 3.3 Controlador electrónico[16]. Entre las diferentes conexiones que permite el controlador de la pila (fig. 3.3, encontramos una conexión de salida a la carga (conector blanco) y otro a la pila para permitir el control de esta (conector amarillo), el resto de terminales (4, de los que solamente se usarán 3) permiten la comunicación con el PC (Interface Header), el encendido y apagado de la pila (On/Off Switch RS-232 header), y la lectura de la presión de H2 en la pila (H2supply pressure sensor header). Tabla 3.3 Especificaciones del controlador[16]. Processor Board FLY V3.1 PCBA Dimension 85 ×55 ×25mm PCBA Weight 105g Output Connector User specified Warning & Protections Low voltage, high temperature, low battery, low fuel Communication RS-232/USB Data Acquisition (DAQ) Software PC graphic user interface (GUI) application GUI Capabilities Live monitoring, graph plotting, data logging, snapshot 3.3 Curva de polarización La curva de polarización mostrada en la figura 3.4 describe el funcionamiento y las prestaciones de una pila de combustible, permitiendo conocer fácilmente el rendimiento de ésta. Esta curva muestra la evolución de la tensión generada por la pila de combustible con el aumento de la intensidad de la corriente. En la siguiente gráfica se ha representado en el eje horizontal la intensidad medida en amperios, y en el vertical la tensión, medida en voltios, siendo la curva azul la de polarización. 3.4 Software GUI 15 Figura 3.4 Curva de polarización y potencia[16]. A partir de esta curva podemos obtener fácilmente la curva de potencia, representada en rojo, ya que la potencia se obtiene a partir de la siguiente expresión: P=V·I(3.1) Donde P representa la potencia en vatios, V el voltaje en voltios e I el amperaje en amperios. Posteriormente uno de los ensayos a realizar en el laboratorio consistirá en la obtención de esta curva de polarización (fig. 3.4), haciéndose una comparación ya que las condiciones ambientales influyen en su obtención. 3.4 Software GUI Spectronik ha desarrollado un software especialmente diseñado para las pilas de combustible de su marca, llamado GUI DAQ, Graphic User Interface Data Acquisition. GUI DAQ transmite en tiempo real el rendimiento de la pila de combustible y almacena parámetros de interés. Además, es posible guardar y analizar la información conectando un PC al controlador de la pila mediante un cable RS-232, con el que se mostrarán gráficos en tiempo real. El registro de datos recopilados es posible exportarlos a excel mediante el formato .cvs, o a notas de texto, con el formato .txt. Entre la información con posibilidad de salvar se encuentran: tensión de salida; intensidad de salida; potencia de salida; temperatura de la pila; energía de la pila; tensión de alimentación externa; presión de entrada del H2 . La interfaz de adquisición de datos permite monitorizar los parámetros primarios y secundarios, observe la figura 3.5 donde se sigue la nomenclatura siguiente: •Tensión de salida (V). •Corriente de salida (A). •Potencia de salida (W). •Temperatura interna de la pila (ºC). •Energía generada (Wh). •Aux 1, tensión de alimentación de la pila (conectada en paralelo) •Aux 2, presión de entrada a la pila (bares) 16 Capítulo 3. Pila de hidrógeno Figura 3.5 Datos en tiempo real. El proceso de inicializado del GUI es el siguiente: 1. Conexión del PC con la pila de combustible usando el cable RS-232, 2. Encendido del programa "Spectronik Fuel Cell" tras su instalación, 3. Presione sobre el logo "S" (inicialmente debe ser color plata, tras la conexión exitosa con el PC cambia a oro, observe la figura 3.7), 4. Encienda la PEM siguiendo sus instrucciones de forma normal. Si el software ha sido conectado exitosamente, aparecerán mensajes de estado en el display, seguidos de los parámetros de estado, 5. El software ahora se encuentra completamente configurado proyectando los valores en tiempo real, Figura 3.6 Errores y avisos mostrados en el Status Display. Además, una vez se logra la conexión con el ordenador es posible observar en la pantalla de estado los avisos mostrados por el sistema (fig. 3.6), cosa que únicamente podía ser detectada mediante avisos sonoros y luminosos del switch. Nota: Puede ser necesario cambiar la región del PC, seleccionando en el panel de control la región e idioma: English (UK), esto soluciona los problemas de formato relacionados con (.) y (,). Para la adquisición de datos se seguirán los siguientes pasos, tras la conexión exitosa con el ordenador: 3.4 Software GUI 17 •Presione sobre el botón de guardar, •Seleccione el formato y nombre del archivo, •Tras presionar "ok" el software almacenará todos los parámetros, Figura 3.7 Gráficas en tiempo real. En caso de que se opte por el graficado en tiempo real (fig. 3.7), se podrá ajustar la gráfica con los parámetros deseados, siendo 6 el máximo de parámetros simultáneos posibles. También es posible ajustar el escalado del eje horizontal mediante las flechas de la parte inferior de la figura 3.7 o simplemente emplear el autoescalado. 18 Capítulo 3. Pila de hidrógeno Figura 3.8 Parámetros exportados en excel. Como ejemplo de datos exportados en formato .csv o .xlxs, la forma de presentación de estos será como la mostrada en la fig. 3.8, donde las lecturas se almcenarán en columnas de un fichero .xlxs, en caso de emplear el formato .csv estos podrán ser interpretados en python1, trabajando con el ellos para el desarrollo un software. 3.5 Banco de pruebas Para conocer las características y funcionalidades a emplear en el diseño final, es necesario realizar unas primeras pruebas en bancada, donde se determinará la curva de polarización, se estudiarán conexiones óptimas y se trabajará en el Software antes de su implementación en el dron. 3.5.1 Material necesario Tras la compra de la pila ha sido necesario la búsqueda de información relativa a su funcionamiento, para la que se han consultado manuales técnicos y contactado con el fabricante para aspectos no recogidos en los documentos que se disponía. Por lo que se ha evaluado que para su encendido y correcto funcionamiento se requerirán de los siguientes elementos: •Regulador apto para hidrógeno con presión de salida entre 0.4 y 0.7 bar, •Fuente (24V,1A)/Batería 6S 2000mAh, •Carga electrónica, •Convertidor DC-DC, •Tubería de PU de 4mm OD, •Racor y conexiones auxiliares, •Conectores tipo XT60 3.5 Banco de pruebas 19 Figura 3.9 Pila Protium con regulador. En la figura 3.9 se observa el regulador de hidrógeno en el centro, la pila Protium a su derecha y el controlador a la izquierda del regulador, donde se aprecia el conector amarillo (XT60) que permite la conexión con la pila. Para conseguir los siguientes elementos, se ha contactado con los comerciales de las empresas que disponían de un acuerdo marco con la Universidad de Sevilla. A continuación se detalla la elección de cada elemento. •Regulador de presión: Tras el análisis de reguladores con distintos proveedores se ha optado por emplear el regulador de Spectronik, ya que su miniature gas pressure regulator era el único que lograba unas presiones de salida de 0.4-0.7 bar desde fábrica. Figura 3.10 Regulador de presión. 20 Capítulo 3. Pila de hidrógeno Tabla 3.4 Especificaciones del regulador. Gas media Hydrogen Rated inlet pressure 350bar Min inlet pressure 10bar Gas outlet pressure (@ rated flow) 0.45-0.75bar (factory set during order) Max outlet pressure (@ zero flow) Gas outlet pressure + 0.3bar Rated flow-rate 40 SLPM Operating temperature [-20,85]°C Operating lifetime >10,000 cycles Outer body material Al 2A14-T6 Core internal material SS 316/H62/TC4 Core sealing material PTFE Sealing gasket material NBR Dimension 75 x 58 x 85 mm Weight <200g Connection to gas cylinder M18 x 1.5 Integrated gas pressure sensor (optional) Thin Film Pressure, Transducer CS-PT831C Connection to pressure sensor NPT 1/8 Connection to refueling hose M12 x 1.25 Gas outlet connector NPT 1/4 to PU 6mm Optional (M24 x 1.5 to M5 female) Debido a retrasos en los envíos, fue necesario buscar alternativas con el fin de poder realizar los ensayos con hidrógeno, por lo que se consiguió que el INTA nos prestara un regulador de Airliquide (fig. 3.11) (a) (b) Figura 3.11 Regulador prestado por el INTA. •Fuente (24V,1A)/Batería 6S 2000mAh. Para lograr el encendido de la PEM, se requiere de una batería o fuente (fig. 3.7-(b)) que suministre una pequeña potencia, para el caso de la prueba en bancada es suficiente con una alimentación de 24V. En caso de que se opte por una usar una batería esta puede servir para cubrir picos de demanda de potencia una vez la pila este funcionando correctamente y se le demande potencias superiores a 300W, que es su potencia nominal. En caso de que no se disponga de un sistema de gestión de carga (BMS) para evitar que la batería se recargue en exceso, debido a los excesos de potencia de pila, se debe usar un diodo (fig. 3.12-(a)) que impida la recarga de esta. 3.5 Banco de pruebas 21 (a) (b) Figura 3.12 Diodo y fuente empleadas. •Carga electrónica. En la prueba en bancada se simularan casos reales de demanda de potencia mediante la carga electrónica, posteriormente estas demandas serán cubiertas por los motores del dron. •Convertidor DC-DC. Las pilas de combustible no permiten proporcionar una tensión constante, ya que esta vendrá dada por su curva de polarización lo que requiere que se empleen dispositivos para fijar voltajes en función del la demanda que solicita el dispositivo al que se le conecta. Como el ESC empleado permite un rango amplio de voltaje, este convertidor (fig. 3.13) será empleado inicialmente para fijar las baterías a 24V y permitir un sistema híbrido cuando la pila esté a su máxima potencia. En futuros diseños se puede estudiar emplear las pila con convertidor DC y las mejoras que pueda ofrecer. El convertidor empleado soporta un voltaje a la entrada máximo de 90 V y mínimo de 9V, y corrientes máximas de 26A. Actualmente se encuentra fijado con una salida de 24V, puede consultar su data sheet, https:// www. synqor.com/ products/hvnq/ nq90w90hgx26aquí. 22 Capítulo 3. Pila de hidrógeno Figura 3.13 Convertidor DCDC de 24V. (a) Esquemático del convertidor. (b) Distribución de pines. Figura 3.14 Convertidor DC-DC. Observe la figura 3.14, donde el voltaje de salida puede ser programado desde 0V hasta la Vmax conectando una resistencia entre Vset (pin 6) y Vsense- (pin 5). Para estimar esta resistencia se hace uso de la siguiente expresión obtenida del data sheet que puede encontrar en el enlace indicado anteriormente: RVset (Vset ) =  11830Vmax Vset +0.058Vmax −10912(Ω)(3.2) Donde, Vset es el voltaje deseado y Vmax el voltaje máximo nominal (90V). La corriente máxima de salida, efectivamente es la impuesta por el convertidor, puede ser reducida a cualquier valor entre 0 e Imax mediante la conexión de una resistencia entre Iset (pin B) y Vsense- (pin 5). El valor de la resistencia es estimado a partir de la expresión obtenida del data sheet: RIset (Iset ) = 0.0469Imax +Iset 1.153Imax −Iset ·10200 −10(Ω)(3.3) Donde, Iset es la corriente deseada e Imax es la máxima corriente (26A). Por tanto, se obtiene en el diseño adoptado para una tensión de salida de 24V y una corriente de 12A, 3.5 Banco de pruebas 23 las resistencias de Vset , es 25.5 kΩy de Iset , es 7.5 kΩ, representadas en la figura 3.15. Figura 3.15 Esquema resistencias de salida. •Tubería Poliuretano. El fabricante especifica el uso de este tubing con diámetro exterior de 4 mm, con el que se transportará el hidrógeno desde los tanques hasta la pila pasando por el regulador que ajustará la presión de salida a un rango comprendido entre 0.4 y 0.7 bar. Figura 3.16 Tubing poliuretano 4 OD. •Racor y conexiones auxiliares. Para lograr la conexión de la tubería de hidrógeno con los reguladores se han necesitado algunos racor y adaptadores. Para la conexión de la tubería con hidrógeno con los reguladores se han requerido conexiones auxiliares como un racor de 4 mm de diámetro exterior para el tubo y de 1/4", mostrado en la figura 3.17. (a) Racor 4 mm. (b) Adaptador HH 1/4". Figura 3.17 Conectores. Estas conexiones debido al retraso en la llegada del regulador finalmente no han sido empleadas, ya que no eran compatibles con el nuevo regulador. Para ello se han requerido nuevas conexiones (fig. 30 Capítulo 4. Bancada RCBENCHMARK realizar test casi idénticos en cada uno de los ensayos. Para la realización de los ensayos se ha seleccionado la Serie 1580, que ofrece la ventaja de poder cuantificar el par, característica que las series anteriores no disponían. En la figura 4.1 se muestra las conexiones de el PCB que irá integrado en el soporte de fijación a la bancada junto a la hélice. Se aprecia el suministro de potencia que alo alimenta para su funcionamiento, y los sensores de corriente y revoluciones. Figura 4.1 Setup de medida de datos. 4.2 Componentes Tras justificar la elección del modelo 1580, se analiza en profundidad los componentes que forman el set, principalmente la placa electrónica y los sensores que esta incluye. El resto de elementos necesarios para la puesta en funcionamiento de la bancada, como variador o el sistema motopropulsivo, se describirán posteriormente. • Placa de la serie 1580. Es una placa electrónica (ilustrada en la figura 4.2 y comentada en el esquemático de la figura 4.1), como la mostrada en la figura, que constituye la parte fundamental del sistema de adquisición de datos. A ella se conecta tanto la fuente de alimentación del motor que se desea testear, como el variador que es le componente electrónico encargado de controlar las revoluciones del motor. Se controlará desde un ordenador que posea conexión USB haciendo uso del software de control, que será necesario instalar. 4.2 Componentes 31 Figura 4.2 PCB Series 1580. • Sensores de tracción y par. Consisten en células de carga, con bandas extensiométricas. Son necesarias un conjunto de tres células de carga para obtener valores tanto de tracción como de par. Los sensores van conectados a la placa con una tasa de muestreo del orden de 8Hz. La célula de carga de tracción tiene un máximo de 5 kg debido a limitaciones asociadas al software. No obstante, tiene un factor de seguridad de 2 que garantiza su resistencia hasta cargas de 10 kg. Para el conjunto de dos células de carga que componen el sistema de medición del par, los valores máximos medidos por el software asociado corresponde a valores de ±1.5N·m. • Medidor eléctrico de revoluciones del motor. Es un cable conectado a uno de las tres fases del motor eléctrico que mide las revoluciones por minuto a través del cambio de polaridad que se produce en motores de corriente trifásica. Debido a este método de medición, es de suma importancia configurar el número de polos que tiene el motor a montar en la aplicación de RCBenchmark. Existe la posibilidad de utilizar otro tipo de medidor del régimen de revoluciones del motor con un sensor óptico. En este proyecto se ha utilizado solamente el sensor eléctrico, a pesar del ruido que puede presentar debido a interferencias durante el funcionamiento del motor. • Acelerómetros. Se dispone de un conjunto de tres acelerómetros dispuestos en las tres direcciones del espacio que permitirá medir la vibración de todo el conjunto Además de proporcionar al usuario la medida de estos sensores en el archivo generado por la herramienta RCBenchmark, sirve como medida de seguridad en caso de vibraciones excesivas a causa de posible entrada en resonancia o en caso de giro desequilibrado del motor o hélice. En la figura 4.3, se muestra el sistema propulsor formado por la hélice y el sistema de control y adquisición de datos en la estructura del puesto de ensayos. 32 Capítulo 4. Bancada RCBENCHMARK Figura 4.3 PCB con los sensores, motor y la hélice. 4.3 Calibración Otro punto importante es la calibración de los sensores de medida. Aunque en el diseño de una planta de potencia el empuje y par no sean factores determinantes, si permiten relacionar las planta de potencia con la propulsiva, que deberá ser estudiada en la caracterización del motor. El producto de RCBenchmark incluye un software de calibración de los dos sensores que supone un paso significativo en relación a los proyectos anteriores del Departamento de Ingeniería Aeroespacial. Los sistemas de caracterización de hélices utilizados anteriormente poseían sensores de diferentes procedencias que requerían una ardua tarea de calibración, que en el caso de la herramienta RCBenchmark se reduce a una serie de pasos ordenados para obtener una calibración bastante precisa antes de comenzar los ensayos y que además permite su recalibración cada cierto tiempo al ser un proceso muy sencillo. Como todo proceso de calibración, es necesario el uso de un sistema de cargas conocidos para que las medidas de las células de carga correspondientes a la tracción y par se ajusten con la realidad conocida. En las figuras 4.4 y 4.5, se muestran los pasos a seguir en el proceso de calibración del sensor de tracción, donde será necesario sujetar el soporte de forma vertical de forma que el peso recaiga sobre él, para posteriormente aplicarle la carga de 200 gramos. Es importante realizar este proceso de calibrado cada vez que se realiza alguna modificación de la estructura o cambio de un componente. 4.3 Calibración 33 Figura 4.4 Calibrado empuje. Figura 4.5 Calibrado empuje (2). Para la calibración del sensor de tracción, se utiliza un peso de 200g gramos, basándose en que la medida del peso al situar la bancada en posición vertical debe corresponde a la masa colocada por la constante de la gravedad W=m·g. El material necesario para hacer el calibrado es proporcionado en parte por el propio fabricante, •Peso de 200g (fig. 4.6). 34 Capítulo 4. Bancada RCBENCHMARK Figura 4.6 Peso de 200 g empleado. •Barra para crear un momento (fig. 4.7). Figura 4.7 Soporte para calibrado de par. •Gatos de sujeción. Los pasos a seguir en el proceso de calibración del sensor de par son los que se describen en las figuras 4.8, 4.9 y 4.10, donde el principio de acción es una barra a la que se le aplica una fuerza por el peso (fig. 4.6), como tanto el peso como la distancia y la fuerza son conocidos, se logra realizar el calibrado correctamente. 4.3 Calibración 35 Figura 4.8 Calibrado del par. Figura 4.9 Calibrado del par (2). 36 Capítulo 4. Bancada RCBENCHMARK Figura 4.10 Calibrado del par (3). En este proceso se ha utilizado un peso de 200 gramos para provocar un momento conocido según la ecuación , donde d es la distancia del peso al plano de simetría de la estructura de la bancada y W el peso conocido del sistema de cargas. Para realizar todo el proceso de calibración el set dispone tanto del software necesario como del hardware. Las figuras 4.11, 4.12 y 4.13, corresponden a fotos tomadas durante un proceso de calibrado del par, observe como la carga es fijada en dos posiciones a distancias diferentes. Figura 4.11 Montaje inicial para el calibrado de par y peso. 4.4 Software GUI 37 Figura 4.12 Primer calibrado de par y peso. Figura 4.13 Último calibrado de par y peso. 4.4 Software GUI Una de las características principales, por la cual se ha creído conveniente la utilización de la herramienta RCBenchmark en este proyecto, son las posibilidades que ofrece la aplicación a través de la cual se puede controlar el grupo de motor hélice montado en la bancada. La aplicación desarrollada por RCBenchmark es de software libre, lo que permite una gran flexibilidad en el desarrollo de nuevas herramientas que se puedan ajustar a las demandas futuras del proyecto. En ella se establece parte de la configuración del motor que se monta, y además puede controlar el dispositivo electrónico que regula el régimen de revoluciones del motor. En primer lugar, la conexión de la placa electrónica se realiza mediante una conexión USB al ordenador desde el cual el usuario va a controlar el ensayo. Previamente se tendrá instalada la aplicación GUI (Graphical User Interface) de Chrome o la aplicación de escritorio para Windows. A continuación se analizará cada una de las ventanas que ofrece la aplicación, en las cuales se debe introducir de manera correcta los valores de cada uno de los componentes para obtener unos resultados correctos. Se muestra las pestañas de selección de 38 Capítulo 4. Bancada RCBENCHMARK menú: Set Up, Utilities, Safety Cut-Offs, Manual Control y Automatic Control. Al iniciar el programa se muestran el conjunto de medidas de seguridad necesarias durante su funcionamiento (fig. 4.14). Figura 4.14 Ejecución de RCBenchmark GUI. El software de RCBenchmark incluye en su interfaz la posibilidad de graficar en tiempo real (fig. 4.15) los distintos parámetros medidos por los sensores durante el desarrollo del ensayo. De esta forma podemos detectar qué ocurre en cada momento durante su funcionamiento para detectar posibles errores o malas prácticas que puedan dañar los equipos, esto hace que su funcionamiento no se convierta en una caja negra que solo proporciona una salida tras darle la entrada. 4.4 Software GUI 39 Figura 4.15 Gráficas en tiempo real RCBenchmark. 4.4.1 Códigos JavaScript Para la realización de ensayos estandarizados se ha optado por desarrollar códigos que basados en los inputs que se fijen permitan aumentar o disminuir la carga solicitada por el motor. Para la realización de scripts ha sido necesario entender el modo de operación del software de adquisición de datos de forma que se pueda desarrollar un proceso lógico para un encendido correcto, salvado de datos, configurar una correcta transición de un modo a otro y finalmente su apagado. •test1.js Simula incrementos en el ancho de la modulación por ancho de pulsos (PWM, por sus siglas en inglés) (este concepto se explicará en la siguiente sección en mayor detalle) basados en el número de escalones fijados entre un límite superior e inferior de PWM, estos incrementos tendrán la duración deseada en la que a partir de cierto instante tomará el número de muestras fijados y hará una media de ellas con el objetivo de reducir el ruido que pueda existir. •UDP_python.js Es capaz de establecer una comunicación mediante el protocolo UDP con python para la adquisición de datos y el desarrollo de herramientas de control del sistema propulsor, como la interfaz de vuelo mencionada. En 4.1 se detallan las funciones tanto de lectura de los sensores como de escritura en el ESC de la información mandada desde python. Para evitar un colapso del buffer se han empleado sentencias que realicen un vaciado. Código 4.1 Script en JavaScript para conexión UDP. /* //////////////// UDP FINAL //////////////// To test, simply install Packet Sender from: https://packetsender.com/ 46 Capítulo 4. Bancada RCBENCHMARK Figura 4.24 Interfaz desarrollada en Python. Una vez se le da a calcular si la conexión ha sido realizada correctamente, se enviará la información al ESC que realizará los perfiles de vuelo solicitados, además se ha incluido la opción de adquirir todas las lecturas de los sensores de RPM, potencia, par, vibraciones, voltaje, corriente, así como el cálculo de los rendimientos y potencias mecánicas, entre otros. Luego estos valores podrán ser procesados mediante los scripts desarrollados para la generación de gráficas. También se estuvo estudiando la implementación del sistema de adquisición de datos de la pila con el del la hélice mediante la lectura de puertos serie en python, esta linea se abandonó finalmente por falta de tiempo para entender el cifrado de datos empleado en las comunicaciones. En A.4 puede consultar en detalle el código desarrollado para la interfaz con la creación de los sockets para establecer la comunicación. 4.6 Banco de pruebas Para la realización de ensayos de la planta propulsora se ha desarrollado un bancada consistente en el motor AXI 4130/16 con los componentes detallados anteriormente, veáse 4.2, junto con la estructura Series 1520/1580 - Enclosure V3 montada en el laboratorio de Ingeniería Aeroespacial. Esta estructura ha sido construida para proteger al operador de la bancada y la zona de pruebas. El ESC y el motor son instalados en su interior mediante el sistema de pruebas para evitar daños por la rotura de la hélice durante un test. Además, esto evita que el operador este muy cerca de la hélice durante su funcionamiento, siendo otra medida de seguridad adicional. Esta estructura ha sido testeada para palas de carbono y plástico más pequeñas de de 16". Sus dimensiones son 550 mm x 550 mm x 550 mm. El material incluido para el montaje de la estructura (fig. 4.25) es, •Structure Fastener Bag (SKU: CZHK) x1 •Stand Fastener Bag (SKU: KGRV) x1 4.6 Banco de pruebas 47 •Door Fixtures Bag (SKU: HBHQ) x1 •Frame 565 mm x 565 mm (SKU: PZUQ) x5 •Square Tube Stand 1"x1" x 160 mm length (SKU: WUPP) x1 •T-slotted beam 565 mm (SKU: GRFR) x1 •T-slotted beam 270 mm (SKU: EBMU) x1 •T-slotted beam 45 degree support (SKU: CKYX) x1 •U Front joiner (SKU: JTQW) x1 Figura 4.25 Estructura empaquetada. Tras seguir los pasos proporcionados en el manual, veáse https://www.tytorobotics.com/products/series- 1520-1580-1585-enclosure-v3?_pos=6&_sid=5b42579d9&_ss=r se ha logrado la siguiente estructura (fig. 4.26) donde se realizaran las pruebas de la bancada para la planta de potencia. 48 Capítulo 4. Bancada RCBENCHMARK Figura 4.26 Estructura montada para la bancada. Una vez colocado en el punto de los ensayos, siendo esta una ubicación cercana al puesto de hidrógeno, se encontró con el inconveniente de que no era posible hacerle agujeros a la mesa para su fijado, por lo que se diseño una base de madera a la que fijar la estructura que luego sería fijada a la mesa mediante unos gatos. Además, se abrió un agujero en la parte superior izquierda (fig. 4.27) , de forma que pasaran los cables y el sistema de generación de energía quedase en el exterior como media de seguridad. Figura 4.27 Motor AXI 4130/16 en la estructura. 5 Monitorización y alimentación de baterías En este capítulo se plantea e implementa un sistema de monitorización y alimentación de baterías empleando técnicas algorítmicas de carga basado en un Arduino que sea capaz de embarcarse en un UAV. Para ello inicialmente se realiza una pequeña introducción de la tecnología que se empleará (sección 5.1), posteriormente en la sección 5.2 se muestra como identificar características de interés en las baterías para el diseño de dicho sistema y la forma actual de carga con balanceadores (en tierra) antes del desarrollo final deseado montado en UAVs. En el resto de secciones se detallan los diferentes modos de carga existentes (sección 5.3) para el posterior desarrollo del algoritmo en Arduino que lo implemente (sección 5.4), y que será probado mediante simulaciones demostrando el modo de funcionamiento en la sección 5.5. Recordar a el lector que encontrará todos los códigos desarrollados en los anexos. 5.1 Introducción Las actuales plantas de potencia de los UAV son impensables sin un sistema de baterías, para que las plantas de potencia funcionen correctamente se requerirán de dispositivos que monitoricen la carga y descarga del sistema de baterías. Para ello se ha planteado un posible sistema de carga y monitorización de estas basado en Arduino, esto permite tener los datos en tiempo real de las baterías y poder decidir el momento de carga basado en órdenes algorítmicas. Para realizar el modelo se pensó en aprovechar la capacidad del PWM que proporcionaba el Arduino, donde la variable de control es el ancho del pulso. La modulación por ancho de pulsos (PWM) es una técnica en la que se modifica el ciclo de trabajo de una señal periódica, ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga. El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. D=τ T(5.1) Donde D es el ciclo de trabajo, τ es el tiempo en que la función es positiva (ancho del pulso) y T es el período de la función. La principal desventaja que presentan los circuitos PWM es la posibilidad de que haya interferencias generadas por radiofrecuencia. Estas pueden minimizarse ubicando el controlador cerca de la carga y realizando un filtrado de la fuente de alimentación. Siendo esto experimentado con el control PWM del motor de la hélice. 49 50 Capítulo 5. Monitorización y alimentación de baterías Figura 5.1 Señal cuadrada con el ciclo de trabajo D. El prototipo del arduino pensado se puede descomponer en dos sistemas (fig. 5.2), el sistema de potencia y control electrónico, que será donde se conectará la batería, y el sistema de visualización, donde se mostrará toda la información recopilada y el estado actual del sistema. Figura 5.2 Hardware planteado para el Arduino. 5.2 Caracterización baterías empleadas Según las características de las baterías empleadas será posible realizar perfiles de potencia más exigentes, para ello se requiere identificar la potencia máxima admisible por estas. 5.2 Caracterización baterías empleadas 51 Figura 5.3 Batería LiFe 6S 2300mAh. Las baterías LiPo y LiFe, disponen de una clasificación C. Al conocer la clasificación C y la capacidad de una batería, se puede estimar la corriente máxima de descarga segura y continua de una batería. Imax =C·Capacidad 1000 (5.2) donde Imax está expresada en Amperios, C es la capacidad de descarga y la Capacidad de la batería expresada en mAh. Por lo que nuestras baterías tendrán Imax =30 ·2300/1000 =69A en modo continuo, ya que para valores pico la C es 80, pero esto sólo es aplicable en intervalos de tiempo muy cortos (no más de 6 segundos). Es decir, se podrá alcanzar potencias del orden de 1.5kW en régimen continuo, con tensiones nominales de 22.2V, es importante considerar que el nivel de degradación de la batería juega un papel importante, por lo que se aplicará un factor de seguridad, siendo la potencia máxima operativa de 1kW. Las baterías tras realizar los ensayos se descargan por lo que es necesario disponer de cargadores que las devuelvan a su estado de carga máximo. Al ser unas baterías de más de una celda, estas no pueden ser cargadas directamente enchufándolas a la corriente. Es necesario hacer uso de un balanceador (fig. 5.4) que fije el mismo nivel de voltaje en cada celda y realice una carga segura con tensión y corriente controladas. 52 Capítulo 5. Monitorización y alimentación de baterías Figura 5.4 Cargador de baterías de celdas. 5.3 Funcionamiento Basándonos en el modo de funcionamiento del balanceador de la figura 5.4, se estudia para implementar en el software del arduino los modos de carga. Para implementar en el arduino un algoritmo de carga adecuado con el que cargar las baterías, es necesario conocer las distintas posibilidades de cargas capaces de ser implementadas en el algoritmo. Por ello, como es sabido existen diferentes métodos de carga, como la carga a voltaje constante, a corriente constante o una mezcla de estos. Comencemos con el primero, •Carga con voltaje constante. (fig. 5.5) Este es el método estándar, usado para cargar baterías de plomo ácidas porque reduce el tiempo total de carga e incrementa su capacidad hasta un 20%, pero también disminuye su eficiencia un 10% aproximadamente. La corriente de carga es alta inicialmente cuando la batería está descargada. El valor de la corriente irá gradualmente disminuyendo así como el el nivel de carga vaya aumentando. Figura 5.5 Método de carga de voltaje constante. •Carga con corriente constante. (fig. 5.6) En este método de carga, las baterías están conectadas en serie formado un pequeño grupo (baterías de más de una celda). La carga en cada grupo depende del voltaje del circuito, este usualmente no debe 5.3 Funcionamiento 53 exceder los 2.7V por celda. La corriente de carga se mantiene constante durante el periodo de carga reduciendo la resistencia del circuito así como el nivel de voltaje de la batería aumenta. Como medida para evitar sobrecalentamientos, el proceso de carga se puede dividir en dos pasos, uno de mayor corriente y otro final de menor corriente. Figura 5.6 Método de carga de corriente constante. •Sistema de carga mixto. (fig. 5.7) Cada uno de los métodos explicados anteriormente posee unas ventajas, en orden de lograr un método que incluya algunas de cada uno, se emplea este. Este método puede reducir el tiempo de carga considerablemente, y además tiene la capacidad de autoregular la corriente con un voltaje constante, evitando que la batería se sobrecargue. Figura 5.7 Método de carga mixto. El sistema de carga elegido para su implementación en el software del arduino, inicialmente es el de corriente constante, aunque se le ha aplicado una pequeña modificación en la que el nivel de corriente irá aumentando gradualmente hasta llegar a su régimen permanente, donde se mantendrá constante hasta que se alcance el nivel de carga deseado. Los controladores PWM son similares a reguladores en serie, estos usan transistores en vez de relés para controlar el flujo. El regulador de PWM se ajusta asimismo variando el ancho y velocidad de los pulsos enviados a la batería. Cuando el ancho está al 100%, el transistor está completamente encendido, con una tensión de 5V del pulso que será elevada para cargar las baterías, tras esto se volverá a poner el ancho del pulso a su mínimo, apagando el sistema de carga de forma inmediata. En el diagrama de la figura 5.8 se muestra la lógica del sistema de carga diseñado para su implementación 54 Capítulo 5. Monitorización y alimentación de baterías en el arduino, donde se realizará una comprobación en cada ciclo del nivel de tensión de la batería (V) comparándose con V_min (nivel de tensión mínima fijada previamente para la batería). Una vez el nivel de tensión sea inferior a V_min se procede a realzar la carga de las baterías, para ello el arduino comprobará que la corriente no excede el valor máximo fijado (I_max), aumentado el PWM. Una vez alcanzado el nivel de carga (V>V_max), se fijará el PWM a cero, para evitar que el arduino siga mandando corriente a la batería. Figura 5.8 Diagrama de flujo del sistema de carga. 5.4 Hardware y Software desarrollado Para la realización de las simulaciones se ha empleado la plataforma online tinkercad, que permite programar un Arduino fácilmente para realizar pruebas. En ella se han requerido los siguientes elementos,[ 10 , 6 , 15 , 12 ] •Arduino UNO R3. Figura 5.9 Arduino empleado. •Resistencias de 22kΩ, 3 de 10kΩ, 4.7kΩy 1Ω(resistencia shunt). 5.4 Hardware y Software desarrollado 55 Figura 5.10 Conjunto de resistencias empleado. •Transistor NPN (BJT), amplifica la tensión para el gate del MOSFET. Su función básica es aumentar la tensión de salida en respuesta a una previa señal de entrada, esto es posible gracias a su naturaleza semiconductora, –Emisor (E): emite portadores de cargas (partículas con cargas eléctricas). –Colector (C): recibe a estos portadores y los recolecta, por lo que va conectado a la fuente. – Base (B): esta parte está entre las dos partes anteriores, tiene como objetivo controlar el paso de portadores de carga. Figura 5.11 Transistor NPN (BJT). • Transistor PMOS (MOSFET), funciona como un grifo dejando pasar más corriente o menos, en función de las necesidades del momento controladas con el PWM. La tensión de alimentación se le aplica a su terminal origen (S) y a el terminal de puerta (G) se le proporciona con la tensión de entrada desde el BJT, mientras que el terminal de drenaje está conectado a la batería con un diodo, evitando un flujo de corriente contrario. Figura 5.12 Transistor PMOS (MOSFET). •Fuente de alimentación. 62 Capítulo 5. Monitorización y alimentación de baterías while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = 1125300L / result; return result; } //----------------------------------------------------------- // Mide corriente carga (con resistencia de shunt) float mideCorrienteCarga(){ amperes = 0; for(i=0;i<MUESTRAS;i++){ RawValue = analogRead(ISENSE); // mido analog tensión en A1 tensionAmp = (RawValue / 1023.0) * ADCvRef; // convierto a valor real tensión amperes = amperes + tensionAmp; // sumatorio de muestras } // convierto a mV y obtengo con el promedio de muestras la corriente corriente = ((amperes / MUESTRAS) / 1000.0) / r_shunt; // Obtengo la corriente (mA) con ley de Ohm return corriente; } //----------------------------------------------------------- // Medición de tension (emplea divisor de tensión) float mideTensionBat(){ volts = 0; for(i=0;i<MUESTRAS;i++){ RawValue = analogRead(VSENSE); // valor analógico de A0 de tensión tensionBAT = (RawValue / 1023.0) * ADCvRef; // Hago conversión volts = volts + tensionBAT; // sumo en cada muestreo } // Paso a mV, calculo la media en las muestras tension = (((volts / MUESTRAS) / 1000.0) / divisor) - v_diodo - v_shunt; return tension; } //----------------------------------------------------------- //Controlador de PWM en funcion del rango de operación /* Cargamos aumentando la tensión de la batería (cuando alcanza Vmax está cargada, por lo que vamos disminuyendo el PWM para bajar la corriente de alimentación y no cargar más la bateria. Al llegar a la corriente máxima se mantendrá constante */ void ajustaPWMcargador(){ if(corriente < I_MAX){ if(tension < V_MAX){ 5.6 Conclusiones 63 if(valorPWM<255){ valorPWM++; } delay(1); analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } else{ // compruebo si está cargada la bateria if(valorPWM>0 && tension >= 0.99*V_MAX){ valorPWM = 0; // apago alimentador delay(1); Serial.println("Bateria cargada"); cargado = true; delay(1); analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } } } else{ Serial.println("Regimen permanente corriente"); // compruebo si está cargada la bateria if(valorPWM>0 && tension >= 0.99*V_MAX){ valorPWM = 0; // apago alimentador delay(1); Serial.println("Bateria cargada"); cargado = true; analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } } } 5.6 Conclusiones Inicialmente se consideró la posibilidad de implementar un sistema de monitorización de carga y estado de la batería propio, por lo que se desarrolló el sistema citado, pero tras observar las limitaciones tecnológicas que se fueron presentando durante su desarrollo en cuanto al número de celdas que eran posibles conectar, se abandonó esta línea en búsqueda de sistemas BMS integrados en una PCB con conexiones USB-UART, pero no se descarta para un futuro el desarrollo de esta tecnología en caso de que las condiciones así lo requieran. 6 Planta propulsora con pilas de combustible En este capítulo se realiza el montaje de un planta de potencia compuesta únicamente por pilas de combustible y su ensayo en el laboratorio con la planta propulsora. La estructuración de estos ensayos se ha divido en 2 bloques, el primer bloque comprende un total de 3 ensayos en los que se han determinado la curva de polarización, PWM máximo admisible por la pila con el sistema propulsor actual y capacidad de respuesta de la pila ante cambios bruscos de la carga, respectivamente. Finalmente en el último bloque se realiza una caracterización del sistema propulsor que la puede encontrar en la sección 6.3, y la caracterización en 2 modelos de misiones diferentes, siendo una de ellas una misión real del EMERGENTIA-PROVANT a escala. 6.1 Setup Para el diseño de una planta de potencia alimentada por pilas de combustible es necesario conocer las limitaciones que esta presenta, por lo que se han diseñado unos test con los que evaluar las prestaciones de esta, es de destacar que para su realización se han adoptado especiales precauciones en cada paso que se ha tomado, empleándose medidas de seguridad como una fuente fijada a 25 voltios con el fin de evitar que la tensión del bus sea inferior, lográndose que la pila no llegue a tensiones inferiores a 24V (esto luego se demostrará como realmente no es problema, ya que la pila dispone de una protección que provoca el apagado). Otro factor esencial es localizar las fugas que puedan existir, por lo que se ha empleado herramientas para detectarlas como, sprays y detectores de H2. Para el encendido inicial de la pila se ha empleado una fuente, que durante el funcionamiento de los ensayos no estará funcionando, debido a que el nivel de voltaje de la pila será superior al de esta, que estará fijada a 25V. 65 66 Capítulo 6. Planta propulsora con pilas de combustible Figura 6.1 Esquema planta potencia inicial. 6.2 Pruebas iniciales 6.2.1 Curva de polarización Tras realizar los pasos para el encendido de la pila, puede verse en 3.6, se ha optado por realizar una caracterización de la pila, para ello se realizó una curva de polarización, de forma que se pueda detectar los puntos de operación en las condiciones ambientales de los laboratorios de la Escuela Técnica Superior de Ingeniería. Para el ensayo se ha requerido de los siguientes equipos, •Pila Protium 300, •Carga electrónica, •Fuente de alimentación, •Ordenador con Spectronik GUI. 6.2 Pruebas iniciales 67 Figura 6.2 Setup Planta propulsora con pila de H2. El test se ha realizado tomando incrementos en la carga de 1V cada 5 minutos aproximadamente, de esta forma se lograba eliminar el régimen transitorio lográndose que la pila alcance un régimen permanente donde poder tomar datos fiables. Figura 6.3 Curva de polarización. Comparando con la curva proporcionada por Spectronik, figura 3.4 se puede apreciar que presenta una diferencia de 2-3W debido a numerosos factores como la temperatura de la pila, calidad del hidrógeno y la diferencia en las condiciones ambientales, siendo las nuestras, •Temperatura ambiente, 25ºC 68 Capítulo 6. Planta propulsora con pilas de combustible •Humedad relativa, 50% •Presión del H2, 0.7 bar Del mismo ensayo también se han obtenido valores de la potencia con la intensidad, se puede observar como no se llega hasta la potencia nominal (300W) por razones de seguridad, obteniéndose 285W como máximo (fig. 6.4). Figura 6.4 Curva Potencia intensidad. Mediante el software de adquisición de datos de Spectronik, se ha podido observar la evolución en tiempo real permitiendo un análisis de lo que ocurría en cada momento con mayor detalle. En la figura 6.5 se representa la intensidad de la corriente en amperios que genera la pila, en la figura 6.6 se representa la potencia en vatios y en la figura 6.7 la temperatura interna de la pila. Estas gráficas obtenidas han sido una simple demostración del sistema de funcionamiento y adquisición de datos de la pila, con las que se ha logrado obtener la curva de polarización de la pila. 6.2 Pruebas iniciales 69 Figura 6.5 Evolución de la intensidad. Figura 6.6 Evolución de la potencia. 70 Capítulo 6. Planta propulsora con pilas de combustible Figura 6.7 Evolución de la temperatura. Los picos presentes en las gráficas tanto la intensidad como la potencia, son debidos a los instantes que se ha realizado un purgado, como se puede observar es algo aleatorio a priori y que no siempre se registra, ya que debe coincidir el instante de muestreo con el de purgado. Esto no significa que los valores mostrados no sean los reales, todo lo contrario, contemplan el funcionamiento normal de la pila en cada uno de los instantes de operación. Además, a modo de demostrar que no se trataba de un error en la lectura de los sensores, se empleó la fuente a una tensión inferior a la que estaba operando la pila, de modo que en caso de que la pila bajara de esa tensión la carga consumiese de la fuente, demostrando que la pila no generaba tensión durante ese instante del purgado. 6.2.2 Determinación de límites operaciones En el análisis de la curva de polarización se obtuvo con las limitaciones de seguridad establecidas una potencia máxima de 285W, con objeto de poder reproducir estas potencias en nuevos ensayos con la realización de scripts, es necesario conocer que valor de PWM permite lograr dicha potencia. Para determinarlo se procede mediante un ajuste manual del PWM con incrementos equiespaciados en el tiempo, de forma que alcance el régimen permanente la pila, hasta llegar a la citada potencia, donde se almacenará el PWM solicitado. En la figura 6.8-(a) se representa la evolución de la corriente y en la figura 6.8-(b) la evolución de la potencia cuando variamos el PWM, esta evolución está influenciada con factores como la temperatura ambiente, presión de entrada del hidrógeno y tiempo de funcionamiento de la pila. Mientras que en la figura 6.9 se muestra la evolución de la temperatura en la pila, obteniéndose valores máximos entorno a los 38 ºC y mínimos en el reposo a 28 ºC. 6.2 Pruebas iniciales 71 (a) Evolución corriente eléctrica-PWM. (b) Evolución potencia eléctrica-PWM. Figura 6.8 Caracterización de parámetros con PWM. Figura 6.9 Evolución temperatura. A partir de los valores arrojados se llega a la conclusión de que el rango de operación de la pila estará situado entre 1150 y 1450, para lo que en posteriores análisis se deberá obtener el punto de funcionamiento óptimo en PWM. Otro aspecto a considerar es cómo de rápido se puede adaptar a un cambio en la carga y la cuantificación de esta, para ello se han realizado unas pruebas con el script UDP_python, (4.4.1), donde se ha diseñado un perfil consistente en 4 escalones en los que se solicita desde mínima potencia hasta máxima potencia, midiendo la capacidad de adaptación de la pila de hidrógeno a condiciones variables de demanda.[18] Siendo las características del ensayo, •Partiendo desde un consumo de 0W de la hélice (PWM=1100) •Incremento de potencia hasta máximo operativo 250W (PWM=1440) 78 Capítulo 6. Planta propulsora con pilas de combustible Figura 6.17 Perfil PWM desarrollado. • VTOL, segmento de demanda de máxima potencia, ideal para despegues o maniobras muy exigentes. •Crucero, segmento pensado para optimizar el rendimiento de la pila, lográndose largas autonomías. • Ralentí, segmento de mínima potencia, ideal para descensos en el cual se podría realizar frenadas regenerativas con objetivo de aumentos de autonomía, esto queda pendiente de su implementación en túnel de viento. (a) Corriente eléctrica. (b) Overall Efficiency. Figura 6.18 Corriente y eficiencia de la misión. 6.4 Caracterización de sistema propulsor en misiones 79 (a) Empuje. (b) Potencia eléctrica. Figura 6.19 Empuje y potencia de la misión. Figura 6.20 Perfil de RPM demandado. 6.4.2 Caracterización de una misión real Una vez se conoce el comportamiento de la pila para las diferentes situaciones a las que puede estar sometida, se plantea definir un perfil de consumo de potencia que simule una misión completa. Esta misión la podemos dividir en 4 etapas, 1. Calentamiento para un tiempo t1 a un empuje(T)<Peso (W). 2. Subida con un T>W (T∼1.25·W) durante un timepo t2. 3. Vuelo a un punto fijo T=W un tiempo t3. 80 Capítulo 6. Planta propulsora con pilas de combustible 4. Transición de vuelo a punto fijo a vuelo en avance para un tiempo t4. Mientras los 3 primeros segmentos se pueden obtener de forma sencilla porque se asume empuje deseado constante, en el segmento 4 se ha tenido que resolver varias ligaduras en paralelo: • El empuje seleccionado se determina satisfaciendo las expresiones de generación de fuerzas en eje x (T·sin(φ)−D=0) y eje z (L−W+T·cos(φ)) , mientras el rotor va girando de manera progresiva desde los 90 grados (en vuelo a punto fijo hasta los 0 grados en vuelo en crucero). • Se ha integrado el modelo aerodinámico no lineal obtenido en túnel de viento de tal manera que calcula la sustentación y la resistencia que genera el avión durante toda la transición y eso sirve para saber cuanto empuje se necesita para garantizar que la aeronave no pierde altitud mientras transiciona. • En la simulación general lo hace a partir del segundo 30, y se ve que el empuje va disminuyendo a medida que aumenta la velocidad en avance porque las alas hacen parte del trabajo de generar las fuerzas en eje z. A continuación se muestra el perfil de misión completa (fig. 6.21) del avión a escala 1:1 del EMERGENTIAPROVANT, como obviamente no es posible generar potencias de 2500W con la pila combustible, se procede a escalarlo con un factor 1:12, así como las duraciones de cada etapa con 3:1, permitiendo la transmisión de datos y la estabilización de la pila. Figura 6.21 Misión completa del EMERGENTIA-PROVANT. En la figura 6.21 se ve que el calentamiento (etapa 1) son 5 segundos, que el ascenso (etapa 2) son 10 segundos, que el vuelo a punto fijo (etapa 3) son 5 segundos, y la transición son 15 segundos (variando de manera constante desde 90 a 0 grados). Para adaptar el perfil de potencia a la pila además del escalado 1:12 de potencia y 3:1 de tiempo, se introducen escalones intermedios (fig. 6.22-(a)) que reducen el salto de potencia (fig. 6.22-(b)) alargando la vida útil de la pila. En el modelado de la parte curva (transición de vuelo) se han empleado datos experimentales en la elaboración de una función cuadrática que mediante la entrada de potencias necesarias, es capaz de proporcionar el PWM necesario. Note que las muestras corresponden a 1s, ya que son la media de las últimas 20 lecturas tomadas por los sensores. 6.4 Caracterización de sistema propulsor en misiones 81 En la figura 6.23-(b) se puede observar como el perfil de corriente se ajusta a el de PWM en la figura 6.22-(a) y como consecuencia el de potencia también lo hace (fig. 6.22-(b)). Comparando los resultados obtenidos de empuje (fig. 6.24-(a)) y potencia (fig. 6.22-(b)) con los requerimientos de la misión (fig. 6.21) se demuestra la correcta escalabilidad de la misión simulada en el laboratorio. La prueba de una misión de estas características con un sistema propulsado únicamente con pilas de combustible muestra la viabilidad de esta tecnología en aplicaciones para UAVs. (a) Perfil de PWM escalado del EMERGENTIA-PROVANT. (b) Perfil de potencia escalado del EMERGENTIA-PROVANT. Figura 6.22 PWM y Potencia a escala 1:12. (a) Perfil de RPM escalado del EMERGENTIA-PROVANT. (b) Perfil de corriente escalado del EMERGENTIA-PROVANT. Figura 6.23 RPM y Corriente a escala 1:12. 82 Capítulo 6. Planta propulsora con pilas de combustible (a) Perfil de empuje escalado del EMERGENTIA-PROVANT. (b) Perfil de eficiencia escalado del EMERGENTIA-PROVANT. Figura 6.24 Empuje y Eficiencia a escala 1:12. 6.5 Medidas de seguridad adoptadas Es importante recordar que todos los experimentos pueden fallar, nunca ocurrirán los ensayos ideales modelados en los problemas académicos, existen perturbaciones electromagnéticas, cambio de condiciones ambientales, fluctuaciones y ruido en los sensores, por lo que es necesario tomar medidas de precaución y fijar sistemas de seguridad que eviten en caso de no evolucionar el ensayo como se desea, poder pararlo y evitar daños en los equipos empleados. Figura 6.25 Detector de fugas de H2. En el setup de RCBenchmark se han fijado valores de tensión, corriente y potencia de forma que no sean una limitación en las prestaciones que puede ofrecer la pila y sirvan de protección antes de llegar a sus límites operacionales. La columna System corresponde a los límites de operación del ESC. 6.6 Conclusiones 83 Figura 6.26 Safety Cutoffs. Adicionalmente, se ha empleado la fuente en paralelo a la pila fijada a una tensión de 25V, para cubrir excesos de demanda de potencia evitando dañar la pila. 6.6 Conclusiones Tras realizar diferentes ensayos en días diferentes, se observó que el PWM no presentaba una linealidad tan clara como se esperaba, ya que factores como la presión de entrada, temperatura ambiental, humedad relativa y temperatura de la pila, entre otros, afectaban a esta relación. Si es cierto que las variaciones no son elevadas, pero debe ser un factor a tener en cuenta en el modelado de herramientas experimentales, ya que no se están reproduciendo experimentos exactamente iguales con la que realizar una comparación adecuada. Una de las posibles soluciones es emplear como variable de control las RPM, esto se puede lograr configurando dicho modo en el ESC de la bancada mediante el JETIBOX. 7 Planta propulsora con baterías En este capítulo se realiza la caracterización de la planta propulsora con un planta de potencia formada por baterías, para ello se realizará un barrido desde un estado de mínima potencia hasta la máxima para luego acabar en el estado de mínima potencia. Este ensayo permite realizar una comparación en términos energéticos y de eficiencia de las plantas de potencia propulsadas por pilas y baterías. 7.1 Setup El uso de baterías como planta de potencia en UAV aporta ventajas considerables en la potencia máxima que puede ser suministrada al sistema propulsor, permitiendo realizar maniobras más exigentes que con otras fuentes de alimentación no sería posible (pilas de combustible). Aunque a priori el uso de baterías parece un gran acierto, este tiene grandes limitaciones en la densidad energética y su degradación tras varios ciclos de cargas. Por lo que en las plantas de potencias basadas en únicamente baterías es frecuente que su alcance esté muy limitado debido a los amperios hora (Ah) máximos del sistema. Es por esto que en las siguientes secciones se plantearan sistemas híbridos que sean capaces de aumentar la densidad energética del sistema propulsor sin perder en potencia máxima (sistema híbrido de pilas de combustibles y baterías). En la figura 7.1 se muestra una breve descripción gráfica de funcionamiento del setup que se ha ensayado en esta sección. Este está formado por unas baterías como fuente de alimentación que alimentan al electronic speed controller (ESC) encargado de solicitar la carga necesaria a las baterías. Por otra parte el software RC- Benchmark controla y lee los datos del ESC, para posteriormente almacenarlos en un fichero en el ordenador. Figura 7.1 Esquema Setup planta propulsora con baterías. 85 86 Capítulo 7. Planta propulsora con baterías 7.2 Caracterización de sistema propulsor Así como en la caracterización del sistema propulsor con pilas de H2 se planteó un perfil de potencia con escalones desde su mínima potencia hasta la máxima, se ha hecho lo mismo para el sistema de baterías. Para el ensayo se ha hecho uso de una batería LiFe 6S 23.1V 2300mAh (fig. 5.3) completamente cargada, la bancada de RCBenchmark y un ordenador portátil para la simulación del perfil de potencia. El ensayo se ha realizado desde 1100 µs hasta 1600 µs , divididos en 6 escalones de amplitud y duración constante. A diferencia de los ensayos realizados con la pila de hidrógeno que tras alcanzar la máxima potencia no permitía hacer el descenso con los mismos escalones (este fallo queda pendiente de analizar en posteriores ensayos), en las baterías esto si es posible como se puede ver en los datos adquiridos (fig. 7.2, fig. 7.3 y fig. 7.4). Figura 7.2 Perfil PWM demandado. 7.2.1 Mapas estáticos Las baterías empleadas han sido testeadas para una potencia máxima de 300W, aunque el ensayo es perfectamente escalable hasta potencias de 1kW por temas de degradación y descarga de la batería no se ha realizado, ya que como primera caracterización era suficiente con potencias moderadas. Estos resultados aunque están altamente condicionados por el nivel de carga y salud de las celdas de la batería, permiten establecer una relación entre la PEM y las baterías, observándose que para un mismo PWM la pila es capaz de proporcionar un mayor empuje pero con consumos de potencia superiores a la batería. En las figuras 7.3-(a) y 7.3-(b) se observa como existen dos líneas debido a el barrido realizado aumentando el PWM hasta su valor máximo para luego disminuirlo hasta el mínimo. 7.2 Caracterización de sistema propulsor 87 (a) Empuje. (b) Par. Figura 7.3 Empuje y Par. (a) Corriente eléctrica. (b) Potencia eléctrica. Figura 7.4 Corriente y Potencia eléctrica. Para la pila es justificable con la curva de polarización que determina la evolución de la tensión y corriente para cada potencia demandada. Como se puede ver para un mismo PWM con la pila somos capaces de proporcionar una potencia de salida mayor, permitiendo pulsos de menor ancho para lograr los requisitos energéticos demandados. Tabla 7.1 Comparación de Potencias de Plantas de Potencia. PowerPlant PWM Current Electrical Power PEM 1400 µs8.1 A 220 W BAT 1400 µs5.5 A 100 W 7.2.2 Fuerzas Aerodinámicas y Momentos Nuevamente haciendo un análisis de las fuerzas aerodinámicas y momentos generadas por nuestra fuente de energía, en este caso las baterías, en comparación con la pila de H2 se logran para las mismas revoluciones del motor mayores empujes, esto puede ser debido a errores en la medición, ya que que los sensores de RPM 94 Capítulo 8. Planta propulsora con hibridación Figura 8.5 Fuente a una tensión igual al bus. 4. Se aumenta la tensión de la fuente hasta superar los 22.6V de la batería. Ahora el sistema está consumiendo exclusivamente de la fuente. Además, se puede observar en la figura 8.6 como sale más corriente (2.8A) de la que está consumiendo la hélice (1.9A) (se observa en las lecturas de RCBenchmark figura 8.7, esto es debido a que como las baterías están a una tensión inferior no tendrá flujo de corriente saliente, con lo que el exceso de la fuente es empleado para cargarlas. Siendo la corriente de carga de aproximadamente 1A. Figura 8.6 Fuente a una tensión superior a las baterías. Figura 8.7 Lecturas de tensión y corriente de RCBenchmark. 8.3 Caracterización con convertidor DC-DC 95 Al fijar la fuente a una tensión igual a las baterías el sistema comienza a consumir corriente de la fuente sin modificar el régimen de funcionamiento de la hélice. Esto es de vital importancia ya que facilita la conexión y desconexión de fuentes de alimentación sin que la planta propulsora se vea afectada. Observe que las lecturas de RCBenchmark son las totales del sistema de alimentación, compartiendo por igual la corriente entre fuente y baterías cuando se encuentran a la misma tensión de operación. Durante el ensayo de recarga de baterías se ha controlado la corriente que no exceda valores que puedan poner en peligro el experimento, siendo las corrientes de 1A las usuales para la carga de este tipo de baterías. A pesar de ello, esto no es una práctica recomendable ya que las baterías empleadas están formadas por varías celdas en serie, estando cada una a un nivel de carga diferente, parámetro que no es controlable sin un BMS o un sistema equivalente que mida la tensión de cada celda. En futuras líneas se estudiará la implementación de este sistema para lograr cargas controladas. 8.3 Caracterización con convertidor DC-DC Una pila de hidrógeno si nos fijamos en su curva de polarización disminuye la tensión al solicitar mayores potencias, siendo para pila Protium-300 en su potencia nominal (300W) la tensión de 24V. Por lo que para lograr potencias superiores a 300W con un sistema híbrido se hará uso de un convertidor de 24V conectado a las baterías, de forma que cuando el bus se iguale en tensión este empezará a consumir de las baterías. Esto ocurrirá con la pila a su potencia máxima aprovechando toda su potencia. Figura 8.8 Esquema Sistema Híbrido BAT-Convertidor-Fuente.. El ensayo realizado ha sido similar al anterior, pero ahora el bus generado por la batería no variará debido a su descarga, se puede observar en la figura 8.8 como la salida de las baterías va conectada directamente a el convertidor DC-DC, logrando fijar un bus a 24V, que la fuente con su control manual de tensión podrá igualarlo o superarlo, según el flujo de corriente deseado. El ensayo comienza en, 1. Se alimenta el ESC con un batería conectada al convertidor DC-DC a 50W y 23.7V (debido a pérdidas de tensión), y la fuente (fig. 8.9) a una tensión inferior a la de las baterías. 96 Capítulo 8. Planta propulsora con hibridación Figura 8.9 Fuente a una tensión inferior al bus (24V). 2. Se mantiene durante 10 s, donde se aprecia en la figura 8.10 que las lecturas en RCBenchmark permanecen constantes. Figura 8.10 Lecturas de tensión y corriente de RCBenchmark. 3. Se incrementa la tensión de la fuente hasta la del bus del convertidor (24V) (ilustrado en la figura 8.11), observándose que ahora no es posible compartir potencia entre baterías y fuente, ya que la fuente alimentará a todo el sistema con una corriente saliente de 2.3A (figura 8.11) y la app de RC- Benchmark leerá esta en su totalidad (figura 8.12), demostrándose que la batería no aporta corriente al sistema. Otro detalle que demuestra el aumento de la tensión del bus es la lectura de tensión del ESC (figura 8.12) que se eleva hasta los 25.7V, mientras las baterías sólo aportaban hasta los 23.7V (figura 8.10). 8.4 Implementación con Pila de hidrógeno 97 Figura 8.11 Fuente a una tensión igual al bus (24V). Figura 8.12 Lecturas de tensión y corriente de RCBenchmark. Al emplear el convertidor DC-DC no es posible realizar la carga de baterías debido a las resistencias internas que impiden el paso de corriente en el sentido contrario. 8.4 Implementación con Pila de hidrógeno Para lograr la integración del sistema Pila-Batería es necesario emplear el convertidor DC-DC junto a la batería, esto como se ha explicado anteriormente permitirá emplear la pila para que cubra la demanda principal y los picos que excedan los 300W se encargará la batería de satisfacerlos. En la figura 8.13 se realiza una comparativa en función de la masa del sistema de energía analizando cuando es óptimo el uso de baterías o pilas de combustible, con el objeto de aumentar la autonomía (expresada en minutos).[ 4 ] Se observa que el uso de baterías en sistemas ligeros (< 7 kg) es la mejor opción, mientras para sistemas con masas superiores a 7kg las pilas aporta una mejora significativa en la autonomía, gracias a su elevada densidad energética. 98 Capítulo 8. Planta propulsora con hibridación Figura 8.13 Comparativa entre uso de Baterías y Sistema Híbrido [4]. Tras el modelado teórico y práctico de la pila-batería con el sistema híbrido fuente-baterías, donde se ha entendido y probado el comportamiento de un sistema híbrido con un bus variable y fijo. Se plantea una planta de potencia formada por (fig. 8.14), •Pila de hidrógeno, que será la fuente de alimentación principal. •Baterías, que serán la fuente de alimentación auxiliar. • Convertidor DC-DC, permite fijar la tensión de salida de las baterías a 24V, de forma que cuando la pila llegue a su máxima potencia (300W, 24V), las baterías sean capaces de abastecer la potencia extra solicitada por la carga. Figura 8.14 Esquema de Hibridación PEM-BAT. Una vez entendido el modo de operación, se dispone a realizar ensayos con un control manual de la potencia demandada, de forma que podamos reafirmar que el comportamiento esperado del sistema se cumple. Para ello, haciendo un control en PWM con RCBenchmark, hasta 1550 µs , se obtienen potencias máximas de 360W (fig. 8.18-(a)), donde la pila aporta su potencia máxima de 300W (luego se verá que realmente no llega a los 300W, con una media en 270W, vea fig. 8.15-(b)), y las baterías el resto. Analizando la figura 8.17-(b) se aprecia que el ESC consume en el tramo de mayor demanda de potencia 17A, siendo de ellos 12A aportados por la pila (fig. 8.15-(a)) y 5A por la batería. En cuanto a la tensión se observa en la figura 8.4 Implementación con Pila de hidrógeno 99 8.16-(b) como efectivamente se alcanzan los 24V en la pila logrando generar hasta su potencia nominal. (a) Evolución de la Corriente en Protium-30. (b) Evolución de la Potencia en Protium-300. Figura 8.15 Corriente y Potencia en Protium-300. (a) Evolución de la Temperatura en Protium-30. (b) Evolución de la Tensión en Protium-300. Figura 8.16 Temperatura y Tensión en Protium-300. 100 Capítulo 8. Planta propulsora con hibridación (a) Perfil PWM desarrollado. (b) Lectura de corriente en RCBenchmark. Figura 8.17 PWM y Corriente del sistema híbrido. (a) Lectura de Potencia en RCBenchmark. (b) Lectura de RPM en RCBenchmark. Figura 8.18 Potencia y RPM del sistema híbrido. 8.5 Mejoras del Sistema Pila-Baterías 101 (a) Lectura de Empuje en RCBenchmark. (b) Eficiencia del sistema híbrido. Figura 8.19 Empuje y eficiencia del sistema híbrido. Se ha observado que en los momentos de purgado en los que funcionaba únicamente la pila se perdía potencia propulsiva durante un instante, esto aunque no es un problema preocupante, no es lo deseado ya que se debe de poder garantizar un suministro de potencia ininterrumpido en todo momento, incluso disponer de sistemas auxiliares de backup que aseguren el funcionamiento en caso de un fallo del sistema de alimentación principal. También durante el funcionamiento normal del sistema híbrido pila-batería se experimentaron cortes de la conexión con el pc (interferencias en la comunicación), cabe destacar que esto también ocurrió con las pruebas del sistema híbrido fuente-batería, se piensa que una posible causa puede ser la cercanía de las conexiones de cables realizadas. 8.5 Mejoras del Sistema Pila-Baterías Un diseño futuro de la planta de potencia debe ser capaz de proporcionar la potencia demandada de forma ininterrumpida y un control preciso sobre la elección de la fuente deseada para alimentar el sistema propulsor. Por ello será necesario desarrollar un microcontrolador (MCU) que se encargue de gestionar toda esta toma de decisiones. Con el objetivo de solucionar las caídas de potencia debidas al purgado y suavizar las demandas, sería una buena elección el uso de supercondensadores, ya que estos son capaces de suministrar una gran cantidad de corriente, además de ser capaces de realizar rápidas cargas y descargas. Los supercondensadores son capaces de entregar potencia desde 0V hasta la máxima tensión nominal, comparado con las baterías que necesitan operar entre un rango máximo y mínimo de voltaje. Sus ciclos de vida exceden los 10 millones, haciéndolos ideales para el propósito propuesto. En la figura 8.20 se muestra un planteamiento inicial de las futuras conexiones para la mejora de la planta de potencia, para ello se parte del sistema planteado en la sección anterior (fig. 8.14) añadiéndole un sistema de gestión de carga de las baterías (BMS) y supercondensadores. 102 Capítulo 8. Planta propulsora con hibridación Figura 8.20 Esquema futuro de Hibridación PEM-BAT. Para lograr aumentar la autonomía de vuelo, será primordial realizar una recarga de las baterías de forma controlada cuando exista un exceso de potencia de la pila, para ello se empleará un sistema de monitorización del estado de las celdas y un MCU. En cuanto a la monitorización de las celdas, se empleará un BMS que se encargará de recopilar el estado de carga de las baterías y realizará el balanceo. Tras analizar varios fabricantes se ha considerado que una de las opciones más viables es el BQ76PL455A, 16-cell battery monitor with passive cell balancing (en la fig. 8.23 se muestran las lecturas de voltaje del BMS). Este será conectado al microcontrolador, donde estará implementado un programa para el control basado en el algoritmo desarrollado en la sección 5 para la carga de las baterías. Lo que se propone es que en el sistema de monitorización y alimentación de baterías (desarrollado en la sección 5) se elimine la placa de arduino para emplear el BMS BQ76PL455A, este deberá de seguir la estructura de conexiones de la figura 8.21, para la que se requiere de un alimentador de 5V y la conexión con las celdas de las baterías de nuestro sistema. Este BMS estará conectado a un MCU con el algoritmo de control (consulte los anexos) desarrollado para Arduino. [2, 1]. Figura 8.21 Diagrama de Bloques del BMS[2]. Este MCU (fig. 8.22) puede ser desarrollado en una Raspberry Pi 3B que junto a un script en Python sea capaz de decir que fuentes de alimentación emplear y en que instantes en función de la misión a realizar. 8.5 Mejoras del Sistema Pila-Baterías 103 Figura 8.22 Esquema MCU. Figura 8.23 Lecturas de Voltaje realizadas por un BMS [2]. 110 Capítulo A. Códigos desarrollados #define VSENSE A0 // Mide corriente alimentación #define ISENSE A1 // Regula la salida #define PWM 5 //----------------------------------------------------------- //Variables y Constantes de ADC #define MUESTRAS 100 int RawValue= 0; int ADCvRef = 0; //----------------------------------------------------------- //Variables y Constantes de Medicion de Corriente // limite de corriente (A) con la que se quiere cargar #define I_MAX 0.1 double tensionAmp = 0; double amperes = 0; int i = 0; float corriente = 0; float r_shunt = 1.0; // resistencia shunt (ohmios) para medir corriente por Ohm bool cargado = false; //----------------------------------------------------------- //Variables y Constantes de PWM int valorPWM = 0; //----------------------------------------------------------- //Variables y Constantes de Medicion de Tension #define V_MAX 5 // límite de tensión de la bateria (cargado) #define V_MIN 2 // límite inferior para cargar batería (descargado) double volts = 0; double tensionBAT = 0; float tension = 0; float divisor = 0.312; // estimado para V_max 16V float v_diodo = 0.5; float v_shunt = 0; //----------------------------------------------------------- // Inicialización void setup(){ Serial.begin(9600); ADCvRef = vRefADC(); // Mide la tensión de alimentación (referencia de medidas Analógicas y digital) Serial.print("Tension de Alimentacion: "); Serial.print(ADCvRef); Serial.println(" mV"); delay(2000); pinMode(PWM, OUTPUT); // Defino como salida PWM A.1 BMS en Arduino 111 valorPWM=50; // Defino valor inicial del PWM analogWrite(PWM, valorPWM); // Asigno valor al terminal delay(500); } //----------------------------------------------------------- void loop(){ // Comprobamos si hace falta cargar delay(1000); if (tension<=V_MIN){ cargado = false; valorPWM=50; // Defino valor inicial del PWM para la carga analogWrite(PWM, valorPWM); // Asigno valor al terminal delay(2000); while (cargado == false ){ mideCorrienteCarga(); // mido corriente Serial.print("I_BAT: "); Serial.println(corriente,3); mideTensionBat(); // mido tensión bateria Serial.print("V_BAT: "); Serial.println(tension,3); ajustaPWMcargador(); // Ajusto parámetro para cargar bateria Serial.println(" "); Serial.println(" "); } } else{ // muestro valores en tiempo real mientras no hace falta cargar mideCorrienteCarga(); // mido corriente Serial.print("I_BAT: "); Serial.println(corriente,3); mideTensionBat(); // mido tensión bateria Serial.print("V_BAT: "); Serial.println(tension,3); Serial.println(" "); Serial.println(" "); valorPWM=0; // Aseguro que no carga analogWrite(PWM, valorPWM); // Asigno valor al terminal delay(2000); } } //----------------------------------------------------------- //Cálculo de tensión de alimentación (para referenciar) int vRefADC(){ long result; ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(2); 112 Capítulo A. Códigos desarrollados ADCSRA |= _BV(ADSC); while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = 1125300L / result; return result; } //----------------------------------------------------------- // Mide corriente carga (con resistencia de shunt) float mideCorrienteCarga(){ amperes = 0; for(i=0;i<MUESTRAS;i++){ RawValue = analogRead(ISENSE); // mido analog tensión en A1 tensionAmp = (RawValue / 1023.0) * ADCvRef; // convierto a valor real tensión amperes = amperes + tensionAmp; // sumatorio de muestras } // convierto a mV y obtengo con el promedio de muestras la corriente corriente = ((amperes / MUESTRAS) / 1000.0) / r_shunt; // Obtengo la corriente (mA) con ley de Ohm return corriente; } //----------------------------------------------------------- // Medición de tension (emplea divisor de tensión) float mideTensionBat(){ volts = 0; for(i=0;i<MUESTRAS;i++){ RawValue = analogRead(VSENSE); // valor analógico de A0 de tensión tensionBAT = (RawValue / 1023.0) * ADCvRef; // Hago conversión volts = volts + tensionBAT; // sumo en cada muestreo } // Paso a mV, calculo la media en las muestras tension = (((volts / MUESTRAS) / 1000.0) / divisor) - v_diodo - v_shunt; return tension; } //----------------------------------------------------------- //Controlador de PWM en funcion del rango de operación /* Cargamos aumentando la tensión de la batería (cuando alcanza Vmax está cargada, por lo que vamos disminuyendo el PWM para bajar la corriente de alimentación y no cargar más la bateria. Al llegar a la corriente máxima se mantendrá constante */ void ajustaPWMcargador(){ if(corriente < I_MAX){ A.2 Conexión UDP 113 if(tension < V_MAX){ if(valorPWM<255){ valorPWM++; } delay(1); analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } else{ // compruebo si está cargada la bateria if(valorPWM>0 && tension >= 0.99*V_MAX){ valorPWM = 0; // apago alimentador delay(1); Serial.println("Bateria cargada"); cargado = true; delay(1); analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } } } else{ Serial.println("Regimen permanente corriente"); // compruebo si está cargada la bateria if(valorPWM>0 && tension >= 0.99*V_MAX){ valorPWM = 0; // apago alimentador delay(1); Serial.println("Bateria cargada"); cargado = true; analogWrite(PWM, valorPWM); Serial.print("PWM: "); Serial.println(valorPWM); } } } A.2 Conexión UDP Estos dos códigos se ejecutaran conjuntamente cada uno en su compilador para establecer la conexión UDP, recordar configurar los parámetros IP y puertos. Código A.2 Script en JavaScript para conexión UDP. /* //////////////// UDP FINAL //////////////// This is an example script showing how you can communicate with the RCbenchmark APP from any UDP compatible source. To test, simply install Packet Sender from: https://packetsender.com/ 114 Capítulo A. Códigos desarrollados Then configure the send_ip to your destination. If you use Packet Sender in the same computer, write your local IP address which will be displayed in the title bar of Packet Sender. With Packet Sender, the send_port will be shown in the bottom right as UDP:port# The receive port is the port that packets should be send to in order to receive back a reply. In Packet Sender, write this same Port in the send section at the top. ///////////// User defined variables //////////// */ var receive_port = 55047; // predeterminado (no hace falta modificarlo) var send_ip = "10.100.26.105"; // Fijada por PACKET SENDER (Parte superior izquierda) var send_port = 49153;// Fijado por PACKET SENDER (puerto UDP en parte inferior derecha) var samplesAvg = 2; // how many data samples to average before sending to TCP ( helps to slow down communication rate) ///////////////// Beginning of the script ////////////////// // Setup continuous sensor read and motor control function readSensor(){ rcb.console.setVerbose(false); rcb.sensors.read(readDone, samplesAvg); rcb.console.setVerbose(true); } function readDone(result){ // Send all the sensor data as a long JSON string var resultStr = JSON.stringify(result); var buffer = rcb.udp.str2ab(resultStr); rcb.udp.send(buffer); // Continue the loop readSensor(); } /* Note the UDP functions expect arrayBuffer data type: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays */ rcb.udp.init(receive_port, send_ip, send_port, UDPInitialized); rcb.udp.onReceive(UDPReceived); // Register callback event function UDPInitialized(){ var buffer = rcb.udp.str2ab("Hi from RCbenchmark script!"); rcb.udp.send(buffer); readSensor(); // Start the sensor read loop until script is stopped. } function UDPReceived(arrayBuffer){ var message = rcb.udp.ab2str(arrayBuffer); var throttle = Number(message); if(isNaN(throttle)){ rcb.console.print("Received: " + message); A.2 Conexión UDP 115 }else{ rcb.console.print("Setting ESC to: " + throttle); rcb.output.set("esc",throttle); } } Código A.3 Script en Python para conexión UDP. import socket import time import json import threading import pandas as pd import time """ Setup: Configurar UDP_PORT_READ con el UDP que tiene PACKET SENDER Configurar UDP_IP con la IP que tiene PACKET SENDER UDP_PORT_WRITE se puede dejar predeterminada 55047 (la misma en RCBENCHMARK) """ global data_received, kill, data_js, dct # setup UDP_IP = "10.100.49.18" UDP_PORT_WRITE = 55047 # fijado por RCBENCHMARK a donde envia python (NO CAMBIAR) UDP_PORT_READ = 63671 # fijado por python (PACKET SENDER) donde recibe python nombre_archivo = ’ensayo1’ # ponemos nombre pwm_start =[1000, 1400, 1250, 1100, 1400, 1250, 1100] # [1000, 1650, 1500, 1100, 1650, 1500, 1100] t_hold =[3, 5, 7, 5, 5, 7, 5] # [3, 30, 180, 30, 30, 180, 30] nsample = 20 sock_write = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock_read = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock_read.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock_read.bind((UDP_IP, UDP_PORT_READ)) data_received = {} kill = False def send_pwm(pwm): str_to_send = "%d"%pwm 116 Capítulo A. Códigos desarrollados sock_write.sendto(str_to_send.encode(), (UDP_IP, UDP_PORT_WRITE)) def read_data(): data, addr = sock_read.recvfrom(10240) # buffer size is 1024 bytes #print(data) data_js = json.loads(data.decode(’latin-1’)) return(data_js) def read_udp_main(): global data_received while True: data_received = read_data() if kill: return x = threading.Thread(target=read_udp_main) # mantenemos el codigo corriendo simultáneamente x.start() i=0 dct = {’time’: [],’voltage’:[],’torque’:[],’thrust’: [],’servo3’:[],’servo2 ’:[],’servo1’:[],’propMechEfficiency’:[],’propElecEfficiency’:[],’ motorOpticalSpeed’:[],’motorElectricalSpeed’:[],’motorEfficiency’:[],’ mechanicalPower’:[],’esc’:[],’electricalPower’:[],’current’:[],’appMsg ’:[],’accz’:[],’accy’:[],’accx’:[],’accvib’:[]} print("STARTING TEST") def sample(nsample,start,thold): global data_received, dct # sacamos muestras durante el transcurso del PWM while ((time.time()-start)<=thold): # numero de muestras deseadas for j in range(0,nsample): for k in data_received: # guardo primer tiempo de la primera muestra if (k == ’time’): if (j == 0): dct[k].append(float(data_received[k]["displayValue"])) else: # siguientes muestras (ya no almaceno el tiempo más, sólo en la primera muestra) A.2 Conexión UDP 117 if (j==0): # compruebo si tiene valor, en caso de que no lo tenga lo guardo tal cual, y si tiene hago media if (data_received[k]["displayValue"] !=’’): dct[k].append(float(data_received[k]["displayValue"])/ nsample) else: dct[k].append(data_received[k]["displayValue"]) # Tras la primera iteración empiezo a sumar y hacer la media, omitiendo el tiempo # Sigo comprobando que no esté vacio elif (data_received[k]["displayValue"] !=’’): dct[k][-1] = dct[k][-1] + float(data_received[k][" displayValue"])/nsample # si esta vacío lo guardo tal cual elif (k != ’time’): dct[k].append(data_received[k]["displayValue"]) time.sleep(1) # tiempo de muestreo sample(nsample,start,thold) # falta actualizar la columna tiempo con el tiempo real (es necesario??) for pwm in pwm_start: print("Sending %d"%pwm) send_pwm(pwm) time.sleep(8) # impuesta por la velocidad de transmisión de datos (lo que tarda en llegar a la hélice) # hace un muestreo para promediar y evitar errores sample(nsample,time.time(),t_hold[i]) """ time.sleep(t_hold[i]) #data_received = read_data() #print (data_received) for k in data_received: dct[k].append(data_received[k]["displayValue"]) """ 118 Capítulo A. Códigos desarrollados #dct[’voltage’].append(data_received["voltage"]["displayValue"]) #dct[’thrust’].append(data_received["thrust"]["displayValue"]) #dct["motorElectricalSpeed"].append(data_received["motorElectricalSpeed"][" displayValue"]) #print(dct) #print(dct["thrust"]) #print(data_received) print(">> RPM: %6.0f Thrust: %4.2fN "%(dct["motorElectricalSpeed"][-1],dct ["thrust"][-1])) i=i+1 zipped = list(zip(dct[’time’],dct[’voltage’],dct[’torque’],dct[’thrust’],dct[’ servo3’],dct[’servo2’],dct[’servo1’],dct[’propMechEfficiency’],dct[’ propElecEfficiency’],dct[’motorOpticalSpeed’],dct[’motorElectricalSpeed’], dct[’motorEfficiency’],dct[’mechanicalPower’],dct[’esc’],dct[’ electricalPower’],dct[’current’],dct[’appMsg’],dct[’accz’],dct[’accy’],dct [’accx’],dct[’accvib’])) df=pd.DataFrame(zipped,columns=[’Time (s)’,’Voltage (V)’,’Torque (Nm)’,’Thrust (N)’,’Servo3 (10^(-6)s)’,’Servo2 (10^(-6)s)’,’Servo1 (10^(-6)s)’,’Propeller Mech. Efficiency (N/W)’,’Overall Efficiency (N/W)’,’Motor Optical Speed ( RPM)’,’Motor Electrical Speed (RPM)’,’Motor Efficiency (%)’,’Mechanical Power (W)’,’ESC signal (10^(-6)s)’,’Electrical Power (W)’,’Current (A)’,’ appMsg’,’Acc z (g)’,’Acc y (g)’,’Acc x (g)’,’Vibration (g)’]) print(df) df.to_csv(nombre_archivo + ’.csv’) print("TEST COMPLETED!") send_pwm(0) kill = True x.join() A.3 Interfaz de simulación de misiones A continuación se incluyen 2 códigos que trabajan conjuntamente para crear la interfaz en python, interfaz.py corresponde al código principal que será el que se ejecutará, mientras flight_model.py debe estar en la misma carpeta para que pueda ser llamado por interfaz.py Código A.4 interfaz.py. from tkinter import * import tkinter as tk A.3 Interfaz de simulación de misiones 119 from tkinter import messagebox, ttk import flight_model as simula import pandas as pd # ------------------------------------------------------------------------- Varibles input ------------------------------------------------------------------------- global IP, port, PWM1,t1,PWM2,t2,PWM3,t3,PWM4,t4,PWM5,t5,PWM6,t6 # ------------------------------------------------------------------------------- Defino Interfaz ----------------------------------------------------------------- ventana = Tk() # Llame al método Tk para inicializar una instancia de formulario raíz ventana.title(’Adquisición de datos’) # método title para establecer el texto del título ventana.geometry(’1000x700’) #El método # geometry establece el tama ño de la ventana, el signo de multiplicación aquí no es *, sino la letra x minúscula en inglés imagen = PhotoImage(file = "dron.png") # Con Label y la opción image, puedes mostrar una imagen en el widget: background = Label(image = imagen, text = "Imagen S.O de fondo", width = 2000, height = 2000) # Con place puedes organizar el widget de la imagen posicionandolo # donde lo necesites (relwidth y relheight son alto y ancho en píxeles): background.place(x = 0, y = 0, relwidth = 1, relheight = 1) # Declaro varibles string para almacenar los inputs IP_var = tk.StringVar() port_var = tk.StringVar() archivo_var = tk.StringVar() PWM1_var = tk.StringVar() t1_var = tk.StringVar() PWM2_var = tk.StringVar() t2_var = tk.StringVar() PWM3_var = tk.StringVar() t3_var = tk.StringVar() PWM4_var = tk.StringVar() t4_var = tk.StringVar() PWM5_var = tk.StringVar() t5_var = tk.StringVar() 126 Capítulo A. Códigos desarrollados def model(UDP_IP,UDP_PORT_READ,PWM1,t1,PWM2,t2,PWM3,t3,PWM4,t4,PWM5,t5,PWM6,t6, nombre_archivo): global data_received, kill, data_js, dct #UDP_IP = "10.100.49.18" UDP_PORT_WRITE = 55047 # fijado por RCBENCHMARK a donde envia python (NO CAMBIAR) #UDP_PORT_READ = 63671 # fijado por python (PACKET SENDER) donde recibe python nsample = 20 print(type(UDP_PORT_READ),UDP_PORT_READ, PWM5) sock_write = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock_read = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock_read.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock_read.bind((UDP_IP, UDP_PORT_READ)) data_received = {} kill = False def send_pwm(pwm): str_to_send = "%d"%pwm sock_write.sendto(str_to_send.encode(), (UDP_IP, UDP_PORT_WRITE)) def read_data(): data, addr = sock_read.recvfrom(10240) # buffer size is 1024 bytes #print(data) data_js = json.loads(data.decode(’latin-1’)) return(data_js) def read_udp_main(): global data_received while True: data_received = read_data() if kill: return x = threading.Thread(target=read_udp_main) # mantenemos el codigo corriendo simultáneamente x.start() pwm_start = [1000, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6] #[1000, 1400, 1250, 1100, 1400, 1250, 1100] # [1000, 1650, 1500, 1100, 1650, 1500, 1100] t_hold = [3, t1, t2, t3, t4, t5, t6] #[3, 5, 7, 5, 5, 7, 5] # [3, 30, 180, 30, 30, 180, 30] #pwm_start = [1000, 1100, 1100, 1100, 1000, 1000, 1000] i=0 A.3 Interfaz de simulación de misiones 127 dct = {’time’: [],’voltage’:[],’torque’:[],’thrust’: [],’servo3’:[],’servo2 ’:[],’servo1’:[],’propMechEfficiency’:[],’propElecEfficiency’:[],’ motorOpticalSpeed’:[],’motorElectricalSpeed’:[],’motorEfficiency’:[],’ mechanicalPower’:[],’esc’:[],’electricalPower’:[],’current’:[],’appMsg ’:[],’accz’:[],’accy’:[],’accx’:[],’accvib’:[]} print("STARTING TEST") def sample(nsample,start,thold): global data_received, dct # sacamos muestras durante el transcurso del PWM while ((time.time()-start)<=thold): # numero de muestras deseadas for j in range(0,nsample): for k in data_received: # guardo primer tiempo de la primera muestra if (k == ’time’): if (j == 0): dct[k].append(float(data_received[k]["displayValue"])) else: # siguientes muestras (ya no almaceno el tiempo más, sólo en la primera muestra) if (j==0): # compruebo si tiene valor, en caso de que no lo tenga lo guardo tal cual, y si tiene hago media if (data_received[k]["displayValue"] !=’’): dct[k].append(float(data_received[k]["displayValue "])/nsample) else: dct[k].append(data_received[k]["displayValue"]) # Tras la primera iteración empiezo a sumar y hacer la media, omitiendo el tiempo # Sigo comprobando que no esté vacio elif (data_received[k]["displayValue"] !=’’): dct[k][-1] = dct[k][-1] + float(data_received[k][" displayValue"])/nsample # si esta vacío lo guardo tal cual elif (k != ’time’): dct[k].append(data_received[k]["displayValue"]) 128 Capítulo A. Códigos desarrollados time.sleep(1) # tiempo de muestreo sample(nsample,start,thold) # falta actualizar la columna tiempo con el tiempo real (es necesario??) for pwm in pwm_start: print("Sending %d"%pwm) send_pwm(pwm) time.sleep(8) # impuesta por la velocidad de transmisión de datos (lo que tarda en llegar a la hélice) # hace un muestreo para promediar y evitar errores sample(nsample,time.time(),t_hold[i]) """ time.sleep(t_hold[i]) #data_received = read_data() #print (data_received) for k in data_received: dct[k].append(data_received[k]["displayValue"]) """ #dct[’voltage’].append(data_received["voltage"]["displayValue"]) #dct[’thrust’].append(data_received["thrust"]["displayValue"]) #dct["motorElectricalSpeed"].append(data_received["motorElectricalSpeed "]["displayValue"]) #print(dct) #print(dct["thrust"]) #print(data_received) print(">> RPM: %6.0f Thrust: %4.2fN "%(dct["motorElectricalSpeed"][-1], dct["thrust"][-1])) i=i+1 zipped = list(zip(dct[’time’],dct[’voltage’],dct[’torque’],dct[’thrust’], dct[’servo3’],dct[’servo2’],dct[’servo1’],dct[’propMechEfficiency’],dct [’propElecEfficiency’],dct[’motorOpticalSpeed’],dct[’ motorElectricalSpeed’],dct[’motorEfficiency’],dct[’mechanicalPower’], A.3 Interfaz de simulación de misiones 129 dct[’esc’],dct[’electricalPower’],dct[’current’],dct[’appMsg’],dct[’ accz’],dct[’accy’],dct[’accx’],dct[’accvib’])) df=pd.DataFrame(zipped,columns=[’Time (s)’,’Voltage (V)’,’Torque (Nm)’,’ Thrust (N)’,’Servo3 (10^(-6)s)’,’Servo2 (10^(-6)s)’,’Servo1 (10^(-6)s) ’,’Propeller Mech. Efficiency (N/W)’,’Overall Efficiency (N/W)’,’Motor Optical Speed (RPM)’,’Motor Electrical Speed (RPM)’,’Motor Efficiency (%)’,’Mechanical Power (W)’,’ESC signal (10^(-6)s)’,’Electrical Power ( W)’,’Current (A)’,’appMsg’,’Acc z (g)’,’Acc y (g)’,’Acc x (g)’,’ Vibration (g)’]) print(df) df.to_csv(nombre_archivo + ’.csv’) print("TEST COMPLETED!") send_pwm(0) kill = True x.join() return Índice de Figuras 2.1 Esquema pila combustible[13] 5 2.2 Pila de combustible simple[13] 6 2.3 Pasos en generación electroquímica de electricidad[13] 7 2.4 Configuración del dispositivo de William R. Grove[19] 8 2.5 Comparación de Pilas de combustibles, baterías y motores de combustión[9, 13, 5] 9 2.6 Pilas de combustible frente a paneles solares frente a baterías[13] 10 2.7 Comparación de densidad energética de combustibles[13] 10 3.1 Pila Protium-300[16] 12 3.2 Pila Protium 300 con estuche 13 3.3 Controlador electrónico[16] 14 3.4 Curva de polarización y potencia[16] 15 3.5 Datos en tiempo real 16 3.6 Errores y avisos mostrados en el Status Display 16 3.7 Gráficas en tiempo real 17 3.8 Parámetros exportados en excel 18 3.9 Pila Protium con regulador 19 3.10 Regulador de presión 19 3.11 Regulador prestado por el INTA 20 3.12 Diodo y fuente empleadas 21 3.13 Convertidor DCDC de 24V 22 3.14 Convertidor DC-DC 22 3.15 Esquema resistencias de salida 23 3.16 Tubing poliuretano 4 OD 23 3.17 Conectores 23 3.18 Conectores 24 3.19 Conectores XT90 24 3.20 Controlador con las conexiones realizadas 25 3.21 Conexión con la pila 25 3.22 Conexión XT60 a la que conectar la carga 26 3.23 Conexión de H2 con la pila 26 3.24 Salida del controlador a la carga con una fuente en paralelo 27 4.1 Setup de medida de datos 30 4.2 PCB Series 1580 31 4.3 PCB con los sensores, motor y la hélice 32 4.4 Calibrado empuje 33 4.5 Calibrado empuje (2) 33 4.6 Peso de 200 g empleado 34 4.7 Soporte para calibrado de par 34 4.8 Calibrado del par 35 131 132 Índice de Figuras 4.9 Calibrado del par (2) 35 4.10 Calibrado del par (3) 36 4.11 Montaje inicial para el calibrado de par y peso 36 4.12 Primer calibrado de par y peso 37 4.13 Último calibrado de par y peso 37 4.14 Ejecución de RCBenchmark GUI 38 4.15 Gráficas en tiempo real RCBenchmark 39 4.16 Esquema conexión TCP [3] 41 4.17 Esquema conexión UDP [3] 42 4.18 Cabecera del protocolo UDP [3] 42 4.19 Diagrama de flujo de los scripts 43 4.20 Programa Packet Sender 44 4.21 Parámetros para servidor UDP 44 4.22 Parámetros para cliente UDP 45 4.23 Esquema conexión simulador 45 4.24 Interfaz desarrollada en Python 46 4.25 Estructura empaquetada 47 4.26 Estructura montada para la bancada 48 4.27 Motor AXI 4130/16 en la estructura 48 5.1 Señal cuadrada con el ciclo de trabajo D 50 5.2 Hardware planteado para el Arduino 50 5.3 Batería LiFe 6S 2300mAh 51 5.4 Cargador de baterías de celdas 52 5.5 Método de carga de voltaje constante 52 5.6 Método de carga de corriente constante 53 5.7 Método de carga mixto 53 5.8 Diagrama de flujo del sistema de carga 54 5.9 Arduino empleado 54 5.10 Conjunto de resistencias empleado 55 5.11 Transistor NPN (BJT) 55 5.12 Transistor PMOS (MOSFET) 55 5.13 Fuente de alimentación 56 5.14 Esquema de un divisor de tensión 56 5.15 Estado de carga con régimen permanente de corriente 57 5.16 Sistema de carga y monitorización basado en Arduino 58 5.17 Sketcher del sistema diseñado 58 6.1 Esquema planta potencia inicial 66 6.2 Setup Planta propulsora con pila de H2 67 6.3 Curva de polarización 67 6.4 Curva Potencia intensidad 68 6.5 Evolución de la intensidad 69 6.6 Evolución de la potencia 69 6.7 Evolución de la temperatura 70 6.8 Caracterización de parámetros con PWM 71 6.9 Evolución temperatura 71 6.10 Tensión y corriente 73 6.11 Potencia y temperatura 73 6.12 Empuje y Par 75 6.13 Corriente y potencia eléctrica 76 6.14 Par y Empuje con velocidad angular 76 6.15 Consumo de energía y eficiencia 77 6.16 Esquema representativo de la misión diseñada 77 6.17 Perfil PWM desarrollado 78 6.18 Corriente y eficiencia de la misión 78 6.19 Empuje y potencia de la misión 79 Índice de Figuras 133 6.20 Perfil de RPM demandado 79 6.21 Misión completa del EMERGENTIA-PROVANT 80 6.22 PWM y Potencia a escala 1:12 81 6.23 RPM y Corriente a escala 1:12 81 6.24 Empuje y Eficiencia a escala 1:12 82 6.25 Detector de fugas de H2 82 6.26 Safety Cutoffs 83 7.1 Esquema Setup planta propulsora con baterías 85 7.2 Perfil PWM demandado 86 7.3 Empuje y Par 87 7.4 Corriente y Potencia eléctrica 87 7.5 Empuje y Par 88 7.6 Consumo de energía y eficiencia 89 8.1 Flujo de energía en un sistema híbrido[11] 92 8.2 Esquema Sistema Híbrido BAT-Fuente 92 8.3 Fuente a una tensión inferior al bus 93 8.4 Lecturas de tensión y corriente de RCBenchmark 93 8.5 Fuente a una tensión igual al bus 94 8.6 Fuente a una tensión superior a las baterías 94 8.7 Lecturas de tensión y corriente de RCBenchmark 94 8.8 Esquema Sistema Híbrido BAT-Convertidor-Fuente. 95 8.9 Fuente a una tensión inferior al bus (24V) 96 8.10 Lecturas de tensión y corriente de RCBenchmark 96 8.11 Fuente a una tensión igual al bus (24V) 97 8.12 Lecturas de tensión y corriente de RCBenchmark 97 8.13 Comparativa entre uso de Baterías y Sistema Híbrido [4] 98 8.14 Esquema de Hibridación PEM-BAT 98 8.15 Corriente y Potencia en Protium-300 99 8.16 Temperatura y Tensión en Protium-300 99 8.17 PWM y Corriente del sistema híbrido 100 8.18 Potencia y RPM del sistema híbrido 100 8.19 Empuje y eficiencia del sistema híbrido 101 8.20 Esquema futuro de Hibridación PEM-BAT 102 8.21 Diagrama de Bloques del BMS[2] 102 8.22 Esquema MCU 103 8.23 Lecturas de Voltaje realizadas por un BMS [2] 103 Índice de Tablas 3.1 Especificaciones técnicas Protium-300[16] 12 3.2 Suministro combustible Protium-300[16] 12 3.3 Especificaciones del controlador[16] 14 3.4 Especificaciones del regulador 20 7.1 Comparación de Potencias de Plantas de Potencia 87 7.2 Comparación Empuje y Par de Plantas de Potencia 88 7.3 Comparación Eficiencia Energética de Plantas de Potencia 89 135