sistema de control electrÓnico de un …oa.upm.es/45913/1/tfg_pablo_medrano_gastaÑaga.pdf330412...

113
SISTEMA DE CONTROL ELECTRÓNICO DE UN SISTEMA DE PILA DE COMBUSTIBLE PEM DE BAJA POTENCIA EN CONFIGURACIÓN HÍBRIDA CON BATERÍAS FEBRERO 2017 Pablo Medrano Gastañaga DIRECTOR DEL TRABAJO FIN DE GRADO: Félix Moreno González TRABAJO FIN DE GRADO PARA LA OBTENCIÓN DEL TÍTULO DE GRADUADO EN INGENIERÍA EN TECNOLOGÍAS INDUSTRIALES

Upload: others

Post on 17-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

SISTEMADECONTROLELECTRÓNICODEUNSISTEMADEPILADECOMBUSTIBLEPEMDEBAJAPOTENCIAENCONFIGURACIÓNHÍBRIDACONBATERÍAS

FEBRERO 2017

Pablo Medrano Gastañaga

DIRECTOR DEL TRABAJO FIN DE GRADO:

Félix Moreno González

TRABAJO FIN DE GRADO PARA LA OBTENCIÓN DEL TÍTULO DE

GRADUADO EN INGENIERÍA EN TECNOLOGÍAS INDUSTRIALES

Page 2: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES

UNIVERSIDAD POLITÉCNICA DE MADRID

TRABAJO DE FIN DE GRADO

SISTEMA DE CONTROL ELECTRÓNICO DE UN SISTEMA DE PILA DE COMBUSTIBLE PEM DE

BAJA POTENCIA EN CONFIGURACIÓN HÍBRIDA CON BATERÍAS

Pablo Medrano Gastañaga

Tutor: Félix Moreno González

Cotutor: David Aledo Ortega

Cotutora: Mónica Villaverde San José

MADRID. FEBRERO 2017

Page 3: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos
Page 4: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 3

AGRADECIMIENTOS

Quiero agradecer en primer lugar a la Escuela por la formación recibida durante estos cuatro años y la por la oportunidad de realizar este Trabajo de Fin de Grado.

También quiero agradecer a mi tutor Félix Moreno por la oportunidad de participar en este proyecto.

Igualmente a los cotutores, David Aledo por su dedicación y paciencia conmigo, y a Mónica Villaverde por su gran ayuda para la consecución del trabajo.

Por último, agradecer tanto a mis amigos como a mi familia el apoyo incondicional que me han dado a lo largo de los cuatro años del grado y el que se que siempre me seguirán dando.

Page 5: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Agradecimientos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 4

Page 6: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 5

RESUMEN EJECUTIVO

Este Trabajo de Fin de Grado se enmarca dentro del primer proyecto llevado a cabo por la empresa Española de Pilas de Hidrógeno S.A. (EPHISA) cuyo objetivo es desarrollar un prototipo de pila de combustible de hidrógeno para una aplicación vehicular.

EPHISA ha contratado al Centro de Electrónica Industrial (CEI) de la Escuela Técnica Superior de Ingenieros Industrial de la Universidad Politécnica de Madrid para que realice la parte electrónica del proyecto.

El cometido de este trabajo dentro del proyecto mencionado anteriormente es el de implementar en código C el control desarrollado por el CEI de la pila de combustible en Simulink.

Los objetivos principales del trabajo son que este código esté parametrizado de manera que sea fácil de modificar para EPHISA aun cuando no poseen conocimientos especializados en electrónica ni en programación.

Para poder realizar el control de la pila de combustible habrá que gestionar una serie de entradas y salidas tanto analógicas como digitales.

El funcionamiento de la pila de combustible está fijado por la empresa en el diagrama de bloques mostrado en la Figura 9 aunque, posteriormente, sufrió alguna pequeña modificación realizada por el CEI para mejorar dicho funcionamiento.

El control de la pila de combustible se basa en el cálculo del estado de carga de las baterías mediante el método “Coulomb Counting” a partir de un estado de carga anterior y la integral en el tiempo de la intensidad que están proporcionando las baterías.

La pila de combustible deberá proporcionar una potencia proporcional a dicho estado de carga de las baterías para mantenerlo entre unos puntos establecidos.

Se calculará la intensidad teórica que debería proporcionar la pila en función de la potencia exigida por el estado de carga de las baterías y mediante la curva V-I de la pila de combustible se obtendrá la tensión teórica de la pila de combustible. A partir de esta tensión se calculará un duty cycle que debería ser el aplicado a un convertidor de corriente continua para mandar la corriente debida desde la pila a las baterías.

Previamente, el valor de este duty cycle será modificado levemente por un regulador PID aplicado al error entre la intensidad teórica de la pila calculada a partir del estado de carga de la batería y la intensidad real que está proporcionando la batería en ese momento.

El microprocesador para el que hay que desarrollar el código es un PIC32MX795F512L de la marca Microchip incluido en un placa desarrollada por el CEI específicamente para este proyecto.

La propia marca Microchip proporciona un IDE de programación gratuito llamado MPLAB X en el que se desarrolla el código de este proyecto.

Una vez escrito el código hay que realizar la comprobación de su funcionamiento primero en el simulador incluido en MPLAB X y posteriormente sobre la placa tanto con MPLAB X como con una fuente de tensión y un osciloscopio.

Page 7: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Resumen ejecutivo

Escuela Técnica Superior de Ingenieros Industriales (UPM) 6

Cuando se ha comprobado su funcionamiento con éxito los siguientes pasos a seguir en el proyecto, que ya quedan fuera de este trabajo, son la comprobación del funcionamiento en el sistema real del carrito de golf y el ajuste de los parámetro del PID.

Por lo tanto, el resultado de este Trabajo de Fin de Grado es el código completo para el control de la pila de combustible parametrizado, como se comentaba al inicio, de forma que sirva EPHISA para este primer prototipo como para futuros proyectos aun cuando se cambien sensores, puntos de funcionamiento o la propia pila de combustible y que ellos mismos puedan realizar los cambios pertinentes en el código.

PALABRAS CLAVE

Pila de combustible de hidrógeno, batería, microprocesador, control, señales, simulación.

CÓDIGOS UNESCO

330412 – Dispositivos de control.

330603 – Motores eléctricos.

331107 – Instrumentos electrónicos.

331108 – Equipo de laboratorio.

331702 – Automóviles.

Page 8: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 7

ÍNDICE

AGRADECIMIENTOS ........................................................................................................... 3 RESUMEN EJECUTIVO ....................................................................................................... 5 ÍNDICE ..................................................................................................................................... 7 1. INTRODUCCIÓN ........................................................................................................... 9

1.1. COMBUSTIBLES EN LA ACTUALIDAD. .......................................................................... 9 1.2. EL HIDRÓGENO COMO COMBUSTIBLE ........................................................................ 11 1.3. LA PILA DE COMBUSTIBLE DE HIDRÓGENO ................................................................ 13 1.4. COMPARACIÓN ENTRE EL COCHE ELÉCTRICO Y EL COCHE CON PILA DE COMBUSTIBLE DE HIDRÓGENO ...................................................................................................................... 15 1.5. EPHISA ................................................................................................................... 17

2. OBJETIVOS ................................................................................................................... 19 3. METODOLOGÍA .......................................................................................................... 21

3.1. CONFIGURACIONES ................................................................................................... 22 3.1.1. Configuración del reloj del microprocesador y bibliotecas. ........................... 22 3.1.2. Señales de entrada analógicas ......................................................................... 24 3.1.3. Señales de entrada digitales ............................................................................ 29 3.1.4. Señales de salida digitales ............................................................................... 32

3.2. FUNCIONAMIENTO .................................................................................................... 36 3.3. CONTROL .................................................................................................................. 40 3.4. ESCRITURA EN MEMORIA FLASH ............................................................................... 45 3.5. SIMULACIONES Y PRUEBAS EN LA PLACA .................................................................. 46

4. RESULTADOS Y CONCLUSIONES ......................................................................... 51 5. LÍNEAS FUTURAS ....................................................................................................... 53 6. ANÁLISIS TEMPORAL Y ECONÓMICO ................................................................ 55

6.1. ANÁLISIS TEMPORAL ................................................................................................. 55 6.2. ANÁLISIS ECONÓMICO ............................................................................................... 58

6.2.1. Coste de personal ............................................................................................. 58 6.2.2. Ordenador ........................................................................................................ 58 6.2.3. Software ........................................................................................................... 58 6.2.4. Material ............................................................................................................ 59 6.2.5. Componentes .................................................................................................... 59 6.2.6. Fabricación ...................................................................................................... 59

7. REFERENCIAS ............................................................................................................. 61 8. ANEXOS ......................................................................................................................... 67

8.1. CÓDIGO MAIN.C ........................................................................................................ 67 8.2. CÓDIGO CONTROL.C .................................................................................................. 74 8.3. CÓDIGO CONTROL.H .................................................................................................. 80 8.4. CÓDIGO SENSORES_ANALÓGICOS_ADC.C ................................................................ 83 8.5. CÓDIGO SENSORES_ANALÓGICOS_ADC.H ................................................................ 90 8.6. CÓDIGO TIMERS.C ..................................................................................................... 92 8.7. CÓDIGO TIMERS.H ..................................................................................................... 94 8.8. CÓDIGO SEÑALES_DIGITALES_ENTRADA.C ............................................................... 96 8.9. CÓDIGO SEÑALES_DIGITALES_SALIDA.C ................................................................. 102

Page 9: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Índice

Escuela Técnica Superior de Ingenieros Industriales (UPM) 8

8.10. CÓDIGO PWM.C ................................................................................................... 106 8.11. CÓDIGO ESCRIBIR_MEMORIA.C ........................................................................... 109

9. ÍNDICE DE FIGURAS ................................................................................................. 63 10. ÍNDICE DE FÓRMULAS ............................................................................................. 65

Page 10: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 9

1. INTRODUCCIÓN

1.1. Combustibles en la actualidad.

En la actualidad hay una gran preocupación por le medioambiente, el calentamiento global y la contaminación en las ciudades. Una gran culpa de este agravamiento de la contaminación la tienen los combustibles.

Según un estudio realizado por el Eurobarómetro, en la Europa de los 28 el coche es el transporte más utilizado, por el 54% de la población, en un día normal con una gran diferencia respecto al transporte público. El siguiente más usado, como se puede ver en la Figura 1, es el transporte público.

Figura 1: Uso del transporte en un día normal en la Europa de los 28. [1]

Esto lleva a que la contaminación en las grandes ciudades sea uno de los problemas a los que se enfrenta la sociedad de hoy en día y se están empezando a ver políticas por parte los gobiernos de veto a los coches antiguos más contaminantes e incluso a los que consumen combustible diésel aunque sean más modernos.

Page 11: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Introducción

Escuela Técnica Superior de Ingenieros Industriales (UPM) 10

Las opciones actualmente más viables a la hora de sustituir los automóviles diésel y gasolina por otros menos contaminantes son los vehículos híbridos y los eléctricos. Los vehículos híbridos pueden llegar a no producir emisiones cuando funcionan únicamente con el motor eléctrico, lo que hace que sus emisiones medias sean menores que las de los diésel o gasolina.

En cuanto a los eléctricos, hay dos posturas a la hora de considerar sus emisiones. Por un lado, se habla de que las emisiones locales si son cero pero, por otro lado, habría que tener en cuenta las emisiones que aparecen en la producción de la energía eléctrica que utilizan este tipo de vehículos y que depende cada año del porcentaje de la producción que cubran las energías renovables. De utilizar este punto de vista, las emisiones de los vehículos diésel y gasolina también serían mayores ya que, en las que se suelen manejar, no se incluyen las emisiones procedentes de la producción de estos combustibles.

Por último, también existen vehículos con pila de combustible que utilizan el hidrógeno como combustible. Este tipo de vehículos está menos extendido que los eléctricos o los híbridos aunque ya hay alguno a la venta y en funcionamiento como el Toyota Mirai en Japón. [2]

Al igual que los vehículos eléctricos, los vehículos con pila de combustible se consideran que producen cero emisiones a nivel local. Sin embargo, habría que considerar todo el ciclo de vida del vehículo en el que se incluirían las emisiones producidas en la obtención del hidrógeno que se genera utilizando gas natural aunque es cierto que también se podría conseguir a partir de energías renovables. Actualmente es demasiado caro para competir en precio con el resto de vehículos.

Page 12: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 11

1.2. El hidrógeno como combustible

El combustible de hidrógeno es un combustible de cero emisiones locales, como se ha comentado anteriormente, que se usa mediante celdas electroquímicas o mediante combustión en motores de combustión interna para propulsar vehículos y en dispositivos electrónicos. También es usado en la propulsión de naves espaciales.

Pese a ser el elemento más abundante del universo, no se puede obtener de forma natural ya es demasiado ligero para que la gravedad terrestre lo retenga escapándose a la atmósfera.

Esto lleva a la necesidad de tener que producirlo industrialmente lo que es uno de los mayores inconvenientes de este combustible.

En la actualidad hay varias técnicas de obtención de hidrógeno que usan carbón o gas natural generando CO2 de manera inevitable. Estos procesos también pueden realizarse mediante el uso de biomasa como materia prima resultando el proceso mucho más limpio.

Otro método de producción de hidrógeno es la electrólisis que consiste en descomponer el agua en hidrógeno y oxígeno aplicando una corriente eléctrica. Si esta energía eléctrica es generada mediante formas de energía renovable el hidrógeno producido no tendrá casi emisiones.

El otro gran obstáculo que debe superar el sector del hidrógeno para potenciar el uso en vehículos es su transporte y distribución. Actualmente los costes de distribución son mucho mas altos que los de la gasolina y el diésel y solo es rentable si el hidrógeno se produce cerca o incluso en el mismo sitio donde va a ser utilizado.

Una posible solución sería la de crear una infraestructura global de tuberías similar a los gasoductos pero requeriría una tremenda inversión. De hecho, se está probando usar la infraestructura del gas natural inyectando el hidrógeno en los gasoductos y separándolos en el destino permitiendo transportar hasta un 20% del hidrógeno respecto al total de gas natural.

Una vez en el destino surge el problema del almacenamiento ya que se requieren grandes presiones para poder almacenarlo de entre 250 y 700 bares o temperaturas muy bajas de unos -253ºC. Además conseguir estas temperaturas tan bajas se calcula que consumiría en torno al 30% de la energía que se podría producir con ese hidrógeno. [3]

Aunque se ha estado hablando del uso del hidrógeno como combustible, en la actualidad es un uso completamente minoritario a pesar de que ya existe una gran producción de hidrógeno a nivel industrial. Este hidrógeno se utiliza mayoritariamente para la producción de amoniaco, en la hidrogenación de la grasa y aceites, hidroalquilaciones, hidrosulfuraciones, hidrocraking y en la producción de metanol entre otros. [4] [5]

En la Figura 2 se puede observar los tipos de combustibles utilizados para la producción del hidrógeno así como sus usos.

Page 13: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Introducción

Escuela Técnica Superior de Ingenieros Industriales (UPM) 12

Figura 2: Producción y uso mundial de hidrógeno. [6]

Page 14: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 13

1.3. La pila de combustible de hidrógeno

La pila de combustible es un dispositivo electroquímico en el cual un flujo continuo de combustible y oxidante sufren una reacción química que da lugar a unos productos y suministra una corriente eléctrica a un circuito externo.

En concreto en las pilas de combustible de hidrógeno, el combustible utilizado es el hidrógeno, de ahí su nombre, y el oxidante el oxígeno, por ello tiene unas emisiones mínimas ya que el producto resultante de esta reacción es agua. En la Figura 3 se puede ver un esquema de este funcionamiento.

El funcionamiento de una pila de combustible, por tanto, es muy parecido al de las baterías tradicionales ya que en ambos casos se obtiene electricidad a partir de sustancias que reaccionan entre sí. La principal diferencia se encuentra en que, mientras que en las baterías tradicionales tienen una capacidad de almacenamiento de energía limitada, la pila de combustible permite un abastecimiento continuo de los reactivos, de manera que si este abastecimiento no está limitado no tendrá que recargarse como la batería.

Además la eficiencia de las pilas de combustible se encuentra entre un 40 y un 60% aunque se puede aumentar hasta un 85-90% en cogeneración si se utiliza el calor residual para su uso superando a los motores de combustión interna donde esta eficiencia se ve limitada por las temperaturas de trabajo según el ciclo de Carnot.

Hay diferentes tipos de pilas de combustible pero, en este proyecto en concreto, se va a utilizar una pila de combustible de membrana de intercambio protónico también conocida como Proton Exchange Membrane (PEM).

Las PEM operan a temperaturas relativamente bajas, entre 80 y 95ºC, tienen una alta densidad de potencia y pueden variar rápidamente su potencia de salida para adaptarse a la demanda del sistema en el que se están utilizando. En cuanto a las potencias que manejan las pilas de combustible tipo PEM existen desde unos pocos vatios hasta varios kilovatios siendo la máxima potencia instalada en una planta de energía estacionaria de 1MW de la marca Honda.

Estas características hacen que este tipo de pilas se puedan utilizar en vehículos. [7]

Page 15: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Introducción

Escuela Técnica Superior de Ingenieros Industriales (UPM) 14

Figura 3: Esquema de funcionamiento de una pila de combustible tipo PEM. [7]

Page 16: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 15

1.4. Comparación entre el coche eléctrico y el coche con pila de combustible de hidrógeno

El principal competidor actualmente del coche con pila de combustible de hidrógeno sería el coche eléctrico por las características de cero emisiones y motor eléctrico y se pretende hacer una comparación entre las ventajas y desventajas de cada uno.

• Ventajas del coche eléctrico:

− Menor precio.

− Mayor eficiencia.

− Menores emisiones globales.

− Coste por km inferior.

− Mayor potencia.

− Mejor y más accesible infraestructura.

• Desventajas del coche eléctrico:

− Menor autonomía.

− Más tiempo de recarga.

− Temperaturas extremas afectan a la autonomía.

− Menor potencia con bajo estado de carga de la batería.

− La vida útil de la batería limita la del coche.

• Ventajas del coche con pila de combustible de hidrógeno:

− Mayor autonomía.

− Repostaje rápido.

− Temperaturas extremas no afectan tanto a la autonomía.

• Desventajas del coche con pila de combustible de hidrógeno:

− Mayor precio.

− Menor eficiencia.

− Mayores emisiones globales.

Page 17: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Introducción

Escuela Técnica Superior de Ingenieros Industriales (UPM) 16

− Coste por km mayor.

− Menor potencia.

− Poco viable en coches pequeños.

− Pérdida de espacio en el maletero.

− Infraestructura compleja, escasa y costosa.

− Hidrógeno muy volátil e inflamable.

− La vida útil de la pila y los tanques de hidrógeno limitan la del coche.

Viendo las ventajas y desventajas de cada uno, parece claro que el coche eléctrico es una mejor opción que el coche con pila de combustible de hidrógeno. Sin embargo, es verdad que las empresas aun no han apostado tanto en la pila de combustible como en el coche eléctrico por lo que aun tiene bastante margen de mejora para conseguir paliar las desventajas que se han comentado. [8]

Page 18: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 17

1.5. EPHISA

Con el fin de acercar los beneficios de la tecnología de las pilas de combustible de hidrógeno se crea Española de Pilas de Hidrógeno S.A. (EPHISA), cuyos objetivos empresariales se basan en el desarrollo de sistemas de pilas de combustible para aplicaciones estacionarias y móviles, que incorporen elementos innovadores de investigación científica y de desarrollo tecnológico relevantes.

EPHISA es una empresa constituida en Madrid en diciembre de 2013, cuya estrategia de negocio y objetivos se basan en conseguir desarrollar una tecnología propia optimizando las funcionalidades y los costes en el ámbito de la pila de hidrógeno.

En concreto, su primer proyecto trata de realizar un primer prototipo de pila de combustible y realizar las primeras pruebas en un vehículo que se trata de de un carrito de golf. [9]

Page 19: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Introducción

Pablo Medrano Gastañaga 18

Page 20: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 19

2. OBJETIVOS

El objetivo de mi Trabajo de Fin de Grado está enmarcado dentro de la empresa Española de Pilas de Pilas de Hidrógeno S.A. (EPHISA) como se ha comentado su primer proyecto, del que ha formado parte mi trabajo, trata de desarrollar un primer prototipo de pila de hidrógeno de baja potencia para una aplicación vehicular. En concreto, mi objetivo era el de implementar en código C el control de esta pila de hidrógeno, desarrollado previamente en un modelo de Simulink por el Centro de Electrónica Industrial (CEI) de la ETSII que aparece en la Figura 4, en una placa que incluía un microprocesador PIC32MX795F512L.

Figura 4: Modelo en Simulink de la pila de hidrógeno. [10]

En esta Figura 4 se ve como están modelizados como bloques de Simulink la pila de hidrógeno, la batería y el convertidor de corriente continua-continua y de las que habrá que manejar algunas de las entradas y salidas que aparecen en este modelo además de algunas otras que no figuran en él.

Por lo tanto, el control de la pila se realiza básicamente con los bloques situados dentro del círculo rojo de la Figura 4. El control a realizar se determinó, previamente, mediante distintos ensayos. Se consideró que lo mejor, por las características de las pilas de hidrógeno, era que fuese de tipo proporcional en función de la carga de la batería como se comentará en un futuro apartado de este trabajo. El control proporcional hará que la pila trate de mantener el estado de carga de la batería por encima de un cierto nivel determinado, para lo que proporcionará más potencia cuanto menor sea la carga de la batería y menos cuando la carga supere ese límite establecido por encima del cual la pila de combustible proporcionará una potencia mínima con la intención de que se apague.

Para poder realizar esta parte del control, el microprocesador deberá gestionar como entradas la intensidad que proporciona la batería al motor con la que se calculará de forma aproximada

Page 21: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Objetivos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 20

su estado de carga y con él, a su vez, la intensidad teórica que debería proporcionar de la pila de hidrógeno que se comparará con la intensidad real que está dando.

Además existirán otras entradas y salidas que serán necesarias para poder realizar el control completo de todo el sistema de la pila de combustible de hidrógeno como, por ejemplo, una electroválvula, sensor de temperatura de la pila, posiciones de una llave y algunos leds.

Estas señales no se encuentran reflejadas en Simulink ya que no eran necesarias para realizar el modelado del funcionamiento de la pila de combustible de hidrógeno con la batería y el control que se quería desarrollar pero, sí son necesarias en el sistema real.

Uno de los objetivos del código a desarrollar era que no fuese simplemente un código para una aplicación concreta sino que fuese parametrizable. De esta forma será fácil modificar ciertos valores característicos del prototipo utilizado en caso de que en un futuro cambiasen, algo que es muy probable por el hecho mismo de ser este proyecto solo un prototipo. Se pretende con ello que el código sirva igualmente para versiones futuras en las que podrían variar la potencia, los puntos óptimos de funcionamiento, parámetros tanto de la pila como del resto de sensores, etc.

Además, se pretendía realizar un código simplificado realizando funciones de más alto nivel que la configuración de registros del microprocesador para que el personal de EPHISA, sin un conocimiento exhaustivo de la electrónica ni de la programación, pudiese realizar modificaciones en caso de ser estas necesarias.

Page 22: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 21

3. METODOLOGÍA

Para la implementación del código en C que realiza el control de la pila se han utilizado las siguientes señales:

− Entradas analógicas:

• Intensidad de la batería.

• Intensidad que da la pila de hidrógeno.

• Sensor de temperatura.

• Sensor de hidrógeno.

− Entradas digitales:

• Señal de la llave en posición 1.

• Señal de la llave en posición 2.

• Sensor de hidrógeno.

− Salidas digitales:

• Led Verde.

• Led Rojo.

• Pulso de interruptor para el encendido de la pila de hidrógeno.

• Electroválvula.

• Convertidor de corriente continua-continua (PWM).

Para poder realizar todas las configuraciones de registros necesarias he utilizado el PIC32 Reference Manual [11] y el 32bit Peripheral Library Guide [12] que microchip pone a disposición de todos los usuarios y en el que se describen y se explican las formas de configurar los registros para las distintas funcionalidades disponibles en los microprocesadores.

Para seguir la misma metodología con todas señales voy a explicar de cada una la configuración y su funcionamiento o en el caso de varias señales tengan alguna de estas partes en común la explicaré en referencia a todas ellas.

Page 23: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 22

3.1. Configuraciones

3.1.1. Configuración del reloj del microprocesador y bibliotecas.

Lo primero que vamos a hacer a la hora de comenzar con el código es incluir las bibliotecas necesarias que vamos a utilizar y configurar la velocidad a la que va a trabajar el microprocesador.

Como bibliotecas predefinidas se van a utilizar stdio.h y stdlib.h de C y plib.h y p32xxxx.h de microchip. Además se deberán incluir los archivos .h extra que se creen. La inclusión de las bibliotecas es lo primero que aparece en el código en el archivo principal llamado main.c (ver anexo Código main.c).

A continuación se quiere configurar la velocidad a la que debe funcionar el microprocesador. El oscilador interno del microprocesador funciona a 8MHz aunque tiene un preescalado de 2, que por defecto está activado aunque se puede desactivar, que hace que la velocidad de funcionamiento, en un principio, sea de 4MHz. Inicialmente se pensó que esta velocidad podía ser adecuada para conseguir un funcionamiento correcto del programa, pero finalmente la necesidad de tener que producir un PWM a una frecuencia de 100KHz con una mayor resolución que la que proporcionaba el reloj a 4MHz hizo que se subiese esta velocidad hasta 16MHz.

Para utilizar una frecuencia distinta a la predeterminada de 4MHz es necesario realizar una serie de configuraciones a divisores y multiplicadores, en concreto, una primera división entre 2 de la frecuencia inicial del oscilador que pasa la frecuencia de 8 a 4 MHz, después se realiza una multiplicación por 16 que pasa la frecuencia a 64MHz para después volver a dividir la frecuencia entre 4 para conseguir los 16MHz finales que eran los deseados.

Se puede pensar que se podría, simplemente, realizar una multiplicación por 4 de los 4MHz iniciales para conseguir los 16MHz deseados pero, la estructura del microprocesador hace que la señal del reloj pase por todos estos multiplicadores y divisores.

Además hay que modificar un divisor que divide esta frecuencia para los periféricos y tiene por defecto el valor de 2 cuando nosotros queremos que se mantenga la velocidad de 16MHz por lo que se cambia su valor a 1.

Todo este código para modificar la velocidad del reloj se encuentra a continuación de la declaración de las bibliotecas que se utilizan, antes de comenzar con la declaración de las variables que se van a utilizar (ver anexo Código main.c).

Page 24: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 23

Figura 5: Diagrama de flujo de la configuración de la velocidad del reloj.

Page 25: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 24

3.1.2. Señales de entrada analógicas

Como señales de entrada analógica se tienen las siguientes:

• Intensidad que da la batería de hidrógeno.

• Intensidad que da la pila de hidrógeno.

• Sensor de temperatura.

• Sensor de hidrógeno.

El procesamiento de todas las señales analógicas debe hacerse a través del convertidor analógico-digital (ADC) de 10 bits que tiene el microprocesador. Por lo que además de configurar las entradas como analógicas habrá que configurar el ADC, y un timer que es utilizado por el ADC, para que convierta estas señales a valores digitales. Para ello también serán necesarios los valores entre los que se encuentra la medida que vendrán impuestos por el sensor.

Las funciones que configuran las entradas analógicas y el ADC se encuentran en el archivo sensores_analogicos_ADC.c

Para que el usuario pueda añadir más sensores analógicos, en caso de que fuese necesario, sin tener que modificar registros, se ha creado una función de tipo void con tres parámetros:

1. El primer parámetro es el número de pin analógico al que se va a conectar el sensor, que es necesario para configurar el registro correspondiente como entrada analógica y también para modificar el registro del ADC que indica las correspondientes entradas que tienen que ser convertidas.

Para poder configurar estos registros independientemente del número de sensor que introduzca el usuario se han creado en el archivo sensores_analogicos_ADC.h unas funciones de desplazamiento de bits que permitirán modificar los bits que sean necesarios.

2. El segundo parámetro será el valor mínimo que tiene que leer el sensor y que utilizará el ADC para poder realizar la conversión correctamente. Este valor se almacena en un vector que contiene todos los valores mínimos de todos los sensores analógicos utilizados.

3. El tercer parámetro es similar al anterior solo que en este caso el valor será el máximo en vez del mínimo que también es necesario para realizar la conversión. Este valor se almacenará en otro vector que contiene los valores máximos de todos los sensores analógicos.

Page 26: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 25

La declaración de la función queda, por tanto, de la siguiente forma:

iniSensorAN(número pin analógico, valor mínimo sensor, valor máximo sensor)

Como he dicho, con esto ya se consiguen configurar algunos de los registros que son necesarios configurar para el funcionamiento del ADC que son los pines a los que van a conectarse los sensores analógicos como entradas analógicas y los pines que va a tener que leer el ADC para realizar su conversión.

A continuación hay que seguir configurando una serie de registros para establecer el modo de funcionamiento del ADC.

Para ello se ha creado otra función, igualmente de tipo de void y sin parámetros llama iniADC1, que el usuario solo deberá llamar al iniciarse la función main y, en principio, no deberá modificar a no ser que quiera cambiar el modo de funcionamiento en el que se ha configurado el ADC y que es el más automático posible.

En este modo de funcionamiento, el ADC comenzará a realizar la conversiones de todas las entradas especificadas por el usuario previamente con la función iniSensorAN cuando le marque un timer, almacenándolas en el buffer que dispone el ADC para ello. Este buffer se sobrescribe cada vez que el ADC realiza nuevas conversiones.

Además hay que configurar la interrupción que puede generar el ADC y que se va a utilizar para hacer el escalado de los valores leídos por el ADC. Una vez hecha esta conversión se almacenan esos valores, ya escalados, en un vector para después guardarlos en unas variables más intuitivas que se utilizarán en el resto del código.

Previamente se ha comentado que el ADC empezará a realizar las conversiones cuando se lo marque un timer, en este caso se va a utilizar el timer3 que es de 16 bits y habrá que configurar.

Para configurar el timer hay que darle un valor de preescalado que se aplica a la velocidad del reloj del microprocesador, que en este caso es de 16MHz, y un número de ciclos que debe realizar hasta que se produce su overflow que será lo que marque al ADC el momento en el que debe empezar a realizar la conversión.

Además se puede utilizar o no la interrupción que genera el timer cuando se produce su overflow. Para el funcionamiento del ADC no es necesario utilizar la interrupción y como este mismo timer no se utiliza para nada más se va a dejar desactivada.

Se ha considerado que un tiempo correcto para que el ADC realice interrupciones es cada 100 milisegundos. Como el reloj del microprocesador está configurado para que funcione a 16MHz, este reloj se va a configurar con un preescalado de 64 y con un valor de cuenta de 25000. Así se consigue que el overflow del timer 3 se produzca cada 100 milisegundos.

Page 27: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 26

A pesar de asignar estos valores concretos para este caso particular, los valores pueden ser modificados en el archivo timers.h en caso de que se quisiese que el ADC comenzase a realizar las conversiones con un intervalo distinto a 100 milisegundos.

Según la configuración realizada para el ADC, se podrían conectar a este hasta ocho entradas analógicas. Sin embargo, modificando esta configuración se podría ampliar este número hasta llegar a dieciséis entradas, siempre que haya tantas accesibles en la placa.

A continuación, en la Figura 6, se puede ver de forma simple cómo es el funcionamiento del ADC con su interrupción y su inicio mediante el overflow del timer asignado.

Figura 6: Diagrama de flujo del funcionamiento del ADC

Page 28: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 27

Finalmente, aunque como se ha comentado el usuario puede añadir nuevos sensores o modificar los ya existentes, se han dejado ya programados los mencionados al principio de esta sección y para ello hay que seleccionar pines que puedan funcionar como entradas analógicas y que estén disponibles para su uso y accesibles en la placa.

Para ello se dispone de los esquemas de la placa que se muestran a continuación, tanto en la Figura 7 como en la Figura 8, donde se señala los pines elegidos que son:

• Sensor de corriente de la batería: AN3.

• Sensor de corriente de la pila de combustible: AN4.

• Sensor temperatura: AN5.

• Sensor de hidrógeno analógico: AN9.

Figura 7: Esquemático de los pines del microprocesador. Fuente: CEI

En este esquema de la Figura 7, se puede ver que los pines analógicos seleccionados se encuentran en el puerto B y en el mismo bit al correspondiente al pin analógico, es decir, el AN0 se encuentro en el pin 0 del puerto B, el AN1 en el pin 1 y así sucesivamente. Como los pines utilizados eran AN3, AN4, AN5 y AN9, se encontrarán en los pines 3, 4, 5 y 9 del puerto B.

Page 29: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 28

Igualmente en el siguiente esquema de la Figura 8 se pueden ver en qué conector y en cuál de sus pines de la placa se encuentran conectados esos pines del microprocesador y que serán donde habrá que conectar las señales una vez se haya realizado el código y se vaya a utilizar la placa.

Figura 8: Esquemático con alguno de los conectores de la placa y los pines correspondientes al microprocesador. Fuente: CEI

Se puede ver en la imagen que los pines utilizados como entradas analógicas se encuentran en los siguientes conectores y pines de la placa:

• AN3: conector CN14 pin 5.

• AN4: conector CN14 pin 6.

• AN5: conector CN14 pin 7.

• AN9: conector CN4 pin 6.

Page 30: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 29

3.1.3. Señales de entrada digitales

Las señales de entrada digitales son las siguientes:

• Señal de la llave en posición 1.

• Señal de la llave en posición 2.

• Sensor de hidrógeno.

Las dos posiciones en las que se puede entrar la llave se corresponden con dos modos de funcionamiento distintos que son los siguientes:

• Posición 1: El modo de funcionamiento en la posición 1 es de solo batería, es decir, la pila de hidrógeno se encuentra apagada.

• Posición 2: El modo de funcionamiento en la posición 2 se corresponde con un funcionamiento conjunto tanto de la batería como de la pila de hidrógeno.

La pila de hidrógeno proporcionará corriente para ir cargando la batería de manera que esta no baje de un determinado porcentaje de carga. Además la pila de hidrógeno podrá proporcionar potencia al motor siempre y cuando no se trate de un valor mayor de 200W que es el que capaz de proporcionar. Si se dan picos de potencia mayores que este valor, como puede ser en una aceleración o en alguna cuesta, será la batería la que proporcione dicha potencia.

La gestión de estas entradas digitales se va a hacer mediante interrupciones. Cuando se produzca un cambio en alguno de los dos bits correspondientes a estas señales digitales saltará una interrupción. Dentro de esta interrupción habrá que identificar cuál ha sido el bit que ha cambiado para pasar a la posición y, por tanto, modo de funcionamiento correspondiente o hacer saltar la alarma de hidrógeno si ha sido su cambio de flanco el que ha hecho saltar la interrupción.

Además como la llave no lleva un sistema antirrebotes propio hay que implementar uno en el propio código que se hará con un retardo de 20ms en la lectura de los puertos después de recibir la interrupción.

Aunque no se deben introducir retardos en las interrupciones, se ha considerado que en este caso es una buena opción ya que el microprocesador no va a poder realizar ninguna de las tareas asignadas hasta que no sepa en que posición se encuentra una vez se haya realizado correctamente la lectura de la posición correspondiente.

La configuración de todas estas entradas se realizarán de forma similar, cambiando solamente el número de bit o también el puerto si fuese necesario pero, en este caso, se utilizan todo entradas del mismo puerto.

Page 31: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 30

Por lo tanto, lo primero que habrá que hacer será habilitar el bit del puerto correspondiente que se va a utilizar, que debe ser uno que permita utilizar la interrupción por cambio de flanco en él, después hay que configurarlo como entrada digital y habilitar el pull up y, por último, fijar la prioridad de la interrupción, borrar el flag de interrupción y habilitar las interrupciones.

Esta configuración se realizará de la misma manera para las entradas digitales ya que se desea que todas ellas produzcan una interrupción por cambio de flanco y, como se ha dicho anteriormente, el vector de interrupciones está compartido por todas por lo que una vez salte la interrupción habrá que identificar cuál de las tres ha provocado la ha provocado.

Cuando salte la interrupción se hará la lectura de los bits de todas las entradas y, en función de sus estados, se realizarán las acciones pertinentes.

En cuanto a la posición de la llave, como se utilizan dos bits podrán ocurrir cuatro situaciones diferentes:

1. Que los dos bits estén a cero

2. Que el bit de la posición 1 esté a uno y el de la posición 2 esté a cero.

3. Que el bit de la posición 1 esté a cero y el de la posición 2 esté a uno.

4. Que los dos bits estén a uno.

Los casos dos y tres son los que se corresponderían, respectivamente, con estar en la posición 1 de funcionamiento solo con batería y en la posición 2 de funcionamiento con batería y pila de hidrógeno.

Para considerar el caso uno, en el que no estaría activa ninguna de las posiciones, se ha creado una nueva posición llamada posición 0 en la que el micro está en un bucle de espera hasta que se pase a alguna de las otras dos posiciones.

En el caso cuatro los bits de las posiciones estarían a uno sin saber en cuál de las dos debería encontrarse. Para solucionar esto se ha decidido dar prioridad al modo de funcionamiento combinado de batería y pila de combustible. De esta forma, para entrar en este modo de funcionamiento se ha puesto únicamente de condición que el bit de la posición 2 se encuentre a 1, independientemente del estado del bit de la posición 1, de manera que se incluye el caso cuatro.

Igual que en el caso anterior con las entradas analógicas, hay que asignar unos pines a estas entradas. En este caso, como el cambio de flanco debe producir una interrupción hay que elegir unos pines que tengan este modo de funcionamiento y son los denominados “Change Notice” abreviados como CN. Por tanto, se van a utilizar los CN siguientes:

• Señal de la llave en posición 1: CN2.

• Señal de la llave en posición 2: CN3.

Page 32: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 31

• Sensor de hidrógeno digital: CN4.

Igual que en el caso anterior hay que identificar los puertos y pines del microprocesador donde habrá que conectar estas señales así como los conectores y los pines en la placa.

En este caso, los pines se vuelven a encontrar todos en el puerto B aunque no coinciden la numeración de los pines del puerto con el pin CN correspondiente. El CN2 se encuentra en el pin 0, el CN3 en el pin 1 y el CN4 en el pin 2.

En cuanto a la conexión de estas señales en la placa, deberá hacerse en los siguientes conectores y pines correspondientes:

• Señal de la llave en posición 1 (CN2): Conector CN14 pin 2.

• Señal de la llave en posición 2 (CN3): Conector CN14 pin 3.

• Sensor de hidrógeno digital (CN4): Conector CN14 pin 4.

Page 33: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 32

3.1.4. Señales de salida digitales

Como señales digitales de salida se tienen:

• Led Verde.

• Led Rojo.

• Pulso de interruptor para el encendido de la pila de hidrógeno.

• Electroválvula.

• Convertidor de corriente continua-continua (PWM).

Los dos leds se corresponderán con dos bits que tendrán que estar a uno o a cero según corresponda al funcionamiento del programa. El led verde estará encendido cuando la pila de hidrógeno esté funcionando correctamente y el led rojo se encenderá cuando suceda algún problema que haga que sea necesario parar la pila de hidrógeno.

El pulso del interruptor para encender la pila de hidrógeno se trata de una señal que tendrá que ponerse a uno durante dos segundos para que la pila de hidrógeno interprete que quiere ser encendida. Para medir esos dos segundos se utilizará un timer como se comentará posteriormente.

También habrá que tener otra salida digital que servirá para encender o apagar la electroválvula cuando la pila de hidrógeno este en funcionamiento o no.

Por último, se necesita utilizar un PWM para regular la potencia que suministra la pila de hidrógeno. Aunque el PWM también es una salida digital su configuración es más compleja que la de los anteriores, que es similar para todos, y se tratará la última por separado.

Como se ha dicho la configuración tanto de los leds como del pulso del interruptor de encendido de la pila de hidrógeno y la electroválvula son similares cambiando únicamente el bit correspondiente a cada señal y el puerto, en caso de que no se encontrasen en el mismo puerto.

Para realizar la configuración de estas señales habrá que poner los bits de los puertos correspondientes como salidas digitales. Para ello, en este caso, se ha utilizado una función predefinida en la librería de periféricos proporcionada por microchip que es la siguiente:

PORTSetPinsDigitalOut(IOPORT_X, BIT_Y) donde solamente hay que sustituir las X por el puerto correspondiente y la Y por el bit de ese puerto.

Por ejemplo, para el caso del led verde que se encuentra en el bit 13 del puerto B quedaría de la siguiente forma: PORTSetPinsDigitalOut(IOPORT_B, BIT_13).

Page 34: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 33

Estas configuraciones se realizan en el archivo del proyecto llamado señales_digitales_salida.c Además, para aclarar la comprensión a una persona ajena a la realización del código, la llamada a la función comentada anteriormente para configurar los bits como de salida se realiza dentro de otras funciones creadas de tipo void y sin parámetros.

Las funciones se han nombrado de la siguiente forma: void iniNombreSalida (void) donde se sustituye NombreSalida por el nombre de la salida correspondiente así en el caso del led verde, por ejemplo, quedaría de la siguiente manera: void iniLedVerde (void) y dentro de esta función se llama a la función PORTSetPinsDigitalOut(IOPORT_B, BIT_13) de manera que quedaría configurado como una salida digital.

Las señales comentadas al inicio de este punto se inicializan mediante la llamada a esta función

Además para poner a cero o a uno los bits correspondientes cuando se quiera que las señales estén activas o no, también se han creado dos funciones para clarificar el significado del código, una para el caso de poner el bit a uno y otra para el caso de ponerlo a cero.

Estas funciones son de tipo void sin parámetros y con el nombre de la siguiente forma: void NombreSalidaON (void) y void NombreSalidaOFF (void).

Así, por ejemplo, en el caso de la electroválvula quedarían de la siguiente forma: void ElectrovalvulaON(void) y void ElectrovalvulaOFF(void).

Como se ha dicho lo único que hacen estas funciones es poner el bit correspondiente a esa salida a uno en el caso de que sea ON y a cero en el caso de que sea OFF.

Las funciones que inicializan todas las salidas deberán ser llamadas al iniciarse el programa en la función main, mientras que las que ponen las salidas a ON o a OFF se llamarán cuando corresponda en función del programa.

Como se ha comentado anteriormente, el pulso del interruptor para el encendido de la pila de hidrógeno debe durar dos segundos para que lo se necesita utilizar un timer que va a ser el timer 5.

Como dos segundos es un tiempo bastante largo, con el timer de 16 bits utilizando el mayor preescalado que permite de 256 no se consiguen contar esos dos segundos sin que se produzca el overflow del timer.

Debido a esta situación se va a configurar el valor de overflow del timer para que el tarde un segundo en producirse. De esta manera, la segunda vez que se produzca el overflow habrán pasado los dos segundos que eran necesarios y se podrá poner a cero el pulso de interruptor para el encendido de la pila de hidrógeno.

Page 35: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 34

A continuación se va a explicar la configuración del PWM que debe funcionar a una frecuencia de 100KHz. Para la realización de un PWM hay que utilizar un registro Output Compare, que tiene varios modos de funcionamiento, y elegir como modo de funcionamiento el de PWM.

Además se necesita utilizar un timer que puede ser de 16 bits o utilizar dos combinados y en ese caso se conseguiría uno de 32 bits. Para nuestro se caso se va a utilizar el timer 2 solamente y, por lo tanto, será de 16 bits.

Una vez hecho esto se configura también el duty cycle inicial que tendrá el PWM en su primera ejecución. Este valor no debería ser mayor del 50% ya que no queremos que el duty cycle sobrepase este valor en ningún caso, por lo que, inicialmente, se va a inicializar a cero.

El PWM puede generar una interrupción cada vez que finaliza un ciclo pero, en este caso no se va a utilizar ya que su principal uso podría ser actualizar el valor del duty cycle.

Sin embargo, este valor depende de otras partes del programa que van a ser más lentas por lo que la interrupción se produciría muchas veces y en la mayoría de ellas no cambiaría el duty cycle por lo que se estaría desaprovechando y perdiendo un cierto tiempo.

Por lo tanto, la actualización del valor del duty cycle se realizará cuando se dispongan de los nuevos valores necesarios para su cálculo y no hay ningún problema en actualizarlo en otro punto del programa que no sea en la interrupción que genera el PWM ya que ese valor se actualizará automáticamente cuando termine el ciclo en el que se encuentre el PWM.

También hay que configurar el valor del timer (PR2) hasta el que tiene que contar para que se produzca el overflow. Este valor se calcula mediante la siguiente fórmula que aparece en el Datasheet del microprocesador [11] reflejada en la Ecuación 1, en función de la frecuencia a la que tiene que funcionar el PWM, a la que funciona el microprocesador y el preescalado del timer.

1𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎𝑑𝑒𝑠𝑒𝑎𝑑𝑎𝑃𝑊𝑀 = 𝑃𝑅2 + 1 ∗

1𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎𝑑𝑒𝑙𝑟𝑒𝑙𝑜𝑗 ∗ 𝑝𝑟𝑒𝑒𝑠𝑐𝑎𝑙𝑎𝑑𝑜𝑡𝑖𝑚𝑒𝑟

Ecuación 1: Calculo del valor de cuenta del timer(PR2) para obtener la frecuencia del PWM deseada

Además, habrá que configurar el timer que va a utilizar el PWM que, como se ha dicho, va a ser el dos y se va a utilizar a la misma frecuencia del reloj que es de 16MHz, sin ningún preescalado, para que el PWM tenga la mayor resolución posible y con valor de overflow el que se ha calculado anteriormente con la Ecuación 1.

Al igual que en los dos casos anteriores se tienen que identificar los puertos, conectores y bits correspondientes a las señales a partir de los esquemas del microprocesador y la placa.

Para las salidas digitales no hay que tener ninguna consideración especial a la hora de elegir el tipo de pin ya que no tienen ningún tipo de función especial.

Page 36: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 35

Se han elegido los siguientes pines de los puertos para cada una de las señales:

• Led Verde: Puerto B pin 13.

• Led Rojo: Puerto B pin 14.

• Pulso de interruptor para el encendido de la pila de hidrógeno: Puerto B pin 15.

• Electroválvula: Puerto E pin 9

• Convertidor de corriente continua-continua (PWM): puerto E pin 6.

En cuanto a los conectores donde se encuentran en la placa y los pines correspondientes son los siguientes:

• Led Verde: Conector CN13 pin 7.

• Led Rojo: Conector CN13 pin 10.

• Pulso de interruptor para el encendido de la pila de hidrógeno: Conector CN13 pin 9.

• Electroválvula: Conector CN13 pin 14

• Convertidor de corriente continua-continua (PWM): Conector CN13 pin 16.

Page 37: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 36

3.2. Funcionamiento

Para la realización del funcionamiento, EPHISA proporcionó un diagrama de flujo con una primera versión aproximada de cómo querían que fuese ese funcionamiento. El diagrama de flujo se presenta a continuación en la Figura 9:

Figura 9: Diagrama de flujo del funcionamiento original proporcionado por EPHISA

Page 38: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 37

Como se comentó en el apartado de las configuraciones de las entradas y las salidas, algunas de ellas son atendidas mediante interrupciones, como el cambio de posición de la llave o el sensor de hidrógeno en caso de que este fuese digital.

En cualquier caso, a continuación se va a describir el funcionamiento del sistema en función de las tres posiciones posibles de la llave y las correspondientes acciones que el sistema debe llevar a cabo en cada una de ellas:

• Posición Apagado: se ha llamado posición apagado en vez de posición 0 porque, como se comentó anteriormente, se añadió una posición 0 en la que el sistema está encendido pero a la espera de pasar a la posición 1 o a la posición 2. Por lo tanto, en la posición de apagado el sistema se encuentra sin corriente y tanto la batería como la pila de combustible están apagadas.

• Posición 1: en esta posición se encuentra en funcionamiento únicamente la batería mientras que la pila de hidrógeno permanece apagada. A pesar de la que pila de hidrógeno esté apagada, el microprocesador debe estar funcionando monitorizando la corriente que suministra la batería al motor para, como se explicará en el siguiente epígrafe de control, poder estar calculando el estado de la carga de la batería constantemente ya que el sistema debe conocer ese valor en todo momento. Esto se debe a que la estimación del estado de carga se realiza por medio del método “Coulomb Counting” que es el mejor considerado para este caso. [12]

Si esto no se realizase de así, cuando se pasase a la posición 2 en la que la pila de hidrógeno debería entrar en funcionamiento, el control fallaría ya que al no conocer el estado de carga de la batería, el control realizado no sería correcto al no disponer del valor actual del estado de carga de la batería.

• Posición 2: como se ha dicho, en la posición 2 funcionan conjuntamente la batería y la pila de hidrógeno realizándose un control sobre dicha que se explicará posteriormente. A parte del control, hay varios aspectos importantes a considerar cuando se produce el funcionamiento conjunto en esta posición que son las siguientes:

− A la hora de arrancar la pila de hidrógeno su temperatura debe ser menor de 45ºC. Este requisito no aparecía inicialmente en la diagrama de flujo proporcionado por EPHISA pero se mostrará a continuación en otro diagrama que se actualizó trabajando en el CEI. Si la temperatura sobrepasa esos 45ºC no se podrá encender la pila de hidrógeno. El valor de 45ºC es un parámetro que puede ser modificado por el usuario en el archivo control.h (ver Código control.).

− Si la temperatura es inferior a 45ºC comienza el encendido de la pila y para ello hay que mandar un pulso de dos segundos de duración sino la pila no se encenderá.

− Una vez encendida la pila comienza la fase que se ha denominado como arranque. El arranque dura veinte segundos y durante este tiempo la pila debe comenzar a dar

Page 39: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 38

corriente. Si esto no sucede, el arranque se considerará fallido debido a que hay algún problema y la pila de hidrógeno se apagará. Al igual que los 45ºC en el caso anterior los veinte segundos son un parámetro que puede ser modificado por el usuario en el archivo control.h (ver Código control.).

− Además, la pila de hidrógeno realiza unas depuraciones de forma periódica, en las que sufre una especie de reset, y puede suceder que al realizar alguna de estas depuraciones haya algún tipo de fallo y la pila de combustible deje de proporcionar corriente. Por lo tanto, hay que monitorizar la corriente que suministra la pila de hidrógeno y si en algún momento esta corriente es nula durante un cierto periodo de tiempo, establecido igualmente como un parámetro en el archivo control.h (ver Código control.), habrá que apagar la pila de hidrógeno.

Otro aspecto que no se reflejaba en el diagrama de flujo inicial, y que hay que considerar, es que si se pasa de la posición 2 a la posición 1 hay que apagar la pila de combustible. El proceso de apagado sí se puede ver en el diagrama de flujo aunque finalmente es algo distinto del que aparece en ese diagrama y se podrá ver en el nuevo diagrama que se presentará a continuación en la Figura 1.

El proceso de apagado consiste en apagar el convertidor de corriente continua y, una vez que la corriente suministrada por la pila de hidrógeno se hace cero, se puede apagar la electroválvula. No hace falta esperar a que la temperatura sea menor de 45ºC como se indicaba en el diagrama original.

Page 40: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 39

Figura 10: Diagrama de funcionamiento modificado por el CEI

Page 41: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 40

3.3. Control

El control de la pila de hidrógeno se basa en el estado de carga estimado (SOC) de la batería.

Para realizar la estimación de este estado de carga se utiliza el método “Coulomb Counting” que calcula este estado de carga a partir de la intensidad que proporciona la batería y que, como se comentó anteriormente, es una de las entradas analógicas al microprocesador. En concreto la fórmula utilizada por el método “Coulomb Counting” es la a continuación en la Ecuación 2:

𝑆𝑂𝐶 𝑡 = 𝑆𝑂𝐶 0 −100𝑄(𝐴𝑠) 𝐼 𝑡 𝑑𝑡

E

F

Ecuación 2: Estimación del SOC por el método del Coulomb Counting. [13]

Como se puede ver y se comentó en puntos anteriores, para poder utilizar esta fórmula se debe conocer el estado de carga de la batería para poder realizar la integración.

A partir de este estado de carga estimado se le proporcionó a la empresa EPHISA dos estrategias de control posibles que son las siguientes:

• Escalonada: en este caso la pila de combustible proporcionaba su potencia óptima siempre que el estado de carga de la batería se encontrase entre unos límites inferior y superior.

En caso de que el estado de carga llegase a ser inferior del mínimo establecido, la pila de hidrógeno comenzaría a otorgar el su máximo de potencia para aumentar más rápidamente el estado de carga de la batería.

En el caso de que el estado de carga superase un máximo establecido, la pila de combustible pasaría a otorgar el mínimo de potencia con el fin de no apagarse completamente.

La principal ventaja de este control es que la pila de combustible otorga una potencia óptima durante un mayor tiempo. Sin embargo, se producían mayores escalones, es decir, cambios más bruscos de la intensidad que da la pila de combustible en el caso de que se superasen los estados de carga de la batería establecidos como límites superior e inferior. En la siguiente gráfica representada en la Figura 11 se puede ver esta estrategia en un recorrido con paradas, realizado por un carrito de golf con unos límites considerados del estado de carga mínimo del 50% y máximo de un 90%.

Page 42: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 41

Figura 11: control de la pila de combustible escalonado en un recorrido con paradas. [10]

• Continua: en este tipo de control la potencia entregada por la pila de combustible es proporcional al estado de carga de la batería. La ventaja de esta estrategia frente a la escalonada es que se obtiene una regulación más continua aunque la pila de combustible no proporciona la potencia óptima como sucedía con aquella. En la siguiente gráfica representada en la Figura 12 se puede ver la estrategia continua en las mismas condiciones que anteriormente con la escalonada.

Figura 12: control de la pila de combustible continuo en un recorrido con paradas. [10]

Page 43: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 42

Finalmente EPHISA decidió que era mejor implementar la estrategia de control continua y es la que se desarrolla en este trabajo.

Para realizar este control se disponen de dos entradas analógicas que se corresponden con la intensidad de corriente de la batería y la de la pila de combustible y una salida digital que es el PWM.

Lo primero que hay que hacer es calcular el estado de carga mediante la ecuación del método “Coulomb Counting”(Ecuación 2).

Una vez se dispone del estado de carga hay que calcular la intensidad teórica que debería entregar la pila de combustible en función del estado de carga de la batería.

Para calcular esta intensidad teórica de la batería, se ha calculado una ecuación lineal dependiente del estado de carga en función de los límites mínimo y máximo de potencia que se quiere que de la pila de combustible. Conociendo la intensidad que da la pila de combustible para proporcionar esas potencias se obtiene la siguiente ecuación:

𝑖GHI = 17,55 − 0,185 ∗ 𝑆𝑂𝐶𝑒𝑠𝑡

Ecuación 3: Intensidad teórica que debería dar la pila de combustible para el estado de carga estimado (SOCest). [10]

Una vez se ha obtenido esta intensidad teórica, que se va a llamar intensidad de referencia, se calcula la diferencia respecto a la intensidad de referencia calculada en el bucle anterior y se le aplica una saturación, llamada slew rate limit (SRL), para que no se puedan producir unos grandes escalones en la intensidad demandada a la pila de combustible.

Este valor del slew rate limit es un parámetro que el usuario puede modificar en función de las características de la pila en el archivo control.h (ver Código control.).

Una vez obtenemos la intensidad de referencia habiéndole aplicado el slew rate limit, en caso de ser necesario, se van a seguir dos procesos para realizar el control que debe finalizar con el valor del PWM.

Por un lado, se va a calcular un regulador PID en función del error existente entre la intensidad de referencia calculada de forma teórica y la intensidad procedente de la pila medida directamente mediante el ADC. Los valores de las constantes de las partes proporcional, integral y derivativa son parámetros que pueden ser modificados por el usuario en función de sus necesidades y que se encuentran en el archivo control.h (ver Código control.). Este valor se sumará posteriormente al del duty cycle calculado como se va a comentar a continuación.

Page 44: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 43

Por otro lado, hay que calcular el duty cycle que debe aplicar el convertidor para conseguir la potencia deseada. La fórmula para calcular dicho duty cycle es la siguiente:

𝑑 = 1 −𝑉(𝐼𝑟𝑒𝑓)48

Ecuación 4: Cáculo del duty cycle en función de la tensión correspondiente a la intensidad de referencia. [10]

Para poder obtener la tensión correspondiente a la intensidad de referencia calculada, EPHISA proporcionó la curva V-I de la pila de combustible obtenida en diversas pruebas que se hicieron con ella que se muestra en la Figura 13.

El objetivo es construir una look up table en el código a partir de valores obtenidos de esta gráfica V-I. Para ello, con los valores proporcionados por EPHSA se construyó esta gráfica V-I y se realizó una interpolación de cuarto grado, obteniendo una ecuación que permite calcular el voltaje a partir de la intensidad de referencia para poder, a continuación, calcular el duty cycle.

Figura 13: curva V-I de la pila de combustible con interpolación de cuarto grado

Gracias a esta ecuación se puede crear una look up table en el código, que puede verse en la línea 74 del archivo main.c (ver Código main.c), evitando así que el programa se ralentice calculando la ecuación de cuarto grado cada vez que se necesita un valor de la tabla.

Una vez se han obtenido tanto el valor del duty cycle como el proporcionado por el controlador PID se suman y se calcula el valor hasta el que se tendrá que mantener a uno el PWM para proporcionar el dicho duty cycle multiplicando por el valor hasta el que contaba contaba el timer antes de desbordarse (PR2), que en este caso es de 159.

y = 0,0095x4 - 0,1957x3 + 1,3299x2 - 4,659x + 36,907R² = 0,99405

0

5

10

15

20

25

30

35

40

0 1 2 3 4 5 6 7 8 9

Volta

je(V

)

Intensidad(A)

Page 45: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 44

Además, como en un principio no se quiere que el duty cycle sobrepase el 50% debido a que se corresponde con el valor máximo de potencia que puede proporcionar la pila de combustible utlilizada en el prototipo, se incluye una saturación al valor hasta el que va a contar el timer que es un parámetro que se puede modificar en el archivo control.h (ver Código control.).

Page 46: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 45

3.4. Escritura en memoria flash

Por último, para el correcto funcionamiento del sistema se requiere que el valor del estado de carga se encuentre siempre disponible para el programa, ya que, como se ha visto en el apartado anterior, es necesario para el cálculo de estado de carga estimado de la batería mediante el método de “Coulomb Counting”.

Durante el funcionamiento normal no hay ningún problema ya que el valor del estado de carga estimado se mantiene en una variable que se va sobreescribiendo con cada nuevo cálculo de este valor y siempre está disponible.

El problema surge al arrancar el microprocesador por primera vez y al apagarlo ya que la variable se encuentra en memoria volátil durante el funcionamiento y al apagar el microprocesador su valor se borrará.

Si se quiere que el estado de carga no se borre una vez se apague el microprocesador es necesario guardarlo en la memoria flash no volátil.

Para realizar el guardado en la memoria flash, según la información que aparece en el Datasheet del microprocesador [11], es necesario realizar un proceso de desbloqueo de esta memoria para después realizar la escritura que puede ser de una palabra o de una fila. Como en este caso solamente se quiere guardar un valor de tipo entero con escribir una palabra es suficiente. Se pueden ver las funciones obtenidas del Datasheet [11] para ello en los anexos (ver Código escribir_memoria.c).

Con este procedimiento no se consiguió de ninguna forma realizar una escritura en la memoria flash del microprocesador por lo que se buscaron otras alternativas para la posible escritura de la memoria flash.

Se intentó entonces crear una partición de usuario de la memoria flash modificando el linker script del compilador pero, finalmente esto tampoco dio resultado y no se consiguió guardar el valor del estado de carga en la memoria flash del microprocesador.

Hasta que se pudiese solucionar este problema mediante otros métodos, como pudiera ser el utilizar una tarjeta sd externa ya que la placa utilizada en el proyecto lo permite, o incluso en un futuro cambiar de microprocesador a uno que permite escribir su memoria flash no volátil de manera más sencilla, hay que estimar el estado de carga de las baterías mediante un método externo al microprocesador e introducir ese valor manualmente en el código una vez el microprocesador esté encendido.

Otra opción es tener la batería cargada al máximo y que, por tanto, el valor del estado de carga inicial sea el 100%.

Page 47: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 46

3.5. Simulaciones y pruebas en la placa

Para comprobar si el código realizado funciona correctamente se utilizó en primer lugar el simulador que proporciona la compañía Microchip en su IDE gratuito llamado MPLAB X donde se ha realizado toda la programación del código.

Este simulador permite comprobar la configuración de los distintos pines de manera que se puede saber si su configuración como pines de entrada o salida analógicos o digitales ha sido correcta como se puede ver en la Figura 14 y que se trata del paso que se realiza en primer lugar.

Figura 14: Modo de los pines configurados en MPLAB X

Además se pueden modificar los valores de esos pines para, por ejemplo, comprobar que las interrupciones por flanco en los pines de entrada digitales se producen correctamente.

Igualmente para comprobar el correcto funcionamiento del ADC se puede dar un valor de voltaje a los pines analógicos de entrada que debe leer como se ve en la Figura 15, así como modificar el pin correspondiente a la bandera de interrupción del ADC para hacer que esta salte y realice las conversiones correspondientes como se puede ver en la Figura 16.

Page 48: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 47

Figura 15: Valores de los pines modificados en MPLAB X

Figura 16: Forzado de la interrupción del ADC

Page 49: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 48

Además para comprobar los valores obtenidos de la conversión del ADC, así como el de cualquier otra variable que se desee, MPLAB X permite observar el valor de cualquier variable cuando el programa se encuentra pausado en algún punto del código como se muestra en la

Figura 17.

Figura 17: Valor de las variables en un punto del programa en MPLAB X

Una vez se ha comprobado el correcto funcionamiento del programa en el simulador se puede pasar a realizar las comprobaciones correspondientes en la placa.

Para poder programar el microprocesador se ha utilizado el PICkit 3 que permite, a su vez, hacer un debugging del código. Además se utilizó un osciloscopio para poder visualizar las señales y una fuente de tensión para generar los estímulos necesarios en los pines correspondientes.

En concreto las comprobaciones que se hicieron para cada tipo de señal fueron las siguientes:

• Entradas analógicas: como se sabe, son las distintas entradas que tiene que convertir el ADC. Para comprobar su funcionamiento se conectaba la fuente de tensión a los pines correspondientes a esas entradas analógicas dando unos valores variables entre 0V y 3,3V, que son los valores de voltaje que admiten los pines del microprocesador, y tras las conversiones realizadas por el ADC, se podía observar en MPLAB X que valores habían adquirido las variables donde se guardaban los valores de dicha conversión.

• Entradas digitales: como todas las entradas digitales tienen que hacer saltar una interrupción por cambio de flanco, lo que se hizo fue conectar la fuente de tensión a esos

Page 50: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 49

pines. En MPLAB X se fijaron puntos de interrupción dentro de ellas para comprobar si saltaba la interrupción correspondiente tanto por flanco de subida como por flanco de bajada.

• Salidas digitales: en las salidas digitales se tiene que diferenciar entre el pwm y el resto. Para las salidas digitales distintas del PWM, la comprobación se realizó poniendo a uno y a cero dichas salidas desde MPLAB X y viendo si en el osciloscopio su valor valía 0V cuando estaba a cero y 3,3V cuando estaba a uno que, como se ha comentado anteriormente, son los valores de voltaje que manejan los pines del microprocesador.

Para comprobar el funcionamiento del PWM necesitamos por un lado comprobar que funciona a la frecuencia deseada, que como se dijo es de 100KHz, y que el duty cycle se corresponde con el establecido en el programa, ambas cosas se pueden ver claramente en el osciloscopio.

Para la frecuencia se puede fijar un duty cycle cualquiera, por ejemplo, de un 50% y se comprueba que, efectivamente, la frecuencia de la señal que muestra el oscilador es de 100KHz.

También se puede comprobar para este primer valor del duty cycle que durante un ciclo la señal esta la mitad del tiempo a uno y la otra mitad a cero.

Posteriormente se comprueba para otros porcentajes de duty cycle reduciendo de 10% en 10% desde el 50% inicial hasta 0%.

Page 51: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Metodología

Escuela Técnica Superior de Ingenieros Industriales (UPM) 50

Page 52: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 51

4. RESULTADOS Y CONCLUSIONES

El resultado de este trabajo ha sido el código entregado a la empresa EPHISA para su utilización en el proyecto que están llevando a cabo que, como se dijo en la introducción, se trata de fabricar un primer prototipo de pila de combustible de hidrógeno para una aplicación vehicular y que, de momento, se prueba en un carrito de golf.

Uno de los objetivos del trabajo era que este código fuese parametrizable, es decir, que todos los valores que son característicos para la pila de combustible y sensores que se están utilizando en este momento puedan ser modificados en el futuro en caso de que se utilice una pila de combustible distinta o se cambie cualquiera de los sensores o los puntos de operación del sistema. Este requisito era fundamental ya que lo más probable es que esto suceda debido a que el proyecto se trata únicamente de un primer prototipo.

Como se ha comentado durante el desarrollo todos los valores susceptibles de ser alterados han sido programados como parámetros que el usuario puede modificar fácilmente.

Por estos motivos se espera que el código tenga una gran utilidad durante toda la vida del proyecto de EPHISA ya que podrá ir siendo adaptado sin mucho trabajo a las modificaciones que se vayan haciendo tanto a la pila de combustible como a los distintos sensores, al funcionamiento y al control.

También hay que decir que uno de los requisitos iniciales, el de guardar el estado de carga en la memoria flash del microprocesador, no se ha podido conseguir en el tiempo de realización que conllevaba este trabajo. A pesar de ello, este requisito ha servido para llevar a cabo la búsqueda de diferentes alternativas distintas a la que inicialmente se pretendía implementar al no funcionar esta y desarrollar nuevas ideas para conseguir el objetivo. Alguna de estas ideas que se sugirieron en el apartado correspondiente podrá ser implementada en el futuro.

Además de estos resultados tangibles del trabajo, también creo que ha sido muy formativa la experiencia de participar en un primer proyecto real, con un cliente fuera de la universidad de manera que es una situación más parecida a lo que me voy a tener que enfrentar dentro de poco en el mundo laboral.

Esto ha supuesto un modo diferente de trabajo al que supondría realizar este trabajo como un proyecto dentro de la universidad ya que, al depender de un cliente, suceden cambios en la planificación y requisitos durante la realización del trabajo a los que hay que adaptarse modificando lo realizado hasta el momento.

Como se ha dicho, creo que esto ha supuesto un complemento formativo más allá de la realización de un Trabajo de Fin de Grado que considero de gran enriquecimiento profesional.

Page 53: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Resultados y conclusiones

Escuela Técnica Superior de Ingenieros Industriales (UPM) 52

Page 54: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 53

5. LÍNEAS FUTURAS

En cuanto a las siguientes pasos a seguir en este proyecto, habría que buscar alguna alternativa para poder realizar el guardado del estado de carga ya que no se consiguió hacer con este microprocesador mediante los procedimientos indicados en el Datasheet del microprocesador como se indicó en el apartado correspondiente en el desarrollo.

Por lo tanto, habría que buscar otras alternativas como pudiera ser la utilización de una tarjeta sd externa dado que la placa construida por el CEI para el proyecto de EPHISA tiene una ranura para ello. Además habría que desarrollar un código que permitiese tanto su escritura como lectura desde el microprocesador.

Por otra parte, también habría que ajustar los parámetros del regulador PID en el sistema del carrito de golf de EPHISA. Se empezaría ajustando la acción proporcional viendo si con solamente con ella es suficiente para realizar un control suficientemente bueno de la pila de combustible. Si con la acción proporcional el control no es bueno se añadiría, a continuación, la acción integral. Con esto ya se conseguiría que el sistema redujese el error hasta hacerlo teóricamente cero. Finalmente, dependiendo de las condiciones estáticas y dinámicas requeridas y las conseguidas con las acciones proporcional e integral habría que considerar si es necesario añadir también la acción derivativa o no.

Además de realizar el mencionado ajuste de los parámetros del PID hay que comprobar que todas las entradas, salidas y el control realizado funcionan correctamente con el sistema real de la pila de combustible de hidrógeno y las baterías ya que, muy probablemente, van a aparecer problemas al tratarse del sistema real como puede ser, sobre todo, el caso de ruido que afecte a los sensores y las medidas realizadas y, por tanto, influyan en el control y puede que hagan necesario realizar algunas modificaciones ya sea de tipo software o hardware.

Page 55: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Líneas futuras

Escuela Técnica Superior de Ingenieros Industriales (UPM) 54

Page 56: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 55

6. ANÁLISIS TEMPORAL Y ECONÓMICO

El objetivo de este capítulo es realizar un análisis de la distribución en el tiempo del trabajo realizado así como del coste económico del trabajo.

6.1. Análisis temporal

Este Trabajo de Fin de Grado comenzó en Febrero de 2016 y se ha desarrollado hasta Febrero de 2017.

En cuanto al análisis temporal, el trabajo se puede dividir en cuatro grandes partes:

1. La primera se trata del estudio del arte así como del estado en el que se encuentra el proyecto llevado a cabo por EPHISA del que ya lleva tiempo formando parte el CEI y ha desarrollado un esquema de control en Matlab que será el punto de partida de este Trabajo de Fin de Grado. Además se fijan los objetivos y requisitos del código que se tiene que llevar a cabo durante este trabajo.

2. En la segunda parte se realiza la instalación del IDE de Microchip, MPLAB X, y se empieza a trabajar para ir familiarizándose con él visualizando algunos ejemplos incluidos en este IDE e información disponible tanto en la página web oficial de Microchip como en distintos foros.

3. En la tercera parte comienza la escritura del código atendiendo los objetivos y requisitos fijados por el proyecto.

4. Por último, en la última parte se realizando las comprobaciones del correcto funcionamiento del código, primero realizando simulaciones en el simulador incluido en MPLAB X y posteriormente sobre la placa construida por el CEI para el proyecto.

A continuación se presentan dos figuras, una con la Estructura de Descomposición del Trabajo (EDP) y otra con el diagrama de Gantt.

Page 57: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Análisis temporal y económico

Escuela Técnica Superior de Ingenieros Industriales (UPM) 56

Figura 18: EDP del Trabajo de Fin de Grado

Page 58: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 57

Figura 19: Diagrama de Gantt del Trabajo de Fin de Grado

Page 59: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Análisis temporal y económico

Escuela Técnica Superior de Ingenieros Industriales (UPM) 58

6.2. Análisis económico

En este apartado se va a realizar el análisis económico del Trabajo de Fin de Grado que se presenta resumido en la siguiente figura.

CONCEPTO COSTE Personal 2.100,00 € Ordenador 450,00 € Software Matlab 0,00 € Mplab X 0,00 € Material Osciloscopio 0,00 € Sondas 0,00 € Fuente de alimentación 0,00 € Programador Pickit 0,00 € Componentes Microprocesador 10,00 € Conectores y otros 20,00 € Fabricación 3,50 €

TOTAL 2.583,50€

Figura 20: Costes Trabajo de Fin Grado

6.2.1. Coste de personal

Para calcular el coste de personal se ha estimado el sueldo de un estudiante del Grado en Tecnologías Industriales en prácticas en 6€/hora que multiplicado por el número de horas empleado en el Trabajo de Fin de Grado que han sido 350 horas hace un total 2100€.

6.2.2. Ordenador

Como equipo para realizar la programación del código se ha utilizado el ordenador personal que tuvo un coste de 1350€. Suponiendo una amortización de 3 años y con una utilización de 12 meses para el Trabajo de Fin de Grado supone un coste de 450€.

6.2.3. Software

En cuanto al software utilizado han sido dos programas, Matlab y Mplab X. Para Matlab, la universidad ofrece licencias gratuitas a todos sus estudiantes por lo no tiene ningún coste. Mplab X es el IDE de Microchip que se puede descargar gratuitamente desde su página web por lo que tampoco supone ningún coste.

Page 60: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 59

6.2.4. Material

Para realizar las pruebas en la placa se utilizó un osciloscopio, sondas y una fuente de alimentación, todo ello en propiedad del CEI y ya amortizado por lo que cuenta como coste para el proyecto.

Además se utilizó también un programador, el Pickit , para programar el microprocesador que también era propiedad del CEI y ya se encontraba amortizado.

6.2.5. Componentes

Los componentes son los utilizados en para la fabricación de la placa utilizada en el proyecto en la que se puede destacar el microprocesador con un coste de 10€ y el resto de componentes y conectores se pueden englobar con un coste de 20€.

6.2.6. Fabricación

Por último, se puede imputar un coste de fabricación de la placa fabricada en el propio CEI de 3,5€.

Como se ha visto en la figura el coste total del Trabajo de Fin de Grado sumando todos los costes desglosados anteriormente asciende a 2583,50€.

Page 61: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Análisis temporal y económico

Escuela Técnica Superior de Ingenieros Industriales (UPM) 60

Page 62: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 61

7. REFERENCIAS

[1] transport, Quality of. «Comisión Europea.» Comisión Europea. Diciembre de 2014. http://ec.europa.eu/public_opinion/archives/ebs/ebs_422a_en.pdf. [2] “El lado oscuro de los coches de hidrógeno”. Ferrer, S. El Confidencial. 12 de Diciembre de 2014. http://www.elconfidencial.com/tecnologia/2014-12-18/el-lado-oscuro-del-coche-de-hidrogeno_592282/. [3] “¿Por qué no triunfa el hidrógeno como combustible de vehículos?” Sanz, D. Ecología Verde. 10 de Julio de 2013. http://www.ecologiaverde.com/por-que-no-triunfa-el-hidrogeno-como-combustible-de-vehiculos/. [4] “Combustible de Hidrógeno”. Wikipedia. https://es.wikipedia.org/wiki/Combustible_de_hidr%C3%B3geno#cite_note-ReferenceA-1. [5] “Apliaciones del hidrógeno en el uso diario”. González, M. La Guía 2000. 20 de Diciembre de 2010. http://quimica.laguia2000.com/conceptos-basicos/aplicaciones-del-hidrogeno-en-el-uso-diario. [6] Global CCS Institute. https://hub.globalccsinstitute.com/publications/ccs-roadmap-industry-high-purity-co2-sources-sectoral-assessment-%E2%80%93-final-draft-report-1. [7] “Pila de combustible”. Wikipedia. https://es.wikipedia.org/wiki/Pila_de_combustible#Tecnolog.C3.ADa. [8] “El coche de hidrógeno vs el coche elétrico: la competencia por ser la motorización del futuro”. Ibáñez. Xataka. 4 de Agosto de 2016. https://www.xataka.com/automovil/el-coche-de-hidrogeno-vs-el-coche-electrico-la-competencia-por-ser-la-motorizacion-del-futuro. [9] EPHISA. http://ephisa.es/. [10] Centro de Electrónica Industrial (CEI) de la Escuela Técnica Superior de Ingenieros Industriales (ETSII) de la Universidad Politécnica de Madrid (UPM). [11] “PIC32 Reference Manual”. Microchip. [12] “32bit Peripheral Library Guide”. Microchip. [13] “Sistema de pila de combustible PEM de baja potencia en configuración híbrida con baterías para aplicación a un vehículo: sistema de control electrónico”. C. Sanz. Trabajo de Fin de Grado, UPM, Julio 2016.

Page 63: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Referencias

Escuela Técnica Superior de Ingenieros Industriales (UPM) 62

Page 64: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 63

8. ÍNDICE DE FIGURAS

Figura 1: Uso del transporte en un día normal en la Europa de los 28. [1] ............................... 9 Figura 2: Producción y uso mundial de hidrógeno. [6] ........................................................... 12 Figura 3: Esquema de funcionamiento de una pila de combustible tipo PEM. [7] ................. 14 Figura 4: Modelo en Simulink de la pila de hidrógeno. [10] ................................................... 19 Figura 5: Diagrama de flujo de la configuración de la velocidad del reloj. ............................. 23 Figura 6: Diagrama de flujo del funcionamiento del ADC ...................................................... 26 Figura 7: Esquemático de los pines del microprocesador. Fuente: CEI .................................. 27 Figura 8: Esquemático con alguno de los conectores de la placa y los pines correspondientes al

microprocesador. Fuente: CEI .......................................................................................... 28 Figura 9: Diagrama de flujo del funcionamiento original proporcionado por EPHISA .......... 36 Figura 10: Diagrama de funcionamiento modificado por el CEI ............................................ 39 Figura 11: control de la pila de combustible escalonado en un recorrido con paradas. [10] ... 41 Figura 12: control de la pila de combustible continuo en un recorrido con paradas. [10] ....... 41 Figura 13: curva V-I de la pila de combustible con interpolación de cuarto grado ................. 43 Figura 14: Modo de los pines configurados en MPLAB X ..................................................... 46 Figura 15: Valores de los pines modificados en MPLAB X ................................................... 47 Figura 16: Forzado de la interrupción del ADC ...................................................................... 47 Figura 17: Valor de las variables en un punto del programa en MPLAB X ............................ 48 Figura 18: EDP del Trabajo de Fin de Grado .......................................................................... 56 Figura 19: Diagrama de Gantt del Trabajo de Fin de Grado ................................................... 57 Figura 20: Costes Trabajo de Fin Grado .................................................................................. 58

Page 65: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Índice de figuras

Escuela Técnica Superior de Ingenieros Industriales (UPM) 64

Page 66: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 65

9. ÍNDICE DE FÓRMULAS

Ecuación 1: Calculo del valor de cuenta del timer(PR2) para obtener la frecuencia del PWM deseada .............................................................................................................................. 34

Ecuación 2: Estimación del SOC por el método del Coulomb Counting. [13] ....................... 40 Ecuación 3: Intensidad teórica que debería dar la pila de combustible para el estado de carga

estimado (SOCest). [10] ................................................................................................... 42 Ecuación 4: Cáculo del duty cycle en función de la tensión correspondiente a la intensidad de

referencia. [10] .................................................................................................................. 43

Page 67: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Índice de fórmulas

Escuela Técnica Superior de Ingenieros Industriales (UPM) 66

Page 68: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 67

10. ANEXOS

10.1. Código main.c 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

EI

6

7

@Fi

le N

ame

8

mai

n.c

9

10

@D

escr

iptio

n 1

1

En

este

arc

hivo

es

dond

e se

real

iza

todo

el p

rogr

ama.

Lo

prim

ero

se in

cluy

en la

s bi

blio

teca

s ne

cesa

rias

en e

ste

caso

1

2 *

las

de C

, el d

e lo

s per

iferic

os d

e m

icro

chip

y p

ic32

. Ade

mas

se

incl

uye

el a

rchi

vo c

ontro

l.h d

onde

se

esta

blec

en a

lgun

os

13

* p

arám

etro

s ne

cesa

rios

para

el c

ontro

l. 1

4

15

@A

utor

1

6

Pab

lo M

edra

no

17

1

8 @

Fech

a 1

9

11

Dic

iem

bre

2016

2

0 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

21

2

2 //I

nclu

sión

de

bibl

iote

cas

23

#def

ine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

2

4 #i

nclu

de <

stdi

o.h>

2

5 #i

nclu

de <

stdl

ib.h

> 2

6 #i

nclu

de <

plib

.h>

27

#inc

lude

<p3

2xxx

x.h>

2

8 #i

nclu

de "

cont

rol.h

" 2

9

30

3

1

Page 69: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 68

32

//DEV

CFG

1 3

3 //C

onfig

urac

ion

del m

icro

proc

esad

or p

ara

que

func

ione

a 1

6MH

z 3

4 #p

ragm

a co

nfig

FN

OSC

= F

RC

PLL

//E

l osc

ilado

r es e

l int

erno

del

mic

ro q

ue ti

ene

una

velo

cida

d de

8M

Hz

pero

se

mod

ifica

con

el P

LL

35

//e

n la

s sig

uien

tes

conf

igur

acio

nes

36

#pra

gma

conf

ig F

PLLI

DIV

= D

IV_2

//PL

L In

put D

ivid

er. S

e po

ne 2

par

a qu

e la

ent

rada

al P

LL s

ea d

e 4M

Hz.

Tie

ne q

ue se

r ent

re 4

y 5

M

Hz

3

7 #p

ragm

a co

nfig

FPL

LMU

L =

MU

L_16

//PL

L M

ultip

lier.

Entra

la fr

ecue

ncia

de

4MH

z y

se m

ultip

lica

por 1

6 sa

liend

o un

a de

64

MH

z 3

8 #p

ragm

a co

nfig

FPL

LOD

IV =

DIV

_4

//

PLL

Out

put D

ivid

er. S

e di

vide

n lo

s 64M

Hz

de s

alid

a de

l PLL

ent

re 4

y s

e ob

tiene

n 16

MH

z 3

9 #p

ragm

a co

nfig

FPB

DIV

= D

IV_1

//P

erip

hera

l Bus

Div

ider

. Se

pone

a 1

par

a qu

e ta

mbi

en v

ayan

a 1

6Mhz

los t

imer

s 4

0

41

4

2 //D

ecla

raci

on d

e va

riabl

es

43

float

SO

Ces

t;

/

/Var

iabl

e qu

e gu

arda

el e

stad

o de

car

ga e

stim

ado

cada

vez

que

se

calc

ula

4

4

45

int c

onve

rsio

n;

//

Var

iabl

e qu

e in

dica

si e

l AD

C h

a te

rmin

ado

la c

onve

rsio

n 4

6

47

int p

osic

ion

= 0;

/

/Var

iabl

e qu

e in

dica

la p

osic

ion

en la

que

se

encu

entra

la ll

ave

48

int t

iem

po_s

in_c

orrie

nte_

arra

nque

= 0

;

//V

aria

ble

que

va g

uard

ando

el n

umer

o de

seg

undo

s sin

que

la p

ila d

e co

rrie

nte

cuan

do e

sta

4

9

//ar

ranc

ando

5

0 in

t tie

mpo

_sin

_cor

rient

e =

0;

//V

aria

ble

que

guar

da e

l tie

mpo

sin

que

la p

ila d

e co

rrie

ntes

en

cual

quie

r mom

ento

de

5

1

//fu

ncio

nam

ient

o 5

2

53

int a

rran

que;

//V

aria

ble

que

indi

ca s

i al e

star

en

posi

cion

2 s

e es

ta a

rran

cand

o la

pila

o n

o 5

4 in

t enc

endi

do =

0;

//V

aria

ble

que

indi

ca s

i al e

star

en

posi

cion

2 h

ay q

ue s

egui

r el p

roce

so d

e en

cend

ido

o no

5

5 flo

at in

t_pi

la;

/

/Var

iabl

e qu

e gu

arda

el v

alor

de

inte

nsid

ad q

ue s

ale

de la

pila

5

6 flo

at in

t_re

f;

//

Var

iabl

e qu

e gu

arda

el v

alor

de

la in

tens

idad

de

refe

renc

ia c

alcu

lada

en

func

ion

de la

que

5

7

//da

la b

ater

ia y

el S

OC

est

imad

o 5

8 flo

at te

mpe

ratu

ra_p

ila;

//V

aria

ble

que

guar

da la

tem

pera

tura

que

hay

en

el a

mbi

ente

de

la p

ila

59

float

con

cent

raci

on_h

idro

geno

;

/

/Var

iabl

e qu

e gu

arda

la c

once

ntra

cion

de

hidr

ogen

o si

se

usa

un s

enso

r ana

logi

co

60

6

1 in

t pos

icio

n_an

terio

r2;

//V

aria

ble

que

sirv

e pa

ra s

aber

si h

emos

pas

ado

de la

pos

icio

n 2

a la

1 re

aliz

ar e

l cic

lo d

e 62

/

/apa

gado

Page 70: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 69

63

6

4

65

//Var

iabl

es d

el P

ID

66

float

err

or =

0;

//

Var

iabl

e qu

e gu

arda

el e

rror

ent

re la

inte

nsid

ad d

e la

pila

y la

de

refe

renc

ia

67

float

err

or_a

nter

ior =

0;

//V

aria

ble

que

guar

da e

l err

or d

e la

con

vers

ion

ante

rior p

ara

el e

rror

der

ivat

ivo

6

8 flo

at p

ropo

rcio

nal =

0;

//V

aria

ble

que

cont

iene

la a

ccio

n pr

opor

cion

al d

el P

ID

69

float

inte

gral

= 0

;

//

Var

iabl

e qu

e co

ntie

ne la

acc

ion

inte

rgra

l del

PID

7

0 flo

at d

eriv

ativ

o =

0;

//

Var

iabl

e qu

e co

ntie

ne la

acc

ion

deriv

ativ

a de

l PID

7

1 flo

at c

ontro

l_pi

d =

0;

//V

aria

ble

que

cont

iene

la s

uma

de to

das

las a

ccio

nes

del P

ID

72

7

3 //L

ook

up ta

ble

para

los v

alor

es d

e te

nsio

n co

rres

pond

ient

es a

las i

nten

sida

des

de la

pila

de

com

bust

ible

7

4 flo

at ta

blaV

I[83

] = {

36.4

5, 3

6.03

, 35.

62, 3

5.24

, 34.

89, 3

4.55

, 34.

23, 3

3.93

, 33.

65, 3

3.39

, 33.

14,

75

32.

91, 3

2.70

, 32.

49, 3

2.30

, 32.

12, 3

1.95

, 31.

79, 3

1.64

, 31.

50, 3

1.36

, 31.

23,

76

31.

11, 3

1.00

, 30.

88, 3

0.78

, 30.

68, 3

0.58

, 30.

48, 3

0.38

, 30.

29, 3

0.20

, 30.

11,

77

30.

02, 2

9.93

, 29.

84, 2

9.74

, 29.

65, 2

9.55

, 29.

46, 2

9.36

, 29.

26, 2

9.15

, 29.

04,

78

28.

93, 2

8.82

, 28.

70, 2

8.58

, 28.

46, 2

8.33

, 28.

20, 2

8.07

, 27.

93, 2

7.79

, 27.

65,

79

27.

50, 2

7.35

, 27.

19, 2

7.03

, 26.

87, 2

6.71

, 26.

54, 2

6.37

, 26.

20, 2

6.03

, 25.

85,

80

25.

68, 2

5.50

, 25.

32, 2

5.14

, 24.

97, 2

4.79

, 24.

61, 2

4.44

, 24.

27, 2

4.10

, 23.

93,

81

23.

77, 2

3.61

, 23.

46, 2

3.32

, 23.

17, 2

3.04

};

82

8

3 in

t ind

iceV

I;

/

/Var

iabl

e qu

e gu

arda

el i

ndic

e pa

ra e

ntra

r a la

tabl

a V

I

84

int i

nt_r

ef_a

ux;

//

Var

iabl

e qu

e gu

arda

la in

tens

idad

de

refe

renc

ia e

n fo

rmat

o en

tero

par

a lu

ego

utili

zarla

8

5

//pa

ra c

alcu

lar e

l ind

ice

VI

86

8

7 in

t num

ero_

conv

ersi

ones

= 0

;

//V

aria

ble

que

guar

da e

l num

ero

de c

onve

rsio

nes

real

izad

o y

cuan

do s

e ig

uala

a u

n va

lor

88

//

esta

blec

ido

por e

l usu

ario

sirv

e ha

ce q

ue s

e gu

arde

el e

stad

o de

car

ga e

n la

sd

89

9

0 //D

ecla

raci

on d

e la

var

iabl

e qu

e se

va

a al

mac

enar

en

la fl

ash

91

exte

rn c

onst

cha

r mi_

espa

cio_

flash

_add

r[];

92

unsi

gned

cha

r *SO

Cgu

arda

do =

mi_

espa

cio_

flash

_add

r; 9

3

94

int m

ain

(voi

d)

95

{ 9

6

SO

Ces

t = 4

5;

97

98

IN

TDis

able

Inte

rrup

ts()

;

//

Se d

esac

tivan

las i

nter

rupc

ione

s pa

ra re

aliz

ar la

s in

icia

lizac

ione

s 9

9

100

/*Se

inic

ializ

an lo

s sen

sore

s an

alog

icos

que

se

van

a co

nect

ar a

l AD

C.*

/ 10

1

iniS

enso

rAN

(3, -

75.0

, 90.

0);

//In

icia

lizam

os e

l sen

sor d

e co

rrie

nte

de la

bat

eria

10

2

iniS

enso

rAN

(4, 0

.0, 8

.3);

//Ini

cial

izam

os e

l sen

sor d

e co

rrie

nte

de la

pila

10

3

iniS

enso

rAN

(5, -

25.0

, 150

.0);

//In

icia

lizam

os e

l sen

sor d

e te

mpe

ratu

ra

104

in

iSen

sorA

N(9

, -5.

0, 1

0.0)

;

//Ini

cial

izam

os e

l sen

sor d

e hi

drog

eno

si e

s an

alog

ico

105

10

6 /*

Se in

icia

liza

el T

imer

que

util

iza

el A

DC

y e

l pro

pio

AD

C*/

10

7

iniT

imer

3();

// S

e in

icia

liza

el T

imer

que

util

iza

el A

DC

10

8

i

niA

DC

1();

//

Se in

icia

liza

el A

DC

con

su

conf

igur

acio

n 10

9

110

/*Se

inic

ializ

an o

tros t

imer

s qu

e se

van

a u

tiliz

ar*/

11

1

iniT

imer

2();

//Se

inic

ializ

a el

Tim

er 2

que

util

iza

el P

WM

11

2

iniP

WM

();

113

114

in

iTim

er5(

);

//

Se in

icia

liza

el T

imer

5 q

ue s

e ut

iliza

par

a pr

oduc

ir el

pul

so d

e do

s seg

undo

s 11

5

116

/*Se

inic

ializ

an la

s señ

ales

dig

itale

s de

ent

rada

que

pro

duce

n in

terr

upci

on p

or c

ambi

o de

est

ado*

/ 11

7

iniS

enso

rPos

1();

//S

e in

icia

lizan

los

sens

ores

de

las

posi

cion

es

118

in

iSen

sorP

os2(

); 11

9

iniS

enso

rHid

roge

no()

;

//Se

inic

ializ

a el

sen

sor d

e hi

drog

eno

si e

s di

gita

l 12

0

121

/*Se

inic

ializ

an la

s señ

ales

dig

itale

s de

sal

ida*

/ 12

2

iniL

edV

erde

();

//

Se in

icia

lizan

los

leds

12

3

iniL

edR

ojo(

); 12

4

Led

Ver

deO

FF()

; 12

5

Led

Roj

oOFF

();

126

in

iPul

soIn

terr

upto

r();

//S

e in

icia

liza

el p

ulso

del

inte

rrup

tor

127

in

iEle

ctro

valv

ula(

);

//S

e in

icia

liza

la s

eñal

de

la e

lect

rova

lvul

a 12

8

iniC

onve

rtido

rDC

();

/

/Se

inic

ializ

a la

señ

al d

el c

onve

rtido

r

Page 71: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 70

129

130

IN

TEna

bleS

yste

mM

ultiV

ecto

redI

nt()

;

/

/Se

habi

litan

las i

nter

rupc

ione

s 13

1

INTE

nabl

eInt

erru

pts(

); 12

7

iniE

lect

rova

lvul

a();

/

/Se

inic

ializ

a la

señ

al d

e la

ele

ctro

válv

ula

128

in

iCon

verti

dorD

C()

;

//S

e in

icia

liza

la s

eñal

del

con

verti

dor

129

130

IN

TEna

bleS

yste

mM

ultiV

ecto

redI

nt()

;

/

/Se

habi

litan

las i

nter

rupc

ione

s 13

1

INTE

nabl

eInt

erru

pts(

); 13

2

13

3

13

4

13

5

w

hile

(1){

// B

ucle

a la

esp

era

de la

s int

erru

pcio

nes d

el A

DC

13

6

137

whi

le(p

osic

ion

== 0

){

138

//No

hace

mos

nad

a es

mie

ntra

s se

pro

duce

el c

ambi

o de

una

pos

icio

n a

otra

13

9

}

14

0

141

whi

le(p

osic

ion

== 1

){

142

14

3

if

(con

vers

ion

== 1

){

//C

uand

o se

ha

real

izad

o la

con

vers

ion

del A

DC

pas

amos

a c

alcu

lar e

l SO

C

144

14

5

cal

cula

r_SO

C()

;

//E

n la

pos

icio

n 1

solo

se

calc

ula

el e

stad

o de

car

ga

146

147

n

umer

o_co

nver

sion

es++

;

//El

num

ero

de c

onve

rsio

nes

aum

enta

una

uni

dad

148

} 14

9

150

if (n

umer

o_co

nver

sion

es =

= N

umer

oCon

vers

ione

sPar

aGua

rdar

){

//S

e gu

arda

el S

OC

en

mem

oria

si se

han

hec

ho e

l num

ero

de

151

//

conv

ersi

ones

nec

esar

ias

152

15

3

//C

odig

o o

func

ion

para

gua

rdar

el e

stad

o de

car

ga e

n m

emor

ia

154

Page 72: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 71

155

n

umer

o_co

nver

sion

es =

0;

156

15

7

}

158

15

9

/*

Si s

e pa

sa d

e la

pos

icio

n 2

a la

pos

icio

n 1

hay

que

apag

ar la

pila

cor

tand

o el

con

verti

dor y

una

vez

la c

orrie

nte

se h

ace

cero

16

0

*

se a

paga

la e

lect

rova

lvul

a*/

161

if(po

sici

on_a

nter

ior2

==

1){

162

163

C

onve

rtido

rDC

OFF

();

164

165

if

(int_

pila

< L

imite

Supe

riorC

orrie

nteC

ero)

{

166

16

7

P

ulso

Inte

rrup

torO

N()

; 16

8

E

lect

rova

lvul

aOFF

();

169

Led

Ver

deO

FF()

; 17

0

L

edR

ojoO

N()

;

/

/Se

enci

ende

el l

ed ro

jo

171

//p

osic

ion_

ante

rior2

= 0

; 17

2

17

3

}

174

} 17

5

}

17

6

177

whi

le(p

osic

ion

== 2

){

178

17

9

if(

ence

ndid

o ==

1){

18

0

if(te

mpe

ratu

ra_p

ila >

Lim

iteTe

mpe

ratu

raEn

cend

ido)

{

/

/Si a

l int

enta

r arr

anca

r la

pila

la te

mpe

ratu

ra e

s m

ayor

de

45

181

//n

o se

arr

anca

18

2

183

Con

verti

dorD

CO

FF()

;

//

Se a

paga

el c

onve

rtido

r 18

4

L

edV

erde

OFF

();

185

Led

Roj

oON

();

//S

e en

cien

de e

l led

rojo

18

6

}

187

Page 73: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 72

188

e

lse{

//S

i la

tem

pera

tura

es

men

or d

e 45

si s

e en

cien

de y

se

activ

a el

pul

so d

e 2

segu

ndos

189

19

0

E

lect

rova

lvul

aON

();

//Se

act

iva

la e

lect

rova

lvul

a

191

Pul

soIn

terr

upto

rON

();

/

/Se

activ

a el

pul

so d

el in

terr

upto

r 19

2

L

edV

erde

ON

();

193

Led

Roj

oOFF

();

194

}

19

5

19

6

enc

endi

do =

0;

//

Term

ina

el e

ncen

dido

19

7

}

198

19

9

if

(con

vers

ion

== 1

){

//C

uand

o se

ha

real

izad

o la

con

vers

ion

del A

DC

pas

amos

a c

alcu

lar e

l SO

C y

la in

tens

idad

20

0

/

/de

refe

renc

ia

201

202

c

alcu

lar_

SOC

eInt

ensi

daR

ef()

;

//S

e ca

lcul

a el

SO

C y

la in

tens

idad

de

refe

renc

ia

203

204

if

((ar

ranq

ue =

1) &

& (i

nt_p

ila <

Lim

iteSu

perio

rCor

rient

eCer

o)){

//C

ompr

obar

si l

a co

rrie

ntes

es c

ero

dura

nte

20 s

egs

205

//d

espu

es d

e ar

ranc

ar

206

20

7

t

iem

po_s

in_c

orrie

nte_

arra

nque

++;

//Si p

ila e

sta

arra

ncan

do y

la c

orrie

nte

med

ida

es c

ero

aum

enta

mos

la v

aria

ble

20

8

209

if(

tiem

po_s

in_c

orrie

nte_

arra

nque

==

Tiem

poC

orrie

nteC

eroA

rran

que)

{

//S

i dur

ante

el a

rran

que

pasa

un

tiem

po d

eter

min

ado

21

0

//

sin

que

la p

ila d

e co

rrie

nte

hay

que

apag

arla

21

1

El

ectro

valv

ulaO

FF()

; 21

2

C

onve

rtido

rDC

OFF

();

213

LedV

erde

OFF

();

214

LedR

ojoO

N()

; 21

5

21

6

}

21

7

}

Page 74: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 73

218

219

if

((ar

ranq

ue =

1) &

& (i

nt_p

ila >

Lim

iteSu

perio

rCor

rient

eCer

o)){

22

0

221

tie

mpo

_sin

_cor

rient

e_ar

ranq

ue =

0;

//Si

la c

orrie

nte

es d

istin

ta d

e ce

ro p

odem

os d

ar p

or fi

naliz

ado

el a

rran

que

222

arr

anqu

e =

0;

223

Led

Ver

deO

N()

; 22

4

L

edR

ojoO

FF()

; 22

5

}

226

227

if

(int_

pila

< L

imite

Supe

riorC

orrie

nteC

ero)

{

//C

ompr

obac

ion

de q

ue la

pila

no

deja

de

dar c

orrie

nte

dura

nte

mas

de

un ti

empo

22

8

//d

uran

te e

l fun

cion

amie

nto

cuan

do h

ace

una

min

i res

et

229

tie

mpo

_sin

_cor

rient

e++;

23

0

}

231

232

e

lse

{ 23

3

t

iem

po_s

in_c

orrie

nte

= 0;

23

4

}

235

236

if

(tiem

po_s

in_c

orrie

nte

== T

iem

poC

orrie

nteC

ero)

{

//C

ompr

obam

os q

ue n

o es

ta u

n de

term

inad

o tie

mpo

sin

dar

cor

rient

e du

rant

e

237

//

el fu

ncio

nam

ient

o no

rmal

23

8

E

lect

rova

lvul

aOFF

();

239

Con

verti

dorD

CO

FF()

; 24

0

L

edV

erde

OFF

();

241

Led

Roj

oON

();

242

}

24

3

244

if

((co

ncen

traci

on_h

idro

geno

*5.0

/102

3.0)

> V

olta

geM

axim

o){

245

Ala

rmaH

idro

geno

();

246

}

24

7

24

8

//ca

lcul

o de

PID

con

las

cons

tant

es q

ue s

e en

cuen

tran

defin

idas

en

cont

rol.h

24

9

err

or =

int_

pila

- in

t_re

f;

//C

alcu

lo d

el e

rror

25

0

pro

porc

iona

l = e

rror

* K

p;

//C

alcu

lo d

e la

par

te p

ropo

rcio

nal

251

in

tegr

al =

inte

gral

+ e

rror

* K

i * T

mue

stre

o;

//C

alcu

lo d

e la

par

te in

tegr

al

252

d

eriv

ativ

o =

(err

or -

erro

r_an

terio

r) *

Kd

/ Tm

uest

reo;

//C

alcu

lo d

e la

par

te d

eriv

ativ

a 25

3

err

or_a

nter

ior =

err

or;

//Pa

sar e

l err

or a

ctua

l a s

er e

l ant

erio

r par

a la

sig

uien

te

254

//ite

raci

on

255

c

ontro

l_pi

d =

prop

orci

onal

+ in

tegr

al +

der

ivat

ivo;

/

/Cal

culo

del

con

trol

256

25

7

cal

cula

r_D

utyC

ycle

();

//S

e ca

lcul

a el

dut

y cy

cle

para

los n

uevo

s va

lore

s med

idos

25

8

259

260

if

(num

ero_

conv

ersi

ones

==

Num

eroC

onve

rsio

nesP

araG

uard

ar){

//

Se g

uard

a el

SO

C e

n m

emor

ia si

se

han

hech

o el

num

ero

de

261

//nve

rsio

nes

nece

saria

s 26

2

263

//

Cod

igo

o fu

ncio

n pa

ra g

uard

ar e

l est

ado

de c

arga

en

mem

oria

26

4

26

5

num

ero_

conv

ersi

ones

= 0

; 26

6

267

}

26

8

}

269

}

27

0

}

27

1

r

etur

n 0;

27

2 }/

/mai

n 27

3

274

27

5 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

276

End

of F

ile

277

*/

Page 75: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 74

10.2. Código control.c 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

EI

6

7

@Fi

le N

ame

8

con

trol.c

9

1

0 @

Des

crip

tion

11

En

este

arc

hivo

se

defin

en fu

ncio

nes q

ue s

e ut

iliza

n pa

ra e

l con

trol d

e la

pila

. En

conc

reto

son

4:

12

* 1

. La

prim

era

sirv

e pa

ra c

alcu

lar e

l est

ado

de c

arga

est

imad

o y

se u

tiliz

a cu

ando

est

amos

en

la p

osic

ion

1 en

la q

ue n

o se

util

iza

la p

ila

13

* 2

. La

segu

nda

es s

imili

ar a

la a

nter

ior a

dem

as d

e ca

lcul

ar e

l est

ado

de c

arga

tam

bien

cal

cula

la in

tens

idad

de

refe

renc

ia q

ue d

eber

ia

14

* p

ropo

rcio

nar l

a pi

la d

e co

mbu

stib

le. S

e ut

iliza

cua

ndo

esta

mos

en

la p

osic

ion

2.

15

* 3

. La

terc

era

sirv

e pa

ra c

alcu

lar e

l dut

y cy

cle

que

tene

mos

que

apl

icar

en

el P

WM

. En

ella

se

real

izan

los

calc

ulos

nec

esar

ios

a pa

rtir d

e 1

6 *

la in

tens

idad

de

refe

renc

ia p

ara

pode

r ent

rar a

la lo

ok u

p ta

ble

de la

cur

va V

I. D

espu

és s

e ca

lcul

a el

dut

y cy

cle

y se

le a

plic

a

17

*

el

con

trol d

el P

ID c

alcu

lado

en

el m

ain.

1

8 *

4. L

a ul

tima

func

ion

es la

ala

rma

de h

idro

geno

que

lo q

ue h

ace

es a

paga

r la

pila

en

caso

de

que

se p

rodu

zcan

fuga

s ap

agan

do e

l co

nver

tido

y 1

9 *

la e

lect

rova

lvul

a.

20

2

1 @

Aut

or

22

P

ablo

Med

rano

2

3 @

Fech

a 2

4

11

Dic

iem

bre

2016

2

5 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

26

2

7 #d

efin

e _S

UPP

RES

S_PL

IB_W

AR

NIN

G

28

#inc

lude

<pl

ib.h

> 2

9 #i

nclu

de "

cont

rol.h

" 3

0

Page 76: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 75

31 fl

oat i

nt_r

ef =

0;

//

Var

iabl

e qu

e se

util

iza

para

alm

acen

ar e

l val

or d

e la

inte

nsid

ad q

ue s

irve

de re

fere

ncia

par

a

32

//rea

lizar

el c

ontro

l. 3

3 flo

at S

OC

est =

50;

//Var

iabl

e en

la q

ue s

e va

act

ualiz

ando

el v

alor

del

est

ado

de c

arga

est

imad

o 3

4 flo

at in

t_ba

t;

//Var

iabl

e en

la q

ue s

e gu

arda

el v

alor

de

la in

tens

idad

que

da

la b

ater

ia

35

float

int_

ante

rior =

0;

/

/Var

iabl

e en

la q

ue s

e gu

arda

la in

tens

idad

de

cont

rol c

alcu

lada

del

cic

lo a

nter

ior p

ara

3

6

//c

ompa

rarla

con

la n

ueva

par

a la

sat

urac

ion

37

float

int_

nuev

a =

0;

//V

aria

ble

en la

que

se

guar

da la

nue

va in

tens

idad

que

va

a se

rvir

de re

fere

ncia

3

8 in

t con

vers

ion;

//V

aria

ble

que

indi

ca si

la c

onve

rsio

n de

l AD

C h

a te

rmin

ado

o no

3

9 in

t ind

iceV

I = 0

;

//V

aria

ble

que

va a

con

tene

r el i

ndic

e pa

ra e

ntra

r a la

tabl

a V

I 4

0 flo

at in

t_pi

la;

//V

aria

ble

que

alm

acen

a la

inte

nsid

ad d

e la

pila

leid

a de

l AD

C

41

int i

nt_r

ef_a

ux;

//Var

iabl

e au

xilia

r que

se

utili

za p

ara

tene

r la

inte

nsid

ad d

e re

fere

ncia

en

form

ato

ente

ro p

ara

42

//usa

rla c

omo

valo

r de

entra

da a

la ta

bla

VI

43

float

tabl

aVI[

68];

/

/Vec

tor q

ue c

ontie

ne lo

s val

ores

de

la lo

ok u

p ta

ble

44

float

con

trol_

pid;

//Var

iabl

e qu

e gu

arda

el v

alor

del

con

trol P

ID

45

float

tens

ion;

//

Var

iabl

e qu

e gu

arda

la te

nsio

n qu

e se

sac

a de

la L

UT

46

int v

alor

_pw

m;

//V

aria

ble

que

guar

da e

l val

or q

ue s

e da

al p

wm

4

7

48

/*Es

ta fu

ncio

n ca

lcul

a el

SO

C e

stim

ado

de la

bat

eria

a p

artir

de

la in

tens

idad

que

pro

porc

iona

4

9 q

ue e

s lei

da p

or e

l AD

C. E

sta

func

ion

la u

tiliz

amos

cua

ndo

la ll

ave

esta

en

la p

osic

ion

1 en

5

0 la

que

sol

o fu

ncio

na la

bat

ería

sin

la p

ila d

e co

mbu

stib

le. E

n el

arc

hivo

con

trol.h

se p

uede

5

1 d

efin

ir lo

s va

lore

s Tm

uest

ro q

ue e

s ca

da c

uant

o tie

mpo

se

real

iza

la m

edid

a de

la in

tens

idad

5

2 y

el Q

nom

que

es u

n pa

ram

etro

fija

do p

or la

bat

eria

. */

53

Page 77: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 76

54 v

oid

calc

ular

_SO

C(v

oid)

{ 5

5

5

6

//C

alcu

lo d

el S

OC

est

imad

o a

parti

r de

la in

tens

idad

de

la b

ater

ia

57

S

OC

est=

SOC

est-(

int_

bat*

Tmue

stre

o*10

0.0/

Qno

m);

58

5

9

// L

os v

alor

es d

el S

OC

est t

iene

n qu

e es

tar e

ntre

0 y

100

6

0

if(S

OC

est>

100)

{ 6

1

S

OC

est=

100;

6

2

}

63

6

4

if(S

OC

est<

0){

65

SO

Ces

t=0;

6

6

}

67

68

c

onve

rsio

n =

0;

//S

e po

ne a

cer

o la

var

iabl

e co

nver

sion

que

se

utili

za p

ara

sabe

r si e

l AD

C h

a te

rmin

ado

6

9

/

/de

real

izar

la c

onve

rsio

n 7

0

7

1

ret

urn;

7

2 }

73

7

4 /*

Esta

func

ion

es ig

ual a

la a

nter

ior e

n la

par

te d

e ca

lcul

ar e

l SO

C e

stim

ado

pero

ade

mas

incl

uye

7

5 e

l cal

culo

de

la in

tens

idad

de

refe

renc

ia q

ue s

e ut

iliza

par

a ha

cer e

l con

trol d

e la

pila

de

hidr

ogen

o 7

6 e

incl

uye

la u

tiliz

acio

n de

l par

amet

ro s

lew

rate

lim

it de

sat

urac

ion

que

se d

efin

e en

el a

rchi

vo c

ontro

l.h*/

7

7

78

void

cal

cula

r_SO

CeI

nten

sida

Ref

(voi

d){

79

80

//

Cal

culo

del

SO

C e

stim

ado

a pa

rtir d

e la

inte

nsid

ad d

e la

bat

eria

8

1

SO

Ces

t=SO

Ces

t-(in

t_ba

t*Tm

uest

reo*

100.

0/Q

nom

); 8

2

83

//

Los

val

ores

del

SO

Ces

t tie

nen

que

esta

r ent

re 0

y 1

00

84

if

(SO

Ces

t>10

0){

85

SO

Ces

t=10

0;

86

}

Page 78: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 77

87

8

8

if(S

OC

est<

0){

89

SO

Ces

t=0;

9

0

}

91

9

2

9

3

//C

alcu

lo d

e la

inte

nsid

ad q

ue d

eber

ia s

umin

istra

r la

pila

de

com

bust

ible

9

4

int_

nuev

a =

17.5

5-0.

185*

SOC

est;

95

96

//

Satu

raci

on e

ntre

los v

alor

es e

stab

leci

dos

en c

ontro

l.h p

ara

no p

edir

dem

asia

da in

tens

idad

a la

pila

ni d

ar m

enos

de

un m

inim

o 9

7

if(in

t_nu

eva

> Li

mite

Supe

riorI

nten

sida

d){

98

int

_nue

va =

Lim

iteSu

perio

rInt

ensi

dad;

9

9

}

100

101

if

(int_

nuev

a <

Lim

iteIn

ferio

rInt

ensi

dad)

{ 10

2

i

nt_n

ueva

= L

imite

Supe

riorI

nten

sida

d;

103

}

10

4

105

10

6

//SR

L(Sl

ew R

ate

Lim

it) v

alor

de

satu

raci

on

107

//

La

sena

l aum

enta

de

valo

r 10

8

if ((

int_

ante

rior-

int_

nuev

a) >

sr)

{ 10

9

i

nt_n

ueva

= in

t_an

terio

r-sr

; 11

0

}

111

11

2

//La

sen

al d

ism

inuy

e de

val

or

113

if

((in

t_nu

eva-

int_

ante

rior)

> s

r){

114

int

_nue

va =

int_

ante

rior+

sr;

115

}

116

Page 79: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 78

117

//

La n

ueva

inte

nsid

ad c

alcu

lada

pas

a a

ser l

a de

refe

renc

ia y

se

guar

da e

n la

ant

erio

r par

a ut

iliza

rla d

e co

mpa

raci

on p

ara

aplic

ar e

l SR

L

118

//

en e

l sig

uien

te c

iclo

11

9

int_

ref =

int_

nuev

a;

120

in

t_an

terio

r = in

t_re

f; 12

1

12

2

con

vers

ion

= 0;

12

3

12

4

ret

urn;

12

5 }

126

12

7 vo

id c

alcu

lar_

Dut

yCyc

le(v

oid)

{ 12

8

12

9

int_

ref_

aux

= in

t_re

f*10

+ 0

.5;

//S

e ut

iliza

la v

aria

ble

auxi

liar p

ara

tene

r la

inte

nsid

ad d

e

130

//r

efer

enci

a en

form

ato

ente

ro

131

//H

ay q

ue s

umar

le 0

.5 p

ara

que

haga

el r

edon

deo

bien

por

que

sino

13

2

//tru

nca

en v

ez d

e re

dond

ear

133

134

in

dice

VI =

int_

ref_

aux

- 1;

135

136

te

nsio

n =

tabl

aVI[

indi

ceV

I];

137

138

v

alor

_pw

m =

((1-

(tens

ion/

48.0

))+c

ontro

l_pi

d)*1

59.0

;

//C

alcu

lam

os e

l dut

y cy

cle

139

140

//

Satu

raci

on p

ara

el v

alor

del

pw

m

141

if

(val

or_p

wm

> V

alor

Max

imoP

WM

){

142

14

3

O

C2R

S =

Val

orM

axim

oPW

M;

144

}

14

5

Page 80: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 79

146

e

lse

if(va

lor_

pwm

< 0

){

147

14

8

O

C2R

S =

0;

149

}

15

0

15

1

els

e{

152

15

3

O

C2R

S =

valo

r_pw

m;

154

}

15

5

15

6

retu

rn;

157

} 15

8

159

//Fun

cion

que

apa

ga la

pila

en

caso

de

alar

ma

de h

idro

geno

16

0 vo

id A

larm

aHid

roge

no(v

oid)

{ 16

1

Ele

ctro

valv

ulaO

FF()

; 16

2

Con

verti

dorD

CO

FF()

; 16

3

Led

Ver

deO

FF()

; 16

4

Led

Roj

oON

();

165

166

re

turn

; 16

7 }

168

16

9

170

17

1 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

172

End

of F

ile

173

*/

Page 81: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 80

10.3. Código control.h

1 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

2 /*

* D

escr

iptiv

e Fi

le N

ame

3

4

@C

ompa

ny

5

CEI

6

7

@

File

Nam

e 8

con

trol.h

9

10

@

Des

crip

tion

11 E

n es

te a

rchi

vo se

def

inen

val

ores

par

a el

con

trol d

e la

pila

que

el u

suar

io p

uede

mod

ifica

r dep

endi

endo

los v

alor

es q

ue se

ne

cesi

ten

para

12

* su

uso

. 13

14

@

Aut

or

15

Pab

lo M

edra

no

16

@Fe

cha

17

11

Dic

iem

bre

2016

18

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

19

20

#ifn

def _

CO

NTR

OL_

H

/* G

uard

aga

inst

mul

tiple

incl

usio

n */

21

#de

fine

_CO

NTR

OL_

H

22

23

24

25 #

defin

e in

om 1

7.57

5

/

/Inte

nsid

ad n

omin

al q

ue b

usca

mos

par

a m

axim

o re

ndim

ient

o de

la p

ila

26 #

defin

e Li

mite

Supe

riorI

nten

sidad

8.3

//

Lim

ite su

perio

r de

satu

raci

on p

ara

la in

tens

idad

de

refe

renc

ia d

e la

pila

27

#de

fine

Lim

iteIn

ferio

rInte

nsid

ad 0

.9

//Li

mite

infe

rior d

e sa

tura

cion

par

a la

inte

nsid

ad d

e re

fere

ncia

de

la p

ila

Page 82: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 81

28

29 #

defin

e sr

0.1

5

//S

lew

Rat

e lim

it, A

por

cad

a Tm

uest

reo

que

pued

e au

men

tar o

dim

inui

r la

inte

nsid

ad d

e

30

//c

ontro

l com

o m

axim

o 31

32

33

#de

fine

Qno

m 1

9500

0.12

//Cap

acid

ad n

omin

al d

e la

bat

eria

en

As e

n ve

z de

Ah

34

35

36 #

defin

e Tm

uest

reo

0.1

//Tie

mpo

en

segu

ndos

ent

re c

ada

mue

stra

37

#de

fine

Tiem

poG

uard

ado

600.

0*Tm

uest

reo

//S

egun

dos q

ue tr

ansc

urre

n pa

ra g

uard

ar e

l val

or d

el S

OC

en

mem

oria

38

39

40

#de

fine

Tiem

poC

orrie

nteC

eroA

rran

que

200.

0*Tm

uest

reo

//T

iem

po m

axim

o qu

e pu

ede

esta

r la

pila

sin

dar

cor

rient

e en

el a

rran

que

41 #

defin

e Ti

empo

Cor

rient

eCer

o 50

.0*T

mue

stre

o

//T

iem

po m

axim

o qu

e pu

ede

esta

r la

pila

sin

dar c

orrie

nte

dura

nte

el

func

iona

mie

nto

norm

al

42

43 #

defin

e Li

mite

Supe

riorC

orrie

nteC

ero

0.5

//Val

or p

or d

ebaj

o de

l cua

l la

corr

ient

e se

con

side

ra c

ero

44

45

46 #

defin

e Li

mite

Tem

pera

tura

Ence

ndid

o 45

.0

//

Tem

pera

tura

por

enc

ima

de la

cua

l no

se p

uede

enc

ende

r la

pila

47

48

#de

fine

Vol

tage

Max

imo

1.52

9

//C

alcu

lado

con

la fo

rmul

a qu

e ap

arec

e en

el d

atas

heet

par

a un

con

cent

raci

on d

e hi

drog

eno

de

49

//5

000p

pm

50

Page 83: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 82

51 #

defin

e K

p 0.

9

//

Con

stan

te p

ara

el e

rror p

ropo

rcio

nal

52 #

defin

e K

i 0.2

//C

onst

ante

par

a el

erro

r int

egra

l 53

#de

fine

Kd

0.0

//C

onst

ante

par

a el

erro

r der

ivat

ivo

54

55 #

defin

e V

alor

Max

imoP

WM

79

56

57 #

defin

e N

umer

oCon

vers

ione

sPar

aGua

rdar

100

/

/Est

able

ce c

ada

cuan

tas c

onve

rsio

nes s

e tie

ne q

ue g

uard

ar e

l est

ado

de c

arga

en

mem

oria

58

59

#en

dif /

* _C

ON

TRO

L_H

*/

60

61 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

62 E

nd o

f File

63

*/

Page 84: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 83

10.4. Código sensores_analógicos_ADC.c

1 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

2 /*

* D

escr

iptiv

e Fi

le N

ame

3

4

@C

ompa

ny

5

CEI

6

7

@

File

Nam

e 8

s

enso

r_an

alog

ico.

c 9

1

0 @

Des

crip

tion

11

D

escr

ibe

the

purp

ose

of th

is fi

le.

12

1

3 @

Aut

or

14

P

ablo

Med

rano

1

5

16

@Fe

cha

17

1

1 D

icie

mbr

e 20

16

18

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

1

9

20

#def

ine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

2

1 #i

nclu

de <

plib

.h>

22

#inc

lude

"sen

sore

s_an

alog

icos

_AD

C.h

" 2

3

24

2

5

26

int i

= 0

; 2

7

28

//Vec

tore

s que

gua

rdan

los v

alor

es d

e lo

s sen

sore

s que

lee

el A

DC

2

9 flo

at v

alor

es_m

axim

os[1

6] =

{0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0};

//Val

ores

max

imos

de

los s

enso

res q

ue si

rve

para

esc

alar

la

lect

ura

Page 85: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 84

30 fl

oat v

alor

es_m

inim

os[1

6] =

{0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0};

//Val

ores

min

imos

de

los s

enso

res q

ue si

rve

para

esc

alar

la

lect

ura

31

float

val

ores

_lei

dos[

16] =

{0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0,0,

0};

//V

ecto

r que

alm

acen

a lo

s val

ores

que

se ll

en d

el A

DC

32

3

3 in

t num

ero_

sens

ores

= 0

;

/

/Var

iabl

e qu

e gu

arda

el n

umer

o de

sens

ores

que

lee

el A

DC

3

4 flo

at in

t_ba

t = 0

;

/

/Var

iabl

e qu

e g

uard

a la

inte

nsid

ad le

ida

de la

bat

eria

3

5 flo

at in

t_pi

la =

0;

//V

aria

ble

que

gua

rda

la in

tens

idad

leid

a de

la p

ila

36

float

tem

pera

tura

_pila

= 0

;

//V

aria

ble

que

gua

rda

la te

mpe

ratu

ra d

e la

pila

3

7 flo

at c

once

ntra

cion

_hid

roge

no =

0;

//

Var

iabl

e qu

e g

uard

a la

con

cent

raci

on d

e hi

drog

eno

38

int c

onve

rsio

n =

0;

//Var

iabl

e qu

e si

rve

para

sabe

r si l

a co

nver

sion

de

valo

res d

el A

DC

3

9

//ha

term

inad

o 4

0

41

4

2 /*

Esta

func

ion

lo q

ue h

ace

es in

icia

lizar

los s

enso

res a

nalo

gico

s que

teng

an q

ue se

r lei

dos p

or e

l AD

C.

43

El n

umer

o de

sens

or se

refie

re a

l pin

ana

logi

co e

n qu

e va

a ir

con

ecta

do e

l sen

sor.

Por e

jem

plo:

si lo

4

4 c

onec

tam

os e

n A

N0

en n

úmer

o de

sens

or p

ondr

iam

os 0

; si l

o co

nect

amos

en

AN

1 po

ndria

mos

1 y

asi

suce

siva

men

te.

45

Los

par

amet

ros d

e va

lor m

inim

o y

max

imo

son

los v

alor

es e

ntre

los q

ue ti

ene

que

leer

el s

enso

r. 4

6 S

e de

be ll

amar

a e

sta

func

ion

tant

as v

eces

com

o se

nsor

es v

aya

a te

ner q

ue le

er e

l AD

C y

sie

mpr

e A

NTE

S de

4

7 in

icia

lizar

el A

DC

. Las

func

ione

s set

Bit

esta

n de

finid

as e

n se

nsor

_ana

logi

co.h

*/

48

4

9 vo

id in

iSen

sorA

N (i

nt n

umer

o_se

nsor

, flo

at v

alor

_min

imo,

floa

t val

or_m

axim

o){

50

51

C

lose

AD

C10

();

/

/Cer

ram

os e

l AD

C m

ient

ras l

o es

tam

os m

odifi

cand

o 5

2

clrB

it(A

D1P

CFG

, num

ero_

sens

or);

//Se

conf

igur

a el

sens

or c

omo

ana

logi

co

53

se

tBit(

AD

1CSS

L, n

umer

o_se

nsor

);

//S

e m

odifi

can

los p

uerto

s que

el A

DC

tien

e qu

e le

er a

Òad

iend

o en

el q

ue se

en

cuen

tra

54

//el n

uevo

sens

or

55

Page 86: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 85

56

val

ores

_max

imos

[num

ero_

sens

ores

] = v

alor

_max

imo;

//E

stab

lece

mos

el r

ango

de

valo

res q

ue le

e el

sens

or

57

v

alor

es_m

inim

os[n

umer

o_se

nsor

es] =

val

or_m

inim

o;

58

59

n

umer

o_se

nsor

es++

;

//E

l num

ero

de se

nsor

es a

nalo

gico

s que

est

amos

util

izan

do a

umen

ta

60

61

} 6

2

63

/*Es

ta fu

ncio

n va

a c

onfig

urar

el A

DC

. En

cada

regi

stro

se c

omen

ta la

form

a en

que

se e

sta

conf

igur

ando

. 6

4 E

sta

conf

igur

ando

par

a qu

e m

uest

ree

de fo

rma

auto

mat

ica

utili

zand

o el

Tim

er 3

com

o tri

gger

.*/

65

6

6 vo

id in

iAD

C1

(voi

d){

67

68

Clo

seA

DC

10()

; 6

9

7

0

I

FS1b

its.A

D1I

F =

0;

//B

orra

r fla

g de

inte

rrup

cion

del

AD

C1

71

72

AD

1CH

Sbits

.CH

0NA

= 0

;

//

El v

olta

ge d

e en

trada

neg

ativ

o al

AD

C e

s el d

e re

fere

ncia

7

3

/

/No

esto

y co

nfig

uran

do e

l reg

istro

CH

0SA

por

que

lueg

o te

ngo

el S

can

Mod

e En

able

7

4

75

AD

1CO

N1b

its.F

OR

M =

0b0

00;

//

Form

ato

ENTE

RO

par

a da

tos d

e sa

lida

76

77

AD

1CO

N1b

its.S

SRC

= 0

b010

;

// In

icio

de

conv

ersi

on se

gun

Tim

er3

78

7

9

A

D1C

ON

1bits

.ASA

M =

1;

// M

uest

reo

auto

mat

ico

80

8

1

A

D1C

ON

2bits

.VC

FG =

0b0

00;

//C

onfig

ura

los v

olta

jes d

e re

fere

ncia

del

AD

C c

omo

los i

nter

nos (

tam

bien

pod

ria

pone

rse

1xx)

8

2

83

AD

1CO

N2b

its.C

SCN

A =

1;

//Sca

n M

ode

ON

Page 87: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 86

84

8

5

/

/AD

1CO

N2b

its.A

LTS

= 1;

//Se

pon

e a

1 si

se q

uier

e es

cane

ar e

l MU

X B

tam

bien

si te

ngo

muc

has e

ntra

das

86

8

7

A

D1C

ON

2bits

.BU

FM =

0;

//El

buf

fer n

o se

div

ide

y se

usa

el m

odo

de 1

6 bi

ts

88

8

9

A

D1C

ON

3bits

.AD

RC

= 1

;

//

Se u

sa e

l osc

ilado

r int

erno

com

o re

loj.

El T

ad e

s el p

erio

do d

el o

scila

dor

90

9

1

A

D1C

ON

3bits

.SA

MC

= 0

b000

01;

//C

uant

os T

AD

cic

los d

e re

loj t

iene

que

hab

er e

ntre

el c

omie

nzo

del m

uest

reo

y el

co

mie

nzo

de la

9

2

/

/con

vers

ion(

5bits

) 9

3

94

9

5

96

sw

itch(

num

ero_

sens

ores

){

/

/Mod

ifica

mos

el n

umer

o de

lect

uras

que

real

iza

el A

DC

ant

es d

e qu

e sa

lte la

in

terru

pcio

n

97

//

en fu

ncio

n de

l num

ero

de se

nsor

es q

ue te

nem

os p

ara

que

haga

una

lect

ura

de c

ada

uno

98

cas

e 1:

9

9

A

D1C

ON

2bits

.SM

PI =

0x0

; 10

0

br

eak;

10

1

102

cas

e 2:

10

3

A

D1C

ON

2bits

.SM

PI =

0x1

; 10

4

br

eak;

10

5

10

6

c

ase

3:

107

AD

1CO

N2b

its.S

MPI

= 0

x2;

108

brea

k;

109

11

0

c

ase

4:

111

AD

1CO

N2b

its.S

MPI

= 0

x3;

112

brea

k;

113

Page 88: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 87

113

11

4

c

ase

5:

115

AD

1CO

N2b

its.S

MPI

= 0

x4;

116

brea

k;

117

118

cas

e 6:

11

9

A

D1C

ON

2bits

.SM

PI =

0x5

; 12

0

br

eak;

12

1

122

cas

e 7:

12

3

A

D1C

ON

2bits

.SM

PI =

0x6

; 12

4

br

eak;

12

5

126

cas

e 8:

12

7

A

D1C

ON

2bits

.SM

PI =

0x7

; 12

8

br

eak;

12

9

130

def

ault:

13

1

A

D1C

ON

2bits

.SM

PI =

0x0

; 13

2

br

eak;

13

3

}

13

4

135

136

IPC

6bits

.AD

1IP

= 7;

//S

e fij

a la

prio

ridad

de

la in

terr

upci

on d

el A

DC

13

7

I

EC1b

its.A

D1I

E =

1;

//Se

habi

lita

la in

terr

upci

on d

el A

DC

inte

rrupc

ion

13

8

139

Ena

bleA

DC

10()

;

//U

na v

ez te

rmin

adas

las m

odifi

caci

ones

vol

vem

os a

hab

ilita

r el A

DC

14

0

141

ret

urn;

14

2 }

Page 89: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 88

143

14

4

145

/*Es

ta fu

ncio

n es

la in

terr

upci

on d

el A

DC

. En

ella

se tr

ansf

orm

an lo

s val

ores

leid

os a

la e

scal

a en

la q

ue se

qui

eren

14

6 o

bten

er e

sos v

alor

es y

se p

asan

a la

s var

iabl

es c

orre

spon

dien

tes.

Ade

mas

se b

orra

el b

it de

inte

rrup

cion

del

AD

C

147

y se

pon

e la

var

iabl

e co

nver

sion

a 1

al f

inal

del

pro

ceso

que

se u

tiliz

a de

ban

dera

par

a sa

ber q

ue la

con

vers

ion

148

ha

term

inad

o y

pode

r rea

lizar

las o

pera

cion

es q

ue n

eces

itan

utili

zar e

stas

var

iabl

es.

149

El u

suar

io d

ebe

añad

ir un

a nu

eva

varia

ble

cuan

do a

ñada

un

sens

or e

igua

larla

al v

ecto

r val

ores

_lei

dos[

i] 15

0 a

umen

tand

o su

indi

ce e

n un

a un

idad

. La

func

ion

Rea

dAD

C10

que

se u

tiliz

a lo

que

hac

e es

leer

la p

osic

ion

i del

buf

fer

151

del

AD

C q

ue e

s don

de a

lmac

ena

los v

alor

es q

ue c

onvi

erte

.*/

152

15

3 vo

id _

_ISR

(_A

DC

_VEC

TOR

, ipl

7) A

DC

Han

dler

(voi

d){

154

155

IF

S1bi

ts.A

D1I

F =

0;

//

Se b

orra

el f

lag

de in

terru

pcio

n

15

6

IEC

1bits

.AD

1IE

= 0;

//D

esha

bilit

ar in

terr

upci

on

157

158

//

En e

l buc

le fo

r se

van

leye

ndo

los v

alor

es q

ue h

a co

nver

tido

el A

DC

y tr

ansf

orm

ando

los a

la e

scal

a de

sead

a. S

e re

aliz

a ta

ntas

ve

ces c

omo

15

9

//se

nsor

es h

aya

que

leer

en

el A

DC

ade

mas

se a

lmac

enan

en

el v

ecto

r los

val

ores

esc

alad

os q

ue h

a le

ido

el A

DC

16

0

for(

i = 0

; i<n

umer

o_se

nsor

es; i

++){

16

1

162

val

ores

_lei

dos[

i] =

Rea

dAD

C10

(i)*(

(val

ores

_max

imos

[i]-v

alor

es_m

inim

os[i]

)/102

3.0)

+val

ores

_min

imos

[i];

163

16

4

}

165

166

in

t_ba

t = v

alor

es_l

eido

s[0]

;

//L

a in

tens

idad

de

la b

ater

ia e

s el p

rimer

val

or le

ido

167

in

t_pi

la =

val

ores

_lei

dos[

1];

/

/La

inte

nsid

ad d

e la

pila

es e

l seg

undo

val

or le

ido

168

te

mpe

ratu

ra_p

ila =

val

ores

_lei

dos[

2];

//L

a te

mpe

ratu

ra d

e la

pila

es e

l ter

cer v

alor

leid

o 16

9

con

cent

raci

on_h

idro

geno

= v

alor

es_l

eido

s[3]

; /

/La

conc

entra

cion

de

hidr

ogen

o es

el c

uarto

val

or le

ido

170

Page 90: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 89

171

c

onve

rsio

n =

1;

//Act

ivo

la b

ande

ra p

ara

que

en e

l mai

n ej

ecut

e el

con

trol u

na v

ez h

a te

rmin

ado

la c

onve

rsio

n 17

2

17

3

IEC

1bits

.AD

1IE

= 1;

/

/ Hab

ilita

r int

erru

pcio

n 17

4

17

5

retu

rn;

176

} 17

7

178

17

9 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

180

End

of F

ile

181

*/

Page 91: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 90

10.5. Código sensores_analógicos_ADC.h 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

EI

6

7

@Fi

le N

ame

8

sen

sor_

anal

ogic

o.h

9

10

@D

escr

iptio

n 11

En

este

arc

hivo

se h

an d

efin

ido

tres p

eque

ñas f

unci

ones

que

sirv

en p

ara

mod

ifica

r un

bit d

e un

pue

rto o

regi

stro

pas

ando

le e

ste

en e

l 12

* p

arám

etro

P y

el n

umer

o de

bit

en e

l par

amet

ro B

. 13

14

@

Aut

or

15

Pab

lo M

edra

no

16

17

@Fe

cha

18

11

Dic

iem

bre

2016

19

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

20

21

#ifn

def _

SEN

SOR

_AN

ALO

GIC

O_H

/*

Gua

rd a

gain

st m

ultip

le in

clus

ion

*/

22 #

defin

e _S

ENSO

R_A

NA

LOG

ICO

_H

23

24 /*

Func

ione

s pre

defin

idas

par

a as

igna

r, bo

rrar

o v

er e

l est

ado

de u

n bi

t de

un re

gist

ro.

25 B

asic

amen

te se

util

iza

la fu

ncio

n se

tBit

al a

hora

de

conf

igur

ar lo

s re

gist

ros d

e lo

s 26

pue

rtos a

nalo

gico

s en

func

ion

del n

umer

o in

trodu

cido

por

el u

suar

io. E

l par

amet

ro P

es

27 e

l pue

rto o

regi

stro

don

de se

va

a es

crib

ir, b

orra

r o le

er y

el p

aram

etro

B e

l bit

que

28

se e

scrib

e, b

orra

o le

e.*/

29

Page 92: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 91

30 #

defin

e se

tBit(

P, B

) (P

|= (

1 <<

B))

31

#de

fine

clrB

it(P,

B) (

P &

= ~(

1 <<

B))

32

#de

fine

isSe

t(P, B

) (P

& (1

<<

B))

33

34

35

#en

dif /

* _S

ENSO

R_A

NA

LOG

ICO

_H *

/ 36

37

38

39

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

40

End

of F

ile

41 *

/

Page 93: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 92

10.6. Código timers.c

1 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

2 /*

* D

escr

iptiv

e Fi

le N

ame

3

4

@C

ompa

ny

5

CEI

6

7

@

File

Nam

e 8

t

imer

.c

9

10

@D

escr

iptio

n 1

1 E

n es

te a

rchi

vo se

llev

a a

cabo

la c

onfig

urac

ion

de lo

s tim

ers.

En c

oncr

eto

se u

tliza

n tre

s:

12

* E

l tim

er 3

se u

tiliz

a co

n el

AD

C p

ara

esta

blec

er la

frec

uenc

ia d

e la

s con

vers

ione

s. Si

no

se u

tiliz

a pa

ra n

ada

mas

la

inte

rrupc

ion

pued

e es

tar

13

* d

esac

tivad

a.

14

* E

l tim

er 2

se u

tiliz

a pa

ra p

rodu

cir e

l PW

M. E

stab

lece

su fr

ecue

ncia

. 1

5 *

El t

imer

5 se

util

iza

para

con

tar l

os d

os se

gund

os d

el p

ulso

del

inte

rrupt

or

16

1

7 @

Aut

or

18

P

ablo

Med

rano

1

9

20

@Fe

cha

21

1

1 D

icie

mbr

e 20

16

22

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

3

24

#def

ine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

2

5 #i

nclu

de "

timer

s.h"

26

#inc

lude

"con

trol.h

" 2

7 #i

nclu

de <

plib

.h>

28

2

9

Page 94: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 93

30

3

1

32

int c

onta

dor_

pulso

= 0

; 3

3

34

void

iniT

imer

3 (v

oid)

{

3

5

3

6

Ope

nTim

er3(

conf

ig3,

per

iod3

);

//S

e co

nfig

ura

en e

l arc

hivo

tim

er.h

. En

conf

ig se

enc

iend

e el

tim

er y

se

indi

ca

37

//

el p

rees

cala

do. E

n pe

riod

se e

stab

lece

el v

alor

has

ta e

l cue

nta

el ti

mer

, max

imo

3

8

//65

535

al se

r de

16 b

its

39

C

onfig

IntT

imer

3(T3

_IN

T_O

FF);

//N

o se

nec

esita

util

izar

la in

terr

upci

on p

ara

el A

DC

4

0

4

1

retu

rn;

42

} 4

3

44

4

5 vo

id in

iTim

er2

(voi

d){

46

47

//

con

figur

e th

e co

re ti

mer

roll-

over

rate

(1se

g)

48

O

penT

imer

2(T2

_ON

| T2

_PS_

1_1,

159

);

//C

onfig

uram

os e

l tim

er 2

enc

endi

endo

lo y

teni

endo

la fr

ecue

ncia

del

relo

j in

tern

o sin

4

9

//p

rees

cala

do

50

/

/El p

erio

do d

el T

imer

lo fi

jam

os e

n la

con

figur

acio

n de

l PW

M y

a qu

e de

pend

e de

est

e 5

1

52

53

C

onfig

IntT

imer

2(T2

_IN

T_O

FF);

//No

se n

eces

ita la

inte

rrup

cion

par

a le

PW

M

54

55

r

etur

n;

56

} 5

7

58

5

9

60 v

oid

iniT

imer

5 (v

oid)

{ 6

1

6

2

//Se

con

figur

a el

tim

er p

ara

que

se e

ncie

nda,

teng

a su

inte

rrupc

ion

activ

a, u

n pr

eesc

alad

o de

256

, y sa

lte la

inte

rrupc

ion

cada

dos

se

gs

63

O

penT

imer

5(co

nfig

5, p

erio

d5);

64

6

5

6

6

Con

figIn

tTim

er5(

T5_I

NT_

ON

| T5

_IN

T_PR

IOR

_4);

//A

ctiv

amos

la in

terr

upci

on d

el ti

mer

y fi

jam

os e

l niv

el d

e la

in

terru

pcio

n en

4

67

68

r

etur

n;

69

} 7

0

71

void

__I

SR(_

TIM

ER_5

_VEC

TOR

, ipl

4) _

Tim

er5H

andl

er(v

oid)

{

//En

la in

terru

pcio

n po

nem

os a

cer

o el

pul

so d

el

inte

rrupt

or

72

73

c

onta

dor_

pulso

++;

74

75

if

(con

tado

r_pu

lso =

= 2)

{ 7

6

P

ulso

Inte

rrup

torO

FF()

;

/

/Se

apag

a la

seña

l del

inte

rrup

tor t

rans

curr

idos

los 2

segu

ndos

7

7

I

FS0b

its.T

5IF

= 0;

//S

e bo

rra

el fl

ag d

e in

terru

pcio

n 7

8

I

EC0b

its.T

5IE

= 0;

//S

e de

sact

iva

la in

terr

upci

on d

el ti

mer

5 pa

ra q

ue n

o es

te sa

ltand

o co

ntin

uam

ente

7

9

c

onta

dor_

pulso

= 0

; 8

0

}

8

1

8

2

retu

rn;

83

}

84

8

5

86

8

7 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

88

End

of F

ile

89

*/

Page 95: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 94

10.7. Código timers.h 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

3

/**

Des

crip

tive

File

Nam

e 4

5

@

Com

pany

6

C

EI

7

8

@Fi

le N

ame

9

tim

er.h

10

11

@

Des

crip

tion

12 E

n es

te a

rchi

vo se

est

able

cen

los p

aram

etro

s de

conf

igur

acio

n de

los t

imer

s. El

usu

ario

pue

de m

odifi

car

13 *

los v

alor

es h

asta

los q

ue c

uent

an lo

s tim

ers e

n fu

ncio

n de

las f

recu

enci

as q

ue q

uier

a co

nseg

uir e

n el

14

* A

DC

y e

l PW

M.

15

16

@A

utor

17

P

ablo

Med

rano

18

19

@

Fech

a 20

1

1 D

icie

mbr

e 20

16

21 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

22

23 #

ifnde

f _TI

MER

_H

/* G

uard

aga

inst

mul

tiple

incl

usio

n */

24

#de

fine

_TIM

ER_H

25

26

27

#de

fine

conf

ig3

T3_O

N |

T3_P

S_1_

64

//E

ncen

dido

del

Tim

er y

pre

esca

lado

. Par

a el

Tim

er 1

var

ia, p

ara

el re

sto

pued

e se

r 28

/

/1,2

,4,8

,16,

32,6

4,25

6 29

#de

fine

perio

d3 2

5000

//Q

uere

mos

que

la in

terru

pcio

n sa

lte c

ada

0,1

segu

ndos

. Com

o el

mic

ro v

a a

16M

Hz

pero

el

30

//ti

mer

tien

e un

pre

esca

lado

de

64 h

ace

16*1

0^6/

64=2

5*10

^4 c

iclo

s por

segu

ndo.

Com

o

Page 96: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 95

31

//q

ue ta

rde

0.1s

egs e

n te

rmin

ar d

e co

ntar

tend

rá q

ue h

acer

25*

10^3

cic

los

32

33

34

35

#de

fine

conf

ig5

T5_O

N |

T5_S

OU

RC

E_IN

T | T

5_PS

_1_2

56

36 #

defin

e pe

riod5

625

00

//Que

rem

os q

ue la

inte

rrup

cion

salte

cad

a 2

segu

ndos

. Com

o el

mic

ro v

a a

16M

Hz

y el

max

imo

pree

scal

ado

37

//es

de

256

no n

os p

erm

ite h

acer

lo e

n un

a so

la in

terru

pcio

n po

r lo

que

hare

mos

que

salte

cad

a se

gund

o

38

//

y co

ntar

el n

umer

o de

inte

rrup

cion

es p

ara

hace

r lo

que

quer

emos

en

la se

gund

a. P

ara

que

salte

cad

a

39

//

segu

ndo

el n

umer

o de

cic

los s

era

16*1

0^6/

256=

6250

0.

40

41

//#d

efin

e co

nfig

2 T2

_ON

| T2

_PS_

1_1

42 //

#def

ine

perio

d2 1

59

43

44 #

endi

f /*

_TIM

ER_H

*/

45

46 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

47 E

nd o

f File

48

*/

Page 97: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 96

10.8. Código señales_digitales_entrada.c 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

EI

6

7

@Fi

le N

ame

8

sen

al_d

igita

l_en

trada

.c

9

10

@D

escr

iptio

n 1

1 E

n es

te a

rchi

vo se

con

figur

an la

s señ

ales

dig

itale

s de

entra

da q

ue e

n co

ncre

to so

n 3.

1

2 *

La

prim

era

es la

que

nos

indi

ca si

la ll

ave

se e

ncue

ntra

en

la p

osic

ion

1.

13

* L

a se

gund

a es

igua

l sal

vo q

ue e

n es

te c

aso

es la

pos

icio

n 2.

1

4 *

La

terc

era

es e

l sen

sor d

e hi

drog

eno

en c

aso

de q

ue e

ste

sea

digi

tal.

15

* E

l pro

blem

a es

que

toda

s est

as se

ñale

s res

pond

en a

l mis

mo

vect

or d

e in

terru

pcio

n po

r lo

tant

o cu

ando

salte

est

a in

terru

pcio

n 1

6 *

se d

eber

á id

entif

icar

cua

l de

todo

s los

pin

es e

s el q

ue h

a he

cho

salta

r la

inte

rrup

cion

y d

epen

dien

do c

uál s

ea a

ctua

r de

una

form

a 1

7 *

u o

tra.

18

1

9 @

Aut

or

20

P

ablo

Med

rano

2

1

22

@Fe

cha

23

1

1 D

icie

mbr

e 20

16

24

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

5

26

#def

ine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

2

7 #i

nclu

de <

plib

.h>

28

Page 98: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 97

29 in

t pos

icio

n;

//

Var

iabl

e qu

e in

dica

la p

osic

ion

de la

llav

e 3

0 in

t arr

anqu

e =

0;

//Var

iabl

e qu

e di

ce s

i la

pila

est

a ar

ranc

ando

o n

o 3

1 in

t enc

endi

do;

//

Var

iabl

e qu

e in

dica

si se

tien

e qu

e se

guir

el p

roce

so d

e en

cend

ido

32

int p

osic

ion_

ante

rior2

= 0

;

//Var

iabl

e pa

ra sa

ber s

i pas

amos

de

posi

cion

2 a

pos

icio

n 1

real

izar

el c

iclo

de

apag

ado

33

int j

= 0

;

/

/Var

iabl

e pa

ra e

l buc

le fo

r 3

4

35

/*Es

tas d

os fu

ncio

nes s

on si

mila

res.

Su o

bjet

ivo

es c

onfig

urar

com

o en

trada

s dig

itale

s la

s pos

icio

nes d

e la

3

6 ll

ave.

Ade

mas

act

ivam

os la

s int

erru

pcio

nes*

/ 3

7 vo

id in

iSen

sorP

os1(

void

){

38

3

9

IEC

1bits

.CN

IE =

0;

//Des

habi

litar

inte

rrupc

ione

s del

CN

mie

ntra

s lo

conf

igur

amos

4

0

41

C

NC

ON

bits

.ON

= 0

;

//

Deh

abili

tar C

hang

e N

otic

e m

odul

e 4

2

CN

ENbi

ts.C

NEN

2 =

1;

//

Hab

ilita

r el s

enso

r que

vam

os a

util

izar

4

3

AD

1PC

FGbi

ts.P

CFG

0 =

1;

44

C

NPU

Ebits

.CN

PUE2

= 1

;

//Hab

ilita

r pul

l up

45

4

6

PO

RTB

;

//L

eer P

OR

TB p

ara

elim

inar

alg

un c

ambi

o an

terio

r si l

o hu

bies

e 4

7

48

IP

C6b

its.C

NIP

= 5

;

//F

ijar p

riorid

ad d

e in

terr

upci

on e

n 5

por e

jem

plo

49

5

0

IFS1

bits

.CN

IF =

0;

//Bor

rar e

l fla

g de

inte

rrup

cion

5

1

IEC

1bits

.CN

IE =

1;

//Hab

ilita

r int

erru

pcio

nes d

e C

N

52

C

NC

ON

bits

.ON

= 1

;

//

Hab

ilita

r Cha

nge

Not

ice

mod

ule

53

54

re

turn

; 5

5 }

56

Page 99: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 98

57 v

oid

iniS

enso

rPos

2(vo

id){

5

8

59

IE

C1b

its.C

NIE

= 0

;

//D

esha

bilit

ar in

terru

pcio

nes d

el C

N m

ient

ras l

o co

nfig

uram

os

60

6

1

CN

CO

Nbi

ts.O

N =

0;

//H

abili

tar C

hang

e N

otic

e m

odul

e 6

2

CN

ENbi

ts.C

NEN

3 =

1;

//H

abili

tar e

l sen

sor q

ue v

amos

a u

tiliz

ar

63

A

D1P

CFG

bits

.PC

FG1

= 1;

6

4

CN

PUEb

its.C

NPU

E3 =

1;

//H

abili

tar p

ull u

p 6

5

66

P

OR

TB;

//Lee

r PO

RTB

par

a el

imin

ar a

lgun

cam

bio

ante

rior s

i lo

hubi

ese

67

6

8

IPC

6bits

.CN

IP =

5;

//Fija

r prio

ridad

de

inte

rrup

cion

en

5 po

r eje

mpl

o 6

9

70

IF

S1bi

ts.C

NIF

= 0

;

//B

orra

r el f

lag

de in

terr

upci

on

71

IE

C1b

its.C

NIE

= 1

;

//H

abili

tar i

nter

rupc

ione

s de

CN

7

2

CN

CO

Nbi

ts.O

N =

1;

73

74

re

turn

; 7

5 }

76

7

7 vo

id in

iSen

sorH

idro

geno

(voi

d){

78

IE

C1b

its.C

NIE

= 0

;

//D

esha

bilit

ar in

terru

pcio

nes d

el C

N m

ient

ras l

o co

nfig

uram

os

79

8

0

CN

CO

Nbi

ts.O

N =

0;

//D

ehab

ilita

r Cha

nge

Not

ice

mod

ule

81

C

NEN

bits

.CN

EN4

= 1;

//H

abili

tar e

l sen

sor q

ue v

amos

a u

tiliz

ar

82

A

D1P

CFG

bits

.PC

FG2

= 1;

8

3

CN

PUEb

its.C

NPU

E4 =

1;

//H

abili

tar p

ull u

p 8

4

Page 100: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 99

85

PO

RTB

;

//L

eer P

OR

TB p

ara

elim

inar

alg

un c

ambi

o an

terio

r si l

o hu

bies

e 8

6

87

IP

C6b

its.C

NIP

= 5

;

//F

ijar p

riorid

ad d

e in

terr

upci

on e

n 5

por e

jem

plo

88

8

9

IFS1

bits

.CN

IF =

0;

//Bor

rar e

l fla

g de

inte

rrup

cion

9

0

IEC

1bits

.CN

IE =

1;

//Hab

ilita

r int

erru

pcio

nes d

e C

N

91

92

C

NC

ON

bits

.ON

= 1

;

//

Hab

ilita

r Cha

nge

Not

ice

mod

ule

93

94

re

turn

; 9

5 }

96

9

7 /*

En la

inte

rrup

cion

tene

mos

que

leer

los p

uerto

s y v

er c

ual h

a si

do e

l cam

bio

que

se h

a pr

oduc

ido

ya q

ue v

a a

salta

r 9

8 ta

nto

en fl

anco

de

subi

da c

omo

de b

ajad

a de

los d

os p

ines

. En

func

ion

del c

ambi

o qu

e se

hay

a pr

oduc

ido

pasa

ria a

una

pos

icio

n 9

9 u

otra

. En

conc

reto

tene

mos

3 p

osic

ione

s: la

0 q

ue e

s de

espe

ra q

ue p

asem

os a

alg

una

de la

s otra

s dos

. Par

a pa

sar a

est

a po

sici

on

100

las o

tras d

os d

eben

ser c

ero

ya q

ue s

i una

es c

ero

y la

otra

no

debe

ria e

star

en

esa

posi

cion

. La

posi

cion

1 e

s en

la q

ue so

lo

101

se u

tiliz

a la

bat

eria

. La

posi

cion

2 e

s en

la q

ue ta

mbi

en se

util

iza

la p

ila d

e co

mbu

stib

le. C

uand

o se

act

ive

esta

pos

icio

n

102

pon

drem

os a

1 la

var

iabl

e ar

ranq

ue y

a qu

e la

pila

est

ara

arra

ncan

do, e

l con

tado

r del

Tim

er 5

a c

ero

para

que

cue

nte

dos s

egun

dos

103

y a

ctiv

ar e

l pul

so d

el in

terru

ptor

*/

104

10

5 vo

id _

_ISR

(_C

HA

NG

E_N

OTI

CE_

VEC

TOR

, ipl

5) C

hang

eNot

ice_

Han

dler

(voi

d){

106

10

7

for(

j=0;

j<64

000;

j++)

{

//D

elay

de

20m

s par

a ev

itar l

os re

bote

s. El

mic

ro fu

ncio

na a

16M

Hz

por l

o ta

nto

10

8

//re

aliz

a 16

*10^

6 ci

clos

por

segu

ndo.

Si q

uere

mos

que

sea

n 20

ms-

>16*

10^6

*0,0

2=32

0000

10

9

//y

si c

ada

bucl

e fo

r tar

de u

nos 5

cic

los 3

2000

0/5=

6400

0

110

11

1

}

Page 101: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 100

112

113

if

((PO

RTB

bits

.RB

0 ==

0) &

& (P

OR

TBbi

ts.R

B1

== 0

)){

//

Si re

cibe

un

flanc

o y

se le

e un

cer

o en

am

bas p

osic

ione

s pas

o a

la p

osic

ion

0 11

4

p

osic

ion

= 0;

11

5

116

}

11

7

11

8

if((

POR

TBbi

ts.R

B0

== 1

) &&

(PO

RTB

bits

.RB

1 ==

0))

{

//Si

reci

be u

n fla

nco

y se

lee

un u

no e

n el

sens

or d

e la

pos

icio

n 1

paso

a

119

//

posi

cion

1

120

pos

icio

n =

1;

121

}

12

2

12

3

if(P

OR

TBbi

ts.R

B1

== 1

){

//S

i rec

ibo

un fl

anco

y se

lee

un u

no e

n el

sens

or d

e la

pos

icio

n 2

pued

e qu

e

124

//h

aya

sido

de

la ll

ave

y pa

so o

pos

icio

n 2

y si

ya

esta

ba e

n la

pos

icio

n 2

no h

ago

nada

12

5

126

if(

posi

cion

==

2){

/

/Si y

a es

taba

en

posi

cion

2 n

o ha

go n

ada

porq

ue h

abra

sido

un

cam

bio

en e

l sen

sor d

e hi

drog

eno

127

12

8

}

12

9

e

lse{

//Si n

o es

taba

en

posi

cion

2

130

posi

cion

= 2

;

//P

aso

a po

sici

on 2

13

1

C

onve

rtido

rDC

ON

();

//Enc

iend

o el

con

verti

dor

132

arra

nque

= 1

;

//C

omie

nza

el a

rran

que

133

ence

ndid

o =

1;

//C

omie

nza

el e

ncen

dido

13

4

po

sici

on_a

nter

ior2

= 1

;

//

La p

osic

ion

ante

rior 2

pas

a a

ser p

or si

cam

bia

de p

osic

ion

y ha

y qu

e ap

agar

la p

ila

135

}

136

}

13

7

Page 102: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 101

138

if

(PO

RTB

bits

.RB

2 ==

1){

/

/Si r

ecib

e un

flan

co y

se le

e un

uno

en

el se

nsor

de

hidr

ogen

o se

enc

iend

e la

ala

rma

139

Ala

rmaH

idro

geno

();

140

}

14

1

14

2

PO

RTB

;

//L

eer P

OR

TB p

ara

elim

inar

el c

ambi

o qu

e se

ha

prod

ucid

o 14

3

IFS1

bits.

CN

IF =

0;

//Elim

inar

el f

lag

de in

terr

upci

on

144

14

5

retu

rn;

146

} 14

7

148

14

9

150

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

15

1 E

nd o

f File

15

2 *

/

Page 103: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 102

10.9. Código señales_digitales_salida.c 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

EI

6

7

@Fi

le N

ame

8

sen

al_d

igita

l_sa

lida.

c 9

1

0 @

Des

crip

tion

11

En

este

arc

hivo

se c

onfig

uran

las s

eñal

es d

igita

les d

e sa

lida

y se

cre

an fu

ncio

nes p

ara

ence

nder

las y

apa

garla

s.

12

* E

stas

func

ione

s sim

plem

ente

mod

ifica

n el

val

or d

el b

it po

nien

dolo

a 1

si e

s ON

y a

0 si

es O

FF. S

e ha

n cr

eado

1

3 *

sola

men

te p

ara

que

se v

ea d

e fo

rma

mas

cla

ra lo

que

se e

sta

haci

endo

en

vez

de la

mod

ifica

cion

del

bit

de u

n re

gist

ro.

14

1

5 @

Aut

or

16

P

ablo

Med

rano

1

7

18

@Fe

cha

19

1

1 D

icie

mbr

e 20

16

20

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

1

22

#def

ine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

2

3 #i

nclu

de <

plib

.h>

24

2

5 /*

En la

s sig

uien

tes t

res f

unci

ones

lo q

ue se

hac

e es

: en

la p

rimer

a co

nfig

urar

un

pin

digi

tal c

omo

salid

a;

26

en

la se

gund

a po

ner a

uno

est

e pi

n pa

ra q

ue e

ncie

nda

un le

d ve

rde;

y e

n la

terc

era

pone

r el p

in a

cer

o 2

7 p

ara

que

se a

pagu

e el

led

verd

e.*/

2

8

Page 104: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 103

29 v

oid

iniL

edV

erde

(voi

d){

30

P

OR

TSet

Pins

Dig

italO

ut(I

OPO

RT_

B, B

IT_1

3);

31

} 3

2

33

void

Led

Ver

deO

N(v

oid)

{ 3

4

PO

RTB

bits

.RB

13 =

1;

35

} 3

6

37

void

Led

Ver

deO

FF(v

oid)

{ 3

8

PO

RTB

bits

.RB

13 =

0;

39

} 4

0

41

/*En

est

as tr

es fu

ncio

nes s

e ha

ce lo

mis

mo

que

en la

s tre

s ant

erio

res p

ero

para

otro

pin

al q

ue se

con

ecta

ra

42

otro

led

de c

olor

rojo

*/

43

4

4 vo

id in

iLed

Roj

o(vo

id){

4

5

PO

RTS

etPi

nsD

igita

lOut

(IO

POR

T_B

, BIT

_14)

; 4

6 }

47

4

8 vo

id L

edR

ojoO

N(v

oid)

{ 4

9

PO

RTB

bits

.RB

14 =

1;

50

} 5

1

52

void

Led

Roj

oOFF

(voi

d){

53

P

OR

TBbi

ts.R

B14

= 0

; 5

4 }

55

Page 105: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 104

56

/*En

est

a fu

ncio

n se

con

figur

a ot

ro p

in d

e sa

lida

que

se v

a a

utili

zar p

ara

prod

ucir

la se

ñal d

e do

s se

gund

os

57

cua

ndo

se a

rran

ca la

pila

. Se

pond

ra a

uno

cua

ndo

se re

ciba

la se

ñal d

e qu

e la

llav

e pa

sa a

la p

osic

ion

2 5

8 y

a c

ero

cuan

do sa

lte la

inte

rrup

cion

del

tim

er 5

que

cue

nta

dos s

egun

dos*

/ 5

9 vo

id in

iPul

soIn

terr

upto

r(vo

id){

6

0

PO

RTS

etPi

nsD

igita

lOut

(IO

POR

T_B

, BIT

_15)

; 6

1 }

62

6

3 /*

Cua

ndo

pone

mos

el p

ulso

del

inte

rrup

tor e

n 1

adem

as d

e ca

mbi

ar e

l bit

se a

ctiv

a la

inte

rrup

cion

del

tim

er 5

que

es l

a 6

4 e

ncar

gada

de

apag

ar e

l pul

so c

uand

o pa

sen

los d

os se

gund

os y

se p

one

a 0

el c

onta

dor d

e es

te ti

mer

par

a qu

e cu

ente

los 2

6

5 se

gund

os c

orre

ctam

ente

*/

66

void

Pul

soIn

terr

upto

rON

(voi

d){

67

T

MR

5 =

0;

68

IE

C0b

its.T

5IE

= 1;

6

9

PO

RTB

bits

.RB

15 =

1;

70

} 7

1

72

void

Pul

soIn

terr

upto

rOFF

(voi

d){

73

P

OR

TBbi

ts.R

B15

= 0

; 7

4 }

75

7

6 /*

Para

la e

lect

rova

lvul

a ha

cem

os lo

mis

mo

que

en lo

s cas

os a

nter

iore

s. Se

est

able

ce e

l pin

com

o di

gita

l y d

e sa

lida

y se

cre

an

77

dos

func

ione

s par

a po

ner a

1 o

a 0

ese

bit.

*/

78

void

iniE

lect

rova

lvul

a(vo

id){

7

9

PO

RTS

etPi

nsD

igita

lOut

(IO

POR

T_E,

BIT

_5);

80

} 8

1

Page 106: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 105

82 v

oid

Ele

ctro

valv

ulaO

N(v

oid)

{ 8

3

PO

RTE

bits

.RE5

= 1

; 8

4 }

85

8

6 vo

id E

lect

rova

lvul

aOFF

(voi

d){

87

P

OR

TEbi

ts.R

E5 =

0;

88

} 8

9

90

/*Se

pro

cede

de

igua

l man

era

para

la se

ñal d

el c

onve

rtido

rDC

est

able

cien

do la

seña

l dig

ital d

e sa

lida

y cr

eand

o la

s dos

func

ione

s 9

1 q

ue m

odifi

can

el b

it*/

92

void

iniC

onve

rtid

orD

C(v

oid)

{ 9

3

PO

RTS

etPi

nsD

igita

lOut

(IO

POR

T_E,

BIT

_6);

94

} 9

5

96

void

Con

vert

idor

DC

ON

(voi

d){

97

P

OR

TEbi

ts.R

E6 =

1;

98

} 9

9

100

void

Con

vert

idor

DC

OFF

(voi

d){

101

P

OR

TEbi

ts.R

E6 =

0;

102

} 10

3

104

10

5

106

10

7 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

108

End

of F

ile

109

*/

Page 107: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 106

10.10. Código pwm.c

1 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***

*/

2 /*

* D

escr

iptiv

e Fi

le N

ame

3

4

@C

ompa

ny

5

CEI

6

7

@

File

Nam

e 8

p

wm

.c

9

10

@D

escr

iptio

n 11

En

este

arc

hivo

se re

aliz

a la

con

figur

acio

n de

l PW

M. S

e ut

iliza

el t

imer

2 y

se p

uede

fija

r el v

alor

has

ta e

l que

tien

e qu

e co

ntar

12

* e

ste

timer

en

func

ion

de su

frec

uenc

ia p

ara

esta

blec

er la

frec

uenc

ia d

el P

WM

13

14

@

Aut

or

15

Pab

lo M

edra

no

16

17

@Fe

cha

18

11

Dic

iem

bre

2016

19

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

20

21

#de

fine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

22

#in

clud

e <p

lib.h

> 23

24

int i

ndic

eVI;

25 fl

oat t

abla

VI[6

8];

26

Page 108: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 107

27 /*

En e

sta

func

ion

se c

onfig

ura

el P

WM

. Hay

que

fija

r el d

uty

cycl

e in

icia

l y e

l val

or d

el ti

mer

has

ta e

l que

tien

e qu

e co

ntar

28

par

a qu

e el

PW

M v

aya

a la

frec

uenc

ia d

esea

da. A

dem

as se

bor

ra e

l fla

g de

inte

rrup

cion

y se

fija

la p

riorid

ad d

e la

inte

rrup

cion

. 29

En

la in

terr

upci

on o

en

otro

pun

to d

el p

rogr

ama

hay

que

mod

ifica

r el r

egis

tro O

C2R

S co

n el

nue

vo d

uty

cycl

e qu

e se

qui

era

dar.

30 E

ste

valo

r se

actu

aliz

ara

desp

ues d

e te

rmin

ar u

n ci

clo

com

plet

o de

l PW

M. *

/ 31

32

voi

d in

iPW

M (v

oid)

{ 33

O

C2C

ON

bits

.ON

= 0

;

//Se

des

activ

a el

Out

put C

ompa

re q

ue v

amos

a u

tiliz

ar p

ara

conf

igur

arlo

34

O

C2C

ON

bits

.OC

32 =

0;

//U

sam

os u

n tim

er d

e 16

bits

si se

pon

e a

1 pa

ra u

sar u

no d

e 32

hay

que

con

figur

ar d

os

timer

s 35

/

/de

16 b

its p

ara

que

func

ione

n ju

ntos

36

O

C2C

ON

bits

.OC

TSEL

= 0

;

//U

sam

os e

l Tim

er 2

par

a el

PW

M. S

i se

quie

re u

sar e

l 3 se

pon

e a

1.

37

OC

2CO

Nbi

ts.O

CM

= 0

b110

;

//S

elec

cion

amos

el m

odo

de fu

ncio

nam

ient

o PW

M y

Fau

lt pi

n di

sabl

ed

38

OC

2R =

0;

//D

uty

cycl

e in

icia

l 39

P

R2

= 15

9;

//Val

or d

el p

erio

do d

el ti

mer

2 pa

ra q

ue te

nga

una

frecu

enci

a de

100

KH

z 40

41

IFS

0bits

.OC

2IF

= 0;

/

/Bor

ram

os e

l fla

g de

inte

rrup

cion

42

I

EC0b

its.O

C2I

E =

0;

//N

o ac

tivam

os la

inte

rrup

cion

del

PW

M

43

//IP

C2b

its.O

C2I

P =

7;

//Fija

mos

la p

riorid

ad d

e la

inte

rrup

cion

44

O

C2C

ON

bits

.ON

= 1

;

//Se

aac

tiva

el O

utpu

t Com

pare

45

46

ret

urn;

47

}

48

49 /*

En la

inte

rrupc

ion

actu

aliz

amos

el v

alor

del

dut

y cy

cle

y bo

rram

os e

l fla

g de

inte

rrup

cion

*/

50

Page 109: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 108

51 /*

void

__I

SR(_

OU

TPU

T_C

OM

PAR

E_2_

VEC

TOR

, ipl

7) O

C2_

IntH

andl

er (v

oid)

{ 52

53

OC

2RS

= ((

1-ta

blaV

I[in

dice

VI]

/48.

0)*3

9);

//

Cal

cula

mos

el d

uty

cycl

e 54

55

IFS

0bits

.OC

2IF

= 0;

//B

orra

mos

el f

lag

de in

terr

upci

on

56

57 }

*/

58

59 /*

***

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**

60 E

nd o

f File

61

*/

Page 110: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 109

10.11. Código escribir_memoria.c 1

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

2

/**

Des

crip

tive

File

Nam

e 3

4

@

Com

pany

5

C

ompa

ny N

ame

6

7

@Fi

le N

ame

8

file

nam

e.c

9

10

@Su

mm

ary

11

Brie

f des

crip

tion

of th

e fil

e.

12

13

@D

escr

iptio

n 14

D

escr

ibe

the

purp

ose

of th

is fi

le.

15 *

/ 16

/* *

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

* */

17

18

#de

fine

_SU

PPR

ESS_

PLIB

_WA

RN

ING

19

#in

clud

e <p

lib.h

> 20

21

uns

igne

d in

t NV

MU

nloc

k (u

nsig

ned

int n

vmop

) {

22

23

u

nsig

ned

int s

tatu

s;

24

25

/

/ Sus

pend

or D

isabl

e al

l Int

erru

pts

26

//a

sm v

olat

ile (?

di %

0? :

?=r?

(sta

tus)

); 27

I

NTD

isabl

eInt

erru

pts(

); 28

Page 111: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Anexos

Escuela Técnica Superior de Ingenieros Industriales (UPM) 110

29

// E

nabl

e Fl

ash

Writ

e/Er

ase

Ope

ratio

ns a

nd S

elec

t 30

/

/ Fla

sh o

pera

tion

to p

erfo

rm

31

NV

MC

ON

SET

= 0x

4004

; 32

33

// W

rite

Key

s 34

N

VM

KEY

= 0

xAA

9966

55;

35

NV

MK

EY =

0x5

5669

9AA

; 36

37

// S

tart

the

oper

atio

n us

ing

the

Set R

egis

ter

38

NV

MC

ON

SET

= 0x

8000

; 39

40

// W

ait f

or o

pera

tion

to c

ompl

ete

41

w

hile

(NV

MC

ON

& 0

x800

0);

42

43

/

/ Res

tore

Inte

rrup

ts

44

IN

TEna

bleI

nter

rupt

s();

45

46

47

// R

etur

n N

VM

ERR

and

LV

DER

R E

rror

Sta

tus B

its

48

ret

urn

(NV

MC

ON

& 0

x300

0);

49 }

50

51

uns

igne

d in

t NV

MW

rite

Wor

d (v

oid*

add

ress

, uns

igne

d in

t dat

a) {

52

u

nsig

ned

int r

es;

53 //

Loa

d da

ta in

to N

VM

DA

TA re

gist

er

54

NV

MD

ATA

= d

ata;

55

// L

oad

addr

ess t

o pr

ogra

m in

to N

VM

AD

DR

regi

ster

56

N

VM

AD

DR

= (u

nsig

ned

int)

addr

ess;

57

// U

nloc

k an

d W

rite

Wor

d

58

res =

NV

MU

nloc

k (0

x400

1);

Page 112: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos

Sistema de control electrónico de un sistema de pila de combustible

Pablo Medrano Gastañaga 111

59

// R

etur

n R

esul

t 60

re

turn

res;

61

}

63 u

nsig

ned

int N

VM

Eras

ePag

e(vo

id*

addr

ess)

{

64

uns

igne

d in

t res

; 65

// S

et N

VM

AD

DR

to th

e St

art A

ddre

ss o

f pag

e to

era

se

66

NV

MA

DD

R =

(uns

igne

d in

t) ad

dres

s;

67 //

Unl

ock

and

Eras

e Pa

ge

68

res =

NV

MU

nloc

k(0x

4004

); 69

//

Ret

urn

Res

ult

70

retu

rn re

s;

71 }

Page 113: SISTEMA DE CONTROL ELECTRÓNICO DE UN …oa.upm.es/45913/1/TFG_PABLO_MEDRANO_GASTAÑAGA.pdf330412 – Dispositivos de control. 330603 – Motores eléctricos. 331107 – Instrumentos