4. 信号采样与量化:ADC采样率选择、分辨率对弱磁控制的影响、过采样技术
各位做电机驱动的同行,今天我们来聊聊ADC采样。这个话题看着基础,但在弱磁区间里,采样搞不好,整个系统都会出问题。我见过不少工程师,在基速以下跑得挺好,一进弱磁区就各种抖、各种啸叫,查来查去,最后发现是ADC采样埋的坑。
说白了,弱磁控制对电流采样的要求比恒转矩区高得多。为什么?因为弱磁时电压已经饱和了,电流相位稍微偏一点,转矩就掉得厉害。这时候如果ADC采样不准,你看到的电流和实际电流对不上,那电流环调得再好也没用。
4.1 ADC采样率:到底多快才够?
采样率的选择,我个人的习惯是先算再选,不盲目追高。弱磁控制中,电流环的带宽通常需要做到开关频率的1/10到1/20。比如开关频率10kHz,电流环带宽大概500Hz到1kHz。
根据奈奎斯特定理,采样率至少是信号最高频率的两倍。但实际工程中,这个倍数远远不够。我建议至少做到电流环带宽的10倍以上。为什么?因为电流环里还有PWM谐波、反电动势谐波,这些高频分量会混叠到低频段。
经验法则:ADC采样率 ≥ 10 × 电流环带宽,且 ≥ 2 × 开关频率。
对于弱磁控制,建议采样率不低于20kHz,最好做到40kHz以上。
我在一个高速电机项目里遇到过这种情况。电机额定转速12000rpm,弱磁到18000rpm。一开始采样率设的20kHz,结果在弱磁区电流波形明显失真,FFT分析看到很多次谐波。后来把采样率提到40kHz,问题就解决了。你想想看,20kHz采样一个10kHz的PWM周期,一个周期才采两个点,能准才怪。
| 开关频率 | 电流环带宽 | 推荐ADC采样率 | 说明 |
|---|---|---|---|
| 5 kHz | 250-500 Hz | ≥ 20 kHz | 低速弱磁可用 |
| 10 kHz | 500-1000 Hz | ≥ 40 kHz | 常规弱磁推荐 |
| 16 kHz | 800-1600 Hz | ≥ 60 kHz | 高速弱磁建议 |
| 20 kHz | 1000-2000 Hz | ≥ 80 kHz | 超高速弱磁 |
4.2 分辨率:12位够用吗?14位还是16位?
分辨率这个问题,我经常被问到。12位ADC在电机控制里用了很多年,但到了弱磁区,12位有时候真不够用。
我们来算一笔账。假设电流传感器量程是±50A,12位ADC的量化步长是100A / 4096 ≈ 24.4mA。听起来不错对吧?但在弱磁区,电流可能只有几安培,而且我们需要精确控制电流的相位角。相位角误差1度,在弱磁区可能带来5%以上的转矩误差。
我记得有一次调试一个永磁同步电机的弱磁算法,12位ADC下,id电流在弱磁区抖动得很厉害。查了半天,发现是量化噪声导致的。id电流设定值只有2A,量化步长24.4mA,相当于控制精度只有1.2%。换成14位ADC后,量化步长降到6.1mA,控制精度提升到0.3%,抖动明显改善。
我的建议:
- 基速以下:12位ADC基本够用
- 弱磁区(2-3倍基速):建议14位
- 深度弱磁(3倍基速以上):强烈推荐16位
当然,不是说12位就不能做弱磁。如果你用高精度电流传感器(比如磁通门),或者电流范围选得合适,12位也能凑合。但如果你用的是霍尔电流传感器,本身噪声就大,再配上12位ADC,那弱磁区的性能就别指望了。
4.3 过采样技术:用时间换精度
过采样,说白了就是用更高的采样率来换取有效分辨率。这个方法在成本敏感的项目里特别好用。你不需要换更贵的ADC芯片,只需要在软件里多采几次、平均一下。
过采样的原理很简单:每提高1位有效分辨率,需要将采样率提高4倍。比如你想把12位ADC变成14位,就需要4^2 = 16倍的过采样率。
注意:过采样只能降低量化噪声和随机噪声,对确定性误差(如ADC偏移误差、增益误差)无效。这些误差需要通过校准来消除。
我在一个低成本项目里用过这个技巧。芯片自带的12位ADC,但客户要求弱磁区电流精度达到0.5%。我用了64倍过采样,把有效分辨率提升到了15位。虽然采样率从40kHz降到了等效的625Hz(40k/64),但电流环带宽只有200Hz,完全够用。
过采样的实现代码也不复杂:
// 过采样实现示例(伪代码)
#define OVERSAMPLE_RATIO 16 // 4倍过采样提升1位,16倍提升2位
uint16_t oversample_adc(uint8_t channel) {
uint32_t sum = 0;
for (int i = 0; i < OVERSAMPLE_RATIO; i++) {
sum += adc_read(channel);
}
// 右移2位得到14位结果(12位+2位)
return (uint16_t)(sum >> 2);
}
这里有个坑,我吃过亏。过采样时,采样间隔必须均匀,而且要在PWM载波的固定相位点采样。如果你在PWM开关瞬间采样,那采到的全是开关噪声,过采样再多也没用。我建议在PWM载波的波峰或波谷处触发ADC采样,这时候电流纹波最小。
4.4 采样时序:弱磁区的特殊要求
弱磁控制里,采样时序比恒转矩区更讲究。为什么?因为弱磁时电压利用率接近极限,电流环的响应速度必须快。如果采样延迟太大,电流环的相位裕度会下降,严重时会导致系统振荡。
我个人的做法是:
- 双采样模式:在PWM周期的波峰和波谷各采一次,然后取平均。这样可以消除PWM纹波的影响。
- 同步采样:三相电流同时采样,避免因采样时间差导致的相位误差。这个在弱磁区特别重要。
- 采样保持时间:ADC的采样保持时间要足够长,尤其是用分流电阻采样时。我一般设到1μs以上。
弱磁区采样时序黄金法则:
- 采样点避开PWM开关沿(±2μs内不要采样)
- 电流环计算必须在采样完成后立即执行
- 采样到PWM更新的延迟控制在1个PWM周期以内
嗯,这里还要提一下采样滤波。很多工程师喜欢在ADC后面加一阶低通滤波,把噪声滤掉。但在弱磁区,滤波会引入相位延迟,这个延迟会直接吃掉电流环的相位裕度。我建议要么不滤波,要么用自适应滤波——在基速以下滤波强一点,进入弱磁区后减弱甚至关闭滤波。
4.5 知识体系总览
说了这么多,我们来梳理一下本章的核心逻辑。下面这张图把采样率、分辨率、过采样和时序的关系画清楚了。
这张图把四个核心要素串起来了。你从中心出发,往四个方向走,每个方向都有具体的工程建议。我个人觉得,采样率和时序是弱磁区最容易被忽视的两个点。很多人只盯着分辨率看,结果采样时序没搞好,再高的分辨率也白搭。