元器件 · 执行器

NEMA 17 步进电机

每台 3D 打印机和小型 CNC 里都有的 42 毫米步进电机。本文讲参数上的数字代表什么、如何找出成对的线圈,以及为什么保持扭矩几乎说明不了什么。

它是什么

NEMA 17 是一款 42 mm 见方机座的混合式步进电机。几乎每台桌面 3D 打印机、大多数小型 CNC 路由器、激光雕刻机、相机滑轨和绘图机里用的都是它——不是因为它有多特别,而是因为这个机座尺寸恰好落在了一个甜点上,于是整个入门生态都围绕它标准化了。

步进电机相对于直流减速电机提供的东西是无需反馈的定位。你让它前进 3200 个微步,只要没有过载,它就确实前进了 3200 个微步——不需要编码器,不需要 PID 环路,不需要调参。这是一次实实在在的重大简化,也正是 3D 打印机只卖一百英镑却仍能把喷嘴定位到零点几毫米之内的原因。

坑就藏在“没有过载”这个前提里,而且是个很尖锐的坑,不是渐变的。被要求输出超出能力的扭矩时,步进电机不会减速——它会失步,永久地、悄无声息地丢掉位置,每次以四个整步的跳变发生。

NEMA 17 步进电机正视图。42.3 毫米方机身圆角可见叠片纹,四个 M3 安装孔 31 毫米方孔距,凸起圆形止口,5 毫米轴带铣平面。右侧出四线虚线框两对:A 线圈 A1、A2,B 线圈 B1、B2。注:两线圈四线,同对几欧,错配开路。
“17”指的就是 1.7 英寸的面板尺寸,仅此而已——它对扭矩只字未提。接线时真正要紧的信息全在右边:两个线圈、四根线,而配对正是最容易搞错的那件事。 下载 SVG

工作原理

里面 50 齿永磁转子,两线圈不同组合励磁磁场指不同方向。驱动转磁场;转子跟。

1.8° 直接齿数出:50 转子齿 × 磁周期 4 场位 = 每转 200 稳定位,360 ÷ 200 = 1.8°。每个“1.8° 电机”同 50 齿几何,整步永远 90 电角度,不管机多大哪家。

转子永远不在磁场正上——滞后失步角,产出扭矩正比其正弦。这一个关系就是步进全部行为,值得好好读一遍,失步微步共振选型一次解释。

读数字

规格 真正告诉你
步距角 1.8° 整步每转 200。整步 = 90 电角度。
额定电流 1.7 A 驱动设它——取 70–85%
保持扭矩 0.44 N·m 只零速。动起来陡掉。
电阻 2.8 Ω 和电流定热:1.7² × 2.8 = 每相 8 W
电感 3.2 mH 驱动反转电流多快——定极速
转子惯量 54 g·cm² 负载之前先加速它
机身长 40 mm 真扭矩指示,机座藏的唯一数

误读最多两行:保持扭矩和电感。

保持扭矩是一个静止状态下的测量值。它真实存在,静止时把轴推离位置靠的就是它,而对一台运转中的机器来说它几乎无关紧要。可用扭矩随着转速上升而下降,因为绕组会产生反作用——而电感正是这种反作用有多强的度量。同样扭矩等级下,低电感的电机在同一路电源上能达到高得多的转速,所以认真做机器的人会看电感,随手做的人只看扭矩。

实践一句:**电流买扭矩,电压买速度。**慢速负载堵转加限流。只加速堵转加电源电压——拐速之后驱动根本到不了设定电流,加电流没用。

电流、热和电源预算

步进电机只要通电,就会流过完整的设定电流,无论它在动不动。这会让从直流电机过来的人感到意外,因为在直流电机上,堵转但不带负载时几乎不耗电。

单电机 2.8 Ω 绕组 1.2 A 限流,双相通电:

P = 2 × I² × R = 2 × 1.2² × 2.8 ≈ 8.1 W

静止状态下每台电机持续耗散八瓦。一台装了三个 NEMA 17 的三轴机器,还没开始干活就已经在耗散大约 24 W。这会带来三个决定:

  • **电源选型。**电机电源必须能同时扛下所有轴。要注意电源侧并不是限流值 × 电机数——斩波器相当于降压变换器,所以在 24 V 下电源电流远低于相电流。按功率而不是按安培做预算,并留出余量;见机器人电源预算。
  • **散热。**外壳 60–80 °C 属于正常。在能的地方把电机装到金属件上。
  • **禁用。**把 ENABLE 拉高会让线圈断电、停止发热,但此时轴就可以被外力推动了。对绘图机的 X、Y 轴来说,在两个动作之间这么做没问题;但对一个正在托着重物的 Z 轴就危险了,除非丝杠是自锁的。

接到驱动

四线两线圈。万用表欧姆找对——同对几欧,错配开路——然后:

电机 A4988 脚
A 线圈线 1 1A
A 线圈线 2 1B
B 线圈线 1 2A
B 线圈线 2 2B

对内的顺序只会影响方向,轴走反了对调两根线就行,不用改固件。真正要紧的是对间的顺序:接错的话,电机只会嗡嗡振动却不转,因为磁场不再按连贯的顺序旋转了。

驱动带电绝不拔电机。通电线圈中途斩断电压尖峰无处去,专烧驱动。

六线八线电机是单极或双双极绕组。A4988 这类双极驱动用组成完整两线圈的四根,中心抽头包起;这样比单极接扭矩大。

能跑的最小代码

STEP 脚脉冲,DIR 脚方向。无库,不需要:

const int STEP_PIN = 3, DIR_PIN = 4, EN_PIN = 5;
const float STEPS_PER_MM = 80.0;     // 20T GT2 pulley at 1/16 stepping

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);
  digitalWrite(EN_PIN, LOW);          // active low: energise
}

// Blocking, unramped. Fine for a bench test, wrong for a machine.
void moveMillimetres(float mm, unsigned stepDelayUs) {
  digitalWrite(DIR_PIN, mm >= 0 ? HIGH : LOW);
  long steps = lround(fabs(mm) * STEPS_PER_MM);
  for (long i = 0; i < steps; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(2);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(stepDelayUs);
  }
}

void loop() {
  moveMillimetres(50, 300);
  delay(500);
  moveMillimetres(-50, 300);
  delay(500);
}

这版代码能在台架上驱动电机。但它也是你该立刻丢开的版本,因为步进频率会从零瞬间跳到全速——一旦超过电机的牵入频率,结果就是巨大的嗡嗡声和完全不动。对任何真正的用途,都请加上加速曲线或者交给 AccelStepper,并使用非阻塞计时模式,这样限位开关仍然能被读到。

选型实例:一个算例

电机按负载选,不按帖子。算术短。

**机器:**皮带 X 轴,20 齿 GT2 轮(每转 40 mm),300 g 滑车,最高 200 mm/s,加速 2000 mm/s²。

**第一步——这段运动需要多少扭矩?**把直线运动换算到轴上。皮带轮的有效半径是 40 mm ÷ 2π = 6.37 mm:

accelerating the carriage:  F = m·a = 0.3 kg × 2.0 m/s² = 0.6 N
                            T = F × r = 0.6 × 0.00637 = 0.004 N·m
friction (rails, belt, a dragging cable) ≈ 5 N
                            T = 5 × 0.00637 = 0.032 N·m
rotor's own inertia:        α = a ÷ r = 2.0 ÷ 0.00637 = 314 rad/s²
                            T = J·α = 5.4e-6 × 314 = 0.002 N·m
                                                     ─────────────
                                              total ≈ 0.038 N·m

这个结果值得停下来看一看:**摩擦产生的扭矩是加速扭矩的八倍。**在轻载机器上,负载几乎全部来自摩擦,这意味着一个发涩的导轨所消耗的裕量,远比把滑车加重更多。买更大的电机之前,先把摩擦量出来。

第二步——要多快?200 mm/s ÷ 40 mm/rev × 60 = 300 rpm。

**第三步——读那个转速下的扭矩曲线,而不是看标称值。**一台 0.44 N·m、限流 1.2 A 的电机在 24 V 下用到 300 rpm 时曲线仍然平坦,所以大约能拿到 0.31 N·m。

第四步——检查裕量。0.038 ÷ 0.31 = 12%。换算成失步角,sin⁻¹(0.12) = 7°,而可用的是 90°。这个裕量非常宽裕,而且本该如此——你算出来的数字永远偏乐观,因为它没有算上冬天会变硬的轴承、会勾住的拖链,以及被你拧得比预想更紧的皮带。

用掉裕量 失步角 结论
25% 下 15°e 下 舒服——设计住这
25–50% 15–30°e 行,跑更快前先量
50–70% 30–45°e 紧。一个冷早晨失步的距离。
70% 上 45°e 上 间歇莫名丢步预警
100% 90°e 已经跪了

常听到的“按可用扭矩的一半来选”这句话,落在第二行上,而那正是合适的位置。超过第四行,就会遇到最让人沮丧的一类故障:一台在台架上正常、在演示中正常、真正用起来每小时出一次故障的机器。

同一个轴换成丝杠就说明了机构为什么重要。T8 在这个用途下的有效半径是 8 mm ÷ 2π = 1.27 mm,小了五倍——于是同样 5 N 的摩擦在轴上只折合 0.0064 N·m,裕量只有 2%。代价是速度:同样的行程,丝杠需要五倍的步进频率,这正是每毫米步数那篇里讲的上限。

六线八线电机

今天卖的 NEMA 17 大都四线,明白双极。老库存工业货常六线八线,多的是绕组抽头:

线数 手里 A4988 驱动法
4 两素线圈 接上。没得选。
6 两线圈各中心抽头 抽头无视包起,用两头
8 四半线圈 串联要扭矩,并联要速度

六线的那种情况必须处理对。用中心抽头加一个线端——也就是按单极电机驱动——只会给每相绕组的一半通电,白白损失大约 30% 的扭矩,而对双极驱动来说毫无任何好处。找出每相绕组的两个线端(阻值最大的那一对;中心抽头到任一端大约是它的一半),用这一对,并把抽头绝缘。

对于八线电机,串联接法会让电感和电阻都翻倍,从而提高低速扭矩、降低拐点转速;并联则正好相反。承载负载的机器默认选串联;需要快速移动的选并联。

故障排查

现象 原因 解决
巨响振动不转 线圈对跨接错 万用表欧姆重配
每次启动时嗡嗡响 指令频率超过牵入频率 加上加速斜坡
每个作业丢掉几毫米 在斜坡上失步 降低加速度、提高电流,或者放慢速度
慢行跪快行 过拐速 加电源电压,不加电流
全速虚 限流太低 对 sense 电阻重测 Vref
碰一秒受不了烫 限流超额定 查算术;加风
只有某个转速下又粗又吵 中段共振 换一种细分方式,或者避开那个转速
保持好断电漂 线圈断电轴被推 自锁丝杠,或保持使能
转反了 线圈极性 一对里两线对调

NEMA 17 还是替代?

选项 扭矩 位置反馈 选它的时机
NEMA 17 步进 0.25–0.65 N·m 无——开环 精确可重复直线运动
NEMA 23 步进 1.0–3.0 N·m 无 17 要的速度堵转
N20 编码器电机 小,减速 编码器——闭环 轮子;要速度控制不要定位
直流减速电机 不定 无 驱动车轮,精确位置无关紧要
SG90 舵机 0.15 N·m 内电位器闭环 有限角度关节,便宜
闭环步进 同 NEMA 17 尾编码器 悄无声息失步容忍不了

说句实在话:当你需要沿一个轴的可重复定位、并且能保证扭矩裕量时,步进电机是正确答案。而用它来驱动车轮则是错的:车轮会打滑,打滑没有上界,而一台会悄悄丢掉位置的电机,正是一台要做里程计的机器人最不想要的东西。

用在哪

这电机是绘图机作品的执行器,整个精密运动路线讲它。不买看行为——失步角、丢步、微步——步进模拟器里。

探索关联图谱

用到它的搭建

包含 NEMA 17 步进电机 的项目、学习路线和模拟器。

对比

替代方案

问题

NEMA 17 步进电机 常见问题

NEMA 17 到底是什么意思?

它是一个安装标准,而不是性能等级。NEMA 17 规定的是 1.7 英寸(42.3 mm)见方的安装面板,四个 M3 孔按 31 mm 孔距分布,外加一个 22 mm 的定位止口。仅此而已。两台 NEMA 17 电机的扭矩可以相差三倍,因为这个标准对机身长度只字未提,而扭矩恰恰取决于机身长度。20 mm 的“薄饼”电机和 60 mm 长的电机都叫 NEMA 17。

怎么找出哪两根线是一对?

用万用表的电阻挡。同一线圈的两根线之间读数为几欧;不同线圈的两根线之间读数为开路。按导通关系把线配成对,一对接驱动器的 1A 和 1B,另一对接 2A 和 2B。同一对内的顺序只会让方向反过来,所以如果电机转反了,你可以对调这两根线,而不必修改固件。如果电机振动得很响却不转,说明配对错了。

为什么我的电机这么烫?

因为步进电机只要通电就会流过完整的设定电流,包括它静止不动、什么都不做的时候。它就是靠这个保持位置的,这也意味着静止的步进电机耗散的功率和工作中的差不多。外壳温度在 60 到 80 °C 属于正常,不是故障。如果烫到手指碰一秒都受不了,请检查驱动器的限流值是否真的与电机的额定电流相符,并考虑在该轴不需要保持位置时禁用电机。

保持扭矩就是我能用的扭矩吗?

不是,而且这一点几乎把所有人都坑过。保持扭矩是在轴静止、额定电流下测得的。电机一旦转起来,绕组的感抗和反电动势就会削减驱动器能灌进去的电流,于是可用扭矩随之下降——在典型的 24 V 配置下,扭矩大约在 600 rpm 以内保持平坦,到 1200 rpm 时就趋近于零。请按实际工作转速下的扭矩曲线来选型,并留出裕量:负载达到可用扭矩的 100% 时,正好处在失步点上,没有丝毫余地。

该用 NEMA 17 还是 NEMA 23?

先用 NEMA 17,直到扭矩真的不够为止。NEMA 23 是 57 mm 机座,扭矩是 NEMA 17 的两到四倍,但它更重,需要更大的驱动器和更大的电源,而更大的转子惯量也让它更难加速。对绘图机、小型龙门、相机滑轨或 3D 打印机来说,NEMA 17 就是正确答案。当一台限流设置合理的 NEMA 17 在你需要的速度下失步时,再升级。

不用驱动板能驱动步进电机吗?

没法实用。步进电机的线圈是一个低电阻的电感——在 2.8 Ω 上加 24 V,按欧姆定律就是 8.6 A,会烧毁电机。驱动器的任务是靠斩波来调节电流,而这不是用一个 H 桥加一段延时循环就能在任何实用速度下做到的。L298N 在技术上能驱动步进电机,但它是一个电压模式的桥,没有电流控制,所以你只能得到一小部分扭矩,外加大量的热。

延伸阅读

参考资料