Gerson Fabián Cote Flórez

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 93

PROYECTO FIN DE CARRERA

Presentado a

LA UNIVERSIDAD DE LOS ANDES


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

Para obtener el título de

INGENIERO ELECTRÓNICO

Por

Gerson Fabián Cote Flórez

ALGORITMO MPPT DESCENTRALIZADO DE


CONDUCTANCIA INCREMENTAL EN UNA RED
FOTOVOLTAICA

Sustentado el 21 de Julio del 2014 al jurado:

Composición del jurado

Asesor: Jose Fernando Jimenez Vargas, Profesor Asociado, Universidad de Los Andes.

Jurado: Alonso Gutiérrez Galeano, Doctorado en Ingeniería, Universidad de Los Andes.


2
Índice general

Lista de guras 5
1. Introducción 9
2. Marco Teórico 11
2.1. Antecedentes Externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2. Antecedentes Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3. Objetivos 15
3.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Objetivos Especícos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4. Metodología 17
4.1. Modelo del Módulo Fotovoltaico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2. Diseño en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. Cálculo de la Resistencia en Serie y en Paralelo . . . . . . . . . . . . . . . . . . . . . 22
4.4. Acoplamiento a un Conversor DC/DC . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.5. Modelo de la Radiación Solar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.6. Selección de la técnica MPPT utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.6.1. Algoritmo de Conductancia Incremental . . . . . . . . . . . . . . . . . . . . . 29
4.7. Módulo MPPT de Conductancia Incremental en VHDL . . . . . . . . . . . . . . . . 31

5. Resultados y Análisis 35
5.1. Caracterización del Panel KC200GT . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2. Caracterización del Boost DC/DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3. Simulación de un módulo PV con algoritmo de Conductancia Incremental . . . . . . 39
5.4. Simulación con algoritmo MPPT bajo cambios de radiación solar . . . . . . . . . . . 43
5.5. Simulación de una red de 3 módulos PV en serie con el algoritmo MPPT . . . . . . . 48
5.6. Simulación del módulo de MPPT implementado en VHDL . . . . . . . . . . . . . . . 52

Conclusiones y Perspectivas 57
Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Perspectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A. Seudocódigo para el cálculo de Radiación Solar 63


3
4 ÍNDICE GENERAL

B. Seudocódigo del algoritmo de Conductancia Incremental 65


C. Módulo MPPT en VHDL con algoritmo de Conductancia Incremental 67
C.1. Código para el bloque equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
C.2. Código para el bloque greater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
C.3. Código para el bloque greater_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
C.4. Código para el bloque sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
C.5. Código para el bloque division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
C.6. Código para el bloque selective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
C.7. Código para el bloque inc_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
C.8. Código para el bloque pwm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
C.9. Código para el bloque delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
C.10.Código para el bloque input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
C.11.Código para el bloque new_clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
C.12.Código para el bloque mppt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C.13.Diagrama de bloques internos para el bloque inc_cond . . . . . . . . . . . . . . . . . 92
Índice de guras

1.1. Problema de sombra parcial [10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1. Curva característica de polarización directa I −V de una célula fotovoltaica [16] . . 12

4.1. Circuito equivalente de un Panel Solar . . . . . . . . . . . . . . . . . . . . . . . . . . 18


4.2. Factor a de acuerdo a la tecnología del PV [27] . . . . . . . . . . . . . . . . . . . . . 19
4.3. Cálculo de I0 en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4. Cálculo de Is en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5. Cálculo de Ipv en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.6. Cálculo de ID en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.7. Cálculo de Imod en Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.8. Circuito para caracterización de un módulo fotovoltaico en Simulink . . . . . . . . . 22
4.9. Diagrama circuital de un Boost DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.10. Diagrama de conexión entre el módulo fotovoltaico y el Boost DC . . . . . . . . . . . 24
4.11. Diagrama de conexión en serie de tres unidades fotovoltaicas . . . . . . . . . . . . . . 25
4.12. Esfera celeste, movimiento aparente del Sol y variación anual del ángulo de declinación
solar [30]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.13. Esfera celestial y coordenadas del Sol relativas a un observador ubicado sobre la Tierra
en el punto O [30]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.14. Características principales de las diferentes técnicas MPPT [21] . . . . . . . . . . . . 28
4.15. Curva característica de potencia en función del voltaje para un módulo fotovoltaico. 29
4.16. Algoritmo de Conductancia Incremental [21]. . . . . . . . . . . . . . . . . . . . . . . 31
4.17. Diagrama de conexiones internas para el bloque del subsistema MPPT . . . . . . . . 31
4.18. Módulo MPPT sintetizado en VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.19. Diagrama de bloques interno del módulo MPPT sintetizado en VHDL . . . . . . . . 33
4.20. Módulo del algoritmo de Conductancia Incremental sintetizado en VHDL . . . . . . 34

5.1. Valores constantes dados por el fabricante [31] . . . . . . . . . . . . . . . . . . . . . . 36


5.2. Máximo de potencia Pmax en función de los valores de resistencia RS . . . . . . . . . 36
5.3. Corriente I en función del voltaje V a la salida del módulo para para diferentes valores
de G con T constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4. Corriente I en función del voltaje V a la salida del módulo para para diferentes valores
de T con G constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.5. Potencia P en función del voltaje V entregada por el módulo para para diferentes
valores de G con T constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5
6 ÍNDICE DE FIGURAS

5.6. Potencia P en función del voltaje V entregada por el módulo para para diferentes
valores de T con G constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.7. Voltaje de salida del Boost DC/DC para los diferentes valor de ciclo útil; con una
fuente de 24V en la entrada y una carga de 5,6Ω. . . . . . . . . . . . . . . . . . . . . 40
5.8. Voltaje de operación de un módulo fotovoltaico, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal . . . 41
5.9. Voltaje sobre una carga resistiva de 5,6Ω, con y sin la acción del algoritmo de Con-
ductancia Incremental, en condiciones de Radiación y Temperatura nominal . . . . . 41
5.10. Potencia extraída de un módulo fotovoltaico, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal . . . 42
5.11. Potencia entregada a una carga resistiva de 5,6Ω, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal . . . 43
5.12. Potencia extraída de un módulo fotovoltaico y potencia entregada a una carga resistiva
de 5,6Ω, bajo la acción del algoritmo de Conductancia Incremental, en condiciones de
Radiación y Temperatura nominal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.13. Convergencia del ciclo útil D bajo la acción del algoritmo de Conductancia Incremen-
tal, con un paso de 0,0001 y en condiciones de Radiación y Temperatura nominal . . 44
5.14. Potencia entregada a una carga resistiva de 5,6Ω, bajo la acción del algoritmo de
Conductancia Incremental, en tres diferentes condiciones de Radiación y Temperatura 45
5.15. Curva de radiación directa típica de un día 10 de Julio en la ciudad de Bogotá, Colombia. 46
5.16. Convergencia del ciclo útil D bajo la acción del algoritmo de Conductancia Incre-
mental, con un paso de 0,0001 y en condiciones de Temperatura nominal y Radiación
cambiante durante un día 10 de Julio en la ciudad de Bogotá, Colombia. . . . . . . . 46
5.17. Voltaje de operación del panel y voltaje sobre una carga resistiva de 5,6Ω, con y sin
la acción del algoritmo de Conductancia Incremental, en condiciones de Temperatura
nominal y Radiación cambiante durante un día 10 de Julio en la ciudad de Bogotá,
Colombia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.18. Potencia extraída del panel y potencia entregada a una carga resistiva de 5,6Ω, con
y sin la acción del algoritmo de Conductancia Incremental, en condiciones de Tem-
peratura nominal y Radiación cambiante durante un día 10 de Julio en la ciudad de
Bogotá, Colombia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.19. Convergencia de los valores de ciclo útil D bajo la acción del algoritmo de Conduc-
tancia Incremental descentralizo, con un paso de 0,0001, en una red de 3 paneles en
serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.20. Corriente sobre una carga resistiva de 52Ω una red de 3 paneles en serie, bajo la acción
del algoritmo de Conductancia Incremental descentralizo . . . . . . . . . . . . . . . . 50
5.21. Voltaje sobre una carga resistiva de 52Ω una red de 3 paneles en serie, bajo la acción
del algoritmo de Conductancia Incremental descentralizo . . . . . . . . . . . . . . . . 50
5.22. Voltajes de operación de 3 paneles en serie, en una red bajo la acción del algoritmo
de Conductancia Incremental descentralizo . . . . . . . . . . . . . . . . . . . . . . . . 51
5.23. Potencia extraída de cada uno de los 3 paneles en serie, en una red bajo la acción del
algoritmo de Conductancia Incremental descentralizo . . . . . . . . . . . . . . . . . . 52
5.24. Potencia entregada a una carga resistiva de 52Ω por una red de 3 paneles en serie,
bajo la acción del algoritmo de Conductancia Incremental descentralizo . . . . . . . . 52
5.25. Simulación de prueba del algoritmo de Conductancia Incremental en VHDL . . . . . 54
ÍNDICE DE FIGURAS 7

5.26. Simulación del algoritmo de Conductancia Incremental en VHDL para una respuesta
de aumento en el ciclo útil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.27. Simulación del algoritmo de Conductancia Incremental en VHDL para una respuesta
de disminución en el ciclo útil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8 ÍNDICE DE FIGURAS
Capítulo 1

Introducción
En la actualidad más de 1.5 mil millones de personas en el mundo no tienen acceso a la energía
eléctrica [1]. En la mayoría de los casos es debido a la locación en la que se encuentran, puesto que
llevar la red eléctrica a lugares remotos es muy costoso [1]. Este es el caso de diversas poblaciones
en Colombia, donde para satisfacer esta necesidad se han implementado redes de energía locales que
funcionan con un generador a base de Diesel [2]. Sin embargo, estos sistemas son igualmente costosos
de mantener en operación, dado que dependen directamente del precio de dicho combustible y de su
transporte hasta la zona. Así mismo, son inecientes, puesto que no pueden operar todo el tiempo,
solo lo hacen durante el día y particularmente en las horas de mayor requerimiento (picos de carga);
dado que su operación por largo tiempo, cuando la carga es baja, causa degradación en la planta [3].

Para mejorar esta situación se ha optado por implementar sistemas híbridos, en los cuales se
utiliza, además de la planta de combustible, un medio de energía renovable, esto es, energía solar,
hidráulica o eólica. Los dos últimos mencionados presentan restricciones geográcas, dado que no
es factible instalarlos en cualquier parte, sino en lugares aptos, esto es, cerca de un rio con ciertas
características (hidráulica) o donde se presenten fuertes corrientes de aire (eólica) [1]. Por otra parte,
la energía solar es factible obtenerla en todo lugar sin importar la locación; lo único que varía es la
cantidad de energía que se puede obtener dado el sitio geográco de instalación [1]. Es por esto que
los paneles solares (módulos fotovoltaicos) son en la mayoría de los casos la solución directa, y se
están implementando en diversas áreas alrededor del mundo.

Con los sistemas híbridos fotovoltaico-diesel se puede lograr una considerable disminución en los
costos de operación [4]. Sin embargo, para su implementación se requiere una gran inversión, dado
que además del hardware necesario, se requiere capacitación técnica para la instalación, supervisión
y mantenimiento del sistema [5]. Además, aunque se ha avanzado tecnológicamente en los paneles
solares y se han reducido sus costos, no es el mismo caso para los dispositivos de almacenamiento de
energía (baterías), convirtiéndose en uno de los mayores limitantes de estos sistemas [6]. El tiempo
de retribución de estos sistemas híbridos, respecto a los sistemas a base exclusiva de diesel, aumenta
de acuerdo al tiempo de vida y la eciencia de las baterías [7]. Sin embargo, existe la posibilidad de
implementar estos sistemas sin unidades de almacenamiento, donde la energía solar se consume de
acuerdo a la carga en cada momento; y con el diesel se refuerza cuando la carga exceda la capacidad
de los módulos fotovoltaicos y lógicamente cuando no haya luz solar [8].

9
10 CAPÍTULO 1. INTRODUCCIÓN

Figura 1.1: Problema de sombra parcial [10]

Un sistema híbrido sin baterías es posible implementarlo en diversas poblaciones del territorio
colombiano. En dichos casos, la energía solar se puede usar para cubrir la carga diaria normal y
cuando haya excedente, éste no se almacenaría en baterías, sino sería usado para otras actividades,
por ejemplo, el suministro de agua, ya que varias poblaciones no poseen este servicio.

Igualmente, los sistemas híbridos fotovoltaico-diesel con o sin baterías no son completamente
ecientes por si solos. Para garantizar un buen funcionamiento de estos sistemas se requiere un me-
joramiento de diversos aspectos como el controlador, la conguración electrónica y el monitoreo de
operación, y la comunicación en el sistema encargada de cumplir con estas funciones [9]. Entre los
aspectos a mejorar se encuentran los inversores fotovoltaicos, ya que los paneles no son una fuente
pura de voltaje o corriente, y se requiere dichos elementos para poder adaptar los módulos a la red,
entregando energía con alta eciencia y de manera segura [10]. Principalmente estas mejoras están
al nivel de los algoritmos MPPT (Maximum Power Point Tracking) para extraer la mayor cantidad
de potencia de los módulos fotovoltaicos.

El principal problema radica en que los paneles, debido a su fabricación, a su orientación respecto
al sol, la temperatura, etc., no poseen el mismo MPP (Maximum Power Point) y obtener el máximo
de eciencia se diculta en casos de sombra parcial [11]. En la gura 1.1 se ilustra esta situación,
donde mediante el método de perturbación y observación, comúnmente usado, solo se puede identi-
car el punto máximo más probable [10]. Para poder identicar los puntos máximos correspondientes
a los demás módulos se han propuesto dos soluciones. Una de ellas es usando métodos de "machine
learning [12] y la otra consiste en descentralizar el MMPT realizando un seguimiento local a cada
panel, y no en conjunto como se muestra en el diagrama izquierdo de la gura 1.1 [13]. Esta segunda
solución es la de interés en el presente trabajo, con el cual se busca diseñar un algoritmo MPPT
descentralizado para una red de módulos fotovoltaicos sin dispositivos de almacenamiento y con base
en la técnica de Conductancia Incremental.
Capítulo 2

Marco Teórico
Para el desarrollo del trabajo es importante tener claro conceptos básicos sobre los módulos
fotovoltaicos y las técnicas MMPT. En primer lugar, acerca de los paneles solares, es importante
conocer la curva característica de la corriente en función del voltaje (I −V) como se muestran en la
gura 2.1 [14]. Claramente, en la mayoría de su rango de trabajo (intervalo de Voltaje) el panel se
comporta como una fuente de corriente constante Isc (corriente de corto circuito), bajo una intensi-
dad solar constante [15]. A medida que cambia la radiación recibida, también cambia la gráca de
I −V, esto es, entre mayor sea la radiación recibida mayor será la corriente de salida [15].

Para determinada radiación solar se puede obtener el punto de máxima potencia entregada por el
panel (P = Vmax ∗ Imax ). Este punto de operación se encuentre sobre la " rodilla de la gráca I −V ,
donde el comportamiento de la corriente ya no es constante, sino una exponencial invertida respecto
al voltaje [16]. Un forma de extraer la máxima potencia del panel es conectando una resistencia de
carga R = Vmax /Imax (Resistencia característica). Sin embargo, es fácil notar que a medida que
cambia la intensidad solar, también cambia la curva de I −V y por consiguiente le punto de máxima
potencia se desplaza [17]. Lo cual conlleva a que el valor de la resistencia característica sea variable
con el tiempo.

Por lo anterior, para extraer la máxima potencia del panel solar de manera constante, es decir,
garantizar que el panel siempre esté operando en el punto de máxima potencia (MPP), se debe
implementar un control electrónico que garantice este estado de operación [18]. Dichos sistemas de
control se fundamentan en los algoritmos o técnicas de MPPT.

Es importante aclarar que las técnicas MPPT no son sistemas mecánicos que posicionan el mo-
dulo fotovoltaico respecto a la posición del sol; estas técnicas son sistemas puramente electrónicos
que fuerzan al módulo a operar en el punto (voltaje) de máxima potencia en cada instante de tiem-
po. Existen diferentes tipos de algoritmos MPPT, los controladores pueden usar únicamente uno de
estos o conmutar entre varios algoritmos de acuerdo a las condiciones del sistema [19]. Las técnicas
bases más usadas se listan a continuación:

Perturbar y observar: Es el método de MPPT más común. En este caso el controlador


varía el voltaje en pequeños intervalos y mide la potencia, si ésta incrementa o disminuye el

11
12 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.1: Curva característica de polarización directa I −V de una célula fotovoltaica [16]

controlador aumenta o disminuye el voltaje dependiendo de cada caso. De esta manera se ubica
el MPP, sin embargo, se pueden generar oscilaciones de potencia a la salida [20, 21].

Conductancia incremental: En este método el controlador detecta cambios en la corriente


y el voltaje del módulo; para luego predecir el efecto de cambios en el voltaje de operación y
así determinar el nuevo punto de operación [21, 22].

Método de barrido de corriente: Como su nombre lo dice, en este método se usa un barrido
de corriente para determinar la curva I −V del panel y así calcular sistemáticamente el MPP.
Dicho barrido se hace en intervalos de tiempo determinados y, así actualizar la curva I −V y
el punto de operación [21].

Como había mencionado anteriormente estos métodos suelen aplicarse de manera central para
arreglos de módulos fotovoltaicos. Sin embargo, en dicho proceso el controlador establece una co-
rriente igual para todos los módulos, por lo cual no todos resultan operando en su MPP; ésto debido
a que factores como la temperatura de cada panel, y sombras parciales (ej. por árboles) sobre ellos,
hacen que la curva de I −V sea distinta en cada módulo.

2.1. Antecedentes Externos


Una de las estrategias, que se ha desarrollado para garantizar que todos los módulos operen en
su punto de máxima potencia, es la de descentralizar los algoritmos MPPT; esto es, implementar
un controlador independiente para cada módulo en un arreglo fotovoltaico. En base a esto ya se han
desarrollado diversas metodologías y conguraciones. En la referencia [13] se expone un circuito de
control de generación, con el cual se garantiza que todos los módulos operen en su MPP y se com-
prueba que de esta manera se obtiene una mayor potencia a la salida del sistema. En la referencia [23]
2.2. ANTECEDENTES LOCALES 13

se desarrolla un método MPPT basado en "persecución de enjambre biológico, donde cada módulo
se considera una partícula y el MPP se considera el blanco (objetivo); sin embargo, éste método aún
no funciona correctamente para el caso de sombras parciales. Por otra parte, en la referencia [11] se
expone un método de MPPT que sí funciona para sistemas operando en condiciones de sombreado
parcial. Todo esto es prueba de que a nivel internacional se ha avanzo considerablemente en cuanto
a descentralizar los algoritmos MPPT.

2.2. Antecedentes Locales


A nivel local, en Colombia, la tecnología de sistemas fotovoltaicos es relativamente reciente, por
lo tanto no se han producido avances signicativos. Sin embargo, en los últimos años se han crea-
do empresas especializadas en esta área, y se han instalado pequeños parques solares en diferentes
locaciones. Como ejemplo de estas compañías encontramos a Energía Solar de Colombia [24], y a
Sensstech [25]. De esta manera, el desarrollo tecnológico para aprovechamiento de la energía solar
en Colombia ha estado enmarcado por el sector privado, con lo cual se diculta obtener información
técnica sobre los algoritmos MPPT utilizados.
14 CAPÍTULO 2. MARCO TEÓRICO
Capítulo 3

Objetivos

3.1. Objetivo General


Simular una red fotovoltaica de la cual, mediante un algoritmo MPPT descentralizado, sea
posible extraer la máxima potencia, en todo momento, de cada uno de los módulos de dicha
red.

3.2. Objetivos Especícos


1. Estudiar y simular el modelo de un panel solar.

2. Estudiar mediante simulaciones el modelo del panel conectado a un conversor tipo boost
DC/DC.

3. Estudiar y seleccionar una de las técnicas/algoritmos MPPT para aplicar al modelo.

4. Implementar el algoritmo MPPT seleccionado sobre el modelo del panel conectado al conversor
DC/DC; y vericar el funcionamiento de dicho algoritmo mediante simulaciones, es decir, que
mantenga al módulo operando en su MPP.

5. Replicar el sistema para varios módulos fotovoltaicos y conectarlos entre entre sí; y vericar
el funcionamiento de la red de módulos completa, con los algoritmos MPPT individuales,
mediante simulaciones.

6. Implementar un módulo en VHDL que contenga el algoritmo/técnica MPPT seleccionado y que


genere, con base en éste, la señal de control PWM (Pulse Width Modulation) correspondiente.

15
16 CAPÍTULO 3. OBJETIVOS
Capítulo 4

Metodología
Antes de estudiar el algoritmo MPPT es importante estudiar y comprender el modelo de un mó-
dulo fotovoltaico. Posteriormente, si exponer el algoritmo MPPT seleccionado, no sin antes justicar
el por qué de su escogencia; esto es, explicando los diferentes factores de decisión.

4.1. Modelo del Módulo Fotovoltaico


Este módulo por efecto fotoeléctrico produce una diferencia de potencial (voltaje) cuando la
luz solar incide sobre él, de tal manera que es posible modelarlo como una fuente de corriente no
lineal. Claramente, la corriente de salida depende de las características del material de fabricación,
la radiación incidente y la temperatura del panel, entre otros. Con base en su comportamiento, el
circuito equivalente que se ha establecido para el panel solar se muestra en la Figura 4.1; éste se
compone de una fuente de corriente ideal (Ipv ), un diodo (D ), una resistencia en paralelo (Rp ), y
nalmente la resistencia en serie (Rs ) [26].

Mediante análisis circuital es fácil notar que la corriente de salida del módulo I se puede denir
como sigue:

I = Imod − IRp (4.1)

Donde la corriente de modelo Imod = IP V − ID , con ID la corriente del diodo y IRp la corriente
que circula por la resistencia en paralelo. La corriente de la fuente ideal del panel IP V depende de la
radiación incidente, y del cambio en la temperatura, como se expresa en la siguiente ecuación [26]:

G
IP V = [ISC + KIsc (T − Tn )] (4.2)
Gn

G y Gn son la radiación de operación y la radiación nominal (dada por el fabricante), respectiva-


mente. T y Tn son la temperatura de operación y la temperatura nominal (dada por el fabricante),
respectivamente; éstas se deben trabajar en Kelvin. ISC es la corriente de cortocircuito y KIsc es el
coeciente de temperatura para la corriente de cortocircuito; los dos son parámetros dados por el

17
18 CAPÍTULO 4. METODOLOGÍA

Figura 4.1: Circuito equivalente de un Panel Solar

fabricante. La corriente del diodo está denida por la ecuación 4.3; y como se observa, por análisis
circuital esta depende de la corriente (I ) y el voltaje (V ) de salida.

   
q
ID = IS exp (V + IRS ) − 1 (4.3)
aKT NS

Con q la carga elemental, K la constante de Boltzmann, NS es el número de celdas por módulo,


a es la constante ideal del diodo y IS es la corriente de saturación del mismo; esta última está dada
por la siguiente expresión [26]:

 3   
Tn qEg 1 1
IS = I0 exp − (4.4)
T aK Tn T

Donde Eg es el bandgab de energía del semiconductor usado en la celda a la temperatura nominal,


y I0 es la corriente inversa de saturación, cuyo cálculo se realiza por la ecuación 4.5.

ISC + KIsc (T − Tn )
I0 = h i (4.5)
q
exp aKT NS (VOC + KV oc (T − Tn )) − 1

Con VOC el voltaje de circuito abierto y KV oc el coeciente de temperatura para este voltaje.

Los valores de las diferentes constantes se pueden obtener mediante la hoja de datos del panel
solar, otros pueden ser encontrados con base al material de fabricación del módulo. Por ejemplo, la
constante ideal del diodo a depende del semiconductor usado, y los valores más comunes se relacio-
nan en la gura 4.2.

Sin embargo, los valores de las resistencias del modelo no son dados por los fabricantes, y por
lo tanto deben ser calculados. Para el cálculo, lo primero que es posible hacer, es establecer una
relación entre los valores de las resistencias. Esto se logra forzando que el valor de máxima potencia
del modelo (Pmdl ) sea igual al valor de máxima potencia reportado por el fabricante (Pm ), es decir:

Pmdl = V I (4.6)
     
q(Vm + Im RS ) Vm + Im RS
Pm = Vm Ipv − I0 exp −1 − (4.7)
aKT NS Rp
4.2. DISEÑO EN SIMULINK 19

Figura 4.2: Factor a de acuerdo a la tecnología del PV [27]

Despejando para Rp :

V (V + Im RS )
Rp = h  m hm i i (4.8)
Vm Ipv − I0 exp q(VaKT
m +Im RS )
NS − 1 − Pm

La ecuación 4.8 garantiza que para cualquier valor de Rs existe un valor correspondiente de Rp
y la curva de potencia en función de voltaje siempre pasa por el punto de máxima potencia dado
por el fabricante (Vm ,Pm ). Con base en esto, es posible calcular Rs mediante un proceso iterativo, y
por ende obtener también Rp . Dado que la resistencia en serie es muy pequeña (Rs < 1), el proceso
consiste en realizar un barrido para valores de Rs entre 0 y 1Ω. En cada una de las iteraciones
se determina la mayor potencia extraída. Con esto es posible gracar el valor de máxima potencia
del modelo Pmdl en función de Rs , y el valor de la resistencia en serie seleccionado es aquel para
el cual la Pmdl coincida con la Pm , esto se logra precisamente en el mínimo de la gráca obtenida [26].

4.2. Diseño en Simulink


En el presente estudio, el modelo del panel se realiza en MatLab/Simulink. Para modelar éste
lo primero que se debe hacer es inicializar las constantes dadas por el fabricante, esto es, ISC , VOC ,
Im , Vm , Pm , NS , KIsc , KV oc , Gn , Tn . Además, en la hoja de datos se especica el semiconductor
con el cual está fabricado el módulo, por lo cual es posible conocer la constante del diodo a y el
bandgab de energía Eg para este material a la temperatura nominal Tn . Así mismo, se inicializan las
constantes universales, éstas son: la constante de Boltzmann K = 1,3806503 ∗ 10−23 J/K y la carga
del electrón q = 1,60217646 ∗ 10−19 C . Por otra parte, también se debe especicar la temperatura de
trabajo
2
(T [K]) y la radiación incidente (G[W/m ]).

A continuación, es posible calcular la corriente de saturación inversa I0 , la corriente de saturación


IS y la corriente ideal del panel IP V con los parámetros dados y mediante las ecuaciones (4.5, 4.4
y 4.2) respectivamente. Estos cálculos se pueden realizar mediante bloques en Simulink, como se
20 CAPÍTULO 4. METODOLOGÍA

Figura 4.3: Cálculo de I0 en Simulink

Figura 4.4: Cálculo de Is en Simulink

ilustra en la gura 4.3, 4.4 y 4.5. A diferencia de las corrientes anteriores, la corriente del diodo ID
depende del voltaje y de la corriente de salida del panel en cada momento, como se muestra en la
ecuación 4.3; por esto en la gura 4.6, donde se muestra su cálculo, se evidencia los indicadores [I]
y [V ] que producen la retroalimentación.

En la gura 4.8 se ilustra el circuito/modelo usado para caracterizar el panel, donde por cues-
tiones de simplicidad la fuente de corriente y el diodo se han simplicado en una fuente de corriente
controlada, cuyo valor es la corriente de modelo Imod , y su sencillo cálculo en bloques se puede ver
en la gura 4.7. En adición, a la salida del módulo se conecta una fuente de voltaje, la cual ja el
punto de operación (diferencia de potencial) del panel. Esta fuente genera una señal en forma de
rampa, con el objetivo de hacer un barrido sobre todos los posibles valores de voltaje de operación
4.2. DISEÑO EN SIMULINK 21

Figura 4.5: Cálculo de Ipv en Simulink

Figura 4.6: Cálculo de ID en Simulink

Figura 4.7: Cálculo de Imod en Simulink

del panel, los cuales se comprenden entre cero voltios (0V ) y el voltaje de circuito abierto (VOC ).
Los indicadores de voltaje y corriente a la salida son los que permiten la retroalimentación, como
se mencionó anteriormente, para el cálculo de la corriente de diodo; ésta debe calcularse en cada
iteración de la simulación.

Por otra parte, los valores de corrientes I0 , IS y IP V son constantes para unas condiciones de
radiación y temperatura jas, luego se puedrían calcular con las ecuaciones antes de simular el mó-
dulo fotovoltaico e ingresarlos como parámetros jos. De esta forma se optimizaría la simulación,
puesto que no se estaría calculando estos valores en cada iteración. Sin embargo, para simular el
comportamiento bajo condiciones cambiantes de radiación y temperatura, es necesario realizar todos
los cálculos en cada iteración.
22 CAPÍTULO 4. METODOLOGÍA

Figura 4.8: Circuito para caracterización de un módulo fotovoltaico en Simulink

4.3. Cálculo de la Resistencia en Serie y en Paralelo


Como es evidente para hacer una correcta caracterización del módulo fotovoltacio es indispensa-
ble obtener los valores de resistencia en serie y en paralelo (RS y RP ) por lo cual es necesario realizar
el proceso iterativo anteriormente mencionado. La simulación se realiza para valores de temperatura
y de radiación nominal (25C y 1000W/m2 ). En este caso, el cálculo de la corriente de diodo ID ya no
es iterativo, en su defecto, se ja en un valor constante, equivalente al obtenido cuando el voltaje y
la corriente de salida son los del punto de máxima potencia nominal, esto es, Vm y Im (estos valores
se jan en lugar de los indicadores que realizan la retroalimentación en la gura 4.6).

Habiendo hecho las modicaciones en los bloques, el circuito usado para este caso es el mismo
que se muestra en la gura 4.8. Esta simulación se ejecuta varias veces para un rango de valores
de Rs entre 0Ω y 1Ω con pasos sucientemente pequeños (0,001Ω). En cada iteración, a partir de
los valores obtenidos para el voltaje (V ) y la corriente de salida (I ), se calcula los valores de poten-
cia; y de éstos se encuentra el máximo correspondiente. Los valores máximos de potencia en cada
iteración se gracan en funcón del valor de RS correspondiente. Aquel valor de resistencia para el
cual el máximo de potencia es el mínimo entre los demás máximos, es el valor de RS correspondien-
te al módulo; y con este es posible calcular el valor de RP correspondiente a partir de la ecuación 4.8.

4.4. Acoplamiento a un Conversor DC/DC


Para el acoplamiento del panel se hace uso de un conversor elevador DC/DC, en este caso, con
una conguración tipo Boost, como se muestra en la gura 4.9. El objetivo de este tipo de conversor
es que para un rango de voltajes de entrada se mantenga un nivel de voltaje estable en la salida.
Para establecer el valor del condensador solo hay que tener en cuenta que debe ser una capacitancia
relativamente alta (por el nivel de voltaje que se va a manejar). Por otra parte, para el cálculo de
la inductancia se hace uso de una aplicación de Texas Instruments llamada 'Power Stage Designer
Tool'. En esta se selecciona el modelo Boost y se ingresan algunos parámetros como el rango de
4.4. ACOPLAMIENTO A UN CONVERSOR DC/DC 23

Figura 4.9: Diagrama circuital de un Boost DC

voltajes de entrada y el voltaje deseado a la salida, entre otros; con lo cual nalmente se obtiene el
mínimo valor de inductancia adecuado [28].

La escogencia de estos elementos no garantiza el nivel de voltaje a la salida, es importante re-


saltar que esta condición depende directamente del ciclo útil de la señal de PWM, que controla el
encendido y apagado del transistor en paralelo (MOSFET) [28]. Sin embargo, en este proyecto dicha
señal de control no es utilizada para mantener el voltaje a la salida constante. En su lugar, por
medio de esta señal de PWM se controla el punto de operación del módulo fotovoltaico, puesto que
mediante el algoritmo de MPPT se decide el valor de su ciclo útil correspondiente, como se explicará
mas adelante [29].

Continuando, el siguiente paso es conectar el módulo fotovoltaico con el Boost DC, como se
muestra en la gura 4.10 (donde las etapas se han agrupado en subsistemas). Para poder simular la
conexión es importante poner una carga a la salida (durante el presente trabajo solo se usa una carga
netamente resistiva). En adición, como se observa en el diagrama, el módulo MPPT se encuentra
entre el panel y el boost, ya que las decisiones sobre la señal PWM se toman en base a la corriente
o el voltaje (o ambos) de operación del panel [29].

Si se desea obtener un correcto funcionamiento de los algoritmos MPPT es necesario garantizar


un comportamiento homogéneo del boost respecto al ciclo útil (D ). Es decir, que para un voltaje
de entrada constante, el voltaje a la salida del conversor aumenta o disminuye, si y solo si el D
hace lo propio. Con base en lo anterior, los valores de D deben acotarse con un Dmax inferior a 1,
debido a que el comportamiento del boost respecto a D se invierte para valores del ciclo útil supe-
riores a la cota, es decir, el voltaje a la salida aumenta o disminuye, si y solo si el D hace lo contrario.

El valor de Dmax depende directamente de los parámetros de los elementos eléctricos del boost.
Para encontrar su valor se hace uso del circuito de la gura 4.9, se conecta una fuente de voltaje DC
en la entrada y se obtiene el máximo valor de voltaje a la salida para diferentes valores de D entre
24 CAPÍTULO 4. METODOLOGÍA

Figura 4.10: Diagrama de conexión entre el módulo fotovoltaico y el Boost DC

0 y 1. De esta forma es posible gracar el voltaje a la salida en función del ciclo útil; y de dicha
gráca será posible deducir el valor de Dmax , el cual corresponde al mayor voltaje.

Por otra parte, para poder conectar los módulos en paralelo es necesario añadir otro conversor
en serie, puesto que para este tipo de conexión el voltaje de salida debe ser igual aunque los paneles
estén operando en condiciones de radiación y temperatura distintas. En dicho caso, el segundo boost
sí tendría la función de mantener un nivel de voltaje estable; esto es posible realizarlo mediante la
acción de un control PI para determinar la señal de PWM que controle dicho comportamiento. Sin
embargo, la conexión en serie se puede realizar sin necesidad de añadir ninguna etapa extra, como
se muestra en la gura 4.11, donde cada módulo puede ser controlado de manera independiente para
operar en su MPP; con la particularidad que la corriente de salida va a ser igual para todos los
conversores, sin importar las condiciones correspondientes de cada panel.

4.5. Modelo de la Radiación Solar


Para estudiar el comportamiento del sistema bajo condiciones de radiación cambiante, se propo-
ne realizar la simulación respectiva para los cambios en radiación solar en un día normal. Con base
en esto, se hace indispensable estudiar el modelo de radiación solar, con el n de obtener la gráca
de radiación en un día cualquiera del año. Dado que el modelo de radiación solar en la supercie
terrestre depende de diversos factores atenuantes, como lo son la atmósfera, el clima, la humedad,
la contaminación entre otros [30]; dar un modelo exacto es en extremo complicado. Por lo anterior,
el modelo estudiado en el presente trabajo es el caso más sencillo, donde se considera únicamente
la radiación solar directa sin ningún tipo de atenuación y/o reexión por los factores ya mencionados.

Isc , cuyo valor más aceptado en la


El punto de partida de nuestro modelo es la constante solar
2
actualidad es de 1367W/m , el cual ha sido medido por el World Radiation Center (WRC). Esta
constante se dene como la potencia recibida por unidad de área, a la distancia media del sol, en
una supercie ortogonal a la dirección de propagación de la radiación [30].
4.5. MODELO DE LA RADIACIÓN SOLAR 25

Figura 4.11: Diagrama de conexión en serie de tres unidades fotovoltaicas

La distancia de la Tierra al Sol no es constante, esta varía alrededor del 3% cada año, siendo
la más próxima durante el solsticio de invierno (Perihelio) y la más lejana en el solsticio de verano
(Afelio). Debido a lo anterior, la primera corrección que debemos hacer está relacionada con esta
distancia de acuerdo a la época del año. En 1971 se desarrolló una ecuación que permite calcular la
distancia con un error menor al 0,01 %, solo mediante la introducción de un factor de correlación E0
de la excentricidad de la órbita terrestre (ecuación 4.9) [30].

 2
r
E0 =
r0
E0 = 1,000110 + 0,034221cos(Γ) + 0,001280sen(Γ) + 0,000719cos(2Γ) + 0,000077sen(2Γ) (4.9)

En la ecuación 4.9, r y r0 son la distancia Tierra-Sol y la distancia media Tierra-Sol respecti-


vamente. Γ corresponde a un ángulo diario, que debe ser dado en radianes y puede ser calculado
mediante la ecuación 4.10. En esta última ecuación el dn corresponde al número del día Juliano del
año, el cual va desde 1 hasta 365, donde el primero corresponde al 1ro de Enero y el segundo al 31
de Diciembre [30].

2π(dn − 1)
Γ= (4.10)
365

Sabemos que la Tierra gira alrededor de su propio eje, y este eje está inclinado respecto al plano
orbital, alrededor del Sol, un ángulo de 23o 270 , el cual siempre permanece constante. Sin embargo,
26 CAPÍTULO 4. METODOLOGÍA

Figura 4.12: Esfera celeste, movimiento aparente del Sol y variación anual del ángulo de declinación
solar [30].

dado que esta inclinación del eje permanece constante, a medida que la Tierra gira alrededor del Sol,
el ángulo formado por la línea Tierra-Sol (plano orbital) y el plano ecuatorial terrestre varía a lo largo
del año, y se conoce como declinación δ (ver gura 4.12) [30]. Por consiguiente, la declinación va desde
+23o 270 en el solsticio de verano hasta los −23o 270 en el solsticio de invierno, y puede ser calculada
mediante la ecuación 4.11 (el valor que retorna esta dado en radianes) [30]. En consecuencia, la
siguiente corrección que debe realizarse está enmarcada por la declinación.

δ = 0,006918 − 0,399912cos(Γ) + 0,070257sen(Γ) − 0,006758cos(2Γ)

+0,000907sen(2Γ) − 0,002697cos(3Γ) + 0,00148sen(3Γ) (4.11)

Por último, para poder calcular la radiación solar sobre una supercie horizontal terrestre, es
indispensable describir las relaciones trigonométricas entre la posición del Sol en el cielo y las coor-
denadas ecuatoriales en la Tierra. Es asi, que la posición del sol respecto a un observador en algún
punto terrestre, queda descrita por dos coordenadas angulares (ver gura 4.13): el ángulo cenital
(sza) y el ángulo azimutal (ψ ). El primero de ellos es el ángulo formado por la dirección de los rayos
solares y el Cenit del observador. El segundo es el formado por el plano del meridiano del observador
y el círculo que pasa por el Cenit y el Sol [30]. Sin embargo, para el cálculo de la radiación podemos
usar un ángulo horario w, en lugar del azimutal. Este ángulo horario está formado por el meridiano
local y el meridiano solar, respecto al polo Norte celeste (ver gura 4.13); de tal forma que al medio
día w=0 y a partir de este punto aumenta 15 por hora, siendo positivo en la mañana y negativo
por la tarde [30].

Finalmente, para calcular la radiación solar extraterrestre sobre una supercie horizontal cual-
quiera en la tierra, podemos usar la ecuación 4.12. En dicha expresión el coseno del ángulo cenital,
4.6. SELECCIÓN DE LA TÉCNICA MPPT UTILIZADA 27

Figura 4.13: Esfera celestial y coordenadas del Sol relativas a un observador ubicado sobre la Tierra
en el punto O [30].

mediante manipulaciones trigonométricas, se puede expresar en función de la declinación (δ ), la la-


titud (φ) y el ángulo horario (w ) en una locación determinada. Resultando así en la ecuación 4.13,
expresión usada para simular la radiación solar sobre el módulo fotovoltaico.

I0 = Isc E0 cos(sza) (4.12)

I0 = Isc E0 [sen(δ)sen(φ) + cos(δ)cos(φ)cos(w)] (4.13)

En el presente proyecto, para obtener la radiación rolar directa en un día cualquiera del año, se
diseña una función en MatLab, en la cual se ingresa la latitud del lugar, y la fecha (el día y el mes)
del año, con lo cual la función retorna el vector con los valores de radiación durante dicha jornada.
El código detallado utilizado en esta función se puede observar en el Apéndice A.

4.6. Selección de la técnica MPPT utilizada


En la actualidad existen diversas técnicas de MPPT utilizadas en los arreglos fotovoltaicos para
extraer la mayor potencia del sistema. Es posible utilizar dos tipos de conguraciones. La primera
consiste en un solo algoritmo usando métodos de machine learning para todo el arreglo [12, 13],
28 CAPÍTULO 4. METODOLOGÍA

Figura 4.14: Características principales de las diferentes técnicas MPPT [21]

y éste conectarlo a un boost DC/DC. La segunda consiste en descentralizar el MMPT realizando


un seguimiento local a cada panel de manera independiente, y cada uno conectado a un conversor.
En cualquier caso, los controladores pueden usar únicamente una técnica, o conmutar entre varios
algoritmos de acuerdo a las condiciones del sistema [19].

Entre los algoritmos más comunes encontramos el de Perturbar y Observar, Conductancia In-
cremental, Barrido de Corriente, Voltaje Constante y Control Deslizante. Se han hecho diferentes
estudios de aplicación de estos algoritmos, y algunos los comparan entre ellos mediante diferentes
características como: Dependencia del arreglo fotovoltaico, Implementación análoga o digital, velo-
cidad de convergencia, entre otros, como se lista en la gura 4.14 [20, 21].

Para la elección de una técnica MPPT se hace uso de la información recopilada y las especica-
ciones del sistema en el cual se va implementar. Con base en esto, los algoritmos más opcionados
serían el de Perturbar y Observar, Conductancia Incremental o Barrido de corriente. Los principales
criterios que se deben tener al momento de seleccionar una técnica son la implementación, la canti-
dad y complejidad de los sensores involucrados, los costos y las aplicaciones.

Con base en esto, todas las técnicas seleccionadas requieren sensar corriente y voltaje. Sin embar-
go, la primera técnica que se descarta es la de barrido de corriente debido a que depende directamente
del arreglo fotovoltaico y su implementación es más compleja que las demás. Por otra parte, además
de tener una convergencia lenta, la duración del barrido (50 ms aproximadamente) representa pér-
didas en la potencia disponible [21].

Por lo anterior, una de las técnicas más usadas actualmente es la Perturbar y Observar (P&O),
4.6. SELECCIÓN DE LA TÉCNICA MPPT UTILIZADA 29

Figura 4.15: Curva característica de potencia en función del voltaje para un módulo fotovoltaico.

la cual no depende del arreglo, puede alcanzar el verdadero punto de máxima potencia (MPP), ser
implementada análoga o digitalmente con diferentes velocidades de convergencia y con baja comple-
jidad. Sin embargo, este método presenta dos inconvenientes: El primero, consiste en que a pesar de
alcanzar el MPP no es posible mantener este punto de operación, y por lo general oscila alrededor de
dicho punto. El segundo, es que el método puede fallar bajo condiciones atmosféricas que cambian
muy rápido [20, 21].

Finalmente, se decide seleccionar la técnica de Conductancia Incremental, ya que esta soluciona


los problemas del método P&O. Con la única limitación de que solo puede ser implementada de
manera digital, aunque esto no es mayor inconveniente en la actualidad. Con este método es posible
alcanzar el MPP y mantenerse en dicho estado de manera permanente hasta que las condiciones
ambientales produzcan un cambio en la operación de los módulos, ocasionando una respuesta por
parte del algoritmo. Es así, que incluso bajo cambios abruptos en la irradiación por sombras parcia-
les o algún otro cambio atmosférico, el algoritmo es capaz de responder ecazmente y volver a jar
el MPP sin riesgo de fallo [20, 21]. Esta técnica tiene dos desventajas: La primera, igual para los
otros métodos, es que necesita un sensor de corriente y esto eleva considerablemente los costos, más
aún en una metodología descentralizada como la propuesta. Y segundo, que aunque tiene diferentes
velocidades de convergencia, entre mayor sea ésta, más probable es que no se pueda ubicar el MPP
de manera permanente, sino que oscile alrededor del mismo como se explica a continuación.

4.6.1. Algoritmo de Conductancia Incremental

Con base en la curva características de potencia en función de voltaje para un módulo fotovoltaico
(gura 4.15), en el punto de máxima potencia se satisface que:
30 CAPÍTULO 4. METODOLOGÍA

dP
=0 (4.14)
dV

Y dado que P =VI

d
(V ∗ I) = 0
dV
dI
I +V =0
dV
dI I
=− (4.15)
dV V

Luego en el MPP se debe cumplir que la tasa de cambio en la conductancia de salida sea igual
al negativo de la conductancia instantánea. La acción de este método se ejecuta a través del ci-
clo útil (D) de una señal PWM que controla el Boost DC/DC. Y para determinar los cambios en
dicha señal la técnica se fundamenta en el algoritmo cuyo diagrama de ujo se ilustra en la gura 4.16.

Como se puede observar, el algoritmo evalúa si el punto de operación se encuentra en el MPP,


antes de éste o después, respecto al valor del voltaje. Cuando se encuentra en el punto de potencia
máxima, el algoritmo mantiene constante el ciclo útil de la señal PWM. Si se encuentra antes, es
necesario incrementar el voltaje referencia (voltaje de operación) y esto se logra disminuyendo el
valor de D. Por el contrario, si el punto de operación esta después se debe disminuir el voltaje de
referencia, por lo cual se incrementa el valor de D.

La magnitud del cambio o paso del ciclo útil se decide arbitrariamente, y es este valor el responsa-
ble de sus dos posible comportamientos. Primero, si el aumento es grande, el tiempo de convergencia
es rápido, pero muy probablemente no alcance el MPP exacto sino que oscile alrededor de éste. Se-
gundo, si el aumento es sucientemente pequeño, es más probable posicionar el MPP. Sin embargo,
tarda más tiempo en converger a este punto; pero aun así este tiempo es del orden de los milisegundos.

Para las simulaciones en Simulink, el algoritmo de conductancia incremental se implementa como


seudocódigo. En la gura 4.10 se puede observar que, para la conexión del sistema de un módulo
fotovoltaico, se conecta un subsistema de MPPT. El diagrama de bloques interno de este último
se puede observar en la gura 4.17. Las entradas del subsistema son el voltaje y la corriente de
operación del panel solar. Por medio de memorias se almacenan los datos inmediatamente anteriores
como un valor inicial, para así en la siguiente iteración poder calcular los cambios en el voltaje y en
la corriente de operación, y por consiguiente, el cambio en la conductancia.

Estos cálculos, junto con el proceso de decisión sobre el ciclo útil, se realizan con un código
programado en el bloque IncCond (para ver el seudocódigo utilizado remítase al Apéndice B ). Este
bloque entrega el nuevo valor de D, el cual entra al módulo generador de la señal PWM. El generador
produce la señal de control requerida, con el valor de D entregado y a una frecuencia que se debe
especicar en su conguración.
4.7. MÓDULO MPPT DE CONDUCTANCIA INCREMENTAL EN VHDL 31

Figura 4.16: Algoritmo de Conductancia Incremental [21].

Figura 4.17: Diagrama de conexiones internas para el bloque del subsistema MPPT

4.7. Módulo MPPT de Conductancia Incremental en VHDL


Para una futura implementación física del sistema fotovoltaico, es necesario programar el módulo
MPPT, que incluye el algoritmo de Conductancia Incremental y el generador de la señal PWM, sobre
32 CAPÍTULO 4. METODOLOGÍA

Figura 4.18: Módulo MPPT sintetizado en VHDL

un dispositivo programable, como por ejemplo, una FPGA (Field Programmable Gate Array). En
este caso, el diseño y simulación pueden realizarse en VDHL (Lenguaje de descripción de hardware),
como se explica a continuación.

Debido a que VHDL es un lenguaje de programación de más bajo nivel, la descripción del al-
goritmo debe ser más detallada. Por lo cual no es posible implementar el módulo mediante un
seudocódigo, como sí lo es en Simulink. En su lugar, es necesario diseñar un modelo de bloques que
cumpla con la funcionalidad del algoritmo. Esto únicamente a partir de bloques aritméticos, como
de suma, resta, multiplicación y división; bloques lógicos de comparación, como mayor que o menor
que; multiplexores y registros para controlar el ujo de los datos.

En la gura 4.18 se evidencia el módulo MPPT resultante, que al igual que su diseño en Simulink,
solo tiene dos entradas y una salida; además de las señales de entrada necesarias de reloj (clk ) y de
reset (rst). Las dos entradas corresponden al voltaje (V ) y a la corriente (I ) de operación del panel.
Sin embargo, estas no son señales análogas, sino digitales, en este caso, de 8 bits cada una; por lo
cual antes de conectar el módulo, es necesario que las señales de las magnitudes sensadas pasen a
través de un conversor Análogo/Digital (ADC) de 8 bits. Por otra parte, la salida corresponde a
la señal digital de control PWM, la cual debe conectarse directamente al MOSFET del boost DC/DC.

En la gura 4.19 se puede observar el diagrama de bloques internos del módulo MPPT (gura
4.18). Como es evidente, existen 5 bloques internos, new_clock , delay , input, inc_cond y pwm. A
continuación, se describe a grandes rasgos el diseño y el funcionamiento de cada uno de ellos; para
un mayor entendimiento, el código completo en VHDL usado para el diseño detallado de cada uno
de los bloques puede verse en el Apéndice C.

El bloque new_clock , como su nombre lo dice, se encarga de generar una nueva señal de reloj,
con un periodo que es múltiplo entero del periodo de la señal de reloj. Esta nueva señal se utiliza
para sincronizar el ujo de datos entre los demás bloques. Por esto ingresa en los bloques delay y
input; el primero de ellos, como su nombre lo indica, se encarga de retrasar las señales I y V; por lo
cual se compone esencialmente de un registro, que se actualiza con el anco de subida de la nueva
señal de reloj.

Los valores retrasados de corriente y voltaje (I0 y V0 ) ingresan al bloque input, al igual que sus
valores actuales I y V, y la señal de ciclo útil D0 . Este bloque cumple igualmente una función de
delay, luego se compone esencialmente de un registro, que se actualiza con el anco de subida de la
4.7. MÓDULO MPPT DE CONDUCTANCIA INCREMENTAL EN VHDL 33

Figura 4.19: Diagrama de bloques interno del módulo MPPT sintetizado en VHDL

nueva señal de reloj (el periodo de esta señal puede entenderse como el periodo de sensado, tiempo
en el cual está disponible un nuevo valor de I y V ). Su objetivo principal es sincronizar los datos
que ingresan al bloque inc_cond, y así evitar que se produzcan errores debido a la carrera de los
datos. El periodo de la nueva señal de reloj, al ser un múltiplo del periodo de la señal clk , garantiza
que el dato del ciclo útil entregado por el bloque inc_cond sea estable.

El bloque pwm se encarga de generar la señal de control PWM con base en el valor de la señal de
ciclo útil recibida. Esta última señal no es más que un valor entero, el cual corresponde a la cantidad
de ciclos de la señal clk (múltiplo entero del periodo de esta señal) durante el cual la señal PWM se
encuentra en alto (1). Es así, que el periodo de la señal PWM debe denirse como un múltiplo entero
del periodo de la señal de reloj. Este valor, como el valor del periodo de la nueva señal de reloj y la
magnitud del cambio del ciclo útil dD que se realiza en el bloque inc_cond, pueden modicarse con
facilidad, puesto que son variables genéricas del módulo en general.

En la gura 4.20 se observa el modulo inc_cond, al igual que en su modelo en Simulink, tiene
como entradas los valores de voltaje y corriente de operación del panel, actuales (I y V) y pasados
(I0 y V0 ); y como salida el valor del ciclo útil para la señal PWM durante el siguiente periodo de
sensado. Debido a su extensión, el diagrama de bloques internos para este módulo no se lista en esta
sección, pero puede verse en el Apéndice C.
34 CAPÍTULO 4. METODOLOGÍA

Figura 4.20: Módulo del algoritmo de Conductancia Incremental sintetizado en VHDL

El diseño interno de módulo del algoritmo de Conductancia Incremental se compone de: 4 bloques
sumadores, sum1 y sum2 ∆V y corriente ∆I respectivamente;
que calculan el cambio en voltaje
sum3 que calcula la diferencia entre el valor de ciclo útil actual D0 y el máximo permitido Dmax ;
y sum4 que le suma a D0 el cambio correspondiente −dD , +dD o 0. 2 bloques divisores, division1
y division2 que calculan la conductancia instantánea (C = I/V ) y el cambio en la conductancia
(∆C = ∆I/∆V ) respectivamente. 6 bloques comparadores, greater _equal1 que evalúa que D0 se
encuentre en el rango permitido; equal1 y equal2 que evalúan si ∆V y ∆I son iguales a 0 respecti-
vamente; greater1 que evalúa si ∆I > 0; equal3 y greater2 que evalúan si ∆C = −C y ∆C > −C
respectivamente.

Las salidas de los 6 bloques comparadores, son señales binarias de 1 solo bit. Todas ellas ingresan
a un bloque selector (selective1) donde con base en sus valores, se selecciona una de 3 opciones de
salida −dD, +dD o 0. Cada respuesta de los comparadores hace referencia a qué camino seguir en
los nodos de decisión del algoritmo de Conductancia Incremental (ver gura 4.16), y así es posible
determinar la señal de salida de este bloque; que permite aumentar, disminuir, o mantener constante
el valor del ciclo útil. La salida de este bloque va al sum4, y la salida de este sumador es la respuesta
del módulo inc_cond.
Capítulo 5

Resultados y Análisis

5.1. Caracterización del Panel KC200GT


Para ejemplicar el proceso de modelado, y estudiar el comportamiento del módulo fotovoltaico
bajo diferentes condiciones de temperatura y radiación incidente, se caracteriza el panel KYOCE-
RA KC200GT, cuya hoja de datos se consigue fácilmente en la web (ver gura 5.1). En esta se
listan los diferentes parámetros constantes mencionados anteriormente y necesarios para el modelo;
además, se especica que el módulo está fabricado de Silicio policristalino, por lo cual la constante
del diodo es a = 1,3 y el bandgab de energía para este material a una temperatura Tn = 25C es
Eg = 1,12eV [26]. El rango de voltaje de operación del panel es de 0V a 32,9V (voltaje de circuito
abierto), estos corresponden al valor inicial y nal, respectivamente, de la fuente en forma de rampa
conectada a la salida del módulo (ver gura 4.8).

Como se enunció en la metodología, en primer lugar se realiza las iteraciones pertinentes para
el cálculo de las resistencias características del panel. En la gura 5.2 se muestra la gráca de los
máximos de potencia Pmax RS . El mínimo de esta gráca
en función de los valores de resistencia
se sitúa en una potencia de 200,0094W para un valor de RS = 0,2280Ω, luego este es el valor de
la resistencia en serie de nuestro modelo y de forma correspondiente el valor de la resistencia en
paralelo, calculado por la ecuación 4.8, resulta ser RP = 551,1567Ω.

Con los valores de las resistencias el modelo del módulo fotovoltaico se completa, y es posible
realizar las simulaciones pertinentes para caracterizar su comportamiento. Dado que su operación
principalmente depende de dos parámetros externos, la temperatura y la radiación incidente, se
realizan dos tipos de simulación. En la primera de ellas se ja una temperatura de operación igual
a la temperatura nominal (25C ), y se varía la radiación incidente en valores de 400, 600, 800 y
1000W/m2 . En la segunda se ja la radiación incidente en un valor igual a la radiación nominal
2
(1000W/m ), y se varía la temperatura de operación en valores de 25, 40, 55 y 70o C .

Con cada simulación se obtiene los valores de voltaje y corriente correspondientes a la salida del
módulo. Gracando dicha corriente en función del voltaje (gura 5.3 y 5.4) se obtienen las curvas
características de operación de un panel solar. En la gura 5.3 se evidencia que, manteniendo la
temperatura constante, a medida que aumenta la radiación incidente aumenta la corriente de salida
del módulo fotovoltaico. Esto es el comportamiento esperado en base al efecto fotoeléctrico, si hay

35
36 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.1: Valores constantes dados por el fabricante [31]

Figura 5.2: Máximo de potencia Pmax en función de los valores de resistencia RS

mayor radiación, mayor es el número de fotones incidentes y por ende mayor el número de electrones
libres que van a circular. Por otra parte en la gura 5.4 se evidencia que, manteniendo la radia-
ción incidente constante, a medida que aumenta la temperatura de operación disminuye el rango de
voltaje de operación del módulo fotovoltaico, sin presentar cambios signicativos en los niveles de
corriente dentro del rango operativo.

Con los valores de voltaje y corriente obtenidos mediante la simulaciñ es posible calcular la po-
tencia entregada por el módulo en cada punto (voltaje) de operación. Gracando dicha potencia en
función del voltaje (gura 5.5 y 5.6) se obtienen las curvas de potencia extraída de un panel solar.
En la gura 5.5 se evidencia que, manteniendo la temperatura constante, a medida que aumenta la
radiación incidente aumenta la potencia que entrega el módulo fotovoltaico. Esto es energéticamen-
5.1. CARACTERIZACIÓN DEL PANEL KC200GT 37

Figura 5.3: Corriente I en función del voltaje V a la salida del módulo para para diferentes valores
de G con T constante

Figura 5.4: Corriente I en función del voltaje V a la salida del módulo para para diferentes valores
de T con G constante

te el comportamiento esperado, si hay mayor radiación, mayor es la energía incidente y por ende
mayor debe ser la energía extraída. Por otra parte en la gura 5.6 se evidencia que, manteniendo
la radiación incidente constante, a medida que aumenta la temperatura de operación, disminuye la
38 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.5: Potencia P en función del voltaje V entregada por el módulo para para diferentes valores
de G con T constante

Figura 5.6: Potencia P en función del voltaje V entregada por el módulo para para diferentes valores
de T con G constante

potencia que entrega el módulo fotovoltaico al igual que su rango de voltajes de operación.

Observando la gura 5.5, puede llegarse a la conclusión errónea de que los cambio de radiación
5.2. CARACTERIZACIÓN DEL BOOST DC/DC 39

incidente no afectan el punto de máxima potencia y por ende no es necesario un algoritmo MPPT en
tales condiciones. Sin embargo, este comportamiento es válido solo bajo una temperatura de opera-
ción constante; y en la realidad, cambios en la radiación incidente implican directamente cambios en
la temperatura de operación de los paneles solares. En conclusión, las guras 5.5 y 5.6 son evidencia
de que las variaciones en la temperatura y la radiación incidente, ocasionan cambios en la magnitud
de la máxima potencia entregada por el panel, así como un desplazamiento del MPP respecto al
voltaje de operación.

5.2. Caracterización del Boost DC/DC


Para establecer los parámetros del Boost se tuvieron en cuenta dos factores. Primero, el voltaje
a la salida idealmente se decidió establecer en 34V o inferior. Y segundo, el voltaje mínimo a la
entrada debe ser 7V ; esto debido a que en la realidad los componentes eléctricos no son ideales y
la etapa solo puede amplicar hasta 5 veces su valor en la entrada. De esta manera, el rango de
voltajes en la entrada es de 7V hasta 32,9V (Voltaje de circuito abierto del panel KC200GT). Estos
valores se introducen en el software 'Power Stage Designer Tool'junto con el rizado en la corriente
en 5 %, la frecuencia de conmutación en 100kHz y la caída de voltaje en el diodo en 1V , por ser
un diodo de potencia. El programa nos entrega como resultado un valor mínimo sugerido de 0,2mH
para la inductancia; sin embargo, en las simulaciones realizadas se opta por un valor de 2mH para
que el comportamiento sea más estable. La capacitancia, como debe ser de un valor alto, se asume
de 2000µF .

Con el modelo del Boost completo se puede simular el comportamiento del mismo. Para esto, lo
primero que se debe hacer es conectar una fuente de voltaje DC en la entrada del circuito corres-
pondiente (ver gura 4.9) y así mismo, se debe poner una carga en la salida. Para este proyecto, la
fuente conectada es de 24V oltios, y la carga es puramente resistiva con un valor de 5,6Ω. En adición,
como se menciona en la metodología, es indispensable determinar el rango de valores de ciclo útil
(D ), para el cual el conversor presenta un comportamiento homogéneo. Debido a esto, se realiza la
simulación para un barrido de valores del ciclo útil del PWM, que va desde 0 hasta 1, aumentando
en pasos de 0,01, con lo cual se obtiene la gura 5.7.

En la gura 5.7 se observa el voltaje a la salida del boost en función del D de la señal de control
PWM. En dicha gráca se ilustra que el comportamiento del conversor no es homogéneo para todos
los valores de D. En consecuencia, es indispensable tener en cuenta esta restricción en el diseño del
algoritmo de conductancia incremental, puesto que los valores del D deben estar entre 0 y el Dmax ,
que en este caso resulta ser de 0,84. Con base en esto, el algoritmo MPPT implementado, en el
presente proyecto, tiene como restricción un valor del ciclo útil máximo en 0,8.

5.3. Simulación de un módulo PV con algoritmo de Conductancia


Incremental
Después de caracterizar el panel y el conversor, es posible pasar a estudiar el funcionamiento
del algoritmo MPPT de Conductancia Incremental. Para esto se corre la simulación del sistema con
40 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.7: Voltaje de salida del Boost DC/DC para los diferentes valor de ciclo útil; con una fuente
de 24V en la entrada y una carga de 5,6Ω.

un solo módulo fotovoltaico (ver gura 4.10) y una carga netamente resistiva con un valor de 5,6Ω.
En primera instancia, se ja la radiación incidente en un valor igual al nominal (1000W/m ), y la
2

temperatura de operación también en su valor nominal (25


o C ). Con estos valores se pueden obtener

los datos de Voltaje y Corriente en función del tiempo, tanto a la salida del panel como sobre la carga.

En la gura 4.17 se observa un switch manual, el cual permite seleccionar que la simulación
corra con el algoritmo MPPT, o corra con un valor de ciclo útil (D ) constante, que para el presente
proyecto siempre es de 0,5. Lo anterior con el n de evaluar comparativamente el funcionamien-
to y la efectividad del algoritmo seleccionado. En este orden de ideas, en primer lugar se graca
comparativamente el voltaje de operación del panel, para cuando opera el MPPT de Conductancia
Incremental y para cuando no lo hace (ver gura 5.8).

En la gráca de la gura 5.8, se puede observar que el sistema sin acción del algoritmo no presenta
un voltaje de operación estable, puesto que oscila entre 3V y 15V . Sin embargo, cuando se conecta el
algoritmo MPPT, el voltaje de operación se ve forzado a un valor de 26V aproximadamente, el cual
corresponde al punto de máxima potencia (ver gura 4.15). De igual forma, se graca de manera
comparativa el voltaje sobre la carga, para cuando el algoritmo opera y para cuando no lo hace (ver
gura 5.9). En esta gráca, los voltajes son amplicados por acción del conversor y a su vez son
más estables (presentan menos oscilación); cuando se acciona el MPPT el voltaje sobre la carga es
aproximadamente 33V .

El mismo análisis comparativo es posible hacerlo para las potencias. En la gráca de la gura
5.10 se ilustra la potencia extraída del módulo fotovoltaico con la acción y sin la acción del algoritmo.
5.3. SIMULACIÓN DE UN MÓDULO PV CON ALGORITMO DE CONDUCTANCIA INCREMENTAL41

Figura 5.8: Voltaje de operación de un módulo fotovoltaico, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal

Figura 5.9: Voltaje sobre una carga resistiva de 5,6Ω, con y sin la acción del algoritmo de Conduc-
tancia Incremental, en condiciones de Radiación y Temperatura nominal
42 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.10: Potencia extraída de un módulo fotovoltaico, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal

En el primer caso, claramente el módulo opera en su MPP, ya que la potencia extraída es de 200W ;
lo cual es el valor máximo para las condiciones de T y G nominal. En el segundo caso, debido a las
oscilaciones en el voltaje de operación, la potencia también presenta grandes oscilaciones entre 30W
y 120W . De igual manera, en la gura 5.11 se graca la potencia entregada a la carga en los dos
casos de estudio; donde nuevamente la acción del boost disminuye las oscilaciones, especialmente
cuando no actúa el algoritmo MPPT. Es remarcable la diferencia en la potencia extraída del mó-
dulo fotovoltaico, ya que para este caso, el algoritmo de Conductancia Incremental permite obtener
aproximadamente un 300 % más de potencia.

En la gura 5.12 se graca la potencia extraída del panel junto a la potencia entregada a la carga,
para el caso en el que el algoritmo MPPT está operando. En esta curva se resaltan dos caracterís-
ticas: La primera es que en los componentes del conversor existe una evidente pérdida de potencia,
puesto que del panel se extraen 200W y a la carga llegan un poco más de 190W . Esta disminución
es importante tenerla en cuenta la momento de diseñar una red fotovoltaica; sin embargo, la perdida
de potencia no es signicativa (menos del 5 %) respecto a la ganada por la acción del algoritmo
de Conductancia Incremental. La segunda característica, es que la acción del boost representa un
retraso temporal, por lo cual el tiempo de convergencia aumenta signicativamente.

Otra característica importante del algoritmo es el rápido cambio del ciclo útil. En la gura 5.13
se evidencia la evolución temporal de este parámetro, el cual inicialmente se ja en 0,5 y con pasos
de 0,0001 converge rápidamente al valor adecuado para jar el punto de operación en el MPP, que
en este caso particular resulta ser aproximadamente 0,2. Como se explicaba en la metodología, si se
quiere obtener un menor tiempo de convergencia, se debe aumentar el paso; sin embargo, es evidente
5.4. SIMULACIÓN CON ALGORITMO MPPT BAJO CAMBIOS DE RADIACIÓN SOLAR 43

Figura 5.11: Potencia entregada a una carga resistiva de 5,6Ω, con y sin la acción del algoritmo de
Conductancia Incremental, en condiciones de Radiación y Temperatura nominal

que esto resultará en una mayor oscilación alrededor del valor de D propio del MPP. Por el con-
trario, si lo que se desea es disminuir las oscilaciones de D presentes en la gráca de la gura 5.13,
una disminución en el paso es lo indicado, aunque el tiempo de convergencia aumentará conside-
rablemente; y por consiguiente la respuesta a los cambios en las variables ambientales será mas lenta.

La simulación de este sistema con un solo módulo fotovoltaico se realiza para diferentes valores
de radiación y temperatura, además de los nominales, como se muestra en la gura 5.14. En dicha
gura se graca la potencia entregada a la carga para T = 25o C y G = 1000W/m2 , para T = 40o C y
G= 1000W/m2 y para T = 25o C y G= 900W/m2 . En todos los casos, el valor de potencia obtenido
corresponde al MPP correspondiente (comparar con las guras 5.5 y 5.6), aunque se encuentra dis-
minuido por las pérdidas en el conversor. Todo lo anterior es evidencia del correcto funcionamiento
del algoritmo MPPT de Conductancia Incremental.

5.4. Simulación con algoritmo MPPT bajo cambios de radiación


solar
Para estudiar el comportamiento del sistema con solo un módulo fotovoltaico, pero bajo una
radiación solar cambiante de un día normal, se simula el sistema de la gura 4.10, con la variante
de que en la entrada de la radiación G, se va ingresar sistemáticamente los valores de radiación
directa típica de un día 10 de Julio en la ciudad de Bogotá, Colombia (ver gura 5.15). Los valores
de radiación son calculados mediante la función programada en MatLab (ver Apéndice A), donde se
44 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.12: Potencia extraída de un módulo fotovoltaico y potencia entregada a una carga resistiva
de 5,6Ω, bajo la acción del algoritmo de Conductancia Incremental, en condiciones de Radiación y
Temperatura nominal

Figura 5.13: Convergencia del ciclo útil D bajo la acción del algoritmo de Conductancia Incremental,
con un paso de 0,0001 y en condiciones de Radiación y Temperatura nominal
5.4. SIMULACIÓN CON ALGORITMO MPPT BAJO CAMBIOS DE RADIACIÓN SOLAR 45

Figura 5.14: Potencia entregada a una carga resistiva de 5,6Ω, bajo la acción del algoritmo de
Conductancia Incremental, en tres diferentes condiciones de Radiación y Temperatura

o
ingresa la latitud de Bogotá en grados (4,5989 ), el mes (07) y el día (10), para así obtener la curva
de la gura 5.15.

En la gura 5.15, la curva de radiación corresponde para el intervalo entre las 6 : 00am y las
6 : 00pm; sin embargo, esto no es del todo cierto y es necesario realizar un ajuste horario que de-
pende de la locación escogida. Este ajuste no se realiza en el presente estudio, y se deja para un
futuro trabajo; de esta forma, todas las grácas presentadas se relacionan virtualmente entre las
6 : 00am 6 : 00pm. En adición, para
y las esta simulación se mantuvo la temperatura constante en
su valor
o
nominal (25 C ). Es claro que en un día normal, la temperatura de operación del módulo
varía conforme la radiación cambia, y también lo hace debido a diferentes factores ambientales. Por
esto, determinar un modelo para la variación de temperatura implica un alto nivel de complejidad,
y se sale del alcance de este proyecto.

En la gura 5.16 se evidencia la evolución temporal del ciclo útil, el cual inicialmente se ja
en 0,5 y en pasos de 0,0001 intenta converger a cada nuevo MPP que surge a medida que cambia
la radiación. Aunque se observa un comportamiento cambiante del ciclo útil, que es evidencia de
que el algoritmo está operando, ésta no es la respuesta adecuada. La inconsistencia es debida a que
los cambios en la radiación son introducidos cada 100µs (situación poco realista) y el algoritmo
tarda en converger alrededor de 25ms (ver gura 5.13) para cada nueva condición. Para un trabajo
futuro, la solución a este problema es introducir los cambios de radiación en un intervalo de tiempo
mayor (más realista), y a su vez aumentar el paso del ciclo útil en el algoritmo; esto inevitablemente
implicará un tiempo, cuantiosamente mayor, de compilación y simulación del modelo.
46 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.15: Curva de radiación directa típica de un día 10 de Julio en la ciudad de Bogotá, Colombia.

Figura 5.16: Convergencia del ciclo útil D bajo la acción del algoritmo de Conductancia Incremental,
con un paso de 0,0001 y en condiciones de Temperatura nominal y Radiación cambiante durante un
día 10 de Julio en la ciudad de Bogotá, Colombia.

A pesar de la falencia en los resultados de la simulación, el comportamiento en rasgos generales


5.4. SIMULACIÓN CON ALGORITMO MPPT BAJO CAMBIOS DE RADIACIÓN SOLAR 47

Figura 5.17: Voltaje de operación del panel y voltaje sobre una carga resistiva de 5,6Ω, con y sin
la acción del algoritmo de Conductancia Incremental, en condiciones de Temperatura nominal y
Radiación cambiante durante un día 10 de Julio en la ciudad de Bogotá, Colombia.

es correcto. Con los datos de voltaje obtenidos en la simulación se realiza la gura 5.17, donde se
gracan la evolución en el tiempo del voltaje de operación del panel y el voltaje sobre la carga resis-
tiva de 5,6Ω, tanto en acción del algoritmo de Conductancia Incremental, como en ausencia de éste
(un valor de D constante). En dicha gráca se evidencia que cuando actúa el algoritmo de MPPT,
el voltaje de operación del panel es forzado a valores alrededor de 26V aproximadamente, lo cual
corresponde a los puntos de máxima potencia (ver gura 5.5). En adición, el voltaje sobre la carga
cambia permanentemente con la radiación, esto debido a que el boost es usado para la operación del
MPPT y no para mantener el voltaje constante; en consecuencia, si se requiere realizar una cone-
xión en paralelo es indispensable agregar otro boost en cascada para cada módulo, y así asegurar un
voltaje constante a la salida (sobre la carga). Por otra parte, el comportamiento del voltaje cuando
no actúa el algoritmo es igual al descrito en la sección anterior; se presentan fuertes oscilaciones en
el voltaje de operación, las cuales son atenuadas por el boost en el voltaje sobre la carga.

Con los datos de voltaje y corriente se calcula la potencia en diferentes partes del modelo y se
gracan en la gura 5.18. En dicha gura, se evidencian las grácas de la potencia extraída del panel
y la potencia entregada a la carga en las dos situaciones: cuando actúa el algoritmo MPPT y cuando
no. Cuando no actúa el panel la potencia extraída del panel oscila drásticamente; sin embargo, la
potencia entregada a la carga es más estable, ya que no oscila tanto, y su máximo valor (al medio
día) es alrededor de 100W . Por otra parte, cuando se conecta el algoritmo de Conductancia Incre-
mental la potencia extraída del panel es máxima; como es de esperarse, esta aumenta conforme la
radiación hace lo mismo. Si se observa detalladamente la gura 5.18, cuando la radiación alcanza su
valor nominal, aproximadamente a las 9 : 30am (ver gura 5.15), la potencia extraída del panel en
48 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.18: Potencia extraída del panel y potencia entregada a una carga resistiva de 5,6Ω, con y
sin la acción del algoritmo de Conductancia Incremental, en condiciones de Temperatura nominal y
Radiación cambiante durante un día 10 de Julio en la ciudad de Bogotá, Colombia.

ese momento coincide con los 200W especicados por el fabricante. Finalmente, las pérdidas en el
boost cuando actúa el MPPT, no superan los 10W .

5.5. Simulación de una red de 3 módulos PV en serie con el algo-


ritmo MPPT
El siguiente paso en el presente estudio consisten en estudiar la simulación de una red de módulos
fotovoltaicos, con el algoritmo de Conductancia Incremental descentralizado, es decir, un módulo
MPPT para cada panel. Siendo este el objetivo, el caso más general a simular, sería idealmente una
conexión mixta; donde las conexiones en serie se pueden realizar sin mayor inconveniente, y para las
conexiones en paralelo, como ya se ha mencionado, es necesario agregar un boost adicional en cas-
cada para cada módulo que se encargue de regular el voltaje. Para estos nuevos bloques es necesario
incluir un controlador PI y por ende, realizar su respectiva sintonización. En el presente proyecto no
se alcanza a estudiar una conexión mixta, o paralela; estas quedan como tareas pendientes para un
trabajo futuro. El estudio actual tan solo se limita a una conexión en serie de tres módulos, cada
uno con su respectivo algoritmo MPPT.

El sistema simulado es el que se presenta en la gura 4.11 con una carga netamente resistiva de
52Ω, donde todos los paneles se jan en una temperatura de operación igual a la nominal (25
o C ).
2
En el primero de ellos se establece una radiación solar igual a la nominal (1000W/m ); en el segundo
2 2
una radiación de 800W/m y por último, en el tercero la radiación solar se ja en 600W/m . En la
5.5. SIMULACIÓN DE UNA RED DE 3 MÓDULOS PV EN SERIE CON EL ALGORITMO MPPT49

Figura 5.19: Convergencia de los valores de ciclo útil D bajo la acción del algoritmo de Conductancia
Incremental descentralizo, con un paso de 0,0001, en una red de 3 paneles en serie

gura 5.19 se observa la evolución temporal del ciclo útil de las señales de control PWM del boost de
cada módulo. De esta gura se pueden resaltar 2 características importantes. En primer lugar, entre
menor sea la radiación incidente sobre un módulo respectivo, el valor de D correspondiente converge
con mayor rapidez. Y en segundo lugar, al comparar el valor de D al que converge el primer módulo
(línea azul) con el valor nal D en la gráca de la gura 5.13, encontramos que no son similares a
pesar de que, el módulo fotovoltaico correspondiente, en ambos casos esté operando bajo las misma
condiciones de temperatura y radiación.

Esta divergencia es debida a que en la conexión serie la corriente a la salida del bus (corrien-
te sobre la carga) debe ser igual para todos los módulos, que para el presente caso en particular
es de aproximadamente 3A, como se observa en la gura 5.20. En consecuencia, la única variable
independiente que determina la cantidad de potencia extraída es el voltaje. Lo cual ocasiona que
el comportamiento de cada módulo, sea diferente de su comportamiento característico cuando se
encuentra aislado. Por otra parte, dado que es una conexión en serie, el voltaje sobre la carga es la
suma de los voltajes a la salida de cada boost. En nuestro sistema de análisis resulta ser de 155V
aproximadamente, como se puede observar en la gura 5.21.

Una prueba fehaciente del funcionamiento, del modelo de MPPT descentralizado en la red pro-
puesta, se puede ver la gura 5.22. En esta gura se graca la evolución temporal del voltaje de
operación de cada uno de los módulos fotovoltaicos; y como se observa, los tres valores convergen
a voltajes cercanos a los 26V , donde efectivamente se encuentra los puntos de máxima potencia
según la caracterización del modelo del panel usado (ver gura 5.5). En la gura 5.5 se evidencia
que para una temperatura constante igual a la nominal, los cambios en la radiación no desplazan
50 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.20: Corriente sobre una carga resistiva de 52Ω una red de 3 paneles en serie, bajo la acción
del algoritmo de Conductancia Incremental descentralizo

Figura 5.21: Voltaje sobre una carga resistiva de 52Ω una red de 3 paneles en serie, bajo la acción
del algoritmo de Conductancia Incremental descentralizo

signicativamente el valor del voltaje correspondiente al MPP. De esta forma en todos los casos el
5.5. SIMULACIÓN DE UNA RED DE 3 MÓDULOS PV EN SERIE CON EL ALGORITMO MPPT51

Figura 5.22: Voltajes de operación de 3 paneles en serie, en una red bajo la acción del algoritmo de
Conductancia Incremental descentralizo

voltaje de operación es similar; y esto se evidencia en la gura 5.22, donde a pesar de converger a
valores próximos, es posible diferenciar levemente cada una de las grácas.

Para raticar el correcto funcionamiento del algoritmo de Conductancia Incremental descentra-


lizado, se graca la evolución en el tiempo de la potencia extraída en cada uno de los paneles solares
(ver gura 5.23). Si se compara la gura 5.23 con la gura 5.5, es fácil notar que de cada uno de
los módulos se extrae la mayor cantidad de potencia posible, según los valores de temperatura y
radiación en los que operan respectivamente. Para nalizar el análisis, se graca la potencia total
extraída de los paneles en la gura 5.24, que por principio de superposición se puede obtener su-
mando los valores de potencia extraída de cada módulo. En esta misma gura se graca la potencia
total suministrada a la carga, la cual es menor a la potencia extraída de los paneles, esto debido a
las perdidas en los conversores. Estas pérdidas para la red estudiada en particular son de 13,32W ,
lo que equivale a un 3% aproximadamente.

Si se observa con detalle las Figuras 5.22 y 5.23, se puede notar que entre menor sea el valor de
radiación incidente (para una temperatura de operación constante), mayor será el tiempo de conver-
gencia del módulo al MPP (menor rapidez). Este comportamiento es contrario al de convergencia
del ciclo útil, ya descrito anteriormente en esta sección.
52 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.23: Potencia extraída de cada uno de los 3 paneles en serie, en una red bajo la acción del
algoritmo de Conductancia Incremental descentralizo

Figura 5.24: Potencia entregada a una carga resistiva de 52Ω por una red de 3 paneles en serie, bajo
la acción del algoritmo de Conductancia Incremental descentralizo

5.6. Simulación del módulo de MPPT implementado en VHDL


El algoritmo de conductancia incremental implementado en VHDL se simula para vericar su
funcionamiento, para los valores de voltaje (V ) y corriente (I ) de entrada se jan los datos de la
5.6. SIMULACIÓN DEL MÓDULO DE MPPT IMPLEMENTADO EN VHDL 53

Tabla 5.1. En dicha tabla se listan los valores de las diferentes señales/cantidades involucradas en
el proceso de decisión, así como los valores del ciclo útil actual (D0 ) y posterior (D ), estos últimos
están dados en cantidad de ciclos de reloj.

Intervalo V (V ) V 0(V ) I(A) I0 (A) ∆V (V ) ∆I(A) −I/V Ω−1 ∆I/∆V Ω−1 D0 D


1 28 0 8 0 28 8 -0.3 0.3 200 0
2 28 28 8 8 0 0 -0.3 inf 0 0
3 28 28 7 8 0 -1 -0.3 inf 0 200
4 28 28 7 7 0 0 -0.3 inf 200 200
5 28 28 7 7 0 0 -0.3 inf 200 200
6 29 28 6 7 1 -1 -0.2 -1.0 200 400
7 29 29 6 6 0 0 -0.2 inf 400 400
8 29 29 5 6 0 -1 -0.2 inf 400 600
9 29 29 5 5 0 0 -0.2 inf 600 600
10 29 29 6 5 0 1 -0.2 inf 600 400
11 28 29 6 6 -1 0 -0.2 0.0 400 400
12 28 28 7 6 0 1 -0.3 inf 400 200
13 28 28 7 7 0 0 -0.3 inf 200 200
14 28 28 8 7 0 1 -0.3 inf 200 0
15 28 28 8 8 0 0 -0.3 inf 0 0

Tabla 5.1: Datos para simulación de prueba del algoritmo de Conductancia Incremental en VHDL.

En la simulación el periodo de la señal de reloj (clk ) es de 10ns y el periodo de sensado (sen) es


de 30s, esto es cada 30s se toma el dato de corriente y voltaje respectivo. La señal de PWM (sp wm)
para controlar el boost DC se congura a una frecuencia de 100KHz , equivalente a un periodo
de 10s o 1000 ciclos de reloj (de esto que el valor de D se de en unidades de ciclos de reloj). La
simulación correspondiente a los datos listados en la Tabla 5.1 se puede observar en la gura 5.25.
En dicha gráca se evidencia que por cada intervalo de sensado se obtienen 3 ciclos de la señal de
PWM, y los valores de D0 y D están representado por las señales auxd0 y auxd, respectivamente.
Dado el retraso durante el proceso de decisión sobre el cambio en D, la respuesta del algoritmo se
sincroniza con la señal sen y, por ende, el cambio solo se observa en el siguiente ciclo de sensado.

Para la simulación de prueba (gura 5.25) se escogieron valores de I y V tal que fuera posible
evidenciar los tres tipos de respuesta, esto es, donde se mantiene el valor del ciclo útil, donde se
aumenta, y donde se disminuye dicho valor. En la gura 5.25, en el intervalo limitado por el cursor
de la izquierda y el cursor del centro se observa el caso en el cual el valor D se mantiene constante
en 40 %. Justo donde se ubica el marcador izquierdo es el inicio del intervalo 7 (ver valores en la
Tabla 5.1); y en dicho momento, dado que no hay cambio en el voltaje ni en la corriente respecto al
ciclo anterior, la decisión es mantener el valor del ciclo útil constante. Es así que para el siguiente
ciclo de sensado el valor D vuelve a ser 400 ciclos de reloj y se obtienen tres nuevos pulsos en la
señal de PWM durante este tiempo. Comportamiento similar se presenta entre el cursor del centro
y el cursor del extremo derecho, pero en dicho caso para un ciclo útil del 60 %.
54 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

Figura 5.25: Simulación de prueba del algoritmo de Conductancia Incremental en VHDL

Figura 5.26: Simulación del algoritmo de Conductancia Incremental en VHDL para una respuesta
de aumento en el ciclo útil

En la gura 5.26 se observa en mayor detalle el comportamiento del algoritmo para el caso en
que la respuesta es aumentar el ciclo útil. Justo donde se ubica el marcador izquierdo es el inicio
del intervalo 6 (ver valores en la Tabla 5.1); y en este momento, se registra un cambio en el voltaje
y en la corriente respecto al ciclo anterior. Y en este caso, dado que el cambio en la conductancia
es menor que el negativo de la conductancia en dicho momento, la decisión es incrementar el valor
del ciclo útil. Es así que el valor D actual de 20 %, se decide aumentar a un valor de 40 % para
5.6. SIMULACIÓN DEL MÓDULO DE MPPT IMPLEMENTADO EN VHDL 55

Figura 5.27: Simulación del algoritmo de Conductancia Incremental en VHDL para una respuesta
de disminución en el ciclo útil

el siguiente ciclo de sensado. La magnitud del aumento o disminución de D se puede denir en el


algoritmo; para manera ilustrativa en la presente simulación se estableció el paso en un valor de 200
ciclos de reloj (20 %).

Ahora, en la gura 5.27 se observa el comportamiento del algoritmo para el caso en que la res-
puesta es disminuir el ciclo útil. El inicio del intervalo 10 se delimita por el marcador izquierdo (ver
valores en la Tabla 5.1); y en este momento, no se registra un cambio en el voltaje respecto al ciclo
anterior, pero si hay un cambio en la corriente. Y dado que el cambio en la corriente es positivo, la
decisión es disminuir el valor del ciclo útil. Es así que el valor D actual de 60 %, se decide disminuir
a un valor de 40 % para el siguiente ciclo de sensado.
56 CAPÍTULO 5. RESULTADOS Y ANÁLISIS
Conclusiones y Perspectivas

Conclusiones
Con el presente proyecto se logra desarrollar y estudiar un modelo matemático para un módulo
fotovoltaico (panel solar), basado en una fuente de corriente que depende, entre otros, de dos pa-
rámetros ambientales, que son la temperatura y la radiación solar incidente. Mediante este modelo
fue posible caracterizar el panel solar KYOCERA KC200GT, encontrando los valores de resistencia
en serie Rs = 0,2280Ω y la resistencia en paralelo Rp = 551,1567Ω, los cuales no son otorgados por
el fabricante.

Las simulaciones para caracterizar este módulo fotovoltaico muestran que el punto de máxima po-
tencia (MPP), bajo condiciones de temperatura y radiación nominal (25
oC y 1000W/m2 ), se alcanza
cuando el voltaje de operación del panel es aproximadamente 26V . Así mismo, cuando la radiación
cambia, pero se mantiene la temperatura en un valor constante, el voltaje de operación para ubicar
el MPP no varía de manera considerable, es decir, es aproximadamente constante. Caso contrario
sucede cuando se cambia la temperatura, manteniendo la radiación en un valor constante; el voltaje
que posiciona el MPP se desplaza, aumentando si la temperatura disminuye, y disminuyendo en el
caso contrario. Sin embargo, los cambios en radiación por si solos implican cambios en la tempera-
tura; y en consecuencia, el MPP está cambiando de posición, en el plano P −V , de manera constante.

El algoritmo de MPPT seleccionado es el de Conductancia Incremental, debido a que tiene una


mayor rapidez de convergencia, de implementación poco compleja, puede posicionar el verdadero
MPPT, no depende de la conguración del sistema e incluso funciona bajo condiciones climáticas
que cambian rápidamente; lo cual mejora la funcionalidad el algoritmo de Perturbar y Observar,
que es la segunda opción y uno de los más populares. Para implementar este algoritmo, se debe
caracterizar el conversor DC/DC de tipo boost al cual va conectado, es decir, se debe encontrar el
máximo valor de ciclo útil permitido Dmax , que en el presente caso es de 0,84.

Con el modelo y caracterización del panel y del boost terminado, se comprueba el funcionamiento
del algoritmo para diferentes condiciones de temperatura y radiación. En estas pruebas se incluye
una simulación para los cambios de radiación solar directa durante un día normal, donde la curva
de radiación se obtiene mediante el modelo de radiación solar expuesto. También se incluye una
simulación de una red de 3 módulos fotovoltaicos conectados en serie, cada uno operando bajo un
valor de radiación diferente y con su propio módulo de MPPT de Conductancia Incremental, para así
simular el caso de sombras parciales. En todos los casos el algoritmo funciona perfectamente, jan-
do el voltaje de operación en el valor apropiado y así lograr extraer la máxima potencia de cada panel.

57
58 CAPÍTULO 5. RESULTADOS Y ANÁLISIS

El comportamiento de la señal de ciclo útil, que se decide mediante el algoritmo de Conductancia


Incremental, no es el mismo para un módulo que pera bajo iguales condiciones de temperatura y
radiación, de manera individual o en una red de conexión en serie. En ambos casos se logra obtener
la máxima potencia del panel; sin embargo, el valor del ciclo útil es diferente debido a que en la
conexión en serie la corriente a la salida debe ser la misma para todo los conversores, permitiendo
únicamente variaciones en el voltaje para alcanzar el MPP.

Finalmente, se diseña un módulo MPPT en VHDL, el cual se compone de dos bloques princi-
pales, uno con el algoritmo de Conductancia Incremental y otro con el generador de la señal PWM
correspondiente. Se comprueba el funcionamiento del bloque mediante una simulación sencilla con
valores de prueba. Para una implementación física, luego de sintetizar el diseño propuesto se debe
implementar también con conversor Análogo/Digital (ADC), ya que la entrada de Corriente y Vol-
taje del módulo son señales digitales de 8 bits.

Perspectivas
Dentro de las perspectivas de este proyecto se encuentra realizar un diseño más completo de una
red fotovoltaica, es decir, una conexión mixta de paneles solares; para lo cual se debe proceder a im-
plementar el controlador PI para el boost adicional necesario para conectar los módulos en paralelo.
Así mismo, modicar los parámetros de los elementos eléctricos, principalmente en los conversor,
para hacer el modelo más real y obtener datos de mayor precisión respecto a la eciencia y las per-
didas de potencia en los conversores. Esto mediante simulaciones con cargas activas y variables en
el tiempo, no únicamente con cargas constantes y puramente resistivas como se ha hecho hasta ahora.

Además, se plantea complementar el modelo de radiación solar propuesto, agregando la corrección


horaria y sumando la radiación difusa. Así mismo, se deben considerar algunos tipos de atenuaciones
y reexiones ocasionadas por la atmosfera terrestre. En adición, se debe proponer una relación di-
recta, mas no necesariamente completa, entre la temperatura de operación y la radiación incidente.
Todo esto con el n de mejorar la simulación y así complementar el estudio del módulo bajo este
tipo de condiciones, haciéndolo cada vez más semejante al real.

Finalmente, la tarea de mayor importancia es implementar físicamente una red sencilla de módu-
los fotovoltaicos. Esto implica programar el módulo MPPT, diseñado en VHDL, en una FPGA para
cada panel, y vericar que bajo la acción del algoritmo de Conductancia Incremental se logra una la
máxima extracción de potencia. Así mismo, se puede evaluar físicamente el tiempo de convergencia
del algoritmo y las pérdidas de potencia debido a los conversores.
Bibliografía
[1] S. Rolland and G. Glania. Hybrid mini-grids for rural electrication: lessons learned, 2011.

[2] IPSE. Plan energético nacional.

[3] Teodoro Sánchez, Arthur Williams, and Nigel Smith. The critical factors for success of stand-
alone energy schemes. Washington, 2006.

[4] Grégoire Léna. Rural electrication with PV hybrid systems, overview and recommendations
for further deployment, July 2013.

[5] Task 11 PVPS. Social, economic and organizational framework for sustainable operation of PV
hybrid systems within mini-grids, 2011.

[6] B. Ortiz, M. Vetter, S. Gölz, and G. Bopp. Concepts for hybrid PV village grids to make their
operation a local business. Milan, September 2011.

[7] Il-Song Kim. A technique for estimating the state of health of lithium batteries through a
dual-sliding-mode observer. IEEE Transactions on Power Electronics, 25(4):10131022, 2010.

[8] Task 11 PVPS. Overview of supervisory control strategies including a R


MATLAB
R
simulink simulation tool, 2012.

[9] J. Jahn, P. Straub, and M. Vandenbergh. Management strategies and advanced inverter control
in microgrids. Napa, USA, December 2006.

[10] Carl N.M. Ho. Challenges and design considerations of PV inverters in the future smart grids.
In 9th IET International Conference on Advances in Power System Control, Operation and
Management (APSCOM 2012), pages 16, 2012.

[11] Young-Hyok Ji, Doo-Yong Jung, Jun-Gu Kim, Jae-Hyung Kim, Tae-Won Lee, and Chung-Yuen
Won. A real maximum power point tracking method for mismatching compensation in PV array
under partially shaded conditions. IEEE Transactions on Power Electronics, 26(4):10011009,
2011.

[12] A.K. Abdelsalam, A.M. Massoud, S. Ahmed, and P. Enjeti. High-performance adaptive perturb
and observe MPPT technique for photovoltaic-based microgrids. IEEE Transactions on Power
Electronics, 26(4):10101021, 2011.

[13] T. Shimizu, M. Hirakata, T. Kamezawa, and H. Watanabe. Generation control circuit for
photovoltaic modules. IEEE Transactions on Power Electronics, 16(3):293300, 2001.

59
60 BIBLIOGRAFÍA

[14] Mohamed Kherchi and Mourad Haddadi. Design and development of an IV tracer for photo-
voltaic panels characterization. pages 369373, 2013.

[15] E. Moyer. GEOS24705 / solar photovoltaics, May 2011.

[16] INC. KEITHLEY INSTRUMENTS. Electrical characterization of photovoltaic materials and


solar cells with the model 4200-SCS semiconductor characterization system.

[17] S. M Sze and Kwok Kwok , Ng. Physics of semiconductor devices. Wiley-Interscience, Hoboken,
N.J., 2007.

[18] Huai Wang and H. Chung. Study of a new technique to reduce the dc-link capacitor in a power
electronic system by using a series voltage compensator. In 2011 IEEE Energy Conversion
Congress and Exposition (ECCE), pages 40514057, 2011.

[19] Rasoul Rahmani and Mohammadmehdi Seyedmahmoudian. Implementation of fuzzy logic ma-
ximum power point tracking controller for photovoltaic system. 10(3):209218, 2013.

[20] D. P. Hohm and M. E. Ropp. Comparative study of maximum power point tracking algorithms.
Progress in Photovoltaics: Research and Applications, 11(1):4762, 2003.

[21] T. Esram and P.L. Chapman. Comparison of photovoltaic array maximum power point tracking
techniques. IEEE Transactions on Energy Conversion, 22(2):439449, 2007.

[22] Mark Tung Yen-Jung, Patrick Hu Aiguo, and Nair Nirmal-Kumar. Evaluation of micro contro-
ller based maximum power point tracking methods using dSPACE platform. 2006.

[23] Liang-Rui Chen, Chih-Hui Tsai, Yuan-Li Lin, and Yen-Shin Lai. A biological swarm chasing al-
gorithm for tracking the PV maximum power point. IEEE Transactions on Energy Conversion,
25(2):484493, 2010.

[24] Energia solar de colombia.

[25] Sensstech soluciones SAS - energía pura, energía solar.

[26] M.G. Villalva, J.R. Gazoli, and E.R. Filho. Modeling and circuit-based simulation of photovol-
taic arrays. In Power Electronics Conference, 2009. COBEP '09. Brazilian, pages 12441254,
Sept 2009.

[27] H.L. Tsai, C.S. Tu, and Y.J. Su. Development of generalized photovoltaic model using
matlab/simulink. In Proceedings of the World Congress on Engineering and Computer Science
2008, San Francisco, USA, Oct 2008.

[28] Texas Instruments. Understanding boost power stages in switchmode power supplies, March
1999.

[29] T. Noguchi, S. Togashi, and R. Nakamoto. Short-current pulse-based maximum-power-point


tracking method for multiple photovoltaic-and-converter module system. Industrial Electronics,
IEEE Transactions on, 49(1):217223, Feb 2002.

[30] M. Varo Martínez. Modelización de la radiación ultravioleta solar. PhD thesis, Departamento
de Física Aplicada. Escuela Politécnica Superior. Universidad de Córdoba, 2006.
BIBLIOGRAFÍA 61

[31] KYOCERA Corporation. Kc200gt, high eciency multicrystal photovoltaic module, 2008.
62 BIBLIOGRAFÍA
Apéndice A

Seudocódigo para el cálculo de Radiación


Solar
A continuación se encuentra el código de la función en MatLab que calcula la radiación solar
para un día particular, con base en la fecha (día y mes) y en la latitud de la locación.

function [G0] = Parametros\_PV(l, m, d)

if m==1
dn = d;
elseif m==2
dn = 31 + d;
elseif m==3
dn = 59 + d;
elseif m==4
dn = 90 + d;
elseif m==5
dn = 120 + d;
elseif m==6
dn = 151 + d;
elseif m==7
dn = 181 + d;
elseif m==8
dn = 212 + d;
elseif m==9
dn = 243 + d;
elseif m==10
dn = 273 + d;
elseif m==11
dn = 304 + d;
elseif m==12
dn = 334 + d;

63
64 APÉNDICE A. SEUDOCÓDIGO PARA EL CÁLCULO DE RADIACIÓN SOLAR

end

s = (6*3600):1:(18*3600);
w = (90-(15.*(s-6*3600)./3600)).*(pi()/180);

Ics = 1367;
lat = l*(pi()/180);
r = 2*pi()*(dn-1)/365;
E0 = 1.000110 + 0.034221*cos(r) + 0.001280*sin(r) + 0.000719*cos(2*r) + 0.000077*sin(2*r);
dlt = 0.006918 - 0.399912*cos(r)+ 0.070257*sin(r) - 0.006758*cos(2*r) + 0.000907*sin(2*r)
- 0.002697*cos(3*r) + 0.00148*sin(3*r);

G = Ics*E0.*(sin(dlt)*sin(lat)+cos(dlt)*cos(lat).*cos(w));

G0 = zeros(1,length(s));

for i=1:1:length(s)
if G(i)>=0
G0(i)=G(i);
T0(i)=T(i);
else
G0(i)=0;
T0(i)=0;
end
end

end
Apéndice B

Seudocódigo del algoritmo de


Conductancia Incremental
A continuación se encuentra el seudocódigo del algoritmo de Conductancia Incremental progra-
mado en MatLab/Simulink.

function D = IncCond(D0, Vp, Vp0, Ip, Ip0)

dD = 0.0001;
dV = Vp-Vp0;
dI = Ip-Ip0;
C = Ip/Vp;

if (dD<=D0) &&(D0<=0.8)

if dV==0
if dI==0
D=D0;
elseif dI>0
D=D0-dD;
else
D=D0+dD;
end

elseif (dI/dV)==-C
D=D0;

elseif (dI/dV)>-C
D=D0-dD;

else
D=D0+dD;

65
66APÉNDICE B. SEUDOCÓDIGO DEL ALGORITMO DE CONDUCTANCIA INCREMENTAL

end

elseif (D0<dD)
D=dD;

else
D = 0.8;
end

end
Apéndice C

Módulo MPPT en VHDL con algoritmo


de Conductancia Incremental
A continuación se encuentra el código VHDL para los diferentes bloques que componen el módulo
MMPT con el algoritmo de Conductancia Incremental.

C.1. Código para el bloque equal

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity equal is
generic(
sig_width : integer := 11
);
port(
signal in_1 : in std_logic_vector(sig_width-1 downto 0);
signal in_2 : in std_logic_vector(sig_width-1 downto 0);
signal clk : in std_logic;
signal rst : in std_logic;
signal e : out std_logic
);
end equal;

architecture arch_equal of equal is

signal a : std_logic;
signal m_1 : std_logic_vector(sig_width-2 downto 0);
signal m_2 : std_logic_vector(sig_width-2 downto 0);
signal z : std_logic_vector(sig_width-2 downto 0);

67
68APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

begin

z <= (others => '0');


m_1 <= in_1(sig_width-2 downto 0);
m_2 <= in_2(sig_width-2 downto 0);

a <= '1' when (in_1=in_2) else


'1' when (m_1=z and m_2=z) else
'0';

process(clk, rst)
begin
if (rst='1') then
e <= '0';
elsif (clk'event and clk='1') then
e <= a;
end if;
end process;
end arch_equal;

C.2. Código para el bloque greater

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity greater is
generic(
sig_width : integer := 11
);
port(
signal in_1 : in std_logic_vector(sig_width-1 downto 0);
signal in_2 : in std_logic_vector(sig_width-1 downto 0);
signal clk : in std_logic;
signal rst: in std_logic;
signal g : out std_logic
);
end greater;

architecture arch_greater of greater is


C.3. CÓDIGO PARA EL BLOQUE GREAT ER_EQU AL 69

signal a : std_logic;
signal s_1: std_logic;
signal s_2: std_logic;
signal m_1: std_logic_vector(sig_width-2 downto 0);
signal m_2: std_logic_vector(sig_width-2 downto 0);
signal z: std_logic_vector(sig_width-2 downto 0);

begin

s_1 <= in_1(sig_width-1);


s_2 <= in_2(sig_width-1);
z <= (others => '0');
m_1 <= in_1(sig_width-2 downto 0);
m_2 <= in_2(sig_width-2 downto 0);

a <= '1' when (s_1<s_2 and m_2/=z) else


'1' when (s_1='0' and s_2='0' and m_1>m_2) else
'1' when (s_1='1' and s_2='1' and m_1<m_2) else
'0';

process(clk, rst)
begin
if (rst='1') then
g <= '0';
elsif (clk'event and clk='1') then
g <= a;
end if;
end process;

end arch_greater;

C.3. Código para el bloque greater_equal

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity greater_equal is
generic(
sig_width : integer := 11
70APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

);
port (
signal in_1: in std_logic_vector(sig_width-1 downto 0);
signal in_2: in std_logic_vector(sig_width-1 downto 0);
signal clk : in std_logic;
signal rst : in std_logic;
signal ge: out std_logic
);
end greater_equal;

architecture arch_greater_equal of greater_equal is

signal g: std_logic;
signal e: std_logic;
signal a: std_logic;

component greater
generic(
sig_width : integer := 11
);
port(
in_1 : in std_logic_vector(sig_width-1 downto 0);
in_2 : in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
g : out std_logic
);
end component;

component equal
generic(
sig_width : integer := 11
);
port(
in_1 : in std_logic_vector(sig_width-1 downto 0);
in_2 : in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
e : out std_logic
);
end component;

-- Optional embedded configurations


-- pragma synthesis_off
FOR ALL : greater USE ENTITY work.greater;
C.3. CÓDIGO PARA EL BLOQUE GREAT ER_EQU AL 71

FOR ALL : equal USE ENTITY work.equal;


-- pragma synthesis_on

begin

-- Instance port mappings.


greater1: greater
generic map(
sig_width => sig_width
)
port map(
in_1 => in_1,
in_2 => in_2,
clk => clk,
rst => rst,
g => g
);

equal1: equal
generic map(
sig_width => sig_width
)
port map(
in_1 => in_1,
in_2 => in_2,
clk => clk,
rst => rst,
e => e
);

a <= g or e;

process(clk, rst)
begin
if (rst='1') then
ge <= '0';
elsif (clk'event and clk='1') then
ge <= a;
end if;
end process;

end arch_greater_equal;
72APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

C.4. Código para el bloque sum

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity sum is
generic(
sig_width: integer := 11
);
port(
signal in_1: in std_logic_vector(sig_width-1 downto 0);
signal in_2: in std_logic_vector(sig_width-1 downto 0);
signal clk: in std_logic;
signal rst: in std_logic;
signal s: out std_logic_vector(sig_width-1 downto 0)
);
end sum;

architecture arch_sum of sum is

signal s_1: std_logic;


signal s_2: std_logic;
signal s_s: std_logic;
signal m_1: std_logic_vector(sig_width-2 downto 0);
signal m_2: std_logic_vector(sig_width-2 downto 0);
signal m_s: std_logic_vector(sig_width-2 downto 0);
signal z: std_logic_vector(sig_width-2 downto 0);

begin

z <= (others => '0');


s_1 <= in_1(sig_width-1);
s_2 <= in_2(sig_width-1);
m_1 <= in_1(sig_width-2 downto 0);
m_2 <= in_2(sig_width-2 downto 0);

m_s <= m_1+m_2 when (s_1=s_2) else


m_1-m_2 when (s_1<s_2 and s_s='0') else
m_2-m_1 when (s_1<s_2 and s_s='1') else
m_2-m_1 when (s_1>s_2 and s_s='0') else
m_1-m_2;

s_s <= '0' when (m_s=z) else


C.5. CÓDIGO PARA EL BLOQUE DIV ISION 73

s_1 when (m_1>=m_2) else


s_2;

process(clk, rst)
begin
if (rst='1') then
s <= (others => '0');
elsif (clk'event and clk='1') then
s <= s_s & m_s;
end if;
end process;

end arch_sum;

C.5. Código para el bloque division

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity division is
generic(
sig_width : integer := 11
);
port(
signal in_1: in std_logic_vector(sig_width-1 downto 0);
signal in_2: in std_logic_vector(sig_width-1 downto 0);
signal clk: in std_logic;
signal rst: in std_logic;
signal div: out std_logic_vector(sig_width-1 downto 0)
);
end division;

architecture arch_division of division is

signal int1: integer;


signal int2: integer;
signal modd: integer;
signal comp: integer;
signal intd: integer;
74APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

signal sig1: std_logic;


signal sig2: std_logic;
signal sigd: std_logic;
signal a: std_logic_vector(sig_width-2 downto 0);

begin

sig1 <= in_1(sig_width-1);


sig2 <= in_2(sig_width-1);

sigd <= '1' when (sig1/=sig2) else


'0';

int1 <= to_integer(unsigned(in_1(sig_width-2 downto 0)));


int2 <= to_integer(unsigned(in_2(sig_width-2 downto 0)));

modd <= int1 MOD int2 when (int2/=0) else


0;
comp <= int2/2;

intd <= int1/int2+1 when (int2/=0 and modd>comp) else


int1/int2 when (int2/=0 and modd<=comp) else
0;

a <= std_logic_vector(to_unsigned(intd,sig_width-1));

process(clk, rst)
begin
if (rst='1') then
div <= (others => '0');
elsif (clk'event and clk='1') then
div <= sigd & a;
end if;
end process;

end arch_division;

C.6. Código para el bloque selective

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
C.6. CÓDIGO PARA EL BLOQUE SELECT IV E 75

entity selective is
generic(
sig_width : integer := 11
);
port (
signal A0: in std_logic;
signal A1: in std_logic;
signal A2: in std_logic;
signal A3: in std_logic;
signal A4: in std_logic;
signal A5: in std_logic;
signal clk: in std_logic;
signal rst: in std_logic;
signal dD: in std_logic_vector(sig_width-1 downto 0);
signal c: in std_logic_vector(sig_width-1 downto 0);
signal D1: out std_logic_vector(sig_width-1 downto 0)
);
end selective;

architecture arch_selective of selective is

signal a: std_logic_vector(sig_width-1 downto 0);


signal b: std_logic_vector(sig_width-1 downto 0);
signal D_i: std_logic_vector(sig_width-1 downto 0);

begin

a <= '1' & dD(sig_width-2 downto 0);


b <= dD;

D_i <= a when (A3='1' and A2='0' and A1='1' and A0='1') else
b when (A3='0' and A2='0' and A1='1' and A0='1') else
a when (A5='1' and A4='0' and A1='0' and A0='1') else
b when (A5='0' and A4='0' and A1='0' and A0='1') else
c when (A0 = '0') else
(others => '0');

process(clk, rst)
begin
if (rst='1') then
D1 <= (others => '0');
elsif (clk'event and clk='1') then
D1 <= D_i;
end if;
76APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

end process;

end arch_selective;

C.7. Código para el bloque inc_cond

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity inc_cond is
generic(
sig_width : integer := 11;
D_max: integer := 800;
D_step: integer := 50
);
port (
signal Vp: in std_logic_vector(sig_width-1 downto 0);
signal Vp0: in std_logic_vector(sig_width-1 downto 0);
signal Ip: in std_logic_vector(sig_width-1 downto 0);
signal Ip0: in std_logic_vector(sig_width-1 downto 0);
signal D0: in std_logic_vector(sig_width-1 downto 0);
signal clk : in std_logic;
signal rst : in std_logic;
signal D: out std_logic_vector(sig_width-1 downto 0)
);
end inc_cond;

architecture arch_inc_cond of inc_cond is

signal M : std_logic_vector(sig_width-1 downto 0);


signal z: std_logic_vector(sig_width-1 downto 0);
signal dM: std_logic_vector(sig_width-1 downto 0);
signal Con: std_logic_vector(sig_width-1 downto 0);
signal dV: std_logic_vector(sig_width-1 downto 0);
signal dI: std_logic_vector(sig_width-1 downto 0);
signal dC: std_logic_vector(sig_width-1 downto 0);
signal D1: std_logic_vector(sig_width-1 downto 0);
signal nV: std_logic_vector(sig_width-1 downto 0);
signal nVp: std_logic_vector(sig_width-1 downto 0);
C.7. CÓDIGO PARA EL BLOQUE IN C _CON D 77

signal nI: std_logic_vector(sig_width-1 downto 0);


signal nIp: std_logic_vector(sig_width-1 downto 0);
signal nC: std_logic_vector(sig_width-1 downto 0);
signal nCon: std_logic_vector(sig_width-1 downto 0);
signal nD0: std_logic_vector(sig_width-1 downto 0);
signal dD: std_logic_vector(sig_width-1 downto 0);
signal A0: std_logic;
signal A1: std_logic;
signal A2: std_logic;
signal A3: std_logic;
signal A4: std_logic;
signal A5: std_logic;
signal s: std_logic;
signal a: std_logic_vector(sig_width-1 downto 0);

component greater
generic(
sig_width : integer := 11
);
port(
in_1 : in std_logic_vector(sig_width-1 downto 0);
in_2 : in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
g : out std_logic
);
end component;

component equal
generic(
sig_width : integer := 11
);
port(
in_1 : in std_logic_vector(sig_width-1 downto 0);
in_2 : in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
e : out std_logic
);
end component;

component greater_equal
generic(
sig_width : integer := 11
);
78APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

port (
in_1: in std_logic_vector(sig_width-1 downto 0);
in_2: in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
ge: out std_logic
);
end component;

component sum
generic(
sig_width: integer:=11
);
port(
in_1: in std_logic_vector(sig_width-1 downto 0);
in_2: in std_logic_vector(sig_width-1 downto 0);
clk: in std_logic;
rst : in std_logic;
s: out std_logic_vector(sig_width-1 downto 0)
);
end component;

component division
generic(
sig_width : integer:= 11
);
port(
in_1: in std_logic_vector(sig_width-1 downto 0);
in_2: in std_logic_vector(sig_width-1 downto 0);
clk: in std_logic;
rst : in std_logic;
div: out std_logic_vector(sig_width-1 downto 0)
);
end component;

component selective
generic(
sig_width : integer := 11
);
port (
A0: in std_logic;
A1: in std_logic;
A2: in std_logic;
A3: in std_logic;
A4: in std_logic;
C.7. CÓDIGO PARA EL BLOQUE IN C _CON D 79

A5: in std_logic;
clk: in std_logic;
rst : in std_logic;
dD: in std_logic_vector(sig_width-1 downto 0);
c: in std_logic_vector(sig_width-1 downto 0);
D1: out std_logic_vector(sig_width-1 downto 0)
);
end component;

-- Optional embedded configurations


-- pragma synthesis_off
FOR ALL : greater USE ENTITY work.greater;
FOR ALL : equal USE ENTITY work.equal;
FOR ALL : greater_equal USE ENTITY work.greater_equal;
FOR ALL : sum USE ENTITY work.sum;
FOR ALL : division USE ENTITY work.division;
FOR ALL : selective USE ENTITY work.selective;
-- pragma synthesis_on

begin

z <= (others => '0');


M <= std_logic_vector(to_unsigned(D_max,sig_width));
nV <= Vp0;
nVp <= '1' & nV(sig_width-2 downto 0);
nI <= Ip0;
nIp <= '1' & nI(sig_width-2 downto 0);
nC <= Con;
nCon <= '1' & nC(sig_width-2 downto 0);
nD0 <= '1' & D0(sig_width-2 downto 0);
dD <= std_logic_vector(to_unsigned(D_step,sig_width));

s <= a(sig_width-1);

-- Instance port mappings.


sum1: sum
generic map(
sig_width => sig_width
)
port map(
in_1 => Vp,
in_2 => nVp,
clk => clk,
rst => rst,
s => dV
80APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

);

sum2: sum
generic map(
sig_width => sig_width
)
port map(
in_1 => Ip,
in_2 => nIp,
clk => clk,
rst => rst,
s => dI
);

sum3: sum
generic map(
sig_width => sig_width
)
port map(
in_1 => M,
in_2 => nD0,
clk => clk,
rst => rst,
s => dM
);

sum4: sum
generic map(
sig_width => sig_width
)
port map(
in_1 => D1,
in_2 => D0,
clk => clk,
rst => rst,
s => a
);

division1: division
generic map(
sig_width => sig_width
)
port map(
in_1 => Ip,
in_2 => Vp,
C.7. CÓDIGO PARA EL BLOQUE IN C _CON D 81

clk => clk,


rst => rst,
div => Con
);

division2: division
generic map(
sig_width => sig_width
)
port map(
in_1 => dI,
in_2 => dV,
clk => clk,
rst => rst,
div => dC
);

greater_equal1: greater_equal
generic map(
sig_width => sig_width
)
port map(
in_1 => dM,
in_2 => z,
clk => clk,
rst => rst,
ge => A0
);

equal1: equal
generic map(
sig_width => sig_width
)
port map(
in_1 => dV,
in_2 => z,
clk => clk,
rst => rst,
e => A1
);

equal2: equal
generic map(
sig_width => sig_width
)
82APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

port map(
in_1 => dI,
in_2 => z,
clk => clk,
rst => rst,
e => A2
);

equal3: equal
generic map(
sig_width => sig_width
)
port map(
in_1 => dC,
in_2 => nCon,
clk => clk,
rst => rst,
e => A4
);

greater1: greater
generic map(
sig_width => sig_width
)
port map(
in_1 => dI,
in_2 => z,
clk => clk,
rst => rst,
g => A3
);

greater2: greater
generic map(
sig_width => sig_width
)
port map(
in_1 => dC,
in_2 => nCon,
clk => clk,
rst => rst,
g => A5
);

selective1: selective
C.8. CÓDIGO PARA EL BLOQUE PWM 83

generic map(
sig_width => sig_width
)
port map(
A0 => A0,
A1 => A1,
A2 => A2,
A3 => A3,
A4 => A4,
A5 => A5,
clk => clk,
rst => rst,
dD => dD,
c => dM,
D1 => D1
);

process(clk, rst)
begin
if (rst='1') then
D <= (others => '0');
elsif (clk'event and clk='1' and s='0') then
D <= a;
end if;
end process;

end arch_inc_cond;

C.8. Código para el bloque pwm

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity pwm is
generic(
T : integer := 1000;
sig_width : integer := 11
); -- definir period T
Port(
84APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

signal Din : in std_logic_vector(sig_width-1 downto 0);


signal clk : in std_logic;
signal rst : in std_logic;
signal S_pwm : out std_logic
);
end pwm;

architecture arch_pwm of pwm is

signal D: integer;
signal Dp : std_logic_vector(sig_width-1 downto 0);

begin

Dp <= Din;
D <= to_integer(unsigned(Dp(sig_width-2 downto 0)));

process (clk, rst)

variable temp : integer range 0 to T:=0;

begin
if (rst='1') then

S_pwm <= '0';


temp := 0;

elsif (clk'EVENT and clk='1') then

temp := temp + 1;

if (temp>(T-1)) then temp := 0;


else
if (temp<=D)then
S_pwm <= '1';
else
S_pwm <= '0';
end if;
end if;
end if;
end process;

end arch_pwm;
C.9. CÓDIGO PARA EL BLOQUE DELAY 85

C.9. Código para el bloque delay

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity delay is
generic(
sig_width : integer := 11
);
port(
signal iVp0: in std_logic_vector(sig_width-1 downto 0);
signal iIp0: in std_logic_vector(sig_width-1 downto 0);
signal h: in std_logic;
signal rst: in std_logic;
signal Vp0: out std_logic_vector(sig_width-1 downto 0);
signal Ip0: out std_logic_vector(sig_width-1 downto 0)
);
end delay;

architecture arch_delay of delay is

begin

process (h, rst)


begin
if (rst='1') then
Vp0 <= (others => '0');
Ip0 <= (others => '0');
elsif (h'event and h='1') then
Vp0 <= iVp0;
Ip0 <= iIp0;
end if;
end process;

end arch_delay;

C.10. Código para el bloque input

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
86APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

entity input is
generic(
sig_width : integer := 11
);
port(
signal iVp: in std_logic_vector(sig_width-1 downto 0);
signal iIp: in std_logic_vector(sig_width-1 downto 0);
signal iVp0: in std_logic_vector(sig_width-1 downto 0);
signal iIp0: in std_logic_vector(sig_width-1 downto 0);
signal iD0: in std_logic_vector(sig_width-1 downto 0);
signal h: in std_logic;
signal rst: in std_logic;
signal Vp: out std_logic_vector(sig_width-1 downto 0);
signal Ip: out std_logic_vector(sig_width-1 downto 0);
signal Vp0: out std_logic_vector(sig_width-1 downto 0);
signal Ip0: out std_logic_vector(sig_width-1 downto 0);
signal D0: out std_logic_vector(sig_width-1 downto 0)
);
end input;

architecture arch_input of input is

begin

process (h, rst)


begin
if (rst='1') then
Vp <= (others => '0');
Ip <= (others => '0');
Vp0 <= (others => '0');
Ip0 <= (others => '0');
D0 <= (others => '0');
elsif (h'event and h='1') then
Vp <= iVp;
Ip <= iIp;
Vp0 <= iVp0;
Ip0 <= iIp0;
D0 <= iD0;
end if;
end process;

end arch_input;
C.11. CÓDIGO PARA EL BLOQUE N EW _CLOCK 87

C.11. Código para el bloque new_clock

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity new_clock is
generic(
Tr : integer := 1000
);
Port(
signal clk : in std_logic;
signal rst : in std_logic;
signal h: out std_logic
);
end new_clock;

architecture arch_new_clock of new_clock is

constant d : integer := Tr/2;

begin

process (clk, rst)

variable temp : integer range 0 to Tr := 0;

begin
if (rst='1') then

h <= '0';
temp := 0;

elsif (clk'event and clk='1') then

temp := temp + 1;

if (temp>(Tr-1)) then temp := 0;


else
if (temp<=d)then
h <= '1';
else
h <= '0';
end if;
end if;
88APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

end if;
end process;

end arch_new_clock;

C.12. Código para el bloque mppt

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity mppt is
generic(
sig_width : integer := 11; -- señales internas min_value := 11
in_sig_width : integer := 8; -- señales de entrada max_value := sig_width-1
T : integer := 1000; -- definir periodo T del pwm/ ciclos de reloj
D_max: integer := 800; -- valor maximo D para pwm/ % de T
D_step: integer := 1; -- cambio en D en cada ciclo de sensado
Tr: integer := 3000 -- periodo de sensado/ ciclos de reloj
);
port(
signal V: in std_logic_vector(in_sig_width-1 downto 0);
signal I: in std_logic_vector(in_sig_width-1 downto 0);
signal clk : in std_logic;
signal rst : in std_logic;
signal S_pwm: out std_logic
);
end mppt;

architecture arch_mppt of mppt is

signal Vp: std_logic_vector(sig_width-1 downto 0);


signal Vp0: std_logic_vector(sig_width-1 downto 0);
signal Ip: std_logic_vector(sig_width-1 downto 0);
signal Ip0: std_logic_vector(sig_width-1 downto 0);
signal D: std_logic_vector(sig_width-1 downto 0);
signal D0: std_logic_vector(sig_width-1 downto 0);

signal iVp: std_logic_vector(sig_width-1 downto 0);


signal iVp0: std_logic_vector(sig_width-1 downto 0);
C.12. CÓDIGO PARA EL BLOQUE MPPT 89

signal iIp: std_logic_vector(sig_width-1 downto 0);


signal iIp0: std_logic_vector(sig_width-1 downto 0);
signal h: std_logic;

component inc_cond
generic(
sig_width : integer := 11;
D_max: integer := 800;
D_step: integer := 50
);
port (
Vp: in std_logic_vector(sig_width-1 downto 0);
Vp0: in std_logic_vector(sig_width-1 downto 0);
Ip: in std_logic_vector(sig_width-1 downto 0);
Ip0: in std_logic_vector(sig_width-1 downto 0);
D0: in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
D: out std_logic_vector(sig_width-1 downto 0)
);
end component;

component pwm
generic(
T : integer := 1000;
sig_width : integer := 11
);
Port(
Din : in std_logic_vector(sig_width-1 downto 0);
clk : in std_logic;
rst : in std_logic;
S_pwm : out std_logic
);
end component;

component delay
generic(
sig_width : integer := 11
);
port(
iVp0: in std_logic_vector(sig_width-1 downto 0);
iIp0: in std_logic_vector(sig_width-1 downto 0);
h: in std_logic;
rst: in std_logic;
Vp0: out std_logic_vector(sig_width-1 downto 0);
90APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

Ip0: out std_logic_vector(sig_width-1 downto 0)


);
end component;

component input
generic(
sig_width : integer := 11
);
port(
iVp: in std_logic_vector(sig_width-1 downto 0);
iIp: in std_logic_vector(sig_width-1 downto 0);
iVp0: in std_logic_vector(sig_width-1 downto 0);
iIp0: in std_logic_vector(sig_width-1 downto 0);
iD0: in std_logic_vector(sig_width-1 downto 0);
h: in std_logic;
rst: in std_logic;
Vp: out std_logic_vector(sig_width-1 downto 0);
Ip: out std_logic_vector(sig_width-1 downto 0);
Vp0: out std_logic_vector(sig_width-1 downto 0);
Ip0: out std_logic_vector(sig_width-1 downto 0);
D0: out std_logic_vector(sig_width-1 downto 0)
);
end component;

component new_clock
generic(
Tr : integer := 1000
);
port(
clk : in std_logic;
rst : in std_logic;
h: out std_logic
);
end component;

-- Optional embedded configurations


-- pragma synthesis_off
FOR ALL : inc_cond USE ENTITY work.inc_cond;
FOR ALL : pwm USE ENTITY work.pwm;
FOR ALL : delay USE ENTITY work.delay;
FOR ALL : input USE ENTITY work.input;
FOR ALL : new_clock USE ENTITY work.new_clock;
-- pragma synthesis_on

begin
C.12. CÓDIGO PARA EL BLOQUE MPPT 91

iVp(in_sig_width-1 downto 0) <= V;


iIp(in_sig_width-1 downto 0) <= I;

iVp(sig_width-1 downto in_sig_width) <= (others => '0');


iIp(sig_width-1 downto in_sig_width) <= (others => '0');

inc_cond1: inc_cond
generic map(
sig_width => sig_width,
D_max => D_max,
D_step => D_step
)
port map(
Vp => Vp,
Vp0 => Vp0,
Ip => Ip,
Ip0 => Ip0,
D0 => D0,
clk => clk,
rst => rst,
D => D
);

pwm1: pwm
generic map(
T => T,
sig_width => sig_width
)
port map(
Din => D0,
clk => clk,
rst => rst,
S_pwm => S_pwm
);

delay1: delay
generic map(
sig_width => sig_width
)
port map(
iVp0 => iVp,
iIp0 => iIp,
h => h,
rst => rst,
92APÉNDICE C. MÓDULO MPPT EN VHDL CON ALGORITMO DE CONDUCTANCIA INCREMENTAL

Vp0 => iVp0,


Ip0 => iIp0
);

input1: input
generic map(
sig_width => sig_width
)
port map(
iVp => iVp,
iIp => iIp,
iVp0 => iVp0,
iIp0 => iIp0,
iD0 => D,
h => h,
rst => rst,
Vp => Vp,
Ip => Ip,
Vp0 => Vp0,
Ip0 => Ip0,
D0 => D0
);

new_clock1: new_clock
generic map(
Tr => Tr
)
port map(
clk => clk,
rst => rst,
h => h
);

end arch_mppt;

C.13. Diagrama de bloques internos para el bloque inc_cond


C.13. DIAGRAMA DE BLOQUES INTERNOS PARA EL BLOQUE IN C _CON D 93

También podría gustarte