驱动原理:单极性驱动与双极性驱动、整步/半步/细分驱动原理、电流斩波控制(Chopper)技术
好,咱们接着聊驱动原理。说实话,这块内容是步进电机驱动的「内功心法」。你光会接线不行,得明白电机肚子里那点事儿——怎么给它通电,它才肯乖乖转。
我刚开始做电机驱动那会儿,总觉得不就是给线圈通电嘛,能有多难?结果一上高速,电机抖得像筛糠,还丢步。后来才明白,驱动方式选不对,神仙也救不了。
一、单极性驱动 vs 双极性驱动
这两种驱动方式,说白了就是给线圈通电的「姿势」不一样。
1. 单极性驱动
单极性驱动,电机每相绕组只有一个方向通电。线圈中间有个抽头,电流从抽头流进去,从一端出来。你想想看,这样电流方向是固定的。
- 优点:驱动电路简单,每个绕组只需要一个开关管。
- 缺点:线圈利用率低,只有一半绕组在工作。
- 典型应用:老式软驱、打印机里的步进电机。
2. 双极性驱动
双极性驱动就厉害了。电流可以正反两个方向流。没有中间抽头,整个线圈都用上了。
- 优点:线圈利用率100%,同样体积下扭矩更大。
- 缺点:需要H桥电路,驱动复杂一些。
- 典型应用:3D打印机、CNC、工业自动化。
我建议你直接上双极性驱动。现在H桥驱动芯片便宜得很,比如DRV8825、A4988,几块钱一片。单极性驱动基本可以进博物馆了。
| 对比项 | 单极性驱动 | 双极性驱动 |
|---|---|---|
| 线圈利用率 | 50% | 100% |
| 驱动电路 | 简单(单管) | 复杂(H桥) |
| 扭矩 | 小 | 大 |
| 成本 | 低 | 中 |
| 推荐度 | 不推荐 | 强烈推荐 |
二、整步、半步、细分驱动原理
这三个概念,决定了电机转一步走多大角度。嗯,这里要注意,不是步距角越小越好,得看应用场景。
1. 整步驱动
整步就是最原始的驱动方式。每次给两相通电,转子转一个完整的步距角。比如1.8°的电机,整步就是1.8°一步。
- 特点:扭矩最大,但低速振动大。
- 我遇到过:用整步驱动做低速进给,电机嗡嗡响,工件表面有振纹。后来换成半步就好了。
2. 半步驱动
半步驱动,就是整步和单相通电交替进行。步距角减半,比如1.8°变成0.9°。
- 优点:振动明显减小,分辨率翻倍。
- 缺点:扭矩波动大,单相通电时扭矩只有一半。
3. 细分驱动
细分驱动,说白了就是把一步「切」成很多小步。通过控制两相电流的比例,让转子停在任意位置。
举个例子,1/16细分,就是把1.8°切成16份,每份0.1125°。电机转起来丝般顺滑。
// 细分电流控制示例(伪代码)
// 假设1/16细分,查表法
const uint16_t sin_table[16] = {
0, 125, 250, 375, 500, 625, 750, 875,
1000, 875, 750, 625, 500, 375, 250, 125
};
void set_microstep(uint8_t step) {
uint16_t current_A = sin_table[step]; // A相电流
uint16_t current_B = sin_table[(step+4)%16]; // B相电流(相差90°)
set_dac_A(current_A);
set_dac_B(current_B);
}
你想想看,细分越高,电机运行越平滑。但也不是越高越好。我见过有人用1/256细分,结果扭矩小得可怜,稍微带点负载就丢步。
三、电流斩波控制(Chopper)技术
这个技术,是步进电机驱动的「灵魂」。没有它,电机高速跑不起来,低速还发热严重。
为什么会这样?因为电机线圈有电感。电感会阻碍电流变化。你给线圈加电压,电流不会瞬间达到设定值,而是慢慢爬升。转速一高,电流还没爬上去,下一个脉冲就来了。结果就是扭矩暴跌。
Chopper技术怎么解决?说白了就是「斩波」——用PWM控制,让电流维持在设定值附近。
工作原理
- 给线圈加满电压,电流快速上升。
- 电流达到设定值,关断开关管,电流通过续流二极管衰减。
- 电流降到下限,再次开通开关管。
- 如此反复,电流被「斩」成锯齿波,平均值稳定在设定值。
// 电流斩波控制伪代码
#define TARGET_CURRENT 1000 // 目标电流(mA)
#define HYSTERESIS 50 // 滞环宽度
void chopper_control(uint16_t actual_current) {
if (actual_current < (TARGET_CURRENT - HYSTERESIS)) {
// 电流偏低,开通MOSFET
GPIO_SetBits(MOSFET_PORT, MOSFET_PIN);
}
else if (actual_current > (TARGET_CURRENT + HYSTERESIS)) {
// 电流偏高,关断MOSFET
GPIO_ResetBits(MOSFET_PORT, MOSFET_PIN);
}
// 在滞环范围内,保持当前状态
}
Chopper的关键参数
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 斩波频率 | PWM开关频率 | 20kHz-40kHz,避开人耳敏感区 |
| 电流设定值 | 电机额定电流 | 不要超过额定值,否则烧电机 |
| 衰减模式 | 快衰减/慢衰减/混合衰减 | 低速用慢衰减,高速用快衰减 |
| 采样电阻 | 电流检测用 | 0.1Ω-0.5Ω,功率要够 |
嗯,这里有个坑。我曾经在一个项目里,斩波频率设成50kHz,结果电机啸叫得厉害。后来查资料才知道,50kHz刚好在电机机械谐振频率附近。换成25kHz,世界安静了。
- 双极性驱动是主流,别纠结单极性了。
- 细分驱动让运动平滑,但别迷信高细分。
- Chopper技术是高速驱动的关键,参数要仔细调。
- 实际项目中,多试几个斩波频率和衰减模式,找到最合适的组合。
好了,驱动原理这块就聊到这儿。下一章咱们讲硬件设计——怎么选驱动芯片、怎么画PCB、怎么处理散热。到时候我会分享一些我踩过的坑,保证让你少走弯路。