PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE ESCUELA DE INGENIERIA
CONTROL ÓPTIMO DE LA ENERGÍA EN UN VEHÍCULO HÍBRIDO
ELÉCTRICO EMPLEANDO REDES NEURONALES
JORGE ALEJANDRO MORENO DE LA CARRERA
Tesis para optar al grado de Magíster en Ciencias de la Ingeniería
Profesor Supervisor: JUAN W. DIXON ROJAS
Santiago de Chile, Junio de 2004
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE ESCUELA DE INGENIERIA Departamento de Ingeniería Eléctrica
CONTROL ÓPTIMO DE LA ENERGÍA EN UN VEHÍCULO HÍBRIDO
ELÉCTRICO EMPLEANDO REDES NEURONALES
JORGE ALEJANDRO MORENO DE LA CARRERA
Tesis presentada a la Comisión integrada por los profesores:
JUAN W. DIXON ROJAS
ALDO CIPRIANO ZAMORANO
JOSÉ RODRÍGUEZ PÉREZ
JOSÉ DEL VALLE LLADSER
Para completar las exigencias del grado de Magíster en Ciencias de la Ingeniería
Santiago de Chile, Junio de 2004
ii
A mis Padres, por su apoyo, cariño
y educación.
iii
AGRADECIMIENTOS
Quiero agradecer a mi profesor guía, Juan Dixon Rojas, por su enorme
gratitud y constante apoyo.
En segundo lugar, agradezco al proyecto Fondecyt Nº 1020982 por el
financiamiento otorgado para desarrollar la tesis.
Finalmente, quiero agradecer a Macarena de Toro, por su cariño; mi
hermana Poly; mis “Partners”, Matías Negrete, Vicente Iragüen, Andrés Pimentel,
Manuel Larraín, José Luis Manieu y Ricardo Ávila por los momentos vividos durante la
época universitaria; y a mis amigos de la infancia Cristián Bustamante, Rodrigo Herrera
y Francisco Benavides.
iv
INDICE GENERAL
Pág.
DEDICATORIA………………………………………………………............................ii
AGRADECIMIENTOS .................................................................................................. iii
INDICE GENERAL ....................................................................................................... iv
INDICE DE TABLAS ..................................................................................................viii
INDICE DE FIGURAS................................................................................................... ix
RESUMEN..................................................................................................................... xii
ABSTRACT …………………………………………………………………………..xiii
I. INTRODUCCIÓN.................................................................................................. 1
1.1 Introducción ................................................................................................... 1
1.1.1 Historia de los Vehículos Eléctricos................................................ …1
1.1.2 Topologías ....................................................................................... …4
1.1.3 Vehículos Eléctricos en la Universidad Católica............................. …9
1.2 Alcances de la Tesis ..................................................................................... 11
1.3 Organización de la Tesis .............................................................................. 12
II. COMPONENTES DEL SISTEMA DE TRACCIÓN DE LA
CAMIONETA CHEVROLET LUV .................................................................... 14
2.1 Descripción del Motor.................................................................................. 14
2.2 Descripción de la Fuente Primaria de Energía............................................. 15
2.3 Descripción del Inversor .............................................................................. 17
2.4 Descripción de la Fuente Auxiliar de Energía ............................................. 18
2.5 Descripción del Convertidor DC-DC........................................................... 21
2.6 Estrategia Actual de Control de Carga......................................................... 22
v
2.7 Conclusión.................................................................................................... 25
III. MODELACIÓN DEL CONVERTIDOR BUCK – BOOST................................ 26
3.1 Introducción ................................................................................................. 26
3.2 Análisis de la Topología Buck........................................................................ 27
3.2 Análisis de la Topología Boost....................................................................... 31
IV. CONTROL ÓPTIMO ........................................................................................... 36
4.1 Objetivos del Control Óptimo...................................................................... 36
4.2 Condiciones de Optimalidad ........................................................................ 37
4.2.1 Sistemas de una Etapa……………………………………………….37
4.2.2 Sistemas Multietapa............................................................................39
4.3 Optimización Numérica - Método del Gradiente………………………..... 42
V. CONTROL ÓPTIMO DE FLUJOS DE ENERGÍA EN
VEHÍCULOS HÍBRIDOS (HEV)........................................................................ 45
5.1 Reducción del Consumo de Energía en Vehículos. ..................................... 45
5.2 Planteamiento del Modelo............................................................................ 47
5.3 Desarrollo de las Condiciones de Optimalidad............................................ 49
5.4 Solución Numérica - Resultados.................................................................. 52
VI. ENTRENAMIENTO DE REDES NEURONALES PARA
APROXIMAR EL CONTROL ÓPTIMO ............................................................ 55
6.1 Introducción a la Identificación de Sistemas ............................................... 55
6.1 Introducción a Redes Neuronales Multicapa ............................................... 58
6.1.1 Concepto de Neurona………………………………………………..58
6.1.2 Redes Neuronales Multicapa……………………………………......60
6.1.3 Elección de la arquitectura de la Red………………………………..61
6.2 Entrenamiento de Redes Neuronales ........................................................... 62
6.3 Resultados de la Aproximación de la Función de Control Óptimo…….......64
vi
VII. IMPLEMENTACIÓN PRÁCTICA ..................................................................... 67
7.1 Introducción ................................................................................................. 67
7.2 Características y selección del Microcontrolador ........................................ 68
7.2.1 Selección del Microprocesador ........................................................... 68
7.2.2 Características del DSP TMS320F241…...........................................69
7.3 Software del Controlador ............................................................................. 72
7.3.1 Módulo de Inicialización del Sistema……………………………….74
7.3.2 Módulo de Interrupción de Timer…………………………………...75
VIII. RESULTADOS EXPERIMENTALES................................................................ 80
8.1 Pruebas Control de Corriente ....................................................................... 80
8.2 Pruebas de Red Neuronal ............................................................................. 82
8.3 Resultados de Eficiencia .............................................................................. 83
IX. CONCLUSIONES Y TRABAJO FUTURO........................................................ 87
9.1 Conclusiones ................................................................................................ 87
9.2 Trabajo Futuro.............................................................................................. 87
BIBLIOGRAFIA ........................................................................................................... 89
Anexo nº 1: Análisis de eficiencia del convertidor buck ............................................... 93
Anexo nº 2: Análisis de eficiencia del convertidor boost .............................................. 97
Anexo nº 3:Programa de simulación método del gradiente ......................................... 102
Anexo nº 4: Detalle de resultados de simulaciones ..................................................... 112
Anexo nº 5: Teorema de aproximación universal de funciones................................... 113
Anexo nº 6: Detalle de la red neuronal entrenada........................................................ 114
Anexo nº 7: Tabla de Validación red neuronal ............................................................ 116
vii
Anexo nº 8: formato numérico digital qm,n (qn)............................................................ 117
Anexo nº 9: Programa Implementado en el dsp........................................................... 120
Anexo nº 10: Detalle de Datos Pruebas en Ciudad ...................................................... 154
viii
INDICE DE TABLAS
Pág.
Tabla 2.1: Comparación de Ultracapacitores con otras fuentes de
almacenamiento de Energía ......................................................................... 20
Tabla 2.2: Resultados de pruebas en circuito de ciudad. ............................................... 24
Tabla 7.1: Características del microprocesador TMS320F241...................................... 69
Tabla 8.1: Resultado de pruebas en circuito de ciudad.................................................. 85
Tabla 8.2: Resultado de pruebas en circuito de ciudad - Comparación
de las estrategias de control.......................................................................... 85
Tabla A4.1: Simulación de la descarga en las baterías con sistema de
control óptimo y control con control de carga. .......................................... 112
Tabla A6.1: Coeficientes de la Red Neuronal obtenidos con MATLAB .................... 114
Tabla A6.2: Representación de los coeficientes en formato Q15 en el DSP ............... 114
Tabla A6.3: Coeficientes reales de la Red Implementada en el DSP. ......................... 115
Tabla A10.1: Resultado de pruebas en circuito de ciudad utilizando
Sistema de Control con Redes Neuronales. ............................................... 154
Tabla A10.2: Resultado de pruebas en circuito de ciudad utilizando
Sistema de Control de Carga de los Ultracapacitores. ............................... 155
Tabla A10.3: Resultado de pruebas en circuito de ciudad utilizando
Sistema con Regeneración en Baterías. ..................................................... 155
Tabla A10.4: Resultado de pruebas en circuito de ciudad utilizando
Sistema sin Regeneración. ......................................................................... 156
ix
INDICE DE FIGURAS
Pag.
Figura 1.1: Vehículo Eléctrico ......................................................................................... 4
Figura 1.2: Vehículo Híbrido Serie.................................................................................. 6
Figura 1.3: Vehículo Híbrido Paralelo ............................................................................. 7
Figura 2.2: Motor Brushless DC en la Camioneta LUV................................................ 15
Figura 2.3: Característica de Carga de las Baterías........................................................ 16
Figura 2.4: Ubicación de Baterías en el Vehículo.......................................................... 17
Figura 2.5: Ubicación del Inversor en el Vehículo ........................................................ 18
Figura 2.6: Ubicación de los Ultracapacitores en la Camioneta LUV........................... 19
Figura 2.7: Comparación de Ultracapacitores con otras fuentes de
almacenamiento de Energía ......................................................................... 20
Figura 2.8: Ubicación del Convertidor en el vehículo. .................................................. 21
Figura 2.9: Circuito de Potencia de la Camioneta LUV ................................................ 22
Figura 2.10: Diagrama de la Estrategia de Control........................................................ 23
Figura 2.11: Corrientes en el sistema durante parte del ciclo de manejo....................... 24
Figura 3.1: Sistema con Convertidor DC-DC................................................................ 26
Figura 3.2: Convertidor Buck ........................................................................................ 27
Figura 3.3: Estados del Convertidor Buck: (a) Voltaje y Corriente en la
Bobina, (b) IGBT en ON, (c) IGBT en OFF................................................ 28
Figura 3.5: Convertidor Boost ....................................................................................... 31
Figura 3.6: Estados del Convertidor Boost: (a) Voltaje y Corriente en
la Bobina, (b) IGBT encendido, (c) IGBT apagado..................................... 32
x
Figura 3.7: Modulación de Voltaje en un Convertidor Boost ideal y real. .................... 33
Figura 4.1: Diagrama de Flujo de un Sistema de una Etapa .......................................... 37
Figura 4.2: Diagrama de Flujo de un Sistema Multietapa ............................................. 39
Figura 4.3: Método del Gradiente .................................................................................. 43
Figura 5.1: (a) Potencia requerida por la camioneta LUV vs velocidad;
(b) Mejora porcentual en el consumo de potencia de la
camioneta vs reducción de parámetros de diseño (a 50
km/hr)........................................................................................................... 47
Figura 5.3: Resultado control óptimo sistema Buck–Boost lado de alta tensión........... 54
Figura 6.1: Sistema dinámico con entrada x(t) y salida y(t) .......................................... 55
Figura 6.2: Diagrama de Bloques – Identificación de Sistemas. ................................... 56
Figura 6.3: Identificación de sistemas - procedimiento ................................................. 57
Figura 6.4: Esquema de una Neurona ............................................................................ 59
Figura 6.6: Esquema de una “feedforward network” de seis entradas,
dos capas intermedias y dos salidas. ............................................................ 60
Figura 6.7: Esquema de la Red Neuronal Entrenada ..................................................... 65
Figura 6.8: Resultados Simulación de la Red para un recorrido específico................... 66
Figura 7.1: Diagrama Funcional del DSP TMS320F241............................................... 70
Figura 7.2: Diagrama Funcional de la CPU................................................................... 71
Figura 7.3: Diagrama de Bloques Modulo 1.................................................................. 75
Figura 7.4: Interpolación de datos de tabla. ................................................................... 76
Figura 7.5: Comparación entre el cálculo de la función tanh mediante
punto flotante e interpolación de tabla. ........................................................ 77
xi
Figura 7.6: Tiempos de cálculo. (a) Red Neuronal Completa, (b)
Neurona Capa Intermedia, (c) Neurona Capa de Salida .............................. 78
Figura 7.7: Diagrama de Bloques Interrupción de Timer .............................................. 79
Figura 8.1: Pruebas de control de corriente en el convertidor Buck-
Boost – Cambio en el escalón de 200 [A].................................................... 81
Figura 8.2: Resultado control de corriente en el convertidor Buck-Boost..................... 82
Figura 8.3: Validación de la Red Neuronal en el DSP................................................... 83
Figura 8.3: Mapa del Recorrido ..................................................................................... 84
Figura 8.4: Corrientes, voltajes y velocidad durante parte de un recorrido ................... 86
Figura A1.1: Convertidor Buck y sus modos de operación ........................................... 93
Figura A2.1: Convertidor Buck y sus modos de operación ........................................... 97
Figura A8.1: Correspondencia entre valores decimales y enteros para
representación digital en formato Q12. ....................................................... 118
Figura A8.2: Multiplicación de números en formato Q12. ........................................... 118
xii
RESUMEN
Se ha desarrollado y probado un sistema de manejo de energía para
vehículos híbridos eléctricos altamente eficiente. El sistema está basado en una red
neuronal, la cual minimiza el consumo de energía de las baterías. La red ha sido
entrenada con datos provenientes de simulaciones para distintas condiciones. El sistema
puede operar con diferentes fuentes de energía como celdas de combustible,
microturbinas, baterías de Zinc-Aire u otra fuente con escasa capacidad de recuperar
energía del frenado regenerativo, o escasa densidad de potencia, es decir, baja capacidad
para proveer los peak de corrientes en aceleraciones del vehículo. El vehículo
experimental utiliza un banco de baterías de plomo ácido, un banco de ultracapacitores y
un motor Brushless DC de 32 kW de potencia nominal y 53 kW de potencia máxima. El
sistema de control, implementado en un DSP, mide y guarda los siguientes parámetros:
voltaje de la fuente primaria, velocidad del vehículo, corrientes en ambos terminales
(fuente primaria y ultracapacitores) y el voltaje de los ultracapacitores. Tras numerosas
pruebas con el sistema de ultracapacitores se ha obtenido un aumento en la autonomía de
un 5.3%, utilizando la estrategia clásica de control de carga de los condensadores.
Ahora, cuando se utiliza el nuevo sistema de manejo de energía desarrollado, este índice
aumenta a un 8.9%. El automóvil utilizado es una camioneta Chevrolet LUV, la que fue
convertida en la Universidad Católica de Chile.
xiii
ABSTRACT
A highly efficient energy management system for hybrid electric vehicles
(HEV), using neural networks (NN), was developed and tested. The system minimizes
the energy requirement of the vehicle and can work with different primary power
sources like fuel-cells, microturbines, zinc-air batteries or other supply with poor ability
to recover energy from regenerative braking, or with scarce power capacity for fast
acceleration. The experimental HEV uses lead-acid batteries, an ultracapacitor bank, and
a brushless dc motor with a nominal power of 32 kW, and a peak power of 53 kW. The
control system, based on a DSP, measures and stores the following parameters: primary
source voltage, car speed, instantaneous currents in both terminals (primary source and
ultracapacitor), and actual voltage of the ultracapacitor. The increase in range with
ultracapacitors has been around 5.3 % in city tests, compared when only lead acid
batteries are used, but when optimal control with NN is used, this figure increases to 8.9
%. The car used for this experiment is a Chevrolet LUV truck, similar in shape and size
to a Chevrolet S-10, which was converted to an electric vehicle at the Universidad
Católica de Chile. Numerous experimental results under different conditions are
compared and discussed.
1
I. INTRODUCCIÓN
1.1 Introducción
El combustible fósil ha sido la fuente primaria de energía dominante en los
sistemas de transporte existentes. Sin embargo, existe conciencia de que las reservas de
este combustible en la tierra son limitadas. Si a esto agregamos la gran inestabilidad
existente en los últimos años en el medio oriente y la creciente preocupación por el
ecosistema, encontramos que ha comenzado a tomar gran relevancia la posibilidad de
utilizar formas alternativas de energía.
Hoy en día, la búsqueda de automóviles más eficientes ha impulsado el
desarrollo de los vehículos híbridos (HEV) y eléctricos (EV). Junto a ello, nuevos
elementos de tracción más eficientes, como motores de imanes permanentes (Brushless
DC); electrónica de potencia, IGBT’s; y fuentes de almacenamiento de energía tales
como celdas de combustible, baterías, baterías de alta densidad de potencia y
ultracapacitores.
1.1.1 Historia de los Vehículos Eléctricos
El desarrollo de los vehículos eléctricos comenzó a mediados del siglo XIX,
cuando en 1831 Joseph Henry construye el primer motor eléctrico. El primer prototipo
de auto eléctrico no tardó en aparecer y en 1835 un profesor holandés llamado Sibrandus
Stratingh elaboró el primer diseño, el cual fue construido Christopher Becker, su
asistente. Luego, en 1842, Thomas Davenport y Robert Davidson elaboran un modelo
más práctico y exitoso (ABOUT.COM, 2002).
Ya hacia finales del siglo XIX, Francia y Gran Bretaña habían logrado
grandes desarrollos, y los vehículos eléctricos eran una alternativa tanto o más tangible
que los vehículos a gasolina o vapor.
No fue hasta 1895 que Estados Unidos empezó a considerar el desarrollo de
este tipo de vehículos, después que en 1891 A. L. Ryker construyera un triciclo eléctrico
2
y William Morrison desarrollara un vehículo para seis personas. Luego de ello se
desarrolló la primera aplicación comercial a gran escala, cuando en 1897 se estableció
una compañía de taxis eléctricos en Nueva York.
A comienzos del siglo XX, Estados Unidos comenzó un fuerte desarrollo y
los vehículos eléctricos, a gasolina y vapor eran cada vez más populares. En esta época,
las ventajas que poseían los vehículos eléctricos sobre su homólogo a gasolina eran
notorias; entre ellas, la menor vibración, reducido mal olor y ruido, y la ausencia de
cambio de velocidades. Por otra parte, los vehículos a vapor necesitaban
aproximadamente 45 minutos para partir. Todo lo anterior llevó a que los vehículos
eléctricos fueran los que contaran con mayor demanda.
Fue hasta 1920 cuando los vehículos eléctricos tuvieron su mayor desarrollo.
En esos años Estados Unidos ya contaba con una red de caminos en buen estado entre
las distintas ciudades, por lo que una mayor autonomía se hizo necesaria. Por otra parte,
el descubrimiento de petróleo en Texas bajó los precios e hizo de éste un combustible
más accesible. Además, Charles Kettering inventó el motor eléctrico de partida en 1912
por lo que el problema del arranque de los motores a combustión fue solucionado.
Finalmente, la producción en masa de motores de combustión interna por parte de Henry
Ford hizo que los precios de los automóviles a gasolina fuesen notoriamente más
competitivos.
Durante el resto del siglo XX, el desarrollo de los vehículos eléctricos fue
prácticamente paralizado, y los automóviles a combustión tomaron su lugar debido
principalmente a su capacidad de almacenar grandes cantidades de energía.
Después de la década del 50 comenzó el desarrollo de la electrónica de
potencia. Con ello, la invención de los transistores de silicio en 1948 y posteriormente
en 1956 el transistor de disparo PNPN o tiristor. Estos inventos permitieron eliminar las
resistencias que controlan la velocidad de los motores de corriente continua y
reemplazarlas por Choppers.
3
Luego, a comienzos de los años 80 se inventan los Transistores de potencia y
los GTO, dando paso al desarrollo de inversores, elementos capaces de alimentar los
motores de corriente alterna desde una fuente de corriente continua, permitiendo así un
control más fino de su velocidad. Un desarrollo posterior fue la invención de las válvulas
IGBT y de los motores de imanes permanentes.
El problema ecológico empezó a plantearse ya en los años 70 y junto a ello,
a considerarse las altas emisiones producidas por los vehículos a combustión. Por otra
parte, como parte del desarrollo estratégico de Estados Unidos, empezó la búsqueda de
nuevas formas de energía para disminuir la dependencia del petróleo proveniente del
medio oriente.
En los últimos años, la reducción de contaminantes en las grandes ciudades y
la búsqueda de automóviles más eficientes ha impulsado nuevamente el desarrollo de los
vehículos eléctricos (EV) e híbridos (HEV). Junto a ello fuentes generadoras estáticas de
energía eléctrica, como las celdas de combustible, y fuentes de almacenamiento de
energía como baterías, baterías de alta densidad de potencia, ultracapacitores y flywheels
(Oman, 2002), (Wyczalek, 2001).
Además, los países desarrollados han tomado una actitud de fomento al uso
de energías renovables y no contaminantes. Por ejemplo, en el estado de California se
propuso un plan de incentivos o subvenciones con el fin de lograr que el 10% del parque
automotriz sea del tipo ZEV (Zero Emision Vehicles) para el año 2003 (California Air
Resources Borrad, 2002), (U.S. Departmen of Energy, Hyrbrid Electric Vehicle
Program). Sin embargo, los fabricantes de vehículos han demandado al estado, debido a
que consideraron poco práctica la medida. Hoy, el estado de California se encuentra en
una disputa legal y se está haciendo un replanteamiento de modo que se pueda cumplir
la normativa hacia fines del 2005. En Chile también se han dado pasos en esa dirección,
con medidas como la prohibición de la utilización de vehículos contaminantes para el
transporte de carga en el centro de Santiago.
4
1.1.2 Topologías
Actualmente existen dos líneas de desarrollo, los vehículos eléctricos (EV)
propiamente tal, y los vehículos híbridos eléctricos (HEV). El principio de
funcionamiento de los EV se caracteriza por su sencillez, y es prácticamente el mismo
que en sus comienzos. Este consiste en una fuente primaria de energía, baterías (Plomo
Ácido, Zinc Aire, Níquel Metal Hidruro, Litio Ión, de Sodio, etc) o celda de
combustible, y un elemento rotatorio motriz: motor de inducción, Brushless DC, etc. Se
ha agregado un conversor DC-AC (inversor) para la transformación de la energía
proveniente de la fuente y el control de velocidad del vehículo. En la figura 1.1 se ilustra
la dirección de los flujos de energía dentro de un EV.
Figura 1.1: Vehículo Eléctrico
Su principal ventaja es que permiten regeneración, es decir, recuperan parte
de la energía del vehículo en cada frenada. Si se compara con el vehículo de combustión,
los EV son más eficientes y sencillos, poseen menos partes móviles, requieren menos
mantención y no liberan emisiones. Sin embargo, son más caros y su autonomía es
limitada.
Los vehículos híbridos (HEV) combinan el motor de combustión interna de
un vehículo convencional con un conjunto de baterías y un motor eléctrico de un EV
5
obteniendo, producto de la combinación de ambos, un ahorro de combustible
significativo si lo comparamos con los vehículos convencionales. Esta combinación
otorga la amplia autonomía y rápida recarga esperada por los usuarios, además de un
gran beneficio ambiental al disminuir significativamente las emisiones y ser
notablemente más eficientes.
Las ventajas que poseen los HEV sobre los automóviles convencionales se
resumen en:
1. Capacidad de frenado regenerativo, permitiendo la recuperación de
energía en cada frenada y ayudando a minimizar las pérdidas.
2. El motor de combustión puede ser dimensionado para entregar la
potencia media, lo cual reduce significativamente su peso.
3. Aumento en la eficiencia de consumo de combustible.
4. Las emisiones son reducidas notablemente.
5. La utilización de materiales especiales ayudan a disminuir el peso
total del vehículo.
Dentro de los HEV se pueden encontrar diferentes configuraciones.
Básicamente, los vehículos híbridos combinan un sistema de almacenamiento de
energía, una unidad de potencia y un sistema de propulsión. Las alternativas para
sistemas de almacenamiento incluyen baterías, ultracapacitores y flywheels. Hoy las
baterías son la opción más utilizada, sin embargo no está todo definido y la investigación
se realiza en las distintas áreas. La unidad de potencia puede estar formada por motores
de inyección, turbinas de gas o celdas de combustible. La propulsión puede ser otorgada
completamente por un motor eléctrico, configuración serie, o en conjunto con el motor a
combustión, configuración paralela.
La eficiencia y nivel de emisiones de un vehículo híbrido depende de la
combinación de cada uno de los subsistemas, de cómo estos son integrados en un
sistema global, y de la estrategia de control que integra a cada uno de los subsistemas. A
6
modo de ejemplo, un vehículo híbrido que utiliza celdas de combustible alimentadas con
hidrógeno produce sólo agua como residuo.
Vehículo Híbrido – Configuración Serie: Un vehículo híbrido con
configuración serie posee una unidad de potencia, que puede estar formada por un
motor a combustión y un generador eléctrico, o una celda de combustible. Es ésta unidad
la encargada de producir la electricidad requerida por las baterías y el motor de tracción.
En un vehículo serie sólo un elemento es el que produce la potencia mecánica de
tracción. En él, la energía es transformada, en una primera instancia, de energía química
a energía mecánica, luego a energía eléctrica y finalmente nuevamente a energía
mecánica para mover las ruedas.
La figura 1.2 muestra el esquema típico de esta configuración. Además se
muestra la dirección de los flujos de energía dentro del vehículo.
Figura 1.2: Vehículo Híbrido Serie
Los beneficios de esta configuración se resumen en:
1. El motor nunca se detiene ya que debe preocuparse de mantener el
estado de carga de las baterías.
7
2. El motor a combustión se mantiene funcionando en una zona óptima,
lo que reduce las emisiones.
3. No necesita caja de transmisión.
Finalmente, una de las desventajas de esta configuración es que el motor a
combustión trabaja arduamente en mantener la carga de las baterías.
Vehículo Híbrido – Configuración Paralelo: A diferencia de la
configuración serie, en el vehículo paralelo la potencia mecánica de las ruedas es
proporcionadas por dos unidades de manera independiente. Esto es, un motor a
combustión, similar al de un vehículo convencional, y un motor eléctrico. A modo de
ejemplo, un vehículo paralelo puede utilizar la potencia del motor de combustión interna
para manejo en carretera y la potencia del motor eléctrico para la aceleración. La figura
1.3 muestra el esquema de tracción de esta topología junto a la dirección de los flujos de
energía producidos.
Los beneficios de esta configuración se resumen en:
1. El vehículo tiene más potencia debido a que tanto el motor a
combustión como el eléctrico proveen la potencia simultáneamente.
Figura 1.3: Vehículo Híbrido Paralelo
8
2. No necesitan un generador separado debido a que el motor eléctrico
regenera a las baterías.
3. Debido a que la potencia va acoplada directamente a la transmisión,
suelen ser más eficientes.
La gran versatilidad de configuraciones de los vehículos híbridos junto a la
necesidad de interacción de las distintas fuentes de energía hace necesario un sistema de
manejo global de los flujos de energía, de modo que ambas fuentes operen de manera
óptima. Esto último agrega un nivel de complejidad no encontrado en los automóviles
convencionales.
Otra distinción entre los vehículos híbridos corresponde a los que mantienen
la carga de la fuente de energía y los que la van descargando a través del tiempo. En
ambos casos, el hardware y la estrategia de control utilizada son notoriamente distintos.
En el segundo caso, las baterías no pueden ser recargadas a la misma tasa que son
descargadas. Los vehículos que son diseñados para mantener la carga poseen una unidad
de potencia dimensionada para otorgar la potencia media, de modo que, si es operada en
las condiciones esperadas, será capaz de mantener un nivel de carga en las baterías de
modo indefinido.
La flexibilidad de los HEV viene de la capacidad de la estrategia de control
de manejar cuanta potencia fluye de cada uno de los componentes. De esta forma, los
componentes del vehículo pueden ser integrados junto con la estrategia de control para
obtener el diseño óptimo dado un conjunto de restricciones. Entre los objetivos
deseables para los HEV encontramos:
1. Maximizar la economía de combustible.
2. Minimizar las emisiones.
3. Minimizar el costo del sistema de propulsión, de modo de hacerlos
cada día más alcanzables.
9
4. Realizar lo anterior bajo ciertas condiciones de desempeño
(aceleración, ruido, rango, etc)
Para alcanzar estas especificaciones, la configuración de hardware y la
topología de control deben ser diseñadas al mismo tiempo.
En suma, la gran flexibilidad de configuración y control de los vehículos
híbridos hacen que éstos puedan ser diseñados de distinta forma, de modo de abarcar las
necesidades particulares de cada grupo de mercado, automóviles más eficientes y con
menor gasto de combustible, alternativas de mayor potencia, etc. Por lo cual, la tracción
eléctrica, y en particular el desarrollo de medios eléctricos de transporte, es un área que
ha presentado un desafío importante a los científicos e investigadores de hoy en día, que
estudian temas tan diversos como electrónica de potencia, diseño de motores, control de
motores, optimización, aerodinámica, etc. los que se combinan para buscar solución a
las problemáticas planteadas para esta área del desarrollo. Dentro de los problemas a
solucionar se encuentran el mejor aprovechamiento de la energía, la capacidad de
almacenarla, mejorar la confiabilidad de los sistemas, reducir los costos de desarrollo y
producción, entre otros.
1.1.3 Vehículos Eléctricos en la Universidad Católica
El trabajo de investigación en la Universidad comenzó en el año 1997
cuando el profesor Juan Dixon comenzó a plantear la construcción del primer vehículo
eléctrico armado en Chile con tecnología de punta. Luego, se inició la investigación en
las distintas líneas de trabajo. En 1998 con la colaboración de General Motors, Tramcorp
(Trading Motors Corporation), Baterías Sonnenschein, CGE (Compañía General de
Electricidad), BMV Industrias Eléctricas y aportes financieros de Conicyt a través de
Proyectos Fondecyt, se desarrolló el primer vehículo eléctrico en Chile impulsado por
motores Brushless DC. El vehículo es una camioneta Chevrolet modelo LUV de doble
cabina cuya adaptación finalizó el año 1999. El vehículo ha demostrado ser altamente
confiable y eficiente. En términos monetarios cuesta diez y seis pesos chilenos el
kilómetro recorrido, lo que equivale a una eficiencia de combustible de más de 33
10
kilómetros por litro, es decir, al menos cuatro veces más económica que una LUV de
combustión interna..
El vehículo cuenta con instrumentación digital y posee tres procesadores:
uno para el control del motor, otro para la instrumentación y un tercero para la carga de
las baterías. Posee un motor tipo brushless DC de 95% de eficiencia, 71 HP y 47 kg de
peso, con un torque máximo de 240 Nt·m entre cero y 2.200 rpm. Su velocidad máxima
es 120 km/hora y aceleración de cero a 60 km/hr en 9 segundos. La autonomía actual es
de 50 kms con una profundidad de descarga de las baterías de 60%. Como unidad de
almacenamiento de energía posee 26 unidades selladas de Plomo-Ácido, de 12 V 50 Ah
cada una (peso total 520 kg.)
El desarrollo de este vehículo permitió la donación desde California de un
segundo vehículo: una camioneta Chevrolet S-10 impulsada por dos motores de
inducción trifásicos, la cual fue modernizada con instrumentación digital. La donación la
efectuó la empresa eléctrica "Southern California Edison" el año 2000, cuyos ejecutivos
quedaron muy sorprendidos por el trabajo realizado en Chile con la LUV.
Figura 1.4: Vehículos Eléctricos en la Universidad Católica
El año 2001 se consiguieron fondos Conicyt a través de un nuevo proyecto
Fondecyt para desarrollar un sistema de frenado regenerativo óptimo para la camioneta
LUV, con lo cuál se consiguió hibridizar el vehículo. El sistema auxiliar de energía
11
consta de un convertidor Buck – Boost, diseñado y construido en el departamento de
ingeniería eléctrica de la universidad, y un banco de ultracapacitores, cuyo voltaje
nominal es 300 Vdc, corriente 200 Adc y capacidad total igual a 20 Faradios.
1.2 Alcances de la Tesis
Dentro del problema de diseño de los vehículos híbridos se encuentra el de
encontrar una estrategia de control óptima que minimice el consumo de combustible.
Como los HEV poseen dos sistemas de almacenamiento de energía, se debe encontrar la
distribución de los flujos de energía que minimice las pérdidas, y de esa forma
minimizar el consumo de energía de la fuente primaria.
En una memoria anterior se había diseñado un sistema de frenado
regenerativo para la camioneta LUV (Ortúzar, 2002), el cual consiste en un banco de
ultracapacitores y un convertidor DC-DC tipo Buck-Boost. En un trabajo posterior se
elaboró la estrategia de control y un sistema de monitoreo, el cual permite la evaluación
del sistema en tiempo real (Dixon et al., 2000), (Dixon et al., 2002). La estrategia de
control fue elaborada basándose en el comportamiento esperado para el sistema de
modo heurístico. Como primer objetivo de esta tesis se planteó estudiar el desarrollo de
una nueva estrategia de control que considere la eficiencia de operación del sistema, de
modo de minimizar el consumo de energía de las baterías. Finalmente, se debió estudiar
su implementación práctica, de modo de lograr un ahorro efectivo de energía en
términos de kilómetros recorridos por KWh para condiciones de manejo típicos de
ciudad.
En síntesis, en la presente tesis se plantea el objetivo de diseñar una
estrategia de control que minimice el consumo de energía de las baterías para un
vehículo eléctrico, específicamente la camioneta LUV con que cuenta el departamento
de ingeniería eléctrica.
12
1.3 Organización de la Tesis
En el capítulo II se realiza una revisión de los componentes que conforman
un sistema de tracción de la camioneta Chevrolet LUV. Se describe el motor, el sistema
de almacenamiento de energía, el conversor de potencia, el banco de ultracapacitores y
el conversor DC-DC controlador. Finalmente, se entrega una descripción de la estrategia
de control desarrollada previamente para controlar los flujos de energía entre la fuente
primaria (baterías) y los ultracapacitores.
En el capitulo III se hace una descripción de la operación del convertidor
DC-DC tipo Buck–Boost. En él se incluye principio de funcionamiento, modelación y
análisis de eficiencia en la conversión de energía.
En el capítulo IV se desarrolla el marco teórico relativo al control óptimo de
sistemas. Se plantea el objetivo del diseño de controladores óptimos, luego, se introduce
el estudio de las condiciones de optimalidad. Finalmente se exponen métodos numéricos
para su resolución.
En el capítulo V se aplica la teoría de control óptimo expuesta en el capítulo
anterior a la minimización de la descarga en las baterías de un vehículo eléctrico, y en
particular el caso en que la fuente primaria corresponde a baterías y la fuente secundaría
a ultracapacitores. Se muestran finalmente algunas simulaciones con los resultados.
En el capítulo VI se introduce a la identificación de sistemas. Interesa
principalmente buscar una solución a la aproximación de la función de control óptimo
obtenida en el capítulo V. Para ello, se introducen las redes neuronales aplicadas a la
identificación de sistemas. Se revisan los conceptos de neurona, redes neuronales,
métodos de entrenamiento y validación de sistemas. Finalmente se presentan los
resultados obtenidos en la identificación de la función de control óptimo.
En el capítulo VII se revisa la información referente a las características del
microprocesador utilizado y en particular las ventajas que presenta frente a otras
13
alternativas disponibles. Luego se describe el software implementado en el
microprocesador, su arquitectura y los módulos que lo componen.
En el capítulo VIII se presentan los resultados experimentales del sistema.
En primer lugar se presentan las pruebas del control de corriente en el convertidor.
Luego, pruebas de la implementación de la red neuronal. Finalmente se presentan la
metodología a seguir para probar la eficiencia de la nueva estrategia de control y sus
resultados.
Finalmente, en el capítulo IX se entregan las conclusiones del trabajo
realizado y un resumen del posible trabajo a futuro.
14
II. COMPONENTES DEL SISTEMA DE TRACCIÓN DE LA
CAMIONETA CHEVROLET LUV
En el presente capítulo se presenta cada una de las partes del sistema de
tracción presentes en la camioneta LUV. El objetivo de ello es introducir su
composición y modo de funcionamiento.
Es posible distinguir dos grupos importantes, el sistema primario de energía,
formado por un banco de baterías de Plomo Ácido, y un sistema auxiliar de energía,
compuesto por ultracapacitores y un convertidor DC-DC. Ambos sistemas están
conectados en paralelo para alimentar el inversor que a su vez entrega las corrientes
necesarias al motor de tracción.
2.1 Descripción del Motor
El vehículo posee un motor marca UQM modelo SR218H, tipo Brushless
DC de imanes de Neodimio-Fierro-Boro, su potencia nominal es de 32 kW (43 hp) y
potencia máxima de 53 kW (71 hp). La potencia máxima puede ser desarrollada en un
amplio rango de velocidades (2.200 a 7.600 rpm). El torque máximo que desarrolla el
motor es de 240 Nm entre cero y 2.200 rpm. La figura 2.1 muestra la curva de torque vs
velocidad característica de un motor eléctrico.
Figura 2.1: Relación Torque – Velocidad para un Motor Eléctrico
15
El motor se caracteriza por su alta eficiencia (96 %) y bajo peso (47 Kg), lo
que permite tener una alta densidad de potencia (1.110 W/kg). Además, es enfriado por
agua, para lo cual posee ductos interiores que permiten su circulación.
Su principal ventaja en comparación con un motor de inducción es que posee
un peso notablemente inferior, para condiciones equivalentes de potencia y torque, lo
que permite alcanzar mayores valores de relación potencia/peso y potencia/volumen. La
figura 2.2 muestra el motor durante su proceso de instalación.
Figura 2.2: Motor Brushless DC en la Camioneta LUV
El motor es alimentado con corrientes trapezoidales a través de un inversor
trifásico.
2.2 Descripción de la Fuente Primaria de Energía
El vehículo utiliza 26 baterías marca Sonnenschein de plomo-ácido cuyas
características son: 12 volts nominales, capacidad de 50 Ah y un peso de 20 Kg cada
una.
Estas baterías son especialmente diseñadas para sistemas de tracción
eléctrica debido principalmente a que retienen el electrolito en forma de gel, por lo que
son libres de mantenimiento. Además, no requieren instalaciones de carga muy
complejas puesto que poseen una muy baja gasificación.
16
La vida útil de las baterías en cuanto a ciclos de carga y descarga está ligada
a que el método de carga de las baterías sea el apropiado, el cual esta dado por la
siguiente curva.
Figura 2.3: Característica de Carga de las Baterías
El proceso de carga debe efectuarse en una primera etapa con corriente
constante, hasta alcanzar el voltaje de gasificación del electrolito, aproximadamente 2,4
volts/celda. Una vez que este voltaje ha sido alcanzado, el proceso de carga debe
continuar con voltaje constante, y la corriente disminuye hasta alcanzar un valor de
régimen. El proceso de carga dura aproximadamente 8 horas.
Un segundo factor, y el más importante, que influye en la vida útil de las
baterías, es el régimen de uso. Por lo cual, no debieran descargarse a más de un 60% de
su capacidad total (30 Ah) y no deben ser sometidas a grandes potencias de descarga ni
de regeneración.
La siguiente figura muestra la ubicación de las baterías dentro del vehículo.
17
Figura 2.4: Ubicación de Baterías en el Vehículo
2.3 Descripción del Inversor
Para el control del motor se utiliza un inversor trifásico fabricado por UQM
(modelo CA40-300L) de alta potencia de 250-400 Vdc, controlado por microprocesador
(UQM modelo EVPH332).
EL inversor esta fabricado en base a IGBT (Insulated Gate Bipolar
Transitor) y sus valores nominales son de 320 Vdc y 300 amperes, además permite el
frenado regenerativo casi hasta la detención total del vehículo. El peso total del inversor
es de 13.1 kg, es enfriado por agua y tiene una temperatura de trabajo máxima de 55 ºC.
En la figura 2.5 se ilustra la ubicación del inversor en el vehículo.
Para controlar la operación del inversor y del motor de tracción se utiliza un
controlador UQM modelo EVPH332, el cual consiste de un microprocesador que se
encarga de generar las señales requeridas por el inversor para su operación, a partir de la
referencia de torque suministrada por el operador. Además el microprocesador recoge
todas las variables medidas que afectan los límites de seguridad en la operación del
sistema.
18
Figura 2.5: Ubicación del Inversor en el Vehículo
El sistema tiene una rutina de software usada para calcular el comando
deseado de torque basado en las señales del freno y del acelerador. Ambas señales (freno
y acelerador) representan el porcentaje deseado de torque con respecto al torque
máximo. La señal del acelerador es tratada como comando de torque positivo y la señal
de freno es tratada como comando de torque negativo.
Las partes descritas hasta el momento corresponden al equipo de tracción
existente en la primera etapa del proyecto de construcción del vehículo. En dicha etapa
se logró la puesta en marcha y se realizaron las primeras pruebas (Dixon et al., 2000).
Luego, como parte de una segunda etapa, se instaló un sistema auxiliar de energía, de
modo de aumentar la vida útil de las baterías (reduciendo su potencia máxima de
trabajo) y por otra parte, producir un aumento en la eficiencia del sistema de frenado
regenerativo.
2.4 Descripción de la Fuente Auxiliar de Energía
La fuente de almacenamiento del sistema auxiliar de energía está formada
por Ultracapacitores. Básicamente, los ultracapacitores son condensadores
electroquímicos de doble capa que tienen dos electrodos inmersos en un material
electrolítico.
19
El mayor contenido energético de los ultracapacitores en comparación con
los condensadores electrolíticos de aluminio se origina en el electrodo, el cual tiene una
alta superficie específica (alrededor de 2000 m2/g) y una corta distancia entre capas, que
es alrededor de unos pocos nanómetros. Gracias a esto, se pueden lograr capacidades
de unos cuantos miles de faradios en dispositivos relativamente pequeños.
Los ultracapacitores basan su funcionamiento en el principio
electrostático, el cual es netamente eléctrico y altamente reversible. Este modo de
almacenamiento de energía contrasta claramente con todas las tecnologías basadas en el
almacenamiento a través de baterías, la cual está basada en la formación y disolución de
compuestos químicos en los electrodos de la batería (reacción redox). Como
consecuencia de esto, hay diferencias fundamentales entre ambas tecnologías, las cuales
básicamente son mayor eficiencia, mayor vida útil y mantención cero.
En la actualidad, el voltaje nominal de estos dispositivos es 2.3 Vdc. Para
obtener mayores voltajes se debe conectar módulos de capacitores en serie. Para el caso
particular de la camioneta LUV, se han conectado 132 ultracapacitores de 2700 [F] en
serie. Obteniendo un banco de ultracapacitores de 20 [F] y 300 Vdc nominales. Su
ubicación en el vehículo se muestra en la siguiente figura.
Figura 2.6: Ubicación de los Ultracapacitores en la Camioneta LUV
20
La figura 2.7 muestra, en un gráfico de Rogone (energía específica vs
potencia epecífica), una comparación de los ultracapacitores con otras formas de
almacenamiento de energía.
Figura 2.7: Comparación de Ultracapacitores con otras fuentes de
almacenamiento de Energía
Tabla 2.1: Comparación de Ultracapacitores con otras fuentes de almacenamiento
de Energía
Los ultracapacitores son muy tolerantes con respecto al método de recarga.
Todos los métodos de recarga están permitidos, siempre y cuando el voltaje máximo
especificado no sea sobrepasado.
CaracterísticaBatería de
Plomo AcidoUltracapacitor Condensador
ElectrolíticoTiempo de Carga 1 a 5 hrs 0.3 a 30 s 10-3 a 10-6 sTiempo de Descarga 0.3 a 3 hrs 0.3 a 30 s 10-3 a 10-6 sEnergía (Wh/kg) 10 a 40 1 a 10 < 0.1Ciclos de Carga y Descarga 1,000 >500,000 >500,000Potencia Específica (W/kg) <250 <10,000 <100,000Eficiencia de Carga y Descarga
0.7 a 0.85 0.85 a 0.98 >0.95
21
Las características mencionadas hacen que hoy en día los ultracapacitores
sean una de las mejores alternativas de fuente de almacenamiento secundaria de energía
(Burke y Millar, 2002), (Burke, 2000).
2.5 Descripción del Convertidor DC-DC
La incorporación de los Ultracapacitores al sistema de potencia del vehículo
hizo necesaria la adición de un equipo electrónico que controle los flujos de energía
auxiliar. El sistema trabaja al mismo tiempo que las baterías, pero en forma
independiente. Es capaz de transferir energía desde y hacia las baterías en todo
momento, a una potencia máxima cercana a la del motor, para así poder entregar (o
recibir), en determinadas ocasiones, toda la potencia desde el sistema auxiliar. Como los
ultracapacitores varían su tensión de acuerdo a la carga que contienen y la tensión de
entrada del inversor de potencia del vehículo se mantiene cercana a los 312 V, es
necesaria una topología que pueda transferir potencia bajo estas condiciones en todo
momento. En nuestro caso la topología utilizada corresponde a una configuración tipo
Buck-Boost. El convertidor fue fabricado utilizando IGBT’s y su potencia máxima es de
60 [KW] (Ortúzar, 2002).
Figura 2.8: Ubicación del Convertidor en el vehículo.
22
2.6 Estrategia Actual de Control de Carga
El principal objetivo de los ultracapacitores es apoyar a las baterías u otra
fuente primaria durante las aceleraciones y frenado del vehículo. Sin embargo, el
sistema de control debe predecir también la necesidad de energía antes de aceleraciones
y dejar espacio para almacenamiento de energía antes de cada frenada. Para ello, se debe
monitorear la velocidad del vehículo, la corriente de carga y el Estado de Carga (SOC)
de los ultracapacitores.
Figura 2.9: Circuito de Potencia de la Camioneta LUV
Considerando las baterías como un elemento pasivo, la corriente a través de
éstas puede ser controlada monitoreando la corriente de carga y controlando la corriente
a través del Buck-Boost (como se puede ver en la figura 2.9). El SOC de los
ultracapacitores puede ser controlado con un lazo de control simple que manipule la
corriente por ellos (Iuc), la cual, al mismo tiempo, es controlada por un segundo lazo.
Además, se tiene un módulo para controlar los límites de corriente en las baterías. Un
diagrama del sistema de control se presenta en la figura 2.10 (Dixon, 2000), (Dixon y
Ortúzar, 2002).
23
Figura 2.10: Diagrama de la Estrategia de Control
Esta estrategia de control fue implementada en un DSP (TMS320F241) junto
a un sistema de monitoreo, el cual permite la comunicación en tiempo real con un PC
para la captura de datos (Dixon et al., 2002). La figura 2.11 muestra un fragmento de la
corriente del sistema y la velocidad del vehículo durante un ciclo de manejo. Se puede
observar que la corriente de las baterías está limitada a 30 y -3 [A] durante la aceleración
y frenado respectivamente.
Los resultados promedio obtenidos tras numerosas pruebas se resumen en la
tabla 2.2. En ellas se recorrió un circuito de ciudad de 14.2 Km en 3 condiciones: sin
regeneración; con regeneración, sin el convertidor BB; con regeneración, con sistema
auxiliar de energía.
24
0 50 100 150 200 250 300 350 400-200
-100
0
100
200Corrientes Durante el Ciclo de Manejo
Cor
rient
e [A
]
IBBILoadIBat
0 50 100 150 200 250 300 350 4000
10
20
30
40
50
60Velocidad del Vehículo
Tiempo [s]
Vel
ocid
ad [k
m/h
r]
Velocidad [km/hr]
Figura 2.11: Corrientes en el sistema durante parte del ciclo de manejo
Tabla 2.2: Resultados de pruebas en circuito de ciudad.
Con Regeneración
Sin Regeneración y sin UC * Sin UC Con UC
Km 14.2 14.2 14.2 Rendimiento Km/KWh 2.61 3.09 3.25
Aumento en Rendimiento (*) 18.2 % 24.4 %
En el primer caso (sin regeneración) el vehículo puede recorrer 2.61 km con
un kWh de energía. Agregando la capacidad de recuperar la energía a las baterías, se
aumenta su autonomía, llegando esta a 3.09 km/kWh que representa un aumento de
18.2%. Ahora, cuando el convertidor Buck-Boost y los Ultracapacitores son conectados,
la eficiencia del sistema en términos de su autonomía se incrementa en un 24.4% (3.25
25
km/kWh). La conexión del sistema reduce también considerablemente la potencia
máxima entregada por las baterías. Esto es de 54 kW a solo 10.7 kW.
2.7 Conclusión
Según lo presentado anteriormente, se concluye que el diseño de la estrategia
de control se ha hecho en base al conocimiento heurístico del sistema. El objetivo de
este trabajo es presentar el diseño de una nueva estrategia, en la cual las consideraciones
de eficiencia en la operación del sistema sean consideradas.
26
III. MODELACIÓN DEL CONVERTIDOR BUCK – BOOST
3.1 Introducción
En gran cantidad de aplicaciones industriales es necesario convertir de una
fuente de voltaje dc no regulado a otro nivel de voltaje dc regulado, para lo cual se debe
utilizar un convertidor dc-dc (Figura 3.1). Por lo general es posible encontrarlo en
fuentes de alimentación de corriente continua, alimentación de motores dc, etc.
Figura 3.1: Sistema con Convertidor DC-DC
Como se expuso en el capítulo anterior, en el vehículo eléctrico las baterías
operan a un voltaje de 312 Vdc, el cual para efectos de modelación se puede suponer
constante (en la práctica suele variar según la carga). Por otra parte, los ultracapacitores
operan a un voltaje variable, según su estado de carga (SOCuc). Por lo que se debió
utilizar un convertidor DC–DC para hacer posible los traspasos de energía, en forma
controlada, en uno y otro sentido. Es decir, cuando el vehículo acelere, los
condensadores deben entregar energía al lado de alta tensión para así no exigir
demasiado a las baterías, y por otra parte, durante el proceso de frenado, éstos deben
recibir toda la corriente generada por el motor. La topología utilizada para estos
propósitos corresponde a un convertidor Buck–Boost, la que fue mostrada en la figura
2.10.
En este capítulo se pretende introducir en más detalle el funcionamiento del
convertidor Buck-Boost. Para ello se presentará su análisis en régimen permanente de
Fuente DC no
ReguladaConvertidor
DC-DC Fuente DC Regulada
LOAD
controlv
Fuente DC no
ReguladaConvertidor
DC-DC Fuente DC Regulada
LOADFuente DC
no Regulada
Convertidor DC-DC Fuente DC
Regulada
LOAD
controlv
27
cada uno de sus modos de operación (Buck y Boost) y se obtendrá una expresión
analítica para representar su eficiencia de operación.
3.2 Análisis de la Topología Buck
El convertidor Buck produce en la salida un voltaje medio menor que el
voltaje en la entrada. En el caso de la camioneta LUV, el voltaje en la entrada al
convertidor Buck corresponde al voltaje de baterías y la salida es el voltaje en el lado de
los condensadores. La figura 3.2 muestra el circuito básico de esta topología. En ella,
Vbat corresponde al voltaje en las baterías, Rbat es la resistencia interna de las baterías. El
voltaje y la resistencia serie de la bobina están dados por VL y RL respectivamente. Vuc
es el voltaje de los ultracapacitores y Ruc es la resistencia interna de estos.
Figura 3.2: Convertidor Buck
En la operación del convertidor Buck se pueden distinguir dos estados, esto
es, con el IGBT en modo de conducción y con el IGBT apagado. Los circuitos
resultantes en ambos casos se muestran en la figura 3.3b y 3.3c respectivamente, en las
cuales el diodo es modelado por una fuente dc (VD) junto a una resistencia serie RD, y el
IGBT en conducción se asume como una fuente de tensión constante Vigbt. En la figura
3.3a se puede observar una simulación del voltaje y la corriente en la bobina para Vbat =
320 V, Vuc = 160 V e IL = 55 A.
28
Figura 3.3: Estados del Convertidor Buck: (a) Voltaje y Corriente en la
Bobina, (b) IGBT en ON, (c) IGBT en OFF.
Al activarse el IGBT la corriente pasa a través de éste y de la inductancia (L)
en el sentido de las flechas (Figura 3.3b). En ese instante, parte de la energía se
transfiere a los Ultracapacitores (Vuc), una fracción de ésta se disipa en las resistencias
serie de los elementos y en el semiconductor, y otra parte se carga en la inductancia L.
Cuando se abre el IGBT la energía que se cargó en la inductancia L se descarga en los
ultracapacitores, a través del diodo (D), obligando a la corriente a continuar en la
dirección de IL.
En modo de conducción, el voltaje en la bobina va a ser igual a la diferencia
entre el voltaje en el lado de alta tensión (Baterías) y el voltaje en el lado de baja
(Ultracapacitores). Por otra parte, cuando el IGBT esta apagado, el voltaje en la bobina
corresponde sólo al voltaje de los condensadores (con polaridad inversa). Sin embargo,
se cumple que la integral del voltaje en la bobina en un periodo de tiempo es cero, es
decir:
ton
toff
ton toff
IL
(a)
(b)
Ic IL
(c)
Ic IL
29
000
=+=
+=
∫∫∫sT
ont Lont
LsT
L
offon
dtvdtvdtv
ttT
En condiciones ideales, es decir, suponiendo que las resistencias interna
serie de las baterías, inductancia y condensadores es cero, se tendrá:
( ) ( )onnuconucbat tTVtVV −=−
luego: DTt
VV on
bat
uc == (duty cycle) (3.1)
Por lo que el voltaje de salida varía linealmente con el duty cycle del IGBT
para un voltaje dado en la entrada. Ahora, como la potencia de entrada debe ser igual a
la de salida, se tiene:
Lucbatbat
outin
IVIV
PP
=
=
Obteniéndose: DV
VII
uc
bat
bat
L 1== (3.2)
De lo cual se puede concluir que en condiciones ideales, el convertidor Buck
es equivalente a un transformador, en donde la razón de transformación puede ser
variada continuamente regulando el tiempo de encendido y apagado del IGBT.
Si la tensión modulada en el lado de baja tensión es menor que la tensión de
los Ultracapacitores no circulará corriente, ya que ésta no puede pasar por el diodo D
(sentido inverso) ni por el IGBT (está apagado). Si la tensión modulada es mayor que
Vuc la corriente que circule dependerá de estas tensiones y de la resistencias series de
cada uno de los elementos. El valor de la corriente está dado por (más detalle en Anexo
Nº 1):
( )( ) ducLbat
ducigbtbatL RDRRRD
VDVDVDVI
−+++
−−−−=
11
2
30
Por otra parte, si se consideran las resistencias series de cada uno de los
elementos, se tendrá:
inout PP *η=
En donde la eficiencia del convertidor, η, está dada por la siguiente
expresión (el detalle de su obtención se desarrolla en el Anexo nº 1):
( )( )( )( ) ( )( )ducigbtbatbatducL
ucducLbat
VDVDVRDVRDDDRDRVRDRRRD
−+++−++−+++
=11
12
2
η
En la expresión anterior, D corresponde al duty cycle aplicado al IGBT, que
para condiciones dadas de voltaje y corriente en los condensadores, y voltaje en las
baterías, estará dado por:
( ) ( )Lbat
LducLducLbatLdigbtbatdLdigbtdbat
IR
IRRRVVIRIRVVVIRVVVD
2
)(42
2,1
++++−+−+±+−+=
La figura 3.4 muestra el mapa de eficiencia del convertidor Buck. En ella, se
grafica la eficiencia en función del voltaje de los ultracapacitores y la corriente que
circula por estos en un momento determinado.
Figura 3.4: Mapa de eficiencia del convertidor Buck
(3.3)
31
3.2 Análisis de la Topología Boost
La configuración del convertidor Boost se muestra en la figura 3.5. Su
operación consiste en conmutar el semiconductor (IGBT) para transferir energía desde
los ultracapacitores al lado de alta tensión (baterías). Esto se logra cargando la
inductancia L al producir un cortocircuito de corta duración a través de ésta cuando se
prende el IGBT. Luego, cuando éste se apaga, la energía contenida en la inductancia se
descarga sobre las baterías a través del diodo D. La transferencia de energía se logra
debido a que, al interrumpir violentamente la corriente por la inductancia, el alto di/dt
induce una tensión en ésta, que sumada a la tensión de los ultracapacitores superan la
tensión en las baterías haciendo entrar en conducción al diodo.
Figura 3.5: Convertidor Boost
Del mismo modo que en el convertidor Buck, se pueden distinguir dos
estados, esto es, con el IGBT en modo de conducción y con el IGBT apagado. Los
circuitos resultantes en ambos casos se muestran en la figura 3.6b y 3.6c
respectivamente. En la figura 3.6a se puede observar una simulación del voltaje y la
corriente en la bobina para Vbat = 320 V, Vuc = 200 V y IL = 55 A.
32
a)
Figura 3.6: Estados del Convertidor Boost: (a) Voltaje y Corriente en la
Bobina, (b) IGBT encendido, (c) IGBT apagado.
Despreciando las perdidas en las resistencias serie de los elementos, y la
caída de tensión directa en el IGBT, Vigbt, el voltaje en la bobina cuando el IGBT está
encendido va a ser igual a la tensión de los Ultracapacitores. Por otra parte, cuando el
IGBT esta apagado, el voltaje en la bobina corresponde a la diferencia entre el voltaje en
los Ultracapacitores y el voltaje del lado de alta tensión (Baterías). Sin embargo, al igual
que en el caso Buck, se cumple que la integral del voltaje en la bobina en un periodo de
tiempo es cero. Procediendo de la misma forma que en el convertidor Buck, se obtiene
que:
DV
V ucbat −
=1
(3.4)
y que: ( ) batL ID
I−
−=1
1 (3.5)
Por lo que la tensión modulada en el lado de alta tensión varia con el
recíproco del tiempo en que el IGBT esta apagado. En teoría si el convertidor fuese
IL Ic
IL Ic
Ibat
ton
toff IL
ton
toff
b)
c)
33
considerado ideal, y la resistencia serie de los elementos igual a cero, la tensión
modulada en el lado de alta tensión podría ser infinitamente grande. Sin embargo,
debido a los elementos parásitos presentes, esto no ocurre. En la figura 3.7 se muestra
una simulación para la razón de voltajes entre el lado de alta y baja tensión del
convertidor, considerando los valores reales de resistencia serie de la bobina (37 [mΩ]) y
de los ultracapacitores (135 [mΩ]). A modo de comparación se grafica, en color verde,
la curva de tensión ideal en el ultracapacitor en función del “Duty Cycle” (todas las
resistencias serie iguales a cero).
0 .20 .40 .60 .80 10
1
2
3
4
5 Efecto de Componentes Parasitos en la razon de Conversion de Voltaje
Duty Cycle (D)
Vou
t / V
uc
RealIdeal
Figura 3.7: Modulación de Voltaje en un Convertidor Boost ideal y real.
El valor de la corriente en la bobina en función del “Duty Cycle” aplicado al
IGBT, del voltaje de los ultracapacitores y del voltaje en el lado de alta tensión, está
dado por la siguiente expresión (detalle en el Anexo Nº 2):
( ) ( )( ) ( ) batdLuc
batigbtducL RDRDRR
VDDVVDVI 211
11
−+−++
−−−−−=
34
Si se consideran las resistencias serie de cada uno de los elementos, las
pérdidas en el diodo, y las pérdidas por conmutación, se tendrá:
inout PP *η=
En donde la eficiencia del convertidor, η, está dada por la siguiente
expresión (el detalle de su obtención se desarrolla en el Anexo Nº 2):
( ) ( ) ( ) ( )( )
( ) ( ) batdLuc
uc
batdLuc
uc
igbt
uc
dbat
RDRDRRVVRDRRD
VV
DVVDDR
2
2
11
11111
−+−++
−++−+
−−−−
=η
En la expresión anterior, D corresponde al “Duty Cycle” aplicado al IGBT,
que para condiciones dadas de voltaje y corriente en los condensadores, y voltaje en las
baterías, estará dado por:
( ) ( )[ ] ( )[ ]Lbat
batducLucLdbatLbatigbtbatdLbatdLbatdigbtbatd
IR
VVVIRRRRIRVVVIRRIRRVVVD
2
422 2
2,1
++−+++−−+++±++−+=
La figura 3.8 muestra el mapa de eficiencia del convertidor Boost. En ella, se grafica la
eficiencia en función del voltaje de los ultracapacitores y la corriente que circula por
éstos en un momento determinado.
Figura 3.8: Mapa de eficiencia del convertidor Boost
35
Como conclusión se puede decir en este capítulo se ha descrito
detalladamente la operación del convertidor DC-DC tipo Buck-Boost. Se ha logrado
obtener un modelo de la eficiencia de operación del convertidor en función del voltaje
de los ultracapacitores y la corriente circulante. Se incluye el análisis de las pérdidas en
las resistencias serie de los componentes, perdidas en el diodo e IGBT.
36
IV. CONTROL ÓPTIMO
El diseño de una lógica de control que lleve un sistema dinámico a un estado
deseado, o que simplemente aumente su estabilidad, ha sido el objeto principal en
innumerables campos de la ingeniería. Ejemplos de ello se encuentran en la toma de
decisiones para sistemas económicos, el control de trayectorias de robots y vehículos, la
aplicación de nociones de inteligencia artificial, etc. Ahora bien, si el objetivo de control
lo expresamos en forma cuantitativa, la optimización de este criterio también constituye
una manera factible de diseñar la estructura de control.
El objetivo de este capítulo es introducir la teoría de control óptimo, sus
objetivos, los métodos para el planteamiento de problemas y su posterior resolución
numérica (Bryson y Ho, 1975), (Stengel, 1994).
4.1 Objetivos del Control Óptimo
El control óptimo describe la aplicación de fuerzas a un sistema con el
propósito de maximizar una cierta medida de desempeño, o minimizar una función de
costo. Si la información que debe utilizar el sistema de control es incierta o si el sistema
dinámico está sometido a perturbaciones aleatorias, puede que no sea posible optimizar
el criterio con certeza; y a lo que más se pueda aspirar es a maximizar o minimizar el
valor esperado de dicho criterio (dadas las suposiciones estadísticas del factor incierto).
Ejemplos de funciones de costos que se podrían maximizar o minimizar para
un sistema dado son:
1. Minimizar el tiempo requerido para transferirse de un estado
dinámico a otro.
2. Minimizar la energía o combustible utilizado para transferirse
de un estado a otro.
3. Minimizar el error en llegar a un estado final.
37
4. Maximizar el retorno de una inversión al finalizar un periodo
fijo de tiempo.
5. Regular un sistema para que se mantenga cercano a una
condición nominal a pesar de las perturbaciones.
Es importante considerar que el movimiento de un sistema dinámico
involucra el paso del tiempo, por lo tanto el criterio a ser optimizado debe estar
expresado en término de valores finales, o la integral en el tiempo del movimiento y
variables de control.
4.2 Condiciones de Optimalidad
Para estudiar las condiciones de optimalidad a aplicar en sistemas dinámicos,
en primer lugar se comenzará con el caso más simple correspondiente a un sistema de
una etapa. Luego, se generalizará el resultado para sistemas multietapas.
4.2.1 Sistemas de una Etapa
Se tiene un sistema en un estado inicial x(0) (x es de dimensión n). La
elección del vector de control m dimensional, u(0), determina la transición al estado x(1)
según la siguiente relación (esquema en la figura 4.1).
( ) ( )[ ]0),1(1 0 uxfx = (4.1)
Figura 4.1: Diagrama de Flujo de un Sistema de una Etapa
f 0 x(0) x(1)
u(0)
38
Se desea escoger u(0) de modo de minimizar una medida de desempeño de
la forma:
( )[ ] ( ) ( )[ ]0,01 0 uxLxJ +=φ (4.2)
En donde φ representa una condición final para el sistema. Esto corresponde
a un problema de optimización de parámetros con restricciones de igualdad. Para
adjuntar la restricción (4.1) a (4.2) se emplean los multiplicadores ( )1λ de la siguiente
forma:
( )[ ] ( ) ( )[ ] ( ) ( ) ( )[ ] ( ) 10,010,01 00 xuxfuxLxJ T −++= λφ (4.3)
Expresión que corresponde a la “función de costos aumentada”. Ahora,
llamando
[ ] ( ) [ ])0(),0(1)0(),0( 000 uxfuxLH Tλ+= (4.4)
Reemplazando (4.4) en (4.3), se tiene
( )[ ] ( ) ( ) ( )[ ] ( ) ( )111,0,01 0 xuxHxJ Tλλφ −+= (4.5)
Suponiendo que H es derivable con respecto a x y u. Considerando cambios
infinitesimales en J debidos a cambios en u(0), x(1), y x(0), se obtiene:
( ) ( ) ( ) ( ) ( ) ( ) ( )00
00
111
00dx
xHdu
uHdx
xJd T
∂∂
+∂∂
+
−
∂∂
= λφ (4.6)
Ahora, escogiendo,
( ) ( )11
xT
∂∂
=φλ (4.7)
Se evita calcular, a partir de la ecuación (4.1), el coeficiente dx(1) en función
de du(0). Con esto, la expresión (4.6) queda expresada como:
( ) ( ) ( ) ( )00
00
00dx
xHdu
uHJd
∂∂
+∂∂
=
39
Como x(0) representa la condición inicial para el problema (está dada), la
expresión dx(0) = 0. Por lo que un valor estacionario de J , y por lo tanto de J, se
obtendrá si:
( ) 00
0=
∂∂uH (4.8)
De las expresiones (4.1), (4.7) y (4.8) se ha formado un sistema de n+n+m
ecuaciones para determinar las n+n+m expresiones de x(1), ( )1λ y u(0).
4.2.2 Sistemas Multietapa
Un sistema dinámico puede ser considerado como la generalización de los
sistemas de una etapa, en otras palabras, la interconexión de sistemas de una etapa da
como consecuencia la representación de un sistema dinámico cuya representación
matemática está dada por el siguiente conjunto de ecuaciones de diferencia:
[ ] 1, 0,k dado, )0( )(),()1( −==+ Nxkukxfkx k K (4.9)
Expresión que corresponde a un conjunto de restricciones de igualdad, en
donde x(k), es un vector de dimensión n, determinado por u(k), de dimensión m (ver
figura 4.2).
.
Figura 4.2: Diagrama de Flujo de un Sistema Multietapa
x(N) x(0) x(1)
u(0)
x(2) x(N-1)
u(1) u(N-1)
f N-1 f 0 f 1
40
Considerando la medida de desempeño como:
( )[ ] ( ) ( )[ ]∑−
=
+=1
0,
N
k
k kukxLNxJ φ (4.10)
El problema será encontrar una secuencia de control u(k) que minimice (o
maximice) la función J para un determinado valor de N. Utilizando la secuencia de
multiplicadores ( )kλ se puede agregar el sistema de ecuaciones dado por (4.9) a J:
( )[ ] ( ) ( )[ ] ( ) ( ) ( )[ ] ( ) [ ]∑−
=
+−+++=1
01,1,
N
k
kTk kxkukxfkkukxLNxJ λφ (4.11)
Ahora, definiendo
( ) ( )[ ] ( ) ( ) ( )[ ] 1-N , 0,k ,,1, K=++= kukxfkkukxLH kTkk λ (4.12)
Reemplazando en (4.11) se tiene:
( )[ ] ( ) ( ) ( ) ( )[ ] 01
1HkxkHNxNNxJ
N
k
TkT +−++= ∑−
=
λλφ (4.13)
El diferencial de J se expresa según:
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( )00
00
00
1
1
duuHdx
xH
kduku
Hkdxkkx
HNdxNNx
JdN
k
kT
kT
∂∂
+∂∂
+
∂∂
+
−
∂∂
+
−
∂∂
= ∑−
=
λλφ
(4.14)
Para evitar el cálculo del coeficiente dx(k) en función de la secuencia du(k),
se escoge la secuencia del multiplicador ( )kλ dada por:
( ) ( ) ( ) ( ) ( ) ( ) 1,,0;10 −=∂∂
++∂∂
=⇒=∂∂
− Nkkx
fkkx
Lkkx
Hkk
Tk
Tk
T Kλλλ (4.15)
Sujeta a la condición de borde
41
( ) ( )NxNT φλ ∂
= (4.16)
Ahora, rescribiendo (4.14) según lo expresado en (4.15) y (4.16):
( ) ( ) ( ) ( )001
1dxkdu
kuHJd T
N
k
kλ+
∂∂
= ∑−
=
(4.17)
En donde ( )kuH k
∂∂ corresponde al gradiente de J con respecto a u(k)
manteniendo x(0) constante y cumpliendo la condición dada por (4.9). Ahora, como x(0)
es dado, se tiene dx(0) = 0.
En un punto óptimo (mínimo local o global) se debe cumplir que Jd sea
igual a cero para cualquier secuencia du(k). Lo cual solo se cumple si:
( ) 0=∂∂
kuH k
, k = 0, 1, …, N-1 (4.18)
Finalmente, para encontrar una secuencia del vector de control u(k) que
produzca un valor estacionario en la medida de desempeño J, se debe resolver el sistema
dado por las siguientes expresiones:
[ ])(),()1( kIkxfkx uck=+ (4.19)
( ) ( ) ( ) ( )kxfk
kxLk
kT
kT
∂∂
++∂∂
= 1λλ (4.20)
( ) ( ) ( ) ( ) 01 =∂∂
++∂∂
=∂∂
kufk
kuL
kuH k
Tkk
λ , k = 0, … , N-1 (4.21)
Sujeto a las condiciones de borde para k = 0, y para k = N,
x(0) dado (4.22)
( ) ( )
T
NxN
∂=
φλ (4.23)
42
El cual representa un problema con doble condición de borde, en donde las
expresiones dadas por (4.19) y (4.20) están acopladas (ya que de (4.21) se obtiene que
u(k) depende de ( )kλ , el que a su vez, según la expresión (4.20) depende de x(k) y
u(k)).
4.3 Optimización Numérica - Método del Gradiente
Encontrar una solución analítica a la gran mayoría de los problemas
planteados de la forma vista en el capítulo anterior no es fácil, más aún si los sistemas
involucrados son no lineales. Por este motivo existen diversos métodos iterativos para
encontrar, ya sea de manera aproximada o exacta, una solución al sistema planteado.
Dentro de este campo se pueden destacar la Programación Dinámica y el Método del
Gradiente.
En el desarrollo de esta tesis, en términos prácticos, solo fue utilizado el
método del gradiente por lo que solamente éste será explicado. Información sobre
Programación Dinámica puede ser encontrada en (Bertsekas, 2000).
El método del Gradiente es una alternativa para resolver el sistema dado por
el conjunto de ecuaciones (4.19), (4.20), (4.21) y (4.23). Su particularidad es que las
ecuaciones que rigen la dinámica del sistema son resueltas de manera exacta en cada
iteración, perturbando la variable de control en cada iteración de modo de acercarse a la
solución óptima. En otras palabras, el algoritmo simula la respuesta dinámica del
sistema variando la historia de la variable de control en cada una de las iteraciones, y el
efecto físico que se produce en la optimización es visible en cada paso.
El método comienza con la especificación de las condiciones iniciales
(sólo x(0)), y una trayectoria nominal para el control (u(k)). Se debe integrar la ecuación
(4.19) desde t0 a tf para obtener x0(k), vector que representa la trayectoria inicial para las
variables de estado. Al mismo tiempo, se evalúa la función de costo, las matrices de
sensibilidad F(k) y G(k), que corresponden a y uf
xf
∂∂
∂∂ respectivamente, los
gradientes del Lagrangiano (Lx(k) y Lu(k)). Luego, el vector adjunto es integrado hacia
43
atrás desde la condición final para obtener λ0(k). Una vez obtenido λ0(k), se puede
determinar Hu(k). En las primeras iteraciones Hu(k) no estará cercano a cero, debido a
que la trayectoria inicial elegida para el control no es óptima. Luego, en la siguiente
iteración la historia del control es perturbada por una función de Hu(k) y el proceso se
repite hasta que se perciba que la solución está lo suficientemente cerca del óptimo.
Una alternativa de perturbación para la variable de control es:
T
ii
ii
ukHkuku
∂∂
−=+ )()()(1 ε
En donde εi es un escalar. Este método también se conoce como el
algoritmo “steepest descendent”. En la figura 4.3 se presenta el diagrama de flujos del
algoritmo.
Figura 4.3: Método del Gradiente
Como conclusión, se quiere decir que en este capítulo se ha dado una
introducción a una rama del control automático denominada control óptimo dinámico,
44
en donde el objetivo de control es expresado de forma cuantitativa. La estructura de
control es diseñada para minimizar ó maximizar dicho objetivo. Se ha expuesto la forma
de plantear problemas y las condiciones de optimalidad. Finalmente, como método de
solución, se propone la utilización del método del gradiente, el cuál da una muy buena
aproximación a punto óptimo.
45
V. CONTROL ÓPTIMO DE FLUJOS DE ENERGÍA EN VEHÍCULOS
HÍBRIDOS (HEV)
Se pretende aplicar la teoría expuesta en el capítulo anterior a la
minimización del consumo de energía de las baterías en un vehículo híbrido,
particularmente a la camioneta LUV. En primer lugar, se exponen consideraciones
generales de diseño, desde el punto de vista del consumo energético, aplicables a
cualquier tipo de vehículo. Luego, se plantea el modelo de optimización, se desarrollan
detalladamente las condiciones de optimalidad y finalmente se presentan los resultados
tras diversas simulaciones en MATLAB.
5.1 Reducción del Consumo de Energía en Vehículos.
En primer lugar, si se habla de diseño de vehículos en general, es
fundamental conocer como se distribuye el consumo de energía. Es decir, la idea es
entender cómo los parámetros de diseño afectan al consumo energético de un vehículo
con características determinadas y cuánto afecta la variación de cada uno de estos
parámetros al consumo total. Para ello se utiliza la siguiente ecuación, la cual modela el
consumo energético Proad de un vehículo para condiciones de manejo dadas (Matthew et
al.).
auxaccelaerohillrollroad PPPPPP ++++= (5.1)
Para disminuir el consumo energético del vehículo, se debe reducir la
potencia consumida, lo cual se logra disminuyendo la magnitud de cada uno de los
coeficientes que componen (5.1).
El término Proll corresponde a la potencia de rodadura, el cual esta dado por
la expresión (5.2). Donde m es la masa del vehículo en kg, g la aceleración de gravedad
en m/seg2, V la velocidad en m/seg, Crr el coeficiente de resistencia de rodadura y θ la
inclinación del camino en grados.
( )θcos⋅⋅⋅⋅= rrroll CVgmP (5.2)
46
El segundo término, Phill, corresponde a la potencia requerida por el vehículo
para subir un camino inclinado (5.3).
( )θsinVgmPhill ⋅⋅= (5.3)
Paero afecta el consumo de potencia dado por la resistencia aerodinámica. En
donde, ρ es la densidad del aire, A corresponde al área frontal del vehículo, y Cd es el
coeficiente de resistencia aerodinámica, el cual tiene que ver con el perfil del vehículo.
daero CVAP ⋅⋅⋅⋅= 35.0 ρ (5.4)
El consumo de potencia debido a la aceleración esta dado por:
dtdVVmPaccel ⋅⋅= (5.5)
Finalmente, Paux corresponde a la potencia consumida en los sistemas
auxiliares (radio, luces, etc).
Desde el punto de vista de diseño, analizando las expresiones anteriores, se
puede notar que para reducir la potencia requerida por el vehículo, las variables que
pueden ser modificadas son: la masa, el área frontal y el coeficiente de rodadura de los
neumáticos. La figura 5.1(a) muestra una gráfica de la potencia requerida por la
camioneta LUV según la velocidad y la figura 5.1(b) muestra cuánto afecta la reducción
de cada uno de los parámetros a la potencia requerida.
Se concluye que, desde el punto de vista de diseño, la variable más crítica a
una velocidad de 50 km/h o menor es la masa del vehículo, por lo que para lograr
vehículos más eficientes, se debe trabajar fuertemente en reducir su peso. Sin embargo, a
velocidades mayores, el parámetro aerodinámico es el que más afecta el rendimiento. A
modo de ejemplo, si se lograra reducir en un 20% el peso de la camioneta LUV, esto es
a 1900 Kg aproximadamente, lograríamos cerca de un 15% de ahorro en energía a 50
km/hr. Sin embargo, para el desarrollo de esta tesis no se considerará ningún cambio en
el hardware del vehículo. Por lo que para lograr una mayor eficiencia en el sistema sólo
se realizarán cambios en el modo de control según la teoría planteada en el capítulo IV.
47
0
50
100
150
200
250
0 20 40 60 80 100 120 140 160 180 200
Velocidad [km/h]
Pote
ncia
de
Trac
ción
[kW
]
P max [kW]
P nom [kW]
P [kW]
(a)
1.00
1.05
1.10
1.15
1.20
1.25
1.30
1.35
0% 10% 20% 30% 40% 50%
Reducción en el Parámetro
Eco
nom
ía d
e Po
tenc
ia
Masa
Perd. por Rodadura
Aerodinámica
(b)
Figura 5.1: (a) Potencia requerida por la camioneta LUV vs velocidad; (b)
Mejora porcentual en el consumo de potencia de la camioneta vs reducción de
parámetros de diseño (a 50 km/hr)
5.2 Planteamiento del Modelo
El objetivo es determinar una nueva modalidad de control, la cual, para un
recorrido específico del vehículo, minimice la descarga de las baterías, teniendo en
consideración que los ultracapacitores son sólo una fuente temporal, por lo que al final
del recorrido, deben estar nuevamente cargados (Paganelli et al., 2002), (Delprat et al.,
2001), (Guezennec et al., 2003).
De la figura 2.10 se desprende que BBbatload PPP += . Escribiendo la potencia
suministrada por las baterías en función de la potencia en la carga y la potencia
suministrada por el Buck–Boost, se obtiene BBloadbat PPP −= . Considerando las
variables de estado del sistema como el estado de carga de las baterías (SOCbat) y el
estado de carga de los condensadores (SOCuc), se tiene que las ecuaciones que rigen la
dinámica del sistema son:
48
( ) TkucPkucSOCkucSOC
TbatkloadPkBBPkbatSOCkbatSOC
∆−=+
∆−+=+
*)()1(
**))()(()()1( η (5.6)
Donde, SOCbat(k): Estado de carga de las baterías en el instante k; SOCuc(k):
Estado de carga de los ultracapacitores en el instante k; Puc(k): Potencia neta producida
por los ultracapacitores en el instante k (lado de baja); Pload(k): Potencia del motor en el
instante k; PBB(k): Potencia suministrada por el convertidor Buck-Boost en el lado de
alta; batη : Eficiencia en la conversión de energía de las baterías; ∆T: Tiempo de
muestreo.
La variable a minimizar corresponde a la descarga de las baterías, cuya
expresión está dada por:
∑−
=
∆=1
0*))((
N
kbatbat TkICOSJ & (5.7)
En donde batCOS & representa el consumo de energía de las baterías en el
instante k. Ahora, la potencia suministrada por el Buck-Boost en el lado de alta tensión
(lado de las baterías) expresada en función de la corriente y el voltaje de los
condensadores es:
))()((*)(*)()(*)()( , kIkVkVkIkVkIkP ucucBBucucbatBBBB η== (5.8)
donde, ( ) ( )( )kIkV ucucBB ,η : Eficiencia del convertidor Buck-Boost.
Se debe incorporar al modelo la restricción )0()( ucuc SOCNSOC = , con lo
cual se pretende asegurar que los condensadores sean un sistema auxiliar temporal de
energía, por cuanto estos, al término del recorrido, deben estar nuevamente cargados.
Luego, el planteamiento del modelo de control óptimo es como sigue:
( )[ ] ∑−
=
∆+=1
0*))()(( ,
N
kBBloadbatuc TkIkICOSNSOCJMin &φ (5.9)
49
sujeto a:
( )
TkIkSOCVkIkSOCkSOC
TkIkVkIkSOCVkI
TkPkSOCkSOC
ucucucucucucuc
batucucBBucucucuc
batloadbatbat
∆−=+
∆+
∆−=+
*))(),((*)(*)()1(
**))(),((*)(),(*)(
**)()()1(
η
ηη
η
Para fines prácticos, la expresión ( )[ ]NSOCucφ , que corresponde a la
restricción de estado final para los condensadores, se ha tomado como el error
cuadrático entre el estado inicial y final. Es decir:
( )[ ] ( ) ( )[ ]20ucucuc SOCNSOCNSOC −=φ
Definiendo la variable de estado x(k) como: ( ) ( ) ( )[ ]Tucbat kSOCkSOCkx =
Por efectos de simplificación, se considerará el conjunto motor inversor del
vehículo como una caja negra cuyos requerimientos de potencia son conocidos para un
recorrido dado, por lo cual no se puede influir sobre Iload. Como se dijo con anterioridad
se cuenta con un vehículo eléctrico con un programa de adquisición de datos, por lo que
la corriente de carga para un recorrido específico es conocida. Luego, la variable
batCOS & dependerá sólo de la corriente suministrada por los condensadores, por lo que
se tendrá ( )( )kICOS ucbat& .
5.3 Desarrollo de las Condiciones de Optimalidad
Aplicando las condiciones de optimalidad desarrolladas en el capitulo IV
(expresiones 4.19 a 4.23) al modelo planteado en la ecuación (5.9), se tiene:
[ ]
TkP
TkIkVkIkSOCVkI
kSOCkSOCTkCOSkIkxL
batload
batucucBBucucucuc
batbatbatuck
∆−
∆=
−+=∆=
**)(
**))()((*))()((*)(
)()1(*)()(),(
,,
η
ηη
&
(5.10)
Por lo que, derivando con respecto a la variable de control:
50
( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) TI
kIkVkIkSOCVkI
TkIkVI
kIkSOCVkI
TkIkVkIkSOCVI
TkCOSkI
L
batuc
ucucBBucucucuc
batucucBBuc
ucucucuc
batucucBBucucucuc
bat
uc
k
∆∂
∂
+∆∂
∂
+∆=∂
∆∂=
∂∂
**)(*)(*
**)(*)(*
**)(*)(*)(
,,
,,
,,
ηη
ηη
ηη&
(5.11)
Ahora, en la ecuación (4.20), se define
∂∂∂
∂=
∂∂
∂∂
∂∂
∂∂
∂∂
=∂∂
uc
batk
ucuc
batbatk
SOCL
SOCL
kL
SOCf
SOCf
SOCf
SOCf
kf
)(
)( 21
21
xx (5.12)
Calculando cada uno de los términos dados en (5.12),
0 0 121
=∂∂
=∂∂
=∂∂
bat
k
batbat SOCL
SOCf
SOCf (5.13)
( )
( )
( ) TSOC
kIkVkIkSOCVkI
TkIkVSOC
kIkSOCVkI
TkIkVkIkSOCVSOC
kISOC
f
batuc
ucucBBucucucuc
batucucBBuc
ucucucuc
batucucBBucucucuc
uc
uc
∆∂
∂
+∆∂
∂
+∆∂∂
=∂∂
**))()((
*)()(*)(
**))()((*)()(
*)(
**))()((*)()(*)(
,,
,,
,,1
ηη
ηη
ηη
(5.14)
( )
( )T
SOCkIkSOCV
kI
TkIkSOCVSOC
kISOC
f
ucuc
ucucucuc
ucucucucuc
uc
uc
∆∂
∂−
∆∂∂
−=∂∂
**)()(
*)(
**)()(*)(
1
,
,2
η
η (5.15)
51
( ) ( )
( )
( ) TSOC
kIkVkIkSOCVkI
TkIkVSOC
kIkSOCVkI
TkIkVkIkSOCVSOC
kISOC
L
batuc
ucucBBucucucuc
batucucBBuc
ucucucuc
batucucBBucucucuc
uc
uc
k
∆∂
∂
+∆∂
∂
+∆∂∂
=∂∂
**))()((
*)()(*)(
**))()((*)()(
*)(
**))()((*)()(*
,,
,,
,,
ηη
ηη
ηη
(5.16)
Reemplazando las expresiones obtenidas en (5.13) – (5.16) en la (4.20), se
obtiene la condición de optimalidad para λ1 y λ2.
( ) ( )( ) ( ) ( ) ( ) ( ) ( )16.515.5*114.5*1
1
212
11
ececkeckk
kk
++++=
=+
λλλ
λλ (5.17)
En donde “ec(5.14)”, “ec(5.15)” y “ec(5.16)” corresponden a las expresiones
calculadas en las ecuaciones (5.14) – (5.16) respectivamente.
La condición final para lambda esta dada por (4.23), por lo que:
( ))0()(2)(
)(2 ucuc
T
ucSOCNSOC
NSOCN −=
∂
∂=
φλ (5.18)
La tercera condición de optimalidad, dada por (4.21), corresponde a:
( )
( )
( ) TI
kIkVkIkSOCVkI
TkIkVI
kIkSOCVkI
TkIkVkIkSOCVIf
batuc
ucucBBucucucuc
batucucBBuc
ucucucuc
batucucBBucucucuc
∆∂
∂
+∆∂
∂
+∆=∂∂
**))()((
*)()(*)(
**))()((*)()(
*)(
**))()((*)()(
,,
,,
,,1
ηη
ηη
ηη
(5.19)
( ) ( )T
IkIkSOCV
kITkIkSOCVIf
ucuc
ucucucucucucucuc
uc∆
∂∂
−∆−=∂∂ **
)()(*)(**)()(
,,
2
ηη (5.20)
Por lo que se obtiene
52
( ) ( ) 0)20.5(1)19.5(*1 11 =++++∂∂ *eckeckIL
ucλλ (5.21)
En donde “ec(5.19)” y “ec(5.20)” se refieren a las expresiones calculadas en
(5.19) y (5.20) respectivamente, además ucI
L∂
∂ está dado por la ecuación (5.11).
En las ecuaciones anteriores, las expresiones para
ucucucBB
ucucucBB
SOCkIkV
SOCkIkV
∂∂
∂∂ ))()((y ))()(( ,, ηη fueron obtenidas numéricamente a
partir de (3.3) y (3.6).
5.4 Solución Numérica - Resultados
Se ha implementado en Matlab un programa de simulación para el sistema
antes descrito (Anexo nº 3). Para efectos de simular el vehículo eléctrico lo que se ha
hecho es efectuar distintos recorridos de ciudad, obteniendo las corrientes requeridas y
generadas por el grupo motor–inversor en cada instante de tiempo. Tal como se ha
dicho, esto ha sido posible debido a que se cuenta con el vehículo con las características
ya mencionadas y con un sistema de adquisición de datos. Por lo cual, tal como se ha
dicho, el vehículo es visto como una caja negra que tiene requerimientos de potencia
conocidos en el tiempo.
Luego, para cada uno de los recorridos efectuados, se simuló el sistema
según (5.9), tomando como datos de entrada las corrientes de la carga en cada instante
de tiempo. Por otra parte, se conoce también el estado de carga inicial de las baterías y
de los condensadores.
El objetivo, tal como lo hemos planteado, es determinar la corriente óptima
que debe entregar el Buck–Boost. Para comenzar a iterar con el método del gradiente, se
debe fijar una historia de control nominal. En este caso la variable de control es Iuc, la
cual, para la primera iteración, se consideró que es función de la corriente de carga. Una
vez fijados estos parámetros se resolvió el sistema planteado por las ecuaciones (4.19) a
(4.23), obteniéndose los resultados que se muestran en la figura 5.2. En ella se compara
53
la estrategia de control óptimo simulada con la de control de carga propuesta en una
primera instancia. En primer lugar, se grafican las corrientes en el lado de baja tensión
del convertidor Buck-Boost. La segunda gráfica corresponde a la evolución del estado
de carga de los ultracapacitores. Finalmente, se muestra la evolución del estado de carga
de las baterías. Es importante notar que, observando esta última gráfica, la descarga de
las baterías durante el recorrido es mucho más pareja, asemejándose fuertemente a una
línea recta.
Se observa que se cumple la restricción final propuesta en el algoritmo, es
decir que el estado de carga inicial de los condensadores sea igual al final. De este
modo, se ha logrado obtener una corriente de referencia para el convertidor Buck–Boost
que disminuye notablemente la descarga de las baterías. Para este recorrido específico,
se disminuyó la descarga de las baterías en un 7.2%. Se procedió de la misma forma
para un universo de 30 recorridos distintos (Anexo nº 4), y se obtuvo una mejora en
promedio de 4.9% comparado con la estrategia de control de carga convencional.
-200
-100
0
100
200Corriente en los Ultracapacitores
Iuc Control de Estado de CargaIuc Control Optimo
200
250
300
350Estado de Carga de los Ultracapacitores
SOCuc Control de Estado de CargaSOCuc Control Optimo
0 500 1000 1500 2000 2500 3000 3500 40001.6
1.62
1.64
1.66x 10
4 Estado de Carga de las Baterias
Tiempo (segundos)
SOCbat Control de Estado de CargaSOCbat Control Optimo
Figura 5.2: Resultado control óptimo sistema Buck–Boost lado de baja tensión
54
En la figura 5.3 se muestran los resultados obtenidos, orientados al lado de
alta tensión del convertidor Buck-Boost. Se puede observar que la variabilidad de la
corriente de la batería es menor para esta nueva estrategia. Con ello, se está más cerca
del caso en que éstas entregan la potencia media del recorrido.
0 500 1000 1500 2000 2500 3000 3500 4000-150
-100
-50
0
50
100
150
200
Con
trol d
e E
stad
o de
Car
ga
IbatIloadIBB
0 500 1000 1500 2000 2500 3000 3500 4000-200
-100
0
100
200
Con
trol O
ptim
o
Tiempo (segundos)
Figura 5.3: Resultado control óptimo sistema Buck–Boost lado de alta tensión
A modo de conclusión, se quiere hacer notar que se ha logrado plantear,
desarrollar y resolver, un modelo de control óptimo para un vehículo híbrido que, desde
el punto de vista energético, minimiza la descarga de las baterías para un recorrido
específico. Ahora bien, desde el punto de vista práctico no es posible conocer a priori
cual va a ser el recorrido que efectuará el vehículo, y cuáles serán las condiciones en que
éste lo realizará, esto es, desde el número de detenciones, velocidad y aceleración, por lo
que el sistema se podría considerar aleatorio. Sin embargo, tras efectuar una gran
cantidad de recorridos en condiciones de ciudad, es posible suponer que, luego de
simular particularmente cada uno de ellos y promediar los resultados, hemos logrado
minimizar el valor esperado de la descarga en las baterías.
55
VI. ENTRENAMIENTO DE REDES NEURONALES PARA
APROXIMAR EL CONTROL ÓPTIMO
Ya ha sido obtenida una forma matemática (iterativa) de generar corrientes
de referencia óptimas para el convertidor Buck-Boost, de modo de minimizar la
descarga de las baterías (Capítulo V). Sin embargo, hay que pensar en desarrollar el
sistema de modo que este funcione en tiempo real. Para ello, se debe encontrar un
método para realizar la optimización del sistema de una manera rápida, eficiente y
aplicable a ser programada en un microprocesador. Dentro de esta problemática, el
campo de la identificación de sistemas aparece como una buena solución.
6.1 Introducción a la Identificación de Sistemas
La identificación de sistemas corresponde a un campo de la ingeniería en
donde el objetivo es inferir un modelo de un sistema dinámico a partir de una serie de
mediciones de éste. Otra aplicación importante corresponde a la aproximación de
funciones no lineales desconocidas (Ljung, 1999).
Figura 6.1: Sistema dinámico con entrada x(t) y salida y(t)
En la figura 6.1, llamemos “t” a un múltiplo de la frecuencia de muestreo.
Según lo anterior, y(t) representa la salida actual, e y(t-1) corresponde a la salida
observada un instante de muestreo anterior. Si se asume que la salida del sistema
dinámico puede ser descrita como función de entradas y salidas anteriores, se tiene:
( ))(,),1(),(,),1()( mtutuntytyFty −−−−= KK
Sistema Entrada, x(t) Salida, y(t)
56
Por lo que a priori no es necesario un conocimiento físico. Aplicaciones
típicas corresponden al campo de la simulación, predicción, detección de fallas, y diseño
de sistemas de control. En la figura 6.2, xi corresponde al vector de entrada, di
corresponde a la salida deseada del sistema e yi es la salida del modelo. De estas dos
últimas señales se obtiene un error, ei, que es utilizado para el ajuste de los parámetros
del modelo (etapa de entrenamiento).
Figura 6.2: Diagrama de Bloques – Identificación de Sistemas.
Un conocimiento de la dinámica del sistema puede ayudar en gran medida a
la tarea de identificación. Algunos puntos importantes de conocer pueden ser: el orden
del sistema, si la dinámica es lenta o rápida, estabilidad, rango de operación, retardos y
grado de no linealidad.
El siguiente esquema de la Figura 6.3 muestra el procedimiento a seguir en
la tarea de identificar un modelo para un sistema dinámico.
∑+
-
ei
di
yi
xi
Función
Desconocida
Modelo
57
Figura 6.3: Identificación de sistemas - procedimiento
En la etapa de experimentación, el objetivo es recolectar datos que describan
el comportamiento del sistema en un amplio rango de operación, esto es, tanto en
amplitud como frecuencia. La idea es variar la entrada y observar el impacto producido
en la salida. Estos datos entrada-salida serán utilizados más tarde en el proceso de
entrenamiento y validación del sistema. Luego de esto, en la etapa de selección de la
estructura del modelo, se debe contar con un conjunto de modelos candidatos. Estos
pueden ser modelos lineales (ARX), modelos no-lineales (Redes Neuronales), etc. en
una amplia gama de topologías o configuraciones. Una vez que se cuenta con un
conjunto de modelos distintos, sigue la etapa de estimación, en la cual es escogido un
modelo particular y es “entrenado”. Esto es, se ejecuta un algoritmo por medio del cual
se logra minimizar un cierto criterio, típicamente el error cuadrático medio entre la señal
deseada y la estimada por el modelo. Finalmente, en la etapa de validación, se le
presentan al modelo datos que no fueron utilizados en la etapa de entrenamiento. La
tarea finaliza si el resultado en la predicción, para este nuevo conjunto de datos es
bueno, en términos del error cuadrático medio en la predicción.
Experimento
Seleccionar la Estructura del Modelo
Estimar el Modelo
Modelo Aceptado
Modelo No Aceptado
Validación
58
6.1 Introducción a Redes Neuronales Multicapa
El desarrollo de la inteligencia artificial (AI) ha sido notable en la última
década. Su importancia radica en la capacidad de representar o emular el conocimiento
humano, es decir, memorizar, adquirir conocimiento, percibir y tomar decisiones
inteligentes. Dentro de este campo se encuentra, la aplicación de redes neuronales (NN)
a la identificación de sistemas, control de procesos, predicción, diagnóstico, etc. En el
área de la electrónica de potencia, la utilización de NN ha logrado grandes avances.
(Bose, 2001)
Una Red Neuronal puede ser definida como un sistema de elementos simples
de procesamiento, neuronas, que son conectadas en una red. La función de la red esta
determinada por su arquitectura, la magnitud de los “pesos” que conectan las neuronas y
el tipo de elemento de procesamiento (neuronas).
6.1.1 Concepto de Neurona
La neurona es la unidad básica de procesamiento. A ésta llega un número
finito de entradas, las cuales son ponderadas por importancia o “pesos”. Luego se suma
cada una de las ponderaciones, y el resultado es utilizado como argumento para evaluar
una función específica denominada “función de activación” (Figura 6.4).
Expresando matemáticamente, se tiene:
( )
+⋅== ∑
=0,
1, i
n
jjjiiiii fhfy ωϕω (6.1)
Las entradas a una neurona pueden ser salidas de otras unidades de
procesamientos (neuronas) o simplemente entradas externas. El término 0iω se
denomina “bias” y puede ser interpretado como el “peso” correspondiente a una entrada
de magnitud constante igual a “1”. Finalmente, la función de activación puede tomar
cualquier forma. Sin embargo, las más utilizadas corresponden a funciones monotónicas.
La figura 6.5 muestra las funciones de activación más utilizadas.
59
Figura 6.4: Esquema de una Neurona
En aplicaciones de identificación de sistemas, las funciones de activación
más utilizadas son las lineales y tangente hiperbólica (notar que esta última, por medio
de una transformación lineal, es similar a la sigmoidal). (En aplicaciones de clasificación
más común ver funciones de activación tipo “signo”).
(a) (b)
(c) (d)
Figura 6.5: Funciones de activación. (a) lineal; (b) tangente hiperbólica; (c)
sigmoidal; (d) signo
5ϕ 5iω
∑ if hi yi
0iω1ϕ 2ϕ
3ϕ
4ϕ
2iω
60
6ϕ
f1
f2
f3
f4
F1
F2
1
1ϕ
2ϕ
3ϕ
4ϕ
5ϕ
1 w4, 0
w1, 6
W1, 1
W2, 0
1y
2y
6.1.2 Redes Neuronales Multicapa
Las neuronas pueden ser combinadas en redes de diversas formas. Uno de
los libros introductorios más importantes en este tema es: Haykin, S., “Neural Networks:
A Comprehensive Foundation” (Haykin, 1998). La arquitectura más utilizada es el
“Perceptron Multicapas (MLP)”, en la cual las neuronas son ordenadas en capas. Las
entradas a cada una de estas unidades de procesamiento están dadas por salidas de otras
neuronas de la capa anterior, o entradas externas. Esta arquitectura es conocida en la
literatura como “feedforward network” cuyo esquema es presentado en la figura 6.6.
Figura 6.6: Esquema de una “feedforward network” de seis entradas, dos
capas intermedias y dos salidas.
La segunda capa de neuronas, en la figura 6.6, es conocida como “output
layer”, ya que es ésta la que produce la salida de la red. La primera capa es conocida
como “hidden layer”, debido a que es una etapa intermedia entre las entradas externas
( 621 ,,, ϕϕϕ K ) y la salida. La red presentada se dice que es “fully conected” debido a
que todas las entradas y unidades de una capa están conectadas con todas las unidades de
la capa siguiente.
61
Matemáticamente, la red presentada en la figura 6.6 se puede expresar como
sigue:
( ) [ ]
+
+⋅== ∑ ∑
= =
hn
jij
n
llljjjiiii WwwfWFgty
10,0,
1,,,ˆ
ϕϕθϕ (6.2)
En (6.2), θ representa el vector de parámetros, que contiene todos los
parámetros ajustables de la red (pesos y bias, jilj Ww ,, , ).
6.1.3 Elección de la arquitectura de la Red
Antes de entrenar una red neuronal deben ser resueltas algunas interrogantes.
¿Qué tipo de relación puede ser aprendida por una red multicapa?, ¿Cuántas capas
intermedias debe tener la red?, ¿Cuántas neuronas se deben incluir en cada una de las
capas? y ¿Qué función de activación se utilizará?
Las redes neuronales (perceptron multicapas) pueden ser utilizadas para
efectuar cualquier relación no lineal entre un espacio de entrada y uno de salida
(teorema de aproximación universal de funciones - Anexo Nº 5). Por lo anterior
cualquier función no lineal, continua, puede ser aproximada con una precisión deseada
utilizando una red cuya capa intermedia posea neuronas de función de activación
sigmoidal (o tangente hiperbólica) y una capa de salida con neuronas lineales (Cybenko,
1989). Luego, Barron (1993) realizó un estudio sobre el número de neuronas que debe
tener cada capa. Sin embargo, esto es difícil de llevar a la práctica (Barron, 1993).
Según el resultado anterior, no es necesaria una red de más de dos capas
(capa intermedia con neuronas sigmoidales, y capa de salida con neurona lineal). Sin
embargo este resultado no es totalmente cierto, y el error de aproximación puede ser
disminuido considerablemente si se utilizan arquitecturas más complejas. Ahora, si se
piensa en una implementación práctica, arquitecturas más complejas significan un mayor
tiempo de procesamiento, se dificulta el entrenamiento y se requiere un conjunto de
datos más grande para la etapa de entrenamiento y validación.
62
6.2 Entrenamiento de Redes Neuronales
Consiste en utilizar parte de los datos obtenidos en la etapa de
experimentación, para intentar obtener el mejor modelo a partir de un conjunto de
candidatos. Generalmente, esta etapa requiere de un gran trabajo computacional, pero
suele ser la más simple dentro del proceso de identificación, ya que no es muy complejo
implementar un algoritmo de entrenamiento, y como alternativa, existen softwares ya
implementados en forma de “Toolbox”.
El problema de entrenamiento puede ser planteado, de manera más formal,
de la siguiente forma. Dado un conjunto de datos,
( ) ( )[ ] NTtytuZ N ,,1,, K==
y un conjunto de modelos candidatos
( ) ( ) ( ) [ ] ( )tetgtetyty +=+= θθ ,/ˆ
El objetivo del entrenamiento es determinar una transformación que lleve
desde el espacio de los datos, al espacio de los parámetros que determinan el modelo, es
decir, θ→NZ , con lo cual se obtiene un modelo cuyas predicciones están, según algún
criterio, cerca de las salidas reales del sistema (o deseadas). El criterio más utilizado en
estos casos es el error cuadrático medio, el que está dado por la siguiente expresión:
( ) ( ) ( )[ ] ( )∑∑==
=−=N
t
N
t
NN t
Ntyty
NZV
1
2
1
2 ,21/ˆ
21, θεθθ (6.3)
Este método se conoce en la bibliografía como Prediction Error Method
(PEM) (Ljung, 1999) y el objetivo es minimizar la suma de un cierto criterio, en este
caso del error cuadrático medio, durante un periodo de tiempo. Con este planteamiento,
el PEM corresponde a un estimador de máxima verosimilitud suponiendo que la
distribución de la señal del error, e(t), es Gaussiana.
Las principales características de este método son: i) es relativamente
simple, ii) se puede obtener una regla para actualizar los pesos y iii), el conocimiento de
63
la función de distribución del ruido es de poca importancia. En la práctica, se pueden
obtener buenos modelos, incluso si la distribución del ruido no es Gaussiana.
Luego, tal como se ha dicho, el objetivo es encontrar los pesos de la red, θ ,
que minimicen el criterio dado en (6.3). Por lo que:
( )NN ZV ,minargˆ θθ
θ=
Por lo que estamos en presencia de un problema de optimización, sin
restricciones, que se asemeja en cierta forma a los planteados en el capitulo IV.
Planteando la expansión de Taylor (de segundo orden) del criterio dado por (6.3) en *θ ,
se tiene:
( ) ( ) ( ) ( ) ( ) ( )( )**''**'** ,21,,, θθθθθθθθθθ −−+−+= N
NTN
NTN
NN
N ZVZVZVZV
En donde el Gradiente de define como:
( ) ( ) ( )*
*'* ,,
θθθθ
θθ=
==d
ZdVZVG
NNN
N
y la derivada de segundo orden, el Hessiano, se define como:
( ) ( ) ( )*
2
2*''* ,,
θθθθ
θθ=
==d
ZVdZVG
NNN
N
En el mínimo, es decir, cuando *θθ = se debe cumplir que el Gradiente sea
igual a cero, y que la matriz Hessiana sea definida positiva.
Para fines prácticos la búsqueda de un mínimo, tal como se expuso en el
capitulo IV, debe comenzar a partir de un valor inicial para el vector de parámetros θ , 0θ , el cual es ajustado de manera iterativa por el método de entrenamiento de la
siguiente forma:
iiii fµθθ −=+1
64
En donde iθ especifica el valor de los parámetros en la iteración actual, if
es la dirección de búsqueda, y iµ representa el tamaño del paso de búsqueda.
Durante el proceso de entrenamiento se debe probar para distintas
condiciones iniciales, ya que estos criterios no garantizan la convergencia a un punto
óptimo global.
Existen varios algoritmos para realizar la búsqueda. Ellos difieren
básicamente en la forma en que son escogidas la direcciones de búsqueda y el paso
( if , iµ ). Se clasifican en:
Métodos de Primer Orden: Utilizan sólo la información proveniente del
Gradiente. En la literatura se conocen como Método del Gradiente ó Steepest Decent
(similar al descrito en la sección 4.3). Una implementación particular es conocida como
Back-Propagation, el cual es uno de los algoritmos más utilizados en el entrenamiento
de redes neuronales.
Métodos de Segundo Orden: Estos utilizan, aparte de la información
proveniente del Gradiente, la derivada de segundo orden (Hessiano) o una aproximación
de éste. Por enumerar algunos, podemos encontrar el Método de Newton, de Gauss-
Newton, pseudo-Newton y el Levenberg-Marquardt. Este último es altamente
recomendado debido a su convergencia rápida y robustez.
Para profundizar más en la forma de proceder de cada uno de los métodos, se
puede revisar Haykin, 1998 y Norgaard, 2000.
6.3 Resultados de la Aproximación de la Función de Control Óptimo
En una primera etapa se procedió a resolver numéricamente el sistema de
optimización planteado para un universo de 30 recorridos de ciudad, y con ello se
obtuvieron los datos de entrada y salida necesarios.
Como datos de entrada a la red, se utilizó la corriente de la carga (Iload), la
potencia de la carga (Pload), la velocidad del vehículo (v), y la energía cinética de éste
65
(E), todas en los instantes (k) y (k-1). La salida de la red está dada por la corriente
óptima que deben entregar los ultracapacitores (Iuc). Para entrenar la red se utilizó el
algoritmo Levenberg–Marquardt, el cual se caracteriza por su convergencia rápida y
robustez. Luego, para definir la arquitectura óptima de la red, se han utilizado algoritmos
de “Podar”, en particular, se utilizó el método de “Optimal Brain Surgeon” (OBS)
(Norgaard, 2000). En términos prácticos de implementación y programación, se utilizó
el Toolbox de MATLAB desarrollado por Nørgaard, M. (Tech. Report 00-E-891).
Finalmente, para validar la red se analizó el error cuadrático medio. Del universo de 30
recorridos, 10 de ellos fueron escogidos como datos de entrenamiento y 20 como datos
de validación. En la figura 6.7 se muestra la arquitectura de la red obtenida. Se
determinó un total de 32 parámetros (pesos), con un número de 4000 datos de cada serie
de entrenamiento, por lo que se cuenta con una razón de 125 datos por parámetro a
determinar. Se obtuvo un error rms de 0.09 [A] en la aproximación. Considerando que la
corriente media es 37.2 [A], se tiene un error en la estimación de 0.24%. En el Anexo
Nº 6 se exponen los pesos obtenidos.
Figura 6.7: Esquema de la Red Neuronal Entrenada
Iload (k)
Iload (k-1)
Pload (k)
Pload (k-1)
v (k)
v (k-1)
E (k)
E (k-1)
Bias (+1) Bias (+1)
PIIuc ref
Iuc medida
PWM Duty
Iload (k)
Iload (k-1)
Pload (k)
Pload (k-1)
v (k)
v (k-1)
E (k)
E (k-1)
Bias (+1) Bias (+1)
PIIuc ref
Iuc medida
PWM Duty
66
Tal como se muestra en la figura 6.7, la aproximación de la corriente óptima
entregada por la Red Neuronal será utilizada como referencia para un control PI de
corriente, en el lado de baja tensión del Buck-Boost. En la figura 6.8, se muestra el
resultado de uno de los datos de validación
0 500 1000 1500 2000 2500 3000 3500 4000-150
-100
-50
0
50
100
150
tiempo (segundos)
Resultado de la Estimación
Cor
rient
e [A
]
Iuc optPredicción
Figura 6.8: Resultados Simulación de la Red para un recorrido específico
A modo de conclusión se tiene que, como resultado del entrenamiento, se
obtuvo un sistema capaz de generar las corrientes óptimas obtenidas por el método
expuesto en el capítulo V con un error rms de 0.09. Considerando que la corriente media
es 37.2 [A], se tiene un error en la estimación de 0.24% (Detalle de tablas en Anexo Nº
7).
67
VII. IMPLEMENTACIÓN PRÁCTICA
7.1 Introducción
Para la implementación del sistema de control propuesto (figura 6.7), que
consta de una red neuronal para la elaboración de corrientes de referencia y un control PI
de corriente operando a 12 kHz, existen ciertas características que hacen de los
microprocesadores herramientas especialmente útiles. Algunas de estas características
son:
• Capacidad de generar múltiples señales PWM a alta frecuencia.
• Procesamiento veloz de datos pudiéndose implementar algoritmos
avanzados.
• Posibilidad de implementar variadas tareas en un mismo elemento, tareas
de control, comunicaciones, etc.
• Alta integración, es decir posibilidad de realizar soluciones con un mínimo
número de componentes.
• Soluciones flexibles que permiten modificaciones futuras a bajo costo solo
mediante cambios de software.
Existen dos grandes familias de microcontroladores, por un lado se
encuentran los microprocesadores de uso general, y por otro, los llamados procesadores
digitales de señales o DSP. Los DSP tienen aproximadamente el mismo nivel de
integración que los microprocesadores de uso general y trabajan a frecuencias de reloj
similares, pero en tareas específicas de procesamiento de señales, los DSP pueden
realizar tareas dos a tres veces más rápido debido a la optimización de su arquitectura
orientada a estas tareas específicas (Lilein, 1996). Algunas características especiales de
los DSP frente a los microprocesadores de uso general son:
• Arquitectura de la ALU (Arithmetic Logic Unit)
• Incorporación de unidades especiales (como multiplicadores)
68
• Ciclos de instrucción regulares (similar a la arquitectura RISC)
• Capacidad de procesamiento paralelo
• Bus de datos con arquitectura Harvard
La arquitectura Harvard tiene dos buses de memoria separados. Eso permite
realizar dos accesos simultáneos a memoria. La arquitectura Harvard original posee un
bus dedicado al acceso a instrucciones, mientras otro bus está disponible para el acceso a
datos (operandos). Esto en el caso de los DSP no es adecuado pues generalmente las
operaciones se realizan sobre dos datos por lo que en ocasiones es utilizado el bus de
programas para obtener datos. Esta es la arquitectura conocida generalmente como
Harvard modificada.
La arquitectura clásica de los microprocesadores de uso general es la
llamada arquitectura de Von Neuman, la cual hace uso de sólo un bus de memoria. La
mayor ventaja de esta arquitectura es que es más económica y requiere de menos
conexiones entre la ALU y la memoria.
Existe en el mercado una amplia gama de microprocesadores y DSPs que
ofrecen estas características, siendo algunos especialmente diseñados para su utilización
en tareas de control industrial y de motores, los que se analizaron para la selección
descrita a continuación.
7.2 Características y selección del Microcontrolador
7.2.1 Selección del Microprocesador
Se optó por utilizar la plataforma de procesadores DSP de la empresa Texas
Instruments, en particular su familia de la serie 2000, principalmente porque este
procesador ya estaba siendo utilizado en el sistema de control del convertidor Buck-
Boost, por lo que de implementar la red neuronal en la plataforma ya existente no
implicaría ningún cambio en el hardware. Además, este procesador presenta una serie de
características especialmente diseñadas para las aplicaciones de control digital. Entre las
69
características fundamentales analizadas se encuentran la velocidad de procesamiento,
incorporación de conversores análogo digitales de alta velocidad y resolución,
generación de salidas de modulación de ancho de pulso (PWM) y capacidad de realizar
operaciones de multiplicación por hardware (Tabla 7.1).
Tabla 7.1: Características del microprocesador TMS320F241
Texas InstrumentsTMS320F241
Procesador 16 bitsFrecuencia de Operación 20 MhzMemoria de Programa 8k FlashMemoria de Datos 544 bitsADC 8 canales de 10 bitsTiempo conversión 1,7 usTimers 2 de 16 bitsComparadores 2Perifericos SCI, SPIPuertos I/O 26
La principal desventaja de este procesador es el procesamiento serie.
7.2.2 Características del DSP TMS320F241
En la figura 7.1 se muestra el diagrama funcional del microprocesador
TMS320F241. Se observan los distintos bloques que se comentarán a continuación
(Texas Instruments, SPRU276C, 2000), (Texas Instruments, SPRU160C, 1999).
El diagrama funcional proporciona una descripción de cada componente del
DSP, de sus interconexiones internas y las conexiones hacia el mundo exterior. El
procesador se puede dividir en tres grandes áreas funcionales: el núcleo del DSP (unidad
de procesamiento), las memorias internas y los periféricos. Se destaca que el procesador
en cuestión posee una arquitectura Harvard de 16 bits con tres buses independientes para
datos, programas y manejo de periféricos. Esto hace posible efectuar lecturas de datos y
programas al mismo tiempo. Lo anterior, sumado a la existencia de un “pipeline” de
70
cuatro niveles, permite que casi todas las instrucciones sean ejecutadas en un solo ciclo
de reloj, que corresponde a 50 [ns] o lo que es equivalente a una tasa de 20 MIPS
(Million Instructions per Second).
Figura 7.1: Diagrama Funcional del DSP TMS320F241
La CPU de este procesador posee las siguientes características: tiene un
corredor (shifter) de escalamiento de 16 bits, una unidad de multiplicación de 16x16
71
bits, una unidad central lógica-aritmética de 32 bits y un acumulador también de 32 bits.
El diagrama de la CPU se muestra en la Figura 7.2, en la que se ilustran las
interconexiones entre las distintas unidades componentes de ella.
Figura 7.2: Diagrama Funcional de la CPU
Dentro de los periféricos se encuentra el bloque de pines de entrada/salida.
Para el caso del DSP utilizado este está compuesto por 26 pines, los que además
72
comparten sus funciones con otros periféricos. Para el control de estos pines existen dos
registros que son el “I/O Mux Control Register” y el “I/O Port Data and Direction
Register”.
El módulo de conversores análogo digitales está conformado por un
conversor de 10 bits que incorpora un circuito de sample-and-hold. Un total de ocho
canales análogos están disponibles mediante un multiplexor 8 a 1. El tiempo máximo de
conversión es de 1[us] y los voltajes de referencia con niveles de 0 y 5 Volts son
suministrados externamente. Este módulo posee la capacidad de realizar dos
conversiones en forma pseudo-simultánea con lo que se logra obtener velocidades
máximas de conversión de dos adquisiciones en 1,7[us] y con una sola instrucción de
inicio de conversión.
Otro de los periféricos es el módulo de manejo de eventos (EV2), en el que
se encuentran los timers de uso general, unidades comparadoras y de PWM, unidades de
captura y de cuadratura. Finalmente el procesador incluye tres bloques de comunicación,
que son el SCI o de comunicación serial asíncrona, el SPI o serial de alta velocidad y el
módulo de comunicación CAN (controller area network).
7.3 Software del Controlador
Lo que se ha hecho en este trabajo es modificar el software ya existente en el
sistema Buck-Boost. Se eliminaron las partes del programa que no se aplican en este
desarrollo; tarea que resultó bastante complicada, ya que no es fácil analizar un
programa realizado por otra persona, más aún si el lenguaje utilizado es assembler.
Además, había que mantener el protocolo de comunicación por el sistema de monitoreo.
Una vez eliminadas todas las partes que no se consideraban útiles para la
nueva aplicación, lo que se hizo fue agregar un bloque en forma de “caja negra”, el cual
recibe como entradas las variables ya calculadas por el programa, y su salida
corresponde a la referencia de corriente a utilizar por el control PI.
73
Se optó por realizar el desarrollo del software utilizando lenguaje de bajo
nivel (assembler). Esto debido a que así es posible obtener rutinas más rápidas y
eficientes que al utilizar compiladores en base a lenguajes de alto nivel como C. Si bien
el tiempo de desarrollo es mayor que en los lenguajes de alto nivel, en la presente
aplicación las ventanas de tiempo para realizar los cálculos, especialmente los referentes
a la red neuronal, son limitados, por lo que es fundamental optimizar las rutinas con
objeto de hacerlas de ejecución lo más rápida posible.
Para compilar el programa se utilizó el paquete de software CodeComposer,
que además ofrece la posibilidad de realizar simulaciones de las rutinas compiladas
facilitando el “debugging”. Por otro lado, para programar la memoria flash del DSP, se
utiliza la comunicación serial entre éste y el computador mediante la herramienta
“BOOTLOADER”. Este es un software residente en el DSP que permite su
programación.
En cuanto a la arquitectura del software diseñado, se optó por utilizar un
esquema de interrupciones a un ciclo “dummy” o de espera, al cual se llega después de
haber realizado las inicializaciones necesarias al sistema. Por tanto, el software está
dividido en seis grandes bloques o módulos, que son:
1. Módulo de Inicialización del Sistema.
2. Módulo de Verificación de Fallas.
3. Módulo de Interrupción de Timer.
a. Adquisición de Variables.
b. Módulo de Cálculo de Corriente de Referencia (Red Neuronal)
c. Módulo de Control de Corriente.
d. Módulo de Verificación de Variables de Control.
4. Módulo de Lectura del Ah Meter.
5. Módulo de Comunicación Serial.
74
6. Módulo de Datos (Pesos de la Red, Tabla de tanh)
Como se dijo anteriormente, el alumno sólo hizo cambios al software ya
existente eliminando una parte importante de él y agregando el módulo correspondiente
a la generación de señales de referencia para el control PI de corriente. Específicamente
los módulos desarrollados fueron el 3.a, 3.b y 6 de la lista anterior.
A continuación se describen de manera más detallada algunos de los
módulos del programa, específicamente los más relevantes para el desarrollo del sistema
de optimización.
7.3.1 Módulo de Inicialización del Sistema
El primer módulo es básicamente una inicialización de variables y ajuste de
parámetros de funcionamiento del DSP. Este módulo se ejecuta sólo una vez al
momento de energizar el sistema.
En la Figura 7.3 se presenta un diagrama de bloques que resume las
principales acciones que se realizan durante la ejecución de este módulo. Una vez
finalizado, el microprocesador queda en un loop de espera, del cual saldrá sólo cuando
reciba alguna interrupción, ya sea de timer o bien por la llegada de algún dato a su
puerto serial.
Cabe destacar que en la configuración de interrupciones, se habilitan cuatro
de los seis niveles disponibles. Estos corresponden a: interrupción por recepción de un
dato a través del puerto serial, interrupción por término del período del timer ajustado a
12 [kHz] (frecuencia de conmutación de la PWM), interrupciones externas para detectar
falla en alguno de los IGBT e interrupciones de captura para detectar pulsos
provenientes del medidor de Ah.
75
Inicio
Seteo de Constantes
Declaración de Variables
Inicialización de Variables
Configuración de Interrupciones
Deshabilitación Watchdog Timer
Configuración de Periféricos
LOOP (Espera de interrupciones)
Fin Inicializaciones
Figura 7.3: Diagrama de Bloques Modulo 1
7.3.2 Módulo de Interrupción de Timer
En esta parte del programa se realizan todas las tareas de control del sistema.
En primer lugar se adquieren las señales necesarias, estas son: voltaje de las baterías,
voltaje de los condensadores, corriente en los condensadores (lado de baja tensión del
Buck Boost) y velocidad del vehículo. Posterior a esto, para evitar las posibles
perturbaciones provenientes de la medición del rizado de la corriente, ésta es filtrada.
Luego, basado en el valor del voltaje de los condensadores, es calculada la
carga de éstos. Para ello se debe corregir el efecto de la ESR (resistencia serie de los
condensadores, ESR = 132 [mΩ]) en la medición de voltaje.
Una vez que se ha terminado de adquirir y procesar las señales, se verifica la
frecuencia de muestreo de la red neuronal, 11 Hz, Este valor fue escogido debido a que
los datos utilizados para su entrenamiento fueron adquiridos con esa frecuencia. Si se
76
cumple el tiempo de muestreo, se procede a cargar los datos en el buffer de entrada a la
red. Se debe calcular la potencia eléctrica consumida por el vehículo ( 2loadI ) y su energía
cinética ( 2vk ⋅ ).
Una vez que se tienen todos los datos de entrada a la red, se procede a
calcular cada una de las neuronas de la capa intermedia. La parte más complicada en este
punto fue lograr una buena aproximación para la función no lineal, tangente hiperbólica,
con un bajo requerimiento computacional (tiempo de procesamiento). Esto fue
solucionado guardando una tabla de 255 valores de la función muestreada, e
interpolando entre valores intermedios.
Figura 7.4: Interpolación de datos de tabla.
Es importante recalcar que el procesador utilizado es de punto fijo. En
muchas partes del programa fue necesario utilizar números decimales, por lo que para
representarlos se debe optar por una representación numérica decimal de punto fijo. Este
formato es conocido como formato Q(N) (Anexo Nº 8).
La figura 7.5 ilustra el error porcentual obtenido tras el cómputo de la
tangente hiperbólica.
xi x xi+1
yi+1
y
yi
( )iiii
ii yy
xxxx
yy −⋅−−
+= ++
11
77
-4 0 4-40000
-20000
0
20000
40000 TANH Obtenida con Punto Flotante - C (Formato Q15)
-4 0 4-40000
-20000
0
20000
40000 TANH Obtenida por Interpolacion - Tabla (Formato Q15)
-4 0 40
0.1
0.2
0.3
0.4Porcentaje de Error con respecto al Punto Flotante
Figura 7.5: Comparación entre el cálculo de la función tanh mediante punto
flotante e interpolación de tabla.
Finalizado el cálculo de la capa intermedia de la red, se procede a calcular la
neurona de la capa de salida con lo cual se obtiene una estimación para la corriente de
referencia óptima que deben tener los ultracapacitores en el lado de baja tensión.
La figura 7.6 muestra el trabajo computacional requerido para calcular la red
neuronal utilizada en la estimación. Al comienzo de la rutina, se lleva un pin del DSP a 5
Volts y cuando finaliza la rutina vuelve a 0 Volts. En primer lugar, de la figura 7.6a se
concluye que el tiempo requerido para hacer todos los cálculos es aproximadamente 30
[µseg]. De este tiempo, 6.4 [useg] son utilizados en el procesamiento de cada una de las
neuronas no lineales de la capa intermedia, (figura 7.6b) y 2.9 [µseg] son utilizados en el
cálculo de la neurona de la capa de salida (figura 7.6c). El tiempo restante es utilizado en
el procesamiento de los datos a la entrada de la red, y en el control de flujo.
78
Figura 7.6: Tiempos de cálculo. (a) Red Neuronal Completa, (b)
Neurona Capa Intermedia, (c) Neurona Capa de Salida
Finalmente, la corriente de referencia es utilizada como entrada a un control
PI, el cual manipula el “duty cycle” de la PWM.
La figura 7.7 muestra el diagrama de bloques de las tareas realizadas durante
el periodo de interrupción. Las regiones marcadas en verde corresponden a las rutinas
realizadas por el alumno en el desarrollo de la tesis. El código del programa del DSP se
expone en detalle en el Anexo Nº 9.
10 useg/div
2 useg/div 1 useg/div
(a)
(b)
(c)
79
Figura 7.7: Diagrama de Bloques Interrupción de Timer
Como conclusión se puede decir que se ha logrado el objetivo de
programación de un sistema que realice una aproximación de la función de control
óptimo en tiempo real. Para ello se ha utilizado un DSP de Texas Instruments de la serie
2000. El sistema demora tan solo 30 [useg] en realizar todos los cálculos por lo que
podría operar a una frecuencia cercana a los 30 KHz. Sin embargo, la actualización de la
corriente de referencia se realiza tan solo 11 veces por segundo, pues los datos de
entrenamiento de la red fueron adquiridos a esa frecuencia. El control de corriente se
realiza a 12 KHz.
Cumple tiempo
de Muestreo
Red?
Adquisición de los
ADC
Filtrado y
Modificación de
Señales
Calcula Control PI
de Corriente
Comprueba
Límites de Señal
FIN de
Interrupción
Actualiza PWM
Calcula Datos de
Entrada de la Red
Finaliza
Calcular Capa Intermedia?
i = 0
Calcula Neurona
Capa
De Salida
No
Si
Si
No
i= i + 1
Calcula Neurona
“i” de Capa
Intermedia
Inicio de
Interrupción
80
VIII. RESULTADOS EXPERIMENTALES
En este capítulo se exponen los resultados prácticos obtenidos. En primer
lugar se muestran pruebas en el control de corriente del sistema. Luego se exponen los
resultados de la implementación de la red neuronal. Finalmente se muestran los
resultados promedios de numerosas pruebas en la eficiencia del sistema. En particular,
se mostrará que efectivamente, con el sistema implementado se logra reducir el consumo
de energía del vehículo en términos de kWh. consumido por kilómetro recorrido.
8.1 Pruebas Control de Corriente
Tal como se ha dicho, el sistema se basa en el control de la corriente
proporcionada por el convertidor Buck-Boost, por lo que es fundamental que esta etapa
esté bien diseñada.
El nuevo sistema implementado tiene una leve diferencia con el que existía
anteriormente, la que radica en que la corriente se controla en el lado de baja tensión, y
no en el de alta tensión del convertidor Buck-Boost. Como conclusión a esto se logra un
sistema más mucho más estable, principalmente en el control de corrientes bajas. Esto es
porque la corriente se mide en el lado de baja tensión, por lo que para controlarla en el
lado de alta se debía hacer:
ucbat
ucBB I
VVI =
Por lo que si el voltaje en los condensadores es pequeño se debe tener una
corriente muy elevada en el lado de los condensadores, lo que puede ser peligroso.
La figura 8.1 muestra el resultado en el control de corriente ante un escalón
de 200 [A] para el caso Buck (derecha) y Boost (izquierda).
81
Figura 8.1: Pruebas de control de corriente en el convertidor Buck-Boost –
Cambio en el escalón de 200 [A].
Se aprecia un sobrepaso máximo superior a 50 [A]. Sin embargo, esto no es
muy crítico debido a dos razones. En primer lugar, el fusible no lo alcanza a detectar, ya
que este pico de corriente dura menos de 50 [mseg]. El segundo motivo, y el más
importante, es que la planta es de dinámica lenta, por lo que nunca se ve sometida a
cambios tan drásticos en la referencia. La figura 8.2 muestra la corriente en una prueba
práctica de control durante un recorrido. Se puede ver que la corriente en los
condensadores es capaz de seguir perfectamente su referencia.
Convertidor
Boost
Convertidor
Buck
82
100 150 200 250 300 350-200
-100
0
100
200Corriente de Buck-Boost Lado de Baja Tension
Cor
rient
e [A
]
Iuc [A]Iuc ref [A]
100 150 200 250 300 350 400-100
-50
0
50Error - Control de Corriente
Cor
rient
e [A
]
tiempo [s]
Figura 8.2: Resultado control de corriente en el convertidor Buck-Boost
8.2 Pruebas de Red Neuronal
Se realizaron diversas pruebas para corroborar el correcto funcionamiento
del cálculo de la red neuronal en el DSP. Su implementación práctica ya fue descrita en
el párrafo 7.3.2 del capítulo anterior. La figura 8.3 muestra el resultado de una de estas
pruebas. En este caso en particular lo que se hizo fue efectuar un recorrido en la
camioneta. Se grafica la corriente de referencia generada por la red neuronal en el DSP,
y la corriente de referencia generada, en las mismas condiciones, por la red en
MATLAB. Se obtuvo un error rms de 0.0902 [A], sobre una corriente media de 54.9 [A]
lo que representa alrededor de un 0.16 %.
83
Notar que las zonas encerradas en rojo, son las de máximo error, y esto es
porque en la práctica se ha limitado la corriente de referencia generada en el DSP a 160
[A] (en términos absolutos).
100 150 200 250 300 350 400-200
-100
0
100
200Comparacion entre la referencia de corriente teorica y practica
Cor
rient
e [A
]
Iuc ref Red Neuronal Practica [A]Iuc ref Red Neuronal Teorica [A]
100 150 200 250 300 350 400-100
-50
0
50
100Error Estimacion Practica en el DSP
Cor
rient
e [A
]
tiempo [s]
Figura 8.3: Validación de la Red Neuronal en el DSP
8.3 Resultados de Eficiencia
Se ha diseñado un circuito de pruebas de manejo en ciudad de 14.2 Km
alrededor del campus San Joaquín (figura 8.3). Este posee dos detenciones obligatorias
(puntos negros), además de las paradas aleatorias producto del tráfico, y condiciones de
la vía (esquinas). El procedimiento es el siguiente: se dan dos vueltas completas
alrededor del campus, y dos vueltas en donde se entra por la variante dada por las
84
flechas rojas. En la última vuelta alrededor del campus se entra por la variante dada por
las flechas negras para volver a departamento.
Respecto al sistema de manejo, el conductor debe acelerar cada vez que
pueda hasta 60 Km/hr y tratar de mantener la velocidad. Las condiciones de tráfico
agregan la componente aleatoria a cada recorrido. Para hacer más objetiva la prueba, el
conductor no sabe qué programa está cargado en el sistema, es decir, no sabe si se está
operando con control de carga de los condensadores, o con el sistema de control óptimo
diseñado. Además, tampoco tiene acceso a mirar el medidor de Ah, el cual es un
indicador del gasto de energía del sistema.
Antes de realizar cada prueba se revisaba la presión de los neumáticos para
tratar de hacer que las condiciones de operación, entre una prueba y otra, fuesen lo más
similar posible.
Figura 8.3: Mapa del Recorrido
85
Se realizaron 4 tipos diferentes de pruebas: i) con baterías sin regeneración
(para emular el comportamiento de un HEV que posea sólo celdas de combustible o
baterías de Zinc); ii) con baterías con regeneración; iii) con baterías y ultracapacitores
con control SOC; y finalmente iv) con baterías y ultracapacitores utilizando control
óptimo con redes neuronales. Los resultados promedio obtenidos tras numerosas
repeticiones del recorrido se resumen en las tablas 8.1 y 8.2.
Tabla 8.1: Resultado de pruebas en circuito de ciudad.
Circuito de
Manejo (Km) Kwh GastadoAh
Gastado Km/KWh
Mejora en Km/KWh
(%)
Baterías sin Regeneración 14.2 5.45 13.90 2.61 -
Baterías con Regeneración 14.2 4.61 11.23 3.09 18.2%
Baterías con AES (Control SOC) 14.2 4.36 10.55 3.25 24.4% Baterías con AES (Control Optimo con Redes Neuronalesl) 14.2 4.24 10.58 3.36 28.7%
Se puede observar que con la estrategia de control óptimo propuesta el
índice Km/KWh es mejorado en un 3.3% respecto a la estrategia de control del SOC de
los ultracapacitores (ver detalle en el Anexo Nº 10).
Tabla 8.2: Resultado de pruebas en circuito de ciudad - Comparación de las
estrategias de control.
Km/KWh Mejora en
Km/KWh (%)
Baterías con AES (Control SOC) 3.25 - Baterías con AES (Control Optimo con Red Neuronall) 3.36 3.3%
86
En la figura 8.4 se muestra un fragmento de las corrientes, voltajes y
velocidad del vehículo en un recorrido.
-200
-100
0
100Corrientes Durante el Ciclo de Manejo
Cor
rient
e [A
]
IBBILoadIBat
150
200
250
300
350Voltaje de Baterías y Ultracapacitores Durante el Ciclo de Manejo
Vol
taje
[V]
Voltaje de Baterías [V]Voltaje de Condensadores [V]
0 50 100 150 200 250 300 350 4000
20
40
60
80Velocidad del Vehículo
Tiempo
Vel
ocid
ad [k
m/h
r]
Velocidad del Vehículo [km/hr]
Figura 8.4: Corrientes, voltajes y velocidad durante parte de un recorrido
Otra característica importante es que se logró reducir considerablemente la
potencia máxima entregada por la fuente primaria de 54kW a sólo 12kW.
A modo de conclusión, se quiere decir que se han presentado los resultados
prácticos del sistema implementado, cuyas ventajas son principalmente el aumento de la
estabilidad en el control para corrientes pequeñas y que efectivamente reduce el
consumo de energía del vehículo.
87
IX. CONCLUSIONES Y TRABAJO FUTURO
9.1 Conclusiones
En este trabajo se presentó el desarrollo de una nueva estrategia de control
para un HEV basándose en las consideraciones de eficiencia de un sistema auxiliar de
energía formado por ultracapacitores y un convertidor Buck-Boost. Para ello, se planteó
el modelo de control óptimo y luego, tras la resolución numérica del sistema y posterior
simulación, se obtuvo que teóricamente se podía mejorar la estrategia anterior (basada
en el estado de carga de los ultracapacitores) en un 4.9%.. Para darle un enfoque práctico
a esta nueva estrategia se entrenó una red neuronal en base a los resultados obtenidos de
las simulaciones de diferentes ciclos de manejo. Se utilizó un DSP (TMS320F241) para
su implementación en tiempo real.
Tras numerosas pruebas de manejo en ciudad, se obtuvo un 3.3% de mejora
en km/kWh en relación a la estrategia de control del estado de carga de los
ultracapacitores. Es importante dejar en claro, que la importancia de este resultado
radica en que el aumento en la autonomía del vehículo ha sido logrado sólo con cambios
en el software del sistema, por lo que no se ha incurrido en ningún costo adicional desde
el punto de vista de hardware.
Ahora, considerando el caso en que la fuente primaria no acepte
regeneración, con el sistema propuesto se logra incrementar en un 28.7% el índice
km/kWh.
9.2 Trabajo Futuro
Desde el punto de vista práctico, el trabajo futuro se puede definir en tres
líneas. En primer lugar, se considera importante probar el sistema en un rango más
amplio de operación, esto es, aumentar el recorrido a una distancia cercana a los 30 Km,
pero teniendo en cuenta siempre que se deben hacer recorridos típicos de ciudad, es
decir, en donde el número de detenciones sea importante, típicamente cada 400 metros.
88
Este análisis no fue incluido en el desarrollo de esta tesis debido principalmente a que de
la forma en que fueron hechas las pruebas, recorrido de 14.2 km, se permitía hacer dos
por día. De la otra manera toma el doble de tiempo, ya que la camioneta tardaría un poco
más de media jornada en cargar las baterías nuevamente.
La segunda línea de investigación puede ser el entrenamiento on-line del
sistema. Existen algoritmos recursivos para entrenar on-line las redes neuronales. Un
punto muy importante a tener en cuenta, es que el sistema fue entrenado con condiciones
de regeneración específicas, en donde la calibración del pedal de regeneración juega un
rol fundamental. Una posible descalibración de este pedal puede hacer que las corrientes
de regeneración cambien significativamente, por lo que las entradas de corriente a la red
neuronal pueden cambiar notablemente para condiciones similares de velocidad. Esto
trae como consecuencia la exposición a condiciones distintas al sistema, para el cual no
fue entrenado. Como solución a esto último se deriva al tema de detección y diagnóstico
de fallas en sistemas de control.
Finalmente, sería importante incluir un análisis técnico y económico en el
diseño desde el punto de vista de hardware de potencia. Es decir, cuál es el tamaño
óptimo del banco de ultracapacitores. Es importante tener en cuenta que el banco actual
de condensadores está sobredimensionado para el sistema, lo que se traduce en exceso
de peso. Si se logra diseñar un banco de condensadores más reducido, aparte de ganar
eficiencia por el óptimo manejo de los flujos de energía, se tendrá un pequeño aumento
por la reducción de masa del vehículo.
89
BIBLIOGRAFIA
ABOUT.COM (2002) History of Electric Vehicles, Página Internet.
http://inventors.about.com/library/weekly/aacarselectrica.htm
OMAN, H., June 2002, Electric Car Progress, IEEE AESS System Magazine.
WYCZALEK, F. A., March 2001, Hybrid Electric Vehicles, Year 2000 Status. IEEE
AES System Magazine.
CALIFORNIA AIR RESOURCES BOARD (2002) Zero Emission Vehicle Incentive
Programs. Página Internet. http://www.arb.ca.gov/msprog/zevprog/zevprog.htm
U.S DEPARTMEN OF ENERGY, HYBRID ELECTRIC VEHICLE PROGRAM, Tax
Credit For Hybrid Electric Vehicles. Página Internet.
http://www.ott.doe.gov/hev/pdfs/032873mFS_TAX_FS2.pdf
ORTUZAR, M. (2002) Diseño y Construcción de un Convertidor DC-DC para Control
de Ultracapacitores en Vehículo Eléctrico. Memoria para optar al título de Ingeniero.
DIXON, J. E., ORTUZAR, M. & WIECHMANN, E. , Regenerative Braking for an
Electric Vehicle, Using Ultracapacitors and a Buck-Boost Converter, EVS'17, 17th
Electric Vehicle Symposium, Montreal, Canada, 13-18 October 2000.
J. W. DIXON AND MICAH ORTÚZAR, Ultracapacitors + DC-DC Converters in
Regenerative Braking System. IEEE Aerospace and Electronic Systems Magazine, Vol.
17, Nº 8, August 2002, pp. 16-21.
DIXON, J. E., ORTUZAR, M. & MORENO, J., Monitoring System for Testing the
Performance of an Electric Car Using Ultracapacitors, The 19th International Battery,
Hybrid and Fuel Cell Electric Vehicle Symposium , October 19 to 23, 2002, Bexco,
Busan, Korea.
90
J. DIXON, M. ORTÚZAR, I. LEAL, A. AMARO, R. SCHMIDT, M. RODRÍGUEZ, G.
LAZO & E. WIECHMANN, Performance Characteristics of the First, State-of-the-art
Electric Vehicle Implemented in Chile, EVS'17, 17th Electric Vehicle Symposium,
Montreal, Canada, 13-18 October 2000.
BURKE, A.F. AND MILLER, M., Comparisons of Ultracapacitors and Advanced
Batteries for Pulse Power in Vehicle Applications: Performance, Life, and Cost.
Proceedings of the 19th International Electric Vehicle Symposium, Busan, Korea,
October 2002.
BURKE, A.F., Ultracapacitors: why, how, and where is the technology. Journal of
Power Sources, 91 (2000) 37-50.
RASHID, M., Power Electronics Handbook. Publisher by Academic Press, 2001.
BRYSON, A.E.; HO, Y-C. (1975): Applied optimal control. Optimization, estimation
and control, Hemisphere Publishing Corporation, Washington DC, John Wiley & Sons
STEGEL, R., Optimal Control and Estimation. Publisher by Dover Pubns, 1994.
BERTSEKAS, D.P. , Dynamic Programming and Optimal Control, Volume I, 2nd
edition, Athena Scientific 2000.
MATTHEW P. THIEL, BRIAN L. SWENSON, AND GLENN R. BOWER, The
Development of the University of Wisconsin's Parallel Hybrid-Electric Aluminum
Intensive Vehicle, página internet www.cae.wisc.edu/~vehicle/tech_report
PAGANELLI, G., GUERRA, T.M., DELPRAT, S., GUEZENNEC, Y., RIZZONI, G.,
Optimal Control Theory Applied to Hybrid Fuel Cell Powered Vehicle. 15th IFAC
World Congress on Automatic Control, Barcelona, Spain, 2002.
91
DELPRAT, S., GUERRA, T.M., RIMAUX, J., Optimal Control of a Parallel
Powertrain : From Global Optimization to Real Time Control Strategy, Proceedings of
the 18th International Electric Vehicle Symposium, Berlin, October 2001, on CD-ROM.
GUEZENNEC, Y., CHOI, T., PAGANELLI, G., Supervisory Control of Fuel Cell
Vehicles and Its Link to Overall System Efficiency and Low-Level Control
Requirements, IGERT Graduate Student Research Conference, University of California,
Davis, June 2003.
LJUNG, L., System Identification – Theory for the User. Pretince Hall, Upper Saddle
River, N.J., 2nd edition, 1999.
BOSE, B.K., Artificial Neural Network Applications in Power Electronics, IEEE
IECON Conf. Rec, IECON’01, November 29 to December 2, 2001, pp. 1631-1638.
HAYKIN, S., Neural Networks: A Comprehensive Foundation. Pretince Hall, 2nd
edition, 1998.
CYBENKO, G., Approximation by superpositions of a sigmoidal function.
Mathematics of Control, Signal, and Systems, 2(4), 303-314, 1989.
BARRON, A., R., Universal approximation bounds for superpositions of a sigmoid
function. IEEE Transaction on Information Theory, 39, 930-945, 1993.
NØRGAARD, M., POULSEN, N.K., RAVN, O., HANSEN, L., Neural Networks for
Modelling and Control Dynamic System. Ch 2. Publisher by Springer Verlag, 2000.
NØRGAARD, M., Neural Network Based System Identification Toolbox. Tech. Report.
00-E-891, Department of Automation, Technical University of Denmark, 2000.
A.L. LILEIN (1996) Digital Signal Procesors vs. Universal Microprocessors. Texas
Instruments Literature Number: SPRA344, Paris, Septiembre 1996.
92
TI (2000) TMS320F243/F241/C242 DSP Controllers Reference Guide System and
Peripherals. Texas Instruments Literature Number: SPRU276C, Enero 2000.
TI (1999) TMS320F/C24x DSP Controllers Reference Guide CPU and Instruction
Set. Texas instruments Literature Number: SPRU160C, Junio 1999.
93
ANEXO Nº 1: ANÁLISIS DE EFICIENCIA DEL CONVERTIDOR BUCK
IGBT – ON
Convertidor Buck
IGBT – OFF
Nota: El IGBT en conducción se modela como una fuente de voltaje constante.
Figura A1.1: Convertidor Buck y sus modos de operación
Cuando el IGBT está en ON
( )
( )
Lbat
condbatcLc
bat
condbat
ucLucLigbtcondL
ucLucLLigbtcond
IR
VVIIIR
VV
VIRRVVV
VIRRVVV
−−
=→+=−
−+−−=
=+++++− 0
Cuando el IGBT está en OFF
94
( ) ucLucLLddL
bat
condbatc
VIRRIRVV
RVVI
−+−−−=
−=
Ahora, el valor medio de VL en un periodo es aproximadamente cero: 0→LV
Definiendo “D” como el “duty cycle” aplicado al IGBT. Se tiene:
( ) ( ) 0)1()1()1()1( =−−+−−−−−−−+−− ucLucLLdducLucLigbtcond VDIRRDIRDVDDVIRRDDVDV
(*)
Balance de Carga en el Condensador
+−−
Lbat
condbat DIR
VVD (1-D) bat
condbat
RVV − = 0
bat
condbatL R
VVD
I −=
1 Luego, Ialta = D * Ibaja
Luego, de (*) se obtiene:
( ) 0)1()1( =−−−−−+−− LdducLucLigbtcond IRDVDVIRRDVDV
Reemplazando el valor de IL
( ) ( ) ( ) ( ) ( ) 011111=
−+
−−−−−
++
+−− cond
bat
dbat
bat
dduccond
bat
ucLbat
bat
ucLigbtcond V
DRRDV
DRRDVDVV
RRR
DV
RRR
DDVDV
Agrupando,
( ) ( ) ( ) ( ) ( ) 011111=−−−−
−+
+−
−+
++ ducigbtbat
bat
d
bat
ucLcond
bat
d
bat
ucL VDVDVVDR
RDR
RRD
VDR
RDR
RRD
D
( ) ( ) ( ) 01112
=−−−−−++
−−+++
ducigbtbatbat
ducLcond
bat
ducLbat VDVDVVDR
RDRRVDR
RDRRRD
Luego,
Ialta: Lado de las Baterías.
Ibaja: Lado de los condensadores.
95
( )( )
( )( )( ) ducLbat
ducigbtbatbat
ducLbat
ducLcond RDRRRD
VDVDVDRV
RDRRRDRDRRV
−+++−++
+−+++
−++=
11
11
22
Por otra parte, se sabe que:
condbat
batbat
L VDR
VDR
I 11−=
Por lo que IL estará dado por:
( )( )( )
( )( ) ducLbat
ducigbtbat
batducLbat
ducLbat
batL RDRRRD
VDVDVV
DRRDRRRDRDRRV
DRI
−+++−++
−−+++
−++−=
11
111
22
( ) ( )( )( )
( )( ) ducLbat
ducigbtbat
batducLbat
ducLducLbatL RDRRRD
VDVDVV
DRRDRRRDRDRRRDRRRDI
−+++−++
−−+++
−−−−−+++=
11
111
22
2
Finalmente, se obtiene que IL está dado por:
( )( ) ducLbat
ducigbtbatL RDRRRD
VDVDVDVI
−+++−−−−
=11
2 (1)
Se define la eficiencia del convertidor como:
( )DRDIVV
RIDDIVIV
RIIVIV
PP
batLbat
uc
batLLbat
Luc
batbatbatbat
Luc
in
out
−=
−=
−==
222η
Reemplazando el valor de IL, se tiene:
DucLbat
DucigbtbatbatDucLbatLbat
DucLbat
DucigbtbatbatDucLbatLbat
DucLbat
DbatucbatigbtbatbatbatbatDbatucbatLbatbatbatLbat
DucLbat
DbatucbatigbtbatbatbatbatbatLbat
RDRRRDVDVDVRDVRDRRD
RDIVD
RDRRRDVDVDVDRVRDRR
RDIV
RDRRRDVDDRVDRVRDVRDVRDVRVRVRD
RDIV
RDRRRDVDDRVDRVRDVRD
VRDIV
)1())1(())1((
)(
)1())1(())1((
)1()1()1(
)1()1(
2
2
2
2
222
2
22
−+++
−+++−++=−
−+++
−+++−++=−
−+++
−+++−−+++=−
−+++
−−−−−=−
96
Finalmente, se obtiene que la eficiencia del convertidor está dada por:
( )( )( )( ) ( )( )ducigbtbatbatducL
ucducLbat
VDVDVRDVRDDDRDRVRDRRRD
−+++−++−+++
=11
12
2
η
Con esto hemos obtenido la eficiencia de un convertidor Buck en función
del voltaje del banco de condensadores, del voltaje de la batería, y del duty aplicado a
los IGBT’s.
Ahora, nos interesa expresar la eficiencia como función de la corriente
entregada, para ello se procederá como sigue.
De la ecuación (1) se obtiene el duty cycle necesario dadas las
condiciones de corriente y voltajes. Luego, se tiene:
0)(
)1()1()(
2
2
=−+++−−+++
−−−−=−+++
dducigbtbatLdLdLucLbatL
ducigbtbatLdLucLLbat
DVVVDVDVIDRIRIRRDRI
VDVDVDVIRDIRRDIR
Agrupando términos,
( ) ( )
( ) ( )Lbat
LducLducLbatLdigbtbatdLdigbtdbat
ducLducLdigbtbatLdLbat
IRIRRRVVIRIRVVVIRVVV
D
VVIRRRDVVVIRDIR
2)(4
:por dado estaduty el Luego,
0
2
2,1
2
++++−+−+±+−+=
=++++++−+−
Ahora, reemplazando este resultado en la ecuación (2) se obtendrá la
eficiencia en función de los voltajes y corrientes.
97
ANEXO Nº 2: ANÁLISIS DE EFICIENCIA DEL CONVERTIDOR BOOST
IGBT – ON
Convertidor Boost
IGBT – OFF
Nota: El IGBT en conducción se modela como una fuente de voltaje constante.
Figura A2.1: Convertidor Buck y sus modos de operación
Cuando el IGBT está en ON
( )( )
bat
condbatc
igbtLLucucL
igbtLLLucuc
RVVI
VIRRVVVVIRRV
−=
−+−=
=++++− 0
98
Cuando el IGBT está en OFF
( )( )
bat
condbatLc
batLc
conddLDLucucL
condDLLDLucuc
RVVII
IIIVVIRRRVV
VVVIRRRV
−+=
+=−−++−=
=++++++− 0
En régimen, el voltaje medio de la bobina en un periodo es cero, 0→lV
( )( ) ( ) ( )( ) 01 =−++−−−++−− condLucLdducLucLigbtuc VIRRRVVDIRRVVD (3)
Balance de Carga en el Condensador
( )
( ) 01
01
=−
+−
=
−+−+
−
bat
condbatL
bat
condbatL
bat
condbat
RVVID
RVVID
RVVD
batL ID
I)1(
1−
−= ( ) altaBaja ID
I−
−=1
1 (4)
Ahora, de la ecuación (3), se obtiene:
Ialta: Lado de las Baterías.
Ibaja: Lado de los condensadores.
99
( )
batbatDLuc
DLuc
batDLuc
igbtbatDbatuc
batDLuc
batcond
batbat
DLucigbtDcond
bat
batDLucuc
condDigbtbat
batcondDLucuc
condDigbtLDLucuc
condDigbtLDLucuc
condDLDLLucigbtuc
condDLDLucucigbtLLucuc
VRDRDRR
RDRRRDRDRR
VRDDVRDV
RDRDRRRDV
VRD
RDRRDVVDVRD
RDRDRRV
VDVDDVRDVVRDRRV
VDVDDVIRDRRV
VDVDDVIRDRRV
VDVDIRDIRRDVV
VDVDIRRRDVDDVDIRRDV
22
2
2
2
)1()1()1(
)1()1()1()1(
)1()1()1(
)1()1()1(
)1()1()1(
)1()1()1(
))1((
)1()1())1((
0)1()1())1((
0)1()1()1()(
0)1()1())(1()1()(
−+−++−++
+−+−++
−+−−
−+−++−
=
−−++
−+−+−
−+−++=
−+−++−−
−++=
−+−++−++=
=−−−−−−++−
=−−−−−−+−−
=−−−−++−−−+−+−
Luego,
( ) ( ) ( ) ( )( )
( ) ( ) batducL
batducLigbtbatdbatucbatcond RDRDRR
VRDRRVDRDVRDVRDV 2
2
111111
−+−++
−+++−−−−−=
Por otra parte de la ecuación (4) se sabe que:
( ) ( ) ( ) ( )( )( ) ( ) ( )( ) ( )
( ) ( ) ( ) ( )( ) ( ) ( )( )batducLbat
batbatigbtbatdbatucbatL
batbatbatducLbat
batducLigbtbatdbatucbatL
bat
batcondL
RDRDRRRD
VRDVDRDVRDVRDI
VRDRDRDRRRD
VRDRRVDRDVRDVRDI
RVV
DI
2
22
2
2
111
1111
11
111
1111
:obtiene se doreemplazan que loPor
11
−+−++−
−−−−−−−=
−−
−+−++−
−+++−−−−−=
−−
=
100
Con lo que se obtiene que IL está dado por:
( ) ( )
( ) ( ) batdLuc
batigbtducL RDRDRR
VDDVVDVI 211
11−+−++−−−−−
= (5)
Ahora, definiendo la eficiencia como la relación entre la potencia de salida y la potencia
de entrada, se tiene:
( ) ( )( )batLbatucLuc
batbatbatbat
in
out VIDRV
DIV
IVIRPP
+−−
=+
== 112
η (6)
Reemplazando IL, se obtiene:
( ) ( ) uc
bat
batdLuc
uc
batbat
uc
igbtbat
uc
dbatbat
VV
DRDRDRR
VVRDV
VDRDVVRDDR
)1(11
)1()1()1()1(2
3232
−+−+−++
−−−−−−−=η
Finalmente, la eficiencia en función del voltaje en las baterías, condensadores, y el duty
cycle aplicado al convertidor, queda definida como:
( ) ( ) ( ) ( )( )
( ) ( ) batdLuc
uc
batdLuc
uc
igbt
uc
dbat
RDRDRRVVRDRRD
VV
DVVDDR
2
2
11
11111
−+−++
−++−+
−−−−
=η (7)
Ahora, como interesa expresar la eficiencia en función de la corriente
entregada, se deberá proceder como sigue.
101
De la ecuación (5) se obtiene el duty cycle necesario dadas las condiciones
de corriente y voltajes. Luego, se tiene:
( )[ ] ( ) 02
2)(
2
2
=++−+++++−++−
+−−+−=+−+−++
batducLbatducLbatigbtdLbatdLbat
batbatigbtdducLbatLbatLbatLDLDLLuc
VVVIRRRRDVVVIRRDIR
DVVDVDVVVIRDIDRIRIDRIRIRR
Luego, el duty estará dado por:
( ) ( )[ ] ( )[ ]Lbat
batducLucLdbatLbatigbtbatdLbatdLbatdigbtbatd
IRVVVIRRRRIRVVVIRRIRRVVV
D2
422 2
2,1
++−+++−−+++±++−+=
Ahora, reemplazando este resultado en la ecuación (6) se obtendrá la
eficiencia en función de los voltajes y corrientes.
102
ANEXO Nº 3:PROGRAMA DE SIMULACIÓN MÉTODO DEL GRADIENTE
%
% Resulucion Problema de Control Optimo NO Lineal para la Distribucion de Energia en un HEV
%
% M E T O D O D E L G R A D I E N T E
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y = simular(archivo_entrada, archivo_salida)
[I_uc_p, I_BB_Alta, I_Carga, I_Bat, V_bat, V_uc, P_load, velocidad] = obtener_datos(archivo_entrada);
dT = 0.098625; % Tiempo de Muestreo
C = 20.454545; % Capacidad del Banco de Ultracapacitores
MAX_T = length(I_uc_p); % Largo de la Muestra
MAX_ITERACION = 65; % Maximo de Iteracion Metodo del Gradiente
MAX_A = 1; % Maximo de Iteracion--Correccion de Restricciones
%Fi = V_uc(MAX_T);
SOC_uc_lim = .5*C*300^2;
I_lim_pos = 180;
I_lim_neg = -180;
I_uc = 1.3*I_Carga.*(I_Carga>0) + 2.2*I_Carga.*(I_Carga<0); % Historia Nominal del Control.
I_uc = (I_uc.*not(I_uc>I_lim_pos)+I_lim_pos.*(I_uc>I_lim_pos)).*(I_uc>I_lim_neg) + I_lim_neg.*not(I_uc>I_lim_neg);
for a=1:MAX_A
condicion_inicial = condiciones_iniciales;
SOC_bat(1) = condicion_inicial(1);
SOC_uc(1) = condicion_inicial(2);
for i=1:MAX_ITERACION
for t=1:MAX_T
V_uc(t) = sqrt(2/C*SOC_uc(t));
[eff_bat, eff_cap, eff_ucap] = sim_eficiencia(V_bat(t), V_uc(t), I_uc(t), P_load(t)); %inicialmente decia V_bat(t)
eff_BB(t) = eff_cap;
103
% Simulacion del Sistema (Se utiliza como entrada P_load, y un I_uc "nominal"
SOC_bat(t+1)= SOC_bat(t) - P_load(t)*eff_bat*dT + I_uc(t)*sqrt(2/C*SOC_uc(t))*eff_BB(t)*eff_bat*dT;
SOC_uc(t+1) = SOC_uc(t) - I_uc(t) * sqrt(2/C*SOC_uc(t)) * eff_ucap * dT;
J_opt(t) = (SOC_bat(t+1) - SOC_bat(t))/3600; % Funcional de Costo
if i==MAX_ITERACION & a==MAX_A
break
end
% Calculo de condiciones de Optimalidad
if t==MAX_T
I_uc_t_1 = 0;
else
I_uc_t_1 = I_uc(t+1);
end
[dV_uc_SOC_uc, dV_uc_I_uc, deff_uc_V_uc, deff_uc_I_uc, ddSOC_bat_I_uc, dI_uc_SOC_uc] = derivadas(SOC_bat(t), SOC_uc(t), I_uc_t_1, I_uc(t), P_load(t), eff_bat, eff_BB(t));
F(1,1,t) = 1; %dF1/dSOC_bat
F(2,1,t) = 0; %dF2/dSOC_bat
F(1,2,t) = (dI_uc_SOC_uc * sqrt((2/C)*SOC_uc(t)) * eff_BB(t) * eff_bat * dT)+...
(I_uc(t) * eff_BB(t) * eff_bat * dV_uc_SOC_uc * dT) + ...
(I_uc(t) * deff_uc_V_uc * dV_uc_SOC_uc * eff_bat * sqrt((2/C)*SOC_uc(t)) * dT); %dF1/dSOC_uc
F(2,2,t) = 1 - dI_uc_SOC_uc * sqrt((2/C)*SOC_uc(t)) * eff_ucap * dT - I_uc(t) * dV_uc_SOC_uc * eff_ucap * dT; %dF2/dSOC_uc
G(1,1,t) = sqrt((2/C)*SOC_uc(t)) * eff_BB(t) * eff_bat * dT + ...
I_uc(t) * dV_uc_I_uc * eff_BB(t) * eff_bat * dT + ...
I_uc(t) * sqrt((2/C)*SOC_uc(t)) * deff_uc_I_uc * eff_bat * dT; %dF1/dI_uc
G(2,1,t) = - sqrt((2/C)*SOC_uc(t)) * eff_ucap * dT - I_uc(t) * dV_uc_I_uc * eff_ucap * dT; %dF2/dI_uc
L_x(1,1,t) = 0;
L_x(2,1,t) = dI_uc_SOC_uc * sqrt((2/C)*SOC_uc(t)) * eff_BB(t) * eff_bat * dT +...
I_uc(t) * eff_BB(t) * eff_bat * dV_uc_SOC_uc * dT + ...
I_uc(t) * deff_uc_V_uc * dV_uc_SOC_uc * eff_bat * sqrt((2/C)*SOC_uc(t)) * dT;
104
L_u(t) = ddSOC_bat_I_uc;
end
Funcion_Costo = -sum(J_opt) + ((SOC_uc(MAX_T + 1) - SOC_uc(1))/3600)^2
Descarga_Bat_opt = -sum(J_opt)
if i==MAX_ITERACION & a==MAX_A
break
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Computo de Lambda
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lambda(:,MAX_T+1) = [0; 2*((SOC_uc(MAX_T + 1) - SOC_uc(1)))/3600]; %Inicialmente en watt hora... creo que no es asi
for t=MAX_T:-1:1
lambda(:,t) = F(:,:,t)'*lambda(:,t+1) + L_x(:,:,t);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Condicion de Optimalidad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for t=1:MAX_T
Hu(t) = L_u(t) + lambda(:,t+1)'*G(:,1,t);
end
if i==1 & a==1
Hu_inicial = Hu;
end
K = 0.0001;
I_uc = I_uc - K*Hu';
105
%figure,plot(1:MAX_T+1,lambda(2,:)),title('Lambda 2');
%figure,plot(1:MAX_T,L_u),title('L_u');
%figure,plot(1:MAX_T,Hu),title('Hu');
%figure,plot(1:MAX_T,I_uc),title('Iuc');
end
if a==MAX_A
break
end
SOC_uc_copy = SOC_uc(1,1:MAX_T);
I_uc = (0.00000001*(SOC_uc_copy > SOC_uc_lim)'.*(I_uc<=0) + I_uc.*not((SOC_uc_copy > SOC_uc_lim)'.*(I_uc<=0)));
V_uc = sqrt(2/C*SOC_uc);
fprintf('---------------------------------------------------------------------------------------------\n')
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FIN METODO DEL CRADIENTE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure,plot(1:MAX_T,Hu_inicial,1:MAX_T,Hu);
title('H_u');
legend('H_u inicial','H_u final');
figure,subplot(3,1,1),plot(1:MAX_T,I_uc_p,1:MAX_T,I_uc);
title('Corriente en los Condensadores');
legend('I_u_c real','I_u_c optima');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Simulacion del Sistema con Control de Carga en los Condensadores y Limite de Corriente en la Bateria
% Comparacion con resultado Control Optimo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
106
SOC_bat_pi(1) = condicion_inicial(1);
SOC_uc_pi(1)=condicion_inicial(2);
for t=1:MAX_T
V_uc(t) = sqrt(2/C*SOC_uc_pi(t));
[eff_bat, eff_cap, eff_ucap] = sim_eficiencia(V_bat(t), V_uc(t), I_uc_p(t), P_load(t));
eff_BB_pi(t) = eff_cap;
SOC_bat_pi(t+1)= SOC_bat_pi(t) - P_load(t) * eff_bat * dT + I_uc_p(t) * sqrt(2/C*SOC_uc_pi(t)) * eff_BB_pi(t) * eff_bat * dT;
SOC_uc_pi(t+1) = SOC_uc_pi(t) - I_uc_p(t)*sqrt(2/C*SOC_uc_pi(t))* eff_ucap *dT;
J_pi(t) = (SOC_bat_pi(t+1) - SOC_bat_pi(t))/3600;
end
Descarga_Bat_pi = -sum(J_pi)
subplot(3,1,2),plot(0:MAX_T,sqrt(2/C*SOC_uc_pi),0:MAX_T,sqrt(2/C*SOC_uc)); %En Watt Hr
title('Estado de Carga de los Condensadores');
legend('SOC_u_c Control de Carga','SOC_u_c Control Optimo');
subplot(3,1,3),plot(0:MAX_T,SOC_bat_pi/3600,0:MAX_T,SOC_bat/3600); %En Watt Hr
title('Estado de Carga de la Bateria');
legend('SOC_b_a_t Control de Carga','SOC_b_a_t Control Optimo');
eff_BB = eff_BB.*(eff_BB<1) + 1./eff_BB.*(eff_BB>=1);
eff_BB_pi = eff_BB_pi.*(eff_BB_pi<1) + 1./eff_BB_pi.*(eff_BB_pi>=1);
figure,plot(1:MAX_T,eff_BB_pi,1:MAX_T,eff_BB);
title('eff_u_c');
legend('eff_u_c Control de Carga','eff_u_c Control Optimo');
y = [sqrt(2/C*SOC_uc(1:length(SOC_uc)-1)); I_uc'; SOC_bat(1:length(SOC_bat)-1)/3600; I_Carga'; sqrt(2/C*SOC_uc_pi(1:length(SOC_uc_pi)-1)); I_uc_p'; SOC_bat_pi(1:length(SOC_bat_pi)-1)/3600; velocidad';P_load'];
% y = V_uc_opt I_uc_opt Soc_bat_opt I_carga SOC_uc_pi I_uc_pi SOC_bat_pi velocidad P_load
if nargin==2
fid = fopen(archivo_salida,'w');
107
fprintf(fid,'%9.4f, %9.4f, %9.4f, %9.4f, %9.4f, %9.4f, %9.4f, %9.4f, %9.4f\n',y);
fclose(fid);
end
function y = condiciones_iniciales()
SOC_bat_t0 = 59400000; %Carga inicial de las Baterias. Si estan 100% cargadas, SOC_bat = V*Ah*3600 = 330*50*3600
SOC_uc_t0 = 841000; %CArga inicial de los Condensadores. Se asume que 100% de carga corresponde a 290 [V],
%Luego, SOC_uc = 0.5*C*V^2 = 0.5*20*290^2 = 841000
%por lo general parte con V_cond = 278
y = [SOC_bat_t0 SOC_uc_t0];
%Condiciones iniciales para las variables SOC_bat, SOC_uc, Lambda1 y lambda2
%----------------------------------------------------------------------------
function [I_uc_p, I_BB_Alta, I_Carga, I_Bat, V_bat, V_uc, P_load, velocidad] = obtener_datos(archivo)
datos = csvread(archivo);
datos = inicializa(datos); %Setea los datos erroneos en la medicion de corriente en 0
P_load = datos(:,4).*datos(:,6); %Potencia requerida por la carga
datos_entrada = [datos P_load];
I_uc_p = datos_entrada(:,1);
I_BB_Alta = datos_entrada(:,2);
I_Carga = datos_entrada(:,4);
I_Bat = datos_entrada(:,5);
V_bat = datos_entrada(:,6);
V_uc = datos_entrada(:,7);
P_load = datos_entrada(:,16);
velocidad = datos_entrada(:,10);
108
function [eff_bat, eff_cap, eff_ucap] = sim_eficiencia(V_bat, V_uc, I_uc, P_load)
if I_uc > 0
eff_cap = eff_boost(V_bat,V_uc,I_uc);
eff_ucap = 1/0.95;
elseif I_uc < 0
eff_cap = 1/eff_buck(V_bat,V_uc,-I_uc); %se cambio por 1/eff
eff_ucap = 0.95;
else
eff_cap = 1;
eff_ucap = 1;
end
if P_load >= 0;
eff_bat = 1.25;
else P_load <0;
eff_bat = 0.75;
end
% Calculo de Eficiencia de Convertidor Buck
function y=eff_buck(V_bat, V_cond, I_uc)
%Parametros Conocidos del Convertidor
R_l = 0.037; %[Ohm]
R_cond = 0.135; %[Ohm]
R_bat = 0.342; %[Ohm] Se debe incorporar la dependencia del SOC inicalmente decia 0.312
D = (V_bat - sqrt((-V_bat)^2 - 4*R_bat*I_uc*((R_l + R_cond)*I_uc + V_cond)))/(2*R_bat*I_uc);
eff_buck = (R_bat*(D)^2 + (R_l + R_cond))*V_cond/(D*(R_l + R_cond)*V_bat + R_bat*V_cond*(D)^2);
y=eff_buck;
109
% Calculo de Eficiencia de Convertidor Boost
function y=eff_boost(V_bat, V_cond, I_uc)
%Parametros Conocidos del Convertidor
R_l = 0.037; %[Ohm]
R_cond = 0.135; %[Ohm]
R_bat = 0.342; %[Ohm] Agregar la dependencia del SOC inicalmente decia 0.312
D = (V_bat + 2*R_bat*I_uc - sqrt((-2*R_bat*I_uc - V_bat)^2 - 4*R_bat*I_uc*((R_l + R_cond + R_bat)*I_uc...
- V_cond + V_bat)))/(2*R_bat*I_uc);
eff_boost = (R_bat*(1-D)^2 + (R_l + R_cond)*(1-D)*(V_bat/V_cond))/(R_l + R_cond + R_bat*(1-D)^2);
y=eff_boost;
function [dV_uc_SOC_uc, dV_uc_I_uc, deff_uc_V_uc, deff_uc_I_uc, ddSOC_bat_I_uc, dI_uc_SOC_uc] = derivadas(SOC_bat, SOC_uc, I_uc_t_1, I_uc, P_load, eff_bat, eff_uc)
R_l = 0.037; %[Ohm]
R_cond = 0.135; %[Ohm]
R_bat = 0.342; %[Ohm] Agregar la dependencia del SOC inicialmente decia 0.312
V_bat = 315; %[Volts] Inicialmente dedia 330
C = 20.454545; %Capacidad del Banco de Ultracapacitores
%Otros Parametros
dT = 0.098625; %Delta T en la medicion de P_load
%Se determino dT midiendo el tiempo que se demora en capturar los datos
%ver Archivo time1 y 2 en la carpeta tiempo de muestreo. Se dividio el tiempo
%total por el numero de datos, en este caso 4000. Se promediaron los resultados de
%ambos archivos.
%Derivadas del Voltaje en los Ultracapacitores con respecto al SOC_uc y a I_uc
%-----------------------------------------------------------------------------
% dV_uc 1
% dV_uc_SOC_uc = ------- = ---------------------
% dSOC_uc (2*C*SOC_uc_t)^1/2
110
dV_uc_SOC_uc = (2*C*SOC_uc)^-(1/2);
% 1 I_uc_t * dT
% dV_uc_I_uc = --- * ---------------------
% C I_uc(t+1) - I_uc(t)
if (I_uc_t_1 - I_uc)==0
dV_uc_I_uc = 0;
else
dV_uc_I_uc = 0;%((1/C)*I_uc_t_1*dT)/(I_uc_t_1 - I_uc);
end
%Derivadas de la eficciencia en los Ultracapacitores con respecto al SOC_uc y a I_uc
%-----------------------------------------------------------------------------------
%Para ver como se han obtenido estas expresiones ver programa "simbolic_dif_eff_BB.m"
% deff_BB
% deff_uc_V_uc = ---------
% V_uc
% deff_uc
% deff_uc_I_uc = ---------
% I_uc
% Voltaje en los condensadores en funcion de SOC_uc
%-----------------------------------------------------
V_cond = sqrt((2/C)*SOC_uc);
if (P_load > 0) %eff_boost Inicialmente dice P_load
deff_uc_V_uc = (I_uc*R_l+I_uc*R_cond)/V_cond^2;
deff_uc_I_uc = -(R_l+R_cond)*(V_bat^2*(V_bat^2-4*R_bat*I_uc^2*R_l-4*R_bat*I_uc^2*R_cond+4*R_bat*I_uc*V_cond)^(1/2)-V_bat^3+4*V_bat*R_bat*I_uc^2*R_l+4*V_bat*R_bat*I_uc^2*R_cond-4*V_bat*R_bat*I_uc*V_cond+2*V_cond*(V_bat^2-4*R_bat*I_uc^2*R_l-4*R_bat*I_uc^2*R_cond+4*R_bat*I_uc*V_cond)^(1/2)*R_bat*I_uc)/(V_bat^2-4*R_bat*I_uc^2*R_l-4*R_bat*I_uc^2*R_cond+4*R_bat*I_uc*V_cond)^(1/2)/(V_bat^2-V_bat*(V_bat^2-4*R_bat*I_uc^2*R_l-4*R_bat*I_uc^2*R_cond+4*R_bat*I_uc*V_cond)^(1/2)+2*R_bat*I_uc*V_cond)/V_cond;
else
111
deff_uc_V_uc = (-I_uc*R_l-I_uc*R_cond)/(2*I_uc^2*R_l*R_cond-2*I_uc*R_l*V_cond-2*V_cond*I_uc*R_cond+V_cond^2+I_uc^2*R_cond^2+I_uc^2*R_l^2);
deff_uc_I_uc = (V_cond*R_l+R_cond*V_cond)/(2*I_uc^2*R_l*R_cond-2*V_cond*I_uc*R_l-2*V_cond*I_uc*R_cond+I_uc^2*R_l^2+V_cond^2+I_uc^2*R_cond^2);
end
% Derivada de la variacion del SOC_bat con respecto a I_uc
%---------------------------------------------------------
ddSOC_bat_I_uc = sqrt((2/C)*SOC_uc) * eff_uc * eff_bat * dT + ...
I_uc * dV_uc_I_uc * eff_uc * eff_bat * dT + ...
I_uc * sqrt((2/C)*SOC_uc) * deff_uc_I_uc * eff_bat * dT;
% Derivada de la I_uc con respecto a SOC_uc
%---------------------------------------------------------
% dI_uc dI_uc dV_uc
%--------- = --------- * ---------
% dSOC_uc dV_uc dSOC_uc
V_uc = sqrt((2/C)*SOC_uc);
dI_uc_SOC_uc = 0;
if I_uc > 0
D = (V_bat + 2*R_bat*I_uc - sqrt((-2*R_bat*I_uc - V_bat)^2 - 4*R_bat*I_uc*((R_l + R_cond + R_bat)*I_uc - V_uc + V_bat)))/...
(2*R_bat*I_uc);
dI_uc_SOC_uc = 0;%(1/(R_l + R_cond + ((1-D)^2)*R_bat)) * dV_uc_SOC_uc;
elseif I_uc < 0
D = (V_bat - sqrt((-V_bat)^2 - 4*R_bat*I_uc*((R_l + R_cond)*I_uc + V_uc)))/(2*R_bat*I_uc);
dI_uc_SOC_uc = 0;%(-1/(R_l + R_cond + D^2*R_bat)) * dV_uc_SOC_uc;
end
112
ANEXO Nº 4: DETALLE DE RESULTADOS DE SIMULACIONES
Se adjunta tabla con los resultados de simulaciones del software de control
óptimo. Se simularon 30 recorridos y se compara con la descarga en las baterías cuando
se emplea el sistema de control de carga de los ultracapacitores.
Control de Carga Control Optimo Teoricodato1_02-07 143.3 119.7 16.5%dato2_02-07 449.9 441.2 2.0%dato3_02-07 602.3 627.0 0.0%dato4_02-07 638.0 626.8 1.8%dato5_02-07 406.7 437.0 0.0%dato6_02-07 351.6 326.2 7.2%dato7_02-07 312.3 289.9 7.2%dato8_02-07 659.2 683.4 0.0%dato9_02-07 417.6 416.4 0.3%dato1_03-07 217.2 198.5 8.6%dato2_03-07 321.2 321.3 0.0%dato3_03-07 407.1 405.2 0.5%dato4_03-07 471.5 476.0 0.0%dato5_03-07 217.7 169.2 22.3%dato6_03-07 203.5 195.4 4.0%dato7_03-07 403.5 365.2 9.5%dato8_03-07 601.92 641.3 0.0%dato9_03-07 264.94 219.2 17.2%dato3_09-06 412.17 444.8 0.0%dato1_19-12 589.67 567.2 3.8%dato1_27-01 419.22 415.2 1.0%
dato_prac_soc02-04-03 376.85 372.3 1.2%dato_prac_soc01-04-03 405.54 393.5 3.0%dato_prac_soc03-04-03 400.11 386.5 3.4%
dato_prac_soc06_05-03 312.48 268.9 13.9%dato_prac_soc02_08-03 575.43 541.8 5.8%dato_prac_soc05_10-03 434.17 430.8 0.8%dato_prac_soc03_26-03 425.7 420.9 1.1%dato_prac_soc04_26-03 406.4 372.0 8.5%dato_prac_soc03_30-03 399.0 374.2 6.2%
Promedio 4.9%
Descarga de las Baterias Mejora % desc. batNombre Archivo
Tabla A4.1: Simulación de la descarga en las baterías con sistema de control
óptimo y control con control de carga.
Nota: El caso en que se tiene una mejora de 0%, negativa en estricto rigor, se
debe a que los condensadores quedan con un estado de carga mayor que en la estrategia
de control de carga.
113
ANEXO Nº 5: TEOREMA DE APROXIMACIÓN UNIVERSAL DE FUNCIONES
Sea ( )⋅ϕ una función continua, no constante, acotada y monótonamente
creciente. Sea Im0 una representación del hipercubo unitario de dimensión m0, [0,1]m0. El
espacio de funciones continuas en Im0 está dado por C(Im0). Luego, dada cualquier
función ( )0mICf ∈ y un 0>ε , debe existir una constante m1 y un conjunto de
constantes reales iα , ib , y ji,ω , donde i = 1, …, m1 y j = 1, …, m0 de modo que se
puede definir:
( ) ∑ ∑= =
+⋅=
1
1
0
1,01 ,,
m
ii
m
jjjiim bxxxF ωϕαK
como una aproximación de la función ( )⋅f , de modo que:
( ) ( ) ε<− 0101 ,,,, mm xxfxxF KK
para todos los x1 , x2, …,xm0 que pertenecen al espacio de entrada.
114
ANEXO Nº 6: DETALLE DE LA RED NEURONAL ENTRENADA
La siguiente tabla muestra los coeficientes (pesos) de la red neuronal
implementada.
Tabla A6.1: Coeficientes de la Red Neuronal obtenidos con MATLAB
I(1) I(z-1) P(1) P(z-1) V(1) V(z-1) E(1) E(z-1) offset
0.09326166 0.0062637 -0.31624943 -0.01443101 0.004894 -0.00449948 -0.00024917 0 0.11139364
0.00823758 0 0.00117113 0.00015189 0.00016281 -0.00016264 0 0 -0.80734457
-0.09842342 -0.00619975 0.24583612 0.02001523 -0.00457347 0.00488039 0 0 0.2775231
0.01909002 0 0.00175983 0.00043487 -0.00019756 0 0 8.7304E-05 0.81467831Neurona 4
Coeficientes Red Neuronal
Primera Capa
Neurona 1
Neurona 2
Neurona 3
N1 N2 N3 N4 offset15.907036 147.254062 16.0595611 97.8801759 14.3275784
Segunda Capa
Para implementar la red en el DSP se utilizó la representación de los
números en formato Q15. La tabla A6.2 muestra el resultado.
Tabla A6.2: Representación de los coeficientes en formato Q15 en el DSP
I(1) I(z-1) P(1) P(z-1) V(1) V(z-1) E(1) E(z-1) offset
3055 205 -10362 -472 160 -147 -8 0 3650
269 0 38 4 5 -5 0 0 -26455
-3225 -203 8055 655 -149 159 0 0 9093
625 0 57 14 -6 0 0 2 26695
Neurona 3
Neurona 4
Coeficientes Red Neuronal Q15Primera Capa
Neurona 1
Neurona 2
115
N1 N2 N3 N4 offset2036 18848 2055 12528 1833
Segunda Capa
Estos números fueron implementados en una tabla en la memoria de
programa del DSP, de esta forma se permite el acceso simultaneo para su multiplicación,
a el dato proveniente de la captura análoga digital y el peso correspondiente, en una sola
instrucción.
Finalmente, la siguiente tabla ilustra cuales serían los pesos reales de la
Red al utilizar la representación en formato Q15. Esto es porque, en dicha representación
se incurre en una pequeña perdida de información dada por la resolución del formato.
Tabla A6.3: Coeficientes reales de la Red Implementada en el DSP.
I(1) I(z-1) P(1) P(z-1) V(1) V(z-1) E(1) E(z-1) offset
0.0932312 0.0062561 -0.31622314 -0.0144043 0.00488281 -0.00448608 -0.00024414 0 0.11138916
0.00820923 0 0.00115967 0.00012207 0.00015259 -0.00015259 0 0 -0.80734253
-0.09841919 -0.00619507 0.24581909 0.01998901 -0.00454712 0.00485229 0 0 0.27749634
0.01907349 0 0.0017395 0.00042725 -0.00018311 0 0 6.1035E-05 0.81466675
Coeficientes Red Neuronal Ajustados Q15
Primera Capa
Neurona 1
Neurona 2
Neurona 3
Neurona 4
N1 N2 N3 N4 offset15.90625 147.25 16.0546875 97.875 14.3203125
Segunda Capa
116
ANEXO Nº 7: TABLA DE VALIDACIÓN RED NEURONAL
Tabla A7.1: Resultados de Validación Red Neuronal
Error rms Corriente Media (absoluta)
dato1_02-07 0.15 19.6dato2_02-07 0.02 36.2 (*)dato3_02-07 0.15 36.9dato4_02-07 0.24 36.0dato5_02-07 0.07 45.5dato6_02-07 0.10 41.6 (*)dato7_02-07 0.10 35.3dato8_02-07 0.27 62.4dato9_02-07 0.02 42.6 (*)dato1_03-07 0.11 23.5dato2_03-07 0.02 30.8 (*)dato3_03-07 0.03 27.7dato4_03-07 0.09 34.4dato5_03-07 0.13 23.8dato6_03-07 0.11 24.5dato7_03-07 0.01 42.1 (*)dato8_03-07 0.15 34.2dato9_03-07 0.12 28.5dato3_09-06 0.05 35.8dato1_19-12 0.03 56.9dato1_27-01 0.02 44.4
dato_prac_soc02-04-03 0.03 41.7dato_prac_soc01-04-03 0.07 50.6dato_prac_soc03-04-03 0.07 37.5dato_prac_soc06_05-03 0.09 26.2dato_prac_soc02_08-03 0.03 42.4dato_prac_soc05_10-03 0.03 39.2dato_prac_soc03_26-03 0.03 43.4dato_prac_soc04_26-03 0.07 36.4dato_prac_soc03_30-03 0.04 44.2
Promedio 0.09 37.2
0.24%(*) Datos utilizados durante el entrenamientoNota: - En los valores promedio no se consideraron los datos de entrenamiento
Nombre ArchivoEstimación de Corriente Optima
% Error de Estimación
117
ANEXO Nº 8: FORMATO NUMÉRICO DIGITAL QM,N (QN)
En un formato Qm,n se utilizan m bits para representar en complemento de 2
la parte entera de un número y n bits para representar en complemento de 2 la parte
fraccionaria. Son necesarios m + n + 1 bits para almacenar un número en formato Qm,n.
El bit extra es usado para almacenar, en la posición más significativa, el signo del
número. El rango entero representable es (-2m, 2m – 2-n) con una resolución de 2-n.
A modo de ejemplo, para el caso de un sistema digital de 16 bits y su uso
con una representación numérica con formato de Q4,12 ó Q12, se utilizan 3 bits para
representar números enteros, 12 para cantidades fraccionarias y 1 bit de signo.
S E E E d d d d d d d d d d d d
La resolución del formato es:
50002441406.02112 =
La correspondencia entre la magnitud interpretada y el valor de 16 bit del
DSP es la siguiente:
( ) ( )32767:3276889997558593.7:8 −⇔−
o en formato hexadecimal
( ) ( )FFFh7:800089997558593.7:8 −⇔−
Gráficamente lo anterior es representado de la siguiente manera:
118
Figura A8.1: Correspondencia entre valores decimales y enteros para
representación digital en formato Q12.
De la misma forma en que se define el formato Q12 es posible definir
cualquier otro formato, por ejemplo: Q8, Q15, etc.
Reglas para la operación con números en este tipo de notación:
nmnm
mmm
QQQ
QQQ
+=⋅−
=+−
.2
.1
La multiplicación de dos números en formato Q12 se obtiene de la siguiente
forma:
Figura A8.2: Multiplicación de números en formato Q12.
Dado que la multiplicación suma el número de cifras decimales, el
resultado debe ser truncado para poder representarlo en 16 bits del DSP. Los 12
119
primeros bits, los menos significativos, se eliminan, quedando sólo los 16 bits más
significativos que representan el resultado de la multiplicación.
Se debe tener especial cuidado con la multiplicación, ya que es fácil que
ocurran overflow debido a la operación con números grandes. Por ello, es importante
tener claro el tipo de cantidades que se operan y los rangos que éstas ocupan.
120
ANEXO Nº 9: PROGRAMA IMPLEMENTADO EN EL DSP
Se adjunta el programa implementado en el DSP.
;*************************************************************** ;* * ;* Implementación de Red Neuronal en DSP * ;* Control de Flujos de Energia en HEV * ;* * ;*************************************************************** ;1.- Funciona el Control de Corriente en el lado de baja tensión. ;2.- Funciona la transmisión de los distintos datos al PC. ;3.- Funciona el Cálculo de I_ref por la Red Neuronal ;4.- Se corrigió el error de 3% en la medición de voltaje ;5.- Probar la velocidad de muestreo de la Red (10 - 11 Hz) ;================================================================ .include "243_dsk.h" ;============================================================ ;================================================================ ;Definición de variables .bss TABLA_CARGA, 1 ;dir 514 .bss CODIGO_FALLA, 1 ;dir 584 .bss IFILT, 1 ; 585 .bss V_BATT, 1 ; 586 .bss V_COND, 1 ; 587 .bss IREF, 1 ; 588 .bss ANA3, 1 .bss VELOCIDAD, 1 ; 590. .bss ANA5, 1 .bss REF_CARGA, 1 ; 592 .bss AH, 1 ; 593 .bss I_UC, 1 ; 96 .bss I_BB, 1 ; 600 .bss PWM, 1 ; 1 .bss ERROR, 1 ; 2 .bss IANTERIOR, 1 ; 3 .bss ACCALTO,1 ; 4 .bss ACCBAJO, 1 ; 5 .bss KP, 1 ; 6 .bss KI, 1 ; 7 .bss KP1, 1 ; 8 .bss KI1, 1 ; 9 .bss I_LIM, 1 ; 10 .bss V_LIM, 1 ; 11 .bss CERO, 1 ; 12 .bss FRECUENCIA, 1 ; 13 .bss MODO, 1 ; 16 .bss I_BATT, 1 ; 17 .bss ANA01, 1 ; 18 .bss ANA02, 1 ; 19 .bss ANA03, 1 ; 20 .bss ANA04, 1 ; 21 .bss IREF_TEMP, 1 ; 22 .bss IANTERIOR2, 1 ; 23 .bss PWM_TEMP, 1 ; 24
121
.bss CONTADOR_AH, 1 ; 25 .bss SIGN, 1 ; 26 .bss SIGN_TEMP, 1 ; 27 .bss CONT, 1 ; 28 .bss IANT_CARGA2, 1 ; 31 .bss SALIDA2, 1 ; 32 .bss TEMP,1 ; 33 .bss CARGA, 1 ; 35 .bss CONTADOR_RX, 1 ; 37 .bss CONTADOR_TX, 1 ; 38 .bss CONTADOR_COMM, 1 ; 39 .bss I_LOAD, 1 ; 42 .bss CONT_DIV, 1 ; 44 .bss DIVISION_ALTO,1 ; 45 .bss DIVISION_BAJO,1 ; 46 .bss V_BATT_2, 1 ; 48 .bss MULTIPLO,1 ; 49 .bss READY, 1 ; 53 .bss READY2, 1 ; 54 .bss CONTADORSPI, 1 ; 55 .bss CONTADORSPI_TX, 1 ; 56 .bss CONTADORSPI_RX, 1 ; 57 .bss DIRSPI, 1 ; 58 .bss BUFFERSCI, 1 ; 59 .bss FLAG_HISTERESIS, 1 ; 60 .bss FLAG_FALLA, 1 ; 61 .bss FLAG_ESCALA, 1 ; 62 .bss DIRECCION_PEDIDA, 1 ; 63 .bss REGISTRO_PRUEBA, 1 ; 64 .bss DIVISOR, 1 ; 65 ;*********** Variables Red Neuronal *********************** .bss CONTADOR_REFERENCIA, 1 .bss TEMP_NEURONA, 2 .bss NEURONA, 1 .bss I_NEURONA, 4 .bss COMPRUEBA, 1 .bss DATOS_RED, 9 ;---------------------------------------------------------- ;Definición de variable global .global INICIO ;================================================================ ;================================================================ .sect "vectors" RSVECT B 1F00h INT1 B GISR1 ;Int externas INT2 B GISR2 ;Int Timer 1 INT3 B PHANTOM ; PM 6 Int level 3 INT4 B INT4_ISR ; PM 8 Int level 4 INT5 B INT5_ISR ; PM A Int level 5 INT6 B PHANTOM ; PM C Int level 6 ;================================================================ ;Inicializaciones generales .text
122
INICIO LDP #0h SETC INTM ;Interrupt mode, CLRC CNF ;DARAM config, 1=RAM para datos. CLRC SXM ;Sign extension, 0=supress extension. CLRC OVM ;Overflow mode, 0=resultado de overfl va al acc. SETC XF ;XF es un flag externo, 0=pin en low. SPLK #0000h, IMR ;Mascaras de interrupción (1-6). LDP #0E0h SPLK #068h, WDCR ;Desabilita el Watch Dog timer. ; Configuración PWM LDP #0E8h SPLK #00000h, T1CNT ;Inicializo contadores en 1. SPLK #00000h, T2CNT SPLK #00000h, T1CMPR ;Se inicia en PWM=0. SPLK #00000h, T2CMPR SPLK #00320h, T1PR ;Seteo Período timer a 833 ciclos SPLK #01187h, T2CON ;Seteo de control del contador 2. SPLK #01146h, T1CON ;Seteo de control del contador 1. SPLK #00045h, GPTCON ;enciendo los pwm. ;Configuración de Comparadores del modulo Capture SPLK #00h, CAPFIFO SPLK #0010001001010000b, CAPCON ;===================================================================== ; Borrar datos en la RAM ;===================================================================== LAR AR0,#0200h ; AR2 -> B0 start address MAR *,AR0 ; Set ARP=AR2 ZAC ; Set ACC = 0 RPT #0255 ; Set repeat cntr for 255+1 loops SACL *+ ; Write zeros to B0 RAM LDP #04h ;********************************************************************* ; Inicializacion Variables Red Neuronal ;******************************************************************* SPLK #00000h, CONTADOR_REFERENCIA SPLK #00001h, DATOS_RED ; peso del offset de la neurona SPLK #00001h, NEURONA ;===================================================================== ;Bloque de Configuración Puertos I/O LDP #000E1h ;Página 225 (7080h) SPLK #0301Fh, OCRA ;Registro de control de puertos de entrada y SPLK #0031Ch, OCRB ; salida. SPLK #0E000h, PADATDIR ;Configura los pines del Puerto A para lectura SPLK #0CF00h, PBDATDIR ;Configura los pines del Puerto B para lectura SPLK #06020h, PCDATDIR SPLK #00000h, PDDATDIR ;Bloque Conversores A/D LDP #00E0h SPLK #00000h, ADCTRL2 SPLK #3910h, ADCTRL1 ;Se inicia conversión de datos 0 y 1
123
ESPERA10 BIT ADCTRL1, 7 BCND ESPERA10, NTC LACL ADCFIFO1 ;Clear ADC FIFOs LACL ADCFIFO1 LACL ADCFIFO2 ;Clear ADC FIFOs LACL ADCFIFO2 ;Configuración SPI SPLK #00h, SPICCR SPLK #0Ah, SPIBRR SPLK #00000110b, SPICTL SPLK #040h, SPIPRI SPLK #10001111b, SPICCR ;===================================================================== ; Inicialización de rutina de comunicación ;===================================================================== SCI_INIT: LDP #00E0h SPLK #0027h, SCICCR ;1 stop bit,odd parity,8 char bits, ;async mode, idle-line protocol SPLK #0003h, SCICTL1 ;Disable RX ERR, SLEEP, TXWAKE SPLK #0003h, SCICTL2 ;Enable RX INT,enable TX INT SPLK #0000h, SCIHBAUD SPLK #0040h, SCILBAUD ;Baud Rate=38400 b/s (20 MHz SYSCLK) SPLK #0023h, SCICTL1 ;Relinquish SCI from Reset. SPLK #0060h, SCIPRI ;Prioridad baja para el SCI LAR AR1, #SCITXBUF ;Load AR0 with SCI_TX_BUF address LAR AR2, #SCIRXBUF ;Load AR1 with SCI_RX_BUF address ;================================================================ ;Bloque principal ;================================================================ ;Lectura de Ah y parametros en mem Flash CALL LEER_PARAM_FLASH CALL LEER_AH_FLASH LDP #04 LACL CERO SACL IANT_CARGA2 SPLK #0, MODO ;****** TEMPORAL ;================================================================ ;Seteo de interrupciones ;================================================================ LDP #0h LACC IFR ;Load ACC with Interrupt flags SACL IFR ;Clear all pending interrupt flags CLRC INTM ;Enable interrupts SPLK #011011b, IMR ;Desenmascaro (INT1 e) INT2 LDP #0E0h SPLK #0101b, XINT1CR ;Configuración de las interrupciones SPLK #0101b, XINT2CR ; externas.
124
LDP #0E8h SPLK #080h, EVIMRA ;habilita interrupción de periodo1. SPM #00h SPLK #03h, EVIMRC ;habilita interrupción de captura LDP #04h ;Se almacena el cero en el registro de LACL CERO ;integración del control de corriente de SACL IANT_CARGA2 ;referencia para que no parta en otro valor. ;================================================================ ;LOOP principal, dummy ;================================================================ LOOP LDP #04h LACL FRECUENCIA LDP #0E8h SACL T1PR LDP #0E1h ;Esta parte del Loop verifica que esté prendido BIT PCDATDIR, 8 ;el inversor principal de la camioneta para BCND NO_READY, NTC ;setear el bit Ready. LDP #04h SPLK #01h, READY SPLK #01h, READY2 B XXXX NO_READY LDP #04h SPLK #00h, READY BIT READY2, 15 ; CC ESCRIBIR_AH_FLASH, TC XXXX LDP #0E1h ;en el loop principal solo se verifica una BIT PDDATDIR,15 ;entrada digital para ver si el AH counter BCND RESETEA_AH, NTC ;tiene valores negativos, si es así se B LOOP ;resetea a cero la cuenta de AH en el DSP. RESETEA_AH LDP #04 LACL AH SPLK #00h, AH CC ESCRIBIR_AH_FLASH, NEQ ;la cuenta de AH en el DSP se guarda en el ;Registro de codigo de falla. B LOOP ;**************************************************************** ; FUNCIONES DE RED NEURONAL ;**************************************************************** CARGA_DATOS_RED ;;;;; OJO!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SETC SXM ;;;;; HAY QUE CORREGIR LA CORRIENTE DE LACC I_LOAD ;;;;; CARGA CUANDO ESTA ES NEGATIVA BCND CORRIGE_I_LOAD, LT ;;;;; CREO QUE POR UN FACTOR DE 0.85 CLRC SXM ;;;;; ESTO POR Efecto de Descalibracion del SACL DATOS_RED + 1; CORRIENTE;;;;; pedal SACL TEMP_NEURONA B NO_CORRIGE CORRIGE_I_LOAD SPM #3 LT I_LOAD MPY #03Ah ;0.85 EN Q6... se cambio por 0.9 PAC SACL DATOS_RED + 1
125
SACL TEMP_NEURONA SPM #0 CLRC SXM NO_CORRIGE SPM #3 LT TEMP_NEURONA MPY TEMP_NEURONA PAC RPT #2 SFR SACL DATOS_RED + 3 ; POTENCIA SPM #0 LACL VELOCIDAD SACL DATOS_RED + 5 ; VELOCIDAD LT VELOCIDAD MPY VELOCIDAD PAC RPT #4 SFR SACL DATOS_RED + 7 ; ENERGIA RET CALCULA_NEURONA_CAPA1 LDP #4 SPM #0 LAR AR6, #DATOS_RED + 8 ; Están en Q0 MAR *, AR7 LACC #0h MPY #0h ; PREG = 0 SETC SXM ; Se distingue en qué neurona LACC *, AR6 ; de la capa 1 está SUB #01h BCND N1, EQ SUB #01h BCND N2, EQ SUB #01h BCND N3, EQ SUB #01h BCND N4, EQ N1 RPT #8 MAC #NEURONA_1, *- ; Los pesos de la red están en Q15 B SUMA_OFFSET N2 RPT #8 MAC #NEURONA_2, *- B SUMA_OFFSET ;NEURONA_X corresponde a los pesos asignados N3 RPT #8 ;a cada neurona. MAC #NEURONA_3, *- B SUMA_OFFSET N4 RPT #8 MACD #NEURONA_4, *- SUMA_OFFSET APAC ; se suma el offset de la neurona LAR AR6, #TEMP_NEURONA MAR *, AR6 SACH *+ SACL *- SFL ; ver caso en que Q13 no alcance a SACH COMPRUEBA ; representar el número... esto es LACC COMPRUEBA ; que sea mayor que 4
126
SUB #04h BCND SATURA_POS, GEQ LACC COMPRUEBA ABS SUB #04h BCND SATURA_NEG, GEQ CLRC SXM ; dejo la salida del "filtro" en Q13 LACC *+, 16 ; para normalizarlo por 4... que seria el máximo ADD *-, AR5 ; de salida de una neurona suponiendo que esta SETC SXM ; opera en la zona -4:4 ..... se deja igual y RPT #1 ; se hace como entrada a la funcion tanh SFR ; considerando como si fuese Q15 SACL * B ESCALA SATURA_POS SPLK #07FFFh, * B ESCALA ;Si es mayor que 4 o menor que -4 se satura SATURA_NEG SPLK #08000h, * ESCALA CLRC SXM LACC * BIT *, 0 BCND ESCALA_POS, NTC ;Como la entrada a la tabla tanh está de BCND ESCALA_NEG, TC ; 0 -> 255h... se debe escalar... esto corres ESCALA_POS ADD #08000h ;ponde a -4 a 4 SACL * B EVALUA_TANH ESCALA_NEG SETC SXM LACC * ABS SACL * LACC #08000h SUB * SACL * EVALUA_TANH ; Se calcula la tanh. SETC SXM ; para ello se lee una tabla de 255 valores LACL *, AR6 ; y se interpola entre numeros sucesivos. SFL SACH *+,7 ; se ven los 8 digitos más significativos ; y se guardan en temp(1). Los 8 menos significativos AND #01FEh ; se guardan en temp(2) SACL *-,6 LACC #TANH_TABLE ADDS * TBLR *+ LT * ADD #1h TBLR * LACL *- SUB *+ SACL * MPY * PAC SACH *-,1 LACC *+ ADD *-, AR5
127
;BCND FIN_TANH, GEQ ;Esto se hace para que los numeros negativos queden ;ABS ;en formato Q15...similar a planilla excel pero CLRC SXM ;no es necesario.. ya que deben ponerse como ;ADD #08000h ;entrada a "CALCULA_NEURONA_CAPA2"......... FIN_TANH SACL *+, AR7 ;Ahora, pongo el putero en la siguiente neurona LACL * ;#I_NEURONA y NEURONA se incrementan ADD #01h SACL * ;La salida se entrega en Q15 RET CALCULA_NEURONA_CAPA2 LDP #4 SPM #3 LAR AR6, #I_NEURONA + 3 ; Están en Q15 MAR *, AR6 LACC #0h MPY #0 SETC SXM RPT #3 MAC #CAPA_2, *- ; los pesos de la red están en Q7 APAC RPT #8 SFR ADD #0729h ; Le agrego el offset en Q7 RPT #5 ; Lo tengo que dejar en Q1 SFR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ESTO ES NUEVO... PARA DISMINUIR LAS CORRIENTES POSITIVAS ; DE REFERENCIA......... SOLO PARA PROBAR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BCND CORRIGE_SALIDA, GT SACL SALIDA2 B NO_CORRIGE_SALIDA CORRIGE_SALIDA SACL SALIDA2 SUB #06h BCND AFIRMATIVO, GEQ LT SALIDA2 MPY #010h PAC AFIRMATIVO SACL SALIDA2 NO_CORRIGE_SALIDA CLRC SXM SPM #0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ESCALA_IREF SETC SXM LT SALIDA2 MPY #0FFFFh ;MULTIPLICO POR -1 PAC ADD CERO CLRC SXM SACL SALIDA2 RET ;****************************************************************
128
;**************************************************************** ;Escritura de Ah ;================================================================ ; Interrupción por falla ;================================================================ GISR1 MAR *,AR0 ;Esta es la pequeña rutina que almacena lAR AR0,#0200h ;los valores de configuración al entrar a SST #1, *+ ;una Interrupción. se guarda ST0 y ST1, SST #0, * ;además de el acumulador alto y bajo. LDP #04h SACL ACCBAJO SACH ACCALTO LDP #0h LDP #0E0h LACL PIVR ;Se carga el Periferal Interrupt Vector, SUB #01h ;Para ver si la falla fue en el IGBT 1 o 2. BCND FALLA1, EQ LACL PIVR SUB #011h BCND FALLA2, EQ B SALIDA FALLA1 LDP #0E0h LACL XINT1CR ;se borra el flag de interrupción SACL XINT1CR LDP #04h ;Falla en IGBT1 SPLK #01, FLAG_FALLA B SALIDA FALLA2 LDP #0E0h LACL XINT2CR ;se borra el flag de interrupción SACL XINT2CR LDP #04h SPLK #02, FLAG_FALLA B SALIDA SALIDA LDP #04h LACL ACCBAJO ;Se recupera el acumulador y los LACC ACCALTO, 16 ;registros de estado MAR *, AR0 LAR AR0,#0201h LST #0, *- ; load ST0 LST #1, * ; load ST1 CLRC INTM RET ;================================================================ ; Interrupción de conversión A/D y PI ;================================================================ GISR2 MAR *,AR0 ;Almacenaje de datos para la int. lAR AR0,#0200h SST #1, *+ ; save ST1 SST #0, * ; save ST0 SETC XF
129
LDP #04h SACL ACCBAJO SACH ACCALTO RPT #120 NOP LDP #0E0h SPLK #00000h, ADCTRL2 SPLK #3910h, ADCTRL1 ;Se inicia conversión de datos 0 y 1 ESPERA1 BIT ADCTRL1, 7 BCND ESPERA1, NTC SPLK #3934h, ADCTRL1 ;Se inicia conversión de datos 2 y 3 ESPERA2 BIT ADCTRL1, 7 BCND ESPERA2, NTC LACC ADCFIFO1, 10 ;Se guardan datos 0 y 2 LDP #04h SACH I_UC LDP #0E0h LACC ADCFIFO1, 10 LDP #04h SACH V_COND LDP #0E0h LACC ADCFIFO2, 10 ;Se guardan datos 1 y 3 LDP #04h SACH V_BATT LDP #0E0h LACC ADCFIFO2, 10 LDP #04h SACH ANA3 LDP #0E0h SPLK #3958h, ADCTRL1 ;Se inicia conversión de datos 4 y 5 ESPERA3 BIT ADCTRL1, 7 BCND ESPERA3, NTC LACC ADCFIFO1, 10 ;Se guardan datos 4 y 6 LDP #04h SACH VELOCIDAD LDP #0E0h LACC ADCFIFO2, 10 ;Se guardan datos 5 y 7 LDP #04h SACH ANA5 ;================================================================ ;FITRO DMOV ANA03 ;Se suman los ultimos cuatro valores DMOV ANA02 ;de corriente y se dividen por 4 DMOV ANA01 ; (promedio movil simple) LACL I_UC SACL ANA01 ADD ANA02 ADD ANA03 ADD ANA04 SFR SFR SACL IFILT LACL CERO ADD CERO SUB IFILT SACL IFILT
130
;================================================================ ;Ajuste de Voltaje LACL V_BATT ;Se carga el valor de voltaje de SFR ;Batt y se divide por dos, para SACL V_BATT ;obtener el valor real, se guarda. ;================================================================ ;Control de carga ;================================================================ ;Valor de carga real Corregida LACL V_COND SFR SACL V_COND LT V_COND ;ESTO ES NUEVO, PARA CORREGIR EL ERROR SPM #03 ;EN LA MEDICION DE VOLTAJE MPY #0F89h ;multiplico por 0.971 en Q12 PAC RPT #05 SFR SACL V_COND SPM #0 ;-------------------------------------- LACL CERO SUB IFILT ;(IFILT - CERO)/16=~(IFILT - CERO)/(2*7.5). BCND C_NEG, C LACL IFILT SUB CERO RPT #03 SFR SACL I_BB LACL V_COND SUB I_BB SACL I_BB BCND NO_CERO,C ZAC B NO_CERO C_NEG RPT #03 SFR SACL I_BB ;Se guarda el valor de la operación como I_BB. ADD V_COND ;a esto se le resta I_BB, *** ;*** NO_CERO SACL I_BB ;con esto se calcula la tensión del condensador, SQRA I_BB ;corregida con la corriente, y elevada al cuadrado. PAC SFL ;se divide por 256, ya que 300^2=90.000 SACH CARGA, 7 ;y ese numero no cabe en 16 bits ;================================================================ ; Valor de ref. de carga ;Se asume que el divisor de tensión se ha ajustado ;para que a 6825 RPM (o 6,825 V) se tengan 5 V en LACC VELOCIDAD, 13 ;el ADC, 6825 RPM equivale a 130 KPH =~ 1023/8 SACH VELOCIDAD ;se almacena como velocidad la entrada analoga ;================================================================ ;Verificación de comunicaión y Bit Ready. LDP #04h BIT READY, 15 BCND MODO_0, NTC LDP #04h ;cuando se esta funcionando conectado
131
LACL MODO ;a un PC y se hacen pruebas de PWM SUB #03h ;fijo o ref de corriente fija, se debe BCND VALIDA_FALLA, EQ ;tener la precaución de comprobar que ;existe comunicación para continuar LACL CONTADOR_COMM ;ya que si no se puede sobrecargar el SUB #24000 ;ultracapacitor, esto evita que el BCND OK, NC ;equipo quede a la deriva con corriente. SPLK #0, MODO ;Si se ha perdido la comunicación se ;hace cero la corriente y se pasa a SPLK #01, CODIGO_FALLA ;modo CERO, o sea apagado. SPLK #00, CONTADOR_COMM ;OJO que si se deja el equipo en OK ADD #24001 ;MODO_3 y se pierde la conexión SACL CONTADOR_COMM ;el eqipo sigue funcionando. ;================================================================ ;Rutina para verificar que las fallas detectadas sean reales y no solo Ruido. VALIDA_FALLA LDP #04h BIT FLAG_FALLA, 15 BCND PRUEBA_FALLA2, NTC SPLK #10000b, FLAG_FALLA LDP #000E1h ;Página 225 (7080h) SPLK #0301Bh, OCRA BIT PADATDIR, 13 BCND NOHAY, NTC LDP #000E1h ;Página 225 (7080h) SPLK #0301Fh, OCRA LDP #04h ;Falla en IGBT1 SPLK #02, CODIGO_FALLA ;almaceno el codigo de falla corresp. B APAGA NOHAY LDP #000E1h ;Página 225 (7080h) SPLK #0301Fh, OCRA LDP #04h PRUEBA_FALLA2 BIT FLAG_FALLA, 14 BCND NOFALLA, NTC SPLK #100000b, FLAG_FALLA LDP #000E1h SPLK #0011Ch, OCRB BIT PDDATDIR, 14 BCND NOHAY2, NTC LDP #000E1h SPLK #0031Ch, OCRB LDP #04h SPLK #03, CODIGO_FALLA APAGA SPLK #00h, MODO ;pasamos a modo cero LDP #0E8h SPLK #00000h, T1CMPR ;se apagan los PWMs SPLK #00000h, T2CMPR LDP #0E1h SPLK #0CF40h, PBDATDIR ;Se prende la luz de falla NOHAY2 LDP #000E1h SPLK #0031Ch, OCRB NOFALLA LDP #04h BIT CODIGO_FALLA, 15 BCND CODIG_1, NTC LDP #0E1h SPLK #0CF40h, PBDATDIR
132
LDP #04 CODIG_1 LACL CODIGO_FALLA BCND MODO_0, NEQ ;================================================================ ; SELECCIÓN DE MODO DE FUNCIONAMIENTO LACL MODO ;Verifica el modo de funcionamiento BCND MODO_0, EQ ;y salta al codigo correspondiente. SUB #01h BCND MODO_1, EQ LACL MODO SUB #02h BCND MODO_21, EQ LACL MODO SUB #03h BCND MODO_3, EQ SPLK #0, MODO B MODO_0 ;================================================================ ;Calculo del error, saturación y control PI MODO_3 LDP #04h LACL V_COND ;Al encender el sistema primero hay que cargarlo con SUB #20 ;corrientes moderadas, para esto se hace una escala SPLK #525, IREF ;de corrientes hasta los 80 volts para cargar en forma BCND MODO_2, NC ;lenta. LACL V_COND SUB #50 SPLK #545, IREF BCND MODO_2, NC LACL V_COND SUB #80 SPLK #575, IREF BCND MODO_2, NC ;================================================================ ;Control de corriente de batt LACL ANA3 ;se carga el valor de corriente SUB #512 ;de carga, se centra en cero ??????"SUB #512" BCND CORR_NEG, NC ;si I_load era neg se salta. LDP #04h SACL I_LOAD ;si no se guarda y se escala: LT I_LOAD ;para escalar se multiplica por MPY #300 ;300 y luego se divide por 512 PAC RPT #8 SFR SACL I_LOAD ;************** arreglar problema del cero y linker!!!! B ADELANTE ;salto adelante. CORR_NEG LDP #04h SACL I_LOAD LT I_LOAD ;la multiplico por 200 y la divido MPY #200 ;por 512, segun la escala de la PAC ;fuente de datos. RPT #8 SFR SACL I_LOAD ;guardo. ADELANTE
133
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LACC CONTADOR_REFERENCIA ADD #01h SACL CONTADOR_REFERENCIA SUB #049Ah BCND CALCULA_REF, EQ B MODO_21 CALCULA_REF LDP #000E1h LACL PBDATDIR ADD #00002h SACL PBDATDIR LDP #04h LAR AR7, #NEURONA LAR AR5, #I_NEURONA CALL CARGA_DATOS_RED CALL CALCULA_NEURONA_CAPA1 CALL CALCULA_NEURONA_CAPA1 CALL CALCULA_NEURONA_CAPA1 CALL CALCULA_NEURONA_CAPA1 SUB #04h SACL * ;Dejo el puntero en la neurona 1 CALL CALCULA_NEURONA_CAPA2 SPLK #00000h, CONTADOR_REFERENCIA CALL ESCALA_IREF LDP #000E1h LACL PBDATDIR AND #0FFFDh SACL PBDATDIR LDP #04h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Ajuste de ref de corriente para escala de voltaje de condensador MODO_21 LDP #04 LACL SALIDA2 SACL IREF ;================================================================ ;Control de corrientes maximas para buck_boost y carga minima ;la corriente maxima se fija en 200 ; LACL IREF ;compruebo que este por debajo ADD #320 SUB CERO ;de este valor, si no, se fija al BCND MAX_NEG, C ;tope. LACL CERO SUB #320 SACL IREF MAX_NEG LACL CERO ;lo mismo para el maximo negativo ADD #320 SUB IREF ;que es -200.
134
BCND MAX_POS, C LACL CERO ADD #320 SACL IREF MAX_POS LACL CARGA ;si la carga es mayor que 22500 SUB #351 ;(que es el maximo) se impiden las BCND V_MAX, NC ;corrientes negativas, es decir LACL IREF ;no se permite cargar mas los SUB CERO ;condensadores. BCND V_MAX, NC LACL CERO SACL IREF V_MAX LACL CARGA ;si la carga es menor que 2250 SUB #35 ;(que es el minimo 10%) se impiden BCND V_MIN, C ;las corrientes positivas, es decir LACL IREF ;no se permite descargar los SUB CERO ;condensadores. BCND V_MIN, C LACL CERO SACL IREF V_MIN B MODO_2 ;===================================================================== MODO_0 LDP #04h SPLK #00h, IANTERIOR SPLK #00, IANTERIOR2 SPLK #00h, PWM MODO_01 LDP #0E1h ;en modo cero solo se monitorean SPLK #0E000h, PADATDIR ;las variables, ambas PWM son 0. LACL PBDATDIR ;se modifican las salidas AND #0CF40h ;digitales correspondientes a los OR #00001h ;leds. SACL PBDATDIR LDP #0E8h SPLK #00000h, T1CMPR SPLK #00000h, T2CMPR LDP #04h SPLK #0, FLAG_ESCALA LDP #04h B FIN ;-------------------------------------------------- MODO_1 LACL SIGN_TEMP ;En el modo_1 se trabaja segun una SUB SIGN ;PWM determinada por el programa BCND DALE_NOMAS, EQ ;o recibida del PC monitor. LACL CONT BCND TIEMPO_MTO, NEQ ;se implementó un tiempo muerto que SPLK #05, CONT ;tiene el largo del Nº en esta línea B MODO_0 ;por la duración del período de PWM. TIEMPO_MTO SUB #01 SACL CONT BCND FIN_TM, EQ B MODO_0 FIN_TM LACL SIGN_TEMP SACL SIGN DALE_NOMAS BIT SIGN, 15 ;Según el signo que aparece en el BCND PWMEN1, TC ;mismo registro de la PWM se envía
135
LACL PWM ;la señal al IGBT correspondiente LDP #0E1h ;y el otro ...callaito no mas. SPLK #0E080h, PADATDIR ;También se encienden las luces SPLK #0CF00h, PBDATDIR ;correspondientes. NOLUZ LDP #0E8h SPLK #00000h, T1CMPR SACL T2CMPR CTRL_CARGA: LDP #04h LACL V_COND ;si la carga es mayor que 22500( CARGA) SUB #290 LDP #04h ;(que es el maximo) se impiden las (V_COND MAX = 290) BCND CTRL_CARGA2, NC ;corrientes negativas, es decir SPLK #01, FLAG_HISTERESIS LDP #04h B MODO_0 CTRL_CARGA2 BIT FLAG_HISTERESIS, 15 BCND FIN, NTC LDP #04h LACL V_COND SUB #285 ;Control de voltaje de condensador V de recuperación=288 BCND CTRL_CARGA3, NC LDP #04h B MODO_0 CTRL_CARGA3 LDP #04h SPLK #00, FLAG_HISTERESIS B FIN PWMEN1 LACL PWM LDP #0E1h SPLK #0E040h, PADATDIR SPLK #0CF00h, PBDATDIR ;correspondientes. NOLUZ2 LDP #0E8h SPLK #00000h, T2CMPR SACL T1CMPR LDP #04 LACL V_COND SUB #40 BCND CONTROL_DESC, C B MODO_0 CONTROL_DESC B FIN ;-------------------------------------------------- MODO_2 LDP #04 LACL CERO ;En MODO_2 se debe seguir una referencia SUB IREF ;de corriente obtenida del programa BCND MODO_0, EQ ;o recibida del PC monitor. BCND I_POS, C ;Aquí se decide si la corriente es positiva ;o negativa. I_NEG LACL IREF ;Si es negativa se saca el valor de error SUB IFILT ;y se setea el signo en cero (equivale a -) SACL ERROR SPLK #00, SIGN_TEMP B PI
136
I_POS LACL IFILT ;Si es positiva, lo mismo pero al revés. SUB IREF SACL ERROR SPLK #01, SIGN_TEMP B PI FIN LDP #0E8h ;este pedacito de rutina es el que finaliza LACL EVIFRA ;la interrupción, borra los flags y ese SACL EVIFRA ;tipo de cosas. LDP #04h LACL ACCBAJO ;recupera el acumulador y los registros LACC ACCALTO, 16 ;de estado MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, * CLRC INTM CLRC XF RET ;================================================================ PI ;Esta es la rutina de control PI, ;aqui se calcula el PI para obtener ;la PWM necesaria. LDP #04h BIT FLAG_ESCALA, 15 CC ESCALA_CORRIENTE, NTC LDP #04h ;Cargo el error para multiplicarlo por LT ERROR ;Ki MPY KI PAC ;El resultado pasa al acumulador ADD IANTERIOR ;le sumo la integral anterior *1024 ADD IANTERIOR2, 16 SACL IANTERIOR ;guardo todo dividido por 1024 SACH IANTERIOR2 ROL ;saco el bit mas significativo, BCND SATURNEG, C ;si es 1 esta negativo, en ese caso... LACL IANTERIOR2 ;devuelvo el bit mas significativo SUB FRECUENCIA ;le resto el PWM mas grande posible SUB #01 ROL ;para ver si esta saturado, BCND NOSATURADO, C ;si no es así salto, LACL FRECUENCIA ADD #01 SACL IANTERIOR2 ;pero si esta saturado, guardo este Nº B NOSATURADO ; y salto igual SATURNEG SPLK #0, IANTERIOR ;... se pone un cero en la integral SPLK #0, IANTERIOR2 NOSATURADO MPY KP ;multiplico el error por Kp PAC ;lo paso al Acc. ADD IANTERIOR2,10 ;le sumo la integral *1024, ROL ;le saco el bit mas signif. para ver BCND TODOCERO, C ;si esta negativo, si es así salto... ROR ;, si no devuelvo el bit SACH PWM,6 ;y guardo la suma como PWM B MODO_1 ;Paso al Modo_1 donde aplico la PWM.
137
TODOCERO SPLK #00h, PWM ;... y pongo un Cero. B MODO_0 ;luego salto a Modo_0 ;===================================================================== ESCALA_CORRIENTE LDP #04h LACL V_BATT LDP #04h SACL V_BATT_2 LDP #04h BIT SIGN_TEMP, 15 BCND ESCALA_BOOST, TC LT V_COND MPY FRECUENCIA LDP #04h PAC ;el resultado de la mult. se pasa al SACH DIVISION_ALTO ;ACC y se guarda para ser dividido SACL DIVISION_BAJO B ESCALAR ESCALA_BOOST LACL V_BATT SUB V_COND SACL TEMP LT TEMP MPY FRECUENCIA LDP #04h PAC SACH DIVISION_ALTO SACL DIVISION_BAJO ESCALAR SPLK #00, CONT_DIV SPLK #0400h, MULTIPLO ;comienza la división con 2^10. DIVIDIR31 LACC DIVISION_ALTO, 16 ;cargo el numero a dividir ADD DIVISION_BAJO LT MULTIPLO ;cargo el multiplo y multiplico por MPY V_BATT_2 ;el numero divisor SPAC ;este se resta al numero a dividir BCND MENOR31,NC ;si la resta es negativa se salta, SACH DIVISION_ALTO ;si no es negativa se guarda el numero SACL DIVISION_BAJO ;a dividir restado y al resultado se LACL CONT_DIV ;le suma el multiplo ADD MULTIPLO SACL CONT_DIV MENOR31 BIT MULTIPLO, 15 ;pruebo si llegue al fin de la division BCND FIN_DIV31, TC ;si es asi, salto al final, LACL MULTIPLO ;si no es asi corro la coma del SFR ;multiplo una posición. SACL MULTIPLO B DIVIDIR31 ;vuelvo a iterar. FIN_DIV31 SPLK #01, FLAG_ESCALA LT CONT_DIV MPY #29 PAC RPT #4 SFR LDP #04h SACL IANTERIOR2 SPLK #0, ERROR RET ;=====================================================================
138
RUTINA_DIV LDP #04 SPLK #0400h, MULTIPLO ;comienza la división con 2^10. SPLK #0, CONT_DIV XDIVIDIR31 LACC DIVISION_ALTO, 16 ;cargo el numero a dividir ADD DIVISION_BAJO LT MULTIPLO ;cargo el multiplo y multiplico por MPY DIVISOR ;el numero divisor SPAC ;este se resta al numero a dividir BCND XMENOR31,NC ;si la resta es negativa se salta, SACH DIVISION_ALTO ;si no es negativa se guarda el numero SACL DIVISION_BAJO ;a dividir restado y al resultado se LACL CONT_DIV ;le suma el multiplo ADD MULTIPLO SACL CONT_DIV XMENOR31 BIT MULTIPLO, 15 ;pruebo si llegue al fin de la division BCND XFIN_DIV31, TC ;si es asi, salto al final, LACL MULTIPLO ;si no es asi corro la coma del SFR ;multiplo una posición. SACL MULTIPLO B XDIVIDIR31 ;vuelvo a iterar. XFIN_DIV31 RET ;===================================================================== ;Captura de corriente ;Esta rutina captura los pulsos del Ah ;meter y los suma consistentemente para INT4_ISR MAR *,AR0 ;calcular el valor de Ah consumido. LAR AR0,#0200h SST #1, *+ SST #0, * ;Primero se hece la rutina de guardar LDP #04h ;datos para la interrupción. SACL ACCBAJO SACH ACCALTO LDP #0E8h ;Se carga el registro de flags de interr. LACL EVIFRC ;por captura para ver que unidad capturó SUB #01h ;un flanco de subida. BCND CAP1_INT, EQ LACL EVIFRC SUB #02h BCND CAP2_INT, EQ SPLK #03h, EVIFRC LDP #04 LACL IFILT LDP #04 SACL REGISTRO_PRUEBA B BAD_INT2 CAP1_INT SPLK #01h, EVIFRC ;Si fue la unidad 1 se borra ese flag, LACL CAP1FIFO ;se lee el registro cap1fifo para borrarlo LDP #04h ;y asi se puede producir otra int. LACL CONTADOR_AH ;Se suma 1 al contador de Ah. ADD #01 SACL CONTADOR_AH ;Se guarda el resultado, SUB #00B40h ;resto 2880 para ver si pasó 1/5 Ah, BCND SUMA_UNO, C ;si es así se suma uno al contador oficial. B FIN_INT_CAP ;si no se salta al final de la int. SUMA_UNO LACL AH ;este es el contador oficial, aqui se ADD #01 ;le suma 1 (corrido en 8 bits).
139
SACL AH SPLK #0, CONTADOR_AH ;se resetea el contador Ah. B FIN_INT_CAP ;salto al fin de la int. CAP2_INT SPLK #02h, EVIFRC ;Si fue la unidad 2 se borra ese flag, LACL CAP2FIFO ;se lee el registro cap2fifo para borrarlo LDP #04h LACL CONTADOR_AH BCND RESTA_UNO, EQ;...el resto es analogo al anterior... SUB #01 SACL CONTADOR_AH B FIN_INT_CAP RESTA_UNO LACL AH BCND FIN_INT_CAP, EQ SPLK #00B40h, CONTADOR_AH LACL AH SUB #01h SACL AH FIN_INT_CAP LACL ACCBAJO LACC ACCALTO, 16 MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, * CLRC INTM RET ;===================================================================== INT5_ISR: ;Esta rutina es la que maneja las ;comunicaciones con el PC Monitor. MAR *,AR0 lAR AR0,#0200h ;Esta es la rutina de inicio de la int. SST #1, *+ SST #0, * LDP #04h SACL ACCBAJO SACH ACCALTO LDP #00E0h LACL PIVR ;cargo el registro de flags de interrupciones SUB #0006h ;salto a la rutina correspondiente a la BCND SCI_RX_ISR,EQ ;evento que inició la interr. LACL PIVR SUB #0007h BCND SCI_TX_ISR,EQ B BAD_INT ;si no es ninguna de las ant. salto a bad_int SCI_RX_ISR: LDP #04h ;esta es la rutna de recepción de datos SPLK #0, CONTADOR_COMM ;Reseteo el contador de seguridad. LACL CONTADOR_RX ;Cargo el contador de recepción. MAR *,AR2 ;activo el registro auxiliar AR2. BCND NO_GUARDA, EQ ;Si el contador es 0 salto a NO_GUARDA. BIT CONTADOR_RX, 15 ;pruebo el bit menos signif para ver BCND IMPAR, TC ;si el contador esta impar. salta... LACC *,8,AR4 ;si es par carga el pedazo mas signif de dato SACL * ;y lo manda a su direccion destino en AR4.
140
B ISR_END1 ;pasa al fin de la int. IMPAR LACC *,AR4 ;si es impar carga el pedazo menos signif de dato OR * ;se hace OR con el pedazo mas signif y luego SACL *+ ;se guarda en la dirección destino, esta se incrementa. B ISR_END1 ;paso al final de la interrupción. NO_GUARDA LACL * ;en el caso de no estar esperando datos, lo SUB #032h ;que llega se interpreta como un comando, para BCND GUARDAR_PAR, EQ ;lo que se identifica el valor del LACL * ;comando y se salta a su rutina SUB #033h ;correspondiente. BCND CONTINUAR_0, EQ LACL * SUB #037h BCND ENVIAR_PAR, EQ LACL * SUB #038h BCND BORRA_FALLA, EQ LACL * SUB #039h BCND NUEVO_CERO, EQ LACL * SUB #031h BCND RECIBIR_TABLA, EQ LACL * SUB #034h BCND CONTINUAR_1, EQ LACL * SUB #035h BCND CONTINUAR_2, EQ LACL * SUB #036h BCND CONTINUAR_3, EQ LACL * SUB #045h BCND RECIBIR_DIRECCION, EQ LACL * SUB #046h BCND ENVIAR_DIRECCION, EQ LACL * SUB #047h BCND ESCRIBIR_DIRECCION, EQ LACL * SUB #041h CC GUARDAR_TABLA_FLASH, EQ LACL * SUB #042h CC LEER_TABLA_FLASH, EQ LACL * SUB #043h CC GUARDAR_PARAM_FLASH, EQ LACL * SUB #044h CC LEER_PARAM_FLASH, EQ B ISR_END GUARDAR_PAR: ;Esta rutina guardará los parametros de DMOV MODO ;funcinamiento como p Ej. Kp o Ki...
141
SPLK #0, MODO ;estos datos son 7 por lo que se pone un SPLK #16, CONTADOR_RX ;16 en el contador de recepción. LAR AR4, #KP ;Se apunta el AR4 al Kp que es el primero B ISR_END ;de los datos a almacenar. RECIBIR_TABLA: ;Aqui se espera recibir la tabla de ref de DMOV MODO ;cargas la que tiene una longitud de 70, SPLK #0, MODO ;por lo que se pone un 140 en el contador SPLK #2, CONTADOR_RX ;de recepción. LAR AR4, #TABLA_CARGA ;Y apunto al comianzo de la tabla B ISR_END ;con el AR4. RECIBIR_DIRECCION: DMOV MODO SPLK #0, MODO SPLK #2, CONTADOR_RX LDP #04 LAR AR4, #DIRECCION_PEDIDA B ISR_END ESCRIBIR_DIRECCION DMOV MODO SPLK #0, MODO SPLK #2, CONTADOR_RX LDP #04 LAR AR4, DIRECCION_PEDIDA B ISR_END CONTINUAR_0: ;Continuar_0 significa que seguimos en SPLK #0, MODO ;modo apagado (0) y solo enviamos datos. ENVIAR_DATO SPLK #20, CONTADOR_TX ;los datos a enviar son 9 por lo que LAR AR3, #CODIGO_FALLA ;ponemos un 18 en el contador TX y LDP #0E0h ;apuntamos con AR3 al primer dato a enviar. B SCI_TX_ISR ENVIAR_DIRECCION SPLK #2, CONTADOR_TX LDP #04 LAR AR3, DIRECCION_PEDIDA LDP #0E0h B SCI_TX_ISR CONTINUAR_1: ;Esta rutina prepara la recepción del SPLK #2, CONTADOR_RX ;valor de PWM desde el PC. SPLK #1, MODO LAR AR4, #PWM_TEMP B ENVIAR_DATO CONTINUAR_2: ;Esta recibirá un valor de referencia de SPLK #2, CONTADOR_RX ;corriente y lo pasará al control SPLK #2, MODO ; de corriente para que la produzca. LAR AR4, #IREF_TEMP B ENVIAR_DATO CONTINUAR_3: ;Aqui solo se setea el modo y se pasa al SPLK #3, MODO ;pedazo de rutina de Continuar_0 que envía B ENVIAR_DATO ;los datos.
142
ENVIAR_PAR: SPLK #16, CONTADOR_TX ;Envía los parametros almacenados en LAR AR3, #KP ;el DSP. (LAR AR3, #KP) LDP #0E0h B SCI_TX_ISR BORRA_FALLA: ;Esta rutina es llamada desde el PC cuando SPLK #00, CODIGO_FALLA ;detecta una falla para borrarla del codigo ;También apaga la luz de falla. LDP #04h B ENVIAR_DATO NUEVO_CERO ; LACL IFILT ;Esta rutina invocada por el PC resetea el 0 SACL CERO ;al valor de corriente medido en el instante, B ENVIAR_DATO ;obviamente no se llama a esta rutina si ;se esta funcionando en un modo distinto ;de 0. SCI_TX_ISR: BIT SCICTL2, BIT7 ;Antes de enviar datos se prueba el bit BCND SCI_TX_ISR, NTC ;que indica que se está listo para LDP #04h ;mandar datos. LACL CONTADOR_TX ;se carga el contador de TX y si no es BCND CONTINUAR1, NEQ ;0 se envía lo que este esperando. B ISR_END ;si es 0 se pasa al fin de la int. CONTINUAR1: MAR *,AR3 ;Aqui se hace algo analogo a la recepción. BIT CONTADOR_TX, 15 BCND TX_IMPAR, TC LACC *+,8,AR1 SACH * LDP #04h SACL BUFFERSCI B FIN_TX0 TX_IMPAR: LDP #04h LACC BUFFERSCI,8 MAR *, AR1 SACH * B FIN_TX0 ISR_END1: LACL CONTADOR_RX ;Esta es la rutina que fianliza para la RX SUB #01 ;disminuye el contador de RX y si este SACL CONTADOR_RX ;no queda en 0 pasa afinalizar la int. BCND ISR_END, NEQ; CAMBIAMODO LACL MODO ;si era 0 el contador prueba en que modo ;se encuetra funcionando, por que si es 1 SUB #1 ;ó 2 carga la ref de PWM o de Corriente BCND PRUEB_MODO, NEQ ;respectivamente para ser utilizadas. LACL PWM_TEMP SACH SIGN_TEMP,1 ;en los modos 1 y 2 el PC manda la PWM o AND #07FFFh ;una ref de Corriente que el DSP utiliza SACL PWM ;para obtener las salidas. B ISR_END PRUEB_MODO LACL MODO SUB #2 BCND ISR_END, NEQ LACL IREF_TEMP
143
SACL SALIDA2 B ISR_END FIN_TX0: LDP #04h ;Esta rutina disminuye en 1 el contador TX. LACL CONTADOR_TX SUB #1 SACL CONTADOR_TX ISR_END: LDP #04h ;Aquí se finaliza la interrupción de comm. LACL ACCBAJO ;y para eso se recuperan todos los datos LACC ACCALTO, 16 ;relevantes. MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, * CLRC INTM ;se habilitan nuevamente las interrupciones. RET GUARDAR_TABLA_FLASH: CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #2, CONTADORSPI_TX SPLK #00, CONTADORSPI_RX SPLK #00, DIRSPI LDP #04h SPLK #07, CODIGO_FALLA LAR AR7, #TABLA_CARGA GRABA1 LDP #04h SPLK #0, CONTADORSPI CALL STAT CALL WRITE_ENABLE CALL WRITE CALL DIRECCION B ENVIASPI LEER_TABLA_FLASH: CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #2, CONTADORSPI_RX SPLK #00, CONTADORSPI_TX SPLK #00, DIRSPI LDP #04h SPLK #09, CODIGO_FALLA LAR AR7, #TABLA_CARGA LEE1 CALL STAT CALL LEESPI CAll DIRECCION SPLK #00, SPITXBUF ESP6 BIT SPISTS, 9 BCND ESP6, NTC B RECIBESPI GUARDAR_PARAM_FLASH:
144
CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #16, CONTADORSPI_TX SPLK #00, CONTADORSPI_RX SPLK #160, DIRSPI LDP #04h SPLK #07, CODIGO_FALLA LAR AR7, #KP B GRABA1 LEER_PARAM_FLASH: CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #16, CONTADORSPI_RX SPLK #00, CONTADORSPI_TX SPLK #160, DIRSPI LDP #04h SPLK #09, CODIGO_FALLA LAR AR7, #KP B LEE1 LEER_AH_FLASH CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #2, CONTADORSPI_RX SPLK #00, CONTADORSPI_TX SPLK #180, DIRSPI LDP #04h SPLK #09, CODIGO_FALLA LAR AR7, #AH B LEE1 ESCRIBIR_AH_FLASH CALL APAGA2 LDP #04h LACL CONTADORSPI_RX ADD CONTADORSPI_TX RETC NEQ SPLK #00h, READY2 SPLK #2, CONTADORSPI_TX SPLK #00, CONTADORSPI_RX SPLK #180, DIRSPI LDP #04h SPLK #08, CODIGO_FALLA LAR AR7, #AH B GRABA1 ENVIASPI: LDP #04h LACL CONTADORSPI
145
SUB #32 BCND NUEVA_PAG, EQ ADD #34 SACL CONTADORSPI LACL CONTADORSPI_TX BCND SALTO1, NEQ LDP #0E1h SPLK #06020h, PCDATDIR RET SALTO1 SUB #02 SACL CONTADORSPI_TX MAR *, AR7 LACL *+ LDP #0E0h SACL SPITXBUF ESP7 BIT SPISTS, 9 BCND ESP7, NTC LACL SPIRXBUF B ENVIASPI NUEVA_PAG SPLK #00, CONTADORSPI LACL DIRSPI ADD #32 SACL DIRSPI LDP #0E1h SPLK #06020h, PCDATDIR B GRABA1 RECIBESPI LDP #0E0h LACL SPIRXBUF MAR *, AR7 SACL *+ LDP #04h LACL CONTADORSPI_RX SUB #2 SACL CONTADORSPI_RX BCND SALTO2, NEQ LDP #0E1h SPLK #06020h, PCDATDIR RET SALTO2 LDP #0E0h SPLK #00, SPITXBUF ESP8 BIT SPISTS, 9 BCND ESP8, NTC B RECIBESPI BAD_INT: LDP #04h ;Cuando se produce una interrupción SPLK #04, CODIGO_FALLA ;y no se logra identificar el periferico LDP #0E1h ;que la produjo, se llama a esta rutina SPLK #0CF40h, PBDATDIR ;que avisa de la situación mediante el LDP #04h ;codigo de falla y vuelve al LACL ACCBAJO ;funcionamiento normal, recuperando antes LACC ACCALTO, 16 ;los datos de configuación. MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, *
146
CLRC INTM RET BAD_INT2: LDP #04h ;Cuando se produce una interrupción SPLK #10, CODIGO_FALLA ;y no se logra identificar el periferico LDP #0E1h ;que la produjo, se llama a esta rutina SPLK #0CF40h, PBDATDIR ;que avisa de la situación mediante el LDP #04 LACL IFILT LDP #04 SACL REGISTRO_PRUEBA LDP #04h ;codigo de falla y vuelve al LACL ACCBAJO ;funcionamiento normal, recuperando antes LACC ACCALTO, 16 ;los datos de configuación. MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, * CLRC INTM RET ;***************************************************************************** STAT LDP #0E1h SPLK #06000h, PCDATDIR LDP #0E0h SPLK #10001111b, SPICCR SPLK #0500h, SPITXBUF ESP1 BIT SPISTS, 9 BCND ESP1, NTC LACL SPIRXBUF LDP #0E1h SPLK #06020h, PCDATDIR ROR BCND STAT, C RET WRITE_ENABLE: LDP #0E1h SPLK #06000h, PCDATDIR LDP #0E0h SPLK #10000111b, SPICCR SPLK #0600h, SPITXBUF ESP2 BIT SPISTS, 9 BCND ESP2, NTC LACL SPIRXBUF LDP #0E1h SPLK #06020h, PCDATDIR NOP NOP NOP RET WRITE SPLK #06000h, PCDATDIR LDP #0E0h SPLK #10000111b, SPICCR SPLK #0200h, SPITXBUF ESP3 BIT SPISTS, 9 BCND ESP3, NTC LACL SPIRXBUF NOP
147
NOP RET DIRECCION LDP #0E0h SPLK #10001111b, SPICCR LDP #04h LACL DIRSPI LDP #0E0h SACL SPITXBUF ESP4 BIT SPISTS, 9 BCND ESP4, NTC LACL SPIRXBUF RPT #10 NOP RET LEESPI LDP #0E1h SPLK #06000h, PCDATDIR LDP #0E0h SPLK #10000111b, SPICCR SPLK #0300h, SPITXBUF ESP5 BIT SPISTS, 9 BCND ESP5, NTC LACL SPIRXBUF NOP NOP RET APAGA2 LDP #0E8h SPLK #00000h, T1CMPR SPLK #00000h, T2CMPR LDP #0E1h SPLK #0CF40h, PBDATDIR RET ;===================================================================== ; I S R - PHANTOM ; ; Description: Dummy ISR, used to trap spurious interrupts. ;===================================================================== PHANTOM: MAR *,AR0 lAR AR0,#0200h ;Phantom es una rutina de interrupción SST #1, *+ ;solo por si se desencadena accidentalmente SST #0, * ;una de las interrupciones que estan LDP #04h ;enmascaradas. SACL ACCBAJO ;la situación se avisa mediante el codigo SACH ACCALTO ;de falla y luego se retorna al SPLK #05, CODIGO_FALLA;funcionamiento normal. LDP #0E1h SPLK #0CF40h, PBDATDIR LDP #04 LACL IFILT LDP #04 SACL REGISTRO_PRUEBA LDP #04h LACL ACCBAJO LACC ACCALTO, 16 MAR *, AR0 LAR AR0,#0201h LST #0, *- LST #1, *
148
CLRC INTM RET .sect ".coef" NEURONA_1 .int 0 ;los pesos van alrevés .int -8 .int -147 .int 160 .int -472 .int -10362 .int 205 .int 3055 .int 3650 ;offset NEURONA_2 .int 0 ;los pesos van alrevés .int 0 .int -5 .int 5 .int 4 .int 38 .int 0 .int 269 .int -26455 ;offset NEURONA_3 .int 0 ;los pesos van alrevés .int 0 .int 159 .int -149 .int 655 .int 8055 .int -203 .int -3225 .int 9093 ;offset NEURONA_4 .int 2 ;los pesos van alrevés .int 0 .int 0 .int -6 .int 14 .int 57 .int 0 .int 625 .int 26695 ;offset CAPA_2 .int 12528 .int 2055 .int 18848 .int 2036 ; Valor tanh (Q15) Indice Argumento Valor tanh TANH_TABLE .int -32746 ; 0 -4.000000000; -0.999329300 .int -32744 ; 1 -3.968750000; -0.999286059 .int -32743 ; 2 -3.937500000; -0.999240031 .int -32741 ; 3 -3.906250000; -0.999191037 .int -32739 ; 4 -3.875000000; -0.999138886 .int -32737 ; 5 -3.843750000; -0.999083374 .int -32736 ; 6 -3.812500000; -0.999024286 .int -32733 ; 7 -3.781250000; -0.998961390
149
.int -32731 ; 8 -3.750000000; -0.998894443 .int -32729 ; 9 -3.718750000; -0.998823182 .int -32726 ; 10 -3.687500000; -0.998747332 .int -32724 ; 11 -3.656250000; -0.998666595 .int -32721 ; 12 -3.625000000; -0.998580659 .int -32718 ; 13 -3.593750000; -0.998489189 .int -32715 ; 14 -3.562500000; -0.998391828 .int -32711 ; 15 -3.531250000; -0.998288199 .int -32708 ; 16 -3.500000000; -0.998177898 .int -32704 ; 17 -3.468750000; -0.998060496 .int -32700 ; 18 -3.437500000; -0.997935538 .int -32695 ; 19 -3.406250000; -0.997802538 .int -32691 ; 20 -3.375000000; -0.997660979 .int -32686 ; 21 -3.343750000; -0.997510313 .int -32681 ; 22 -3.312500000; -0.997349955 .int -32675 ; 23 -3.281250000; -0.997179283 .int -32669 ; 24 -3.250000000; -0.996997635 .int -32663 ; 25 -3.218750000; -0.996804309 .int -32656 ; 26 -3.187500000; -0.996598555 .int -32649 ; 27 -3.156250000; -0.996379578 .int -32641 ; 28 -3.125000000; -0.996146531 .int -32633 ; 29 -3.093750000; -0.995898513 .int -32624 ; 30 -3.062500000; -0.995634567 .int -32615 ; 31 -3.031250000; -0.995353675 .int -32605 ; 32 -3.000000000; -0.995054754 .int -32595 ; 33 -2.968750000; -0.994736652 .int -32584 ; 34 -2.937500000; -0.994398146 .int -32572 ; 35 -2.906250000; -0.994037935 .int -32560 ; 36 -2.875000000; -0.993654634 .int -32546 ; 37 -2.843750000; -0.993246775 .int -32532 ; 38 -2.812500000; -0.992812795 .int -32517 ; 39 -2.781250000; -0.992351033 .int -32501 ; 40 -2.750000000; -0.991859725 .int -32484 ; 41 -2.718750000; -0.991336996 .int -32465 ; 42 -2.687500000; -0.990780856 .int -32446 ; 43 -2.656250000; -0.990189189 .int -32425 ; 44 -2.625000000; -0.989559749 .int -32403 ; 45 -2.593750000; -0.988890151 .int -32380 ; 46 -2.562500000; -0.988177862 .int -32355 ; 47 -2.531250000; -0.987420196 .int -32329 ; 48 -2.500000000; -0.986614298 .int -32301 ; 49 -2.468750000; -0.985757143 .int -32271 ; 50 -2.437500000; -0.984845517 .int -32239 ; 51 -2.406250000; -0.983876017 .int -32205 ; 52 -2.375000000; -0.982845029 .int -32169 ; 53 -2.343750000; -0.981748725 .int -32131 ; 54 -2.312500000; -0.980583047 .int -32091 ; 55 -2.281250000; -0.979343695 .int -32047 ; 56 -2.250000000; -0.978026115 .int -32002 ; 57 -2.218750000; -0.976625484 .int -31953 ; 58 -2.187500000; -0.975136698 .int -31901 ; 59 -2.156250000; -0.973554356 .int -31846 ; 60 -2.125000000; -0.971872746 .int -31787 ; 61 -2.093750000; -0.970085827 .int -31725 ; 62 -2.062500000; -0.968187217 .int -31659 ; 63 -2.031250000; -0.966170173 .int -31589 ; 64 -2.000000000; -0.964027580 .int -31514 ; 65 -1.968750000; -0.961751926 .int -31435 ; 66 -1.937500000; -0.959335293 .int -31351 ; 67 -1.906250000; -0.956769334
150
.int -31262 ; 68 -1.875000000; -0.954045260 .int -31167 ; 69 -1.843750000; -0.951153820 .int -31066 ; 70 -1.812500000; -0.948085286 .int -30960 ; 71 -1.781250000; -0.944829436 .int -30846 ; 72 -1.750000000; -0.941375538 .int -30726 ; 73 -1.718750000; -0.937712339 .int -30599 ; 74 -1.687500000; -0.933828043 .int -30464 ; 75 -1.656250000; -0.929710307 .int -30321 ; 76 -1.625000000; -0.925346225 .int -30170 ; 77 -1.593750000; -0.920722322 .int -30009 ; 78 -1.562500000; -0.915824544 .int -29839 ; 79 -1.531250000; -0.910638259 .int -29659 ; 80 -1.500000000; -0.905148254 .int -29469 ; 81 -1.468750000; -0.899338735 .int -29268 ; 82 -1.437500000; -0.893193340 .int -29055 ; 83 -1.406250000; -0.886695149 .int -28830 ; 84 -1.375000000; -0.879826700 .int -28592 ; 85 -1.343750000; -0.872570011 .int -28341 ; 86 -1.312500000; -0.864906618 .int -28076 ; 87 -1.281250000; -0.856817601 .int -27796 ; 88 -1.250000000; -0.848283640 .int -27501 ; 89 -1.218750000; -0.839285062 .int -27190 ; 90 -1.187500000; -0.829801910 .int -26863 ; 91 -1.156250000; -0.819814012 .int -26519 ; 92 -1.125000000; -0.809301070 .int -26156 ; 93 -1.093750000; -0.798242755 .int -25775 ; 94 -1.062500000; -0.786618812 .int -25375 ; 95 -1.031250000; -0.774409187 .int -24955 ; 96 -1.000000000; -0.761594156 .int -24515 ; 97 -0.968750000; -0.748154470 .int -24054 ; 98 -0.937500000; -0.734071520 .int -23570 ; 99 -0.906250000; -0.719327501 .int -23065 ; 100 -0.875000000; -0.703905604 .int -22537 ; 101 -0.843750000; -0.687790205 .int -21986 ; 102 -0.812500000; -0.670967074 .int -21411 ; 103 -0.781250000; -0.653423588 .int -20812 ; 104 -0.750000000; -0.635148952 .int -20189 ; 105 -0.718750000; -0.616134427 .int -19541 ; 106 -0.687500000; -0.596373555 .int -18869 ; 107 -0.656250000; -0.575862391 .int -18173 ; 108 -0.625000000; -0.554599722 .int -17451 ; 109 -0.593750000; -0.532587286 .int -16706 ; 110 -0.562500000; -0.509829974 .int -15936 ; 111 -0.531250000; -0.486336017 .int -15142 ; 112 -0.500000000; -0.462117157 .int -14325 ; 113 -0.468750000; -0.437188785 .int -13486 ; 114 -0.437500000; -0.411570056 .int -12624 ; 115 -0.406250000; -0.385283966 .int -11742 ; 116 -0.375000000; -0.358357398 .int -10840 ; 117 -0.343750000; -0.330821117 .int -9919 ; 118 -0.312500000; -0.302709729 .int -8980 ; 119 -0.281250000; -0.274061589 .int -8025 ; 120 -0.250000000; -0.244918662 .int -7055 ; 121 -0.218750000; -0.215326340 .int -6072 ; 122 -0.187500000; -0.185333200 .int -5078 ; 123 -0.156250000; -0.154990730 .int -4074 ; 124 -0.125000000; -0.124353002 .int -3063 ; 125 -0.093750000; -0.093476304 .int -2045 ; 126 -0.062500000; -0.062418747 .int -1023 ; 127 -0.031250000; -0.031239831
151
.int 0 ; 128 0.000000000; 0.000000000 .int 1023 ; 129 0.031250000; 0.031239831 .int 2045 ; 130 0.062500000; 0.062418747 .int 3063 ; 131 0.093750000; 0.093476304 .int 4074 ; 132 0.125000000; 0.124353002 .int 5078 ; 133 0.156250000; 0.154990730 .int 6072 ; 134 0.187500000; 0.185333200 .int 7055 ; 135 0.218750000; 0.215326340 .int 8025 ; 136 0.250000000; 0.244918662 .int 8980 ; 137 0.281250000; 0.274061589 .int 9919 ; 138 0.312500000; 0.302709729 .int 10840 ; 139 0.343750000; 0.330821117 .int 11742 ; 140 0.375000000; 0.358357398 .int 12624 ; 141 0.406250000; 0.385283966 .int 13486 ; 142 0.437500000; 0.411570056 .int 14325 ; 143 0.468750000; 0.437188785 .int 15142 ; 144 0.500000000; 0.462117157 .int 15936 ; 145 0.531250000; 0.486336017 .int 16706 ; 146 0.562500000; 0.509829974 .int 17451 ; 147 0.593750000; 0.532587286 .int 18173 ; 148 0.625000000; 0.554599722 .int 18869 ; 149 0.656250000; 0.575862391 .int 19541 ; 150 0.687500000; 0.596373555 .int 20189 ; 151 0.718750000; 0.616134427 .int 20812 ; 152 0.750000000; 0.635148952 .int 21411 ; 153 0.781250000; 0.653423588 .int 21986 ; 154 0.812500000; 0.670967074 .int 22537 ; 155 0.843750000; 0.687790205 .int 23065 ; 156 0.875000000; 0.703905604 .int 23570 ; 157 0.906250000; 0.719327501 .int 24054 ; 158 0.937500000; 0.734071520 .int 24515 ; 159 0.968750000; 0.748154470 .int 24955 ; 160 1.000000000; 0.761594156 .int 25375 ; 161 1.031250000; 0.774409187 .int 25775 ; 162 1.062500000; 0.786618812 .int 26156 ; 163 1.093750000; 0.798242755 .int 26519 ; 164 1.125000000; 0.809301070 .int 26863 ; 165 1.156250000; 0.819814012 .int 27190 ; 166 1.187500000; 0.829801910 .int 27501 ; 167 1.218750000; 0.839285062 .int 27796 ; 168 1.250000000; 0.848283640 .int 28076 ; 169 1.281250000; 0.856817601 .int 28341 ; 170 1.312500000; 0.864906618 .int 28592 ; 171 1.343750000; 0.872570011 .int 28830 ; 172 1.375000000; 0.879826700 .int 29055 ; 173 1.406250000; 0.886695149 .int 29268 ; 174 1.437500000; 0.893193340 .int 29469 ; 175 1.468750000; 0.899338735 .int 29659 ; 176 1.500000000; 0.905148254 .int 29839 ; 177 1.531250000; 0.910638259 .int 30009 ; 178 1.562500000; 0.915824544 .int 30170 ; 179 1.593750000; 0.920722322 .int 30321 ; 180 1.625000000; 0.925346225 .int 30464 ; 181 1.656250000; 0.929710307 .int 30599 ; 182 1.687500000; 0.933828043 .int 30726 ; 183 1.718750000; 0.937712339 .int 30846 ; 184 1.750000000; 0.941375538 .int 30960 ; 185 1.781250000; 0.944829436 .int 31066 ; 186 1.812500000; 0.948085286 .int 31167 ; 187 1.843750000; 0.951153820
152
.int 31262 ; 188 1.875000000; 0.954045260 .int 31351 ; 189 1.906250000; 0.956769334 .int 31435 ; 190 1.937500000; 0.959335293 .int 31514 ; 191 1.968750000; 0.961751926 .int 31589 ; 192 2.000000000; 0.964027580 .int 31659 ; 193 2.031250000; 0.966170173 .int 31725 ; 194 2.062500000; 0.968187217 .int 31787 ; 195 2.093750000; 0.970085827 .int 31846 ; 196 2.125000000; 0.971872746 .int 31901 ; 197 2.156250000; 0.973554356 .int 31953 ; 198 2.187500000; 0.975136698 .int 32002 ; 199 2.218750000; 0.976625484 .int 32047 ; 200 2.250000000; 0.978026115 .int 32091 ; 201 2.281250000; 0.979343695 .int 32131 ; 202 2.312500000; 0.980583047 .int 32169 ; 203 2.343750000; 0.981748725 .int 32205 ; 204 2.375000000; 0.982845029 .int 32239 ; 205 2.406250000; 0.983876017 .int 32271 ; 206 2.437500000; 0.984845517 .int 32301 ; 207 2.468750000; 0.985757143 .int 32329 ; 208 2.500000000; 0.986614298 .int 32355 ; 209 2.531250000; 0.987420196 .int 32380 ; 210 2.562500000; 0.988177862 .int 32403 ; 211 2.593750000; 0.988890151 .int 32425 ; 212 2.625000000; 0.989559749 .int 32446 ; 213 2.656250000; 0.990189189 .int 32465 ; 214 2.687500000; 0.990780856 .int 32484 ; 215 2.718750000; 0.991336996 .int 32501 ; 216 2.750000000; 0.991859725 .int 32517 ; 217 2.781250000; 0.992351033 .int 32532 ; 218 2.812500000; 0.992812795 .int 32546 ; 219 2.843750000; 0.993246775 .int 32560 ; 220 2.875000000; 0.993654634 .int 32572 ; 221 2.906250000; 0.994037935 .int 32584 ; 222 2.937500000; 0.994398146 .int 32595 ; 223 2.968750000; 0.994736652 .int 32605 ; 224 3.000000000; 0.995054754 .int 32615 ; 225 3.031250000; 0.995353675 .int 32624 ; 226 3.062500000; 0.995634567 .int 32633 ; 227 3.093750000; 0.995898513 .int 32641 ; 228 3.125000000; 0.996146531 .int 32649 ; 229 3.156250000; 0.996379578 .int 32656 ; 230 3.187500000; 0.996598555 .int 32663 ; 231 3.218750000; 0.996804309 .int 32669 ; 232 3.250000000; 0.996997635 .int 32675 ; 233 3.281250000; 0.997179283 .int 32681 ; 234 3.312500000; 0.997349955 .int 32686 ; 235 3.343750000; 0.997510313 .int 32691 ; 236 3.375000000; 0.997660979 .int 32695 ; 237 3.406250000; 0.997802538 .int 32700 ; 238 3.437500000; 0.997935538 .int 32704 ; 239 3.468750000; 0.998060496 .int 32708 ; 240 3.500000000; 0.998177898 .int 32711 ; 241 3.531250000; 0.998288199 .int 32715 ; 242 3.562500000; 0.998391828 .int 32718 ; 243 3.593750000; 0.998489189 .int 32721 ; 244 3.625000000; 0.998580659 .int 32724 ; 245 3.656250000; 0.998666595 .int 32726 ; 246 3.687500000; 0.998747332 .int 32729 ; 247 3.718750000; 0.998823182
153
.int 32731 ; 248 3.750000000; 0.998894443 .int 32733 ; 249 3.781250000; 0.998961390 .int 32736 ; 250 3.812500000; 0.999024286 .int 32737 ; 251 3.843750000; 0.999083374 .int 32739 ; 252 3.875000000; 0.999138886 .int 32741 ; 253 3.906250000; 0.999191037 .int 32743 ; 254 3.937500000; 0.999240031 .int 32744 ; 255 3.968750000; 0.999286059 .int 32746 ; 256 4.000000000; 0.999329300
154
ANEXO Nº 10: DETALLE DE DATOS PRUEBAS EN CIUDAD
La siguiente tabla muestra el resumen de los resultados obtenidos en cada
una de las pruebas efectuadas empleando el sistema con redes neuronales.
Tabla A10.1: Resultado de pruebas en circuito de ciudad utilizando Sistema de
Control con Redes Neuronales.
02/03/2004 13.6 42 min 905.5 909.3 3.8 9.59 0.71 3.58 0.2804/03/2004 14.2 919.2 923.5 4.3 10.62 0.75 3.30 0.3005/03/2004 14.15 938 942.6 4.6 10.91 0.77 3.08 0.3308//03/2004 14.23 932.4 936.7 4.3 11.39 0.80 3.31 0.3010//03/2004 14.2 952.45 956.7 4.25 10.67 0.75 3.34 0.3016//03/2004 14.25 975.1 979.3 4.2 10.68 0.75 3.39 0.2923/03/2003 14.24 1007.4 1011.8 4.4 10.54 0.74 3.24 0.3123/03/2003 14.25 1011.8 1015.9 4.1 10.17 0.71 3.48 0.2925/03/2003 14.23 1017.2 1021.5 4.3 10.56 0.74 3.31 0.3025/03/2003 14.21 1021.62 1025.55 3.93 9.84 0.69 3.62 0.2831/03/2003 14.25 1042 1046.5 4.5 11.48 0.81 3.17 0.3207/04/2003 14.25 1052.6 1056.75 4.15 10.5 0.74 3.43 0.29
Promedio 4.24 10.58 0.75 3.36 0.30
Análisis de Resultados Prácticos Red NeuronalFecha Km Recorrido Tiempo [s] KWh Inicial KWh Final ∆ KWh Ah KWh/kmKm/KWhAh/Km
Observaciones:
1.- Ah inicial = 0.95.
2.- Los Ah finales se miden después de pasar la carga sobrante de los
condensadores a las baterías.
3.- Presión Neumáticos: 52 atrás y 44 adelante.
4.- En la primera muestra de ambas pruebas se cargaron las baterías hasta
resetear el Ah meter. Después, se cargaron hasta prender la luz verde del
cargador.
155
La siguiente tabla muestra el resumen de los resultados obtenidos en cada
una de las pruebas efectuadas empleando el sistema con el control clásico de carga en
los ultracapacitores.
Tabla A10.2: Resultado de pruebas en circuito de ciudad utilizando Sistema de
Control de Carga de los Ultracapacitores.
04/03/2004 14.2 927.9 932.4 4.5 10.8 0.76 3.16 0.3208//03/2004 14.5 942.1 946.8 4.7 10.67 0.74 3.09 0.3210//03/2004 14.23 947.6 952.2 4.6 11.25 0.79 3.09 0.3211//03/2004 14.23 980.1 984.45 4.35 10.77 0.76 3.27 0.3117//03/2004 14.25 984.5 988.9 4.4 10.08 0.71 3.24 0.3126/03/2004 14.22 1026.2 1030.5 4.3 10.48 0.74 3.31 0.3026/03/2004 14.2 1030.6 1034.6 4 9.87 0.70 3.55 0.2830/03/2004 14.25 1036.7 1041 4.3 10.5 0.74 3.31 0.3013/04/2004 14.23 1057.5 1061.85 4.35 10.7 0.75 3.27 0.31
Promedio 4.36 10.55 0.74 3.25 0.31
Ah Ah/Km
Análisis de Resultados Prácticos Control SOCKWh/kmKm/KWhFecha Km Recorrido KWh Inicial KWh Final ∆ KWh
La siguiente tabla muestra el resumen de los resultados obtenidos en cada
una de las pruebas efectuadas empleando el sistema con regeneración en las baterías.
Tabla A10.3: Resultado de pruebas en circuito de ciudad utilizando Sistema con
Regeneración en Baterías.
03/03/2004 14.2 963.1 967.65 4.55 11.18 0.79 3.12 0.3219/03/2004 14.35 989.9 994.6 4.7 11.41 0.80 3.05 0.3319/03/2004 14.2 994.6 999 4.4 10.76 0.76 3.23 0.3106/04/2004 14.22 1047.2 1052 4.8 11.58 0.81 2.96 0.34
Promedio 4.6125 11.23 0.79 3.09 0.32
Ah Ah/Km Km/KWh KWh/km
Análisis de Resultados Prácticos Regeneración en BateríasFecha Km Recorrido Tiempo [s] KWh Inicial KWh Final ∆ KWh
156
La siguiente tabla muestra el resumen de los resultados obtenidos en cada
una de las pruebas efectuadas empleando el sistema sin regeneración.
Tabla A10.4: Resultado de pruebas en circuito de ciudad utilizando Sistema sin
Regeneración.
11//03/2004 14.23 957.8 963.1 5.3 13.94 0.98 2.68 0.3722/03/2004 14.25 1001.1 1006.7 5.6 13.85 0.97 2.54 0.39
Promedio 5.45 13.90 0.98 2.61 0.38
Km/KWh KWh/km
Análisis de Resultados Prácticos sin RegeneraciónFecha Km Recorrido Tiempo [s] KWh Inicial KWh Final ∆ KWh Ah Ah/Km