Inleiding¶
De werking van een fotovoltaïsche zonnecel is gebaseerd op de interactie tussen fotonen (met een bepaalde energie ) en de vrije elektronen in een halfgeleidermateriaal. De elektronen kunnen door interactie met een invallend foton naar een hoger energieniveau worden gebracht. Als het elektron vervolgens terugvalt naar zijn oorspronkelijke energieniveau, kan de vrijgekomen energie worden gebruikt om extern elektrische stroom te genereren. In een beschouwing van een goede keuze voor de bandgap-energie (die afhangt van het gekozen materiaal), moeten we twee ‘tegenstrijdige’ situaties beschouwen:
Wanneer een invallend foton een energie heeft die groter is dan de zogenaamde bandgap-energie van het halfgeleidermateriaal (), dan zal de energie van een elektron in het halfgeleidermateriaal toenemen met een hoeveelheid energie . Het “overschot” aan foton-energie () wordt omgezet in warmte, en gaat “verloren”. Het deel van de foton-energie dat in nuttige energie wordt omgezet neemt dus toe als de bandgap-energie groter wordt.
Wanneer het invallend foton een energie heeft die kleiner is dan de bandgap-energie van het halfgeleidermateriaal (), dan zal de energie van een elektron niet toenemen. De foton-energie wordt dan omgezet in warmte, en gaat “verloren”. Het aantal fotonen dat leidt tot nuttige energie neemt dus af als de bandgap-energie groter wordt.
Het resultaat van bovenstaande twee effecten is dat er een optimale bandgap-energie is waarvoor de zonnecel een maximale hoeveelheid foton-energie omzet in nuttige energie. In deze opgave gaan we uitwerken wat de optimale bandgap-energie is van een fotovoltaïsche zonnecel, voor invallende straling die overeenkomt met het fotonen-spectrum zoals uitgestraald door de zon. We beschouwen de zon als een zwarte straler met temperatuur . Daarbij, de bandgap-energie van silicium zonnecellen is .
Stralingswet van Planck – analytisch en numeriek¶
Volgens de stralingswet van Planck wordt de energie (in ) uitgestraald door een zwart oppervlak met temperatuur binnen een golflengte-interval tussen en gegeven door de Planck-kromme:
met:
= constante van Planck =
= lichtsnelheid =
= golflengte in
= absolute temperatuur in
= constante van Boltzmann =
Onderstaande figuur laat zien hoe de verdeling van de stralingsenergie over de golflengtes afhangt van de temperatuur van de straler. We zien dat de zon (in goede benadering een zwarte straler met een temperatuur van ) de meeste stralingsenergie uitzendt bij zichtbaar licht golflengtes ().

Figure 1:De intensiteit van de uitgezonden straling als functie van de golflengte voor verschillende temperaturen van zwarte stralers. Figuur van wiki
In deze opgave gaan we analyseren welke implicaties de Planck kromme van de zon heeft voor het rendement van een fotovoltaïsche zonnecel.
Tijdens de analyse colleges hebben we afgeleid dat de totale energie die door een zwart oppervlak met temperatuur wordt gegeven door
met
Integralen kunnen we benaderen met een zogenaamde Riemann som. Dit is geïllustreerd in onderstaande figuur (voor een andere functie dan de Planck-kromme).

Figure 2:De integraal, of oppervlak onder een grafiek, kan benaderd worden met de Riemann som. Figuur van wiki
met
Deze Riemann-som kunnen we oplossen met een Python-script. Uiteraard kunnen we niet een oneindig aantal stapjes berekenen in een computer. Daarom benaderen we in het Python-programma de Riemann-som voor een eindig aantal stapjes. Dat kan omdat de functie exponentieel afneemt voor grote golflengtes:
waarbij we ‘slechts’ stappen nemen met . {note} Links, midden, rechts De Riemann-som kun je links, midden (centered) en rechts nemen. Voor de Planck kromme kiezen we deze rechts (door te beginnen bij ). Zouden we kiezen, dan krijgen we ... dat is niet gewenst.
{exercise} Riemannsom :label: ex_Riemann Schrijf een Python programma dat de benaderde Riemann som, vergelijking (4), uitrekent voor
Herhaal, om te controleren of we groot genoeg hebben gekozen en of we klein genoeg hebben gekozen, je berekening voor
Bedenk welke waarde van N je moet nemen voor een eerlijk vergelijk.
Vergelijk beide resultaten met de verwachte uitkomst gegeven als vergelijking (2).
import numpy as np
import matplotlib.pyplot as plt
#constanten:
h = 6.626e-34 # Planck's constant (J·s)
c = 2.998e8 # speed of light (m/s)
k = 1.381e-23 # Boltzmann constant (J/K)
T = 5800
a = h * c / (k * T) # vereenvoudiging van de som
o = 5.670*10**-8 # constante van boltzmann
# Functie
def E_T(l0, N):
return (2*np.pi*h*c**2)*np.sum((1)/((l0*i)**5*(np.exp(a/(l0*i))-1))*l0 for i in range(1,N+1))
E = E_T(10*10**-9,300)
E2 = E_T(3*10**-9,1000)
check = o * T**4
print('De totale energie bij een delta lambda van 10 nm en een N van 300 is',E,'J')
print('De totale energie bij een delta lambda van 3 nm en een N van 1000 is',E2,'J')
print('volgens de eerste formule moet uit de gegevens komen dat deze een totale energie heeft van',check,'J')De totale energie bij een delta lambda van 10 nm en een N van 300 is 62890429.07000511 J
De totale energie bij een delta lambda van 3 nm en een N van 1000 is 62886247.89776597 J
volgens de eerste formule moet uit de gegevens komen dat deze een totale energie heeft van 64164532.32 J
C:\Users\korne\AppData\Local\Temp\ipykernel_14412\3013309854.py:15: DeprecationWarning: Calling np.sum(generator) is deprecated, and in the future will give a different result. Use np.sum(np.fromiter(generator)) or the python sum builtin instead.
return (2*np.pi*h*c**2)*np.sum((1)/((l0*i)**5*(np.exp(a/(l0*i))-1))*l0 for i in range(1,N+1))
C:\Users\korne\AppData\Local\Temp\ipykernel_14412\3013309854.py:15: RuntimeWarning: overflow encountered in exp
return (2*np.pi*h*c**2)*np.sum((1)/((l0*i)**5*(np.exp(a/(l0*i))-1))*l0 for i in range(1,N+1))
De waarden van de riemannsom komen overeen met elkaar, maar gaan beter kloppen met wat het hoort te zijn als de N veel hoger wordt genomen.
Bepaling optimale bandgap-energie van een fotovoltaïsche zonnecel¶
Een foton met golflengte heeft een energie . Met vergelijking (1) vinden we nu dat het aantal fotonen dat wordt uitgestraald door een zwart oppervlak met temperatuur binnen een golflengte-interval tussen en wordt gegeven door
Fotonen met een energie groter dan de bandgap-energie leveren een nuttige energie . Dit is het geval voor fotonen met een golflengte . Fotonen met een energie kleiner dan de bandgap-energie leveren een nuttige energie 0. Dit is het geval voor fotonen met een golflengte . De totale energie geleverd door de zonnecel bedraagt dus
met .
{exercise}
Schrijf een Python programma dat bovenstaande Riemann som (4) uitrekent voor een gegeven en
Bereken en plot als functie van voor .
Wat is, volgens deze modelberekeningen, de optimale bandgap-energie (in eV) voor een zonnecel?
#constanten:
h = 6.626e-34 # Planck's constant (J·s)
c = 2.998e8 # speed of light (m/s)
k = 1.381e-23 # Boltzmann constant (J/K)
T = 5800
a = h * c / (k * T) # vereenvoudiging van de som
def E_T_2(l0, Eg):
lambda_g = h * c / Eg
N = int(lambda_g / l0)
return (2*np.pi*c*Eg)*np.sum(((1)/((l0*i)**4*(np.exp(a/(l0*i))-1)))*l0 for i in range(1,N+1))
Eg_ev = 1.1
Eg = 1.1*1.602*10**(-19)
b_1 = E_T_2(10**-9, Eg)
Eg_t = np.linspace(0.5,2,100)
Eg_test = Eg_t*1.602*10**(-19)
E_tot = [E_T_2(10**-9, Eg) for Eg in Eg_test]
plt.figure()
plt.plot(Eg_t,E_tot,"r-")
plt.plot(Eg_ev,b_1,"k.")
plt.xlabel("Bandgap E_g [eV]")
plt.ylabel("Totale nuttige energie")
plt.show()C:\Users\korne\AppData\Local\Temp\ipykernel_14412\3085693558.py:11: DeprecationWarning: Calling np.sum(generator) is deprecated, and in the future will give a different result. Use np.sum(np.fromiter(generator)) or the python sum builtin instead.
return (2*np.pi*c*Eg)*np.sum(((1)/((l0*i)**4*(np.exp(a/(l0*i))-1)))*l0 for i in range(1,N+1))
C:\Users\korne\AppData\Local\Temp\ipykernel_14412\3085693558.py:11: RuntimeWarning: overflow encountered in exp
return (2*np.pi*c*Eg)*np.sum(((1)/((l0*i)**4*(np.exp(a/(l0*i))-1)))*l0 for i in range(1,N+1))

E_g = 1.602E-19 * np.linspace(0.5, 2, 1000)
E_g_T = np.array([])
#your code/answer