3、细分技术原理:什么是细分、微步进波形生成、电流矢量合成
大家好,我是你们的老朋友。今天咱们聊聊细分技术。说实话,我刚入行那会儿,对细分的理解就是「把一步拆成多步走」。后来踩了不少坑,才真正搞明白里面的门道。
细分,英文叫 Micro-stepping,说白了就是让电机走得更细腻。你想想看,一个两相步进电机,整步走的话,每一步是 1.8°。这在很多场合根本不够用。比如做 3D 打印,层高精度要求 0.1mm,你一步下去可能就过了。
3.1 什么是细分
细分的本质,是用电流控制代替脉冲控制。整步驱动时,我们给 A、B 两相轮流通电,电机转子就跟着转。但这样每一步都会产生很大的转矩脉动,振动和噪音都大。
细分就不一样了。它让 A、B 两相的电流按特定比例同时导通。比如 1/2 细分,A 相电流 100%,B 相电流 0% → 然后 A 相 70.7%,B 相 70.7% → 最后 A 相 0%,B 相 100%。这样转子就被「拉」到了中间位置。
核心概念:细分数 = 把整步拆成的微步数。比如 1/16 细分,就是把 1.8° 拆成 16 个微步,每步 0.1125°。
我在项目中遇到过一个问题:客户要求电机运行极其平滑,但用了 1/4 细分还是抖。后来发现,不是细分数不够,而是电流波形没调好。嗯,这个后面会细说。
3.2 微步进波形生成
微步进波形,说白了就是两相电流随时间变化的曲线。最常用的是正弦波和余弦波。
为什么会这样?因为步进电机的转矩与电流近似成正比。要让转子匀速转动,就需要合成一个恒幅旋转的电流矢量。而正弦和余弦,正好能生成一个旋转的圆。
3.2.1 理想波形公式
假设我们做 N 细分,第 k 个微步的电流值为:
A 相电流:I_A = I_max × sin(θ_k)
B 相电流:I_B = I_max × cos(θ_k)
其中 θ_k = (k / N) × 90°,k = 0, 1, 2, ..., N-1
举个例子,1/4 细分(N=4),电流表如下:
| 微步序号 k | 角度 θ (°) | I_A (% of I_max) | I_B (% of I_max) |
|---|---|---|---|
| 0 | 0 | 0.0% | 100.0% |
| 1 | 22.5 | 38.3% | 92.4% |
| 2 | 45 | 70.7% | 70.7% |
| 3 | 67.5 | 92.4% | 38.3% |
我的经验:实际项目中,我一般用查表法生成波形。提前算好 256 或 512 个点的正弦表,运行时直接查。这样 CPU 负担小,响应快。我曾经试过实时计算 sin,结果中断响应慢了,电机反而更抖。
3.2.2 波形优化
理想正弦波在实际中会遇到一个问题:低速时转矩不均匀。因为电机的反电动势和电感会扭曲电流波形。
我建议的做法是:
- 预失真补偿:根据电机参数,对正弦表做非线性修正
- 电流环闭环:用 ADC 采样实际电流,PID 调节 PWM 占空比
- 混合衰减模式:在电流上升沿用快衰减,下降沿用慢衰减
注意:千万不要以为细分数越大越好。我曾经试过 1/256 细分,结果因为机械间隙和摩擦,电机反而出现微步丢失。一般应用 1/8 ~ 1/32 就足够了。
3.3 电流矢量合成
电流矢量合成,是细分的核心。它决定了转子到底停在哪个位置。
你看这张图就明白了:
图中这个圆,就是电流矢量的理想轨迹。每个微步对应圆上的一个点。A 相电流是横坐标,B 相电流是纵坐标。转子会停在矢量指向的角度位置。
3.3.1 矢量合成的数学本质
其实没那么复杂。你想想看:
合成电流幅值:I_total = sqrt(I_A² + I_B²)
合成电流角度:θ = atan2(I_A, I_B)
理想情况下,I_total 应该是常数,这样转矩才均匀。但实际中,由于 PWM 分辨率有限、电流采样噪声,I_total 会有波动。这就是转矩脉动的来源。
关键指标:电流矢量幅值波动率 = (I_max - I_min) / I_avg × 100%。好的设计应该控制在 5% 以内。
3.3.2 实际实现中的坑
我踩过最大的坑,是电流零点漂移。有一次做 1/32 细分,电机在某个位置总是卡顿。查了两天,发现是运放的偏置电压导致电流采样有 10mA 的偏移。在微步电流很小的时候,这个偏移直接让矢量位置偏了。
解决办法:
- 硬件上:用精密运放,加调零电路
- 软件上:每次上电做自动校准,记录零点偏移
- 算法上:在电流环中加入积分项,消除静差
3.4 细分的实际效果
说了这么多理论,咱们看看实际效果对比:
| 驱动方式 | 步进角 | 低速振动 | 噪音 | 转矩均匀性 |
|---|---|---|---|---|
| 整步 | 1.8° | 严重 | 大 | 差 |
| 1/2 细分 | 0.9° | 中等 | 中 | 一般 |
| 1/4 细分 | 0.45° | 轻微 | 小 | 较好 |
| 1/8 细分 | 0.225° | 几乎无 | 很小 | 好 |
| 1/16 细分 | 0.1125° | 无 | 极小 | 优秀 |
我的建议:如果你做通用产品,1/8 细分是性价比最高的选择。既保证了平滑度,又不会因为细分数太高而引入其他问题。除非你做的医疗设备或精密仪器,才需要考虑 1/32 以上。
3.5 小结
嗯,今天的内容就到这里。细分的核心就三句话:
- 什么是细分:用电流比例控制代替整步切换
- 波形怎么来:正弦/余弦查表,必要时做预失真
- 矢量怎么合:两相电流合成一个旋转矢量,转子跟着走
下一节我们会深入代码层面,看看怎么用定时器和 PWM 实际生成这些波形。到时候我会分享一个我调试了三个月的电流环代码,保证让你少走弯路。