ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于STM32F030的双脉冲测试:测量MOS管开关损耗与动态特性

基于STM32F030的双脉冲测试:测量MOS管开关损耗与动态特性 做过开关电源或者电机驱动的人应该都遇到过这种场景功率MOS一上电关断漏源电压波形带着高频振铃直冲云霄或者换个管子之后整机效率莫名下降却说不清到底是导通损耗变大还是开关损耗变差。这种时候靠改电路参数去猜效率太低正确做法是先做一次双脉冲测试Double Pulse Test把器件的动态开关特性完整测出来。双脉冲测试可以用最少的时间拿到MOS管开通延迟、关断延迟、开关损耗、二极管反向恢复等全套硬指标而且完全不需要搭很复杂的实验平台。用一块STM32F030最小系统板做主控加上驱动电路、负载电感和示波器就能搭出一套足够用的测试装置。本文就按这个路线从测试原理讲到电路搭建再讲STM32F030上的双脉冲时序怎么生成最后把波形读取和实际踩坑一起说了。做电源、做电机驱动、做电池保护板的朋友都能直接照搬这套方案。1. 双脉冲测试到底在测什么1.1 一次测试覆盖的动态参数双脉冲测试的核心思路很朴素给DUT被测MOS发两个宽度精确可控的脉冲利用电感的电流保持特性在极短的时间内复现开关过程中最恶劣的电压电流工况然后在示波器上把两段完整的开通、关断波形抓下来。第一个脉冲的作用是建立一个目标电流。MOS导通期间母线电压全部加在感性负载上电感电流以 dI/dt Vbus/L 的斜率线性上升。只要控制这个脉冲的宽度就能精确控制测试电流。第一个脉冲的下降沿用于测量MOS的关断特性脉冲间隔期间电感电流通过续流二极管续流电流基本保持恒定第二个脉冲的上升沿用于测量MOS的开通特性同时二极管正在反向恢复此时电流波形上会出现一个非常典型的反向恢复尖峰。第二个脉冲的下降沿则可以再测一次关断特性和第一次的结果做一致性对比。这套流程只要跑一遍就能同时算出如下参数开通延迟时间 td(on)上升时间 tr以及开通损耗 Eon关断延迟时间 td(off)下降时间 tf以及关断损耗 Eoff外部续流二极管的反向恢复时间 trr 和反向恢复电荷 Qrr栅极电荷特性Miller平台的宽度如果你在选型阶段要比较两颗不同品牌的MOS或者在开发阶段要验证栅极电阻、吸收电路是否调优这份数据就是最直接的判断依据。没有双脉冲数据后面的损耗估算和热设计就都是在猜。1.2 读图基本功双脉冲波形的三张面孔很多人第一次看到双脉冲波形图会有点懵因为同一个示波器屏幕上同时存在两种开关动作而且电流波形还带着尖峰。其实只要把时间轴拆成三段来看就非常清晰。第一段是第一个脉冲导通期间Vgs上升MOS进入线性区Vds从Vbus开始下降Id从零线性上升。在Vds波形上能看到一个明显的平台这就是Miller平台它对应的是栅极在给Cgd充电的过程。这个平台的宽度直接反映了米勒电荷的大小。这段波形主要用来观察器件的真实开通过程但要注意第一个脉冲的开通是在电流为零的条件下发生的所以开通损耗很低价值不大。第二段是第一个脉冲关断之后Vgs下降到阈值以下Vds开始上升并且会冲过Vbus一段距离产生一个电压过冲然后衰减回Vbus。这个过冲的峰值很关键它由公式 ΔV L_stray × dI/dt 决定其中L_stray是功率回路的寄生电感。过冲越大说明整个功率回路的PCB布局越差。这段波形是评估关断特性的主战场。第三段是第二个脉冲的上升沿此时负载电感里还存着接近满值的电流。MOS一开通负载电流会瞬间从续流二极管中换流到MOS沟道中二极管从正向导通切到反向截止会短暂流过很大的反向恢复电流所以在Id波形上会出现一个明显的下冲或者上冲尖峰Vds电压也被这个动态过程“拉”得更低。这段波形用来评估开通损耗和二极管反向恢复。把这三种形态的波形和对应的物理过程对上号之后看任何双脉冲波形都不会再发怵。2. 硬件平台搭建从原理图到焊接2.1 主电路拓扑与器件选型完整的双脉冲测试平台由几部分组成直流母线供电、母线电容组、感性负载、续流二极管、功率MOS、栅极驱动器以及STM32F030控制板。下面直接给出我实际使用的拓扑和参数。功率回路的连接顺序是直流电源正极 → 母线电容组正端 → 负载电感L → SW点 → 功率MOS漏极D → MOS源极S → 低感电流采样电阻 → 直流电源负极。续流二极管的阴极接SW点阳极接直流电源负极也就是MOS源极S这个电位。这样接的好处是续流回路和主功率回路共用一小段PCB走线环路面积可以压到最小。母线电容组建议采用电解电容加薄膜电容并联。电解电容负责储存能量型号我常用的是一颗1000μF/450V薄膜电容负责吸收高频纹波和降低寄生电感在MOS的D-S两端或者母线输入最末端并联几颗0.1μF和1μF的CBB电容。如果条件允许还可以加一颗高频特性更好的MLCC100nF的X7R就够。这层电容直接影响关断过冲不能省。负载电感的选择有点讲究。双脉冲测试中电感只需要工作几十微秒所以不必追求大体积但一定要保证在测试电流下不饱和。给一个常用的铁硅铝磁环型号比如77439系列单匝或者十几匝就能做到100μH到几百μH。我自己测试时目标电流15A用得最多的是100μH电感磁环外径27mm左右绕18匝左右实测在20A以内线性度很好。如果你手头只有别的磁芯按 L Vbus × T1 / I_target 反推T1再实测电流线性度就行。续流二极管必须是快恢复二极管或肖特基二极管。电压降额至少50%电流峰值至少是目标电流的1.5倍。如果测的是SIC MOSFET建议直接选SiC肖特基二极管比如C4D10120A这种反向恢复几乎可以忽略测出来的反向恢复参数才是真实的MOS体二极管特性。要区分一点双脉冲测试中SW点接的续流二极管并不一定是待测器件的体二极管这是单独外加的器件如果你想测MOS体二极管的反向恢复电路接法要做调整外接二极管换成低感导线短接让电流流经MOS内部的体二极管但实际测试中这种方法非常容易炸管建议新手先按外接二极管的方案来。2.2 驱动电路设计要点栅极驱动器是双脉冲测试中很容易出问题的一环。STM32F030的IO输出能力很弱直接驱动MOS根本关不掉必须加专用的栅极驱动芯片。我自己用下来比较顺手的是UCC27511和IXDN609前者峰值电流4A后者9A驱动普通Si MOS完全够用如果测SIC MOS峰值电流建议至少4A到9A这一档并且驱动芯片的传输延迟要短。驱动电路的具体接法如下STM32F030的PA8输出PWM信号接入驱动器输入端IN驱动器输出OUT接一个栅极电阻Rg再接到MOS的栅极G驱动器的电源地GND要单独走线接到MOS源极S这是驱动回路和功率回路唯一的公共点。如果MOS是四引脚封装或者有开尔文源极Kelvin Source驱动回路的地必须接开尔文源极不要把驱动电源地接回到功率电流流过的源极引脚上否则源极寄生电感上的压降会让栅极波形出现严重振铃。栅极电阻的取值直接影响开关速度。我通常在开通和关断分开处理开通电阻Rgon用10Ω关断电阻Rgoff用5Ω并在Rgoff上反并联一颗1N4148二极管这样开通时电流走Rgon关断时同时走Rgon和Rgoff关断速度更快。如果发现Vds关断过冲偏大就把Rgoff调大一点比如10Ω用开关速度换电压应力。反过来说如果开通损耗压不下去就试着减小Rgon。这个调节过程需要反复测试双脉冲平台的价值就在这里体现出来了。2.3 STM32F030控制板接口规划STM32F030用哪个具体型号都行我用的是STM32F030C8T648MHz主频64KB Flash8KB RAM价格便宜量又足。真正用到的外设资源非常少一个高级定时器TIM1输出PWM一个引脚做启动触发一个ADC通道采样母线电压一个串口做调试打印。引脚分配建议如下PA8TIM1_CH1输出接栅极驱动器输入PB0启动测试按键低电平触发或者外部输入触发PA4ADC1_IN4采样母线电压经过电阻分压后接入PA9/PA10串口1的TX/RX打印当前测试状态其余引脚全部悬空不做任何分配减少干扰这里要特别说明一个细节PA8默认复用AF1才能映射到TIM1_CH1配置GPIO时要记得设置AFR寄存器。如果这一项忘了输出的PWM波形就会停留在默认高电平MOS栅极一直处于导通状态上电瞬间就直接短路。我调试时有一次就是栽在这个问题上后面会专门说。3. STM32F030控制逻辑与代码实现3.1 定时器DMA生成双脉冲的方式双脉冲测试对时序的精度要求并不像想象中那么苛刻因为开关沿的测量主要由示波器决定但脉冲宽度和间隔的时间必须准确否则电流建立不到预设值。STM32F030的TIM1是16位高级定时器48MHz时钟下最小步进约20.8ns用来做双脉冲发生器完全够用。最简单可靠的方式是在TIM1的更新中断里修改ARR和CCR1寄存器。具体流程如下第一步把ARR和CCR1都设置为第一个脉冲的宽度计数值PWM模式1下CNT永远小于CCR1输出一直为高这就是第一个脉冲。第二步计数到ARR产生更新事件进入中断后把ARR改成间隔时间CCR1改成0输出被拉低进入续流区间。第三步间隔时间计数完成再次进入中断把ARR改成第二个脉冲宽度CCR1改成ARR的值输出又恢复高电平形成第二个脉冲。第四步第二个脉冲结束后中断里关闭TIM1使能整个测试序列完成。这种更新中断的方式在路径上有大约几百纳秒的中断延迟对于15μs级别的脉冲来说误差在2%以内作为第一版平台完全能接受。如果你后来发现波形时间轴上有可见的延迟或者需要做纳秒级精度的测试可以改用DMA方式让更新事件触发DMA请求由DMA直接把预设的ARR和CCR1数据搬运到寄存器中彻底消除中断延迟。不过STM32F030上同时需要搬运ARR和CCR1两个寄存器要占用两个DMA通道并做好触发映射代码复杂度会高不少。我建议先把中断方式跑通再按需优化。3.2 关键代码片段解析下面给出基于标准外设库的初始化代码这里直接操作寄存器方便看到每一步在干什么。#define PULSE1_CNT 720 // 第一个脉冲 15us 48MHz #define INTERVAL_CNT 480 // 间隔 10us #define PULSE2_CNT 144 // 第二个脉冲 3us static uint8_t dpt_step 0; void DPT_GPIO_Init(void) { RCC-AHBENR | RCC_AHBENR_GPIOAEN; // PA8 复用为 TIM1_CH1复用功能 AF1 GPIOA-MODER | GPIO_MODER_MODER8_1; GPIOA-AFR[1] | (1 0); } void DPT_TIM1_Init(void) { RCC-APB2ENR | RCC_APB2ENR_TIM1EN; TIM1-PSC 0; // 48MHz 不分频 TIM1-ARR PULSE1_CNT; TIM1-CCR1 PULSE1_CNT; // 输出一直为高 TIM1-CCMR1 (6 4); // PWM模式1 TIM1-CCER | TIM_CCER_CC1E; NVIC_SetPriority(TIM1_IRQn, 0); NVIC_EnableIRQ(TIM1_IRQn); TIM1-DIER | TIM_DIER_UIE; } void TIM1_IRQHandler(void) { if (TIM1-SR TIM_SR_UIF) { TIM1-SR ~TIM_SR_UIF; switch (dpt_step) { case 0: // 第一个脉冲结束进入间隔 TIM1-ARR INTERVAL_CNT; TIM1-CCR1 0; break; case 1: // 间隔结束第二个脉冲开始 TIM1-ARR PULSE2_CNT; TIM1-CCR1 PULSE2_CNT; break; case 2: // 第二个脉冲结束关闭输出 TIM1-CR1 ~TIM_CR1_CEN; TIM1-SR 0; break; } dpt_step; } } void DPT_Start(void) { dpt_step 0; TIM1-SR 0; TIM1-ARR PULSE1_CNT; TIM1-CCR1 PULSE1_CNT; TIM1-CNT 0; TIM1-CR1 | TIM_CR1_CEN; }主程序里只需要在按键扫描到触发信号后调用DPT_Start即可。每次测试间隔建议至少留1秒以上让被测MOS充分散热避免结温升高影响测试数据一致性。这里强调一下switch状态机的设计逻辑第一步是第一个脉冲宽度第二步是间隔第三步是第二个脉冲第四步关闭。这个顺序和双脉冲时序图完全对应中间一旦调乱波形就会变成三个脉冲或者间隔消失排查起来非常麻烦。所以状态机的步进值要放在中断最后自增并且在启动函数里清零。3.3 参数计算怎么把脉宽转换为计数写程序之前先要在纸上算出三个时间段对应的定时器计数值。公式很简单计数值 时间(秒) × 主频(Hz)。举例说明。假设我手里有一个100μH的电感母线电压Vbus设置为100V目标电流I_target是15A。由电感伏秒关系式 Vbus L × ΔI / ΔT反推出第一个脉冲宽度 T1 L × I_target / Vbus 100μH × 15A / 100V 15μs。48MHz下15μs对应720个计数所以PULSE1_CNT 720。间隔时间理论上越短越好因为目的是让电流在续流期间尽量保持恒定但也要保证MOS完全关断且Vds振荡收敛完毕。我取10μs对应480个计数。第二个脉冲的宽度没有严格计算要求一般取2~5μs我取3μs对应144个计数。有一个新手容易忽略的地方如果目标电流需要调整T1必须跟着线性变化。比如把目标电流改成5AT1就变成5μs对应240个计数而间隔时间和第二个脉冲宽度可以不变。我在程序里把这三个计数都定义成宏调电流时只改一处方便很多。4. 实测流程与波形读取4.1 上电前检查清单双脉冲测试涉及高压大电流虽然持续时间极短但母线电容上可能储存着几百伏电压操作稍有疏忽就可能烧板子或者伤人。我在每次上电测试前都会按下面这个清单逐项确认一项不落。检查母线电容是否接反极性这个出错的后果是电容炸裂检查驱动芯片电源是否正常别把12V错接到逻辑引脚上用万用表量一下Vbus对地之间有没有短路MOS的D-S电阻是否正常确认MOS栅极已经有正常的下拉路径避免悬空误导通确认续流二极管的极性阴极接SW、阳极接地反了第一脉冲关断瞬间就会过压打坏MOS示波器探头衰减比对好电压探头设成10:1或100:1电流探头接入前做一次磁复位确认示波器触发方式建议用第二个脉冲下降沿触发这样能同时看到关断和下一个开通的波形准备好放电电阻测试结束后手动放电或者用继电器在下电后自动并接放电电阻完成检查后先把Vbus从低开始调比如先设定20V做一次脉冲确认波形形态正常然后再逐步升高到目标电压。不要一上来就全电压测试否则一个接线错误就可能造成关键器件报废。4.2 从波形上读取关键指标示波器上抓到的理想波形应该长这样Vgs波形是两段矩形脉冲Vds波形在第一脉冲导通时降到接近零关断时迅速回升并带一个过冲第二个脉冲导通时再次下降Id波形则呈现三角波样子的两段线性爬升第二段上升沿上叠加一个反向恢复尖峰。读取指标时先把示波器的时基调到1μs/div左右电压探头测Vds另一个探头测VgsId用电流探头或者低感采样电阻获取。测量开通参数时把触发点放在第二个脉冲的上升沿水平缩放至20ns/div到100ns/div然后用光标测量td(on)是Vgs上升到10%到Vds下降到90%之间的时间差tr是Vds从90%降到10%之间的时间。关断参数同理触发点放在第一或第二个脉冲下降沿td(off)是Vgs下降到90%到Vds上升到10%之间的时间差tf是Vds从10%升到90%之间的时间。开关损耗的计算可以在示波器上用数学通道完成直接把Vds通道和Id通道相乘得到瞬时功率曲线再在对应开通或关断区间内做积分。示波器自带积分功能计算过程中注意用光标限定积分区间Eon从Id开始上升前一点到Vds降到接近零为止Eoff从Vds开始上升到Id降到接近零为止这样才不会把无关的功率算进去。4.3 SIC MOSFET双脉冲测试的差异如果你要测试的是SIC MOSFET测试方法整体相同但有几个地方会有明显差异值得专门提醒。第一SIC器件的开关速度非常快dV/dt能到20V/ns甚至更高这要求示波器和探头带宽至少500MHz起步。用普通100MHz探头去测抓出来的波形边沿全是圆弧损耗数据完全不可信。电压探头必须用高压差分探头或者带宽足够的无源探头电流建议用同轴分流器普通电流夹钳的带宽和延迟都跟不上。第二SIC MOSFET开通过程中的Miller平台更短而且跨导很高一旦在关断期间受到dv/dt耦合干扰很容易出现误导通。栅极驱动回路要单独接到开尔文源极同时强烈建议使用负压关断比如-4V。为此驱动电路需要负电源可以用一个隔离DC-DC模块产生-5V辅助电源配合稳压芯片给驱动芯片供电。第三SIC体二极管的反向恢复电荷Qrr远小于Si器件在第二个脉冲上升沿看到的反向恢复电流尖峰会小很多。如果测出来反向恢复尖峰依然很大优先检查续流二极管是不是SiC肖特基以及示波器电流探头有没有饱和。5. 常见问题与排查技巧实录5.1 高频振荡与电压过冲双脉冲测试中最常见的异常就是关断时Vds波形上叠加明显的振铃频率通常在几十MHz到上百MHz。原因很好理解功率回路的寄生电感L_stray和MOS输出电容Coss构成了LC谐振回路当MOS关断瞬间电流被强制截断LC回路产生阻尼振荡。排查思路并不复杂。先看母线电容组离MOS源漏引脚有多远电容离得越远寄生电感越大振铃越严重。PCB布局时母线电容尤其是高频薄膜电容必须紧贴MOS引脚回路的包围面积越小越好。其次看栅极电阻Rgoff如果关断速度太快振铃会被激发得更猛适当增大Rgoff可以消耗部分振荡能量。再者如果结构上无法进一步降低电感可以在MOS的D-S之间加RC吸收回路R取10Ω、C取1nF起步用小夹子测试看振铃幅度明显下降再固定参数。还有一种振铃源头在栅极回路如果驱动芯片地线和功率地线共用了同一条长走线Vds快速变化时源极寄生电感上的压降会叠加到栅极驱动回路上造成栅极波形出现毛刺甚至来回翻转。这种问题的处理方法是把驱动地和功率地在MOS源极处单点连接并尽量缩短驱动回路走线。5.2 电流波形不符合预期如果示波器上看到的Id斜率不对或者上不去先检查电感是否饱和。磁环电感在饱和后会突然失去续流能力电流波形会瞬间跳变Vds也会跟着异常。判断方法是做一次低电压测试逐步提高Vbus或者加长第一个脉冲宽度观察电流是否仍然线性上升。如果电流上升段明显拐弯基本就是饱和了换更大磁芯或者增加气隙。还有一种情况是电流波形出现反向台阶也就是第二个脉冲开始前电流值比第一个脉冲关断时下降太多。这是因为间隔时间过长或者续流二极管的正向导通压降太大导致电感电流在续流期间衰减过快。解决方法是把间隔时间缩短到微秒级并且优先选用导通压降低的肖特基二极管。5.3 测量误差和探头使用细节双脉冲测试中测量误差很容易被忽略但一旦做损耗定量分析误差大到无法接受。最容易踩的坑有三个。第一探头接地线过长。用示波器探头自带的长地线夹地线本身就有寄生电感在纳秒级电流跳变下会感应出高频噪声让波形看起来很乱。正确的做法是使用探头标配的短接地弹簧直接把探头地接到MOS源极引脚附近。这一条更改往往比调整电路参数更有效。第二电流探头和电压探头之间的传输延迟不一致。电流探头内部有传感器和放大电路波形到达示波器的时间比电压探头晚几十纳秒。直接拿这两路波形做乘法算损耗会得出离谱的数据。示波器一般都有deskew校准功能校准方法是先用一个已知的信号同时接入两个探头调整deskew时间直到两路波形完全对齐再做正式测试。第三无法判断关键点位置时不要盲目相信自动测量。示波器自带的上升沿、下降沿自动测量在多脉冲复杂波形下经常出错务必使用光标或者手动游标读取目标区间。我在前面提到的脉冲分段读图方法就是结合这种手动测量思路来的。6. 进一步扩展与实操心得这套基于STM32F030的双脉冲平台不要只局限于固定电压固定电流的单点测试。对数据完整性有帮助的做法是把Vbus和I_target编程为状态表比如电压测50V、100V、200V三档电流测5A、10A、15A三档通过按键或者串口指令切换测试序列每档触发一次双脉冲自动保存各档关键参数。对于温度特性测试我后来做过的扩展是在被测MOS上加一个恒温铜块用加热片和NTC传感器把器件温度稳定在25℃、75℃、100℃等测试点再重复双脉冲测试。功率半导体的开关损耗和结温强相关高温下的数据才是真实工作状态下的数据。这种温控平台在评估SIC MOS时尤其重要因为SIC的高温性能优势只有在125℃以上才会显现。还有一个可以留意的方向是把第二个脉冲下降沿的采集数据单独拿出来做一致性分析。同一颗MOS在不同目标电流下关断过冲的峰值电流变化趋势能反映封装寄生电感和PCB布局的优劣。我见过几个PCB布局方案在5A时都过得去但到20A时过冲差出一倍原因就是回路面积不同导致的寄生电感差异。这种隐性差异只有通过双脉冲横向对比才能暴露出来。在实际操作中的体会是做测试平台不要一上来就追求全自动化高精度先把最小可用的硬件和程序跑通把示波器上的波形看明白很多测试陷阱自然就避开了。STM32F030这颗芯片虽然只有48MHz但做一个双脉冲时序发生器完全够用换成其他M0单片机或者Arduino也能做核心价值永远在测试方法和波形解读上。把这套平台留在手边以后选型、调驱动电阻、评估散热的效率都会比拍脑袋高得多。
返回列表