化I-V測(cè)試系統(tǒng)設(shè)計(jì)與實(shí)操指南)
1. 為什么2400和LabVIEW是I-V測(cè)試的黃金搭檔搞半導(dǎo)體器件測(cè)試、傳感器特性分析或者材料電學(xué)性能研究的朋友對(duì)I-V曲線肯定不陌生。不管是二極管的正向壓降、太陽(yáng)能電池的填充因子還是憶阻器的阻變特性最終都要落到一條電流-電壓曲線上。而2400源表加LabVIEW這套組合在實(shí)驗(yàn)室里出現(xiàn)的頻率極高幾乎成了中小型I-V測(cè)試系統(tǒng)的標(biāo)配。2400指的是Keithley 2400系列源表它把精密電源、電流表、電壓表和電子負(fù)載集成在一臺(tái)儀器里能同時(shí)輸出和測(cè)量。LabVIEW則是圖形化編程環(huán)境用來(lái)做儀器控制、數(shù)據(jù)采集和界面開(kāi)發(fā)。兩者通過(guò)SCPI命令經(jīng)GPIB、USB或串口通信就能搭出一套自動(dòng)化I-V掃描系統(tǒng)。這套方案解決的核心問(wèn)題是手動(dòng)逐點(diǎn)調(diào)電壓、讀電流、記數(shù)據(jù)效率低還容易出錯(cuò)而自動(dòng)化掃描可以一次性完成幾百個(gè)點(diǎn)的采集還能實(shí)時(shí)畫(huà)曲線、存數(shù)據(jù)、做后續(xù)分析。適合誰(shuí)看電子工程、材料科學(xué)、物理實(shí)驗(yàn)方向的學(xué)生和工程師尤其是剛接觸源表編程、想快速搭起測(cè)試平臺(tái)的人。下面我把這套系統(tǒng)的設(shè)計(jì)思路、關(guān)鍵細(xì)節(jié)、實(shí)操流程和踩坑經(jīng)驗(yàn)完整拆一遍。2. 系統(tǒng)整體設(shè)計(jì)與方案選型拆解2.1 為什么選2400而不是普通電源加萬(wàn)用表普通電源加萬(wàn)用表的組合也能測(cè)I-V但有幾個(gè)硬傷。第一是同步問(wèn)題電源設(shè)一個(gè)電壓萬(wàn)用表讀電流兩者之間有延遲掃描速度快的時(shí)候數(shù)據(jù)對(duì)不上。第二是精度和量程普通萬(wàn)用表測(cè)微安級(jí)電流誤差很大而2400的電流分辨率可以到1pA級(jí)別具體看型號(hào)檔位覆蓋從皮安到安培的寬范圍。第三是四象限工作能力2400既能當(dāng)源又能當(dāng)載測(cè)太陽(yáng)能電池這類(lèi)需要吸收功率的器件時(shí)特別方便。2400系列有幾個(gè)常見(jiàn)型號(hào)2400是基礎(chǔ)款2410功率更高2420適合脈沖測(cè)試2430和2440帶電容測(cè)量功能。做常規(guī)直流I-V掃描2400就夠用。它的電壓范圍從±200μV到±200V電流從±1pA到±1A最大功率20W大部分器件測(cè)試都能覆蓋。2.2 通信接口怎么選GPIB、USB還是串口2400支持GPIB、RS-232和USB部分型號(hào)。GPIB最穩(wěn)定延遲低適合長(zhǎng)時(shí)間連續(xù)掃描但需要額外的GPIB卡和線纜成本高。USB即插即用適合單臺(tái)儀器快速搭建但長(zhǎng)時(shí)間高頻掃描時(shí)偶爾會(huì)有緩沖區(qū)問(wèn)題。RS-232最簡(jiǎn)單但速度慢適合低速掃描場(chǎng)景。我實(shí)測(cè)下來(lái)如果只是做常規(guī)I-V曲線USB完全夠用LabVIEW里用VISA就能直接控制。如果要做高速瞬態(tài)測(cè)量或者多臺(tái)儀器同步GPIB更靠譜。選接口的時(shí)候還要注意LabVIEW的VISA驅(qū)動(dòng)是否支持NI-VISA一般都能識(shí)別主流接口。2.3 LabVIEW程序架構(gòu)狀態(tài)機(jī)還是簡(jiǎn)單順序LabVIEW寫(xiě)儀器控制程序常見(jiàn)架構(gòu)有兩種簡(jiǎn)單順序結(jié)構(gòu)和狀態(tài)機(jī)。順序結(jié)構(gòu)適合流程固定的掃描比如從-1V掃到1V步進(jìn)10mV每個(gè)點(diǎn)延時(shí)50ms采集完就結(jié)束。狀態(tài)機(jī)適合需要交互的場(chǎng)景比如用戶(hù)可以選擇掃描模式、設(shè)置參數(shù)、暫停繼續(xù)、實(shí)時(shí)顯示。我建議用生產(chǎn)者-消費(fèi)者模式生產(chǎn)者負(fù)責(zé)儀器通信和數(shù)據(jù)采集消費(fèi)者負(fù)責(zé)數(shù)據(jù)處理和界面更新。這樣掃描速度快的時(shí)候界面不會(huì)卡數(shù)據(jù)也不會(huì)丟。隊(duì)列傳遞數(shù)據(jù)超時(shí)設(shè)置合理基本不會(huì)出問(wèn)題。2.4 SCPI命令的核心邏輯SCPI是標(biāo)準(zhǔn)命令集2400的命令格式很規(guī)整。核心命令就幾條*RST 復(fù)位儀器 :SOUR:FUNC VOLT 設(shè)置源功能為電壓 :SENS:FUNC CURR 設(shè)置測(cè)量功能為電流 :SOUR:VOLT:RANG 20 設(shè)置電壓量程 :SENS:CURR:RANG:AUTO ON 電流量程自動(dòng) :SOUR:VOLT 1.0 輸出1V :READ? 觸發(fā)并讀取掃描的時(shí)候可以用循環(huán)逐點(diǎn)設(shè)置電壓再讀取也可以用2400內(nèi)置的掃描功能。內(nèi)置掃描更快但靈活性差一些。我一般用LabVIEW循環(huán)逐點(diǎn)控制方便加自定義延時(shí)和判斷邏輯。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)3.1 電壓掃描參數(shù)怎么定掃描參數(shù)包括起始電壓、終止電壓、步進(jìn)和每點(diǎn)延時(shí)。步進(jìn)決定曲線分辨率延時(shí)決定測(cè)量穩(wěn)定性。比如測(cè)一個(gè)硅二極管正向?qū)▍^(qū)在0.6V到0.8V之間變化劇烈步進(jìn)可以設(shè)小一點(diǎn)比如5mV反向區(qū)變化平緩步進(jìn)可以大一點(diǎn)比如50mV。但為了程序簡(jiǎn)單通常統(tǒng)一步進(jìn)。延時(shí)怎么定要看器件的響應(yīng)時(shí)間和源表的建立時(shí)間。2400的電壓建立時(shí)間在微秒級(jí)但器件本身可能有電容效應(yīng)尤其是半導(dǎo)體器件需要一定時(shí)間穩(wěn)定。我一般先設(shè)50ms看曲線是否平滑如果噪聲大就加到100ms或200ms。延時(shí)太短數(shù)據(jù)跳動(dòng)大延時(shí)太長(zhǎng)掃描慢。掃描點(diǎn)數(shù)計(jì)算公式點(diǎn)數(shù) (終止電壓 - 起始電壓) / 步進(jìn) 1。比如從-1V到1V步進(jìn)10mV就是201個(gè)點(diǎn)。每個(gè)點(diǎn)延時(shí)50ms總時(shí)間約10秒。這個(gè)時(shí)間可以接受。3.2 電流量程和合規(guī)值設(shè)置電流量程自動(dòng)擋方便但切換量程需要時(shí)間可能影響掃描速度。如果知道電流大致范圍可以手動(dòng)設(shè)量程。比如測(cè)二極管正向電流在mA級(jí)設(shè)100mA量程反向電流在nA級(jí)設(shè)1μA量程。但一條曲線上電流變化幾個(gè)數(shù)量級(jí)手動(dòng)量程就不合適了還是用自動(dòng)。合規(guī)值Compliance是保護(hù)器件的關(guān)鍵參數(shù)。測(cè)二極管時(shí)電流合規(guī)設(shè)10mA電壓再高電流也不會(huì)超過(guò)10mA避免燒器件。測(cè)太陽(yáng)能電池時(shí)電壓合規(guī)設(shè)0V或負(fù)值因?yàn)殡姵厥枪╇姷?。合?guī)值設(shè)不對(duì)要么測(cè)不到數(shù)據(jù)要么損壞器件。3.3 四線制還是兩線制2400支持兩線制和四線制。兩線制簡(jiǎn)單但導(dǎo)線電阻會(huì)影響測(cè)量精度尤其是測(cè)低阻器件或大電流時(shí)。四線制用兩根線輸出電流兩根線測(cè)量電壓消除導(dǎo)線電阻影響。測(cè)電阻或大電流I-V時(shí)四線制更準(zhǔn)。接線方式前面板有四個(gè)端子Force HI、Force LO、Sense HI、Sense LO。兩線制時(shí)Force和Sense短接。四線制時(shí)分開(kāi)接。LabVIEW程序里不需要改儀器自動(dòng)識(shí)別。3.4 數(shù)據(jù)存儲(chǔ)格式和后續(xù)處理LabVIEW采集的數(shù)據(jù)可以存為T(mén)DMS、CSV或Excel。TDMS是NI的二進(jìn)制格式讀寫(xiě)快適合大量數(shù)據(jù)。CSV通用性好方便用Python或Excel分析。我一般存CSV兩列電壓和電流。后續(xù)用Python畫(huà)圖或者直接在LabVIEW里顯示。數(shù)據(jù)量大時(shí)注意LabVIEW的數(shù)組操作效率。不要每采集一個(gè)點(diǎn)就更新一次圖表可以每10個(gè)點(diǎn)或每50個(gè)點(diǎn)更新一次減少界面刷新開(kāi)銷(xiāo)。4. 實(shí)操過(guò)程與核心環(huán)節(jié)實(shí)現(xiàn)4.1 硬件連接和儀器配置先確認(rèn)2400的通信接口。USB連接時(shí)儀器后面板有個(gè)USB口用方口線連到電腦。開(kāi)機(jī)后在LabVIEW的MAXMeasurement Automation Explorer里掃描儀器應(yīng)該能看到USB0::0x05E6::0x2400::...這樣的設(shè)備名。GPIB連接時(shí)需要GPIB卡和線纜MAX里能看到GPIB0::24::INSTR。儀器前面板設(shè)置按COMM鍵選擇通信接口USB的話設(shè)置地址一般默認(rèn)即可。按CONFIG鍵確認(rèn)SCPI命令集開(kāi)啟。有些2400出廠時(shí)是TSP模式需要切換到SCPI模式否則LabVIEW發(fā)的命令不響應(yīng)。4.2 LabVIEW程序框圖設(shè)計(jì)程序分三部分初始化、掃描循環(huán)、收尾。初始化打開(kāi)VISA會(huì)話發(fā)送復(fù)位命令設(shè)置源功能、測(cè)量功能、量程、合規(guī)值。代碼大概這樣VISA Open - *RST\n - :SOUR:FUNC VOLT\n - :SENS:FUNC CURR\n - :SOUR:VOLT:RANG 20\n - :SENS:CURR:RANG:AUTO ON\n - :SENS:CURR:PROT 0.01\n掃描循環(huán)用For循環(huán)循環(huán)次數(shù)等于點(diǎn)數(shù)。每次計(jì)算電壓值發(fā)送:SOUR:VOLT x\n延時(shí)發(fā)送:READ?\n讀取返回值。返回值是科學(xué)計(jì)數(shù)法字符串需要轉(zhuǎn)成數(shù)值。收尾發(fā)送:SOUR:VOLT 0\n關(guān)閉VISA會(huì)話。4.3 關(guān)鍵代碼片段和參數(shù)計(jì)算電壓計(jì)算起始電壓Vstart步進(jìn)Vstep第i個(gè)點(diǎn)電壓Vi Vstart i * Vstep。注意浮點(diǎn)數(shù)精度可以用整數(shù)運(yùn)算再轉(zhuǎn)浮點(diǎn)。延時(shí)實(shí)現(xiàn)LabVIEW里用Wait (ms)函數(shù)放在設(shè)置電壓和讀取之間。如果延時(shí)要求精確用Timed Loop。讀取解析:READ?返回類(lèi)似1.234567E-03的字符串用Fract/Exp String to Number函數(shù)轉(zhuǎn)換。注意有些返回帶單位或狀態(tài)字需要字符串處理。4.4 實(shí)時(shí)顯示和保存前面板放一個(gè)Waveform GraphX軸電壓Y軸電流。每采集一個(gè)點(diǎn)把數(shù)據(jù)加到數(shù)組里更新圖表。為了流暢可以用Shift Register累積數(shù)據(jù)循環(huán)結(jié)束后一次性顯示。保存用Write to Spreadsheet File兩列數(shù)據(jù)制表符分隔。文件名帶時(shí)間戳避免覆蓋。4.5 實(shí)測(cè)案例硅二極管I-V曲線測(cè)一個(gè)1N4148二極管。起始電壓-1V終止電壓1V步進(jìn)10mV延時(shí)50ms。合規(guī)電流10mA。接線用兩線制Force HI接陽(yáng)極Force LO接陰極。運(yùn)行程序曲線顯示反向電流在nA級(jí)正向在0.6V左右開(kāi)始上升0.7V時(shí)電流約幾mA。曲線平滑沒(méi)有明顯噪聲。如果發(fā)現(xiàn)正向曲線抖動(dòng)增加延時(shí)到100ms。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 儀器連不上怎么辦先檢查MAX里能不能看到儀器??床坏降脑挀QUSB線換USB口重啟儀器和電腦。GPIB的話檢查地址是否沖突。如果MAX能看到但LabVIEW打不開(kāi)檢查VISA版本NI-VISA和LabVIEW版本要匹配。還有一個(gè)常見(jiàn)問(wèn)題2400的通信模式不對(duì)。按COMM鍵看是否在SCPI模式。如果是TSP模式發(fā):SYST:COMM:SCPI:STAT ON切換。5.2 數(shù)據(jù)跳動(dòng)大或曲線不平滑原因可能有幾個(gè)延時(shí)太短器件響應(yīng)沒(méi)穩(wěn)定量程切換頻繁自動(dòng)量程在邊界跳動(dòng)接地不好引入噪聲導(dǎo)線太長(zhǎng)拾取干擾。解決辦法增加延時(shí)手動(dòng)設(shè)量程用屏蔽線縮短導(dǎo)線加濾波電容。如果還不行檢查器件本身是否不穩(wěn)定。5.3 掃描速度慢怎么優(yōu)化掃描速度受限于延時(shí)和通信延遲。優(yōu)化方法減少點(diǎn)數(shù)增大步進(jìn)減小延時(shí)但保證數(shù)據(jù)穩(wěn)定用2400內(nèi)置掃描減少通信次數(shù)用GPIB代替USB。內(nèi)置掃描命令:SOUR:VOLT:STAR -1\n:SOUR:VOLT:STOP 1\n:SOUR:VOLT:STEP 0.01\n:SOUR:SWE:SPAC LIN\n:TRIG:COUN 201\n:READ?。這樣一次觸發(fā)完成整個(gè)掃描速度快很多。5.4 合規(guī)值觸發(fā)導(dǎo)致數(shù)據(jù)中斷合規(guī)值設(shè)太小器件電流超過(guò)合規(guī)儀器進(jìn)入合規(guī)狀態(tài)輸出被限制數(shù)據(jù)就不對(duì)了??磧x器前面板如果COMP指示燈亮說(shuō)明觸發(fā)了合規(guī)。解決辦法增大合規(guī)值或者檢查器件是否短路。5.5 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象可能原因排查方法解決措施儀器連不上接口錯(cuò)誤、模式不對(duì)MAX掃描、檢查COMM設(shè)置換線、切SCPI模式數(shù)據(jù)跳動(dòng)延時(shí)短、噪聲增加延時(shí)、檢查接地加屏蔽、濾波掃描慢點(diǎn)數(shù)多、延時(shí)大減少點(diǎn)數(shù)、優(yōu)化延時(shí)用內(nèi)置掃描合規(guī)觸發(fā)合規(guī)值小看COMP燈增大合規(guī)值曲線異常接線錯(cuò)、器件壞檢查接線、換器件重新接線5.6 獨(dú)家避坑技巧第一掃描前先用萬(wàn)用表確認(rèn)器件好壞避免浪費(fèi)時(shí)間。第二LabVIEW程序里加錯(cuò)誤處理VISA錯(cuò)誤時(shí)彈出提示不要直接退出。第三保存數(shù)據(jù)時(shí)加時(shí)間戳和參數(shù)注釋方便后續(xù)追溯。第四長(zhǎng)時(shí)間掃描時(shí)注意儀器散熱2400連續(xù)工作會(huì)發(fā)熱影響精度。第五如果測(cè)光電器件注意遮光環(huán)境光會(huì)影響結(jié)果。6. 進(jìn)階擴(kuò)展與個(gè)人經(jīng)驗(yàn)分享6.1 多儀器同步和自動(dòng)化如果要做霍爾效應(yīng)測(cè)試需要源表加納伏表加開(kāi)關(guān)矩陣。LabVIEW里可以用多VISA會(huì)話同步觸發(fā)。用GPIB時(shí)可以發(fā)*TRG命令同步。USB的話用軟件觸發(fā)延遲稍大。6.2 數(shù)據(jù)后處理和曲線擬合采集完數(shù)據(jù)可以用Python的scipy做擬合提取理想因子、串聯(lián)電阻等參數(shù)。LabVIEW里也可以用擬合VI但Python更靈活。我一般存CSV然后用Jupyter Notebook分析。6.3 個(gè)人經(jīng)驗(yàn)我搭這套系統(tǒng)的時(shí)候最開(kāi)始用USB掃描速度上不去后來(lái)?yè)QGPIB快了一倍。還有一次合規(guī)值設(shè)太小測(cè)LED時(shí)一直觸發(fā)合規(guī)后來(lái)查到LED正向電流要20mA合規(guī)設(shè)10mA不夠。這些坑踩過(guò)之后現(xiàn)在搭系統(tǒng)基本一次成功。另外LabVIEW的VISA讀取有時(shí)會(huì)超時(shí)尤其是掃描點(diǎn)數(shù)多的時(shí)候??梢栽赩ISA Read前加一個(gè)較大的超時(shí)值比如5000ms。如果還超時(shí)檢查儀器緩沖區(qū)是否滿(mǎn)了可以分批次讀取。最后分享一個(gè)小技巧在LabVIEW前面板加一個(gè)“停止”按鈕掃描循環(huán)里判斷按鈕狀態(tài)可以隨時(shí)中止掃描不用強(qiáng)制退出程序。這個(gè)在調(diào)試時(shí)特別有用。