利用二極管的P-N結的I-V特性測量Boltzmann常數

■ 前言


在網文 An Electronic Mesurement of the Boltzmann’s Constant Using I-V Characterisctic of a Silicon 2N2309 Diode 中介紹了使用三極管2N3094來測量 Boltzmann Constant 的方法。

由於這個方法簡便易行,所使用的設備也是大多數電子實驗室都具備,所以稱爲很多電子類課程中,學生喜歡做的​電子實驗。​

▲ Ludwig Boltzmann(1844-1904) 以及Maxwell-Boltzmann 分佈

▲ Ludwig Boltzmann(1844-1904) 以及Maxwell-Boltzmann 分佈

玻爾茲曼常數(Boltzmann constant),通常使用k,kBk,kB表示,是指有關於溫度及能量的一個物理常數。玻爾茲曼是一位奧地利物理學家,在統計力學的理論有重大貢獻,玻爾茲曼常數具有相當重要的地位。

▲ Boltzmann常數

 

01實驗及數據分析


1.基於2N3904的Boltzmann常數

在PN結兩邊,存在一個由電子-空穴擴散而形成的耗散區,以及伴隨着的接觸電位V0V_0區,只有熱量動能超過V0V_0的電子才能夠從n型區域穿越到p型區域。根據統計力學原理,處在熱平衡下電子的動能分佈遵循 玻爾茲曼分佈 。具有能量爲eV0eV_0的概率爲:

其中idi_d是漂移電流,aa是比例常數,TT是溫度,kk是玻爾茲曼常數。

▲ PN結的結構示意圖

▲ PN結的結構示意圖

這股漂移電流在耗散區建立一個電場EdE_d。到外部電壓VV施加在PN結,產生電場EDE_D,產生電流:

這樣,外部總電流爲:

在推文開始提到的文章中,使用 2N3904 測試二極管的I-V特性。對於2N23904的電流放大和轉換,選擇了 LF356 運放進行I-V轉換。 LF356的偏置電壓爲10mA和偏置電流爲30pA。

下面是實驗所使用的電路圖。根據Measurement of Boltzmann’s constant 文獻中描述,測量A,B兩點的電壓,便可以建立起Q1Q_1的發射結對應的電壓與電流之間的關係。

▲ 基於2N3904的PN結測量Boltzmann常數

▲ 基於2N3904的PN結測量Boltzmann常數

後級的 LF351 組成電流-電壓轉換電路,根據電路中的參數,B點的電壓與流經Q1Q_1集電極電流之間的關係爲:UB=IQ1C×104U_B = I_{Q1C} \times 10^4

▲ JFET輸入的OPAMP-LF351運放

▲ JFET輸入的OPAMP-LF351運放

在實驗中,使用DP1308可編程直流電源的-25V輸出電壓串聯一個10kΩ電阻做爲A點給定電源。使用FLUKE45測量A點電位,使用DM3068 6126{1 \over 2} 位數字萬用表測量B點的電壓並自動記錄。

2. 測量數據分析

設置數字直流電源DP1308輸出電壓從**-0.2到-10V**,同時測量A,B兩點的電壓變化,並換算成PN結的電壓-電流關係,繪製如下。
▲ 測量輸入電壓與電流曲線

▲ 測量輸入電壓與電流曲線

vv=[0.19666,0.29133,0.38548,0.46684,0.50835,0.52833,0.54163,0.55082,0.55782,0.56394,0.56880,0.57302,0.57684,0.58020,0.58313,0.58579,0.58826,0.59053,0.59258,0.59455,0.59635,0.59811,0.59976,0.60135,0.60275,0.60409,0.60543,0.60665,0.60770,0.60898,0.61006,0.61118,0.61223,0.61328,0.61428,0.61518,0.61598,0.61692,0.61765,0.61840,0.61921,0.61997,0.62064,0.62134,0.62205,0.62278,0.62345,0.62408,0.62466,0.62535,0.62587,0.62648,0.62706,0.62764,0.62818,0.62867,0.62918,0.62968,0.63024,0.63069,0.63112,0.63165,0.63213,0.63249,0.63295,0.63346,0.63395,0.63427,0.63469,0.63506,0.63545,0.63586,0.63621,0.63659,0.63696,0.63735,0.63777,0.63817,0.63844,0.63878,0.63909,0.63933,0.63971,0.64012,0.64046,0.64071,0.64112,0.64151,0.64182,0.64218,0.64246,0.64269,0.64300,0.64331,0.64365,0.64398,0.64429,0.64452,0.64475,0.64512]
cc=[0.00028,0.00066,0.00111,0.00309,0.00934,0.01789,0.02737,0.03718,0.04723,0.05752,0.06778,0.07812,0.08864,0.09908,0.10968,0.12018,0.13074,0.14143,0.15200,0.16262,0.17335,0.18394,0.19461,0.20535,0.21598,0.22666,0.23746,0.24814,0.25882,0.26961,0.28032,0.29097,0.30182,0.31250,0.32317,0.33402,0.34473,0.35559,0.36628,0.37702,0.38788,0.39856,0.40931,0.42017,0.43090,0.44163,0.45252,0.46324,0.47399,0.48485,0.49542,0.50630,0.51708,0.52794,0.53868,0.54945,0.56033,0.57108,0.58183,0.59272,0.60346,0.61422,0.62511,0.63587,0.64665,0.65752,0.66831,0.67906,0.68997,0.70074,0.71148,0.72239,0.73315,0.74391,0.75482,0.76557,0.77648,0.78723,0.79801,0.80891,0.81966,0.83042,0.84134,0.85209,0.86286,0.87379,0.88452,0.89531,0.90623,0.91701,0.92777,0.93868,0.94950,0.96025,0.97118,0.98193,0.99271,1.00364,1.01442,1.02530]

利用模型(3)匹配上述測量數據,將模式簡化成下帶有參數[a,b,c]的指數函數關係,利用前面測量的PN結I-V數據,使用SCIPY.OPTIMIZE中的curve_fit函數進行函數擬合,獲得參數[a,b,c]的數值。

from scipy.optimize         import curve_fit
vv, cc = tspload('iv2n3904', 'vv', 'cc')
def func(x, a, b, c):
    return a * exp(x * b) + c
param = [0.001, 0.02, 0.0]
param, conv = curve_fit(func, vv, cc, p0=param)
printf(param)

測量參數爲:

a=2.33332986e-11
b=3.79731168e+01
c=8.85188988e-03

由模式(3)可以知道,參數b與Boltzmann常數之間的關係:

將常數e, T = 300(27攝氏度)代入上面公式,可以得到:


這個數值比現在測到得到精確的Botlzmann常數大了1.9%左右。在上述時間條件下,這個數值非常精確了。

3. 基於NPN 8050測試Boltzmann常數

將前面所使用的三極管2N3904更換成另外一款NPN性的硅三極管8050,使用相同的測試方案完成8050的b-e結的電壓-電流測試,所得到的數據曲線如下:
▲ 測試NPN8050的發射極PN結的I-V曲線

▲ 測試NPN8050的發射極PN結的I-V曲線

使用相同的方法進行建模,並計算參數:

這個數值比精確Boltzmann常數大了3.29%。

4. 將2N3904的C.E對換測量

測量三級管b-c之間的PN結的電壓與電流曲線。在上述實驗中將2N3904的c,e管教互換,測量得到的PN結電流-電壓曲線如下:
▲ 2N3904的BC的PN結的電壓與電流關係

▲ 2N3904的BC的PN結的電壓與電流關係

這個結果比精確Boltzmann常數大了14.2%。

5. 只使用2N3904的BE進行測量

▲ 直接對2N3904 b-e PN結測量對應的電壓與電流之間的關係曲線

▲ 直接對2N3904 b-e PN結測量對應的電壓與電流之間的關係曲線

根據測量的電壓電流曲線,可以得到對應的模型參數和Boltzmann常數如下:

這個數值比起精確的Boltzmann常數的數值高了78.1%。
▲ 2N3904的B-E結的I-V曲線

▲ 2N3904的B-E結的I-V曲線

 

02二極管的分段特性對結果的影響


在博文 二極管極低電流I-V特性測量 中,給出了二極管PN結的分段指數特性,即模型(3)中的電流I0I_0在不同的前向電流的情況下取值是不同相同,這個變化也會導致測量的Boltzmann常數發生變化。

在實驗[02-1]中,選擇不同測量數據的來擬合估算Boltzmann常數會產生一定的變化。下面選擇2N3904測量數據中,從數據編號n=10(對應電流:0.06mA)開始,結束數據編號n從50變化到100,使用模型(3)計算相應的Boltzmann常數,對應的誤差曲線如下:

▲ 不同的二極管電流計算Boltzmann常數誤差變化

▲ 不同的二極管電流計算Boltzmann常數誤差變化

從數值計算結果來看,使用前面數據測量範圍(10~78),對應電流(0.06mA變化到0.7mA)時,測到得到的Boltzmann的誤差最小。

 

※ 結論


1.PN測量不同方案比較

使用相同的PN結的模型,對於四種不同的方案測量了Boltzmann常數,其中包括有兩種不同型號硅NPN雙極性三極管,三極管的b-e,b-c結的測量,以及直接測量b-e的PN結電壓電流的情況。

序號 方法描述 Boltzmann常數 誤差(%)
1 2N3904的b-e的PN結 1.406e-23 1.87%
2 8050的b-e的PN結 1.426e-23 3.29%
3 2N3904的b-c的PN結 1.577e-23 14.24%
4 2N3904的b-e的PN結 直接測量 2.459e-23 78.09%

通過前面的實驗,可以看到使用2N3904基極接地的配置,測量的結果誤差最小。更換NPN晶體管爲8050,測量的結果偏大一些。
如果將2N3904的C,E極進行對換,雖然從晶體管的結構上是對稱的,但是結果誤差更大。

由於PN結電壓-電流模型中的參數隨着電流不同,導數PN結附近半導體內部的電子與空閒運動模式變化,從而使得模型參數也發生變化。所以使用不同電流範圍數據,測量數的Boltzmann的數據有所變化

2.參考文獻

  1. Measurement of Boltzmann’s constant . Phys. Educ. 20 1996. Printed in Great Britain.

▲ 測試電路方案

▲ 測試電路方案

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# MEAS1.PY                     -- by Dr. ZhuoQing 2020-07-04
#
# Note:
#============================================================

from headm import *
from tsmodule.tsvisa        import *
from tsmodule.tsstm32       import *

dp1308open()
dm3068open()

setv = linspace(0.2, 10, 100)
vdim = []
idim = []

dp1308n25v(0)
time.sleep(2)

for v in setv:
    dp1308n25v(v)
    time.sleep(2)

    meter = meterval()
    iv = dm3068vdc()

    ic = iv / 10

    vdim.append(meter[0])
    idim.append(ic)

    printff(v, ic, meter[0])

dp1308n25v(0)

tspsave('iv2N3904-1', vv=vdim, cc=idim)
plt.plot(vdim, idim)
plt.xlabel("Voltage(V)")
plt.ylabel("Current(mA)")
plt.grid(True)
plt.show()

#------------------------------------------------------------
#        END OF FILE : MEAS1.PY
#============================================================
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# CAL1.PY                      -- by Dr. ZhuoQing 2020-07-04
#
# Note:
#============================================================

from headm import *
from scipy.optimize         import curve_fit

vv, cc = tspload('iv2n3904-1', 'vv', 'cc')
#vv, cc = tspload('iv8050-2', 'vv', 'cc')

e = 1.602e-19
T = 273 + 27

#------------------------------------------------------------
def func(x, a, b, c):
    return a * exp(x * b) + c

#------------------------------------------------------------
param = [0.001, 0.02, 0.0]
param, conv = curve_fit(func, vv, cc, p0=param)
printf(param)

b = param[1]

printf(e/(b*T))

ccal = func(vv, *param)

plt.plot(vv, cc, label='Measure')
plt.plot(vv, ccal, label='Modal')
plt.xlabel("Voltage(V)")
plt.ylabel("Current(mA)")
plt.grid(True)
plt.legend(loc="upper right")
plt.show()

#------------------------------------------------------------
#        END OF FILE : CAL1.PY
#============================================================
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章