3、PWM驱动调试:PWM频率与占空比设置、死区时间配置、电机启动电流冲击抑制、堵转保护逻辑实现
好,咱们直接进入正题。PWM驱动调试,说白了就是让电机听话地转起来。你想想看,剃须刀这东西,刀头转速动辄上万转,PWM调不好,轻则噪音大、震动强,重则直接烧MOS管。我这些年踩过的坑,今天一次性给你讲透。
3.1 PWM频率与占空比设置
先聊频率。很多人上来就问:「PWM频率设多少合适?」我的回答是:看你的电机和MOS管。
对于剃须刀这种小直流电机,我个人习惯把频率定在20kHz到40kHz之间。为什么是这个范围?
- 低于20kHz:人耳能听到,会有明显的啸叫声。用户会投诉的。
- 高于40kHz:MOS管的开关损耗会急剧上升,电池续航直接崩掉。
我遇到过一款电机,标称参数挺好,结果一上20kHz就嗡嗡响。后来发现是电机转子动平衡有问题,频率刚好激发了机械共振。最后我把PWM频率调到32kHz,问题解决了。嗯,这就是实战。
占空比设置相对简单,但有个细节要注意:不要从0%直接跳到100%。我建议用软启动,比如从30%开始,每10ms增加5%,直到目标值。这样能有效避免电流冲击。
核心参数速查表
| 参数 | 推荐值 | 说明 |
|---|---|---|
| PWM频率 | 20kHz - 40kHz | 避开人耳敏感区,兼顾效率 |
| 占空比范围 | 30% - 95% | 留5%余量,避免MOS管完全导通 |
| 软启动步进 | 5% / 10ms | 根据电机惯量调整 |
3.2 死区时间配置
死区时间,这玩意儿看着简单,但坑特别多。尤其是用半桥驱动的时候,上下管同时导通就是灾难。
我记得有一次调试,MOS管莫名其妙发烫。示波器一抓波形,发现上下管有5ns的重叠导通时间。虽然只有5ns,但电流瞬间飙升到十几安培。后来我把死区时间设成了100ns,问题解决。
死区时间怎么设?我给你个经验公式:
死区时间 = MOS管关断延迟时间 + MOS管开通延迟时间 + 安全裕量
一般MOS管的数据手册会给出这些参数。以常见的N沟道MOS管为例:
- 关断延迟:约30ns - 50ns
- 开通延迟:约20ns - 40ns
- 安全裕量:建议加50ns - 100ns
所以总死区时间通常在100ns - 200ns之间。别设太大,否则电机效率会下降。
小技巧:调试时用示波器看上下管栅极波形,确保死区时间内两个管子都是关断的。我曾经用这个方法抓出过PCB布局导致的寄生电感问题。
3.3 电机启动电流冲击抑制
电机启动瞬间,电流能飙到额定电流的5到10倍。你想想看,剃须刀电池才多大?瞬间大电流会把电池电压拉低,甚至触发过流保护。
我常用的方法有三种:
- PWM软启动:前面提过,占空比逐步增加。这是最基础也最有效的方法。
- 电流环限流:在启动阶段,用ADC实时采样电流,一旦超过阈值就降低占空比。这需要MCU有比较快的ADC采样率。
- 预充磁:先给电机一个低占空比的PWM(比如10%),保持几毫秒,让电机建立磁场,然后再加速。这个方法对无刷电机特别有效。
我做过一个项目,电机启动时电流冲击太大,导致电池保护板直接锁死。后来用了「预充磁+软启动」的组合方案,启动电流从8A降到了2A以内。效果立竿见影。
注意:软启动时间不能太长。剃须刀用户按一下开关,等半秒才转起来,体验会很差。我一般控制在50ms以内完成启动。
3.4 堵转保护逻辑实现
堵转保护,说白了就是电机卡住时赶紧断电。否则电流一直大着,MOS管和电机都会烧。
怎么判断堵转?我常用的方法有两种:
- 电流检测法:实时采样电机电流,如果连续一段时间(比如200ms)超过堵转阈值,就判定为堵转。
- 转速检测法:用霍尔传感器或反电动势检测转速,如果PWM输出正常但转速为零,那就是堵转了。
我个人更推荐电流检测法,因为实现简单,而且剃须刀内部空间有限,加霍尔传感器会增加成本。
下面是一个简单的堵转保护伪代码:
// 堵转保护逻辑
#define STALL_CURRENT_THRESHOLD 3000 // 3A
#define STALL_TIME_THRESHOLD 200 // 200ms
uint32_t stall_timer = 0;
void motor_control_loop() {
uint16_t current = read_motor_current();
if (current > STALL_CURRENT_THRESHOLD) {
stall_timer += 10; // 假设循环周期10ms
if (stall_timer >= STALL_TIME_THRESHOLD) {
// 堵转!立即关闭PWM
disable_pwm_output();
set_motor_error_flag(MOTOR_ERROR_STALL);
// 可以尝试几次重启,比如3次后彻底停机
}
} else {
stall_timer = 0; // 电流正常,清零计时器
}
}
这里有个细节:堵转恢复策略。我建议做3次自动恢复尝试:
- 第一次堵转:关闭PWM,等待1秒后重新启动。
- 第二次堵转:关闭PWM,等待2秒后重新启动。
- 第三次堵转:彻底停机,需要用户手动重启。
为什么要这样?因为有时候堵转只是胡须卡住了,用户抖一下就能解决。自动恢复能提升用户体验。但如果连续堵转,说明有硬件故障,必须停机保护。
避坑指南:我曾经遇到过堵转保护误触发的问题。原因是电机启动瞬间电流也很大,被误判为堵转。解决方案是在启动后的前100ms内不检测堵转,或者把堵转阈值设得比启动电流高一些。
好了,PWM驱动调试的核心内容就这些。记住:频率选对、死区设好、启动平滑、堵转保护。把这四点做到位,你的剃须刀电机控制基本就稳了。下一章我们聊电流采样与ADC校准,那又是另一番天地。