4. PWM 与采样同步:PWM 中心对齐与边沿对齐模式、采样点选择策略、PWM 载波与采样时钟的关系
做弱磁控制,采样同步是个绕不开的坎。我见过不少工程师,算法写得漂亮,结果一上电机,电流波形全是毛刺,速度稍微一高就炸。问题出在哪?十有八九是采样点没选对,或者 PWM 模式跟采样时钟没配合好。
这一章,咱们就把 PWM 的两种对齐模式、采样点怎么选、载波和时钟的关系彻底讲透。你想想看,采样要是不同步,你拿到的电流值根本就不是你想要的瞬时值,那后面的弱磁查表、电压补偿全是白搭。
4.1 PWM 中心对齐与边沿对齐模式
先说说两种最基本的 PWM 模式。大部分电机控制芯片都支持这两种,但用起来差别很大。
4.1.1 边沿对齐模式
边沿对齐,说白了就是计数器从 0 往上数到周期值,然后立刻跳回 0。波形的一边是齐的,另一边是斜的。这种模式实现简单,占空比更新也快。
但问题来了——采样点在哪?
在边沿对齐模式下,PWM 的开关动作集中在计数器的顶端和底端。如果你在计数器的顶端采样,正好赶上开关动作,电流纹波最大,采样误差也最大。我个人习惯是尽量避开这个点,但有时候硬件限制让你躲不开。
4.1.2 中心对齐模式
中心对齐模式就友好多了。计数器先往上数到周期值,再往下数回 0。波形关于中心对称,开关动作发生在计数器的顶端和底端,而中间点(计数值为周期值的一半)是开关动作最少的时刻。
为什么中心对齐更适合弱磁控制?
- 采样窗口宽:在计数器的中间点,上下桥臂都处于导通或关断的稳定状态,电流纹波最小。
- 谐波含量低:对称波形产生的低次谐波更少,对电流环的干扰小。
- 适合多相采样:三相电流可以在同一个采样点同时采集,相位误差几乎为零。
我记得有一次做高速电机项目,转速跑到 15000rpm,用边沿对齐模式,电流环一直抖。换成中心对齐,采样点放在计数器中间,问题立刻解决。嗯,从那以后,我所有弱磁项目都默认用中心对齐。
| 对比项 | 边沿对齐 | 中心对齐 |
|---|---|---|
| 开关动作时刻 | 集中在顶端/底端 | 顶端/底端,中间点稳定 |
| 采样点推荐 | 避开顶端/底端 | 计数器中间点 |
| 谐波特性 | 低次谐波较多 | 谐波含量低 |
| 电流纹波 | 较大 | 较小 |
| 弱磁适用性 | 一般 | 推荐 |
4.2 采样点选择策略
采样点选对了,电流环就成功了一半。我见过不少工程师随便选个点就开始调参,结果调了半天发现是采样位置的问题。
4.2.1 单次采样 vs 多次采样
单次采样最简单:每个 PWM 周期只采一次电流。中心对齐模式下,就在计数器中间点采。边沿对齐模式下,我建议在计数器底端(0 值)之后延迟一小段时间再采,避开开关噪声。
多次采样呢?每个 PWM 周期采两次甚至更多。好处是可以做平均滤波,减少噪声。但代价是计算量翻倍,而且采样时刻必须精确控制。
我个人习惯是:低速用单次采样,高速用多次采样。低速时电流变化慢,单次采样足够;高速时电流纹波大,多次采样加平均能明显改善信噪比。
4.2.2 采样点与占空比的关系
这里有个坑,我踩过。当占空比接近 0% 或 100% 时,PWM 的导通时间极短或极长,采样窗口会被压缩。比如占空比 5%,导通时间只有整个周期的 5%,如果你在中间点采样,可能正好落在导通区间之外,采到的电流值完全不对。
怎么办?
- 限制最小/最大占空比:在软件里设置占空比上下限,比如 5%~95%,留出足够的采样窗口。
- 动态调整采样点:根据当前占空比,把采样点往导通区间的中心偏移。这个实现起来稍微复杂,但效果最好。
- 使用双采样:在导通区间和非导通区间各采一次,然后根据占空比加权平均。
我曾经在一个项目里,占空比跑到 98%,采样点没调,电流环直接发散。后来加了占空比限制,才稳住。所以,别小看这个细节。
4.3 PWM 载波与采样时钟的关系
PWM 载波频率和采样时钟频率,这两个东西必须配合好。否则,你采到的电流值要么是滞后的,要么是混叠的。
4.3.1 载波频率的选择
载波频率越高,电流纹波越小,但开关损耗也越大。弱磁控制通常运行在高速区,载波频率不能太低,否则电流环带宽不够。
我一般遵循这个原则:
- 基频 < 100Hz:载波频率 4kHz~8kHz
- 基频 100Hz~500Hz:载波频率 8kHz~12kHz
- 基频 > 500Hz:载波频率 12kHz~20kHz
当然,具体还要看功率管的开关速度。IGBT 一般不超过 10kHz,SiC MOSFET 可以跑到 20kHz 以上。
4.3.2 采样时钟与 PWM 时钟的同步
这是最容易出问题的地方。如果采样时钟和 PWM 时钟不同源,或者分频比不是整数倍,采样点就会在 PWM 周期里来回漂移。你今天调好的参数,明天可能就不灵了。
为什么会这样?
假设 PWM 时钟是 100MHz,采样时钟是 80MHz,两者没有整数倍关系。每个 PWM 周期,采样点相对于 PWM 起始点的位置都在变化。你今天采样点在中间点,明天可能就跑到边沿上去了。
解决办法:
- 使用同一时钟源:PWM 和 ADC 的时钟来自同一个 PLL,分频比设为整数。
- 硬件触发采样:用 PWM 的计数器比较事件直接触发 ADC 采样,这样采样点绝对同步。
- 软件校准:如果硬件不支持,可以在每个 PWM 周期开始前,用软件调整采样定时器的计数值。
4.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以看到,从 PWM 模式选择,到采样点确定,再到时钟同步,每一步都环环相扣。
4.5 避坑指南
最后,把我这些年踩过的坑总结一下,你遇到了可以直接拿来用。
- 采样点漂移:检查 PWM 时钟和 ADC 时钟是否同源。不同源的话,加一个硬件同步信号。
- 占空比极限:软件里加占空比限幅,别让 PWM 跑到 0% 或 100%,否则采样点失效。
- 多相采样不同步:三相电流必须在同一个 PWM 周期内采完,最好用硬件同时采样(simultaneous sampling)。
- 载波频率过高:不是越高越好。载波频率超过 20kHz 后,开关损耗和采样噪声都会急剧增加。
我曾经在一个项目里,载波频率设到 25kHz,结果 ADC 采样跟不上,电流环带宽反而下降了。后来降到 16kHz,一切正常。所以,别盲目追求高频。