domingo, 26 de enero de 2014

Panel fotovoltaico en python


Anteriormente publicamos como simular un panel fotovoltaico con GNU Octave, en la presente entrada haremos lo mismo para python, haciendo uso de las librerías numpy y matplotlib.


 import numpy as np  
 import matplotlib.pyplot as plt  
 def ipanel(V,T,G,Voc):  
   Isc=3.76  
   Ns=36.0  
   Np=1.0  
   A=1.3  
   Ki=3e-3  
   Eg=1.15  
   k=1.38e-23  
   q=1.6e-19  
   Tref=273.0+25.0  
   Tc=273.0+T  
   Irs=Isc/(np.exp(q*Voc/(Ns*k*A*Tc))-1)  
   Is=Irs*(Tc/Tref)**3*np.exp(q*Eg*(1/Tref-1/Tc)/(k*A))  
   Iph1=(Isc+Ki*(Tc-Tref))*G  
   iVTG1=Np*Iph1-Np*Is*(np.exp(q*V/(Ns*k*Tc*A))-1)  
   iVTG1=0.5*(iVTG1+np.abs(iVTG1))  
   return iVTG1  
 Vfv=np.arange(0,30.1,0.1)  
 # respuesta de la corriente cuando variamos temperatura   
 # y mantenemos la irraradiación "G" constante  
 T=np.array([25.0,40.0,60.0])  
 IT1=ipanel(Vfv,T[0],0.75,21.7)  
 IT2=ipanel(Vfv,T[1],0.75,21.7)  
 IT3=ipanel(Vfv,T[2],0.75,21.7)  
 plt.figure(1)  
 p1,=plt.plot(Vfv,IT1)  
 p2,=plt.plot(Vfv,IT2)  
 p3,=plt.plot(Vfv,IT3)  
 plt.legend([p3, p2, p1], ["T=60","T=40", "T=25"])  
 plt.ylabel("Corriente[A]")  
 plt.xlabel("Tension[V]")  
 plt.show()     
 plt.savefig('img1.png')  
 #grafica de potencia, pára las condiciones anteriores  
 plt.figure(2)  
 p1,=plt.plot(Vfv,IT1*Vfv)  
 p2,=plt.plot(Vfv,IT2*Vfv)  
 p3,=plt.plot(Vfv,IT3*Vfv)  
 plt.legend([p3, p2, p1], ["T=60","T=40", "T=25"])  
 plt.ylabel("Potencia[W]")  
 plt.xlabel("Tension[V]")  
 plt.show()   
 plt.savefig('img2.png')  
 # respuesta de la corriente cuando variamos G  
 # y mantenemos la temperatura constante  
 G=np.array([0.5,0.75,1])  
 IG1=ipanel(Vfv,T[0],G[0],21.7)  
 IG2=ipanel(Vfv,T[0],G[1],21.7)  
 IG3=ipanel(Vfv,T[0],G[2],21.7)  
 plt.figure(3)  
 p1,=plt.plot(Vfv,IG1)  
 p2,=plt.plot(Vfv,IG2)  
 p3,=plt.plot(Vfv,IG3)  
 plt.legend([p3, p2, p1], ["G=1.0","G=0.75", "G=0.5"])  
 plt.xlabel("Tension[V]")  
 plt.ylabel("Corriente[A]")  
 plt.show()   
 plt.savefig('img3.png')  
 #grafica de potencia, pára las condiciones anteriores  
 plt.figure(4)  
 p1,=plt.plot(Vfv,IG1*Vfv)  
 p2,=plt.plot(Vfv,IG2*Vfv)  
 p3,=plt.plot(Vfv,IG3*Vfv)  
 plt.legend([p3, p2, p1], ["G=1.0","G=0.75", "G=0.5"])  
 plt.xlabel("Potencia[W]")  
 plt.ylabel("Corriente[A]")  
 plt.show()   
 plt.savefig('img4.png')  







No hay comentarios:

Publicar un comentario