4、同步采样技术:PWM中心对齐采样、双采样模式、采样窗口优化、ADC触发时序

各位工程师朋友,咱们今天聊点实在的。FOC控制里,电流采样这个环节,说白了就是跟噪声做斗争。你想想看,电机一跑起来,PWM开关动作、母线电压跳变、寄生参数振荡……这些噪声全往电流信号上招呼。我早期做项目时,就吃过这个亏——采样点没选好,电流波形看着还行,一闭环就跑飞了。

那怎么解决?核心思路就四个字:同步采样。说白了,就是让ADC采样的时刻,跟PWM开关动作错开,专挑噪声最小的时候下手。今天我就把这套打法拆开揉碎了讲给你听。

核心观点:同步采样的本质,是让ADC触发时刻避开PWM开关噪声窗口,利用PWM中心对齐或边沿对齐模式,在电流最平稳的时刻完成采样。

4.1 PWM中心对齐采样——最经典的打法

先说说PWM中心对齐模式。这个模式在FOC里用得最多,为什么?因为它的电流纹波最小,采样窗口最干净。

你看啊,在中心对齐模式下,PWM的载波是一个对称的三角波。开关管在波峰和波谷处切换,而电流的纹波正好在波峰和波谷处过零点。换句话说,在三角波的顶点或底点,电流纹波刚好为零。这时候采样,你采到的就是电流的平均值,噪声最小。

我习惯把采样点放在三角波的波谷处。为什么?因为波谷处是下桥臂导通的时间点,共模噪声相对较小。我在一个48V的BLDC项目里试过,波谷采样比波峰采样信噪比高了差不多6dB。嗯,这个经验你可以记一下。

小技巧:如果你用的是单电阻采样,中心对齐模式下,你可以在一个PWM周期内采两次——一次在波谷,一次在波峰。这样就能重构出两相电流,省掉一个采样电阻。

4.2 双采样模式——一个周期采两次

双采样模式,说白了就是一个PWM周期里触发两次ADC转换。一次在波谷,一次在波峰。这样做的好处很明显:

  • 提高带宽:采样频率翻倍,电流环的响应速度更快
  • 降低延迟:每次采样后立即更新PWM占空比,控制更实时
  • 噪声抵消:两次采样的平均值可以抵消一部分共模噪声

不过,双采样模式也有坑。我遇到过一个问题:两次采样之间的时间间隔太短,ADC的采样保持电容还没完全稳定,第二次采样的结果就偏了。后来我查了芯片手册,发现ADC采样时间至少要设到5个时钟周期以上,才够用。

这里给个配置参考:

// 双采样模式配置示例(基于STM32G4)
// 设置ADC触发源为TIM1的CH1和CH2
ADC1->CFGR2 |= ADC_CFGR2_JOVSE;    // 注入组过采样使能
TIM1->CCR1 = PWM_PERIOD / 4;       // 波谷采样点
TIM1->CCR2 = PWM_PERIOD * 3 / 4;   // 波峰采样点
// 注意:两个采样点之间至少间隔10个ADC时钟周期

警告:双采样模式下,ADC的采样时间不能太短。我建议至少设到12个ADC时钟周期,否则采样值会抖动。特别是当电机转速较高时,电流变化率大,采样时间不够会导致严重的测量误差。

4.3 采样窗口优化——把噪声挡在外面

采样窗口优化,说白了就是给ADC采样加一个“时间门”。在这个门内,ADC才工作;门外,ADC休息。这个门要开多大?开早了,噪声进来;开晚了,电流信号还没稳定。

我一般遵循一个原则:采样窗口的起始点,至少滞后PWM开关动作200ns。为什么是200ns?因为MOS管的开关振荡,通常在100-150ns内就衰减完了。留50ns的余量,比较稳妥。

采样窗口的宽度,取决于ADC的采样时间。比如你的ADC采样时间是100ns,那窗口宽度就设成100ns。但要注意,窗口不能太宽,否则会覆盖到下一个开关动作的噪声。

这里有个实际案例。我在一个24V的无人机电调项目里,采样窗口设得太宽了(约300ns),结果每次采样都包含了开关噪声的尾巴。电流波形上出现了周期性的毛刺,导致电机在低速时抖动。后来我把窗口缩到150ns,问题就解决了。

经验之谈:采样窗口的优化,最好用示波器实测。把ADC的采样触发信号和PWM开关信号同时抓出来,看看噪声持续多长时间,然后反推窗口参数。纸上谈兵不如一测。

4.4 ADC触发时序——把时间对齐搞明白

ADC触发时序,是整个同步采样的核心。你得让ADC在正确的时间点开始转换,早了晚了都不行。

常见的触发方式有两种:

  • 硬件触发:用定时器的比较事件直接触发ADC。延迟最小,精度最高。
  • 软件触发:在PWM中断里手动启动ADC。灵活,但延迟大,适合低速应用。

我个人强烈推荐硬件触发。为什么?因为软件触发有中断响应延迟,这个延迟是不确定的。你想想看,中断优先级、其他中断的抢占、CPU的负载……这些都会影响触发时刻。而硬件触发是定时器直接连到ADC,延迟固定,可预测。

下面这张图,是我画的一个典型时序关系:

PWM中心对齐模式下的ADC触发时序 PWM载波 噪声区 噪声区 采样点1 采样点2 采样点3 ADC转换 ADC转换 ADC转换 窗口 窗口 窗口 0 T/4 T/2 3T/4 T PWM载波 噪声区域 采样点 ADC转换

从图上你能看到,采样点都避开了噪声区域,落在三角波的波谷处。ADC转换时间紧跟着采样点,中间没有延迟。这就是硬件触发的优势——时间对齐得死死的。

最后,我再说一个配置细节。ADC触发时序里,有一个参数叫“采样保持时间”。这个时间不能太短,否则采样电容充不满;也不能太长,否则会错过最佳采样窗口。我一般设成:

ADC时钟频率 采样保持时间 适用场景
60 MHz 12个时钟周期(200ns) 高速电机(>10000 rpm)
40 MHz 15个时钟周期(375ns) 中速电机(3000-10000 rpm)
20 MHz 20个时钟周期(1μs) 低速电机(<3000 rpm)

嗯,这个表是我自己总结的,不一定适合所有芯片,但可以作为起点。你拿到具体芯片后,还是要实测一下,看看采样值是否稳定。

总结一下:同步采样的核心就三点——选对采样点(波谷/波峰)、控制采样窗口(避开噪声)、用硬件触发(减少延迟)。把这三点做到位,电流采样的信噪比至少能提升10dB以上。我这些年做过的FOC项目,凡是采样噪声大的,十有八九是这三点没做好。


公众号:蓝海资料掘金营,微信deep3321