LEARN · 2026-10-07

步進馬達 steps/mm 怎麼算?皮帶、導螺桿、微步與 Marlin / Klipper 設定

步進馬達 steps/mm 計算公式與範例:GT2 20 齒皮帶輪每轉 40 mm = 80 steps/mm、T8 導螺桿 400 steps/mm,說明導程與節距、微步的扭矩代價、解析度與精度的差別,以及 Marlin M92、Klipper rotation_distance、GRBL $100 設定與擠出機 E-steps 校正。

steps/mm 公式

steps/mm 是軸移動 1 mm 需要送給驅動器的脈衝數,也就是韌體換算座標與馬達步數的比例。它由三個數字決定:馬達每轉的全步數、驅動器的微步數,以及馬達轉一圈時軸實際移動的距離。

steps/mm = (360° / 步進角) × 微步數 / 每轉移動量 L (mm)

常見的 1.8° 步進馬達每轉 200 全步,0.9° 馬達每轉 400 全步;驅動器設 16 微步時,每轉就是 3200 或 6400 個脈衝。每轉移動量 L 對皮帶傳動是「皮帶輪齒數 × 皮帶節距」,對螺桿傳動是「導程」。

皮帶傳動:GT2 20 齒 = 每轉 40 mm

L = 皮帶輪齒數 × 皮帶節距  GT2 20 齒:L = 20 × 2 = 40 mm → 200 × 16 / 40 = 80 steps/mm

皮帶輪轉一圈,皮帶前進的距離等於齒數乘以節距,與皮帶輪外徑無關,因此 GT2(節距 2 mm)20 齒每轉 40 mm、16 齒每轉 32 mm。3D 印表機的 XY 軸大多使用 GT2 20 齒,16 微步時為 80 steps/mm;Prusa 系列使用 16 齒,為 100 steps/mm。

有減速時:steps/mm = (全步數 × 微步數 × 減速比) / L

TIP若馬達先經過 20 齒 → 60 齒的皮帶減速(i = 3),再帶動 GT2 20 齒的驅動輪,steps/mm 就是 80 × 3 = 240。可用 GT2 軸間距計算工具決定封閉皮帶的長度與軸距。

導螺桿與滾珠螺桿:看導程,不是節距

導程 = 節距 × 線數  T8(Tr8 × 8,節距 2 mm、4 線):200 × 16 / 8 = 400 steps/mm

螺桿轉一圈,螺帽前進的距離是導程,不是節距。3D 印表機常見的 T8 螺桿節距 2 mm、4 線,所以導程 8 mm;外觀幾乎一樣的 Tr8 × 2 是單線螺桿,導程只有 2 mm,steps/mm 會差 4 倍。下表整理常見傳動在 1.8° 與 0.9° 馬達、16 微步下的值:

傳動每轉移動量 L (mm)1.8° × 16 微步0.9° × 16 微步每微步移動量 (µm,1.8°)
GT2 16 齒3210020010
GT2 20 齒408016012.5
GT2 36 齒7244.4488.8922.5
T8 導程 8(Tr8 × 8)84008002.5
Tr8 × 4480016001.25
Tr8 × 22160032000.63
SFU1204 滾珠螺桿480016001.25
SFU1605 滾珠螺桿564012801.56
  • 導程大(T8 × 8)速度快,但斷電時 Z 軸可能因重力下滑;導程小(Tr8 × 2)可自鎖、解析度高,但速度慢。
  • Z 軸的「魔術層高」:T8 導程 8 mm 時一個全步為 8 / 200 = 0.04 mm,層高取 0.04 的倍數(0.12、0.16、0.2、0.28 mm)可以避免微步位置誤差造成的層紋。
  • 滾珠螺桿背隙小、效率高,適合 CNC;SFU1204 導程 4 mm、SFU1605 導程 5 mm。

微步、解析度與精度的差別

解析度是韌體能下達的最小移動量(1 / steps/mm),精度是實際到達位置與目標的誤差,兩者不是同一回事。GT2 20 齒、16 微步的解析度為 12.5 µm,但馬達每一全步(200 µm)的角度誤差約 ±5%,相當於 ±10 µm;再加上皮帶伸長、皮帶輪偏心與框架變形,實際精度通常落在數十 µm。

每個微步的增量扭矩 ≈ 保持扭矩 × sin(90° / 微步數)

微步數每微步增量扭矩(佔保持扭矩)
1100%
270.7%
438.3%
819.5%
169.8%
324.9%
2560.6%

16 微步時,每前進一個微步只有約 10% 的保持扭矩在推動,只要摩擦或負載超過這個值,馬達就會累積好幾個微步才一起移動。所以微步數提高主要是讓運動更平順、噪音更低,超過 1/16–1/32 後,實際定位精度幾乎不會再提升,反而會增加控制板的脈衝頻率負擔。

TIPTMC2208 / TMC2209 等驅動器可以用 16 微步輸入、內部插補到 256 微步,同時兼顧安靜與控制板效能,是 3D 印表機最常見的設定。

Marlin、Klipper、GRBL 設定範例

Marlin

Configuration.h:#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }

G-code:M92 X80 Y80 Z400 E93 → M500(存入 EEPROM) M503(查看目前值)

上例為 Creality Ender-3 的原廠值:XY 為 GT2 20 齒、Z 為 T8 導程 8 mm、E 為 MK8 擠出機。

Klipper

[stepper_x] microsteps: 16 rotation_distance: 40 full_steps_per_rotation: 200

rotation_distance = full_steps_per_rotation × microsteps / steps_per_mm (擠出機 93 steps/mm → 200 × 16 / 93 ≈ 34.41)

Klipper 不直接設定 steps/mm,而是設定 rotation_distance(馬達轉一圈的移動量):GT2 20 齒為 40、T8 導程 8 mm 為 8。0.9° 馬達要把 full_steps_per_rotation 改成 400;有齒輪或皮帶減速時用 gear_ratio(例如 gear_ratio: 3:1),rotation_distance 則填最後一級轉一圈的移動量。

GRBL

$100=80 $101=80 $102=400 (X、Y、Z 軸 steps/mm)

擠出機 E-steps 校正

  1. 噴嘴加熱到列印溫度,在線材進入擠出機上方 120 mm 處做記號。
  2. 送出 M83(相對擠出)與 G1 E100 F100,讓擠出機慢慢擠出 100 mm。
  3. 量測記號到擠出機入口的剩餘長度,實際擠出量 = 120 − 剩餘長度。
  4. 計算新值:新 E-steps = 舊 E-steps × 100 / 實際擠出量,用 M92 E… 設定並以 M500 儲存。

例:93 × 100 / 97 ≈ 95.9 steps/mm  Klipper:新 rotation_distance = 舊值 × 實際擠出量 / 100

XY 皮帶軸通常非常接近理論值,不需要用量尺「校正」;尺寸不準多半來自皮帶張力、背隙或切片的線寬補償。擠出機則因為齒輪咬入線材的有效直徑不同,一定要實測。

常見問題

GT2 20 齒皮帶輪的 steps/mm 是多少?

1.8° 馬達、16 微步時為 200 × 16 / 40 = 80 steps/mm;0.9° 馬達為 160 steps/mm。

T8 導螺桿的 steps/mm 是多少?

常見 T8(導程 8 mm)在 1.8° 馬達、16 微步時為 400 steps/mm;若是 Tr8 × 2 單線螺桿(導程 2 mm)則為 1600 steps/mm。

微步數越高越精準嗎?

不會等比例提升。微步主要讓運動平順、降低噪音;16 微步時每微步只有約 10% 的保持扭矩,摩擦與負載會吃掉額外的解析度。

Klipper 的 rotation_distance 怎麼算?

rotation_distance = 馬達轉一圈的移動量,GT2 20 齒為 40 mm、T8 為 8 mm。由舊的 steps/mm 換算:rotation_distance = 200 × 微步數 / steps/mm。

換成 0.9° 步進馬達要改什麼?

每轉全步數從 200 變成 400,Marlin 的 steps/mm 要乘 2(80 → 160);Klipper 只要把 full_steps_per_rotation 改為 400,rotation_distance 不變。