Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MAGALLANES
FACULTAD DE INGENIERIA
DEPARTAMENTO DE
Trabajo
de
Titulacin
presentado
en
de:
Ingeniero
de
Ejecucin
en
AGRADECIMIENTOS
Quiero agradecer sinceramente a todas aquellas personas que me ayudaron directa o
indirectamente en el desarrollo de la presente tesis. De manera especial, agradezco al profesor Dr.
Roberto Crdenas Dobson por su disposicin y gua, igualmente al grupo de alumnos del
laboratorio de Investigacin del Dpto. de Electricidad generacin 2005 2006, conformado por:
Marcelo Prez Uribe, Fernando Vargas Alvarado, Jos Proboste Brquez, Enrique Escobar Prez e
Ivn Andrade Agero por su amistad, cooperacin, tesn y profesionalismo con que enfrentan el
da a da. Tambin, agradecer a mi familia por el apoyo incondicional y la comprensin que me
han entregado en todos estos aos.
De Hugo.
ii
RESUMEN
NDICE GENERAL
1. INTRODUCCIN............................................................................................................2
1.1
INTRODUCCIN GENERAL...............................................................................2
1.2
OBJETIVOS DE LA TESIS..................................................................................3
1.3
ESTRUCTURA DE LA TESIS..............................................................................4
2. CELDAS SOLARES...................................................................................................... 7
2.1
INTRODUCCIN................................................................................................. 7
2.2
PRINCIPIO DE FUNCIONAMIENTO...................................................................8
2.3
CARACTERSTICAS ANALTICAS................................................................... 11
2.4
2.5
APLICACIONES................................................................................................ 17
INTRODUCCIN............................................................................................... 21
3.2
MICROCONTROLADOR PIC18F452................................................................23
3.3
3.4
CONVERSORES DC/DC...................................................................................25
TARJETA LCD...................................................................................................40
3.6
COMUNICACIN SERIAL................................................................................43
3.7
4. ALGORITMOS DE CONTROL....................................................................................48
4.1
INTRODUCCIN...............................................................................................48
4.2
PERTURBACIN Y OBSERVACIN................................................................49
4.3
CONDUCTANCIA INCREMENTAL....................................................................52
4.4
4.4.1 FUZZIFICACIN............................................................................................57
4.4.2 METODO DE INFERENCIA...........................................................................58
4.4.3 DESFUZZIFICACIN.....................................................................................59
5. RESULTADOS EXPERIMENTALES...........................................................................63
5.1
INTRODUCCIN...............................................................................................63
5.2
RESULTADOS EXPERIMENTALES..................................................................63
NDICE DE FIGURAS
sistema fotovoltaico..........................................3
vii
Figura 5-9 Resultado de MPPT utilizando P&O y conversor DC/DC Buck Boost
actuando como conversor elevador de tensin............................................74
Figura 5-10 Resultado de MPPT utilizando Cond Inc y conversor DC/DC Boost con
variacin en la RSI. ........................................................................................ 76
Figura 5-11 Resultado de MPPT utilizando P&O y conversor DC/DC Boost con variacin
en la RSI. ....................................................................................................... 77
Figura 5-12 Resultado de MPPT utilizando lgica difusa y conversor DC/DC Boost con
variacin en la RSI. ........................................................................................ 78
Figura 5-13 Resultado de MPPT utilizando Cond Inc y conversor DC/DC Buck Boost,
actuando como conversor reductor de tensin y con variacin en la RSI. ... 79
Figura 5-14 Resultado de MPPT utilizando P&O y conversor DC/DC Buck Boost,
actuando como conversor reductor de tensin y con variacin en la RSI. ... 80
Figura 5-15 Resultado de MPPT utilizando Cond Inc y conversor DC/DC Buck Boost,
actuando como conversor elevador de tensin y con variacin en la RSI. . . 81
Figura 5-16 Resultado de MPPT utilizando P&O y conversor DC/DC Buck Boost,
actuando como conversor reductor de tensin y con variacin en la RSI. ... 82
CAPTULO PRIMERO
INTRODUCCIN
1. INTRODUCCIN
1.1
INTRODUCCIN GENERAL
En la actualidad, ante la necesidad de contar con nuevas fuentes de energa, se
Este trabajo de tesis fue dirigido por el Dr. Roberto Crdenas Dobson, acadmico
del departamento de Ingeniera Elctrica de la Universidad de Magallanes.
1.2
OBJETIVOS DE LA TESIS
los
Describir
el
software
de
control
implementado
en
lenguaje
C,
del
microcontrolador PIC18F452.
1.3
ESTRUCTURA DE LA TESIS
CAPTULO SEGUNDO
CELDAS SOLARES
2. CELDAS SOLARES
2.1
INTRODUCCIN
Una celda solar es un dispositivo que absorbe luz (energa solar) y la convierte en
energa elctrica. Para convertir la energa del Sol en energa elctrica y poder utilizarla
de la forma ms eficiente y racional posible se disean los sistemas fotovoltaicos. La
celda solar es el elemento que convierte los fotones que proceden del Sol en una
corriente elctrica que circula por un elemento denominado carga. Hoy en da la celda
solar ms comn es un dispositivo de estado slido fabricado con materiales
semiconductores.
El efecto fotovoltaico fue identificado por primera vez en 1839 por Becquerel [1],
quien observ que la tensin que apareca entre dos electrodos inmersos en electrolito
dependa de la intensidad de luz que incidiese sobre ellos. El mismo efecto fue
observado por Adams y Day, en 1879, pero esta vez utilizando un elemento slido: el
Selenio. Sin embargo, la primera celda solar moderna tuvo que esperar a Chapin en
1954. Fue una celda de Silicio y no se dieron muchos detalles de su estructura debido,
probablemente, al temor a que fuese copiada. La motivacin para el estudio y desarrollo
de las celdas solares durante los primeros aos de investigacin fue su aplicacin como
fuente suministradora de energa a los satlites espaciales. Hoy se espera que las
celdas solares y la energa solar fotovoltaica contribuyan de forma importante al
suministro de energa limpia a la sociedad.
2.2
PRINCIPIO DE FUNCIONAMIENTO
Por otra parte, cuando la sustancia difusa capta electrones, los tomos que los
pierden quedan cargados positivamente. En estas zonas predominan las cargas
positivas (huecos) obtenindose un semiconductor del tipo P.
Segn lo expuesto en [2], las cargas mayoritarias en una zona se desplazan hacia
la de baja densidad en la zona opuesta. El desplazamiento de las cargas negativas y
positivas deja a la zona de juntura totalmente libre de cargas. Las zonas adyacentes a
la misma tienen concentraciones de carga minoritarias (cargas negativas en el lado P y
cargas positivas en el lado N). La acumulacin de estas cargas a ambos lados de la
juntura crea una diferencia de potencial que impide la continuacin del desplazamiento
inicial. Por este motivo, la corriente de desplazamiento se anula. Se dice entonces que
la juntura N-P ha alcanzado el estado de equilibrio. Ver figura 2.1.
10
11
2.3
CARACTERSTICAS ANALTICAS
Una celda solar es un dispositivo no lineal [4] al [6], cuya relacin I V esta dada
por la ecuacin (2.1). En ella se puede apreciar la dependencia de una celda solar con
respecto a la temperatura, mientras que en 2.3 la dependencia es del nivel de radiacin
solar. El circuito equivalente de una celda solar, se ilustra en la figura 2.4.
LG
I
sat
sat
q
IR
exp
AKT
qEgo 1
exp
T
Tr
KT r
I or
T 3
) V
IR
S
(V
S
(2-1)
RSH
(2-2)
I
LG
I sc K I (T 25)
(2-3)
100
Donde
I
I
LG
Isat
: Es la carga de un electrn.
: Es la constante de Boltzmanns.
RS
RS
Io
: Es la corriente de saturacin a Tr
Isc
: Es la temperatura de referencia C.
Tr
T
Ego
KI
: Es la radiacin en mW cm
AKT
ln
I I
LG
sat
I sat
(2-4)
Por medio de las ecuaciones 2.1 al 2.3, se pueden obtener las curvas I V
tericas de una celda fotovoltaica. Y por medio del producto de ambas magnitudes, se
obtiene la curva de potencia versus voltaje (P V) de una celda solar. Como la
potencia proporcionada por una nica celda solar es muy baja (del orden de 1 a 2W) las
celdas solares se interconectan formando lo que se conoce como mdulo o panel
fotovoltaico. La figura 2.5a y b muestran
Al momento de conectar una carga del tipo resistiva R a un panel solar. Segn la
ecuacin (2.5), se producir una recta que intercepta la caracterstica I V del panel
solar en un punto, en el cual se define las condiciones de corriente voltaje de
operacin del panel. Ver figura 2.6(a).
1
I V
R
(2-5)
Por otro lado, la carga ms frecuente de un panel solar es una batera, debido a
que las celdas solares encuentran su principal aplicacin en el suministro de energa a
localidades aisladas, llmese un pequeo pueblo (de unas decenas de familia), en la
cual la mayor demanda de energa se da entre las 6 p.m. y las 10 p.m. Lapso que no
coincide con las horas de mayor nivel de radiacin solar incidente, requirindose
almacenar energa.
(a)
(b)
Figura 2-6 Interaccin de un panel fotovoltaico con carga (a) resistiva y (b) galvnica
de 12 V.
Tanto la carga resistiva como la galvnica (batera), generalmente no recibirn la
mxima potencia generada por l o los paneles fotovoltaicos. Esto se debe a que
ser
haber
variaciones climticas que harn del punto (Vop, Iop) un punto en movimiento.
Debido a ello se debe utilizar una estrategia de control para seguir el punto de
mxima potencia y con ello transferir la mxima energa capturada por el panel solar a
la carga. Esto es posible de conseguir mediante la insercin de un conversor DC/DC
como interfaz entre el o los paneles solares y la carga (ver figura 2.7). El mencionado
conversor posee una caracterstica intrnseca asociada a l relacionada con la
capacidad que presentan estos sistemas para reflejar o adaptar la impedancia vista
desde su entrada y la conectada a su salida.
En este sentido, los conversores son similares a los transformadores, cuando son
empleados como adaptadores de impedancia, excepto que en los conversores el
parmetro de adaptacin no es la relacin de espiras entre el primario y el secundario,
sino el ciclo de trabajo, el cual puede ser controlado de manera electrnica [7].
2.5
APLICACIONES
condicionada
por
su
rentabilidad
frente
otras
fuentes
de
energa
convencionales.
ENERGA SOLAR
FOTOVOLTAICA
TELECOMUNICACIONES
ALUMBRADO
AUTNOMO
ELECTRIFICACIN
RURAL
APLICACIONES
ASILADAS DE LA RED
APLICACIONES
AGROGANADERAS
BOMBEOS
SEALIZACIN Y
ALARMA
APLICACIONES
CONECTADAS A LA RED
CENTRALES
FOTOELCTRICAS
INTEGRACIN
EN EDIFICIOS
Viviendas aisladas
Viviendas de fin de semana o de ocupacin temporal
Refugios de montaas
Bombeo de agua
Riego por goteo
Sistemas de ordeo
Sistemas de refrigeracin de leche
2.5.3 ILUMINACIN
2.5.4 TELECOMUNICACIONES
Relojes electrnicos
Calculadoras
Satlites y misiones espaciales
Etc.
CAPTULO TERCERO
SISTEMA EXPERIMENTAL
21
3. SISTEMA EXPERIMENTAL
3.1
INTRODUCCIN
El sistema fotovoltaico planteado, est compuesto por un panel solar fabricado por
ISOFOTN, y cuya mxima potencia extrable es de 106 W. Se utilizan tambin cuatro
bateras de 6V cada una. Las bateras son marca Trojan de ciclo profundo, las cuales
se interconectan entre s para formar un banco de bateras, y este a su vez es la carga
del sistema fotovoltaico. Como interfaz entre el panel solar y la carga se conectar un
conversor DC/DC, primero un conversor Boost y luego un Buck Boost, ambos
diseados e implementados en el desarrollo de esta tesis. Cada conversor cuenta con
una unidad de control, cuyo funcionamiento se basa en
un
microcontrolador
principalmente
para
el
borrado,
lectura
escritura
microcontroladores PIC.
de
3.2
MICROCONTROLADOR PIC18F452
bus
I C de dos hilos y 8 canales con conversin A/D de 10 bits. Para mayores detalles ver
el Apndice C.
3.3
va
3.4
CONVERSORES DC/DC
tON
TS
;0D
1
(3-1)
En la figura 3.4 muestra las formas de onda para este modo de conduccin,
donde la corriente del inductor fluye continuamente iL t 0.
Figura 3-4 Modo de conduccin continua (a) switch encendido; (b) switch apagado
Segn lo expuesto en [8], en estado estacionario la integral del voltaje del
inductor sobre un periodo de switching debe ser cero (ver ecuacin 3.2 y 3.3).
(3-2)
TS
v L dt
0
0
O bien:
(3-3)
Vd t ON Vd VO t OFF
0
TS 1
VO
Vd tOFF 1 D
(3-4)
Pd PO .
Vd I d VO I O
Y de esta forma, basndose en la ecuacin 3.4, se obtiene la ecuacin 3.5
IO
Id
1 D
(3-5)
trae
Figura 3-6 Modo de conduccin continua (a) switch encendido (b) switch apagado
De acuerdo a lo mencionado por [8], en estado estacionario la integral del voltaje
del inductor sobre un periodo de switching debe ser cero (ecuacin 3.6).
Vd DTS VO 1 D TS
0
(3-6)
VO
Vd
D
1
D
(3-7)
30
Vd I d VO I O
Y de esta forma, basndose en la ecuacin 3.7, se obtiene la ecuacin 3.8
IO 1 D
I d D
(3-8)
De las secciones 3.4.1 y 3.4.2, se logr apreciar que las diferencias en las
respuestas entre el conversor DC/DC Boost y el Buck Boost, radican en la variacin
en el ordenamiento de los componentes principales que conforman dichos conversores
(inductancia, condensadores, diodo y transistor). Es por ello que de esta seccin en
adelante, al momento de mencionar un conversor DC/DC, se har referencia tanto a la
topologa elevadora de tensin (Boost), como a la reductora elevadora (Buck - Boost).
fs: 33kHz
2
Potencia mxima (peak) del panel solar: 106 Wp (100 mW / cm , 25 C, A.M 1.5 )
Mximo ripple del voltaje de salida Vc : 5%
Mximo ripple de la corriente de entrada I : 35%
Conversor operando en modo de conduccin continua hasta 0.45A.
31
De acuerdo a lo expuesto por [8] al [11], adems de las ecuaciones (3.4) y (3.5), es
necesario para el diseo de un conversor DC/DC las siguientes ecuaciones.
I L
Vd
(3-9)
fS
L
V
O
(3-10)
IO
fS
C
C 28.41F
32
R
M
5 220
M 21e
I 3
(3-11)
Por otro lado, la medicin de las tensiones se realiz por medio de divisores de
tensin conformado por resistencias, para efecto de disminucin de costos del sistema
fotovoltaico.
de
dispositivos de potencia del conversor. Las seales acondicionadas son las siguientes:
tensin y corriente de entrada proveniente del panel solar
Vd
y Id
y,
tensin y
corriente del banco de batera Vo y Io. Adems, evitan problemas de distorsin de las
seales causadas por el muestreo, lo cual es conocido como aliasing.
A s
1 C
C1
R1
R2
1
s
R1 R2 C1C2 s
(3-12)
Donde:
a1 C C1 R1 R2
b1 C2 R1 R2C1C2
b1
1.0650
1.9365
R1
1M
y R2 1M .
una unin de tipo ptica, lo cual hace que se encuentre aislado elctricamente la
unidad de control con respecto al circuito de potencia. En la figura 3.10 ilustra la forma
de conexin del opto acoplador HCPL 3120.
CC
V V
EE
OL
I
(3-13)
OLPEAK
Donde: V
CC es +15V, VEE es -15V, VOL y IOLPEAK estn dado en la hoja de
caracterstica (HCPL 3120) y tienen el valor de 0.5V y 2.5A, respectivamente.
Reemplazando los valores recin dados, se obtiene la resistencia mnima necesaria
para disminuir las perdidas por efecto de conmutacin del driver. Segn esto, la
resistencia debe ser superior a 12 Ohm.
La tarjeta conversor Boost fue diseada e implementada como parte de esta tesis
para poder alimentar cargas que necesiten de una mayor tensin, de la proporcionada
por el panel solar.
U N I D A D D E C O N T R O L BA S A D O E N U N
P IC 1 8 F 4 5 2
CO NV E R S O R B OOS T
tarjeta conversor
C ON VE R S ORBU C K - BOOST
P W M
U NID AD DE C ON TR OLB AS AD O E N UN
PIC 18F452
CONECTOR BANCO DE
40
3.5
TARJETA LCD
La tarjeta LCD permite realizar una interfaz visual con el usuario. Para ello cuenta
con un mdulo LCD de 2 x 20 (dos filas de veinte caracteres cada una), la cual se
utiliza principalmente para conocer en tiempo real el estado del conversor DC/DC, como
tambin la energa proporcionada a la batera desde el momento en que se energiz la
unidad de control. Adems de lo anterior, el mdulo LCD proporciona al usuario
informacin cada vez que se enva una seal va comunicacin serial, o la finalizacin
de algn proceso como por ejemplo fin de escritura en la eeprom externa. Los
mensajes generados en el mdulo LCD se detallan en el APNDICE A, denominado:
MENSAJES DEL MDULO LCD.
Por otro lado, adems del mdulo LCD, la tarjeta cuenta con tres LEDs que
indican el estado de carga del banco de batera, y con dos switch de los cuales el
primero permite realizar un cambio de pantalla (ver APNDICE A) y el segundo permite
el borrado de la contabilizacin de la energa almacenada en la carga, desde el
momento en que se encendi la unidad.
41
BUS
RS
LED 2
PORT B
LED 1
GND
SWITCH 1
PORT D
TARJETA LCD
MDULO LCD 2 X 20
Encendido
Esperar m s de 15m s
RS R/W D B 7 DB 6 D B 5 DB 4 000011
Esperar m s de 4.1m s
RS R/W D B 7 DB 6 D B 5 DB 4 000011
Esperar m s de 100us
RS R/W D B 7 DB 6 D B 5 DB 4 000011
RS R/W D B 7 DB 6 D B 5 DB 4
0
0
0
0
1
0
0
0
0
0
0
N
0
F
1
X
0
X
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
1/D
0
S
C onfi guracin
Ap agar display
Encender display M odo de
D esplazam iento
F in de la In icia lizacin
N
F
S
1/D
indica un estado de carga deficiente, lo cual indica que la tensin esta por debajo de los
12.4V. La figura 3.17 muestra la tarjeta LCD implementada.
3.6
COMUNICACIN SERIAL
MICROCONTROLADOR PIC18F452
Carcter
P
C
S
L
W
U
Funcin
Habilita el algoritmo perturbacin y observacin
Habilita el algoritmo conductancia incremental
Realiza un reset al contador de energa
Permite la lectura de la EEPROM externa
Permite la escritura de la EEPROM externa
Realiza un reset al microcontrolador
COMPUTADOR
PERSONAL
TX
RX
RX
TX
GND
UNIDAD DE
CONTROL
DEL
CONVERSOR
DC/DC
para
adaptarse a la norma RS 232 (tensiones entre +15 y -15V), es por ello que se hace
necesario el uso de un conversor MAX232 (ver Apndice D) como interfase entre el
microcontrolador PIC18F452 y el PC.
3.7
Clock) que recibe los pulsos generados por el dispositivo maestro (o sea el PIC18F452)
y el otro llamado SDA (Serial Data) que maneja el flujo de datos de forma bidireccional
(entrada / salida).
fue
utilizada
B.
en
esta
tesis
se
encuentra
disponible
en
el
Apndice
CAPTULO CUARTO
ALGORITMOS DE CONTROL
48
4. ALGORITMOS DE CONTROL
4.1
INTRODUCCIN
VOC .
VMP K VOC
0.73
K 0.80
(4-1)
Por otro lado, la referencia [16] indica que la corriente del panel solar en donde
se ubica la mxima potencia foto generada
circuito del panel solar Isc. Este hecho se ilustra en la ecuacin 4.2.
I MP K I
SC
0.92 K
0.96
(4-2)
Ambos mtodos son de simple implementacin [15] y [16], pero necesitan forzar
la potencia a cero durante un pequeo lapso de tiempo para obtener V
OC o I SC ,
disminuyendo de esta forma la energa proporcionada a la carga. De acuerdo a esto, los
algoritmos que proporcionan mejor desempeo (segn lo expuesto en [17] y [18]) y los
cuales han sido implementados en el desarrollo de esta tesis son:
Perturbacin y observacin
Conductancia incremental
Controlador basado en lgica difusa
4.2
PERTURBACIN Y OBSERVACIN
P(k 1) .
anterior
Basndose en la figura 4.1, el panel solar se encontraba originalmente operando en el
punto A de la curva P V, luego se desplaza haca el B. Ahora en el punto B, se
averigua si la potencia actual P(k) , es mayor o igual a la potencia de la
muestra
anterior
P(k 1) . Si se cumple la
de
50
110
100
90
(V(k),P(k))
80
B
(V(k+1),P(k+1))
70
(V(k-1),P(k-1))
60
Potencia (W)
50
40
30
20
10
0
24
10121416182022
Tensin (V)
Figura 4-1 Curva P V bajo seguimiento del MPP con algoritmo P&O
Ahora en el punto C, se examina nuevamente si la potencia actual (ahora llamada
P(k 1) )) es mayor a la potencia de la muestra
anterior
anterior, la condicin P(k 1) P(k ) es falsa, por ende Vref debe disminuir, esto slo si
V (k 1) V (k ) . En caso contrario, Vref debe aumentar.
Vp* Vref
+
P+I
Circuito de
disparo
Conversor
DC/DC
Panel
Solar
Vp
generada (seccin 3.3.4), para luego acondicionar las seales a valores entre 0 y 5V,
los cuales llegan finalmente al conversor A/D del microcontrolador PIC18F452. El PIC
51
Pk V k I
(4-3)
Calcular potencia
P(k)= V(k) x I(k)
NO
SI
SINONOSI
Vref = Vref - C
Vref = Vref + C
Vref = Vref - C
Vref = Vref + C
Retornar
4.3
CONDUCTANCIA INCREMENTAL
dP d (V I )
dI
I V dV 0
dV dV
(4-4)
I dI
V
dV
(4-5)
dI
dV
V
dI
dV
dI
dV
dP
(4-6)
dP
0
dV
(4-7)
dP
0
dV
(4-8)
0
dV
V
120
dP/dV = 0
100
Potencia (W)
dP/dV > 0
dP/dV < 0
80
60
40
20
0
0
10
15
20
25
Tensin (V)
Figura 4-4 Curva P V bajo seguimiento del MPP con algoritmo Conductancia
Incremental.
La ecuacin 4.6 se ha repetido de la ecuacin 4.5 por comodidad. Las
ecuaciones 4.6 al 4.8 son utilizadas para determinar la direccin en la cual debe ocurrir
una perturbacin para mover el punto de operacin a las cercanas del punto
de
MPPT
contina operando en este punto hasta existir algn cambio en la corriente medida.
Este cambio en la medicin de corriente indica que ha variado el nivel de radiacin solar
incidente a carga constante [17]. En la figura 2.5.b se muestra, cuando el nivel de
conductancia
incremental. El valor presente y el valor previo de la corriente y voltaje del panel solar
son medidos continuamente por el conversor A/D del microcontrolador PIC18F452. Una
vez en el microcontrolador, los valores de corriente y voltaje son utilizados para calcular
dI y dV . Si dV 0 y dI 0 las condiciones atmosfricas no han cambiado y el MPPT
seguir operado en el MPP. Si dV 0 y dI 0 , entonces la cantidad de radiacin ha
aumentado, aumentando el voltaje donde se halla el MPP. Esto requiere que el MPPT
debe incrementar el voltaje de
referencia
Vref
operando a la izquierda del MPP en la curva P V (Figura 4.4). As, el voltaje Vref
debe ser incrementado para alcanzar al MPP. De manera similar, si dI dV I V ,
entonces dP dV 0 , lo cual indica que el panel solar se encuentra operando a la
derecha del MPP en la curva P V, y por ende el voltaje Vref debe ser reducido para
alcanzar el MPP.
dV = V(k) - V(k-1)
dI = I(k) - I(k-1)
NO
dV = 0
SI
dI / dV = - I / V
dI = 0
NO
NO
dI / dV > - I / V
dI > 0
SI
SI
NO
SI
Vref = Vref - C
Vref = Vref + C
SINO
Vref = Vref + C
Vref = Vref - C
Retornar
4.4
error E(k
)
del
E(k )
dP
dV
(4-9)
P(k ) P(k
1)
V (k ) V (k
1)
Donde P(k )
y
V (k
)
E(k )
Circuito de disparo
A/D
PWM
Base de
Conocimiento
Calcular
E . CE
Controlador
Difuso
RAM
CE
PIC18F452
Microchip
Puerto Serial
Computador Principal
CE (k ) E(k ) E(k 1)
(4-10)
4.4.1 FUZZIFICACIN
E(k
)
u(E)
NB
NM
NS
ZO
PS
PM
PB
Grado
De Pertenencia
(a)
0
-6
u(CE)
-4
NB
-2
NM
NS
ZO
PS
PM
6
PB
(b)
Grado
De Pertenencia
0
-6
u(dD)
-4
NB
-2
NM
NS
ZO
PS
PM
PB
Grado
De Pertenencia
(c)
0
-6
-4
-2
Figura 4-7 Funciones de membresa para (a) entrada E, (b) entrada CE y (c) salida dD
(variacin del ciclo de trabajo).
NB
NM
NS
ZO
PS
PM
PB
NB
NB
NB
NB
NB
NM
NS
ZO
NM
NB
NB
NB
NM
NS
ZO
PS
NS
NB
NB
NM
NS
ZO
PS
PM
ZO
NB
NM
NS
ZO
PS
PM
PB
PS
NM
NS
ZO
PS
PM
PB
PB
PM
NS
ZO
PS
PM
PB
PB
PB
PB
ZO
PS
PM
PB
PB
PB
PB
Si (E es NB) y (CE es NS) entonces (dD es NB) Si (E es ZO) y (CE es ZO) entonces (dD es ZO) Si (E es ZO) y (CE es PB
Sin embargo, la tabla 4-2 proporciona una salida de tipo lingstica y esta debe
ser convertida a un valor concreto con el cual se puede operar y realizar la accin de
control correspondiente, la cual corresponde a una variacin del ciclo de trabajo. A este
proceso de conversin se le conoce como desfuzzificacin.
60
gravedad (COA) [20]. El mtodo del centro de gravedad es el ms utilizado para casos
discretos y esta dado por la ecuacin 4-11.
dD
u dD dD
j
(4-11)
udD
j
j 1
Donde
dicha regla
dD
0 dD
es el grado de cumplimiento de
SE
SCE
ce
CE
SdD
FUZZIFICACIN
TOMA DE
DECISIN
DESFUZZIFICACIN
dddD
61
Por otro lado, la figura 4-9 muestra la superficie que representa la respuesta del
controlador difuso, en la cual se aprecia la no linealidad de este, con respecto a sus
entradas E y CE. La figura 4-9 se ha obtenido utilizando la herramienta Fuzzy Logic
Toolbox, el cual viene incorporado en el software MATLAB 7.0.
CAPTULO QUINTO
RESULTADOS EXPERIMENTALES
63
5. RESULTADOS EXPERIMENTALES
5.1
INTRODUCCIN
5.2
RESULTADOS EXPERIMENTALES
: 21.6 V
: 6.54 A
: 17.4 V
: 106 W
P V . La
DC/DC como resistencias variables, siendo para ello necesario realizar sucesivos
incrementos en los tiempos de encendido del transistor de cada conversor.
R.S.I
mA
Isc
; K 6.54
2
m
(5-1)
W
Donde la constante K se obtiene de los datos proporcionados por el fabricante
del panel solar.
7
6
5
(a)
4
3
948 W / m2
810 W / m2
1
00123456789
10
11
12 13
14
Tensin Panel Solar (V)
15
16
17
18
19
20
21
22
23
24
25
80
70
Potencia Panel Solar (W)
60
76 W @ 948 W / m2
50
(b)
40
30
66 W @ 810 W / m2
20
10
0123456789
0
10
11
12 13
14
Tensin Panel Solar (V)
15
16
17
18
19
20
21
22
23
24
25
( 948 W / m ), alcanzando un valor de 76 W. Por otro lado, la figura 5.1a ilustra el hecho
de que el aumento en el nivel de radiacin solar incidente, influye esencialmente en el
acrecentamiento de la corriente de cortocircuito (de 5.3 A 6.2 A). Adems de la figura
2
5.1 se aprecia que la curva de menor radiacin solar incidente ( 810 W / m ), logra llegar
a un voltaje de 1V cuando hay 5.5A en el panel solar, a diferencia de la curva de
mayor nivel radiacin, en que la mnima tensin es de 2V a los 6.3A. Lo anterior no
tiene como causa el nivel de radiacin solar incidente, sino que la curva de 948 W
/m
fue generada con el conversor DC/DC Boost, mientras que la otra curva (la
de
de radiacin
solar incidente ( 948 W / m ), y cambia la temperatura de 31C 41C.
7
6
5
Corriente Panel Solar (A)
(a)
4
3
31C
2
1
0
41C
0123456789
10
11
12
13
14
15
16
17
18
Tensin Panel Solar (V)
19
20
21
22
23
24
25
80
70
60
50
76 W @ 31C
40
(b)
72 W @ 41C
30
20
10
0123456789
0
10
11
12
13
14
15
16
17
18
Tensin Panel Solar (V)
19
20
21
22
23
24
25
La figura 5.3 entrega la respuesta del seguimiento del punto de mxima potencia
(MPPT) para un sistema basado en un panel solar y utilizando como algoritmo de
control el mtodo conductancia incremental, con una radiacin solar incidente
658
W
de
(a)
MPPT
0510152025
Tensin Panel Solar (V)
(b)
Vpanel
14.5
14.25
14 0
5
Tiempo (Seg)
10
54100
53.590
53
52.5
52
51.5
51
0
34
80
70(c)
60
50
40
10
Ciclo de Trabajo
5
Tiempo (Seg)
Tensin (V)
15
14.75Vref
(a)
20
10
0
MPPT
0510152025
Tensin Panel Solar (V)
Tensin (V)
15
14.8VpanelVref
14.6
(b)
14.4
5 14.2
Tiempo (Seg)
52
51.5
51
50.5Eficiencia del
50
49.5
49
95
90
85
80
75(c)
70
65
10
14
Conversor
Ciclo de Trabajo
5
Tiempo (Seg)
10
Eficiencia Conversor (%)
01234
m .
70
80
60
(a)
20
0
10
12
MPPT
14
16
18
20
2000
4000
Cambio de Error
Error
1500Cambio de Error2000
10000
Error(b)
500-2000
0-4000
-500
01234
5
Tiempo (Seg)
-6000
10
800.865
0.86
70
Ciclo de Trabajo
0.855
60
50
5
Tiempo (Seg)
0.85
10
40
(c)
De la figura 5.5 se puede ver que la mxima potencia foto generada es de 70W,
la cual se consigue a una tensin de 14 V (figura 5.5.a). Las entradas del controlador
(figura 5.5.b) difuso oscilan en torno a cero, tal como se mencion en la seccin 4.4. Por
otra parte, la salida del controlador (ciclo de trabajo) flucta entre los 50% y 60 %.
Finalmente, al igual que con los mtodos P&O y Cond. Inc., el conversor DC/DC Boost
se encuentra operando con una eficiencia de 86%.
Ahora, para el caso del conversor Buck Boost, los algoritmos Cond. Inc. y P&O,
fueron puesto a prueba tanto la propiedad elevadora y reductora de tensin que posee
el conversor Buck Boost.
71
Segn lo anterior, la figura 5.6 y 5.7 muestran el caso del conversor Buck Boost
actuando como conversor DC/DC reductor (Buck), y bajo seguimiento del MPP,
utilizando para ello los algoritmos Cond. Inc. y P&O, respectivamente.
La figura 5.6 entrega la respuesta del seguimiento del punto de mxima potencia
(MPPT) para un sistema basado en un panel solar utilizando el algoritmo Cond. Inc.,
con una radiacin solar incidente de 899
W
que la figura 5.7 entrega la respuesta del MPPT utilizando el algoritmo P&O, para un
nivel de radiacin solar incidente de 899
W
m y una temperatura de 32 C.
80
(a)
40
20
10
15
20
25
MPPT
15
14.75
14.5
14.25
14
13.75
13.5
(b)
Vref
01234
5
Tiempo (Seg)
Vpanel
10
56
95
55.5
90
55
85
54.5
Eficiencia
de
54
53.5
53
0
Ciclo de Trabajo
l Conversor
5
Tiempo (Seg)
80
75
70
65
10
Tensin (V)
60
(c)
80
60
(a)
40
20
0
8
10
12
MPPT
Tensin Panel Solar (V)
14
16
18
20
15
14.75
14.5
14.25
14 0
54.5
54.25
54
53.75
53.5
53.25
53
01234
5
Tiempo (Seg)
10
95
90
85
80(c)
75
70
65
10
Ciclo de Trabajo
5
Tiempo (Seg)
Tensin (V)
Ciclo de Trabajo (%)
(b)
Vref
Vpanel
Por otro lado, se realizan las mismas pruebas con los algoritmos Cond. Inc. y
P&O para el conversor Buck Boost, pero ahora en la modalidad de conversor elevador
(Boost). Los resultados del MPPT utilizando el algoritmo Cond. Inc. y P&O, se ilustran
en la figura 5.8 y 5.9, respectivamente.
La figura 5.8 entrega la respuesta del seguimiento del punto de mxima potencia
(MPPT) utilizando el algoritmo Cond. Inc., con una RSI de 764
W
m y una temperatura
de 31 C. Por otra parte, la figura 5.9 ilustra la respuesta del MPPT utilizando el
algoritmo P&O, para un nivel de RSI de 795 W m
y una temperatura de 31 C.
80
60
(a)
Tensin (V)
40
20
0
16
15.5
15
14.5
14
13.5
13
10
15
Tensin Panel Solar
(V)
MPPT
20
25
(b)
Vpanel
Vref
01234
5
Tiempo (Seg)
10
68.5
90
68.25
85
68
80
Ciclo de Trabajo
67.75
75
67.5
67.250
70
1
5
Tiempo (Seg)
10
68.7595
(c)
65
se confirma en la figura 5.8.b, donde se ilustra que la tensin del panel solar oscila en
torno a la tensin de referencia (14.25V). Por otro lado, el ciclo de trabajo (ver figura
5.8.c) al cual se encuentra operando el conversor Buck Boost, aumento de los 54% a
68%, al cambiar la modalidad de trabajo de reductor a elevador de tensin,
respectivamente. Lo que concierne a la eficiencia del conversor, esta flucta en torno al
85% llegando a un peak de 91 %.
80
60
(a)
40
20
0
0
10
15
MPPT
Tensin Panel
Solar (V)
20
25
15
14.75
(b)
14
0
13.75
Vpanel
Vref
14.25
69.25
69
68.75
68.5
68.25
68
67.75
5
Tiempo (Seg)
95
90
85
Ciclo de Trabajo
01234
5
Tiempo (Seg)
10
Tensin (V)
14.5
80(c)
75
70
65
10
Por otra parte, de la figura 5.9 se observa que al igual que con el mtodo Cond.
Inc., el algoritmo P&O logra situarse en la zona donde se encuentra la mxima
proporcionada por el panel solar (65 W). El MPP se obtiene a una tensin de 14.25
V, lo cual se confirma en la figura 5.9.b, donde la tensin del panel solar oscila
entorno
y 842
W
m , respectivamente.
60
(a)
40
20
0
MPPT
10
12
Tensin Panel Solar (V)
14
16
18
20
18
16
Tensin (V)
14
(b)
Vpanel
12Vref
10012
3
Tiempo (Seg)
3
Tiempo (Seg)
60
50
40(c)
30
012
20
Figura 5-10 a) Curva P-V con MPPT Cond. Inc. y variacin en la RSI.
b) Tensin del panel y tensin de referencia proveniente del algoritmo MPPT
c) Ciclo de trabajo al cual se encuentra operando el conversor DC/DC Boost con
MPPT
De la figura 5.11, se observa el comportamiento transiente para el algoritmo
Cond. Inc. La tensin donde se encuentra la mxima potencia foto generada (la cual
asciende a 65W) es de 15.5V. Por otro lado, el ciclo de trabajo se encuentra entre 25%
y 50% durante la perturbacin, y en este lapso la potencia cae de 65W 8W.
80
Tensin (V)
60
(a)
40
20
0
MPPT
10
15
Tensin Panel Solar (V)
20
25
20
18
16
14
(b)
Vpanel
12
Vref
10
8
012
3
Tiempo (Seg)
3
Tiempo (Seg)
60
50
40(c)
30
012
20
80
60
(a)
40
20
0
MPPT
0
10
15
Tensin Panel Solar (V)
20
25
200
100
-500(b)
Error
Cambio de Error
0
-100
0
3
Tiempo (Seg)
3
Tiempo (Seg)
-1000
Cambio de Error
500
Error
300
-1500
6
60
50
40(c)
30
012
20
De la figura 5.12 se observa una respuesta muy similar a las obtenidas en las
figuras 5.10 y 5.11, y es que el ciclo de trabajo disminuye ante la perturbacin, para
luego nuevamente aumentar y oscilar en torno al ciclo de trabajo ptimo para
suministrar la mxima potencia disponible en ese momento del panel solar. De la figura
5.12 se aprecia tambin, como la seal de error y la del cambio de error fluctan en
torno a cero. Durante la perturbacin el error crece cuantitativamente, forzando al
controlador a aumentar el ciclo de trabajo.
La
mxima
a 26 C y 927W
potencia
proporcionada
por
el
panel
FV
es
de
76W
Ahora, para el caso del conversor Buck Boost, se probaron los algoritmos: P&O
y Cond. Inc., tanto en la modalidad reductora como elevadora de dicho conversor.
m
W
y 683
m , respectivamente.
60
(a)
40
20
0
10 MPPT 12
Tensin Panel Solar (V)
14
16
18
20
18
Tensin (V)
16
(b)
14
Vpanel
12
10
3
Tiempo (Seg)
Vref
55
50
45(c)
40
012
35
3
Tiempo (Seg)
Figura 5-13 a) Curva P-V con MPPT Cond. Inc. y variacin en la RSI.
b) Tensin del panel y tensin de referencia proveniente del algoritmo MPPT
c) Ciclo de trabajo al cual se encuentra operando el conversor DC/DC Buck Boost
con MPPT
De la figura 5.13 se aprecia como la potencia cae de los cerca de 65W 8W, al
momento de producirse la perturbacin. La mxima potencia se encuentra a una
80
tensin de 14.5V. Por otra parte, el ciclo de trabajo desciende durante la perturbacin
de 54% a 40%. El tiempo que dura la perturbacin, es de aproximadamente 1.5 seg.
80
60
(a)
40
20
0
MPPT
10
15
Tensin Panel Solar (V)
20
25
20
17.5
Tensin (V)
15
(b)
Vpanel
12.5
10
0
3
Tiempo (Seg)
Vref
55
50
(c)
45
40
35
0
30
3
Tiempo (Seg)
su
81
m (a 36C)
y
954 W m
(a 36C),
respectivamente.
80
Tensin (V)
60
(a)
40
20
0
10
15
MPPT
Tensin Panel Solar (V)
20
25
20
17.5
15
12.5
10
7.5
5
(b)
Vpanel
Vref
3
Tiempo (Seg)
012
70
65
(c)
60
55
50
0
45
3
Tiempo (Seg)
Figura 5-15 a) Curva P-V con MPPT Cond. Inc. y variacin en la RSI.
b) Tensin del panel y tensin de referencia proveniente del algoritmo MPPT
c) Ciclo de trabajo al cual se encuentra operando el conversor DC/DC Buck Boost
con MPPT.
De la figura 5.15 se observa la cada de la potencia de 60W a 10W durante la
perturbacin. En dicha perturbacin, el ciclo de trabajo cae de 68% a 47%.
80
60
(a)
40
20
0
10 MPPT
15
Tensin Panel Solar (V)
20
25
20
17.5
Tensin (V)
15
(b)
Vpanel
12.5
10
0
3
Tiempo (Seg)
Vref
70
65
(c)
60
550
3
Tiempo (Seg)
58%.
CAPTULO QUINTO
CONCLUSIONES
84
6. CONCLUSIONES
La potencia proporcionada por un panel solar puede ser maximizada utilizando
para ello un sistema de control con seguimiento del punto de mxima potencia, el cual
consiste de un conversor DC/DC como interfase entre el panel solar y la carga, y una
unidad de control, que controla al conversor DC/DC de forma tal de obtener la mxima
energa proporcionada por el panel FV. En el presente trabajo de tesis se han
implementado dos conversores DC/DC: Boost y Buck Boost. Cada conversor cuenta
con una unidad de control, basada en un microcontrolador PIC18F452. A su vez, en el
microcontrolador se han implementado tres algoritmos de MPPT, estos son:
perturbacin y observacin, conductancia incremental y controlador basado en lgica
difusa.
Los resultados experimentales obtenidos en esta tesis muestran las ventajas que
presentan las tcnicas de control clsica y difuso en los sistemas fotovoltaicos. Adems,
se aprecia los beneficios de utilizar un microcontrolador de bajo costo, para
aplicaciones en la cual el tiempo de muestreo no es critico (procesos lentos),
permitiendo tambin realizar de manera simple modificaciones al sistema. Si bien es
cierto, este trabajo se centr en sistemas de carga aislada, ests tcnicas son
aplicables a sistemas hbridos (solar diesel o elico solar diesel), como tambin a
sistemas conectados a la red elctrica, siendo para esto ltimo necesario el uso de un
inversor.
REFERENCIAS BIBLIOGRFICAS
86
REFERENCIAS BIBLIOGRFICAS
[1]
[2]
[3]
[4] Chihchiang Hua, Jongrong Lin and Chihming Shen., IMPLEMENTATION OF A DSPCONTROLLED PHOTOVOLTAIC SYSTEM WITH PEAK POWER TRACKING.
IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS, VOL.
45, NO.1,
FEBRUARY 1998.
[5] E. Koutroulis, K. Kalatzakis and Nicholas C. Voulgaris. DEVELOPMENT OF A
MICROCONTROLLER BASED, PHOTOVOLTAIC MAXIMUM POWER POINT
TRACKING
CONTROL
SYSTEM.
IEEE
TRANSACTIONS
ON
POWER
TECHNIQUES AND
CONTROL OF
DC/DC
CONVERTERS
Miguel
.,
CONVERTER,
APLICATIONS
AND
TEXAS
INSTRUMENTS,
CHAPTER
16.
ACTIVE
FILTER
DESIGN
TECHNIQUES.
[13]
[14]
DATASHEET
PHOTOVOLTAIC
MAXIMUM
POWER
POINT TRACKING
PHOTOVOLTAIC
TRANSACTIONS
ON
AND
INDUSTRIAL
CONVERTER
ELECTRONICS,
MODULE.
VOL.
49,
IEEE
NO.1,
FEBRUARY 2001.
[17] D. P. Hohm and M. E. Ropp., COMPARIVE STUDY OF MAXIMUM POWER
POINT TRACKING ALGORITHMS, June 2002.
[18] Chung Yuen Won, Duk Weon Kim, Sei Chan Kim, Won Sam Kim, and
Hack Sung Kim., A NEW MAXIMUM POWER POINT TRACKER OF
PHOTOVOLTAIC ARRAYS USING FUZZY CONTROLLER. IEEE 1994.
[19]
Tarun
Gupta,
R.
IMPLEMENTATION
R.
Boudreaux,
OF
R.
FUZZY
M.
Nelms
and
CONTROLLER
John
FOR
Y. Hung.,
DC
DC
APNDICES
APNDICE A
MENSAJES GENERADOS EN EL LCD
91
(a)
(b)
(a)
(b)
(c)
(a)
(b)
(c)
(a)
(b)
APNDICE B
CDIGOS DE PROGRAMAS Y LIBRERAS
95
Programa: Cond_inc.c
Este programa es el encargado de realizar el seguimiento del MPP de un panel
solar utilizando el conversor Boost. Para ello realiza los
siguientes
procesos: adquirir datos, crear las interrupciones del timer (cada 10ms) y de
la comunicacin serial, generar la seal de PWM proveniente de un PI para el
conversor DC/DC.
Segn lo solicitado por el usuario, mediante el software de interfaz y la
comunicacin serial, el seguimiento del MPP se puede efectuar con el algoritmo
P&O o Cond Inc. Siendo este ltimo el programado por defecto.
#include <18F452.H>
#device adc=10;
#include <math.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#use rs232 (baud=9600, xmit=PIN_C6 , rcv=PIN_C7)
#include "lcd420b452.c"
#include "2416.c"
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
int16
int16
int16
int16
int16
int16
int16
int16
int16
int32
int32
int16
int32
int32
int16
int16
int16
di;
dv;
vp;
vp_old;
ip;
ip_old;
m1;
m;
x1;
x;
n;
n1;
y1;
y;
p_new;
p_old;
vref;
ibat;
vbat;
o0;
o1;
e;
en;
energy;
fduty;
suma_pot;
dato;
dato1;
dato2;
dato3;
dato4;
dato5;
duty;
i;
ii;
j;
jj;
jjj;
cnta;
cnt_read;
cnta1;
medicion;
duty_per;
int16
int16
int16
int16
int8
char
char
char
char
char
p_i;
p_i_i;
p_o;
p_o_o;
cnt_e;
c;
//
p;
//
r;
//
w;
//
l;
//
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
ENABLE;
clear_energy;
clear_cpu;
w_eeprom;
eeprom;
leer_eeprom;
pp;
cc;
byte
byte
byte
byte
byte
vp_i;
vp_o;
ip_i;
vref_i;
ddd;
float
float
float
float
const
const
const
const
ki
kpr
aa1
aa2
=
=
=
=
0.922799538;
2.884600482;
0.5335;
0.4665;
//
//
//
//
Constante
Constante
Constante
Constante
del
del
del
del
PI
PI
Filtro (10Hz y 10ms)
Filtro (10HZ Y 10ms)
#INT_RDA
void recepcion()
{
char value;
value = getc();
if(value=='p') // Habilita algoritmo P&O
{
ENABLE = FALSE;
pp
= TRUE;
}
if(value=='c')
// Habilita algoritmo cond. inc.
{
ENABLE = TRUE;
cc
= TRUE;
}
if(value=='s')
// Limpia el contador de Energa
{
clear_energy = TRUE;
}
if(value=='u') // Resetea el PIC y genera nuevamente una tabla
{
reset_cpu();
}
if(value=='w')
{
w_eeprom = TRUE; // Escribir la EEPROM EXT.
eeprom = TRUE;
}
if(value=='l')
{
leer_eeprom = TRUE;
}
}
#INT_RTCC
void interrupcion()
{
set_timer0(53036); // Interrupcin c/10mseg.
output_high(pin_C0);
ip_old = ip;
vp_old = vp;
p_old = p_new;
set_pwm1_duty(duty);
// SENSAR CORRIENTE DEL PANEL
set_adc_channel(0);
delay_us(10);
medicion = read_adc();
m = medicion * (22.73/(3*1023));
ip = aa1*m1 + aa2*m; // Filtro Digital
m1=m;
// FIN DE LA MEDICION DE CORRIENTE DEL PANEL
//
set_adc_channel(2);
delay_us(10);
medicion = read_adc();
x = medicion *(30.7/859.32); //
vp = aa1*x1 + aa2*x; // Filtro Digital
x1=x;
// FIN DE LA MEDICION DEL VOLTAJE
di=ip-ip_old;
dv=vp-vp_old;
p_new = vp * ip;
if(enable==TRUE)
{
if(dv!=0)
{
if((di/dv)!=(ip/vp))
{
if((di/dv)>(-ip/vp))
{
vref = vref + 0.002;
}
else
{
vref = vref - 0.006; //0.005
}
}
}
else
{
if(di!=0)
{
if(di>0)
{
vref = vref + 0.002;
}
else
{
vref = vref - 0.006;
}
}
}
}
else // Si no se elige Cond Inc, entonces se utiliza P&O
{
if(p_new>p_old)
{
if(vp>vp_old)
{
vref = vref + 0.002;
}
else
{
vref = vref - 0.006; //0.1
}
}
else
{
if(vp>vp_old)
{
vref = vref - 0.006;
}
else
{
vref = vref + 0.002;
}
}
}
if (vref>20.0) vref=20.0;
else if (vref<10.0) vref=10.0;
// Controlador PI
e=vp-vref;
o1=o0+ki*e;
fduty=(o1+kpr*e); // salida del controlador
// Se aplica Antiwinding Up
if(fduty>1023)
{
fduty = 1023;
}
else if(fduty<0)
{
fduty = 0;
}
else
{
o0 = o1;
}
duty=(int16)(fduty);
// Almacenar datos en la EEPROM EXT.
if(w_eeprom && j<=250)
{
ddd
= (byte)(0.33*duty);
vp_i
= (byte)(vp*8);
vref_i = (byte)(vref*8);
p_i_i
= (byte)(p_i*2);
vp_o
= (byte)(vbat*8);
p_o_o
= (byte)(p_o*2);
if(jjj==0) // Cada 100ms escribir en la eeprom
{
j+=1;
// Se incrementa la variable j
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
14;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
100
energy
= 0;
suma_pot
= 0;
cnt_e
= 0;
cnt_read
= 0;
vp_i
= 0;
vp_o
= 0;
vref_i
= 0;
ddd
= 0;
ip_i
= 0;
p_o_o
= 0;
enable
= TRUE;
clear_energy= FALSE;
pp
= FALSE;
cc
= FALSE;
w_eeprom
=
FALSE;
leer_eeprom = FALSE;
eeprom
= FALSE;
output_low(PIN_C5); // Apagado del mosfet de SHORT CIRCUIT
lcd_init();
init_ext_eeprom();
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_ccp1(CCP_PWM); // Configura CCP1 como PWM
setup_timer_2(T2_DIV_BY_1,255, 1); // fs = 19.53kHz
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* Incremental Cond *");
delay_ms(1500);
lcd_gotoxy(1,1);
lcd_putc(" Table Generating ");
lcd_gotoxy(1,2);
lcd_putc("
Wait
");
do
{
set_pwm1_duty(duty);
delay_ms(5);
// SENSAR CORRIENTE DEL PANEL
set_adc_channel(0);
delay_us(10);
medicion = read_adc();
m = medicion * (22.73/(3*1023)); // Filtro Digital
ip = aa1*m1 + aa2*m;
m1 = m;
// FIN DE LA MEDICION DE CORRIENTE DEL PANEL
// SENSAR VOLTAJE DEL PANEL
set_adc_channel( 2 );
delay_us(10);
medicion = read_adc();
x= medicion * (30.7/859.32); //
vp = aa1*x1 + aa2*x; // Filtro Digital
x1 = x;
// FIN DE LA MEDICION DEL VOLTAJE
// SENSAR CORRIENTE DE LA BATERIA
set_adc_channel(1);
delay_us(10);
medicion = read_adc();
n = medicion * (22.73/(3*1023)); // Filtro Digital
ibat = aa1*n1 + aa2*n;
101
n1=n;
// FIN DE LA MEDICION DE CORRIENTE DE LA BATERIA
// SENSAR VOLTAJE DE LA BATERIA
set_adc_channel( 3 );
delay_us(10);
medicion = read_adc();
y = medicion * (30.7/859.32); //
vbat = aa1*y1 + aa2*y; // Filtro Digital
y1 = y;
// FIN DE LA MEDICION DEL VOLTAJE
printf("%lu
%02.3f
%02.3f
%02.3f
%02.3f\r\n",duty,vp,ip,vbat,ibat);
duty+=4;
delay_ms(5);
}while(duty<=1024);
duty
medicion
vp
ip
vbat
ibat
x1
x
m1
m
n1
n
y1
y
=
=
=
=
=
=
=
=
=
=
=
=
=
=
200;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
for(;;)
{
if(cnta==1)
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("IN");
lcd_gotoxy(9,1);
lcd_putc("V");
lcd_gotoxy(20,1);
lcd_putc("V");
lcd_gotoxy(9,2);
lcd_putc("A");
lcd_gotoxy(20,2);
lcd_putc("A");
lcd_gotoxy(11,1 );
lcd_putc("OUT");
lcd_gotoxy(4,1);
printf(lcd_putc,"%02.1f",vp);
lcd_gotoxy(15,1);
printf(lcd_putc,"%02.1f",vbat);
lcd_gotoxy(4,2);
printf(lcd_putc,"%02.1f",ip);
lcd_gotoxy(15,2);
printf(lcd_putc,"%02.1f",ibat);
}
if(!input(pin_D3))
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("IN");
lcd_gotoxy(11,1);
lcd_putc("OUT");
lcd_gotoxy(9,1);
lcd_putc("W");
lcd_gotoxy(20,1);
lcd_putc("W");
lcd_gotoxy(1,2);
lcd_putc("Duty");
lcd_gotoxy(9,2);
lcd_putc("%");
lcd_gotoxy(11,2);
lcd_putc("E");
lcd_gotoxy(19,2);
lcd_putc("Wh");
lcd_gotoxy(5,1);
printf(lcd_putc,"%Lu",p_i); // Potencia de Entrada
lcd_gotoxy(15,1);
printf(lcd_putc,"%Lu",p_o); // Potencia de Salida
lcd_gotoxy(6,2);
printf(lcd_putc,"%Lu",duty_per);
// Ciclo de trabajo en %
lcd_gotoxy(13,2);
printf(lcd_putc,"%02.2f",energy); // Energa en Watts-Hora
do{}while(!input(pin_D3)); // Detectar que se solto tecla
}
if(!input(pin_D4) || clear_energy )
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("
Reset Energy
");
lcd_gotoxy(1,2);
lcd_putc("--------------------");
do{}while(!input(pin_D4)); // Detectar que se solto tecla
clear_energy = FALSE;
delay_ms(500);
energy = 0;
}
if(pp)
{
pp = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* P&O Algorithm *");
delay_ms(1500);
}
if(cc)
{
cc = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* Incremental Cond *");
delay_ms(1500);
}
if(eeprom)
{
eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Write Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
}
if(leer_eeprom) // Para mostrar datos
{
leer_eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Read Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
for(jj=0;jj<=250;jj++)
{
dato = (read_ext_eeprom(jj));
// Se recupera duty
dato1 = (read_ext_eeprom(jj+251)); // Se recupera Vpanel
dato2 = (read_ext_eeprom(jj+502)); // Se recupera Vref
dato3 = (read_ext_eeprom(jj+753)); // Se recupera Pot panel
dato4 = (read_ext_eeprom(jj+1004)); // Se recupera la Vout
dato5 = (read_ext_eeprom(jj+1255)); // Se recupera la pot
printf("%lu %lu %lu %lu %lu %lu\r\n",dato,dato1,dato2,dato3,dato4,dato5);
}
if(jj==251)
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("
Read Ready
");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(5000);
}
}
if(cnta == 150000)
{ cnta = 0; }
cnta+=1;
}
}
Programa: Cond_inc_bb.c
Este programa es el encargado de realizar el seguimiento del MPP de un panel
solar utilizando el conversor Buck - Boost. Para ello realiza los siguientes
procesos: adquirir datos, crear las interrupciones del timer (cada 10ms) y de
la comunicacin serial, generar la seal de PWM proveniente de un PI para el
conversor DC/DC.
Segn lo solicitado por el usuario, mediante el software de interfaz y la
comunicacin serial, el seguimiento del MPP se puede efectuar con el algoritmo
P&O o Cond Inc. Siendo este ltimo el programado por defecto.
#include <18F452.H>
#device adc=10;
#include <math.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#use rs232 (baud=9600, xmit=PIN_C6 , rcv=PIN_C7)
#include "lcd420b452.c"
#include "2416.c"
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
int16
int16
int16
int16
int16
int16
int16
int16
int16
int16
int32
int32
int16
int32
int32
int16
int16
int16
int16
int16
int16
int16
int8
char
di;
dv;
vp;
vp_old;
ip;
ip_old;
p_new;
p_old;
vref;
ibat;
vbat;
o0;
o1;
e;
en;
energy;
fduty;
suma_pot;
dato;
dato1;
dato2;
dato3;
dato4;
dato5;
duty;
duty_aux=0;
i;
ii;
j;
jj;
jjj;
cnta;
cnt_read;
cnta1;
medicion;
duty_per;
p_i;
p_i_i;
p_o;
p_o_o;
cnt_e;
c;
// carcter que selecciona el mtodo cond inc
char
char
char
char
p;
r;
w;
l;
//
//
//
//
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
ENABLE;
clear_energy;
clear_cpu;
w_eeprom;
eeprom;
leer_eeprom;
pp;
cc;
byte
byte
byte
byte
byte
vp_i;
vp_o;
ip_i;
vref_i;
ddd;
float
float
float
float
float
float
float
float
float
float
float
float
const
const
const
const
const
const
const
const
const
const
const
const
ki = 0.922799538;
kpr = 2.884600482;
aa1 = 0.7304;
aa2 = 0.2696;
aa3 = 0.9391;
aa4 = 0.0609;
aa5 = 0.9691;
aa6 = 1-aa5;
aa7 = 0.9937 ;
aa8 = 1-aa7;
aa9 = 0.9994;
aa10= 1- aa9;
//
//
//
//
//
//
//
//
//
//
//
Constante
Constante
Constante
Constante
Constante
Constante
Constante
Constante
Constante
Constante
Constante
del
del
del
del
del
del
del
del
del
del
del
PI
PI
Filtro
Filtro
Filtro
Filtro
Filtro
Filtro
Filtro
Filtro
Filtro
(5Hz
y 10ms)
(5HZ
y 10ms)
(1Hz
y 10ms)
(1Hz
y 10ms)
(0.5Hz y 10ms)
(0.5Hz y 10ms)
(0.1Hz y 10ms)
(0.1Hz y 10ms)
(0.01Hz y 10ms)
Float m=0,m1=0,n=0,n1=0,y=0,y1=0,x=0,x1=0;
#INT_RDA
void recepcion()
{
char value;
value = getc();
if(value=='p') // Habilita algoritmo P&O
{
ENABLE = FALSE;
pp
= TRUE;
}
if(value=='c')
// Habilita algoritmo cond. inc.
{
ENABLE = TRUE;
cc
= TRUE;
}
if(value=='s')
// Limpia el contador de Energa
{
clear_energy = TRUE;
}
if(value=='u') // Resetea el PIC y genera nuevamente una tabla
{
reset_cpu();
}
if(value=='w')
{
w_eeprom = TRUE; // Escribir la EEPROM EXT.
eeprom = TRUE;
}
if(value=='l')
{
}
leer_eeprom = TRUE;
}
#INT_RTCC
void interrupcion()
{
set_timer0(53036); // Interrupcin c/10mseg.
output_high(pin_C0);
ip_old = ip;
vp_old = vp;
p_old = p_new;
set_pwm1_duty(duty);
// SENSAR CORRIENTE DEL PANEL
set_adc_channel(0);
delay_us(10);
medicion = read_adc();
m = medicion * 6.45e-3; // Filtro Digital
ip = aa1*m1 + aa2*m;
m1 = m;
// FIN DE LA MEDICION DE CORRIENTE DEL PANEL
// SENSAR VOLTAJE DEL PANEL
set_adc_channel(2);
delay_us(10);
medicion = read_adc();
x = medicion* 0.02975;
vp = aa1*x1 + aa2*x; // Filtro Digital
x1=x; //
// FIN DE LA MEDICION DEL VOLTAJE
di=ip-ip_old;
dv=vp-vp_old;
p_new = vp * ip;
if(enable==TRUE)
{
if(dv!=0)
{
if((di/dv)!=(ip/vp))
{
if((di/dv)>(-ip/vp))
{
vref = vref + 0.01;
}
else
{
vref = vref - 0.03; //0.005
}
}
}
else
{
if(di!=0)
{
if(di>0)
{
vref = vref + 0.01;
}
else
{
vref = vref - 0.03;
}
}
}
}
else // Si no se elige Cond Inc, entonces se utiliza P&O
{
if(p_new>p_old)
{
if(vp>vp_old)
{
vref = vref + 0.01;
}
else
{
vref = vref - 0.03; //0.1
}
}
else
{
if(vp>vp_old)
{
vref = vref - 0.03;
}
else
{
vref = vref + 0.01;
}
}
}
if (vref>20.0) vref=20.0;
else if (vref<11.5) vref=11.5;
// Controlador PI
e=vp-vref;
o1=o0+ki*e;
fduty=(o1+kpr*e); // salida del controlador
// Se aplica Antiwinding Up
if(fduty>1023)
{
fduty = 1023;
}
else if(fduty<0)
{
fduty = 0;
}
else
{
o0 = o1;
}
duty=(int16)(fduty);
// Almacenar datos en la EEPROM EXT.
if(w_eeprom && j<=250)
{
ddd
= (byte)(0.33*duty);
vp_i
= (byte)(vp*8);
vref_i = (byte)(vref*8);
p_i_i
= (byte)(p_i*2);
vp_o
= (byte)(vbat*8);
p_o_o
= (byte)(p_o*2);
if(jjj==0)
{
j+=1;
// Se incrementa la variable j
jjj+=1; // Se incrementa la variable jjj
write_ext_eeprom(j,ddd); // Almacenamos duty 0 - 250
write_ext_eeprom(j+251,vp_i); // Almacenamos Vpanel 251 - 501
write_ext_eeprom(j+502,vref_i); // Voltaje Ref panel 502 - 752
write_ext_eeprom(j+753,p_i_i);
// Potencia de In 753 - 1003
write_ext_eeprom(j+1004,vp_o); // tensin batera 1004 - 1254
write_ext_eeprom(j+1255,p_o_o); // potencia batera 1255 - 1505
}
else
{
if(jjj==3){jjj=0;}
else {jjj+=1;}
}
}
// FIN de Almacenar datos en la EEPROM
// SENSAR CORRIENTE DE LA BATERIA
set_adc_channel(1);
delay_us(10);
medicion = read_adc();
n = medicion*6.45e-3;
ibat = aa1*n1 + aa2*n;
n1=n;
// FIN DE LA MEDICION DE CORRIENTE DE LA BATERIA
// SENSAR VOLTAJE DE LA BATERIA
set_adc_channel( 3 );
delay_us(10);
medicion = read_adc();
y = medicion* 0.02975;
vbat = aa1*y1 + aa2*y;
y1=y;
// FIN DE LA MEDICION DEL VOLTAJE
// VISUALIZACION ESTADO DE LA BATERIA
if(cnta1==1)
{
if(vbat>29.4)
{
output_high(pin_D0);
}
if(25.4<=vbat && vbat<=29.2)
{
output_high(pin_D1);
}
if(vbat<25.2)
{
output_high(pin_D2);
}
cnta1=cnta1+1;
}
else
{
if(cnta1==50)
{
output_low(pin_D2);
output_low(pin_D1);
output_low(pin_D0);
}
if(cnta1==100)
{ cnta1=0; }
cnta1=cnta1+1;
}
// Fin de Visualizacin del estado de la Batera
duty_per=ceil(100*(fduty)/1024); // Traspaso del ciclo de trabajo, de
binario a %
p_i=ceil(p_new);
p_o=ceil(ibat*vbat);
if(cnt_e<20)
{
cnt_e+=1;
suma_pot+=p_new;
}
else
{
cnt_e=0;
en=(suma_pot/20)*0.2; //energia dada en Watts*seg
energy+=(en*0.00028); // energa dada en Watts*hora
suma_pot=0;
}
}
output_low(pin_c0);
main()
{
p_i_i
dato
dato1
dato2
dato3
dato4
dato5
cnta
cnta1
duty_per
medicion
vbat
ibat
vp
vp_old
ip
ip_old
dv
di
p_new
p_old
o0
o1
vref
e
fduty
duty
i
j
p_i
p_o
duty_per
ii
jj
jjj
en
energy
suma_pot
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
14.5;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
110
cnt_e
= 0;
cnt_read
= 0;
vp_i
= 0;
vp_o
= 0;
vref_i
= 0;
ddd
= 0;
ip_i
= 0;
p_o_o
= 0;
enable
= TRUE;
clear_energy= FALSE;
pp
= FALSE;
cc
= FALSE;
w_eeprom
=
FALSE;
leer_eeprom = FALSE;
eeprom
= FALSE;
output_low(PIN_C5);
lcd_init();
init_ext_eeprom();
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_ccp1(CCP_PWM); // Configura CCP1 como PWM
setup_timer_2(T2_DIV_BY_1,255, 1); // fs = 19.53kHz
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* Incremental Cond *");
delay_ms(1500);
lcd_gotoxy(1,1);
lcd_putc(" Table Generating ");
lcd_gotoxy(1,2);
lcd_putc("
Wait
");
do
{
set_pwm1_duty(duty);
delay_ms(5);
// SENSAR CORRIENTE DEL PANEL
set_adc_channel(0);
delay_us(10);
medicion = read_adc();
m = medicion * 6.45e-3;
ip = aa1*m1 + aa2*m;
m1 = m;
// FIN DE LA MEDICION DE CORRIENTE DEL PANEL
// SENSAR VOLTAJE DEL PANEL
set_adc_channel(2);
delay_us(10);
medicion = read_adc();
x = medicion* 0.02975;
vp = aa1*x1 + aa2*x; // Filtro Digital
x1=x;
// FIN DE LA MEDICION DEL VOLTAJE
// SENSAR CORRIENTE DE LA BATERIA
set_adc_channel(1);
delay_us(10);
medicion = read_adc();
n = medicion*6.45e-3;
111
=
=
=
=
=
=
200;
0;
0;
0;
0;
0;
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
for(;;)
{
if(cnta==1)
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("IN");
lcd_gotoxy(9,1);
lcd_putc("V");
lcd_gotoxy(20,1);
lcd_putc("V");
lcd_gotoxy(9,2);
lcd_putc("A");
lcd_gotoxy(20,2);
lcd_putc("A");
lcd_gotoxy(11,1 );
lcd_putc("OUT");
lcd_gotoxy(4,1);
printf(lcd_putc,"%02.1f",vp);
lcd_gotoxy(15,1);
printf(lcd_putc,"%02.1f",vbat);
lcd_gotoxy(4,2);
printf(lcd_putc,"%02.1f",ip);
lcd_gotoxy(15,2);
printf(lcd_putc,"%02.1f",ibat);
}
if(!input(pin_D3))
{
%02.3f\r\n",duty,vp,ip,vbat,ibat);
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("IN");
lcd_gotoxy(11,1);
lcd_putc("OUT");
lcd_gotoxy(9,1);
lcd_putc("W");
lcd_gotoxy(20,1);
lcd_putc("W");
lcd_gotoxy(1,2);
lcd_putc("Duty");
lcd_gotoxy(9,2);
lcd_putc("%");
lcd_gotoxy(11,2);
lcd_putc("E");
lcd_gotoxy(19,2);
lcd_putc("Wh");
lcd_gotoxy(5,1);
printf(lcd_putc,"%Lu",p_i); // Potencia de Entrada
lcd_gotoxy(15,1);
printf(lcd_putc,"%Lu",p_o); // Potencia de Salida
lcd_gotoxy(6,2);
printf(lcd_putc,"%Lu",duty_per);
// Ciclo de trabajo en %
lcd_gotoxy(13,2);
printf(lcd_putc,"%02.2f",energy); // Energa en Watts-Hora
do{}while(!input(pin_D3)); // Detectar que se solto tecla
}
if(!input(pin_D4) || clear_energy )
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("
Reset Energy
");
lcd_gotoxy(1,2);
lcd_putc("--------------------");
do{}while(!input(pin_D4)); // Detectar que se solto tecla
clear_energy = FALSE;
delay_ms(500);
energy = 0;
}
if(pp)
{
pp = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* P&O Algorithm *");
delay_ms(1500);
}
if(cc)
{
cc = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("* Incremental Cond *");
delay_ms(1500);
}
if(eeprom)
eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Write Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
}
if(leer_eeprom) // Para mostrar datos
{
leer_eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Read Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
for(jj=0;jj<=250;jj++)
{
dato = (read_ext_eeprom(jj));
// Se recupera duty
dato1 = (read_ext_eeprom(jj+251)); // Se recupera Vpanel
dato2 = (read_ext_eeprom(jj+502)); // Se recupera Vref
dato3 = (read_ext_eeprom(jj+753)); // Se recupera Potencia panel
dato4 = (read_ext_eeprom(jj+1004)); // Se recupera la tensin out
dato5 = (read_ext_eeprom(jj+1255)); // Se recupera la potencia salida
Programa: fuzzy.c
Este programa es el encargado de realizar el seguimiento del MPP de un panel
solar utilizando el conversor Boost. Para ello realiza los
siguientes
procesos: adquirir datos, crear las interrupciones del timer (cada 20ms) y de
la comunicacin serial, generar la seal de PWM proveniente de un controlador
basado en lgica difusa.
// ***************************************************************|
//
MPPT EN SISTEMAS FOTOVOLTAICOS
|
//
UTILIZANDO FUZZY LOGIC CONTROL
|
//
|
//
Todas las funciones de pertenencia: tanto entradas e y de
|
// como salida (dd) son del tipo TRIANGULAR con un solapamiento |
//
de un 50%.
|
//
|
//
nb nm ns zo ps pm pb
|
//
|
//
\ /\ /\ /\ /\ /\ /
|
//
\ \ \ \ \ \
|
//
/ \/ \/ \/ \/ \/ \
|
//
-6 -4 -2 0 2 4 6
|
//
|
//
|
// PROGRAMA FUNCIONANDO EN PERFECTO ESTADO
|
// ***************************************************************|
#include <18F452.H>
#device adc=10;
#include <math.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#use rs232 (baud=9600, xmit=PIN_C6 , rcv=PIN_C7)
#include "lcd420b452.c"
#include "2416.c"
float vp=0.0,ip=0.0,vb=0.0,ib=0.0,ip_old=0.0,pk=0.0,pk_old=0.0,ek=0.0;
float vb_old=0.0,ib_old=0.0,vp_old=0.0,vpf=0.0,ipf=0.0,vbf=0.0,ibf=0.0;
float ek_old=0.0,cek=0.0,xx=0.0,xxx=0.0,yyy=0.0,pout_aux=0.0;
float perror[2],pderror[2],c[7],regla[7][7],fdu[3],pdu[3],min=0.0,max=0.0;
float fin[90],pout=0;
float num=0.0, den=1.0,dd=0.0,fduty=0.0,ffduty=0.0;
int ferror[2],fderror[2],kkk=0,uuu=0,ja=0;
int16 indice,z=0,zzz=0,dato=0,dato1=0,dato2=0,dato3=0,dato4=0,dato5=0,kkkk=0;
int32 medicion=0,duty=0,cnta=0;
float
float
float
float
const
const
const
const
float m=0,m1=0,n1=0,n=0,x1=0,x=0,y1=0,y=0;
boolean eeprom
= FALSE;
boolean leer_eeprom = FALSE;
boolean w_eeprom = FALSE;
boolean chip
= FALSE;
byte vp_i =0, ip_i=0, ek_m=0, cek_m=0,dduty=0,p_o=0;
//=====================================================|
//
Funciones de Pertenencia
|
//=====================================================|
int
const NB=0; /* NEGATIVE BIG
*/
int
const NM=1; /* NEGATIVE MEDIUM
*/
int
const NS=2; /* NEGATIVE SMALL
*/
int
const ZO=3; /* ZERO
*/
int
const PS=4; /* POSITIVE SMALL
*/
int
const PM=5; /* POSITIVE MEDIUM
*/
int
const PB=6; /* POSITIVE BIG
*/
//=====================================================|
//
Fin Funciones de Pertenencia
|
//=====================================================|
float minimo(xxx,yyy)
{
if(yyy<=xxx) min=yyy;
else
min=xxx;
return min;
}
float maximo(xxx,yyy)
{
if(yyy>=xxx) max=yyy;
else
max=xxx;
return max;
}
#INT_RDA
void recepcion()
{
char value;
value = getc();
if(value=='w')
{
eeprom = TRUE;
// orden de escribir eeprom
w_eeprom = TRUE;
}
if(value=='l')
{
leer_eeprom = TRUE; // orden de leer eeprom
}
if(value=='u') // Resetea el PIC
{
reset_cpu();
}
if(value=='q')
{
chip = TRUE;
}
}
#INT_RTCC
void interrupcion()
{
set_timer0(53036); // Interrupcin Timer c/20ms
output_high(pin_C0); // medicin time ejec. programa
/* SENSAR CORRIENTE DEL PANEL */
set_adc_channel(0);
delay_us(10);
medicion = read_adc();
ip = medicion*(22.73/(3069)); // 3*1023=3069
//ip = aa1*m1 + aa2*m;
//m1=m;
/* FIN DE SENSAR CORRIENTE DEL PANEL */
/* SENSAR TENSION DEL PANEL*/
set_adc_channel(2);
delay_us(10);
medicion = read_adc();
vp = medicion*(30.7/859.32); //
//vp = aa1*x1 + aa2*x; // Filtro Digital
//x1=x;
/* FIN DE SENSAR TENSION DEL PANEL */
pk=vp*ip;
ek=(pk-pk_old)/(vp_old-vp);
ek = 3.4*ek;//0.04 / 3.25
cek=ek-ek_old;
cek= 3.4*cek;
ek_old=ek;
pk_old= pk;
ip_old = ip;
vp_old = vp;
vb_old = vb;
ib_old = ib;
//==================================================================
//
Fuzzificacin E(K)
//==================================================================
if((ek>-6.0)&&(ek<6.0))
{
indice=(int16)((ek+6.0)*7.5);
perror[0]=fin[indice];
perror[1]=1-perror[0];
ferror[0]=(int16)(indice/15.0);
ferror[1]=ferror[0]+1;
}
if(ek<=-6.0)
{
perror[0]=1.0;
perror[1]=0.0;
ferror[0]=NB;
ferror[1]=NM;
}
if(ek>=6.0)
{
perror[0]=1.0;
perror[1]=0.0;
ferror[0]=PB;
ferror[1]=PM;
}
//==================================================================
//
Fuzzificacin CE(K)
//==================================================================
if((cek>-6.0)&&(cek<6.0))
{
indice=(int16)((cek+6.0)*7.5);
pderror[0]=fin[indice];
pderror[1]=1-pderror[0];
fderror[0]=(int16)(indice/15.0);
fderror[1]=fderror[0]+1;
}
if(cek<=-6.0)
{
pderror[0]=1.0;
pderror[1]=0.0;
fderror[0]=NB;
fderror[1]=NM;
}
if(cek>=6.0)
{
pderror[0]=1.0;
pderror[1]=0.0;
fderror[0]=PB;
fderror[1]=PM;
}
//===========================================================
//
Toma de Decisin
//===========================================================
fdu[0]=regla[ferror[0]][fderror[0]];
fdu[1]=regla[ferror[0]][fderror[1]];
fdu[2]=regla[ferror[1]][fderror[1]];
pdu[0]=minimo(perror[0],pderror[0]);
pdu[1]=maximo(minimo(perror[0],pderror[1]),minimo(perror[1],pderror[0]));
pdu[2]=minimo(perror[1],pderror[1]);
//===========================================================
//
FIN Toma de Decisin
//===========================================================
//===========================================================
//
Desfuzzificacin
//===========================================================
den=(pdu[0]+pdu[1]+pdu[2]); num=((c[fdu[0]]*pdu[0])+
(c[fdu[1]]*pdu[1])+(c[fdu[2]]*pdu[2])); dd=1.4*(num/den); //
dd: delta duty cycle / 2.25
//===========================================================
//
FIN Desfuzzificacin
//===========================================================
//===========================================================
//
Se aplica Antiwinding Up
//===========================================================
fduty=ffduty+dd;
if(fduty>dutymax) {fduty=dutymax;}
else if(fduty<dutymin) {fduty=dutymin;}
else {ffduty=fduty;} // Se integra
duty=(int16)(fduty); // Se hace el traspaso de flot a int
set_pwm1_duty(duty);
//===========================================================
//
FIN Antiwinding Up
//===========================================================
//===========================================================
//
Sensar Tensin y Corriente de Salida
//===========================================================
set_adc_channel(1);
delay_us(10);
medicion = read_adc();
ib = medicion * (22.73/3069);
set_adc_channel( 3 );
delay_us(10);
medicion = read_adc();
vb = medicion*(30.7/859.32);
//===========================================================
//
Fin de Sensado de Tensin y Corriente de Salida
//===========================================================
//===========================================================
//
Filtrado de las Variables
//===========================================================
pout_aux=vb*ib;
vpf=aa1*vp_old+aa2*vp;
ipf=aa1*ip_old+aa2*ip;
vbf=aa1*vb_old+aa2*vb;
ibf=aa1*ib_old+aa2*ib;
pout=vpf*ipf;
//===========================================================
//
Fin Filtrado de las Variables
//===========================================================
//===========================================================
//
ALMACENAR DATOS EN LA EEPROM EXTERNA
//===========================================================
if(eeprom && z<251)
{
vp_i
= (byte)(vpf*8); // guardar tensin del panel
ip_i
= (byte)(ipf*30); // guardar corriente del panel
ek_m
= (byte)(ek); // guardar el error
cek_m
= (byte)(cek); // guardar cambio de el error
dduty
= (byte)(duty*0.33); // guardar ciclo de trabajo
p_o
= (byte)(pout_aux*2); // guardar potencia salida
if(zzz==0) // Cada 100ms escribir en la eeprom
{
z+=1;
// Se incrementa la variable z
zzz+=1; // Se incrementa la variable zzz
write_ext_eeprom(z,vp_i); // Almacenamos Voltaje Panel 0 write_ext_eeprom(z+251,ip_i); // Almacenamos corriente pv
write_ext_eeprom(z+502,ek_m); // Almacenamos error 502-752
write_ext_eeprom(z+753,cek_m); // Almacenamos cerror 753 write_ext_eeprom(z+1004,dduty); // Almacenamos duty 1004 write_ext_eeprom(z+1255,p_o);
}
250
251 - 501
1003
1254
else
{
if(zzz>1){zzz=0;}
else {zzz+=1;}
}
}
//============================================================
//
FIN DE ALMACENAMIENTO EN LA E2PROM
//============================================================
if(kkk==0 && chip)
{
kkk+=1;
kkkk+=1;
if(kkkk>249) { chip = FALSE; }
else printf("\n\r %02.2f %02.2f %02.2f %02.2f %lu %02.2f
\n\r",vp,ip,ek,cek,duty,pout_aux);
}
else
{ if(kkk>1) kkk=0; else kkk=kkk+1; }
output_low(pin_C0); // fin medicion del time de ejecucin programa
}
main()
{
int iii=0,jjj=0; for(iii=0;iii<90;iii+
+)
{
fin[iii]=0.0; // Inicializacin del vector fin[iii]
}
for(iii=0;iii<2;iii++)
{
perror[iii]=0.0;
pderror[iii]=0.0;
ferror[iii]=0;
fderror[iii]=0;
}
for(iii=0;iii<3;iii++)
{
pdu[iii]=0.0;
fdu[iii]=0;
}
output_low(PIN_C5); // Apagado del mosfet de SHORT CIRCUIT
lcd_init();
init_ext_eeprom();
//|===========================================================|
//|
Centro de las Funciones de Pertenencia
|
//|===========================================================|
c[NB]=-6.0;
c[NM]=-4.0;
c[NS]=-2.0;
c[ZO]= 0.0;
c[PS]=-c[NS];
c[PM]=-c[NM];
c[PB]=-c[NB];
//|===========================================================|
//|
Creacin de las Funciones de Pertenencia de entrada
|
//|===========================================================|
for(iii=0;iii<16;iii++)
{
xx=(1.0-(iii/15.0));
fin[iii]
=xx;
fin[15+iii]=xx;
fin[30+iii]=xx;
fin[45+iii]=xx;
fin[60+iii]=xx;
fin[75+iii]=xx;
fin[15]=1.0;
fin[30]=1.0;
fin[45]=1.0;
fin[60]=1.0;
fin[75]=1.0;
}
//============================================================|
//
REGLAS DEL CONTROLADOR DE FUZZY LOGIC
|
//============================================================|
for(iii=0;iii<4;iii++)
{
for(jjj=0;jjj<(4-iii);jjj++)
{
regla[iii][jjj]=NB;
regla[6-iii][6-jjj]=PB;
}
}
for(iii=0;iii<5;iii++)
{
regla[iii][4-iii]=NM;
regla[iii+2][6-iii]=PM;
}
for(iii=0;iii<6;iii++)
{
regla[iii][5-iii]=NS;
regla[iii+1][6-iii]=PS;
}
for(iii=0;iii<7;iii++)
{
regla[iii][6-iii]=ZO;
}
120
121
//===============================================================|
//
LAS REGLAS CREAN LA MATRIZ SIGUIENTE
|
//
|
//
CE(K)
|
//
|
//
NB
NM
NS
ZO
PS
PM
PB
|
//
\---------------------------------|
//
NB | NB | NB | NB | NB | NM | NS | ZO
|
//
----------------------------------|
//
NM | NB | NB | NB | NM | NS | ZO | PS
|
//
----------------------------------|
//
NS | NB | NB | NM | NS | ZO | PS | PM
|
//
----------------------------------|
//
E(K)
ZO | NB | NM | NS | ZO | PS | PM | PB
|
//
----------------------------------|
//
PS | NM | NS | ZO | PS | PM | PB | PB
|
//
----------------------------------|
//
PM | NS | ZO | PS | PM | PB | PB | PB
|
//
----------------------------------|
//
PB | ZO | PS | PM | PB | PB | PB | PB
|
//
----------------------------------|
//
|
//================================================================
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_ccp1(CCP_PWM); // Configura CCP1 como PWM
setup_timer_2(T2_DIV_BY_1,255, 1); // fs = 19.53kHz
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_RDA); // Interrupcin al existir un evento en com1
enable_interrupts(GLOBAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
lcd_putc("******* MPPT *******");
lcd_gotoxy(1,2);
lcd_putc("Fuzzy Logic Control");
delay_ms(1500);
for(;;)
{
cnta+=1;
if(cnta==1)
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("IN");
lcd_gotoxy(9,1);
lcd_putc("V");
lcd_gotoxy(20,1);
lcd_putc("V");
lcd_gotoxy(9,2);
lcd_putc("A");
lcd_gotoxy(20,2);
lcd_putc("A");
lcd_gotoxy(11,1 );
lcd_putc("OUT");
lcd_gotoxy(4,1);
printf(lcd_putc,"%02.1f",vpf);
lcd_gotoxy(15,1);
printf(lcd_putc,"%02.1f",vbf);
lcd_gotoxy(4,2);
printf(lcd_putc,"%02.1f",ipf);
lcd_gotoxy(15,2);
printf(lcd_putc,"%02.1f",ibf);
}
if(w_eeprom)
{
w_eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Write Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
}
if(leer_eeprom) // Para mostrar datos
{
leer_eeprom = FALSE;
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc(" Read Ext EEPROM ");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500); for(z=0;z<251;z+
+)
{
dato = (read_ext_eeprom(z));
// Se recupera Vp
dato1 = (read_ext_eeprom(z+251)); // Se recupera Ip
dato2 = (read_ext_eeprom(z+502)); // Se recupera error
dato3 = (read_ext_eeprom(z+753)); // Se recupera cambio de error
dato4 = (read_ext_eeprom(z+1004)); // se recupera el ciclo de trabajo
dato5 = (read_ext_eeprom(z+1255)); // Se recupera la potencia de out
printf("%lu %lu %lu %lu %lu %lu\r\n",dato,dato1,dato2,dato3,dato4,dato5);
}
if(z==251)
{
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("
Read Ready
");
lcd_gotoxy(1,2);
lcd_putc("
24C16B
");
delay_ms(1500);
}
}
delay_ms(1500);
{ cnta = 0; }
}
}
Programa: lcd420b.c
Esta librera es la encargada del manejo del mdulo LCD.
// As defined in the following structure the pin connection is as follows:
//
B0 enable
//
B1 rs
//
B2 rw
//
B4 D4
//
B5 D5
//
B6 D6
//
B7 D7
//
//
LCD pins D0-D3 are not used and PIC B3 is not used.
struct lcd_pin_map
BOOLEAN
BOOLEAN
BOOLEAN
BOOLEAN
int
} lcd;
{
enable;
rs;
rw;
unused;
data : 4;
//
//
//
//
//
//
void lcd_init() {
BYTE i;
set_tris_b(LCD_WRITE);
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0, LCD_INIT_STRING[i]);
switch(y) {
case 1 : address=0x80;break;
case 2 : address=0xc0;break;
case 3 : address=0x94;break;
case 4 : address=0xd4;break;
}
address+=x-1;
lcd_send_byte(0,address);
: lcd_gotoxy(1,++lcdline);
break;
case '\b'
:
lcd_send_byte(0,0x10);
break;
default
: lcd_send_byte(1,c);
break;
}
'\n'
break;
lcd_gotoxy(x,y);
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
Programa: test.vbp
Este programa es el encargado de ser interfaz para el usuario. En su pantalla
presenta: el algoritmo que esta siendo utilizado para el MPPT, la tabla I V
generada, acceso a MATLAB, etc. Adems, posee varios botones entre los que
destaca: Lectura EEPROM externa, escritura EEPROM externa, reset al
microcontrolador, guardar datos adquiridos, borrado de la contabilizacin de
energa, etc.
Private Sub chkestablecer_Click()
If chkestablecer.Value = 0 Then
ChkOnline.Value = 1
MSComm1.PortOpen = False
CmdPer.Enabled = False
CmdCond.Enabled = False
CmdClearEnergy.Enabled = False
cmdreset.Enabled = False
cmdLeerEeprom.Enabled = False
mnuGuardarEeprom.Enabled = False
mnuLeerEeprom.Enabled = False
Timer2.Enabled = True
ChkOnline.Enabled = True
End If
If chkestablecer.Value = 1 Then
ChkOnline.Value = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
CmdPer.Enabled = True
CmdClearEnergy.Enabled = True
cmdreset.Enabled = True
cmdLeerEeprom.Enabled = True
mnuGuardarEeprom.Enabled = True
mnuLeerEeprom.Enabled = True
Timer2.Enabled = False
End If
End Sub
Private Sub ChkOnline_Click()
If ChkOnline.Value = 0 Then
chkestablecer.Value = 1
Else
chkestablecer.Value = 0
End If
End Sub
APNDICE C
DIAGRAMAS ESQUEMTICOS DE LAS TARJETAS IMPLEMENTADA
130
APNDICE D
HOJAS DE DATOS INTEGRADOS
135
140
141
150
151
Universidad de
Magallanes Facultad de
Ingeniera
Ingeniera de Ejec. en Electricidad
EVALUACIN DE CONVERSORES
DC / DC Y SIST. DE CONTROL
PARA APLICACIONES
FOTOVOLTAICAS
Hugo Miguel Villegas Barra
2006
Contenidos
QIntroduccin
Q Celdas
Solares
Q Sistema Experimental
Q Algoritmos de Control
Q Resultados Experimentales
Q Conclusiones
Introduccin
Introduccin
Celdas Solares
Celdas Solares
Una celda solar es un dispositivo capaz de convertir
la energa proveniente de la radiacin solar en
energa elctrica.
El efecto fotovoltaico mencionado en el prrafo
anterior, solo es posible en una parte del espectro
luminoso. Dicho segmento lo componen
bsicamente las longitudes de onda ms pequeas,
las cuales estn comprendidas entre la luz
ultravioleta y en el espectro visible al color violeta.
MPP
Celdas Solares
Celdas Solares
(a)
(b)
Sistema Experimental
Sistema Experimental
Sistema Experimental
Algoritmos de Control
Algoritmos de Control
Algoritmos de Control
(P&O)
110
100
(V(k),P(k))
B
(V(k+1),P(k+1))
90
Potencia (W)
80
(V(k-1),P(k-1))
A
70
60
50
40
30
20
10
0
10
12
Tensin (V)
14
16
18
20
22
Algoritmos de Control
Vp* Vref
+
P+I
Circuito de disparo
Conversor DC/DC
Panel Solar
Vp
NO
SI
Vref = Vref - C
NO
Vref = Vref + C
Vref = Vref - C
SI
Vref = Vref + C
Retornar
Algoritmos de Control
(Cond. Inc.)
120
dP/dV = 0
100
dP/dV > 0
dP/dV < 0
Potencia (W)
80
60
40
dP d (V I ) I V dI
0
dV
dV
dV
dI dV
I
V
20
10
15
20
25
Tensin (V)
Figura 9. Curva P V bajo seguimiento del MPP con algoritmo Cond. Inc.
dV = V(k) - V(k-1)
dI = I(k) - I(k-1)
NO
dV = 0
SI
dI / dV = - I / V
dI = 0
NO
NO
SI
SI
dI > 0
dI / dV > - I / V
SINO
Vref = Vref + C
NO
Vref = Vref - C
Vref = Vref - C
SI
Vref = Vref + C
Retornar
Algoritmos de Control
(Fuzzy Logic)
e
SE
E
FUZZIFICACIN
SCE
ce
TOMA DE
DECISIN
DESFUZZIFICACIN
CE
CE (k ) E (k ) E (k 1)
SdD
dddD
NB
NM
NS
ZO
PS
PM
PB
(a)
Grado
De
Pertenencia
0
-6
-4
-2
NB
NM
NS
ZO
PS
PM
PB
u(CE)
(b)
Grado
De
Pertenencia
0
-6
-4
-2
NB
NM
NS
ZO
PS
PM
u(dD)
PB
(c)
Grado
De
Pertenencia
0
-6
-4
-2
NB
NM
NS
ZO
PS
PM
PB
Si (E es N B ) y (C E es N S ) ent onces (d D es NB)
NB
NB
NB
NB
NB
NM
NS
ZO
NM
NB
NB
NB
NM
NS
ZO
PS
NS
NB
NB
NM
NS
ZO
PS
PM
ZO
NB
NM
NS
ZO
PS
PM
PB
PS
NM
NS
ZO
PS
PM
PB
PB
PM
NS
ZO
PS
PM
PB
PB
PB
PB
ZO
PS
PM
PB
PB
PB
PB
Si (E es ZO ) y (C E es ZO ) entonces (d D es ZO )
Si (E es ZO ) y (C E es PB ) entonces (d D es P B )
u d D dD
j
j 1
n
dD
u d D
j
j 1
Resultados
Experimentales
Resultados Experimentales
DE CIRCUITO ABIERTO
(Voc)
21.6 V
( Isc)
6.54 A
(Vp)
17.4 V
( Ip)
6.1 A
106 W
Resultados Experimentales
948 W /
m2
6
5
(a)
4
3
810 W /
m2
2
1
0
20
25
80
Potencia Panel Solar (W)
70
76 W @ 948 W /
m2
60
50
66 W @ 810 W /
m2
40
30
(b)
20
10
0
10
15
20
25
Resultados Experimentales
Resultados Experimentales
7
6
5
31C
(a)
41C
2
1
0
10
15
20
25
80
70
76 W @
60
50
72 W @
(b)
40
30
20
10
0
10
15
20
25
Resultados Experimentales
Resultados Experimentales
Potencia Panel Solar (W)
(a
)
MPP
T
60
50
40
30
20
10
00
10
15
20
25
14.75
Vref
Vpane
l
14.5
(b)
14.25
14
5
Tiempo (Seg)
54
100
53.5
90
53
52
80
Ciclo de
Trabajo
Eficiencia del
Conversor
52.5
70
60
51.5
51
10
50
0
5
Tiempo (Seg)
40
10
Tensin (V)
15
(c)
Resultados Experimentales
Resultados Experimentales
80
(a)
MPPT
60
40
20
4
10
12
Tensin Panel Solar (V)
14
16
18
2000
4000
Cambio de Error
1500
Error
20
2000
0
1000
Error
500
-2000
-4000
-500
5
Tiempo
0.865
80
0.86
70
Ciclo de
Trabajo
Eficiencia del
Conversor
60
50
-6000
10
5
Tiempo
(Seg)
Cambio de Error
(b)
(c)
0.855
0.85
10
Resultados Experimentales
Resultados Experimentales
80
60
(a)
40
MPPT
20
0
10
15
20
25
Tensin (V)
20
Vpanel
17.5
(b)
15
12.5
10
Vref
0
3
Tiempo (Seg)
55
50
45
(c)
40
35
30 0
2
1
3
Tiempo (Seg)
5
4
Resultados Experimentales
Resultados Experimentales
Resultados Experimentales
(a)
60
40
20
0
Error
MPPT
10
15
20
25
300
500
200
Error
Cambio de
100
-500
0
-100
-1000
3
Tiempo (Seg)
Cambio de Error
80
(b)
-1500
6
60
50
(c)
40
30
20
3
Tiempo (Seg)
Resultados Experimentales
Conclusiones
Conclusiones
Los resultados experimentales presentados se obtuvieron para
diferentes condiciones, tales como: nivel de radiacin solar
incidente constante, aplicacin de sombra parcial al panel
solar y efectos de la temperatura en un panel solar. En todas
ellas, los resultados obtenidos muestran un buen desempeo
en el funcionamiento. En particular, para la generacin de
curvas I V y P V, se muestra la buena eficacia de los
conversores DC/DC, al momento de utilizarse como
adaptadores de impedancia.
Por otra parte, la respuesta del controlador de tensin
utilizado en los algoritmos P&O y Conductancia Incremental
es aceptable (menos de un 5% de la tensin de referencia para
la mayora de los casos).
Preguntas ?
Universidad de
Magallanes Facultad de
Ingeniera
Ingeniera de Ejec. en Electricidad
EVALUACIN DE CONVERSORES
DC / DC Y SIST. DE CONTROL
PARA APLICACIONES
FOTOVOLTAICAS
Hugo Miguel Villegas Barra
2006