2. 电流采样原理:采样电阻选型、运放电路设计、ADC采样配置
电流采样,说白了就是给电机电流拍一张“快照”。
这张快照拍得准不准,直接决定了过流保护能不能在关键时刻“一刀切下去”。我见过不少项目,算法写得天花乱坠,结果采样环节就埋了雷——电流波形畸变、噪声淹没了信号、ADC读数跳得像心电图。嗯,今天咱们就把这个环节拆开揉碎了讲。
核心逻辑链: 采样电阻把电流变成电压 → 运放把电压调理到ADC的“舒适区” → ADC把模拟量变成数字量。三个环节,一个都不能掉链子。
2.1 采样电阻选型——别小看这颗“小电阻”
采样电阻,也叫分流电阻、shunt电阻。它的任务很简单:让电流流过,产生一个微小的压降,然后我们测量这个压降。
但简单的事,往往最容易翻车。
2.1.1 阻值怎么选?
阻值太小,信号微弱,容易被噪声淹没。阻值太大,发热严重,压降影响电机效率。我一般遵循这个原则:
- 最大压降控制在 50mV ~ 100mV。这是业界比较公认的“甜区”。
- 举个例子:电机峰值电流 50A,选 1mΩ 电阻,压降就是 50mV。刚好。
- 如果选 2mΩ,压降 100mV,发热翻倍,但信噪比更好。看你的散热条件取舍。
我的习惯: 先算峰值电流下的压降,再反推阻值。压降目标定在 75mV 左右,留点余量给过流阈值。
2.1.2 功率额定值——别让它烧了
功率公式 P = I²R。持续电流 30A,1mΩ 电阻,功率就是 0.9W。但电机启动瞬间电流可能翻倍,所以选型时至少留 2 倍余量。
| 持续电流 | 阻值 | 计算功率 | 推荐额定功率 |
|---|---|---|---|
| 10A | 2mΩ | 0.2W | 1W |
| 30A | 1mΩ | 0.9W | 3W |
| 50A | 0.5mΩ | 1.25W | 5W |
2.1.3 温漂和寄生电感——容易被忽略的坑
我曾经在一个项目中,常温下电流采样很准,但电机跑热了,读数直接偏了 15%。查了半天,是采样电阻的温漂在作怪。
- 温漂(TCR): 选 ±50ppm/°C 以下的,最好是 ±25ppm/°C。锰铜或康铜材质的电阻温漂表现不错。
- 寄生电感: 高频PWM开关会产生 di/dt,寄生电感上会感应出尖峰电压,干扰采样。选四端开尔文结构的电阻,或者低电感贴片电阻。
注意: 采样电阻的布局也很关键。走线要短而粗,差分走线要等长、紧耦合。我见过有人把采样电阻放在离MOS管很远的地方,结果PCB走线电阻都比采样电阻大了。
2.2 运放电路设计——把信号“放大”到ADC能看懂
采样电阻上的压降通常只有几十毫伏,而大多数MCU的ADC输入范围是 0~3.3V 或 0~5V。中间差了两个数量级,必须靠运放来“搭桥”。
2.2.1 差分放大 vs 单端放大
电机电流是双向的(正转、反转、制动),所以采样电阻两端的电压可能是正的,也可能是负的。单端放大搞不定这个,必须用差分放大器。
- 差分放大器: 直接测量电阻两端的电压差,共模抑制比高,抗干扰能力强。
- 仪表放大器: 精度更高,但价格也高。对成本敏感的项目,用运放搭差分电路就够了。
2.2.2 偏置电压——把负信号“抬”起来
ADC只能测正电压。如果电流双向流动,运放输出会低于0V,ADC读不到。所以需要加一个偏置电压,把信号整体抬升到ADC的测量范围内。
// 典型偏置计算示例
// 假设 ADC 参考电压 Vref = 3.3V
// 运放输出范围:0V ~ 3.3V
// 偏置电压 Vbias = Vref / 2 = 1.65V
// 这样双向电流信号就以 1.65V 为中心摆动
// 正电流 → 1.65V 以上,负电流 → 1.65V 以下
2.2.3 增益怎么定?
增益 = ADC满量程 / 采样电阻最大压降。举个例子:
- 采样电阻最大压降:±75mV(双向,所以总摆幅150mV)
- ADC输入范围:0~3.3V(摆幅3.3V)
- 增益 = 3.3V / 150mV ≈ 22
- 实际取 20 或 22.1,留点余量防止饱和
我的经验: 增益不要取太大。增益越大,噪声也被放得越大。如果信号本身信噪比够,宁可把增益放小一点,用ADC的分辨率去换动态范围。
2.2.4 滤波——别让PWM噪声混进来
电机驱动是PWM斩波,电流波形上叠加了大量高频开关噪声。运放输出端必须加RC低通滤波,截止频率一般设在 1/10 的PWM频率左右。
// 滤波参数估算
// PWM频率:20kHz
// 截止频率:2kHz(1/10 PWM频率)
// 取 R = 1kΩ,C = 100nF
// 截止频率 fc = 1 / (2π * 1k * 100n) ≈ 1.6kHz
// 够用
2.3 ADC采样配置——把模拟量变成数字量
ADC是采样链路的最后一站。前面做得再好,ADC配置不对,全白搭。
2.3.1 分辨率与采样率
12位ADC是主流,16位更贵但精度更高。对于过流保护,12位通常够用。但要注意:
- 采样率: 至少是PWM频率的2倍以上(奈奎斯特定理)。实际工程中,我习惯用 4~8 倍。
- 同步采样: 三相电流最好同时采样,避免时间差导致的计算误差。如果MCU不支持同步采样,至少保证采样间隔固定。
2.3.2 参考电压——稳不稳很关键
ADC的参考电压直接决定了测量精度。如果Vref波动,读数就会跟着飘。
- 内部参考电压:方便,但精度一般,温漂大。
- 外部参考电压:用高精度基准源(比如TL431、REF3033),稳定得多。
我曾经踩过的坑: 用MCU内部Vref做电流采样,结果MCU供电电压波动,电流读数也跟着波动。后来换了外部基准源,问题解决。记住,采样链路的精度取决于最弱的一环。
2.3.3 采样触发时机——别在开关噪声最大的时候采样
PWM开关瞬间,电流波形上有剧烈的尖峰。如果在那个时刻触发ADC采样,读到的值毫无意义。
- 最佳采样点: PWM周期的中间时刻,或者开关管导通稳定之后。
- 实现方式: 用定时器触发ADC,或者用PWM的同步信号触发。
// 伪代码:PWM同步采样配置
// 假设 PWM 频率 20kHz,周期 50μs
// 在 PWM 周期中点触发 ADC(25μs 处)
// 避开开关噪声尖峰
PWM_ConfigTimerTrigger(PWM_CH1, TRIGGER_AT_CENTER);
ADC_StartConversionByTrigger(ADC_CH_CURRENT);
2.3.4 过采样——用时间换精度
如果ADC分辨率不够,可以用过采样技术。对同一个电流值连续采样多次,然后取平均。理论上,每4倍过采样可以增加1位有效分辨率。
我的建议: 过采样次数不要太多,16次就够了。再多的话,计算开销大,而且低通滤波效果反而变差(因为采样间隔拉长了)。
2.4 小结
电流采样这件事,说难不难,说简单也不简单。采样电阻、运放、ADC,三个环节环环相扣。任何一个环节出了偏差,最终的数字量都会“失真”。
嗯,这一章的内容就到这里。记住一句话:采样链路的精度,取决于最弱的一环。别让一颗小电阻,毁了你整个过流保护方案。