4、电流斩波控制:恒流驱动原理、斩波频率选择、如何避免电机啸叫
各位做步进电机驱动的朋友,咱们今天聊一个绕不开的话题——电流斩波控制。
说实话,我刚入行那会儿,觉得步进电机驱动不就是给线圈通电嘛,有啥难的?直到第一次听到电机发出那种尖锐的啸叫声,我才意识到,事情没那么简单。
这一节,我把自己这些年踩过的坑、总结的经验,都摊开来跟你聊聊。
4.1 恒流驱动原理:为什么非恒流不可?
先问个问题:步进电机本质上是个什么器件?
答案是——电感。线圈绕在铁芯上,就是个大电感。
电感有个特性:电流不能突变。你给它加电压,电流是慢慢爬上去的。你关掉电压,电流也是慢慢降下来的。
那问题来了:我们想让电机转得快、力矩大,就得让电流快速建立。但电感偏偏拖后腿。
恒流驱动的思路,说白了就是:我不管你电感多大,我只要电流按我设定的值走。
核心原理:
- 用PWM(脉宽调制)控制MOS管开关
- 通过采样电阻检测实际电流
- 比较实际电流与目标电流的差值
- 差值大时,加大占空比;差值小时,减小占空比
- 形成一个闭环,让电流稳定在目标值附近
我习惯把这个过程叫做「电流的拉锯战」。你想想看,电感想慢慢来,PWM偏要快速开关,两者就在那里较劲。最终结果就是电流在目标值上下波动,形成一个锯齿波。
这个锯齿波的幅度和频率,就是我们接下来要聊的关键。
4.2 斩波频率选择:不是越快越好
斩波频率,就是PWM的开关频率。选多少合适?
我记得第一次做驱动板时,心想频率越高越好啊,电流纹波小,控制精度高。于是直接上了100kHz。
结果呢?MOS管烫得能煎鸡蛋。开关损耗太大了。
后来我总结了一个经验公式:
斩波频率 ≈ 1 / (2 × 电机电感 × 目标电流 × 开关次数)
当然,实际选型没那么复杂。我给大家一个参考范围:
| 电机类型 | 推荐斩波频率 | 说明 |
|---|---|---|
| 小型两相步进(NEMA 8~14) | 20kHz ~ 40kHz | 电感小,频率可稍高 |
| 中型两相步进(NEMA 17~23) | 15kHz ~ 30kHz | 兼顾纹波和损耗 |
| 大型步进(NEMA 34以上) | 8kHz ~ 20kHz | 电感大,频率不宜过高 |
这里有个坑:斩波频率不能落在人耳可听范围内。人耳最敏感的是2kHz~5kHz。如果你选10kHz以下,电机可能会发出「滋滋」声,听着就烦。
我的个人习惯:
一般选20kHz以上。20kHz是人耳听觉的上限,再高就听不到了。但也不能太高,超过50kHz后,MOS管的开关损耗会急剧增加。
4.3 如何避免电机啸叫?——实战经验总结
电机啸叫,说白了就是电流纹波频率落在了可听范围内,或者PWM的谐波分量太强。
我曾经在一个项目里,电机低速运行时发出「呜呜」的叫声,客户投诉说像鬼哭。我排查了三天,最后发现是斩波频率和电机的机械共振频率重合了。
从那以后,我总结了一套避坑指南:
4.3.1 斩波频率避开共振区
每个电机都有机械共振频率,一般在几百赫兹到几千赫兹。你可以用手转动电机轴,感受一下有没有「卡顿」感。那个卡顿的频率,就是共振点。
斩波频率要避开这个区域。如果避不开,可以考虑用随机PWM或扩频调制技术。
4.3.2 电流纹波要平滑
纹波太大,电机就会抖,一抖就响。怎么平滑?
- 增加采样电阻的精度(1%以上)
- 在采样电阻两端加RC滤波(时间常数≈1/斩波频率)
- 使用滞环比较器,而不是固定阈值比较
4.3.3 慢衰减 vs 快衰减
这个很多人会忽略。电流斩波时,MOS管的关断方式有两种:
- 快衰减:电流快速下降,纹波大,但响应快
- 慢衰减:电流缓慢下降,纹波小,但响应慢
我建议在低速时用慢衰减,高速时用快衰减。或者干脆用混合衰减——先快后慢,兼顾两者。
注意:
不要为了消除啸叫而把斩波频率调得太高。我见过有人调到80kHz,啸叫是没了,但驱动芯片一个月烧了三块。开关损耗和散热要平衡。
4.3.4 软件层面的「温柔」处理
硬件搞定了,软件也不能马虎。我习惯在电流环里加一个软启动:
// 伪代码示例:电流软启动
void current_soft_start(float target_current) {
float current_step = target_current / 100; // 分100步
for (int i = 0; i < 100; i++) {
set_current(i * current_step);
delay_ms(1); // 每步间隔1ms
}
}
这样电流是慢慢爬上去的,不会突然冲击,电机自然就不叫了。
4.4 一个实战案例
去年我做了一款3D打印机的步进驱动板,客户要求静音。我选了TMC2209芯片,默认斩波频率是25kHz。
测试时发现,电机在60rpm左右有轻微啸叫。用示波器一看,电流纹波频率刚好是2.3kHz——和电机的机械共振频率重合了。
解决办法:把斩波频率从25kHz改到28kHz,同时把电流环的PI参数调软一点。问题解决。
嗯,这里要注意:改频率后要重新测一下MOS管的温度。频率高了,开关损耗会变大。我那次测下来,温度从65°C升到了72°C,还在可接受范围内。
4.5 总结一下
电流斩波控制,说白了就是三个字:稳、准、静。
- 稳:电流纹波要小,不能忽大忽小
- 准:实际电流要跟目标电流一致,误差控制在5%以内
- 静:斩波频率和衰减方式要选对,别让电机唱歌
我个人觉得,做电机驱动最忌讳的就是「一招鲜吃遍天」。不同的电机、不同的负载、不同的转速,参数都要微调。多动手、多测波形,比看一百篇论文都管用。
下一节,咱们聊聊微步驱动的电流波形合成。那个更有意思,到时候见。