LabVIEW 光伏PN结. LabVIEW软件和电压源及电流源表及光谱仪,开发一个L-IV测试系统。 要求如下: 1)熟悉图形化编程软件LabVIEW和所应用的硬件仪表; 2)应用图形化编程软件LabVIEW编写数据采集程序 3)应用图形化编程软件LabVIEW编写数据二维分布的L-IV数据显示界面; 4)将编写的数据采集系统与硬件结合实现对半导体光电性能的测量。
在半导体实验室里捣鼓PN结的光电特性测试,总免不了和一堆仪器打交道。去年用LabVIEW给组里搭了套L-IV测试系统,算是摸透了硬件联调的那些坑。这套系统核心就三件套:Keysight B2902A源表负责输出并采集数据,OceanOptics光谱仪同步获取光强参数,加上一台温控台调节PN结温度。
数据采集这块的VI架构挺有意思。先得搞定多设备同步——源表的电压步进必须和光谱仪的光强采样对齐。这里有个野路子:用LabVIEW的共享变量做触发信号同步。下面这段代码负责生成梯形扫描电压:
//电压扫描生成模块 startVoltage := 0 stopVoltage := 5 stepSize := 0.1 scanRate := 100 //ms/step For i := 0 to (stopVoltage - startVoltage)/stepSize currentVoltage := startVoltage + i*stepSize AO Voltage.Write(currentVoltage) Wait(scanRate) AI Current.Read(currentValue) AI LightIntensity.Read(lightValue) DataCluster.Build(currentVoltage, currentValue, lightValue) End For特别注意Wait函数里用Elapsed Time替代普通定时器,防止光谱仪采样丢帧。数据打包成簇后直接扔进生产者-消费者队列,后面显示模块再慢慢处理。
LabVIEW 光伏PN结. LabVIEW软件和电压源及电流源表及光谱仪,开发一个L-IV测试系统。 要求如下: 1)熟悉图形化编程软件LabVIEW和所应用的硬件仪表; 2)应用图形化编程软件LabVIEW编写数据采集程序 3)应用图形化编程软件LabVIEW编写数据二维分布的L-IV数据显示界面; 4)将编写的数据采集系统与硬件结合实现对半导体光电性能的测量。
二维数据显示界面玩了个小花招。传统L-IV曲线都是单维显示,这里用强度图控件做了个电压-光强-电流的三维映射。关键是把采集的离散点插值成矩阵:
//数据矩阵构建 voltageArray := DataCluster.Extract(0) lightArray := DataCluster.Extract(2) currentMatrix := 2D-Array.Init(Size(voltageArray), Size(lightArray)) For each (v, l) in zip(voltageArray, lightArray) rowIndex := FindIndex(voltageAxis, v) colIndex := FindIndex(lightAxis, l) currentMatrix[rowIndex][colIndex] := DataCluster.Extract(1) End For IntensityGraph.Plot(currentMatrix)实测发现三次样条插值比线性插值更适合PN结的非线性特征,这点在代码里用Matrix Interpolate VI的算法选择体现。颜色映射建议用"Hot Metal"调色板,暗电流区域用深蓝表示更直观。
硬件联调时最头疼的是GPIB和USB混用时的时序冲突。后来在设备初始化模块加了硬件握手协议:
//设备初始化序列 GPIB.Write(SOURCE:VOLTAGE:MODE FIXED) USB.Write(SPECTROMETER:INTEGRATION_TIME 100ms) GPIB.WaitForSRQ() //等待源表准备完毕 USB.TriggerArm() //光谱仪进入待触发状态这个顺序不能错,否则光谱仪会提前进入采样状态导致数据错位。实测发现加入50ms的硬件缓冲延迟后,采样同步精度能控制在±2%以内。
最后测试GaAs PN结时,系统成功捕捉到光强0.5Sun下的拐点电压漂移现象。有意思的是,当把数据采集卡换成PXIe-6368后,采样率提升到250kS/s时,居然在反向偏压区发现了微弱的弛豫振荡——这可能是载流子捕获释放导致的瞬态效应。不过这就是另一个课题的故事了。