4、采样窗口与死区时间:避开开关噪声的采样窗口设计

做无感启动的电流采样,最头疼的问题是什么?

我个人觉得,不是ADC精度不够,也不是运放噪声太大。真正让人抓狂的,是你明明采到了数据,但数据里全是开关噪声。

嗯,这期我们就来聊聊怎么通过设计采样窗口,把那些讨厌的开关噪声挡在门外。

4.1 开关噪声从哪里来?

先看一个基本事实:MOSFET在开关瞬间,电压和电流的变化率极高(dV/dt、dI/dt)。这些瞬态会通过寄生电容耦合到采样回路,在采样电阻两端产生尖峰。

我在项目中遇到过这样的情况:采样波形看起来像刺猬一样,密密麻麻全是毛刺。用示波器一量,毛刺幅度居然有几十毫伏。对于几十毫欧的采样电阻来说,这误差已经大到没法用了。

⚠ 注意: 开关噪声的频率通常远高于基波频率,但幅度可能达到采样信号幅值的10%~30%。如果不做处理,电流环的PI输出会跟着一起抖。

为什么会这样?说白了,就是采样时刻选错了。你刚好在MOSFET开关的那个瞬间去采电流,那噪声不找你找谁?

4.2 采样窗口的核心逻辑

采样窗口设计的本质,就是把ADC的采样时刻,主动避开开关瞬态区间。

我习惯把PWM周期分成几个关键时段:

  • 开关瞬态区:MOSFET开通/关断的瞬间,噪声最大,绝对不能采样
  • 振铃衰减区:开关后的一小段时间,噪声逐渐衰减,但还不稳定
  • 稳定采样区:电流已经稳定,噪声基本消失,这是理想的采样窗口

你想想看,如果我们把采样窗口放在稳定采样区,那采到的电流值就是真实的。但问题是,这个窗口到底有多宽?什么时候开始?

💡 经验值: 对于常见的低压MOSFET(比如30V~100V的),开关瞬态通常持续50ns~200ns。振铃衰减区大约需要200ns~500ns。所以,采样窗口至少要在开关沿之后延迟500ns以上再开启。

4.3 死区时间与采样窗口的关系

这里有个容易混淆的概念:死区时间和采样窗口。

死区时间是为了防止上下桥臂直通而插入的延迟。在死区时间内,上下管都关断,电流通过体二极管续流。这时候的电流路径和正常导通时不一样,采样到的值也会有偏差。

参数 死区时间 采样窗口
目的 防止直通短路 避开开关噪声
位置 开关沿之间 开关沿之后
典型值 100ns~1μs 500ns~2μs
对采样的影响 死区内电流路径变化,采样值可能不准确 避开噪声,提高精度

我曾经踩过一个坑:把采样窗口直接放在死区时间内。结果发现电流波形在换相时出现奇怪的凹陷,怎么调PI都调不好。后来用示波器一抓,才发现死区时间内采样到的电流值偏小,导致电流环误判。

⚠ 避坑指南: 采样窗口必须避开死区时间。如果PWM频率很高(比如20kHz以上),死区时间占比会变大,这时候采样窗口的选择就更要小心。

4.4 采样窗口的硬件实现

采样窗口的生成,通常有两种方式:

  1. 硬件定时器触发:用MCU的定时器产生延迟,在PWM边沿后固定时间触发ADC
  2. 可编程采样窗口:通过寄存器配置采样保持时间,让ADC只在指定窗口内采样

我个人更推荐第一种方式,因为灵活性更高。你可以根据实际调试结果,随时调整延迟时间。

下面是一个典型的配置代码片段(以STM32为例):

// 配置PWM触发ADC的延迟时间
// TIM1_CH1的上升沿触发ADC,延迟500ns后开始采样

TIM1->CR2 |= TIM_CR2_CCDS;          // 选择CC1事件触发ADC
TIM1->CCER |= TIM_CCER_CC1E;        // 使能CC1输出

// 设置触发延迟(假设TIM1时钟为72MHz)
// 延迟500ns = 500ns / (1/72MHz) ≈ 36个时钟周期
TIM1->CCR1 = 36;                     // 延迟36个时钟周期后触发

// ADC配置
ADC1->CR2 |= ADC_CR2_EXTTRIG;       // 使能外部触发
ADC1->CR2 |= ADC_CR2_EXTSEL;        // 选择TIM1_CC1作为触发源
💡 提示: 实际延迟时间需要根据你的PCB布局和MOSFET型号来调整。建议先用示波器抓一下开关噪声的持续时间,再确定延迟值。

4.5 采样窗口的软件自适应

硬件配置好之后,软件层面也需要做一些配合。我习惯在初始化阶段做一次采样窗口校准:

  • 先设置一个较长的延迟(比如2μs),确保采样窗口完全避开噪声
  • 然后逐步减小延迟,同时观察采样值的波动
  • 当采样值开始出现明显抖动时,说明已经进入噪声区
  • 取抖动开始前的延迟值,再加上200ns的安全余量

这样做的好处是,可以自动适应不同硬件平台的差异。同一套代码,换一块板子也能正常工作。

4.6 核心知识体系

下面这张图总结了采样窗口设计的核心逻辑:

采样窗口设计核心逻辑 PWM周期 开关瞬态区 振铃衰减区 稳定采样区 持续时间 50ns ~ 200ns 禁止采样 持续时间 200ns ~ 500ns 谨慎采样 持续时间 剩余PWM周期 理想采样窗口 硬件定时器触发 可编程采样窗口 软件自适应校准 避开开关噪声 → 提高电流采样精度

4.7 实际调试中的注意事项

最后,分享几个我在实际调试中总结的经验:

  • 不要只看仿真:仿真模型通常忽略寄生参数,实际板子上的噪声可能比仿真大很多。一定要用示波器实测。
  • 采样窗口不是越宽越好:窗口太宽可能会覆盖到下一个开关沿,反而引入噪声。一般建议窗口宽度控制在1μs以内。
  • 多相电机的采样窗口要错开:如果有多相电流需要采样,每相的采样窗口要错开,避免同时采样引入串扰。
  • 温度变化会影响开关速度:MOSFET的开关速度随温度变化,高温时开关速度变慢,噪声持续时间变长。建议在高温下重新校准采样窗口。
📌 核心要点: 采样窗口设计的本质,就是让ADC在正确的时间做正确的事。避开开关噪声,你就成功了一半。