自制100V正向电压控制器:二极管Vf自动测试与IV曲线扫描
2026/8/27 8:00:01 网站建设 项目流程

搞功率器件测试的同行对“正向电压”这四个字应该都不陌生。无论是二极管、整流桥还是MOSFET的体二极管,正向导通压降Vf都是最核心的静态参数。我前阵子接手一批100V耐压等级的二极管的来料检验任务,要求在不同电流下测量Vf并记录归档。手头虽然万用表、稳压电源、电子负载都有,但每个样品都要来回接线、手动切换档位、抄写数据,几百只测下来腰酸背痛,数据还容易抄错。当时就萌生了一个念头:干脆自己动手做一台100V正向电压控制器,把可调压、可恒流、可读回电压电流这些功能集成到一台设备里,电脑上发个指令就能自动测出一条完整的正向IV曲线。

这个项目从需求分析到最终调试完成,前后花了三周左右。这篇文章我会把整台设备的软硬件设计思路、关键电路原理、控制策略和实测数据完整记录下来,也会把调试中遇到的几个典型坑和排查过程一并分享。如果你正准备做二极管参数筛选、功率器件正向特性测试,或者想自制一台简易源表,这篇内容应该能给你一些实打实的参考。

1. 项目背景与需求拆解

1.1 为什么没买现成源表,而要自己搭

先说清楚我当时的测试场景。样品是100V/1A左右的轴向二极管,单批几百只。每种样品要测三个正向电流条件下的Vf:100mA、500mA、1000mA,要求电流稳定、电压读数精确到mV级别。用实验室现成方案的话,就是稳压电源加限流、外串电流表、数字万用表并在二极管两端测压降。听起来不算复杂,但实际干起来全是问题。

第一,接线太多。每次换样品要重新搭电路,台面上到处都是线,手一抖就容易把正负极碰到一起。第二,数据记录靠手写,几百个样品录Excel录到怀疑人生,而且抄错一位小数点根本发现不了。第三,普通稳压电源的电流分辨率不够。很多电源在100mA以下的档位精度差得离谱,设1mA测出来的实际电流可能偏了20%,这种精度去测小电流条件下的Vf基本没有意义。

至于数字源表, Keithley 2400或者B2902A确实好用,但价格摆在那里,而且我这边的测试只需要单象限正向输出,四象限源表的很多功能用不上。综合算下来,自研一台专用的正向电压控制器反而是最合理的方案:不需要双向输出,不需要皮安级电流分辨率,只需要稳定输出0到100V、能设定恒流、能精确读回电压和电流,带一个串口让电脑自动采集就足够了。

1.2 设计指标的边界划分

自己定义设备指标的难点在于卡住“够用就行”这个边界。很多人做仪器喜欢什么都往上加,最后每个功能都做不精。我一开始就明确列了一张需求表,哪些必须做、哪些坚决不做,都写得清清楚楚。

必须做的功能包括:输出电压0到100V,电压设定分辨率优于2mV;恒流模式分四档量程,分别是0.1mA、1mA、10mA、100mA;电压测量误差目标为正负0.2%读数正负10mV;电流测量误差目标为正负0.5%读数正负半个字;必须有软启动防过冲、短路保护和过热保护。暂时不做的功能包括负压输出、四象限工作、300mA以上的大电流、超过200V的高压扩展。

把这些边界写清楚之后,后面画电路板、写固件的时候就再也不用反复纠结某个功能要不要加,整个设计过程顺畅很多。这也是我做这种小型仪器项目的一个经验:边界越清晰,项目越容易在预期时间内落地。

2. 硬件架构与核心电路设计

2.1 整体硬件分层设计思路

整套设备从架构上分为四层:电源层、控制层、模拟输出层和测量层。电源层用外置24V直流适配器供电,板内通过DC-DC产生正负15V、5V和3.3V几路电源轨。正负15V给模拟运放和恒流源供电,输出级最高需要到100V,所以又单独用隔离升压模块把母线电压提升到大约120V,给末级调整管供电。

控制层选的是STM32F103C8T6,主要是便宜、资料多、开发环境成熟。数模转换用了一颗LTC2657,16位分辨率、4通道、内置2.048V基准,SPI接口。模数转换选了ADS1256,24位、8通道、内置可编程增益放大器,在低速精密测量场景下性价比很高。

模拟输出层特别注意了一点:恒压CV单元和恒流CC单元做成了两个完全独立的环路,输出端用继电器做物理切换,而不是共用一套功放再切换反馈方式。为什么这么设计?因为高压环境下,如果CV和CC共用一套输出级,模式切换时要同时改变反馈拓扑和环路参数,搞不好就会有一个环路进入饱和,恢复过程中输出端出现严重过冲。物理上把两套环路彻底隔开,虽然多花了两只继电器和一路功放的成本,但稳定性和安全性都大幅提升,这个取舍我认为非常值得。

测量层是电压和电流两路独立的采样链路。电压采样用精密电阻分压,电流采样用换档采样电阻,两路信号都经过缓冲运放后送入ADS1256。测量链路和控制链路在信号路径上严格分开,避免控制环路的动态变化污染测量结果。

2.2 高精度程控电压源的实现细节

CV单元的信号链路是:DAC输出0到2.048V参考电压,经过两级放大到0到100V。第一级用精密运放OPA2277构成同相放大器,增益固定为5倍,输出0到10.24V。第二级是分立元件搭建的高压推挽放大器,增益为10倍。

有人可能会问,为什么不用PA96这类现成的高压运算放大器,自己搭推挽电路不是很麻烦吗?答案很简单:现成的高压运放价格太高,而且这类器件通常带宽很宽,在直流稳压场景下反而容易引入高频噪声,需要额外做补偿。本项目需要的是低频高精度,不需要MHz级别的带宽,用OPA2277加中功率对管自己搭,成本能省一大截,性能也完全够用。

第二级推挽放大器选用了MJE340(NPN)和MJE350(PNP)这对互补管。它们耐压300V,最大电流500mA,TO-225封装便于散热,在100V压差下工作很稳妥。输出级存在约0.7V的交越区,我通过调节第一级运放的静态工作点,给推挽级设置了约20mA的静态电流,让放大器工作在接近甲乙类的状态,交越失真对输出精度的影响降到了可以忽略的程度。

反馈回路从输出端取信号,经过由1MΩ和10.1kΩ精密电阻组成的分压网络,分压比大约是1比100,反馈信号送回第一级运放构成闭环。这里有个细节:高压端串联的1MΩ电阻我特意选了大封装,因为普通0603贴片电阻在100V电压下长时间工作,可靠性和稳定性都堪忧。最终选的是2512封装的金属膜电阻,单颗耐压500V,余量足够。输出电压与DAC设定值的关系式是Vo = Vdac乘以第一级增益5倍再乘以第二级增益10倍。实际使用时,我在固件里做了一张多点校准表,最终电压设定精度完全能控制到设计指标以内。

2.3 数控恒流源与量程自动切换

CC单元的核心是一个经典运放恒流源结构。DAC输出电压Vset加到运放同相端,运放输出驱动达林顿管,被测器件DUT串联在主回路中,末端接采样电阻Rs到地。采样电阻上的电压Vs等于输出电流Io乘以Rs,这个电压反馈回运放反相端。稳定时有Vset约等于Io乘以Rs,所以输出电流由Io等于Vset除以Rs决定。

这个恒流源的关键在于运放的共模输入范围和失调电压。我选的是OPA2277的另一个通道,失调电压10微伏级别,在最小电流档位下也能保证设定精度。达林顿管用MJE340加2N5551组合,或者直接用集成的BDX53C,视手上物料而定。我最终板子上用的是分立组合,因为这样可以单独匹配散热。

量程切换用了四只小型继电器,切换四个采样电阻:1kΩ、100Ω、10Ω、1Ω。配合DAC的0到2.048V设定电压,理论上可以覆盖0到2.048A,但我通过软件限制最大输出100mA,所以1Ω档实际只利用了很小一部分,留作设计裕量。

采样电阻的选择是这个小项目里最容易踩坑的地方。普通的贴片厚膜电阻温漂普遍在100ppm每摄氏度以上,100mA电流流过1Ω电阻产生10V压降、1W功耗,电阻自身发热导致的阻值漂移会直接表现为设定电流不准。我全部换成了精密合金电阻,温度系数控制在正负5ppm每摄氏度,额定功率2W,并且采用四线开尔文连接方式。也就是说,功率电流从采样电阻的两端流过,而运放检测电压从电阻内侧独立引线,这样PCB走线上的铜箔压降就不会混入采样信号,小电流档位的精度才有保障。

2.4 测量采样链路与三级高压保护

电压测量链路是并联在输出端的100比1分压网络,分压点电压经过运放跟随器缓冲后送入ADS1256的第一通道。ADS1256内置PGA,可以设置1、2、4、8倍增益。100V量程对应分压点最大1V,PGA用1倍即可,此时ADC的满量程约5V,理论分辨率非常高。当然实际精度受制于基准漂移和布局噪声,但最终做到mV级别完全没问题。

电流测量复用恒流源的采样电阻,跨在采样电阻上的电压经过缓冲后送入ADS1256的第二通道。这样设计有一个额外的好处:恒流模式下,电流设定和电流测量共用同一个物理电阻,只要这颗电阻够准,测量精度天然就有保障,不需要再做二次校准。

高压保护方面我做了三道防线。第一道是输出端并联TVS管SMBJ150A,限制意外过压;第二道是输出回路串联一颗500mA自恢复保险丝,短路时能快速断开;第三道是继电器驱动逻辑采用硬件互锁,通过CPLD逻辑门保证任何时刻CV继电器和CC继电器不可能同时闭合。软件上还做了一层过压保护:检测到输出电压超过设定值20%以上且持续超过10毫秒,立即把DAC输出清零并断开输出继电器。这些保护措施在调试阶段非常重要,因为高压电路出现异常时,损坏的往往不是单颗元件,而是从调整管到ADC的一整条链路。

3. 控制策略与软件实现细节

3.1 模式切换软启动与环路稳定策略

硬件上CV和CC虽然物理独立,但在同一个输出端子上做模式切换,依然会遇到瞬态冲击的问题。举个实际场景:CV模式下输出3.2V给一颗LED,此时回路电流可能已经有几十毫安。这时切换到CC模式并把目标电流设为1mA,CC环路会尝试把电流从几十毫安往1毫安方向拉,如果这个变化过程是阶跃式的,LED两端的电压会瞬间从3.2V跳到接近3V的位置,中间就可能产生一个超过允许范围的电压/电流尖峰。

解决办法是我在固件里实现了一个参考输入斜率限制器。切换模式的操作并不是直接把DAC设定值写到目标,而是先读取当前输出状态,然后把DAC设定值按照预设的步进和间隔,分100步逐步从当前值过渡到目标值,每步间隔1毫秒。这相当于给CC环路和CV环路都提供了一个平滑的参考输入斜坡,而不是一个阶跃信号。实测下来,切换过程中的冲击电流被控制在1mA以内,基本可以忽略。

CV模式的输出电压控制也做了类似的平滑处理。从0V启动到目标电压时,如果直接写DAC输出,输出端的大电容充电会拉走很大的浪涌电流。我在启动时加了一个500毫秒的斜坡,输出电压以约每秒200V的速率缓慢爬升,这样即使接的是大电容负载,充电电流也能控制在安全范围。

3.2 数据采样滤波与准比率测量设计

ADS1256是24位ADC,但24位分辨率并不等于24位精度。实际能用到的有效位数取决于前端噪声、基准稳定性和布局质量。为了让读数稳定可用,我在固件里做了两层处理:过采样加滑动平均。

ADC的数据率设置为30SPS,每读一次大约33毫秒。我连续读取8次,去掉一个最大值和一个最小值,剩下6次取平均,作为一组有效读数。这样单组读数的有效分辨率基本能稳定到亚毫伏级别,而且能滤掉大部分工频干扰。实测下来,在50Hz工频环境下,不滤波时读数可能跳动几十个字,滤波之后读数干净非常多。

还有一个设计技巧值得展开说:DAC和ADC共用同一个2.048V基准源,构成了一种准比率测量结构。当基准电压因为温度变化发生漂移时,DAC输出端的设定电压和ADC的测量基准会同步变化,两者的误差在最终计算结果中会互相抵消一部分。这比单纯去追求一颗超低漂移的基准IC要省成本得多,实际效果也非常好。这个思路是我从实验室一位老工程师那里学来的,在自研仪表里特别实用。

整机校准还是离不开标准仪器。我用的是一台Keysight 34461A六位半万用表做参考,在100mA、500mA、1000mA几个电流点校准电流系数,在50V和100V两个电压点校准电压系数。校准参数以多点插值表的形式存在EEPROM里,掉电不丢失。每次开机自检的时候读取校准表,输出的就是修正后的数值。

3.3 串口通信协议与Python自动化测量

设备通过UART转USB芯片CP2102与电脑通信,通信协议设计得非常简单,采用ASCII字符串命令。设定电压的命令格式是“VOLT 10.5”回车,设定恒流的命令是“CURR 0.1”回车,读取当前状态的命令是“MEAS?”回车,设备返回一行类似“V:10.5023, I:0.000112”的字符串。

Python上位机用pySerial库读写串口,配合pandas做数据记录。下面这段代码是扫描一条完整IV曲线的核心循环,实测从0V到100V共201个点跑完大约需要10分钟,主要耗时在每步的稳定等待上:

import serial import time ser = serial.Serial('COM3', 115200, timeout=1) def set_voltage(v): ser.write(f'VOLT {v:.3f}\r\n'.encode()) time.sleep(0.05) def read_meas(): ser.write(b'MEAS?\r\n') time.sleep(0.2) resp = ser.readline().decode().strip() v_str = resp.split(',')[0].split(':')[1] i_str = resp.split(',')[1].split(':')[1] return float(v_str), float(i_str) data = [] for v in range(0, 101, 1): set_voltage(v) time.sleep(0.5) v_read, i_read = read_meas() data.append((v, v_read, i_read)) print(f'{v:6.2f}V -> {v_read:8.4f}V, {i_read:12.6f}A')

这套自动化流程实测下来非常好用,后来我甚至基于它加了一个小批量筛选程序,自动判断每颗样品的Vf是否落在规格范围内,输出PASS或者FAIL标记。测试报告直接生成CSV文件,省去了大量人工整理的工作。

4. 实测数据与效果评估

4.1 常见二极管正向特性实测记录

设备调通之后,我先拿一批常见器件做了验证性测量,包括1N4007、FR107、SS34,以及被测主角,一批100V/1A的轴向二极管。下面是在室温25摄氏度条件下测得的正向导通数据:

器件型号1mA正向压降10mA正向压降100mA正向压降
1N40070.538V0.671V0.812V
FR1070.562V0.697V0.851V
SS340.241V0.342V0.486V
100V/1A轴向管0.607V0.742V0.893V

这些数据与器件手册给出的典型值对比,误差都在20mV以内。SS34作为肖特基二极管,正向压降明显低于普通PN结整流管,这个差异符合物理规律,也从侧面验证了设备测量的正确性。100V/1A轴向二极管作为主角,整个批量测试过程中,设备连续工作了三个多小时,数据一致性很好。

4.2 长时稳定性与精度对比验证

为了验证设备本身的长期稳定性,我在100mA档输出约5V电压给一个0.1%精度的电阻负载,然后用34461A六位半万用表并联在输出端连续记录一个小时。结果显示,电压读数的最大偏差为正负8mV,标准差约1.2mV,长时间工作没有出现明显的热漂移。这说明电源层和基准层的设计都经得起考验。

电压设定精度方面,设定50V时参考表实测为49.998V,偏差负2mV;设定100V时实测为99.996V,偏差负4mV。这个精度水平在自制设备里已经相当不错。电流设定精度方面,用精度0.5%的电流表监测,10mA档实测10.003mA,偏差只有0.03%;0.1mA档实测0.101mA,偏差约1%。小电流档位偏差较大的原因是采样电阻上的压降只有0.1V量级,容易受到周围噪声的干扰,这个水平在可接受范围内,但还有优化空间。

5. 常见问题与排查技巧实录

5.1 恒压模式下电流读数无规律跳动

现象是设定10V接一个1kΩ电阻负载,理论上电流应该是10mA,但设备读数一直在8到12mA之间跳动,而且是无规律的。我先用示波器挂在输出端,发现输出波形上有幅度约几十毫伏的高频纹波,频率在几百kHz,远超控制环路带宽。排查方向锁定到DAC的SPI通信上,当时SPI时钟配置的是18MHz,通信过程中数据线上的位跳变可能通过参考电压引脚耦合到了DAC输出。

解决方案是把SPI时钟降到1MHz,并在SPI通信期间临时屏蔽中断,同时在DAC的电源引脚和基准引脚增加100nF加10uF的双级退耦电容。改完之后输出纹波基本消失,电流读数稳定在正负0.05mA以内。这个经验说明,高速SPI在高精度模拟电路里不一定合适,低速、干净、屏蔽好才是第一原则。

5.2 输出电压偏低且带载能力差

现象是恒压模式设定30V,空载时输出正常,但接上100Ω电阻负载后电压掉到28V左右,明显带不动。第一反应是末级推挽管电流能力不够,但计算过应该有足够裕量。用示波器观察发射极波形,发现输出电压从满载时的29V慢慢掉到28V且持续缓慢下降,这说明不是瞬时压降,而是热漂移在起作用。

拆开检查后确认是散热片安装问题。MJE340和MJE350的散热片螺丝没拧紧,导热硅脂也涂得太厚,热阻变大,管子温度升高后hFE下降,输出能力跟着变差。重新清理硅脂并固定散热片,同时加大了散热面积,问题解决,带载后电压稳定在29.98V。这个教训提醒我,TO-225封装中功率管在长时间工作时散热设计不能有任何马虎,尤其是在100V压差下,哪怕只有20mA电流也是2W的功耗。

5.3 模式切换瞬间产生电压尖峰

现象是从CV模式切换到CC模式时,示波器上能看到DUT两端出现一个约3V、持续几百微秒的尖峰,直接把一批对ESD敏感的器件打坏了。排查之后发现,问题出在继电器切换时序上。硬件上CV和CC是两个独立环路,切换时先断开CV继电器再闭合CC继电器,断开的瞬间输出端电容上的电荷没有泄放路径,而CC环路进入时又试图建立新的工作点,两者叠加就形成了尖峰。

解决方案是在输出端增加一个放电电阻支路,用CPLD控制逻辑确保切换模式时先让输出端子短暂接地放电约2毫秒,再执行继电器切换。同时在继电器驱动逻辑上增加硬件互锁,杜绝CV和CC同时导通的可能性。经过这样的修改,模式切换时再也观测不到明显的电压尖峰,之后的批量测试也没有再损坏过器件。

5.4 低压段ADC读数跳字严重

现象是输出电压设置在0到2V范围内时,ADC读数跳动明显,峰峰值大约正负20mV,但在高电压段如50V以上,读数却非常稳定。排查思路很直接:ADS1256的输入是经过100比1分压后的信号,0到2V对应分压点电压只有0到20mV,这个量级已经接近ADC的地噪声和PCB地弹噪声;而高电压段分压点电压高,信噪比自然就好。

解决方案分三步。第一步,在固件里针对低压段使用PGA增益8倍后再采样,等效把信噪比提升8倍;第二步,在ADC输入端增加一级由100Ω电阻和10nF电容组成的RC低通滤波器,抑制高频噪声;第三步,固件中把低于2V的读数单独做加权平均处理。三项措施叠加后,低压段的读数跳动被压缩到正负3mV以内,达到了可以接受的水平。

6. 项目经验总结与后续扩展思路

这台100V正向电压控制器做完之后,在我手上持续服役了大半年,累计完成了上千只二极管的批量测试,稳定性和数据一致性都经受住了检验。回顾整个项目,有几点体会特别深。

第一,自制测量仪器最重要的是“可重复性”。同一颗器件上午测和下午测,数据要能对得上,这比单纯把误差从0.2%压到0.05%更有实用价值。第二,高压电路调试必须有防护意识,哪怕100V看起来不高,在潮湿环境或者误操作条件下也足够造成伤害。第三,别迷信高规格元器件,把接地、退耦、布线这些基本功做好,普通器件也能做出相当不错的性能。

后续如果要扩展,我计划把设备改成双极性输出,或者加入脉冲测试模式,给被测器件加几百微秒的窄电流脉冲来测热阻特性。V2版本还打算加入四线制开尔文测试功能,彻底消除接触电阻对低压测量的影响。有同样兴趣的朋友,欢迎多交流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询