3. PWM与采样时刻的关系:PWM中心对齐与边沿对齐模式,采样窗口的确定,死区时间的影响

做FOC的人,十有八九都被采样噪声折磨过。我当年调试第一版双电阻FOC时,电流波形简直没法看——毛刺多到根本没法做闭环。后来才发现,问题出在采样时刻上。说白了,你采样的时机不对,采到的根本不是真实的相电流。

这一节,我们就来彻底搞清楚PWM模式、采样窗口和死区时间这三者之间的关系。搞懂了这些,你的电流采样才算真正入门。

3.1 PWM中心对齐模式 vs 边沿对齐模式

先问一个问题:为什么FOC几乎都用中心对齐PWM,而不是边沿对齐?

我个人习惯用中心对齐,原因很简单——采样窗口更友好。我们来看一下两者的区别。

对比项 中心对齐模式 边沿对齐模式
载波形状 三角波(对称) 锯齿波(不对称)
更新时刻 波峰/波谷(通常选波谷) 周期起始或结束
采样窗口 宽,位于波谷中心 窄,靠近周期边界
谐波特性 偶次谐波少 偶次谐波多
FOC适用性 ✅ 推荐 ⚠️ 不推荐

中心对齐模式下,PWM在波谷处所有开关管都处于导通或关断的稳定状态。这时候采样,电流已经稳定了,没有开关动作带来的尖峰干扰。

边沿对齐模式呢?所有开关动作都挤在周期边界,采样窗口被压缩得很窄。你想想看,ADC采样需要时间,转换需要时间,窗口不够宽,采到的数据能准吗?

核心结论:FOC系统务必使用中心对齐PWM模式。这不是可选项,是必选项。

3.2 采样窗口的确定

采样窗口,就是ADC可以安全采样的时间区间。这个窗口不是随便定的,它受三个因素约束:

  1. 死区时间——开关切换时的安全间隔
  2. 电流建立时间——相电流从开关动作到稳定的时间
  3. ADC采样时间——ADC本身需要的采样+转换时间

我在项目中遇到过一个问题:采样窗口明明算好了,但实际波形还是有毛刺。排查了半天,发现是电流建立时间被低估了。MOS管的开关速度、PCB走线寄生电感,都会延长电流建立时间。

采样窗口的计算公式其实不复杂:

采样窗口宽度 = (PWM周期 / 2) - 死区时间 - 电流建立时间 - ADC采样时间

举个例子,PWM频率20kHz,周期50μs,中心对齐模式下半个周期是25μs。假设死区时间2μs,电流建立时间3μs,ADC采样时间1μs,那么:

采样窗口 = 25 - 2 - 3 - 1 = 19μs

19μs的窗口,足够ADC从容采样了。但如果PWM频率提高到100kHz呢?半个周期只有5μs,减去死区、建立时间、采样时间,窗口可能只剩1μs甚至更少。这时候采样就变得非常困难。

⚠️ 注意:采样窗口不能为负值。如果计算结果是负数,说明你的PWM频率太高,或者死区时间太长,必须调整系统参数。

3.3 死区时间的影响

死区时间,是防止上下桥臂直通而插入的安全间隔。但死区时间对采样来说,是个麻烦制造者。

我曾经调试一个电机驱动板,死区时间设了3μs,结果电流波形在过零点附近出现了明显的畸变。后来把死区时间降到1μs,波形就正常了。当然,降死区时间的前提是硬件开关特性允许。

死区时间对采样窗口的影响,主要体现在两个方面:

  • 压缩采样窗口——死区越长,采样窗口越窄
  • 引入电流畸变——死区期间电流通过续流二极管续流,采样到的电流不是真实值

怎么解决?我建议的做法是:

  1. 采样时刻避开死区——在PWM波谷处采样,此时所有开关管都已稳定导通或关断,死区已经结束
  2. 死区补偿——如果死区时间较长,可以在软件中做死区补偿算法
  3. 硬件优化——选用开关速度更快的MOS管,可以缩短死区时间

💡 个人经验:死区时间不是越小越好,也不是越大越好。我一般从2μs开始调试,观察电流波形,逐步减小直到出现直通风险为止。这个平衡点需要根据实际硬件来调。

3.4 采样时刻与PWM的同步策略

搞清楚了采样窗口,接下来就是怎么触发采样了。FOC中,采样必须和PWM严格同步,否则采到的电流和实际电流之间存在相位差。

常见的同步策略有两种:

策略 触发方式 优点 缺点
PWM触发ADC PWM定时器产生触发信号 硬件同步,延迟小 需要硬件支持
定时器中断采样 在PWM中断中启动ADC 灵活,可软件调整 中断延迟不确定

我个人强烈推荐第一种——用PWM硬件触发ADC。为什么?因为中断方式存在不确定性。中断响应时间受其他中断优先级影响,采样时刻会抖动。而硬件触发是确定性的,采样时刻精确到纳秒级。

下面是一个典型的同步时序图:

PWM中心对齐模式下的采样时序 载波 波谷 波谷 ADC触发 ADC触发 采样窗口 采样窗口 死区 死区 关键点: • 采样在波谷触发 • 避开死区区间 • 窗口宽度≥ADC采样时间 • 硬件触发保证确定性

3.5 实际调试中的避坑指南

讲了这么多理论,最后分享几个我在实际调试中踩过的坑:

  • 采样时刻偏移——我曾经把采样触发点设在波峰而不是波谷,结果电流波形全是毛刺。后来改成波谷触发,问题解决。
  • 死区时间设置不当——死区设得太长,采样窗口被压缩到几乎为零;设得太短,上下桥臂直通烧管子。我建议从2μs开始试,逐步优化。
  • ADC采样时间不足——有些MCU的ADC采样时间可以配置,如果设得太短,采样电容充不满,转换结果不准。我一般设到10个ADC时钟周期以上。
  • 忽略PCB寄生参数——电流建立时间不仅取决于MOS管,还取决于PCB走线。长走线、大电感都会延长建立时间。我在一个项目中把采样窗口算得刚刚好,结果实际波形还是有问题,后来发现是PCB走线太长导致的。

总结一下:PWM用中心对齐模式,采样时刻选在波谷,采样窗口要留足余量,死区时间要平衡安全性和采样质量。把这些搞定了,你的FOC电流采样就成功了一大半。