miércoles, 22 de enero de 2014

Panel fotovoltaico en GNU Octave


GNU Octave es un software libre para análisis numérico,el lenguaje de Octave, es bastante similar y compatible con Matlab, por lo que, muchos scripts pueden funcionar en ambos software. Las funcionalidades de Octave pueden extenderse mediante Toolbox distribuidas libremente en Octave Forge.

A continuación mostramos el uso de Octave para analizar el desempeño de un panel fotovoltaico frente a variaciones en la temperatura y  la irradiación solar.

Un panel fotovoltaico es un arreglo de células fotovoltaicas. Las células o celdas fotovoltaicas l tienen la propiedad de convertir energía luminosa en energía eléctrica.

La relación entre la corriente y el voltaje, depende de la temperatura, la irradiación solar, y del tipo de tecnología de que esta hecha la célula.

Visitando el blog de ramirozky podemos encontrar mas detalles de como modelar un panel fotovoltaico, para posteriormente ejecutar el modelo en Scilab/Xcos, en la presente entrada nos remitiremos únicamente a reescribir el script de ramirosky  para poder ser ejecutado en octave.

function ipanel=ipanel(V,T,G,Voc)  
 Isc=3.76;  
 Ns=36;  
 Np=1;  
 A=1.3;  
 Ki=3e-3;  
 Eg=1.15;  
 k=1.38e-23;  
 q=1.6e-19;  
 Tref=273+25;  
 Tc=273+T;  
 Irs=Isc/(exp(q*Voc/(Ns*k*A*Tc))-1);  
 Is=Irs*(Tc/Tref)^3*exp(q*Eg*(1/Tref-1/Tc)/(k*A));  
 Iph1=(Isc+Ki*(Tc-Tref))*G;  
 iVTG1=Np*Iph1-Np*Is*(exp(q*V/(Ns*k*Tc*A))-1);  
 endfunction  


La función anterior puede guardarse con el nombre "ipanel.m" y llamarla desde octave, antes de cualquier llamada, debe agregarse el directorio donde se tiene guardada la función

 addpath(Directorio_donde_esta_la_función)

A continuación un ejemplo de como usar la función para graficar las curvas I-V definidas para distintos valores de Temperatura e irradiación.

 V=[0:.1:30];  
 T1=25;  
 T2=40;  
 T3=60;  
 v1=size(V);  
 for j = 1:v1(1,2)  
 i1(j)=ipanel(V(j),T1,.75,21.7);  
 i2(j)=ipanel(V(j),T2,.75,21.7);  
 i3(j)=ipanel(V(j),T3,.75,21.7);  
 i4(j)=ipanel(V(j),T1,.5,21.7);  
 i5(j)=ipanel(V(j),T1,.75,21.7);  
 i6(j)=ipanel(V(j),T1,1,21.7);  
 end  
 figure(1);  
 plot(V,i1,V,i2,V,i3);  
 grid;  
 xlabel("TENSION [V]");ylabel("CORRIENTE [A]");  
 title("VARIACION DE LA INTENSIDAD CON LA TEMPERATURA");  
 legend("T=25","T=40","T=60"); 
 %print -dpng -color "/home/v_var_t";  
 figure(2);  
 plot(V,i1.*V,V,i2.*V,V,i3.*V);  
 grid;  
 xlabel("TENSION [V]");ylabel("POTENCIA [W]");  
 title("VARIACION DE LA POTENCIA CON LA TEMPERATURA");  
 legend("T=25","T=40","T=60");  
 %print -dpng -color "/home/p_var_t";  
 figure(3);  
 plot(V,i4,V,i5,V,i6);  
 grid;  
 xlabel("TENSION [V]");ylabel("CORRIENTE [A]");  
 title("VARIACION DE LA INTENSIDAD CON LA IRRADIACION");  
 legend("G=0.50","G=0.75","G=1.00");  
 %print -dpng -color "/home/v_var_irr";  
 figure(4);  
 plot(V,i4.*V,V,i5.*V,V,i6.*V);  
 grid;  
 xlabel("TENSION [V]");ylabel("POTENCIA [W]");  
 title("VARIACION DE LA POTENCIA CON LA IRRADIACION");  
 legend("G=0.50","G=0.75","G=1.00");  
 %print -dpng -color '/home/p_var_irr';   

Si deseas salvar los gráficos en archivos png, borrar el "%", antes del comando "print".

El resultado al ejecutar el ultimo script, son 4 ventanas con las siguientes figuras:





Esto es todo, cualquier comentario, no duden en hacerlo llegar.




No hay comentarios:

Publicar un comentario