Gerson Fabián Cote Flórez
Gerson Fabián Cote Flórez
Gerson Fabián Cote Flórez
Presentado a
INGENIERO ELECTRÓNICO
Por
Asesor: Jose Fernando Jimenez Vargas, Profesor Asociado, Universidad de Los Andes.
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
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
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:
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].
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.
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.
Objetivos
2. Estudiar mediante simulaciones el modelo del panel conectado a un conversor tipo boost
DC/DC.
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.
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.
Mediante análisis circuital es fácil notar que la corriente de salida del módulo I se puede denir
como sigue:
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
17
18 CAPÍTULO 4. METODOLOGÍA
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
3
Tn qEg 1 1
IS = I0 exp − (4.4)
T aK Tn T
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
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].
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
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
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.
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].
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].
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
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.
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)
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.
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].
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.
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].
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
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.
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.
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.17: Diagrama de conexiones internas para el bloque del subsistema MPPT
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
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
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
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.
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.
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
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.
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.
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 .
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.
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
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.
Tabla 5.1: Datos para simulación de prueba del algoritmo de Conductancia Incremental en VHDL.
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.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
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.
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
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.
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.
[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.
[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.
[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.
[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.
[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
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
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
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;
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
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;
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;
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
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;
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;
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;
begin
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
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;
begin
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;
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;
begin
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;
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;
begin
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;
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;
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;
begin
s <= a(sig_width-1);
);
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
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;
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 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)));
begin
if (rst='1') then
temp := temp + 1;
end arch_pwm;
C.9. CÓDIGO PARA EL BLOQUE DELAY 85
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;
begin
end arch_delay;
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;
begin
end arch_input;
C.11. CÓDIGO PARA EL BLOQUE N EW _CLOCK 87
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;
begin
begin
if (rst='1') then
h <= '0';
temp := 0;
temp := temp + 1;
end if;
end process;
end arch_new_clock;
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;
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
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;
begin
C.12. CÓDIGO PARA EL BLOQUE MPPT 91
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
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;