步进电机步数与步距角:把 steps/mm 一次算对
从步距角和微步细分到每转步数,再到丝杠导程与皮带齿距换算 steps/mm,这篇讲清楚 3D 打印机和 CNC 数控固件里那个关键数字怎么来,以及移动距离如何对应脉冲步数。
步进电机步数与步距角:把 steps/mm 一次算对
刷完固件,命令打印头走 100 毫米,卡尺一量却只走了 62 毫米。这不是机器坏了,是 steps/mm 没填对。步进电机这个数,串起了步距角、微步细分、丝杠导程或皮带齿距这几样参数。这篇把每一环拆开讲清楚,你就再也不用靠试出来。
步距角决定每转多少整步
步进电机靠固定角度的"整步"转动。最常见的 1.8 度电机,转一整圈是 360 / 1.8 = 200 整步,这也是 3D 打印机里那颗 NEMA 17 的标配。如果换 0.9 度的电机,分辨率直接翻倍,每转 400 整步。
记住一条:整步数 = 360 / 步距角。这个数是后面所有计算的地基,填错了整条链路都跟着错。
微步细分把步数乘上去
光有整步还不够。驱动器会把每个整步再切成更小的微步,让电机转得更顺、更安静。细分倍数(1、2、4、8、16、32)直接乘到每转步数上。
1.8 度电机的有效每转步数随细分变化:
- 整步(1):200 步
- 1/8 细分:1600 步
- 1/16 细分:3200 步
3200 才是驱动器实际发出的脉冲数。要提醒一句,微步加的是分辨率不是等比例的精度,细分越高每个微步的力矩越小,所以也别盲目往上堆。
丝杠轴:每转步数除以导程
到了算 steps/mm 这一步,丝杠和皮带两套传动各有公式。丝杠轴的公式是:steps/mm = 每转步数 / 丝杠导程(毫米)。
这里最容易踩的坑是把导程和螺距搞混。多头丝杠两者不相等:4 头的 T8 丝杠螺距是 2 毫米,但电机转一圈前进的是导程 8 毫米。要填的是导程。
举个完整的输入输出例子,这也是我自己装 Z 轴时实际跑的一组:1.8 度电机,选 1/16 细分,得到每转 3200 步;装在导程 8 毫米的 T8 丝杠上,3200 / 8 = 400 steps/mm。换算成每步移动,就是 0.0025 毫米一步,做 CNC 想要 0.01 毫米分辨率的话,这组配置远在指标之内。我把 400 这个数粘进固件,再发 100 毫米点动,卡尺一量正好 100 毫米,第一次就对上了,省了反复试凑的一晚上。
皮带轴:先求每转移动量
皮带传动没有导程,得先算每转移动量 = 皮带齿距 × 同步轮齿数。GT2 皮带齿距是 2 毫米,配 20 齿同步轮,每转就走 40 毫米。
然后同样除一下:steps/mm = 每转步数 / 每转移动量 = 3200 / 40 = 80 steps/mm。这正是 CoreXY 或龙门式打印机 X、Y 轴的常见值。注意 GT2 指的是 2 毫米齿距,不要拿皮带长度去乘。
手算这些除法容易看花眼,直接用 步进电机步数计算器 把步距角、细分、导程或齿距一填,每转步数、每转移动量、steps/mm 三个数同时出来,还能再填一段移动距离反查要走多少步,发校准点动前先核对一遍。
把数字填进固件
算出来的 steps/mm 要落到固件里才算完。
- Marlin:填进 Configuration.h 的 DEFAULT_AXIS_STEPS_PER_UNIT,或者用 M92 现场设、再用 M500 保存到 EEPROM。
- Klipper:不直接填 steps/mm,而是用 rotation_distance、full_steps_per_rotation 和 microsteps 算。皮带轴的 rotation_distance 就是齿距乘齿数,丝杠轴就是导程,和工具显示的每转移动量一致。
如果算出的值还差一点点,做实测校准:发一段 100 毫米的移动,卡尺量实际行程,新 steps/mm = 旧值 × 命令距离 / 实测距离。命令 100 毫米实际走了 98 毫米,就乘 100 / 98。皮带和丝杠轴一般差不到百分之一,挤出机 E 步数漂移最大,最吃这道实测。
传动比换算的延伸
如果你的轴上还串了减速齿轮组,每转步数还要再乘上传动比。算齿轮组那一级的比例,可以用 齿轮比计算器 先把传动比定出来,再回到 steps/mm 这条主线上来。
把这套逻辑走一遍,步距角、微步、导程、齿距各归各位,固件里那个数就不再是玄学。下次刷完机,你会直接填一个算好的值,而不是发一段点动慢慢凑。
Made by Toolora · Updated 2026-06-13