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 齒 | 32 | 100 | 200 | 10 |
| GT2 20 齒 | 40 | 80 | 160 | 12.5 |
| GT2 36 齒 | 72 | 44.44 | 88.89 | 22.5 |
| T8 導程 8(Tr8 × 8) | 8 | 400 | 800 | 2.5 |
| Tr8 × 4 | 4 | 800 | 1600 | 1.25 |
| Tr8 × 2 | 2 | 1600 | 3200 | 0.63 |
| SFU1204 滾珠螺桿 | 4 | 800 | 1600 | 1.25 |
| SFU1605 滾珠螺桿 | 5 | 640 | 1280 | 1.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° / 微步數)
| 微步數 | 每微步增量扭矩(佔保持扭矩) |
|---|---|
| 1 | 100% |
| 2 | 70.7% |
| 4 | 38.3% |
| 8 | 19.5% |
| 16 | 9.8% |
| 32 | 4.9% |
| 256 | 0.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 校正
- 噴嘴加熱到列印溫度,在線材進入擠出機上方 120 mm 處做記號。
- 送出 M83(相對擠出)與 G1 E100 F100,讓擠出機慢慢擠出 100 mm。
- 量測記號到擠出機入口的剩餘長度,實際擠出量 = 120 − 剩餘長度。
- 計算新值:新 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 不變。