用步进电机实现精密运动:一份学习路线图
你能为一根开环步进轴完成选型、接线、调试和标定,并能诊断出丢步、背隙和比例系数错误之间的区别。
开始前
你需要能够熟练上传 Arduino sketch,以及用万用表测电压和电阻。你不需要预先知道任何电机方面的东西——这条路线就是从步进电机是什么、以及它为什么会这样工作开始讲的。
你将会做到什么
学完之后,你能看着一台跑不到位地的机器,说出它属于四种可能原因中的哪一种。真正把“做得出能用机器的人”和“一直买更大电机的人”区分开的,就是这项技能。
- 依据扭矩曲线而不是标称保持扭矩来选步进电机。
- 第一次就把驱动板的限流设对,包括那种换了另一种采样电阻的板子。
- 为任何皮带或丝杠推导出每毫米步数,然后用一个实测值把它标定下来。
- 只凭症状就能把丢步、背隙和比例系数错误区分开。
- 写一个能重复到几微米精度、并且在开关断线时能安全失效的回零例程。
大家卡在哪里
三个地方,而这三处之所以都在这里被明确讲到,是因为它们实在太常见了:
**凭耳朵设定限流。**板子上只有一个没有刻度的电位器,于是人们就转到电机“听起来对”为止。结果要么是电机太弱而跳步,要么是电机太热而在干活途中触发热保护。用万用表花两分钟加一个公式就能解决——而且你必须查清自己那块板子用的是哪种采样电阻,因为同一个 Vref 对应的是两种不同的电流。
**以为更细的细分就意味着更准的机器。**并不是。细分让运动更平顺、更安静,这确实值得拥有,但负载造成的位置误差在整步和 1/16 下完全一样。实验台把这两个数字并排放在一起;这是戒掉这个念头最快的办法。
**跳过加速斜坡。**一台从静止直接被指令到全速的步进电机不会慢慢跑——它只会嗡嗡响并停在原地,因为指令的磁场在转子来得及转起来之前就已经跑掉了。同样是 60 mm 的位移,没有斜坡时会彻底失败,有斜坡时则精确落在目标上。
你需要什么
| 物品 | 典型成本 | 说明 |
|---|---|---|
| NEMA 17 步进电机,1.5–1.8 A | £9–14 | 40 mm 机身;20 mm 的薄饼式太弱 |
| A4988 或 DRV8825 载板 | £2–4 | 多买几块——便宜,而且会烧 |
| 12 V 或 24 V 电源,2 A 以上 | £8–15 | 想要速度就用 24 V |
| Arduino Uno 或 Nano | £4–20 | 任何带两个空闲引脚的 5 V 板子 |
| 万用表 | £10–25 | 不是可选项。没有它你设不了 Vref。 |
| 100 µF 电解电容,35 V 以上 | £0.20 | 就是它让驱动器不至于烧掉 |
| 杠杆式微动开关 | £0.50 | 回零那一节要用 |
| GT2 皮带 + 20T 同步轮,或一根 T8 丝杠 | £6–12 | 取决于你想做哪一根轴 |
| 钢尺或卡尺 | £5–20 | 用来老老实实标定每毫米步数 |
全套大约 £45,而且其中大部分可以直接带进最后的绘图机器人制作。
为什么按这个顺序
**先学物理,再学接线。**滞后角不是可以跳过的背景理论——正是它决定了后面每一项设置对不对。在不知道限流决定的是 T_peak 的情况下去设限流,你就是在凭感觉拧电位器。先读懂它,驱动器那一节就会变得理所当然,而不是一串步骤。
**物理之后紧接着就是实验台。**读到“扭矩在 90 电角度之后会下降”,和亲眼看到一次运动因此消失,并不是同一回事。模拟器是刻意放在那个位置的——在你花钱之前——因为它建立起来的直觉,正是让你不至于把电机选到 95% 扭矩的那种东西。
**先驱动器,后机构。**每毫米步数取决于细分设置,而细分设置就住在驱动器上。先算术、后跳线,正是人们最终拿到一台恰好错了 16 倍的机器的原因。
**电源放在中间。**它排在驱动器之后,因为那是第一次知道自己的限流值、因而也是第一次能算出热量的时刻。三台通电的 NEMA 17 在静止状态下大约耗散 24 W,这让每一个从直流电机过来的人都大为意外。
**标定之后紧接着是背隙。**这两者产生的症状几乎一样,修复方法却完全不同,而唯一的区分办法是:比例误差是百分比,背隙是固定量。把它们放在一起学,这个区别才会真正记住。
**先运动曲线,后回零。**回零是一次运动,而且是最容易被随意指令的一次运动——不带斜坡地快速寻位,一路撞上硬限位。知道斜坡是为了什么之后,三阶段寻位就讲得通了,而不会看起来像是迷信。
检查点:如何判断一个阶段已经落地
台架测试没通过就不要往下走。每一项都只需要几分钟,而每一项都能抓到一个特定的故障。
| 在……之后 | 台架测试 | 通过是什么样 |
|---|---|---|
| 电机 | 测量六种线组合之间的电阻 | 两对读数为 2–4 Ω;另外四对读数为开路 |
| 驱动器 | 不接电机给 VMOT 供电,探测电位器 | Vref 与你算出的目标相差在 0.02 V 以内 |
| 首次运动 | 在 1/16 下精确指令一转(3200 个脉冲) | 轴回到标记处;重复十次都停在那里 |
| 每毫米步数 | 指令 100 mm,用尺子量 | 在 1 mm 以内;修正比率后重新测量 |
| 背隙 | 从各个方向靠近同一个标记 | 记下间隙的毫米数——这个数不为零 |
| 运动曲线 | 一直提速到开始跳步,然后回退 40% | 二十次往返循环都回到同一标记 |
| 回零 | 回零十次,每次都给滑座做标记 | 十个标记全都落在 0.05 mm 以内 |
| 安全失效 | 拔掉限位开关再回零 | 它会放弃并报错——而不是硬磨 |
回零重复性测试是最值得较真的一项。如果十次回零没有落在同一个位置,那么回零之后的一切都不可信,而在别处做再多标定也修不好它。
这条路线真正要给的诊断表
上面每一个阶段的存在,都是为了让这张表里的某一行变得可读。一台跑不到位地的机器正在给你提供证据,而误差的形状直接点出原因——这就是十分钟修好和换两周零件之间的区别。
| 你观察到什么 | 原因 | 对应阶段 |
|---|---|---|
| 距离恒定偏一个百分比 | 每毫米步数不对 | 每毫米步数 |
| 无论距离多远都恒定偏一个固定量 | 背隙 | 机构中的间隙 |
| 每次运行偏的量都不一样 | 丢步 | 滞后角,然后是限流或运动曲线 |
| 误差只在快速运动时出现 | 越过了拐点速度 | 接线——提高电源电压 |
| 误差只在剧烈加速时出现 | 越过了起动频率 | 加速度曲线 |
| 误差是四个整步的倍数 | 已确认的磁极滑移 | 滞后角 |
| 误差不是四的倍数 | 根本不是丢步 | 去查比例系数或背隙 |
| 电机嗡嗡响却不走 | 指令频率超过起动频率 | 加速度曲线 |
| 一个方向准,另一个方向短 | 背隙,两个方向都量过了 | 机构中的间隙 |
| 冷机正常,二十分钟后失效 | 驱动器热保护 | 接线——降低 Vref,增加通风 |
| 每次回零都落在不同位置 | 没有慢速的二次逼近 | 回零与坐标 |
| 回零完美,加工时仍然落错 | 工件偏移,或中途丢步 | 回零,然后是滞后角 |
| 恰好错 2×、4× 或 16× | 细分跳线与固件不一致 | 接线,然后是每毫米步数 |
| 丝杠轴上恰好短了 4× | 该用导程的地方用了螺距 | 每毫米步数 |
这两行承担了大部分诊断分量。**“是百分比还是固定量?”只需一次测量就能把标定误差和背隙分开——先指令 10 mm,再指令 100 mm,看误差是否随之放大。而“是不是四个整步的倍数?”**要么直接确认丢步,要么彻底排除它,因为一旦滑移,转子只会落在整整一个电周期之外,不可能落在别的地方。
常见的错误弯路
下面这三件事,是这条路线特意要防住的。
**买更大的电机。**轴一跳步,直觉反应就是换大电机,而它几乎从来不是解法。在一台典型轻量龙门上做选型算术就会看到,摩擦大约以八比一压过加速扭矩——所以一根卡滞的导轨、一条过紧的皮带或一根勾住的线缆,损失的裕量远远超过换电机所能带来的。先测摩擦,再查限流,最后才去看电机。
**用细分去追精度。**1/32 或 1/256 看起来总该比 1/16 更精确。并不是,至少在任何能传递到工件的方式上都不是:负载带来的位置误差在每个分度下都完全相同,而用来区分相邻两个细分步的可用扭矩,会随着细分变小而迅速塌缩——在 1/256 时它只剩保持扭矩的 0.61%,还不如你机器里的摩擦大。细分是为了安静和平顺;精度要从扭矩裕量和刚性机架那里拿。
**机构还没对就先标定。**在一根会卡滞的轴上、或者在一根同步轮会在轴上打滑的轴上标定每毫米步数,得出的数字必然是错的。它在测试运动上看起来完全正确,在其他所有地方却都不对。上面检查点的顺序是刻意安排的:必须先能让轴用手推动得顺滑、没有任何卡点,然后才能从它身上测出任何数字。
这条路线到哪里为止
这是一条开环、单轴路线。它刻意留下了若干内容:
- **闭环控制。**这里从头到尾没有编码器,所以丢掉的步就永远丢了。这就是这笔交易,而这条路线要教的是让你擅长守住扭矩裕量,而不是擅长从丢步中恢复。
- **多轴协同。**两根轴一起动、让工具画出直线,这是插补;而 CoreXY 还在上面加了一层运动学混合。绘图机器人制作做的是基本的笛卡尔协同;再往后就属于固件的领域了。
- **G 代码与固件。**你会把
M92和$100当成设置项遇到,而不是当成一门学科。写一个解释器是另一个项目。 - **大功率机器。**这里的一切都是按 NEMA 17 和几安培来规划的。主轴、滚珠丝杠,以及那些能把手指切掉的机器,都需要联锁和急停,而这条路线不教这些。
- **舵机与无刷电机。**那是另一类电机,另一组问题。如果你需要的是带反馈的速度和扭矩,就去看那边。
它确实能给你的,是大多数人真正会做的那一类机器的完整图景:绘图机、激光切割机、轻量龙门、相机滑轨、3D 打印机的一根轴。对这些机器来说,这条路线上的五项内容就是全部的工作。
下一步去哪
顺理成章的下一步是绘图机器人制作,它会一次性用到这条路线上的每一个阶段。如果你更想在控制理论上往前走,PID 控制是反馈进入这张图的地方;如果你想要电机世界的另一半,电机控制讲的是直流减速电机、H 桥和编码器——那是轮子用的,而步进电机刻意不是。
学习路线
路线
按顺序完成各个节点——完成一个就会解锁下一个。你的进度会保存在这台设备上。
已完成 0 / 15
常见问题
常见问题解答
学这条路线之前需要先懂 PID 控制吗?
不需要,而这正是步进电机的意义所在。开环轴没有反馈,因此也就没有需要整定的回路——你让它走 3200 个微步,只要没有过载,它就会走 3200 个微步。这是一个很大的简化,也正是这条路线适合作为精密运动入门的原因。当你超越开环、改用闭环步进电机或伺服电机时,或者当你在控制带反馈的东西时,比如热床或平衡机器人,PID 才变得重要。
可以用 28BYJ-48 和 ULN2003 来学这条路线吗?
用它可以跟上物理原理,但跟不上工程实践。28BYJ-48 是一种单极减速电机,配的是达林顿阵列而不是电流调节型驱动器,所以没有需要设定的限流、没有 Vref,也没有有意义的细分。这里几乎所有实用的经验——采样电阻、拐点速度、电压越高速度越快——在那套硬件上都找不到对应。一台 NEMA 17 加一块 A4988 的总价差不多,却能教会你大家真正会做的那种机器。
闭环步进电机处在什么位置?
在最后,而且只在你需要时才用。闭环步进电机就是在同一台电机背后装一个编码器,再配一个能察觉转子落后的驱动器,于是一次丢步就会变成一次修正或一次报警,而不是一个无声的错误。这消除了这条路线上最尖锐的那种失效模式。它的价格是三到四倍,而对于绘图机、轻量龙门或 3D 打印机来说,充足的扭矩裕量加上合理的加速度曲线,就能免费解决同样的问题。
这条路线要花多长时间?
读完教程、做完模拟器大约需要六个小时的阅读和实验,最后的制作再需要一个周末。这两个实验台值得花比看上去更多的时间:步进模拟器是你唯一能看到滞后角被画成曲线的地方,而培养出关于那道 90 度悬崖位置的直觉,能帮你省下以后大量的猜测。