3、PWM中心对齐模式:如何利用PWM中心对齐实现最佳采样点
做无感FOC的朋友都知道,电流采样时机选不好,算出来的角度全是噪声。我早年踩过这个坑——采样点选在PWM边沿,结果电流波形上全是毛刺,观测器根本收敛不了。后来才明白,PWM中心对齐模式才是电流采样的黄金搭档。
说白了,中心对齐模式把PWM波形从「锯齿」变成了「等腰三角形」。这个变化看似简单,却直接决定了你能否采到干净的平均电流。
3.1 什么是PWM中心对齐?
先看两种模式的对比:
| 对比项 | 边沿对齐模式 | 中心对齐模式 |
|---|---|---|
| 计数方式 | 从0计数到ARR,然后跳回0 | 从0计数到ARR,再递减回0 |
| 波形形状 | 锯齿波 | 等腰三角波 |
| 更新事件 | 计数到ARR时 | 计数到0或ARR时(可配置) |
| 采样窗口 | 集中在边沿附近 | 集中在波峰/波谷 |
中心对齐模式下,PWM信号在周期中点对称展开。高电平从中间向两边延伸,占空比越大,高电平越宽。这个对称特性,恰好给了我们一个绝佳的采样窗口。
3.2 为什么中心对齐更适合采样?
我习惯用一句话解释:中心对齐模式下,电流纹波在PWM周期中点处自然归零。
你想想看,电机绕组是感性负载。PWM导通时电流上升,关断时电流下降。在边沿对齐模式里,导通和关断都发生在同一侧,电流纹波始终不对称。但在中心对齐模式里,导通从中间开始,关断也回到中间——纹波在周期中点达到平衡。
具体来说,有三大好处:
- 采样点稳定:在PWM周期中点(计数到0或ARR时),相电流纹波接近零,采样值就是真实平均值
- 抗噪声能力强:避开开关动作瞬间的振铃和尖峰,ADC采样不受开关噪声干扰
- 单电阻采样友好:中心对齐模式下,两相电流同时可测的时间窗口更长,单电阻方案更容易实现
核心结论:中心对齐模式把采样窗口从「噪声区」搬到了「平静区」。这不是锦上添花,而是无感FOC能否稳定运行的前提。
3.3 最佳采样点在哪里?
嗯,这里要注意——不是所有中心对齐的采样点都一样好。我见过有人直接在更新中断里触发ADC,结果采样值忽大忽小。
最佳采样点有两个:
- 计数到0时(下溢事件):此时所有PWM通道都处于低电平,母线电流为零,相电流纹波最小
- 计数到ARR时(上溢事件):此时所有PWM通道都处于高电平,同样纹波最小
我个人习惯用下溢事件。为什么?因为下溢时刻所有开关管都关断,电流自然续流,采样到的值最接近真实平均值。上溢时刻虽然纹波也小,但所有管子都导通,母线电流大,容易引入共模干扰。
实战技巧:在STM32/GD32等MCU上,配置TIM的更新事件为「仅下溢时触发」。这样ADC触发和PWM更新完全同步,采样点固定在下溢时刻。
3.4 采样时序的硬件配置
光知道采样点还不够,你得让硬件在正确的时间干活。我以STM32为例,给出典型配置:
// 配置TIM1为中心对齐模式,更新事件在下溢时触发
TIM1->CR1 |= TIM_CR1_CMS_1; // 中心对齐模式2
TIM1->CR1 |= TIM_CR1_DIR; // 向下计数(可选)
// 配置ADC触发源为TIM1的下溢事件
ADC1->CFGR |= ADC_CFGR_EXTEN_0; // 上升沿触发
ADC1->CFGR |= 0x60; // 选择TIM1_TRGO为触发源
// 配置TIM1的TRGO为下溢事件
TIM1->CR2 |= TIM_CR2_MMS_1; // 更新事件作为TRGO
// 配置采样时间(关键!)
ADC1->SMPR1 |= ADC_SMPR1_SMP0_2; // 采样周期设为28.5个ADC时钟
这里有个坑——采样时间不能太短。我曾经为了追求速度,把采样周期压到3个时钟,结果采样值跳得像心电图。后来发现,采样时间至少要覆盖开关噪声的衰减期,一般建议15个ADC时钟以上。
避坑指南:我曾经在中心对齐模式下,把ADC触发点设在计数到ARR/2的位置。结果采样值正好落在电流纹波的波峰或波谷上,误差高达15%。记住——只有计数到0或ARR时纹波才最小,中间点反而最差。
3.5 知识体系:中心对齐采样核心逻辑
下面这张图总结了PWM中心对齐模式下的采样逻辑,我建议你收藏起来:
3.6 采样窗口的时序约束
有了采样点,还得保证ADC能在正确的时间完成转换。这里有个时序约束公式:
T_sample + T_conv < T_window
其中:
T_sample = ADC采样周期 × 采样时钟周期
T_conv = ADC转换时间(通常12-15个时钟周期)
T_window = 采样窗口宽度(中心对齐模式下 = 死区时间 + 最小导通时间)
我遇到过最典型的问题:死区时间设得太长,采样窗口被压缩,ADC还没转换完PWM状态就变了。结果采样值要么是0,要么是乱码。
经验值:对于20kHz的PWM频率,中心对齐模式下每个半周期25μs。建议采样窗口至少留5μs,ADC转换时间控制在2μs以内。这样即使有3μs的死区,采样也能从容完成。
3.7 单电阻采样场景的特殊处理
如果你做单电阻电流采样,中心对齐模式更是不可或缺。单电阻采样的核心难点是:需要在同一个PWM周期内采样两相电流。边沿对齐模式下,两相电流的采样窗口几乎不重叠,很难同时采到。
中心对齐模式就不一样了——在PWM周期的中点附近,两相电流同时处于续流状态,采样窗口天然重叠。你只需要在计数到0时触发一次ADC,然后通过两个不同的采样保持通道,就能同时采到两相电流。
我当年做单电阻方案时,试过边沿对齐加移相,折腾了两周没搞定。换成中心对齐模式,一天就调通了。说白了,选对模式比调参数更重要。
3.8 小结
PWM中心对齐模式不是万能的,但在无感FOC的电流采样场景下,它是最优解。核心就三点:
- 采样点选在下溢事件(计数到0)
- 采样时间留够,别为了速度牺牲精度
- 单电阻方案必须用中心对齐,否则采样窗口不够