IoTで使うPython入門 Step5-Python3 VISA⑧DMM Keithley 2000 +電源E3631A 2SC1815のVCE-IC特性
前回、ベース電流をプログラムを書き換えて変更しながら、トランジスタ2SC1815のVCE-IC特性を測りました。2SC1815は小信号用トランジスタでは一番ポピュラです。
ここでは、プログラムでベース電流を順次変化させて、1回の実行で、複数のVCE-IC特性グラフを描けるように修正します。
●ベースの電圧を変える
ベースの電圧を約1Vから5Vへ変化させると、下記のベースに100kΩが入っている回路では、4~44uAのベース電流が流れます。室温は29℃くらいです。
プログラムです。
import visa from time import sleep import matplotlib.pyplot as plt Keithley2000_6_Addr = "GPIB0::6" Keithley2000_18_Addr = "GPIB0::18" AgilentE3631A_Addr = "GPIB1::10" Keysight34461A_Addr = "USB0::0x2A8D::0x1301::MY53216054::0::INSTR" IwatsuVOAC7602_Addr = "ASRL5::INSTR" dataIc =[] dataVc =[] dataVb =[] dataIb =[] g = [] r = visa.ResourceManager() Ic_keithley2000_6 = r.open_resource(Keithley2000_6_Addr) Vc_keithley2000_18 = r.open_resource(Keithley2000_18_Addr) Ib_keysight34461A = r.open_resource(Keysight34461A_Addr) Vb_iwatsuVOAC7602 = r.open_resource(IwatsuVOAC7602_Addr) Ic_keithley2000_6.write("*RST;*CLS") Vc_keithley2000_18.write("*RST;*CLS") Ic_keithley2000_6.write(":CONF:CURR; DC:RANG AUTO") Vc_keithley2000_18.write(":CONF:VOLT:DC:RANG 10") sleep(1) Ib_keysight34461A.write("*RST;*CLS") Vb_iwatsuVOAC7602.write("*RST;*CLS") Ib_keysight34461A.write(":CONF:CURR; DC:RANG AUTO") Vb_iwatsuVOAC7602.write(":CONF:VOLT:DC:RANG AUTO") Vb_iwatsuVOAC7602.write("INIT") sleep(1) print('--start--') agilentE3631A = r.open_resource(AgilentE3631A_Addr) for baseVolt in range(1,7): agilentE3631A.write(":INST:SEL P6V") agilentE3631A.write(":TRIG:SOUR IMM") agilentE3631A.write(":VOLTage:TRIG " + str((float(baseVolt)+0.01)/1.0)) # Vb agilentE3631A.write(":CURR:TRIG 0.5") # max 500mA agilentE3631A.write(":OUTPut ON") agilentE3631A.write("INIT") print('Base V', (float(baseVolt/1.0)) ) sleep(1) agilentE3631A.write(":INST:SEL P25V") agilentE3631A.write(":TRIG:SOUR IMM") agilentE3631A.write(":VOLTage:TRIG 0.0") # Vc agilentE3631A.write(":CURR:TRIG 0.5") # max 500mA agilentE3631A.write(":OUTPut ON") agilentE3631A.write("INIT") sleep(2) dataIc =[] dataVc =[] dataVb =[] dataIb =[] for CorrectorVolt in range(0,55): agilentE3631A.write(":INST:SEL P25V") agilentE3631A.write(":VOLTage:TRIG " + str((float(CorrectorVolt)+0.1)/10.0)) # Vc agilentE3631A.write(":CURR:TRIG 0.5") agilentE3631A.write("INIT") sleep(0.5) Ic = Ic_keithley2000_6.query(":READ?") dataIc.append(Ic) print('Corrector V=', (float(CorrectorVolt/10.0)), ' Ic=', Ic ) Vc = Vc_keithley2000_18.query(":READ?") dataVc.append(Vc) Ib = Ib_keysight34461A.query(":READ?") dataIb.append(Ib) Vb_iwatsuVOAC7602.write("INIT") Vb = Vb_iwatsuVOAC7602.query(":FETCh?") ## dataVb.append(Vb) dataVoltageC = [float(f) for f in dataVc] dataCurrentC = [float(f)*1000 for f in dataIc] dataVoltageB = [float(f) for f in dataVb] dataCurrentB = [float(f)*1000000 for f in dataIb] print('\n', dataVoltageC, "V Vc") print(dataCurrentC, "mA Ic") print(dataVoltageB, "V Vb") print(dataCurrentB, "uA Ib") plt.plot(dataVoltageC, dataCurrentC, marker="o", linestyle='dashed', label=("Vbb=" + str(baseVolt))) plt.xlabel("Corrector Voltage [V]") plt.ylabel("Corrector Current [mA]") plt.legend() plt.grid() plt.show() #atoshimatsu agilentE3631A.write("CURRent:TRIG 0") agilentE3631A.write("VOLTage:TRIG 0") agilentE3631A.write("INIT") sleep(2) print('--done--') agilentE3631A.write(":OUTPut OFF") Ic_keithley2000_6.write(":READ?") Vc_keithley2000_18.write(":READ?") Ib_keysight34461A.write(":READ?") Vb_iwatsuVOAC7602.write("INIT:FETCh?")
実行結果です。DUTは2SC1815-GRです。
ベースの100kΩを10kΩに変更して、同じ測定をしました。コレクタの電流がたくさん流れます。
特徴的なのは、
- データシートより不飽和領域が大きい
- Ib=532uAならVce=5V時に70mAぐらいなのが100mAとたくさん流れている
の2点です。
DUTを2SC1815-Yに変えました。hFEがGRに比べて約半分くらいです。データシートのグラフと、ほぼ同じコレクタ電流になりました。
DUTを氷水につけて観測しました。測定中の温度は12℃ぐらいです。ほんの少し、コレクタ電流が減少しました。
温度変化より、hFEの違いのほうが、特性に大きな差が出ることがわかります。
●直流電流増幅率hFE
hFE = Ic / Ib
(Ic=コレクタ電流、Ib=ベース電流) |
グラフから、読み取って、hFEを計算しました。
Vce=5V、Ib=130uA | Vce=5V、Ib=30uA | |
2SC1815-GR | 308 | 300 |
2SC1815-Y | 153 | 167 |
データシートに書かれたhFEの分類。 O: 70~140, Y: 120~240, GR: 200~400, BL: 350~700