Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis Cenidet Determinación Carga Baterias
Tesis Cenidet Determinación Carga Baterias
cenidet
“DETERMINACIÓN DEL ESTADO DE CARGA DE BATERÍAS
PLOMO-ÁCIDO UTILIZANDO REDES NEURONALES”
T E S I S
PARA OBTENER EL GRADO DE:
MAESTRO EN CIENCIAS
EN INGENIERÍA ELECTRÓNICA
PRESENTA:
MIGUEL ÁNGEL CRISTÍN VALDEZ
DIRECTOR DE TESIS
DR. CESAR A. ORTEGA SÁNCHEZ
CO-DIRECTOR DE TESIS
DR. ENRIQUE QUINTERO-MÁRMOL MÁRQUEZ
Para que las BPA funcionen de manera óptima es preciso mantener su nivel de carga dentro
de un rango de trabajo. Es decir, no se pueden sobrecargar ni descargar fuera del rango
establecido sin correr el riesgo de dañarlas permanentemente. Para garantizar que las BPA
se encuentren trabajando en la región segura, se utilizan circuitos electrónicos denominados
controladores de carga. Un factor crítico para realizar un adecuado control de carga de las
baterías es determinar el estado de carga de las mismas.
En el capítulo 4 se presentan las dos topologías de red neuronal que se desarrollaron en este
trabajo. Igualmente se presentan los entrenamientos y pruebas que se realizaron a cada
topología con el fin de seleccionar la mejor para su implementación en un controlador de
carga basado en microcontrolador.
This thesis presents the design, simulation, implementation and tests of a neuronal network
that estimates the state of charge of lead-acid batteries. The neural network was
implemented in a charge controller based on microcontroller. It receives as inputs the
LAB´s voltage, the temperature and the previous state-of-charge.
In chapter 2 some methods to determine the state of charge of batteries are described as
well as some previous works developed in other parts of the world related to the estimation
of state-of- charge using neural networks.
Chapter 3 presents a brief introduction to neural network technology and some examples
are described.
Chapter 4 presents the two neural network topologies that were developed in this thesis.
Also, the training and tests that were applied to each topology in order to select the best for
its implementation in a microcontroller-based charge-controller are presented.
Chapter 5 presents the considerations that were born in mind for the implementation in a
microcontroller of the selected neural network. Equally it presents a set of tests that were
carried out to demonstrate that estimating the state-of-charge using a neural network
improves the performance of a charge-controller that originally used Ampere-counting to
estimate state-of-charge.
The conclusions present the advantages, limitations and contributions of the neural network
developed in this work.
CONTENIDO
Lista de Abreviaturas......................................................................................v
1 Introducción .......................................................................................................... 1
1.1 Interacción entre módulos fotovoltaicos y baterías ............................................... 1
1.2 Baterías de plomo-ácido......................................................................................... 2
1.3 Control de Carga de Baterías en Sistemas Fotovoltaicos...................................... 3
1.4 Antecedentes ........................................................................................................... 5
1.5 Hipótesis ................................................................................................................. 6
i
4.2 Topologías propuestas.......................................................................................... 39
4.3 Determinación de la mejor topología................................................................... 42
4.3.1 Entrenamientos de las diferentes topologías ................................................ 42
4.3.2 Selección de la Topología............................................................................. 55
4.3.3 Simulación de la topología seleccionada...................................................... 55
5 Implementación y Pruebas..................................................................62
5.1 Implementación de la red en el controlador de carga ......................................... 63
5.2 Configuración física para las pruebas ................................................................. 69
5.3 Pruebas de validación .......................................................................................... 70
5.3.1 Prueba 1 ........................................................................................................ 71
5.3.2 Prueba 2 ........................................................................................................ 73
5.3.3 Prueba 3 ........................................................................................................ 75
5.3.4 Prueba 4 ........................................................................................................ 77
5.3.5 Prueba 5 ........................................................................................................ 79
5.3.6 Prueba 6 ........................................................................................................ 81
5.4 Resumen de Resultados ........................................................................................ 83
6 Conclusiones .........................................................................................85
6.1 Ventajas de la red Neuronal................................................................................. 86
6.2 Limitaciones de la Red Neuronal Implementada ................................................. 86
6.3 Aportaciones......................................................................................................... 87
6.4 Trabajos Futuros .................................................................................................. 87
7 Referencias............................................................................................89
ANEXO A............................................................................................................................91
ii
LISTA DE TABLAS Y FIGURAS
iii
Figura 4.18.- Comportamiento del error cuadrático medio de la red que calcula el estado de carga cuando la
batería se esta descargando. ................................................................................................. 51
Figura 4.19.- Comparación entre la salida esperada y la calculada por la red neuronal (de descarga) al evaluar
los datos de validación con una red entrenada 500 épocas. ......................................................... 52
Figura 4.20.- Funciones de pertenencia y parámetros de la red de carga entrenada 200 épocas. ................. 53
Figura 4.21.- Funciones de pertenencia y parámetros de la red de descarga entrenada 500 épocas. ............. 54
Figura 4.22.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar los datos de campo del mes de diciembre de 2003 completos. ..... 57
Figura 4.23.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar un rango de los datos de campo del mes de diciembre de 2003. ... 58
Figura 4.24.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar los datos de campo del mes de enero de 2004 completos. ........... 59
Figura 4.25.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar un rango de los datos de campo del mes de enero de 2004. ......... 60
Figura 5.1.- Controlador de carga desarrollado en el IIE .................................................................... 62
Figura 5.2.- Funciones de pertenencia y parámetros de la red programada en el controlador de carga. ........ 64
Tabla 5.1.- Simulación de la ejecución de la red neuronal cada segundo ............................................... 65
Figura 5.3.- Algoritmo de la red neuro-difusa implementada en el controlador de carga........................... 68
Figura 5.4.- Arreglo del equipo utilizado para realizar las pruebas de validación de la red neuronal ........... 69
Figura 5.5.- Demanda constante de 4 amperes ................................................................................. 72
Figura 5.6.- Demanda constante de 6 amperes ................................................................................. 74
Figura 5.7.- Demanda de corriente variable y aleatoria. ..................................................................... 76
Figura 5.8.- Descargas intermitentes .............................................................................................. 78
Figura 5.9.- Descargas con corrientes pequeñas ............................................................................... 80
Figura 5.10.- Descargas con corrientes altas .................................................................................... 82
Tabla 5.2.- Resumen de resultados de las pruebas ............................................................................ 83
iv
LISTA DE ABREVIATURAS
v
1 Introducción
La figura 1.1 muestra cómo se distribuye la entrega de energía a la carga a lo largo del día.
Durante la noche toda la energía demandada por la carga la provee el banco de baterías.
En horas tempranas de la mañana los módulos comienzan a generar, pero si la corriente que
entregan es menor que la exigida por la carga, la batería deberá contribuir en el aporte. A
partir de una determinada hora de la mañana la energía generada por los módulos
fotovoltaicos supera la energía promedio demandada. Los módulos no solo atenderán la
1
demanda sino que además, todo exceso se almacenará en la batería que empezará a cargarse
y a recuperarse de su descarga de la noche anterior.
Energía
2
1.3 Control de Carga de Baterías en Sistemas Fotovoltaicos
Las BPA son dispositivos que por medio de reacciones electroquímicas reversibles pueden
proveer o almacenar carga eléctrica. Sin embargo, para que las BPA funcionen de manera
óptima es preciso mantener su nivel de carga dentro de un rango de trabajo. Es decir, no se
pueden sobrecargar ni descargar fuera del rango establecido sin correr el riesgo de dañarlas
permanentemente ya que son dispositivos sumamente delicados cuya vida útil depende
fuertemente de factores tales como: temperatura de operación, régimen de descarga,
régimen de carga y conexión con otros elementos.
El proceso de carga de baterías plomo-ácido, así como de cualquier otro tipo de baterías,
consiste en reponer la energía consumida durante la descarga. Pero como ningún proceso
físico es 100% eficiente, para cargar al 100% una batería es necesario suministrarle mas del
100% de la energía demandada durante su descarga.
Para garantizar que las BPA se encuentren trabajando en la región segura, se utilizan
circuitos electrónicos denominados controladores de carga. Su función principal es la de
desconectar la fuente de energía cuando las baterías han alcanzado su nivel máximo de
carga, y desconectar los elementos alimentados cuando la batería ha alcanzado un nivel de
carga demasiado bajo. La figura 1.2 muestra la manera en que debe ser cargada una BPA,
según recomendaciones de un fabricante [1].
2.45
Carga flotante
2.27
V2
V1 A B C D E
0 T1 T2 T3 T4
Tiempo de carga en horas
La figura 1.2 muestra las 5 regiones en las que se divide un ciclo de carga típico:
REGIÓN A- Modo de corriente constante: Se aplica una corriente constante cuya magnitud
dependerá de la velocidad de carga que se desee. A mayor corriente, menor tiempo de
cargado, pero el tiempo de descargado será igualmente corto. Esta corriente se aplica hasta
que el voltaje por celda alcanza un valor entre 2.45 y 2.5 volts. T1 se anota como referencia
para el disparo de los eventos subsecuentes en el algoritmo de cargado.
3
REGIÓN B- Modo de voltaje constante: Esta región comienza en T1. Se aplica un voltaje
constante a la batería durante un tiempo igual a 1.5 veces T1. Desde el inicio de la carga
hasta el final de la región B (T2) debe transcurrir un tiempo igual a 2.5 T1.
REGIÓN C- Modo de corriente constante: Se aplica una corriente constante limitada a 0.05
veces la corriente nominal de la batería en Amperes / hora. Se permanece en este estado
durante 0.5 T1 ó una hora, el tiempo que sea más corto. Si el voltaje de la batería llegara a
2.6 Vpc, se debe pasar a un régimen de voltaje constante hasta llegar a T3 (T3 - T2 = 0.5
T1 ≤ 1 hora).
REGIÓN D- Período de descanso: Se debe dar al menos una hora de descanso a la batería
antes de pasar a la región E. Este período de descanso permite que las reacciones químicas
se homogenicen dentro de la batería, evitando puntos de mayor desgaste. Al final de este
período el electrolito debe tener una concentración de ácido homogénea.
REGIÓN E- Modo de carga flotante: Para compensar los efectos de auto-descarga que
presentan las BPA se aplica un voltaje constante de 2.27 Vpc a 25 °C. El voltaje de
flotación también sirve para compensar los efectos negativos de las descargas profundas.
Un factor crítico para realizar un adecuado control de carga de las baterías, es determinar el
estado de carga de las mismas. Es decir, para tener un control de carga eficiente, es
necesario contar con un medio que permita determinar con precisión la capacidad
remanente de la batería para entregar carga, esto es, si se conoce el estado actual de la
batería se puede saber que cantidad de energía requiere para alcanzar su nivel máximo o
4
que carga máxima puede soportar antes de descargarse por completo. Este es un tema
complicado que se investiga en diferentes centros alrededor del mundo [8], [9], [10], [11],
[12].
1.4 Antecedentes
El controlador se comunica con una estación central por medio de un enlace serial. La
estación central es una computadora personal que ejecuta un programa para administración
de baterías. El programa se desarrolló en lenguaje Visual Basic y en su versión actual se
desarrolla en LabView y ofrece las funciones de captura, análisis y despliegue gráfico de
datos.
5
El elemento más importante en el sistema es el controlador de carga o estación remota (ver
figura 1.4). Cada una de las estaciones remotas realiza las siguientes funciones:
Batería Interfase
Serial
Como se detalla más adelante, como resultado de ésta tesis se desarrolló un método para el
cálculo del estado de carga de las baterías selladas utilizando redes neuronales y se
implementó dicha red en un controlador de carga desarrollado. Con lo anterior se mejoró el
desempeño de dicho controlador de carga.
1.5 Hipótesis
6
2 Determinación del Estado de Carga
de Baterías
Para realizar el control de carga de baterías de manera eficiente, es necesario contar con un
medio que permita determinar con precisión el estado de carga de las baterías. Este es un
tema complicado que se investiga en diferentes centros alrededor del mundo [8], [9], [10].
A continuación se describen brevemente las principales técnicas para determinar el estado
de carga de baterías plomo-ácido [12].
Prueba de descarga
Es la prueba más confiable para determinar el estado de carga de una batería. La prueba
consiste en cargar y descargar la batería bajo condiciones controladas. Sin embargo, este
tipo de pruebas normalmente requieren demasiado tiempo para efectuarse, lo cual hace a
esta técnica imposible de aplicar fuera del laboratorio. Además, mientras se efectúa la
prueba se interrumpe la operación de los componentes alimentados por la batería.
Conteo de amperes-hora
7
Medición de las propiedades físicas del electrolito
En las baterías plomo-ácido el electrolito es un ácido diluido en agua, a través del cual se
llevan a cabo las reacciones químicas durante la carga y la descarga. Existe una relación
lineal entre la concentración de ácido en el electrolito y el estado de carga de una BPA, por
lo tanto midiendo la densidad del electrolito se puede determinar el estado de carga. Sin
embargo, este método únicamente se puede aplicar en BPA estacionarias con electrolito
líquido. A la fecha no existe un método para determinar la densidad del electrolito en BPA
selladas.
Al igual que la densidad del electrolito, el voltaje de circuito abierto de una BPA varía
linealmente con el estado de carga. Este método es particularmente útil en aplicaciones que
implican largos períodos de descanso para la batería. En aplicaciones más dinámicas, el
voltaje de circuito abierto se usa para complementar alguna otra técnica que determine el
estado de carga.
Modelo lineal. Con este método se trata de encontrar una ecuación lineal que represente la
relación entre el estado de carga de una batería, las mediciones eléctricas que se realizan
sobre la misma y el estado de carga anterior. Por análisis estadísticos se calculan los
coeficientes de la ecuación lineal propuesta.
Redes neuronales artificiales. La función principal de una red neuronal es establecer una
relación entre datos de entrada / salida de cualquier clase. Por lo tanto, se puede estimar el
8
estado de carga de una batería en la salida de una red neuronal artificial que reciba como
entradas las mediciones eléctricas de la batería, la temperatura y el estado de carga anterior.
Para entrenar a una red neuronal se requieren de datos de entrada / salida del fenómeno a
modelar. La calidad de los resultados entregados por la red está en relación directa con la
calidad de los datos de entrenamiento
Resumiendo los diferentes métodos de determinación del estado de carga de baterías y sus
aplicaciones obtenemos la tabla 2.1[12].
Tabla 2.1.- Métodos de determinación del estado de carga de baterías y sus aplicaciones.
Como las baterías son dispositivos no lineales, la propiedad de no linealidad de las redes
neuronales es algo muy ventajoso, así como su aprendizaje adaptable ya que las
condiciones en las que se encuentran las baterías no son siempre predecibles. Es decir, una
de las principales ventajas de las redes neuronales es su habilidad de aprender de su medio
ambiente y que mediante un proceso de entrenamiento pueden “descubrir” la correlación
que existe entre variables de entrada y salida sin recurrir a los métodos tradicionales. Esta
capacidad les permite proporcionar el valor de salida que corresponde a un conjunto de
entradas que no se utilizaron durante el entrenamiento de la red. Otra característica
importante de las redes neuronales es su fácil inserción dentro de casi cualquier tecnología.
9
Se han reportado trabajos relacionados con el cálculo del estado de carga de baterías
utilizando redes neuronales, uno de los cuales presenta un método para la estimación de la
capacidad remanente de baterías selladas de tipo plomo-ácido, con un error máximo del
10% y error promedio de 3% [16].
La estructura de la red reportada en el artículo mencionado consiste en una red de tres capas
(ver figura 2.1), en la cual se tienen 4 nodos de entrada y 10 de salida para indicar el estado
de carga entre el 0 y 100% en pasos de 10%. Para esta aplicación se usaron 50 unidades
ocultas para alcanzar la exactitud necesaria y una velocidad de cómputo aceptable.
Este estudio fue realizado como una simulación en computadora, pero la posibilidad de su
implementación crea el escenario donde los diferentes patrones para diferentes tipos de
batería se guarden en una memoria, y el usuario pueda simplemente seleccionar el tipo
adecuado de batería y la red estará lista para realizar los cálculos adecuadamente.
100 – 90 %
90 – 80 %
80 – 70 %
Temperatura
70 – 60 %
Voltaje
60 – 50 %
Corriente
50 – 40 %
Impedancia
40 – 30 %
30 – 20 %
20 – 10 %
10 – 0 %
La exactitud de este esquema todavía no compite con los otros métodos de estimación y
encontrar la forma de lograrlo es objeto de estudio actualmente.
Otro trabajo reportado sobre este tema consiste en un modelo para el cálculo de la
capacidad disponible de baterías de vehículos eléctricos a través de redes neuronales
artificiales [17]. En esta configuración, la red neuronal tiene tres capas: la capa de entrada,
la oculta y la de salida (ver figura 2.2). La capa de entrada tiene un nodo para la corriente
de descarga Id, la capa oculta tiene cuatro nodos y la capa de salida tiene un nodo para la
capacidad disponible Ca.
10
V11
W11 W12
Id V21 Ca
V31
W14 W13
V41
K
Ca = ( n −1)
I d
Una diferencia importante entre los dos trabajos mencionados anteriormente son los
parámetros de entrada en una red y en la otra.
Uno de los factores que influye en la determinación de los parámetros de entrada a la red es
precisamente en donde va a ser implementada dicha red, es decir, si se requiere que la red
se implemente en un controlador de carga en línea es probable que no se cuente con los
mismos parámetros que una red que se utilizará solo en computadora y en la que se puede
contar con muchos mas datos que con los que se podría contar en una medición en línea.
Debido a lo anterior, en este trabajo se planteó la hipótesis de que si se utiliza una red
neuronal artificial para determinar el estado de carga de las baterías se puede mejorar el
desempeño de un controlador de carga de baterías plomo-ácido basado en microcontrolador
y que actualmente calcula el estado de carga utilizando el algoritmo de conteo de Amperes.
Esto es, mientras más confiable sea el cálculo del estado de carga de la batería, mejor será
el desempeño del controlador.
11
3 Introducción a las Redes Neuronales
Darpa (1988), define una red neuronal como un sistema compuesto de muchos
elementos simples de procesamiento los cuales operan en paralelo y cuya función es
determinada por la estructura de la red y el peso de las conexiones; realizándose el
procesamiento en cada uno de los nodos o elementos de cómputo.
12
La red obtiene el conocimiento a través de un proceso de aprendizaje.
Para almacenar dicho conocimiento se utilizan las conexiones
interneuronales, conocidas como pesos sinápticos.
Kohoen (1998) las define como una red de elementos simples (usualmente
adaptables) masivamente interconectados en paralelo y con organización jerárquica,
las cuales intentan interactuar con los objetos del mundo real del mismo modo que
lo hace el sistema nervioso biológico.
Las redes neuronales artificiales han sido desarrolladas como generalizaciones de modelos
matemáticos del conocimiento humano o de la biología neuronal, con base en las siguientes
consideraciones:
13
Existen dos fases en toda aplicación de las redes neuronales: la fase de aprendizaje o
entrenamiento y la fase de prueba. En la fase de entrenamiento, se usa un conjunto de datos
o patrones de entrenamiento para determinar los pesos (parámetros de diseño) que definen
el modelo neuronal. Una vez entrenado este modelo, se pasa a la llamada fase de prueba o
funcionamiento directo, en la que se procesan los patrones de prueba que constituyen la
entrada habitual de la red, analizándose de esta manera las prestaciones definitivas de la
red.
La ventaja más importante de las RNA es la de resolver problemas que son muy complejos
para tecnologías convencionales, problemas que no tienen una solución determinística o
para los cuales una solución determinística es muy complicada. En general, por ser una
abstracción del cerebro biológico, las RNA son buenas para resolver aquellos problemas
que las personas resuelven adecuadamente, pero que las computadoras no. Estos problemas,
entre otros, incluyen reconocimiento de patrones y problemas de pronóstico (los cuales
requieren el reconocimiento de una tendencia en unos datos).
A continuación se presenta una pequeña porción de lo que es el gran universo de las redes
neuronales artificiales. Las redes feedforward más conocidas son: Perceptrón, ADALINE,
MADALINE y de Retropropagación (Backpropagation), aunque actualmente se observa
una tendencia al uso de redes neuro-difusas, las cuales combinan los sistemas de inferencia
difusos y las redes neuronales, aprovechando las características sobresalientes de cada
modelo.
"#
! $%&'
El modelo de red perceptrón, desarrollado por Rosenblatt en 1958, tiene la capacidad para
aprender a reconocer patrones sencillos: está formado por varias neuronas lineales para
recibir las entradas a la red y una neurona de salida, es capaz de decidir cuándo una entrada
que se presenta a la red pertenece a una de las dos clases que es capaz de reconocer.
Su única neurona de salida realiza la suma ponderada de las entradas, resta el umbral y pasa
el resultado a una función de transferencia de tipo escalón. Responde +1 si el patrón
presentado pertenece a una clase X, o –1 si pertenece a la clase Z. La salida depende de la
entrada neta y del valor de umbral θ.
Sin embargo, como solamente cuenta con una capa de entrada y otra de salida con una
única neurona, tiene una capacidad de representación bastante limitada. Únicamente es
14
capaz de discriminar patrones muy sencillos, linealmente separables y una prueba de ello es
su imposibilidad de representar la función OR-EXCLUSIVA.
Las reglas de aprendizaje del perceptrón, son del tipo supervisado, por lo que requiere que
sus resultados sean evaluados y se realicen las modificaciones al sistema, en caso de ser
necesario.
a) Inicialización de los pesos y del umbral. Se asignan valores aleatorios a los pesos de
las conexiones y al umbral.
b) Presentación de un nuevo par (Entrada, Salida esperada). Se presenta un par con las
entradas. Se pasa la entrada y la salida deseada.
c) Cálculo de la salida actual.
d) Adaptación de los pesos.
e) Volver al paso b).
El perceptrón multinivel es una red de tipo feedforward compuesta por varias capas de
neuronas entre la entrada y la salida de la misma. Permite establecer regiones de decisión
mucho más complejas que las de dos semiplanos, como el Perceptrón de un solo nivel, que
15
sólo puede establecer dos regiones separadas por una frontera lineal en el espacio de
patrones de entrada.
Un Perceptrón con tres niveles de neuronas puede formar cualquier región convexa (o
cerrada) en ese espacio. Las regiones convexas se forman mediante la intersección entre las
regiones formadas por cada neurona de la segunda capa. Cada elemento se comporta como
un Perceptrón simple.
decisión
Figura 3.3.- Representación de las regiones de decisión que permite el modelo del perceptrón multinivel
Por lo general no se requieren más de cuatro capas en una red de tipo Perceptrón, pues,
como ya se ha visto anteriormente, puede generar regiones de decisión arbitrariamente
complejas.
Tanto en los Perceptrones de tres como en los de cuatro capas se tiene un inconveniente,
que es la selección correcta del número de neuronas de las capas ocultas. En el de tres
16
capas, este número debería ser lo suficientemente grande como para formar una región con
suficiente complejidad para la solución del problema, pero por otro lado, no es conveniente
que dicho número de nodos sea tan grande que la estimación de los pesos no sea fiable para
el conjunto de patrones de entrada disponibles.
, -
( ) ! .
( * + $%/0
Las redes ADALINE y MADALINE fueron desarrolladas por Bernie Widrow. Sus
arquitecturas son esencialmente las mismas que las del Perceptrón. Ambas usan neuronas
con funciones de transferencia escalón. La ADALINE está limitada a una sola neurona de
salida, mientras que MADALINE puede tener varias. La diferencia fundamental respecto al
Perceptrón se refiere al mecanismo de aprendizaje. Utilizan la regla de aprendizaje
denominada regla Delta de Hidrow-Hoff, o regla del mínimo error cuadrado medio.
Pueden procesar información analógica, tanto de entrada como de salida, utilizando una
función de activación lineal o sigmoidal.
La estructura de las redes ADALINE es casi idéntica a la del Perceptrón. Está formada por
un elemento denominado Combinador Adaptable Lineal (CAL), que obtiene una salida
lineal que puede ser aplicada a otro elemento de conmutación bipolar. Si la salida del CAL
es positiva, la salida de la red es +1; si es negativa, entonces la salida de la red es –1. Esta
red puede utilizarse para generar una salida analógica, utilizando un combinador sigmoidal,
en lugar de binario.
Utilizan aprendizaje OFF LINE con supervisión denominado LMS (Least Mean Squared) o
regla del mínimo error cuadrado medio. Conocida también como Regla Delta por tratar de
minimizar una delta (o diferencia) entre el valor observado y el deseado en la salida de la
red.
17
Esta regla es un método para hallar el vector de pesos W deseado, el cual deberá ser único y
asociar con éxito cada vector del conjunto de vectores o patrones de entrada con su
correspondiente valor de salida correcto (o deseado).
El entrenamiento consiste en adaptar los pesos a medida que se vayan presentando los
patrones de entrenamiento y salidas deseadas para cada uno de ellos. Para cada
combinación entrada-salida se realizan pequeños ajustes en los valores de los pesos hasta
que se obtienen salidas correctas.
Como filtros adaptables, las redes ADALINE se han utilizado para varias aplicaciones,
como:
Filtros de ecualización adaptables en modems de alta velocidad.
Canceladores adaptables del eco para el filtrado de señales en comunicaciones
telefónicas de larga distancia y comunicaciones vía satélite.
18
3.3.2 Redes MADALINE (Multiple ADALINE)
La red MADALINE tiene una idea semejante a la expuesta del Perceptrón Multinivel,
respecto del elemental compuesto por una sola neurona.
El principio de mínima perturbación establece que los nodos que puedan afectar al error de
salida y que sufran los cambios más pequeños en sus pesos deberían tener prioridad en el
proceso de aprendizaje.
1 " 5 -
6 $%'/
) 2
3 4 +
19
Primero se aplica un patrón de entrada como estímulo para la primera capa de
neuronas de la red. Este patrón se va propagando a través de todas las capas internas
hasta generar una salida, se compara el resultado obtenido en las neuronas de salida
con la salida que se desea obtener y se calcula un valor del error para cada neurona
de salida.
Luego, se transmiten estos errores hacia atrás, partiendo de la capa de salida, hacia
todas las neuronas de la capa intermedia que contribuyan directamente a la salida,
recibiendo el porcentaje de error aproximado a la participación de la neurona
intermedia en la salida original. Repitiéndose este proceso capa por capa, hasta que
todas las neuronas de la red hayan recibido un error que describa su aportación
relativa al error total. Basándose en el valor del error recibido, se reajustan los pesos
de conexión de cada neurona, de manera que en la siguiente vez que se presente el
mismo patrón, la salida se encuentre más cercana a la deseada; es decir, el error
disminuye.
La regla delta, propuesta por Widrow en 1960 se ha extendido a redes con capas
intermedias (regla delta generalizada) con conexiones hacia delante (feedforward) y cuyas
células tienen funciones de activación continuas (lineales o sigmoidales), dando lugar al
algoritmo de retropropagación (backpropagation). Una función de este tipo es la sigmoidal,
a diferencia de la función escalón utilizada en el Perceptrón, ya que la última no es
derivable en el punto donde se encuentra la discontinuidad.
Este algoritmo utiliza también una función o superficie de error asociada a la red, en la que
se va buscando el estado estable de energía mínima o de mínimo error a través del camino
descendente de la superficie del error. Por esa razón, el error del sistema es realimentado
para realizar la modificación de los pesos en un valor proporcional al gradiente decreciente
de dicha función de error.
Figura 3.5.- Representación de una superficie de error; w representa los valores posibles de la matriz de pesos
de la red.
20
3.4.2 Funcionamiento del algoritmo
El método que sigue la regla delta generalizada para ajustar los pesos es exactamente el
mismo que el de la regla utilizada en ADALINE; los pesos se actualizan de forma
proporcional a la delta, o diferencia entre la salida deseada y la obtenida ( δ = salida
deseada – salida obtenida).
Dada una neurona (unidad Ui) y la salida que produce, yi, el cambio que se produce en el
peso de la conexión que una salida de dicha neurona con la unidad Uj(wji) para un patrón de
aprendizaje p determinado es:
∆w ji (t + 1) = αδ pj y pi
δ pi = (d pj − y pj ) f ' (net j )
donde dpj es la salida deseada de la neurona j para el patrón p y netj es la entrada neta que
recibe la neurona j.
Esta fórmula es como la de la regla delta, excepto a los se refiere a la derivada de la función
de transferencia. Este término representa la modificación que hay que realizar en la entrada
que recibe la neurona j. En caso de que dicha neurona no sea de salida, el error que se
produce estará en función del error que se cometa en las neuronas que reciban como
entrada la salida de dicha neurona. Esto es lo que se denomina como procedimiento de
propagación de error hacia atrás.
Según esto, en el caso de que Uj no sea una neurona de salida, el error que se produce está
en función del error que se comete en las neuronas que reciben como entrada la salida de
Uj:
en donde el rango de k cubre a todas las neuronas a las que está conectada la salida de Uj.
De esta forma el error que se produce en una neurona oculta es la suma de los errores que
21
se producen en las neuronas a las que está conectada la salida de ésta, multiplicado cada
uno de ellos por el peso de la conexión.
w ji (t + 1) = w ji (t ) + αδ pj y pi + β (w ji (t ) − w ji (t + 1))
∆w ji (t + 1) = αδ pj y pi + β∆w ji (t )
donde β es una constante que determina el efecto t+1 del cambio de los pesos en el instante
t.
[
w ji (t + 1) = w ji (t ) + ∆w ji (t + 1) ]
w ji (t + 1) = w ji (t ) + [αδ pj y pi + β∆w ji (t )]
donde:
δ pj = ( k
δ pk wkj ) f ' (net j ) si Uj no es una neurona de salida.
En una red de retropropagación existe una capa de entrada con n neuronas y una capa de
salida con m neuronas y al menos una capa oculta de neuronas internas. Cada neurona de
una capa (excepto las de entrada) recibe entradas de todas las neuronas de la capa anterior y
22
envía su salida a todas las neuronas de la capa posterior (excepto las de salida). No hay
conexiones hacia atrás feedback ni laterales entre las neuronas de la misma capa.
La aplicación del algoritmo tiene dos fases, una hacia delante y otra hacia atrás. Durante la
primera fase el patrón de entrada es presentado a la red y propagado a través de las capas
hasta llegar a la capa de salida.
Obtenidos los valores de salida de la red, se inicia la segunda fase, comparándose éstos
valores con la salida esperada para obtener el error. Se ajustan los pesos de la última capa
proporcionalmente al error. Se pasa a la capa anterior con una retropopagación del error,
ajustando los pesos y continuando con este proceso hasta llegar a la primer capa.
De esta manera se han modificado los pesos de las conexiones de la red para cada patrón de
aprendizaje del problema, del que conocíamos su valor de entrada y la salida deseada que
debería generar la red ante dicho patrón.
Paso 1
Paso 2
Presentar un patrón de entrada y especificar la salida deseada que debe generar la red.
Paso 3
Calcular la salida actual de la red. Para ello presentamos las entradas a la red y vamos
calculando la salida que presenta cada capa hasta llegar a la capa de salida, ésta será la
salida de la red. Los pasos son los siguientes:
Se calculan las entradas netas para las neuronas ocultas procedentes de las neuronas de
entrada. Para una neurona j oculta:
N
net hpj = whji x pi + θ jh
i =1
23
en donde el índice h se refiere a magnitudes de la capa oculta; el subíndice p, al p-ésimo
vector de entrenamiento, y j a la j-ésima neurona oculta. El término θ puede ser opcional,
pues actúa como una entrada más.
y pk = f net opk
k
o
( )
Paso 4
La función f debe ser derivable. En general disponemos de dos formas de función de salida:
f k (net jk ) =
1
La función sigmoidal : − net jk
1+ e
Para una función lineal, tenemos: f ko '= 1 , mientras que la derivada de una función
( )
sigmoidal es: f ko ' = f ko 1 − f ko = y pk (1 − y pk ) por lo que los términos de error para las
neuronas de salida quedan:
Si la neurona j no es de salida, entonces la derivada parcial del error no puede ser evaluada
directamente, por tanto se obtiene el desarrollo a partir de valores que son conocidos y otros
que pueden ser evaluados.
24
La expresión obtenida en este caso es: δ pjh = f jh ' (net hpj ) δ pko wkjo donde observamos que el
k
error en las capas ocultas depende de todos los términos de error de la capa de salida. De
aquí surge el término propagación hacia atrás.
Paso 5
Actualización de los pesos: para ello utilizamos un algoritmo recursivo, comenzando por
las neuronas de salida y trabajando hacia atrás hasta llegar a la capa de entrada, ajustando
los pesos de la siguiente forma:
∆wij = yi * y j
∆wkjo (t + 1) = αδ pk
o
y pj
Paso 6
1 M 2
El proceso se repite hasta que el término de error E p = δ pk resulta aceptablemente
2 k =1
pequeño para cada uno de los patrones aprendidos.
Las redes de retropropagación son unas de las más utilizadas en los últimos tiempos.
Pueden ser aplicadas a una amplia variedad de problemas debido a la naturaleza de su
proceso de aprendizaje, que solamente necesita de dos ecuaciones para propagar las señales
de error hacia atrás. Se elige una de las dos ecuaciones dependiendo si la unidad de proceso
es o no de salida.
25
3.4.7 Dimensionamiento de la red
Respecto al número de capas de la red, en general tres capas son suficientes (entrada -
oculta-salida). Sin embargo, hay veces que un problema es más fácil de resolver con más de
una capa oculta. El tamaño de las capas, tanto de entrada como de salida, suelen venir
determinado por la naturaleza de la aplicación. En cambio, decidir cuántas neuronas debe
tener una capa oculta no suele ser tan evidente.
Las redes adaptables neuro-difusas combinan los sistemas de inferencia difusos y las redes
neuronales, aprovechando las características sobresalientes de cada modelo. Por un lado,
los sistemas de inferencia difusos proveen un mecanismo intuitivo y de alto nivel para
representar el conocimiento mediante la utilización de reglas IF/THEN. Por otro lado, las
redes neuronales poseen un alto grado de adaptabilidad y capacidad de aprendizaje y
generalización. La construcción de herramientas que se nutren de estas dos áreas ha
demostrado ser un mecanismo eficiente para modelar sistemas reales.
Las capacidades adaptables de las redes ANFIS las hacen directamente aplicables a una
gran cantidad de áreas como control adaptable, procesamiento y filtrado de señales,
clasificación de datos y extracción de características a partir de ejemplos.
26
La premisa consta de una serie de funciones de pertenencia asociadas a variables
lingüísticas (una por cada variable de entrada) que son evaluadas y combinadas mediante la
aplicación de una norma-T. En esta implementación se utiliza como norma-T al producto,
siendo otra norma-T usual la función min().
Los diferentes modelos de inferencia difusos, dan lugar a diferentes arquitecturas ANFIS.
El modelo que se desarrollará a continuación corresponde con el modelo de inferencia
difuso Takagi-Sugeno-Kang (TSK) debido su transparencia y eficiencia. Para arquitecturas
ANFIS correspondientes o otros modelos (Mamdani o Tsukamoto), se pueden consultar
[19][20].
Por simplicidad asumamos que el sistema de inferencia difuso a considerar tiene dos
entradas x y y y una salida z. Para un modelo difuso tipo Sugeno de primer orden
[21][22][23], un conjunto de reglas común con dos reglas del tipo IF-THEN son:
A1 B1
w1 f1=p1*x+q1*y+r1
X Y w1 f1 + w2 f2
f=
w1 + w2
= w1 f1 + w2 f2
A2 B2
w2 f2=p2*x+q2*y+r2
X Y
x y
Figura 3.6.- Modelo difuso tipo Sugeno de primer orden con dos entradas y dos reglas
27
x y
A1
w1 w1 w1 f1
x
A2 Π Ν
Σ f
B1 Π Ν
w2 w2 w2 f2
y
B2
x y
Figura 3.7.- Arquitectura ANFIS equivalente al modelo difuso tipo Sugeno de primer orden con dos entradas
y dos reglas.
Capa 1.- Cada nodo i en esta capa es un nodo adaptable con una función
O1,i = µ Ai ( x) , para i = 1, 2, o
O1,i = µ Bi − 2 ( y ) , para i = 3, 4
x−a d −x
µ A ( x ) = max min ,1, ,0
b−a d −c
28
1
0 a b c d X
Conforme los valores de dichos parámetros varíen, la forma de la función trapecio variará,
obteniéndose varias formas de funciones de membresía para un conjunto difuso A. Es decir,
para especificar una función de membresía tipo trapecio basta con especificar los
parámetros {a, b, c, d} correspondientes. Los parámetros en esta capa son conocidos como
parámetros de la premisa.
Capa 2.- Cada nodo en esta capa es un nodo fijo nombrado como Π cuya salida es el
producto de todas las señales de entrada:
O2,i = wi = µ Ai ( x) µ Bi ( y ), i = 1, 2
Cada salida de nodo representa el grado de “disparo” de una regla (el peso de una regla). En
general, cualquier operador norma-T que represente un AND difuso puede ser utilizado
como la función de los nodos en este capa.
Capa 3.- Cada nodo en esta capa es un nodo fijo nombrado N. El i-ésimo nodo calcula la
relación de la “fuerza de disparo” de la i-ésima regla con la suma de todas las “fuerzas de
disparo” de todas las reglas:
wi
O3,i = wi = , i = 1, 2
w1 + w2
Por conveniencia, las salidas de esta capa son llamadas “fuerzas de disparo normalizadas”.
Capa 4.- Cada nodo i en esta capa es un nodo adaptable con una función de nodo
O4,i = wi f i = wi ( pi x + q i y + ri ), i = 1, 2
29
donde wi es una “fuerza de disparo normalizada” de la capa 3 y {pi, qi, ri} es el conjunto de
parámetros de este nodo. Los parámetros de esta capa son conocidos como los parámetros
del consecuente.
Capa 5.- El nodo en esta capa es un nodo fijo nombrado como Σ , que calcula la salida
general como la suma de todas las señales de entrada
wi f i
O5,1 = wi f i = i
i wi
i
A1
w1 w1 f1
x
A2 Π
Σwi fi
Σ
B1 Π w2 f
w2 f2 /
y
B2
Σ Σwi
Figura 3.9.- Arquitectura ANFIS para el modelo difuso tipo Sugeno, donde la normalización de los pesos se
implementa en la última capa.
30
4 Diseño de la Red Neuronal para
Determinar el Estado de Carga de
Baterías Plomo Ácido
Cada 4.68 segundos toma las lecturas de las corrientes que entran y salen de la
batería
Determina si la corriente sale (+) o entra (-) a la batería.
Suma o resta esta corriente con la suma de las corrientes de las muestras anteriores.
Cuando la suma de las muestras equivale a un 1% de la capacidad total de la batería,
incrementa o decrementa el estado de carga en un grado porcentual dependiendo si
la suma es positiva o negativa.
Además del algoritmo anterior, el controlador de carga actual cuenta con un ajuste que
posiciona el valor del estado de carga a 100% cuando se detecta un voltaje de batería de
31
14.7 volts (cuando la batería es de 12 volts nominales), y se considera éste como el voltaje
que indica un estado de carga del 100%.
Ahora bien, uno de los principales problemas con que se enfrenta el diseñador de
controladores de carga es el de medir en forma correcta las corrientes que circulan por el
sistema, ya que éstas pueden ser muy bajas durante un período y muy altas en otro, y los
sensores de corriente generalmente no tienen un comportamiento lineal en todo el rango
que se maneja y no son capaces de medir corrientes bajas y altas con la misma exactitud.
Debido a lo anterior, y a que el cálculo de estado de carga que realiza el controlador está
basado principalmente en la corriente de la batería, se llegó a la conclusión que dos de los
principales requisitos que se debían cumplir durante el diseño de la red eran:
b) Que la red sea capaz de realizar el cálculo del estado de carga sin necesidad de
involucrar la medición precisa de la corriente de la batería.
Existen dos métodos de recopilar los datos para el entrenamiento de la red neuronal
utilizando el controlador de carga existente:
Los ciclos de carga y descarga realizados fueron diseñados con el fin de generar dos tipos
de series de datos:
32
a) El primer tipo consiste en datos “secuenciales” de voltaje, corriente, temperatura y
estado de carga, esto con el fin de contar con los estados anteriores de dichas
mediciones, principalmente con el del estado de carga anterior.
La batería utilizada para la generación de los datos de entrenamiento es una batería plomo-
ácido sellada marca Power Sonic modelo PS-12330 NB de 12 volts y 33 Amperes-hora.
Panel
Fotovoltaico
Controlador
de Carga
Carga
Electrónica
Batería
Otra característica de estos datos es que el estado de carga se almacena únicamente cada
hora y esto nos proporciona muy poca información en cuanto al comportamiento del estado
de carga durante este período. Ya que si existe una corriente de carga o descarga muy
33
grande en el período de una hora existirá un incremento o decremento muy grande en el
estado de carga que se observa hasta después de una hora.
120 15
115 14
110 13
105 12
100 11
EC (%) / Temperatura (oC)
95 10
90 9
8
Amperes / Volts
85
80 7
75 6
70 5
4
65 3
60 2
55 1
50 0
45 -1
40 -2
35 -3
30 -4
25 -5
20 -6
15 -7
1300
1700
2100
0
200
300
700
1000
1100
1200
1400
1500
1600
1800
1900
2000
2200
2300
2400
2500
100
400
500
600
800
900
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
Figura 4.2.- Datos secuenciales utilizados para el entrenamiento de la red
Para verificar y validar la red en simulación se utilizaron los datos recolectados por un
controlador de carga que se encuentra en una torre de auxilio vial de la autopista México-
Cuernavaca. Dicho controlador se encuentra en campo por lo que los datos recolectados son
en condiciones reales no controladas. Los datos con los que se realizaron las pruebas y
validaciones en la simulación de la red son los recolectados por el controlador durante los
meses de diciembre de 2003 y enero de 2004 y se muestran en la figura 4.3.
34
120 15
115 14
110
105 13
100 12
95
EC (%) / Temperatura (oC)
90 11
85 10
80
Amperes / Volts
75 9
70
65 8
60 7
55
50 6
45 5
40
35 4
30 3
25
20 2
15 1
10
5 0
0 -1
-5
-10 -2
0
20
40
60
80
360
380
400
420
440
460
480
500
520
540
560
580
600
620
640
660
100
120
140
160
180
200
220
240
260
280
300
320
340
680
700
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
130 16
120 15
110 14
13
100
EC (%) / Temperatura (oC)
12
90 11
80 10
Amperes / Volts
70 9
60 8
7
50 6
40 5
30 4
20 3
10 2
1
0 0
-10 -1
-20 -2
0
30
60
90
120
150
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
180
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
b) Datos recolectados en el mes de enero de 2004
Figura 4.3.- Datos recolectados en la torre de auxilio vial utilizados para la validación de la red neuronal en la
etapa de simulación.
Con los datos de validación no se realizó el ejercicio de cálculo del estado de carga cada
cinco minutos como en el caso de los datos para el entrenamiento, sino que se tomaron
35
únicamente las muestras correspondientes a cada hora esto con el fin de comparar
exactamente con los cálculos realizados por el controlador.
Para entrenar una red que utilice como entradas el voltaje de la batería, la corriente de la
batería y la temperatura, se generaron datos de entrenamiento que permitieran conocer el
comportamiento de la batería a diferentes regímenes de carga y descarga. Para lograrlo se
realizaron cargas y descargas controladas a una batería y se registró el comportamiento de
ésta cada segundo almacenando los datos en un archivo.
Las descargas controladas se realizaron con corrientes constantes, las cuales fueron: 1, 3, 5,
7, y 9 amperes, y las cargas se realizaron utilizando una fuente de alimentación en lugar de
un panel fotovoltaico con el fin de poder limitar la corriente de carga que entra a la batería
por el tiempo que ésta demanda grandes cantidades de corriente. Las cargas se realizaron
limitando la corriente a 1, 3 y 5 amperes y se consideró que la batería estaba cargada
cuando demandaba menos de 300 mA en forma sostenida.
Las gráficas correspondientes a cada ciclo carga/descarga se muestran en las figura 4.4, 4.5,
4.6 y 4.7, en donde se pueden observar las lecturas de voltaje de la batería, corriente de la
batería, temperatura y estado de carga. Para estos casos se realizaron ciclos de carga y
descarga de la batería hasta valores de estado de carga del 60 % con la finalidad de
caracterizar el rango completo de la batería. Para lograrlo se modificó el programa del
controlador de carga original para que el corte de la carga primaria se realizara hasta el 60%
de estado de carga en vez de al 75%.
130 16
120 15
14
110 13
100 12
90 11
10
Amperes / Volts
80
9
70 8
60 7
50 6
5
40 4
30 3
20 2
10 1
0
0 -1
-10 -2
12000
15000
21000
24000
30000
33000
39000
45000
48000
51000
54000
57000
60000
63000
66000
69000
72000
75000
78000
81000
84000
87000
0
3000
6000
9000
18000
27000
36000
42000
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
Figura 4.4.- Datos recolectados en el ciclo de descarga /carga a corriente constante de 1 Amper
36
130
14
120
EC (%) / Te mp era tura (o C) 12
110
10
100
Amperes / Volts
90 8
80 6
70 4
60 2
50 0
40 -2
30 -4
20 -6
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000
22000
24000
26000
28000
30000
32000
34000
36000
38000
40000
42000
44000
46000
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
120 14
115 13
110
105 12
100 11
EC (%) / Temperatura (oC)
95
90 10
85 9
Amperes / Volts
80
75 8
70 7
65
60 6
55 5
50
45 4
40 3
35
30 2
25 1
20 0
15
10 -1
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
37
120 16
112 14
104 12
96
10
88
8
Amperes / Volts
80
72 6
64 4
56 2
48 0
40 -2
32
-4
24
-6
16
-8
12000
14000
16000
18000
20000
22000
24000
26000
28000
30000
0
2000
4000
6000
8000
10000
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
Figura 4.7.- Datos recolectados en el ciclo de descarga a corriente constante de 7 Amperes, carga a corriente
constante de 5 amperes y descarga a corriente constante de 9 Amperes.
Como puede observarse en las figuras anteriores, existió ruido en la medición del voltaje y
la corriente de la batería el cual se generó durante el proceso de muestreo. Analizando el
sistema se encontró que el ruido se presentó de forma aleatoria al momento de conmutar
entre los diferentes canales de lectura y se generó por software. Debido a lo anterior fue
necesario realizar un filtrado a los datos el cual consistió en eliminar las muestras que
presentaran lecturas de corriente o voltaje fuera del contexto de la prueba. Este filtrado
resultó ser muy sencillo ya que las lecturas erróneas son fácilmente identificables.
Finalmente, de todos los datos obtenidos durante los ciclos de carga y descarga se generó
un conjunto de datos único para el entrenamiento de la red.
Este conjunto de datos se formó tomando en cuenta que para cada valor de corriente
constante de carga o de descarga se tienen registrados los parámetros de voltaje y
temperatura correspondientes a cada valor de estado de carga (del 60% al 100%). Es decir,
con los datos obtenidos con los ciclos de carga/descarga se formó una tabla ordenada
primero por el valor de “Estado de carga” y después por el valor de “Corriente de batería”.
38
valores de voltaje válido para esa combinación y que fuera tomado en cuenta por la red
neuronal.
100 30
95 27
90 24
85 21
EC (%) / Temperatura (oC)
80 18
75 15
Amperes / Volts
70 12
65 9
60 6
55 3
50
0
45
-3
40
-6
35
-9
30
25 -12
20 -15
0
40
80
120
160
200
240
280
320
360
400
440
480
520
560
600
640
680
720
Muestra
Estado de Carga Voltaje Batería
Temperatura Corriente Batería
Figura 4.8.- Datos no secuenciales para el entrenamiento de la red conformados con los datos recolectados
durante los ciclos de carga/descarga a diferentes regímenes.
Como se puede observar en la figura 4.8 el conjunto de datos fue ordenado primero por
tipo de ciclo (descarga/carga) después por el valor de estado de carga, valor de corriente de
batería y por último por los voltajes máximo y mínimo.
39
de inferencia difusos proveen un mecanismo intuitivo y de alto nivel para representar el
conocimiento mediante la utilización de reglas IF/THEN. Por otro lado, las redes
neuronales poseen un alto grado de adaptabilidad y capacidad de aprendizaje y
generalización. La construcción de herramientas que se nutren de estas dos áreas ha
demostrado ser un mecanismo eficiente para modelar sistemas reales.
Los diferentes modelos de inferencia difusos, dan lugar a diferentes arquitecturas ANFIS.
El utilizado en esta tesis corresponde a el modelo de inferencia difuso Takagi-Sugeno-Kang
(TSK) debido a su eficiencia.
Además, utilizar este tipo de redes neuro-difusas para el cálculo del estado de carga, tiene
como una de las grandes ventajas contar ya con una herramienta para el entrenamiento de la
red [24].
Otra ventaja es que se tiene acotada de alguna manera la topología de la red, es decir, se
conocen perfectamente el número de capas internas y las operaciones que se realizan en
ellas, lo que simplifica en gran medida el trabajo de dimensionamiento de la red. Lo único
que queda por determinar es el número y propiedades de las señales de entrada, así como el
tipo de funciones a programar en los nodos de entrada
Debía ser de fácil programación para no consumir recursos excesivos del micro
Que no fuera muy demandante computacionalmente
Tener como entradas variables que sean medibles en línea o fácilmente calculadas
por el mismo controlador.
Igualmente se observó que para que la red no fuera demasiado demandante en cuanto
procesamiento, se debería considerar el menor número de reglas o combinaciones posibles.
Por ejemplo, si se consideran 4 entradas a la red con dos funciones de pertenencia cada una
se deberían programar 24 = 16 reglas mientras que si se consideraban 3 entradas con las
mismas dos funciones de pertenencia se deberían programar 23 = 8 reglas. Igualmente, si se
consideran tres funciones de pertenencia para cada entrada tendríamos 34 = 81 reglas y 33
= 27 reglas para 4 y 3 entradas respectivamente.
Por todos los puntos anteriores se propuso ocupar tres entradas a la red con dos funciones
trapezoidales cada una en los nodos de entrada y se propusieron dos topologías posibles:
40
a) Una que considera como entradas el estado de carga anterior, el voltaje de batería y
la temperatura. Esto debido a que se ve como buena aportación que no se considere
la corriente de la batería para realizar el cálculo de estado de carga
b) Y otra que considera como entradas la corriente y el voltaje de la batería y la
temperatura. Esto debido a que se cuenta con suficientes datos como para entrenar
correctamente una red que calcule el estado de carga sin involucrar condiciones
anteriores de las variables.
Suma de las
Combinaciones
Σwi*zi
Temp Lineales
Vbat Σwi*zi
= EC
w1*z1 Σwi
w1
Σwi Suma de Pesos de las
Funciones Trapezoidales Reglas
Suma de las
Combinaciones
Temp Σwi*zi
Lineales
Vbat Σwi*zi
= EC
w1*z1 Σwi
w1
Σwi Suma de Pesos de las
Funciones Trapezoidales Reglas
Figura 4.9.- Topologías propuestas con dos funciones de pertenencia trapezoidales a la entrada
41
En la figura 4.9 se observa que en ambas topologías las entradas a la red son variables que
se pueden medir o calcular en el controlador. Las funciones de pertenencia programadas en
la primera capa son funciones trapezoidales con parámetros configurables. Las reglas en la
segunda capa son todas las combinaciones posibles entre las entradas. Las salidas de la
tercera capa son el resultado de las combinaciones lineales de las entradas y finalmente se
tienen los nodos de suma y ponderación de los pesos correspondientes a cada entrada.
Con el fin de determinar la mejor topología entre las dos propuestas para su
implementación en el micro, se realizó el entrenamiento de las dos redes y se analizaron los
siguientes puntos:
Valor del error cuadrático medio y de los errores absolutos alcanzados después del
entrenamiento
Complejidad para la programación en el microcontrolador.
Primero se entrenó la red que utiliza como entradas el voltaje de la batería, la temperatura y
el estado de carga anterior, y se utilizaron como datos de entrenamiento y validación de esta
red los datos secuenciales recolectados para este fin (Figura 4.2). Se utilizaron como datos
de entrenamiento los datos impares y como datos de validación los datos pares.
En la gráfica de la figura 4.10 se muestra el error cuadrático medio calculado en cada época
de entrenamiento hasta la época 100. Para determinar el número de épocas necesarias para
el entrenamiento, se usó el criterio de detener el entrenamiento cuando se detecte el primer
periodo estable de los errores. Para este caso se observa que alrededor de la época 50 se
presenta un comportamiento muy estable de los errores, por lo que se decidió que el
entrenamiento se detendría en la época 50, en donde el error cuadrático medio calculado
para los datos de entrenamiento alcanza un valor de 0.104844 y para los datos de validación
un valor de 0.108328.
42
Figura 4.10.- Comportamiento del error cuadrático medio conforme se incrementa el número de épocas.
La gráfica de la figura 4.11a presenta los valores de salida esperados y los calculados por la
red al evaluar los datos de entrenamiento. En la grafica 4.11b se presenta el error en cada
uno de los puntos evaluados (Valor Esperado-Valor Calculado) y se observa que no se tiene
un error mayor al 1%.
a) Salidas esperada y calculada por la red neuronal al evaluar los datos de entrenamiento con una red
entrenada 50 épocas.
43
b) Error = Valor Esperado – Valor Calculado, el error absoluto no rebasa el 1%
Figura 4.11.- Comparación entre la salida esperada y la calculada por la red neuronal al evaluar los datos de
entrenamiento con una red entrenada 50 épocas.
La gráfica de la figura 4.12a presenta los valores de salida esperados y los calculados por la
red al evaluar los datos de validación. . En la grafica 4.12b se presenta el error en cada uno
de los puntos evaluados y se observa que no se tiene un error mayor al 1.6%.
a) Salidas esperada y calculada por la red neuronal al evaluar los datos de validación con una red entrenada 50
épocas.
44
b) Error = Valor Esperado – Valor Calculado, el error absoluto no rebasa el 1.6%
Figura 4.12.- Comparación entre la salida esperada y la calculada por la red neuronal al evaluar los datos de
validación con una red entrenada 50 épocas .
Como puede observarse al evaluar esta primera topología, tanto el error cuadrático medio,
que se observa en la figura 4.10, así como los errores absolutos que se observan en las
figuras 4.11 y 4.12 son valores relativamente pequeños lo que nos indica un buen
entrenamiento y desempeño de la red. En apartados posteriores se efectúa una simulación
de la red en Matlab donde se prueba el desempeño de la misma con datos reales de campo.
45
in1mf1 in2mf1
in1mf2 in2mf2
in3mf1
in3mf2
Parámetros de las funciones de pertenencia inxmfy = trap(ayx, byx, cyx, dyx) en los nodos de entrada o parámetros
de la premisa:
in1mf1=trap(-10.1551,-4.1302,4.9072,10.9321);
in1mf2=trap(4.9072,10.9321,19.9695,25.9944); }Funciones de pertenencia para el Voltaje
in2mf1=trap(-25.1250,-10.3750,12.0952,31.4179);
in2mf2=trap(11.2920,27.1942,48.6250,63.3750); }Funciones de pertenencia para Temperatura
in3mf1=trap(35.5172,52.1045,79.3910,93.9664);
in3mf2=trap(73.6685,94.0938,118.4538,135.0411); }Funciones de pertenencia para EC Anterior
donde inxmfy representa la función de pertenencia y de la entrada x.
Parámetros [oi, pi, qi, ri] para las combinaciones lineales fi o parámetros del consecuente
}
[o2, p2, q2, r2] = [0 0 0 0];
[o4, p3, q3, r3] = [0 0 0 0];
[o4, p4, q4, r4] = [0 0 0 0]; fi= oi VBat + pi Temp + qi ECant + ri
[o5, p5, q5, r5] = [-0.5014 0.0118 1.0036 5.3666];
[o6, p6, q6, r6] = [ 0.9501 -0.0841 1.2384 -33.5536];
[o7, p7, q7, r7] = [ 1.4603 -0.0834 0.9915 -15.7156];
[o8, p8, q8, r8] = [ 0.7818 0.0257 0.9954 -10.9908];
46
4.3.1.2 Segunda Topología (Ibat, Temp, Vbat)
El primer entrenamiento realizado para esta topología consistió en utilizar los datos de
carga y descarga juntos con la finalidad de generar una sola red que nos permitiera el
cálculo del estado de carga.
Figura 4.14.- Comportamiento del error cuadrático medio conforme se incrementa el número de épocas.
La gráfica de la figura 4.15a presenta los valores de salida esperados y los calculados por la
red al evaluar los datos de entrenamiento. En la grafica 4.15b se presenta el error en cada
uno de los puntos evaluados y se observa que se alcanzan errores mayores al 6%.
47
a) Salidas esperada y calculada por la red neuronal al evaluar los datos de entrenamiento con una red
entrenada 160 épocas.
Figura 4.15.- Comparación entre la salida esperada y la calculada por la red neuronal al evaluar los datos de
entrenamiento con una red entrenada 160 épocas .
48
Para disminuir el error obtenido al tratar de entrenar una sola red para el cálculo del estado
de carga se propuso manejar dos redes, una que calcule el estado de carga cuando la batería
se encuentra cargando y la segunda que lo calcule cuando se esta descargando. Con esto se
pretende reducir el error final después del entrenamiento, ya que se puede considerar que en
este caso la red cuenta en realidad con cuatro funciones de pertenencia a la entrada, dos
para cuando la corriente es negativa y dos para cuando la corriente es positiva.
En la figura 4.16 se presenta el comportamiento del error cuadrático medio para la red que
calculará el estado de carga cuando la batería se esté cargando, en donde se observa un
error final de 0.78495 después de 200 épocas de entrenamiento.
Figura 4.16.- Comportamiento del error cuadrático medio de la red que calcula el estado de carga cuando la
batería se esta cargando.
La gráfica de la figura 4.17a presenta los valores de salida esperados y los calculados por la
red al evaluar los datos de entrenamiento de la red para la carga. En la grafica 4.17b se
presenta el error en cada uno de los puntos evaluados y se observa que se alcanzan errores
mayores al 2.5%.
49
a) Salidas esperada y calculada por la red neuronal (de carga) al evaluar los datos de entrenamiento con una
red entrenada 200 épocas.
Figura 4.17.- Comparación entre la salida esperada y la calculada por la red neuronal (de carga) al evaluar los
datos de validación con una red entrenada 200 épocas.
En la figura 4.18 se presenta el comportamiento del error cuadrático medio para la red que
calculará el estado de carga cuando la batería se esté descargando, en donde se observa un
error final de 2.06155 después de 500 épocas de entrenamiento.
50
Figura 4.18.- Comportamiento del error cuadrático medio de la red que calcula el estado de carga cuando la
batería se esta descargando.
La gráfica de la figura 4.19a presenta los valores de salida esperados y los calculados por la
red al evaluar los datos de entrenamiento de la red para la descarga. En la grafica 4.19b se
presenta el error en cada uno de los puntos evaluados y se observa que se alcanzan errores
mayores al 5%.
a) Salidas esperada y calculada por la red neuronal (de descarga) al evaluar los datos de entrenamiento con
una red entrenada 500 épocas.
51
b) Error = Valor Esperado – Valor Calculado, el error absoluto alcanza el 6%
Figura 4.19.- Comparación entre la salida esperada y la calculada por la red neuronal (de descarga) al evaluar
los datos de validación con una red entrenada 500 épocas.
En la figura 4.20 se presentan las funciones de pertenencia de la red entrenada para calcular
el estado de carga de la batería cuando ésta se encuentra recibiendo corriente, es decir, se
está cargando. En este caso se emplearon 200 épocas de entrenamiento, que es el punto en
donde se considera que el error cuadrático medio ya alcanzó un valor estable.
En la figura 4.21 se presentan las funciones de pertenencia de la red entrenada para calcular
el estado de carga de la batería cuando ésta se encuentra entregando corriente, o lo que es lo
mismo, se está descargando. En este caso se emplearon 500 épocas de entrenamiento con el
fin de demostrar que aun aumentando el número de épocas de entrenamiento no se observa
mejoría en los resultados.
52
in1mf1 in2mf1
in1mf2 in2mf2
in3mf1
in3mf2
Parámetros de las funciones de pertenencia inxmfy = trap(ayx, byx, cyx, dyx) en los nodos de entrada o parámetros
de la premisa:
Parámetros [oi, pi, qi, ri] para las combinaciones lineales fi o parámetros del consecuente
}
[o2, p2, q2, r2] = [12.7352 -8.8688 3.1684 -250.4409];
[o4, p3, q3, r3] = [36.6809 16.6845 0.5102 -408.6821];
[o4, p4, q4, r4] = [45.5115 -3.7479 2.1098 -591.1141]; fi= oi VBat + pi Temp + qi ECant + ri
[o5, p5, q5, r5] = [-9.0962 7.9442 7.1958 34.6644];
[o6, p6, q6, r6] = [9.8073 1.6618 -0.7629 -20.9193];
[o7, p7, q7, r7] = [-0.6737 10.9324 -9.0210 357.1945];
[o8, p8, q8, r8] = [1.8605 2.9147 -3.4615 183.1739];
Figura 4.20.- Funciones de pertenencia y parámetros de la red de carga entrenada 200 épocas.
53
in1mf1 in2mf1
in1mf2 in2mf2
in3mf1
in3mf2
Parámetros de las funciones de pertenencia inxmfy = trap(ayx, byx, cyx, dyx) en los nodos de entrada o parámetros
de la premisa:
Parámetros [oi, pi, qi, ri] para las combinaciones lineales fi o parámetros del consecuente
}
[o2, p2, q2, r2] = [133.1 4.4 23 -2317.7];
[o3, p3, q3, r3] = [29.5592 -10.4853 -4.6851 -54.8991];
[o4, p4, q4, r4] = [56.6711 2.3263 0.3881 -635.2207]; fi= oi VBat + pi IBat + qi Temp + ri
[o5, p5, q5, r5] = [-37.3481 13.3574 -5.4316 713.9770];
[o6, p6, q6, r6] = [-210 -10. 14.4 2344.9];
[o7, p7, q7, r7] = [9.2351 10.6425 11.2906 -431.3342];
[o8, p8, q8, r8] = [-33.2 48.6 -29.6 1073.6];
Figura 4.21.- Funciones de pertenencia y parámetros de la red de descarga entrenada 500 épocas.
54
4.3.2 Selección de la Topología
Valor del error cuadrático medio y de los errores absolutos alcanzados después del
entrenamiento
Baja complejidad para la programación en el microcontrolador.
En cuanto al valor de los errores, es claro que la primera topología resulta mas conveniente,
pues su error cuadrático medio esta en el orden de 10-1 mientras que en el segundo caso no
se pudo reducir de 0.78495 y únicamente para el caso de la carga ya que para la descarga es
mucho mayor (2.06155), además de que en la segunda topología existen errores absolutos
muy grandes que afectarían considerablemente la confiabilidad del controlador.
Tomando en cuenta todas las observaciones anteriores, se concluyó que la mejor topología
de las dos propuestas es la que considera como entradas a la red: el voltaje de la batería, el
estado de carga anterior y la temperatura. Con base a lo anterior se decidió que la red a
implementar en el controlador es la mostrada en la figura 4.9a con los parámetros indicados
en la figura 4.13.
55
el controlador durante los meses de diciembre de 2003 y enero de 2004 y se muestran en la
figura 4.3.
La figura 4.22a muestra la comparación entre los valores de estado de carga registrados por
el controlador y los calculados por la red neuronal programada en Matlab utilizando los
datos del mes de diciembre de 2003 sin ningún tipo de filtrado.
Realizando el cálculo del error cuadrático medio (RMSE) para este caso se obtiene un valor
de 1.7803.
Si se analiza detenidamente la figura 4.22 se observa que los errores mal altos en el cálculo
del estado carga se registran cuando el algoritmo del controlador realiza un ajuste del
estado de carga al 100% debido a la lectura del voltaje en la batería de 14.7 volts.
Realizando el cálculo del error cuadrático medio (RMSE) para este caso se obtiene un valor
de 1.0451.
a) Estado de carga registrado en el controlador y calculado por la red neuronal simulada al evaluar los datos
de campo del mes de diciembre de 2003 completos.
56
b) Error = Valor Esperado – Valor Calculado, en algunos puntos el error absoluto alcanza el 20%
Figura 4.22.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar los datos de campo del mes de diciembre de 2003 completos.
a) Estado de carga registrado en el controlador y calculado por la red neuronal simulada al evaluar un rango
sin ajustes al 100% de los datos de campo del mes de diciembre de 2003 .
57
b) Error = Valor Esperado – Valor Calculado, en algunos puntos el error absoluto alcanza el 3%
Figura 4.23.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar un rango de los datos de campo del mes de diciembre de 2003.
La figura 4.24a muestra la comparación entre los valores de estado de carga registrados por
el controlador y los calculados por la red neuronal programada en Matlab utilizando los
datos del mes de enero de 2004 sin ningún tipo de filtrado.
58
a) Estado de carga registrado en el controlador y calculado por la red neuronal simulada al evaluar los datos
de campo del mes de enero de 2004 completos.
b) Error = Valor Esperado – Valor Calculado, en algunos puntos el error absoluto alcanza el 20%
Figura 4.24.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar los datos de campo del mes de enero de 2004 completos.
Realizando el cálculo del error cuadrático medio (RMSE) para este caso se obtiene un valor
de 0.9569.
59
a) Estado de carga registrado en el controlador y calculado por la red neuronal simulada al evaluar un rango
sin ajustes al 100% de los datos de campo del mes de enero de 2003 .
b) Error = Valor Esperado – Valor Calculado, en algunos puntos el error absoluto alcanza el 3.5%
Figura 4.25.- Comparación entre el valor del estado de carga registrado por el controlador y el calculado por
la red neuronal simulada al evaluar un rango de los datos de campo del mes de enero de 2004.
Como puede observarse en las simulaciones realizadas, los valores de los errores absoluto y
el cuadrático medio son mas grandes que los calculados con los datos de entrenamiento y
de validación durante el entrenamiento de la red. Lo anterior se explica fácilmente
recordando un factor que debe tomarse muy en cuenta para la evaluación del
comportamiento de la red durante la simulación, y es que la red fue entrenada con datos de
cada cinco minutos en donde el comportamiento del estado de carga es mas continuo,
mientras que los datos para la simulación son datos de campo registrados cada hora, en
donde pueden observarse variaciones muy bruscas del estado de carga entre un conjunto de
datos y otro, y que a pesar de todo la red es capaz de compensar.
60
De lo observado en las simulaciones podemos concluir que a pesar de que los valores de los
errores absolutos alcanzan a ser mayores al 3% el comportamiento de la red se puede
considerar muy adecuado, ya que estos errores no son continuos y el error cuadrático medio
en ambas simulaciones es alrededor de 1% a pesar de que los datos de las simulaciones
fueron tomados cada hora.
Otro factor a tomar en cuenta para la evaluación de la red, es que no se utiliza la medición
de la corriente de la batería como entrada a la red, lo cual implica una gran ventaja ya que
la medición de corriente siempre implica un problema, ya sea de disipación, precisión o
complejidad del hardware.
61
5 Implementación y Pruebas
Una vez comprobado a través de la simulación que la red seleccionada tiene un buen
comportamiento se procedió a su implementación en el controlador de carga mostrado en la
figura 5.1 y que fue desarrollado en la Gerencia de Control e Instrumentación del IIE.
Dicho controlador está basado en un microcontrolador MSP430F147 de Texas Instruments
y para la programación de la red en el microcontrolador se utilizó el paquete “Embedded
Workbench” de IAR Systems.
62
embargo, durante las primeras pruebas, el controlador siguió basando sus decisiones en los
cálculos efectuados por el conteo de amperes.
Para las pruebas finales se modificó el programa original con el propósito de que el
controlador basara sus decisiones ahora en los cálculos de estado de carga realizados por la
red neuronal.
Con los resultados de las pruebas desarrolladas se realizó una comparación entre los dos
algoritmos de cálculo de estado de carga y se comprobó que el cálculo realizado por el
algoritmo de la red neuronal propuesta es más confiable que el algoritmo de conteo de
amperes original.
Los factores anteriores fueron determinados tomando en cuenta que se decidió utilizar
únicamente variables tipo word las cuales tienen un valor máximo de 65535, siempre y
cuando no se maneje el bit de signo. La restricción de utilizar variables tipo byte se debe a
la finalidad de no complicar la programación además de cuidar la capacidad de memoria
del microcontrolador, ya que no hay que olvidar que la red es únicamente una parte de la
programación total que existe en el controlador de carga.
Claro está que al manejar los parámetros de la red multiplicados por factores de 103 y 102
las variables de entrada a la red también tienen que estar afectadas por su correspondiente
factor, por lo que las variables de voltaje de batería y temperatura se utilizan multiplicadas
por 103 y la variable estado de carga anterior por un factor de 102, el resultado final de la
red se obtiene con una precisión de 2 decimales, es decir multiplicado por un factor de 102.
63
temperatura por lo que se considera como un trabajo futuro el realizar un nuevo
entrenamiento de la red con datos que consideren un rango más amplio de temperatura.
Parámetros de las funciones de pertenencia inxmfy = trap(ayx, byx, cyx, dyx) en los nodos de entrada o parámetros
de la premisa:
Parámetros [oi, pi, qi, ri] para las combinaciones lineales fi o parámetros del consecuente
}
[o2, p2, q2, r2] = [0 0 0 0];
[o3, p3, q3, r3] = [0 0 0 0];
[o4, p4, q4, r4] = [0 0 0 0]; fi= oi VBat + pi Temp + qi ECant + ri
[o5, p5, q5, r5] = [-501 12 1004 537];
[o6, p6, q6, r6] = [ 950 -84 1238 -3355];
[o7, p7, q7, r7] = [ 1460 -83 992 -1572];
[o8, p8, q8, r8] = [ 782 26 995 -1099];
Si bien es cierto que la red no utiliza como una de sus entradas la corriente de la batería, si
es necesario considerar esta variable, no como parámetro para el cálculo del estado de
carga, sino como una referencia para determinar la frecuencia con que se debe ejecutar la
red neuronal. Esto es, un problema a resolver durante la implementación de la red en el
controlador de carga fue determinar cada cuánto tiempo se debe ejecutar la función que
calcula la red neuronal.
El siguiente ejemplo ilustra el problema. Supongamos que la red se ejecuta cada segundo y
tomemos como entrada un juego de datos: Voltaje de batería (Vbat = 12.2798), temperatura
(Temp = 29.6875), estado de carga anterior (ECant = 85.3947). Al ejecutarse la red
tendríamos un nuevo estado de carga resultante EC = 84.3056 el cual será el estado de
carga anterior en la siguiente ejecución de la red. Si suponemos que la red se ejecuta cada
segundo, en una aplicación real tanto el voltaje de la batería como la temperatura se
64
mantienen prácticamente constantes, por lo que las nuevas entradas a la red serán los
mismos valores de voltaje y temperatura y el nuevo valor de estado de carga anterior: Vbat =
12.2798, Temp = 29.6875, ECant = 84.3056, lo que representa un conjunto de datos
distinto al inicial. Al ejecutar la red con este nuevo conjunto de datos de entrada nos da
como resultado EC = 83.2327. En la tabla 5.1 se muestran 10 ejecuciones de la red
neuronal considerando que el voltaje de la batería y la temperatura no cambian.
Como puede observarse en la tabla 5.1, si bajo las condiciones anteriores ejecutamos la red
neuronal cada segundo tendríamos que después de 10 segundos el controlador
desconectaría la carga principal al detectar que la batería se encuentra a menos del 75% de
estado de carga lo que no sería correcto, ya que no hay nada que nos indique que la batería
sufrió una descarga de tal magnitud (8% en diez segundos) ya que el voltaje no tuvo
variación en este período.
Por otro lado, si consideramos una frecuencia de ejecución de la red de cada cinco minutos
y consideramos que durante ese período existe una demanda muy grande de corriente a la
batería, el estado de carga real de la batería puede llegar a valores peligrosos de descarga
65
antes de que se ejecute la red neuronal y el controlador corte la demanda de corriente a la
batería.
Para resolver los problemas anteriores se decidió utilizar la lectura de la corriente para
determinar cada cuanto tiempo se debe ejecutar la red neuronal fijando rangos de corriente
y tiempos de ejecución. Para determinar dichos rangos de corriente y los tiempos de
ejecución se utilizaron los siguientes criterios:
a) Se definen los parámetros (axy, bxy, cxy, dxy) correspondientes a las funciones de
pertenencia tipo trapecios de las estradas, donde x es la entrada y y es una función de
pertenencia de esa entrada.
b) Se definen los parámetros [oi, pi, qi, ri] de las combinaciones lineales de salida de la
capa 3, pero con los nombres:
66
out1mfi1 = oi
out1mfi2 = pi
out1mfi3 = qi
out1mfi4 = ri
e) Se leen los valores de las variables: voltaje de batería (Vbat), temperatura (Temp) y
estado de carga anterior (ECant).
z − a xy d xy − z
in x mf y ( z ) = max min ,1, ,0
bxy − a xy d xy − c xy
w1hi = in1mf1*in2mf1*in3mf1
w2hi = in1mf1*in2mf1*in3mf2
w3hi = in1mf1*in2mf2*in3mf1
w4hi = in1mf1*in2mf2*in3mf2
w5hi = in1mf2*in2mf1*in3mf1
w6hi = in1mf2*in2mf1*in3mf2
w7hi = in1mf2*in2mf2*in3mf1
w8hi = in1mf2*in2mf2*in3mf2
67
Este paso corresponde al nodo inferior de la capa 4 de la figura 5.3.
y se multiplican por las salidas wihi del inciso g). Estas operaciones corresponden a la
capa 3 de la figura 5.3. Los resultados se vuelven a almacenar en las variables wihi con
el fin de no definir más variables y ahorrar memoria.
j) Se suman todos los resultados del inciso anterior. Este paso corresponde al nodo
superior de la capa 4 de la figura 5.3.
B1 Π
Σ
Temp
B2 Π
Π
C1 EC
ECant Π /
C2
in3mf2
Π
w8hi
w8hi* (out1mf81 * Vbat + out1mf82 * Temp
+ out1mf83 * ECant + out1mf84)
Σ nor_factor
68
5.2 Configuración física para las pruebas
Panel Fuente de
Fotovoltaico Alimentación
Comunicación
Serial. (RS-232)
Controlador
Estación de Carga
Central Carga
Electrónica
Batería
Figura 5.4.- Arreglo del equipo utilizado para realizar las pruebas de validación de la red neuronal
Para las primeras 4 pruebas el controlador de carga siguió basando sus decisiones en el
cálculo realizado por el conteo de amperes y a su vez realizó el cálculo de estado de carga
utilizando la red neuronal. Ambos cálculos de estado de carga los envía por comunicación
serial hacia la estación central junto con los datos de: voltaje de batería, corriente de batería
y temperatura.
69
5.3 Pruebas de validación
El único método 100% confiable para conocer el estado de carga de una batería sellada es
descargar totalmente dicha batería y cargarla nuevamente llevando un conteo preciso de
Amperes. Este método, además de dañar la batería (lo que resulta costoso), implica mucho
tiempo de pruebas. Por lo tanto, se determinó que todas las pruebas que se realizaran para
validar la red neuronal deberían empezar en el estado de carga que se puede conocer con
mayor certeza, esto es, el 100%.
Es decir, el único estado de carga del cual se puede estar razonablemente seguro en una
batería en buen estado es el 100%, ya que cuando una batería se encuentra totalmente
cargada ésta ya no demanda corriente cuando es conectada a una fuente de alimentación.
Durante el tiempo que duró cada una de las pruebas, se realizó cada segundo el registro de
las siguientes variables: voltaje de batería, corriente de batería, temperatura, estado de carga
por conteo de amperes y estado de carga por red neuronal. El comportamiento de cada una
de estas variables se presenta en las gráficas de resultados que se ilustran en cada prueba.
Para comparar fácilmente los resultados que arrojan los algoritmos de cálculo de estado de
carga, en las gráficas de cada prueba se presenta también la diferencia entre el estado de
carga calculado por el conteo de amperes (ECCA)y el calculado por la red neuronal
(ECRNA).
70
5.3.1 Prueba 1
Esta primera prueba consistió en demandar, por medio de la carga electrónica, una corriente
constante de 4 amperes al arreglo mostrado en la figura 5.4 el cual tenía conectado el panel
fotovoltaico. Como la corriente que puede suministrar el panel fotovoltaico a la carga
electrónica no es constante, ya que depende de las condiciones climatológicas, la corriente
que se le demanda a la batería tampoco es constante. Lo anterior hace que la prueba sea
dinámica y permite evaluar el comportamiento de la red en un rango de valores de corriente
de descarga y no en un valor único. Cuando el controlador detecta que el estado de carga de
la batería calculado por conteo de amperes llega a 75% desconecta la carga electrónica
dejando que la batería se cargue libremente utilizando el panel fotovoltaico como fuente
externa.
Debido a la hora del día en que se realizó la prueba durante el período de cargado de la
batería, fue necesario remplazar al panel fotovoltaico por la fuente de poder a las 18:38:49,
ya que el panel fotovoltaico ya no fue capaz de proporcionar energía a la batería.
En la figura 5.5 observamos que durante el período de descarga de la batería (de 10:11:09
hrs. a 15:13:32 hrs) la diferencia máxima calculada entre los dos estados de carga es de
3.48%, mientras que en la etapa de carga la diferencia entre los dos estados de carga se
incrementa conforme la batería se va cargando llegando a alcanzar en su punto máximo un
valor de 22%.
Otro factor a considerar es que durante la descarga el cálculo de estado de carga realizado
por la red neuronal llega al 75% cuando el conteo de amperes calcula 77%, lo que nos
indica que en el peor de los casos en la descarga la red neuronal “sobreproteje” a la batería
indicando un corte de carga un 2% de estado de carga antes de lo indicado por el conteo de
71
amperes. Finalmente, cuando el conteo de amperes detecta el 75% de estado de carga la red
neuronal tiene ya un cálculo de 73.01%.
130 16
125 15
120 14
115 13
110 12
105 11
100 10
95 9
Amperes / Volts
90 8
85 7
EC (%)
80 6
75 5
70 4
65 3
60 2
55 1
50 0
45 -1
40 -2
35 -3
30 -4
25 -5
34
32
30
28
Diferencia (%) / Temp ( ºC)
26
24
22
20
18
16
14
12
10
8
6
4
2
0
-2
10:12
10:55
11:38
12:21
13:04
13:48
14:31
15:14
15:57
16:40
17:24
18:07
18:50
19:33
20:16
21:00
21:43
22:26
23:09
23:52
Hora
Voltaje Batería EC - Red Neuronal
Corriente Batería EC - Conteo de Amperes
Temperatura Diferencia ECCA - ECRNA
A partir de los resultados arrojados por esta prueba se concluye que un controlador
utilizando la red neuronal para calcular el estado de carga de la batería tendría un mejor
desempeño que el controlador que estima el estado de carga por conteo de amperes ya que
cumpliría mejor su función de protección de la batería al calcular mas confiablemente el
100% de estado de carga lo que resulta indispensable para mantener a la batería dentro de
los rangos de operación seguros.
72
5.3.2 Prueba 2
La segunda prueba consistió en demandar, con ayuda de la carga electrónica, una corriente
constante de 6 amperes al arreglo mostrado en la figura 5.4, el cual tiene conectado el panel
fotovoltaico, lo que le da a la prueba la misma dinámica que en la prueba 1. Al igual que en
la primera prueba, cuando el controlador detecta que el estado de carga de la batería
calculado por conteo de amperes llega a 75% desconecta la carga electrónica dejando que la
batería se cargue libremente utilizando el panel fotovoltaico como fuente externa.
Debido a la hora del día en que se realizó la prueba y a las buenas condiciones
climatológicas no fue necesario remplazar al panel fotovoltaico por la fuente de poder
durante el período de cargado.
En la figura 5.6 se presentan las gráficas correspondientes a esta prueba y observamos que
durante el período de descarga de la batería (de 9:30:56 hrs. a 11:48:38 hrs.) la diferencia
máxima calculada entre los dos estados de carga es de 3.71%, mientras que en la etapa de
carga la diferencia entre los dos estados de carga se incrementa conforme la batería se va
cargando llegando a alcanzar en su punto máximo un valor de 14.52%.
73
130 16
125 15
120 14
115 13
110 12
105 11
100 10
95 9
Amperes / Volts
90 8
85 7
EC (%)
80 6
75 5
70 4
65 3
60 2
55 1
50 0
45 -1
40 -2
35 -3
30 -4
25 -5
34
32
30
28
Diferencia (%) / Temp ( ºC)
26
24
22
20
18
16
14
12
10
8
6
4
2
0
-2
9:21
9:36
9:50
10:04
10:19
10:33
10:48
11:02
11:16
11:31
11:45
12:00
12:14
12:28
12:43
12:57
13:12
13:26
13:40
13:55
14:09
14:24
14:38
14:52
15:07
15:21
15:36
15:50
16:04
16:19
Hora
Analizando los resultados de esta prueba se concluye nuevamente que el cálculo de estado
de carga por medio de la red neuronal es más confiable que el algoritmo de conteo de
amperes ya que determina más correctamente el 100% de estado de carga de la batería. Lo
anterior resulta indispensable para un controlador de carga para mantener a dicha batería
dentro de sus rangos de operación seguros.
74
5.3.3 Prueba 3
La tercera prueba consistió en demandar al arreglo mostrado en la figura 5.4 una corriente
variable y aleatoria, con el fin de probar el comportamiento de la red neuronal bajo
condiciones no regulares y con demandas altas y bajas por períodos cortos.
Igual que en las pruebas anteriores, en esta prueba se tiene conectado el panel fotovoltaico
durante la descarga y cuando el controlador detecta que el estado de carga de la batería
calculado por conteo de amperes llega a 75% desconecta la carga dejando que la batería se
cargue libremente utilizando el panel fotovoltaico como fuente externa.
En esta prueba sí fue necesario remplazar al panel fotovoltaico por la fuente de poder
durante el período de carga de la batería (aproximadamente a las18:17), ya que el panel
fotovoltaico ya no fue capaz de proporcionar energía a la batería.
En la figura 5.7 observamos que durante el período de descarga de la batería (de 14:57:05
hrs. a 16:21:52 hrs.) la diferencia máxima calculada entre los dos estados de carga es de
3.27%, mientras que en la etapa de carga se vuelve a presentar el mismo fenómeno que en
las pruebas anteriores, es decir, la diferencia entre los dos estados de carga se incrementa
conforme la batería se va cargando llegando en esta ocasión a alcanzar en su punto máximo
un valor de 14.02%.
En esta prueba se vuelve a detectar que cuando el estado de carga calculado por el conteo
de amperes alcanza el 100% la batería aún está demandando una corriente considerable
(2.8675 amperes), lo que nos indica que en realidad la batería no se encuentra totalmente
cargada. Al final de la prueba el conteo de amperes calculó que la batería se encontraba a
un 106% de estado de carga. Por otro lado, si analizamos el cálculo del estado de carga
realizado por la red neuronal concluimos nuevamente que éste es mas confiable que el del
conteo de amperes, debido a que cuando la red calcula un estado de carga de 100% la
batería se encuentra demandando una corriente máxima de 317.4 miliamperes, lo que nos
indica que se encuentra muy cerca del 100% de estado de carga.
Al igual que en las dos pruebas anteriores, en esta prueba se observa que durante la etapa de
descarga la red neuronal llega a calcular un valor de estado de carga de 75% antes que el
algoritmo de conteo de amperes el cual calcula en ese instante un valor de 77%.
Finalmente, cuando el conteo de amperes detecta el 75% de estado de carga la red neuronal
tiene ya un cálculo de 74.19%.
75
120 16
115 15
110 14
105 13
100 12
95
90 11
85 10
80 9
Amperes / Volts
75 8
70 7
EC (%)
65 6
60
55 5
50 4
45 3
40 2
35 1
30 0
25 -1
20 -2
15
10 -3
5 -4
30
28
26
Diferencia (%) / Temp ( ºC)
24
16
14
12
10
8
6
4
2
0
-2
14:52
15:07
15:21
15:36
15:50
16:04
16:19
16:33
16:48
17:02
17:16
17:31
17:45
18:00
18:14
18:28
18:43
18:57
19:12
19:26
19:40
19:55
20:09
20:24
20:38
20:52
21:07
21:21
Hora
Voltaje Batería EC - Red Neuronal
Corriente Batería EC - Conteo de Amperes
Temperatura Diferencia ECCA - ECRNA
Los resultados de esta prueba refuerzan las conclusiones de las dos pruebas anteriores al
comprobar nuevamente que el cálculo de estado de carga por medio de la red neuronal tuvo
un mejor desempeño que el cálculo por conteo de amperes, principalmente durante la etapa
de carga de la batería al calcular más correctamente el 100% de estado de carga.
76
5.3.4 Prueba 4
Esta prueba fue dividida en dos días naturales, el primer día se realizó la descarga de la
batería y se utilizó como fuente externa el panel fotovoltaico, el segundo día se realizó la
carga de la batería y se utilizó el panel fotovoltaico por un período aproximado de una hora
pero debido a las condiciones climatológicas fue necesario remplazarlo por la fuente de
poder.
Para analizar los resultados mostrados en la figura 5.8 podemos dividir esta prueba en
varias etapas. La primera etapa inicia con la demanda de 8 amperes de corriente (16:03:24
hrs.), en la que observamos que ambos algoritmos detectan una disminución del estado de
carga: de 1% el conteo de amperes y de 1.28% la red neuronal. A continuación se corta la
demanda de corriente y se permite que la batería se cargue libremente utilizando el panel
fotovoltaico. Como se puede observar, el algoritmo de conteo de amperes calcula un estado
de carga del 100% cuando todavía existe un consumo de corriente de 2.5959 amperes por
parte de la batería, mientras que la red neuronal realiza un cálculo mas paulatino y llega a
un estado de carga del 100% cuando el consumo de corriente de la batería es de 624.1
miliamperes (16:24:02 hrs).
La segunda etapa inicia con la segunda demanda de corriente, la cual fue de 10 amperes
(16:32:56 hrs) y termina antes del primer período “largo” de carga de la batería (17:42:29
hrs). Durante esta etapa de demandas intermitentes de corrientes altas se observa que la
diferencia entre los dos estados de carga no rebasa el 2%.
77
110 24
100 22
90 20
80 18
70 16
Amperes / Volts
60 14
50 12
EC(%)
40 10
30 8
20 6
10 4
0 2
-10 0
-20 -2
-30 -4
34
32
30
28
Diferencia (%) / Temp (ºC)
26
24
22
20
18
16
14
12
10
8
6
4
2
0
-2
16:02
16:31
16:59
17:28
17:57
18:26
18:55
19:23
19:52
20:21
20:50
21:19
9:07
9:36
10:04
10:33
11:02
11:31
12:00
12:28
12:57
13:26
13:55
14:24
Hora
Voltaje Batería EC - Red Neuronal
Corriente Batería EC - Conteo de Amperes
Temperatura Diferencia ECCA-ECRNA
Ahora bien, realizando un análisis completo de la prueba se puede observar que cuando el
controlador detecta un estado de carga de 75% calculado por conteo de amperes y corta el
suministro de corriente a la carga, el cálculo de estado de carga realizado por la red
neuronal indica que la batería se encuentra en un 61.56% de estado de carga, lo cual ya
pone en riesgo a la batería ya que esta no debe descargarse mas allá del 60%.
Revisando el cálculo del 100% de estado de carga en la carga final, el conteo de amperes
determina que se encuentra al 100% cuando la batería esta demandando una corriente de
2.5313 amperes mientras que la red neuronal determina el 100% de estado de carga cuando
la batería demanda 301.3 miliamperes.
78
Haciendo un balance de esta prueba se concluye que el algoritmo de cálculo de estado de
carga usando la red neuronal tuvo un mejor desempeño que el algoritmo por conteo de
amperes ya que calcula más confiablemente el 100% de estado de carga durante el proceso
de carga de la batería.
5.3.5 Prueba 5
Para la fase de descarga de esta prueba se decidió desconectar el panel fotovoltaico con el
fin de asegurar que toda la corriente demandada fuera suministrada por la batería. Durante
los primeros instantes de esta prueba se realizaron 3 descargas con corrientes de 3 y 10
amperes por periodos muy cortos, esto con el fin de validar la correcta medición de
corriente por parte del controlador de carga.
79
120 16
115 15
14
110 13
105 12
100 11
10
95 9
Amperes / Volts
90 8
85 7
EC (%) 6
80 5
75 4
70 3
65 2
1
60 0
55 -1
50 -2
-3
45 -4
40 -5
30
28
26
24
Diferencia (%) / Temp ( ºC)
22
20
18
16
14
12
10
8
6
4
2
0
-2
10:33
11:02
11:31
12:00
12:28
12:57
13:26
13:55
14:24
14:52
15:21
15:50
16:19
16:48
17:16
17:45
18:14
18:43
19:12
19:40
20:09
20:38
21:07
21:36
Hora
Para verificar el estado de carga real se conectó el panel fotovoltaico con el fin de permitir
que la batería se cargara, pero como se puede observar conforme fue transcurriendo la tarde
el panel suministró menos corriente, y esto se comprueba ya que al conectar la fuente de
alimentación (18:23:13 hrs) la batería demandó una corriente de 2.3887 amperes.
80
Analizando la etapa de carga de la batería observamos que cuando el estado de carga
calculado por el conteo de amperes alcanza el 100% la batería está demandando una
corriente de 2.5985 amperes, lo que nos indica que en realidad la batería no se encuentra
totalmente cargada. Al final de la prueba el conteo de amperes indicaba que la batería se
encontraba a un 107% de estado de carga. Por otro lado, si analizamos el cálculo del estado
de carga realizado por la red neuronal concluimos que éste es mas confiable que el del
conteo de amperes, debido a que cuando la red calcula un estado de carga de 100% la
batería se encuentra demandando una corriente máxima de 365.8 miliamperes, lo que nos
indica que la batería se encuentra cerca del 100% de estado de carga.
Haciendo un balance de esta prueba, se concluye que la red neuronal tuvo un mucho mejor
desempeño que el cálculo por conteo de amperes ya que no se ve afectada por los errores en
la medición de corrientes pequeñas lo que le permite cumplir mejor su función de
protección de la batería al calcular mas confiablemente el 75% de estado de carga durante
el proceso de descarga lo que resulta indispensable para mantener a la batería dentro de los
rangos de operación seguros.
5.3.6 Prueba 6
En la figura 5.10 se muestra que durante el período de descarga de la batería (de 13:05:12
hrs. a 14:30:26 hrs.) la diferencia máxima calculada entre los dos estados de carga es
inferior a 4.5%, mientras que en la etapa de carga la diferencia entre los dos estados de
carga se incrementa conforme la batería se va cargando llegando a alcanzar en su punto
máximo un valor de 12.72%.
81
120 16
115 15
110 14
105 13
100 12
95 11
90 10
9
Amperes / Volts
85
80 8
7
EC (%)
75 6
70 5
65 4
60 3
55 2
50 1
45 0
40 -1
35 -2
30 -3
25 -4
30
29
28
Diferencia (%) / Temp ( ºC)
27
26
25
24
12
10
8
6
4
2
0
-2
12:43
12:57
13:12
13:26
13:40
13:55
14:09
14:24
14:38
14:52
15:07
15:21
15:36
15:50
16:04
16:19
16:33
16:48
17:02
17:16
17:31
17:45
18:00
18:14
18:28
18:43
18:57
Hora
Voltaje Batería EC - Red Neuronal
Corriente Batería EC - Conteo de Amperes
Temperatura Diferencia ECCA - ECRNA
Otro factor a considerar es que durante la descarga el cálculo de estado de carga realizado
por la red neuronal llega al 75.12% cuando el conteo de amperes calcula 79%, lo que nos
indica que en el peor de los casos en la descarga la red neuronal “sobreproteje” a la batería
indicando un corte de carga un 3.88% de estado de carga antes de lo indicado por el conteo
de amperes.
Haciendo un balance de esta prueba, se concluye que la red neuronal tuvo un mejor
desempeño que el cálculo por conteo de amperes ya que cumple mejor su función de
82
protección de la batería al calcular más confiablemente el 100% de estado de carga lo que
resulta indispensable para mantener a la batería dentro de los rangos de operación seguros.
Además de que el controlador sí realizó el corte de la carga al detectar un estado de carga
menor al 76%.
Corriente al alcanzar
EC = 100 %
Prueba Condiciones Observaciones Conclusiones
Conteo de Red Neuro-
Amperes Difusa
Demanda continua a la Cuando el CA calcula Mas confiabilidad en
batería no mayor de 4 EC = 75% el cálculo del 100%
1 2.27 amp 535 ma
Amperes. El control se la RNA calcula un de estado de carga
hace por CA. EC = 73.01% utilizando la RNA
Demanda continua a la Cuando el CA calcula Mas confiabilidad en
batería no mayor de 6 EC = 75% el cálculo del 100%
2 3.957 amp 333.6 ma
Amperes. El control se la RNA calcula un de estado de carga
hace por CA. EC = 73 % utilizando la RNA
Demandas continuas con
Cuando el CA calcula Mas confiabilidad en
corrientes aleatorias no
EC = 75% el cálculo del 100%
3 mayores a 10 Amperes. 2.8675 amp 317.4 ma
la RNA calcula un de estado de carga
El control se hace por
EC = 74.19 % utilizando la RNA
CA.
Demandas intermitentes Cuando el CA calcula Mas confiabilidad en
con corrientes superiores 2.5959 amp 624.1 ma EC = 75% el cálculo del 100%
4
a 7 Amperes. El control 2.5313 amp 301.3 ma la RNA calcula un de estado de carga
se hace por CA. EC = 61.56% utilizando la RNA
Mejor protección
contra sobre
descargas al utilizar
Demanda a la batería con La RNA calcula RNA cuando se
corriente constante de EC< 76% cuando el demanda corrientes
5 2.5985 amp 365.8 ma
940 ma. El control se CA calcula un pequeñas.
hace por RNA. EC = 91%. Mas confiabilidad en
el cálculo del 100%
de estado de carga
utilizando la RNA.
Demanda continua a la La RNA calcula Mas confiabilidad en
batería mayor de 4 EC< 76% cuando el el cálculo del 100%
6 1.9556 amp 199.1 ma
amperes. El control se CA calcula un de estado de carga
hace por RNA. EC = 79%. utilizando la RNA.
83
Las pruebas fueron diseñadas para que se cubriera todo el rango de corriente que soporta el
controlador de carga en el cual se implementó la red neuronal.
En todas las pruebas se observa que el método de conteo de amperes calcula un estado de
carga del 100% cuando la batería aún esta demandando corrientes del orden de amperes,
mientras que la red calcula un estado de carga del 100% cuando la corriente demandada por
la batería es del orden de miliamperes. De los resultados anteriores se concluye que la red
neuronal nos proporciona un método más confiable para calcular el estado de carga del
100%.
Con los resultados de las pruebas anteriores se demuestra que el controlador de carga
mejora su desempeño al utilizar la red neuronal para calcular el estado de carga.
84
6 Conclusiones
Como resultado de esta tesis se obtuvo una red neuronal que permite calcular el estado de
carga de una batería plomo-ácido sellada y se implementó en un controlador de carga
diseñado en la GCI del IIE. Se encontró que el controlador que utiliza la red neuronal para
calcular el estado de carga de las baterías presenta un mejor desempeño que el que utiliza
conteo de amperes.
A pesar de que la red neuronal fue entrenada utilizando datos proporcionados por el
controlador de carga original, la red neuronal resultante es capaz de detectar de manera más
confiable el 100% de estado de carga de la batería. Esto debido principalmente a que
ningún proceso físico o químico es 100% eficiente y la corriente que se necesita suministrar
a la batería para cargarla es mayor que la corriente que se le demandó durante la descarga.
Como la red neuronal utiliza como entrada el voltaje de la batería, es capaz de detectar el
estado de carga sin importar la cantidad de corriente que se la haya suministrado o
demandado a la batería.
85
La topología ANFIS seleccionada para el desarrollo de la red neuronal resultó ser muy
conveniente ya que simplificó en buena medida el diseño de la misma así como su
entrenamiento, simulación e implementación. El haber elegido este esquema de red neuro-
difusa permitió desarrollar un programa modular fácilmente configurable.
86
6.3 Aportaciones
La red neuro difusa implementada tiene una característica propia, original e inédita
y es el que no utiliza la corriente de batería como una entrada, lo que le permite no
verse afectada por los errores en la medición de la corriente.
Los resultados de esta tesis tienen su aplicación inmediata en la mejora del producto
obtenido en un proyecto de la GCI del IIE lo cual incrementa su posibilidad de
comercialización.
Gracias a que el resultado de este trabajo constituye una solución muy satisfactoria al
problema tecnológico planteado, surgen como paso natural sugerencias de trabajos de
complemento y mejora entre los cuales destacan los siguientes:
87
el método de conteo de amperes no puede detectar el envejecimiento de la batería. Esta
prueba no se realizó en el presente trabajo debido al tiempo requerido para el desarrollo de
la misma.
c) Para que la red sea capaz de considerar temperaturas inferiores a cero grados centígrados
se deberán considerar datos de entrenamiento que incluyan bajas temperaturas, para lo cual
se propone realizar cargas y descargas controladas de la betería dentro de una cámara
térmica. También es posible entrenar a la red con temperaturas en grados Kelvin con el fin
de no utilizar el bit de signo en la variables tipo word del microcontrolador.
e) Durante el desarrollo de este trabajo, en la GCI del IIE se generó una nueva versión de
hardware del controlador de estado de carga con sus correspondientes modificaciones en el
software, por lo cual el trabajo inmediato consiste en adecuar el programa de la red a la
nueva versión. En las nuevas versiones se pretende que el controlador maneje corriente más
altas por lo que es necesario generar datos de entrenamiento con este tipo de corrientes y así
poder entrenar a la red adecuadamente.
88
7 Referencias
[1] Jana K., “Charging pure lead-tin batteries: A guide for Cyclon and Genesis batteries”,
Hawker Energy, 1999
[2] Alzieu J. Smimite H. and Glaize C., “Improvement of intelligent battery controller:
state-of-charge indicator and associated functions”, J. of Power Sources, Vol.67, 1997,
pp.157-161
[3] Catherino H., Burgel J., Rusek A. and Feres F., “Modelling and simulation of lead-acid
battery charging”, J. of Power Sources, Vol.80, 1999, pp.17-20
[4] Copetti J. and Chenlo F., “Lead/acid batteries for photovoltaic applications. Test results
and modeling”, J. of Power Sources, Vol.47, 1994, pp.109-118
[5] Fleming F., Shumard P. and Dickinson B., “Rapid recharge capability of valve-
regulated lead-acid batteries for electric vehicle and hybrid electric vehicle applications”, J.
of Power Sources, Vol.78, 1999, pp.237-243
[6] Huacuz J. and Urrutia M. (Eds.), Controladores de carga para sistemas fotovoltaicos de
elctrificación rural, Taller RIER-IIE, Instituto de Investigaciones Eléctricas, Cuernavaca,
México, Julio 1998
[7] Urbina A., Paez T., O’Gorman C., Barney P., Jungst R and Ingersoll D., “Reliability of
rechargeable batteries in a photovoltaic power supply system”, J. of Power Sources, Vol.80,
1999, pp.30-38
[8] Ehret C., Piller S., Schroer W. and Jossen A., “State-of-Charge determination for lead-
acid batteries in PV-applications”, in Procs. 16th European Photovoltaic Solar Energy
Conference, Glasgow, May 2000, pp.2486-2489
[9] Salkind A., Fennie C., Singh P., Atwater T. and Reisner D., “Determination of state-of-
charge and state-of-health of batteries by fuzzy logic methodology”, J. of Power Sources,
Vol.80, 1999, pp.293-300
[10] Wagner R., Sauer D., “Charge strategies for valve-regulated lead/acid batteries in solar
power applications”, J. of Power Sources, Vol.95, 2001, pp.141-152
[11] Huet F., “A review of impedance measurements for determination of the state-of-
charge or state-of-health of secondary batteries”, J. of Power Sources, Vol.70, 1998, pp.59-
69
[12] Piller S., Perrin M., Jossen A., “Methods for state-of-charge determination and their
applications”, J. of Power Sources, Vol.96, 2001, pp.113-120
89
[13] Ortega C., González A., Cristín M.A., “Sistema para monitoreo remoto y control de
carga de baterías en aplicaciones fotovoltaicas”, 26 Semana Nacional de Energía Solar
[14] Ortega C., Orozco J, Pacheco J., Cristín M.A. y Rivera A. “Monitoreo De Celdas
Independientes En Arreglos Para Respaldo De Energía”, Gerencia de Control e
Instrumentación, Instituto de Investigaciones Eléctricas
[15] Rivera A., Ortega C., Orozco J, Pacheco J. "Sistema Para Almacenar Y Analizar Los
Datos Provenientes De Un Sistema De Monitoreo De Celdas Individuales En Bancos De
Baterías”. Gerencia de Control e Instrumentación, Instituto de Investigaciones Eléctricas
[16] Yamazaki T., Sakurai K., Muramoto K., “Estimation of the residual capacity of sealed
lead-acid batteries by neural network”, 1998 IEEE, pp. 210-214
[17] Chan C.C, Weixiang S. “The available capacity computational model based on
artificial neural network for lead-acid batteries in electric vehicles”, J. Of Power Sources,
Vol.87, 2000, pp. 201-204
[19] J.S. Jang. ANFIS: Adaptive-network-based fuzzy inference systems. IEEE Trans. on
Systems, Man, and Cybernetics, 23(03) pp.665-685, 1993.
[20] J.S. Jang, C.T. Sun, E. Mizutani. Neuro-fuzzy and Soft Computing. Math-Lab
Curriculum Series. Prentice Hall. 1997.
[21] M. Sugeno and G.T. Kang. Structure identification of fuzzy model. Fuzzy Sets and
Systems, 28:15, 33, 1988
[22] T. Takagi and M. Sugeno. Derivation of fuzzy control rules from human operator’s
control actions. Proccedings of the IFAC Symposium on Fuzzy Information, Knowledge
Representation and Decision Analysis, pages 55-60, July 1983
[23] T. Takagi and M. Sugeno. Fuzzy identification of systems and its applications to
modeling and control. IEEE Transactions on Systems, Man, and Cybernetics, 15:116-132,
1985.
[24] MATLAB The Lenguage of Technical Compuiting. The Math Works Inc. Versión 6.0
Septiembre 22 de 2000
90
ANEXO A
La función para el cálculo del estado de carga utilizando redes neuronales implementada en
el microcontrolador es la mostrada a continuación.
; ******************************************************************
; Subrutinas para el calculo del Estado de Carga
; utilizando Redes Neuronales
;
; Desarrollo : Miguel Angel Cristin Valdez
;
; Entradas : &inst_IBat
; &Fact_Ibat
; &Fact_Ibatneg
; &inst_VBat
; &Fact_Vbat
; &inst_Temp
;
; Salida : rrnhi
;
; ******************************************************************
red_neuro
mov &inst_IBat,x
and #0FFFh,x ; se limpian los bits de signo de la corriente
mov x,&mpy
mov &Fact_Ibatneg,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #100,IROP1
call #DIVIDE
mov IRACL,Ibat_inst ; Corriente negativa de Bat Instantanea por 10^3
mov #1,sig_cor
cmp #200,Ibat_inst
jlo FINAL1
cmp #700,Ibat_inst
jlo MTEJEC
mov #300,t_ejec ;Para un tiempo de ejecución cada 5 minutos
cmp #3000,Ibat_inst
jlo CALCULO
mov #240,t_ejec ;Para un tiempo de ejecucion de 4 minutos
cmp #5000,Ibat_inst
jlo CALCULO
mov #180,t_ejec ;Para un tiempo de ejecución de 3 minutos
jmp CALCULO
91
IBAT_POS cmp #250,Ibat_inst
jlo FINAL1
cmp #500,Ibat_inst
jlo MTEJEC2
mov #480,t_ejec
cmp #1000,Ibat_inst
jlo CALCULO
mov #300,t_ejec ;Para un tiempo de ejecución cada 5 minutos
cmp #3000,Ibat_inst
jlo CALCULO
mov #240,t_ejec ;Para un tiempo de ejecucion de 4 minutos
cmp #5000,Ibat_inst
jlo CALCULO
mov #180,t_ejec ;Para un tiempo de ejecución de 3 minutos
jmp CALCULO
MTEJEC2 mov #600,t_ejec
mov &inst_Temp,&mpy
mov #1000,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #16,IROP1
call #DIVIDE
mov IRACL,temp ; Temperatura Instantanea por 10^3
CALCULO_SOC
mov voltinst, x
mov x,y
mov #a11, a
mov #d11, d
mov #ba11,b
mov #dc11,cc
call #gp_trap
mov gp,in1mf1
mov voltinst, x
mov x,y
mov #a12, a
mov #d12, d
mov #ba12,b
mov #dc12,cc
call #gp_trap
mov gp,in1mf2
mov temp, x
mov x,y
mov #a21, a
mov #d21, d
mov #ba21,b
mov #dc21,cc
call #gp_trap
92
mov gp,in2mf1
mov temp, x
mov x,y
mov #a22, a
mov #d22, d
mov #ba22,b
mov #dc22,cc
call #gp_trap
mov gp,in2mf2
mov soc_ant, x
mov x,y
mov #a31, a
mov #d31, d
mov #ba31,b
mov #dc31,cc
call #gp_trap
mov gp,in3mf1
mov soc_ant, x
mov x,y
mov #a32, a
mov #d32, d
mov #ba32,b
mov #dc32,cc
call #gp_trap
mov gp,in3mf2
mov in1mf1,a
mov in2mf1,b
mov in3mf1,cc
call #REGLAS
mov x,w1hi
mov in1mf1,a
mov in2mf1,b
mov in3mf2,cc
call #REGLAS
mov x,w2hi
mov in1mf1,a
mov in2mf2,b
mov in3mf1,cc
call #REGLAS
mov x,w3hi
93
mov in3mf2,cc
call #REGLAS
mov x,w6hi
COMB_LIN
; ********************************************************************
; Combinaciones Lineales
; ********************************************************************
mov #wdt_arst_250,&wdtctl ; reinicio de watchdog.
mov #out1mf11,a
mov #out1mf12,b
mov #out1mf13,cc
mov #out1mf14,d
mov #sign1,y
mov w1hi,gp
call #COMBINACION
mov x,w1hi
mov #out1mf21,a
mov #out1mf22,b
mov #out1mf23,cc
mov #out1mf24,d
mov #sign2,y
mov w2hi,gp
call #COMBINACION
mov x,w2hi
mov #out1mf31,a
mov #out1mf32,b
mov #out1mf33,cc
mov #out1mf34,d
mov #sign3,y
mov w3hi,gp
call #COMBINACION
mov x,w3hi
mov #out1mf41,a
mov #out1mf42,b
mov #out1mf43,cc
mov #out1mf44,d
mov #sign4,y
mov w4hi,gp
94
call #COMBINACION
mov x,w4hi
mov #out1mf51,a
mov #out1mf52,b
mov #out1mf53,cc
mov #out1mf54,d
mov #sign5,y
mov w5hi,gp
call #COMBINACION
mov x,w5hi
mov #out1mf61,a
mov #out1mf62,b
mov #out1mf63,cc
mov #out1mf64,d
mov #sign6,y
mov w6hi,gp
call #COMBINACION
mov x,w6hi
mov #out1mf71,a
mov #out1mf72,b
mov #out1mf73,cc
mov #out1mf74,d
mov #sign7,y
mov w7hi,gp
call #COMBINACION
mov x,w7hi
mov #out1mf81,a
mov #out1mf82,b
mov #out1mf83,cc
mov #out1mf84,d
mov #sign8,y
mov w8hi,gp
call #COMBINACION
mov x,w8hi
;********************************************************************
clr x
add w1hi,x
add w2hi,x
add w3hi,x
add w4hi,x
add w5hi,x
add w6hi,x
add w7hi,x
add w8hi,x
;********************************************************************
mov x,&mpy
mov #10000,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov nor_factor,IROP1
call #DIVIDE
mov IRACL,rrnhi ; Resultado del calculo del SOC por Red Neuronal por 10^2
cmp #6000,rrnhi
jhs CON1
mov #6000,rrnhi
95
FINAL3 mov rrnhi,soc_ant
mov voltinst,voltinst_ant
mov temp,temp_ant
FINAL
; *************************************************************************
; Funcion 'gp_trap' para el calculo de grados de pertenencia trapezoidales
; el resultado es por 10 ^4
; *************************************************************************
gp_trap
clr gp
cmp.w x,a ;
jhs NEGATIVO ;a>x?
cmp.w d,x ;
jhs NEGATIVO ;x>d?
mov x,&mpy
mov #10000,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov b,IROP1
call #DIVIDE
jc MENOR_16_1
cmp #10000,IRACL ;
jlo LIM1 ;10000>IRACL?
mov d,&mpy
mov #10000,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov cc,IROP1
call #DIVIDE
jc MENOR_16_2
cmp #10000,IRACL ;
jlo LIM2 ;10000>IRACL?
cmp.w gp,x
jhs GP_MENOR ;x>gp?
mov x,gp
jmp GP_MENOR
GP_MENOR
; *****************************************************************
; Calculo de producto de tres terminos con factor 10^4,
; el resultado es tambien 10^4.
; *****************************************************************
96
REGLAS
mov a,&mpy
mov b,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #10000,IROP1 ;DIVISOR
call #DIVIDE
mov IRACL,x
mov x,&mpy
mov cc,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #10000,IROP1 ;DIVISOR
call #DIVIDE
mov IRACL,x
;**************************************************************
; Funcion de combinacion lineal
; Producto de dos factores por 10^3
; el SOC_ant esta en 10^2
; el resultado final es 10^2
;**************************************************************
COMBINACION
mov a,&mpy
mov voltinst,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #10000,IROP1 ;DIVISOR 10^4
call #DIVIDE
mov IRACL,a
mov b,&mpy
mov temp,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #10000,IROP1 ;DIVISOR 10^4
call #DIVIDE
mov IRACL,b
mov cc,&mpy
mov soc_ant,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #1000,IROP1 ;DIVISOR 10^3
call #DIVIDE
mov IRACL,cc
cmp #00h,y
jne CASO1
jmp SUMA
97
jne CASO4
inv a
add #1,a
inv b
add #1,b
jmp SUMA
98
CASOC cmp #0Ch,y
jne CASOD
inv d
add #1,d
inv cc
add #1,cc
jmp SUMA
SUMA clr x
add a,x
add b,x
add cc,x
add d,x
mov x,&mpy
mov gp,&op2
mov reshi,IROP2M
mov reslo,IROP2L
mov #10000,IROP1 ;DIVISOR
call #DIVIDE
mov IRACL,x
; ****************************************************************
; Division de 32 bits entre 16 y el resultado es en 16 bits
; ****************************************************************
DIVIDE
CLR IRACL ; CLEAR RESULT
MOV #17,IRBT ; INITIALIZE LOOP COUNTER
DIV1 CMP IROP1,IROP2M ;
JLO DIV2
SUB IROP1,IROP2M
DIV2 RLC IRACL
JC DIV4 ; Error: result > 16 bits
DEC IRBT ; Decrement loop counter
99
JZ DIV3 ; Is 0: terminate w/o error
RLA IROP2L
RLC IROP2M
JNC DIV1
SUB IROP1,IROP2M
SETC
JMP DIV2
DIV3 CLRC ; No error, C = 0
DIV4 RET ; Error indication in C fin de DIVIDE
; *********************************************************************
; Fin de subrutinas para redes neuronales
; *********************************************************************
100