Get a sense of these formulas by seeing the huge effect of temperature on semiconductor properties.
%matplotlib inline
import matplotlib as mpl
from pylab import *
#B_Si = (7.3e15)**2 #1.08e31 # K^-3 cm^-6 # ?? SedraSmith version
B_Si = (5.2e15)**2 # Razavi (2.1)
Eg_Si = 1.12 # eV (=1.602 x 10-19 J)
KB = 8.62e-5 # eV / K
def ni2(T, B=B_Si, Eg=Eg_Si):
return B * T**3 * exp(-Eg / (KB * T))
def ann_temp(T=25, text='Room temp'):
"""Helper to add an arrow to room temperature."""
ax = gca()
x,y = (T, sqrt(ni2(T+273.15)))
plot(x, y, 'o')
ax.annotate(text, xy=(x,y), xytext=(x, y/5),
arrowprops=dict(arrowstyle='->',))
# increase sizes for display
mpl.rcParams.update({'figure.figsize': (12.0, 8.0), 'font.size': 18,})
tempK = linspace(1, 400)
semilogy(tempK, sqrt(ni2(tempK)))
title('Thermally-generated free carrier density, $n_i$')
ylabel('carrier density ($cm^{-3}$)')
xlabel('Temperature (Kelvin)')
grid(True)
For a non-bogus formula, check that we get $n_i = 0$ at $T=0\,K$.
commercial =(0, 85)
industrial = (-40, 100)
automotive = (-40, 125)
military = (-55, 125)
for tr,name in ((military, 'Military'),
(automotive, 'Automotive'),
(industrial, 'Industrial'),
(commercial, 'Commercial'),):
tempC = arange(tr[0], tr[1], 1)
tempK = tempC + 272.15
semilogy(tempC, sqrt(ni2(tempK)),
label='%s (%i to %i)' % (name, tr[0], tr[1]),
linewidth=4)
legend(loc='upper left')
ann_temp(300-272)
ylabel('Carrier density, $n_i$ ($cm^{-3}$)')
xlabel('Temperature ($^\circ C$)')
title('Intrinsic free carrer density over temperature')
grid(True)
THIS IS A HUGE RANGE !!!
... and plain huge numbers
How do they compare to the number of atoms in the crystal?
Find the values of the intrinsic carrier concentration $n_i$ for silicon at -55, 0, 20, 75, and 125 $^\circ C$ in $\# / cm^3$.
At each temperature, what fraction of the atoms are ionized? (Silicon crystal has about $5 x 10^{22}$ $\text{atoms} / cm^3$).
print(' T n #/cm3 fraction free')
for t in (-55, 0, 20, 75, 125):
n = sqrt(ni2(t+273.15))
print('%3i %0.2e %.02e' % (t, n, n/5e22))
So, even at $125^\circ C$, only $1$ atom in $10^{10}$ is contributing a free electron. In this context, the numbers are pretty remarkable that such a small fraction of free electrons are responsible for all of semiconductor operation!
Calculate the value of $n_i$ for gallium arsenide (GaAs) at T=300K.
B_GaAs = (3.56e14)**2 # B or B^2 depends on which formula you are using! -> check!
Eg_GaAs = 1.42
ni = sqrt(ni2(300, B=B_GaAs, Eg=Eg_GaAs))
print('%.3g (cm^-3)' % ni)