跟着思兼學習 Klipper 固件(01)XY電機方向調整新方法


前言

原創文章,轉載引用請務必注明鏈接,水平有限,如有疏漏,歡迎指正交流。| 思兼,sjqlwy@gmail.com,2021年11月12日
這段時間研究了一下 Klipper 固件的文檔和源碼,對它的使用有了更深入的了解,功能豐富,拓展性極強,僅修改參數不需要每次編譯固件這點就比 Marlin 方便太多。如果有疑問歡迎留言,簡單問題請自行查看文檔,復雜問題我會給個思路,實在搞不定可以付費咨詢、遠程協助,收費是為了證明知識是有價值的,也排除一些連簡單基礎的問題都伸手白嫖,轉嫁時間成本的人。

本來想要列個大綱,按照計划一篇一篇寫,但是后來發現有難有易,所以索性想到哪寫到哪,最后再整理匯總,先做出來,再做完美。

3D嘛,由 XYZ 3 個軸構成,常見的 3D 打印機架構有笛卡爾和並聯臂等,其中前者可以理解為一個軸由一個步進電機控制,比如 i3 龍門架構;后者一個方向的運動由 2 個以上的電機控制,比如 Delta、CoreXY。由於 Voron 等外觀好看的 DIY 開源 3D 打印機的流行以及步進電機繞法的區別,很多朋友安裝完畢之后需要調試電機方向。

1、目前的調試方法

1.1 圖片對比法

  • 從 3dphell 網站引用 VoronDesign 的方法
    v1-motor-configuration-guide
    反正我沒看懂
  • 參考小樹的文檔,鏈接
    image-20211112232801518

這個比上面的好理解點,起碼有文字注釋。我看了一會兒,也沒太搞懂

1.2 人類高質量CoreXY電機方向調整

參考鏈接:https://wiki.3dphell.com/zh/basic/calibration

也需要三步,如下圖所示:

image-20211112233050188

此流程操作傻瓜,比那些八張圖,八個判斷條件的流程高到不知道哪里去了。

遺憾地表示,我試了一下也沒成功。 而且最差的情況,每一步都要調整配置文件。

2、我的新調試方法

以上方法都需要多次歸零(G28)和急停(M112),操作繁瑣,理解困難。我的方法只需要運行一個宏,迅速判斷出結果,修改一次配置文件。

首先 CoreXY 的官方網站 可以看到其原理圖,我們從這里入手。還有一種 H/D-Bot 架構,本文不展開討論。

image-20211112233403556

實際的繞線圖:

image-20211112234535255

我們首先來分析一下 CoreXY 的特點:

  • 整個系統有 2 根皮帶,對應 2 個電機:A 和 B。擠出頭在 X 和 Y 方向上的移動,由兩個電機參與完成。

  • 當擠出頭在斜 45° 移動時,只有一個電機參與。

由於是並聯臂結構,其實很多配置里說的 X、Y 電機是不恰當的。除了 X 橫梁,A、B電機分別可以放在圖示三個位置。我們約定,將 A 電機接到 3D 打印機主板的 X 電機插槽,B 電機接到 Y 電機插槽。

也推薦觀看 工程部老周 的視頻 《【DIY3d打印入門指南】結構詳解,hbot和corexy結構的原理和區別》

之前存在的兩種的方法之所以復雜,是因為歸零操作一直需要兩個電機共同參與,那如果我們觀察斜 45° 擠出頭的運動方向,此時就像簡單的 i3 架構,其運動方向僅一個電機參與,那么就可以快速確認電機方向。

4.1 啟用強制移動方便調試

由於 Klipper 的保護措施,只有歸零后才能控制軸移動,所以我們要解除這一限制。參考文檔

# 修改 printer.cfg,添加以下內容

# CoreXY 電機方向測試,日常使用請勿開啟
[force_move]
enable_force_move: True

# 使能 M118 控制台輸出
[respond]

同時,為了防止噴嘴頂到熱床,我們先把 Z 軸歸零,然后擠出頭離開熱床 30mm(此過程可以使用下方的宏)。再把擠出頭手動移到熱床中間,防止調試過程中撞到框架。

4.2 控制單個電機

由於我們僅需要控制一個電機,無法使用諸如 G1 X100 F3000 的命令,查看文檔 可知使用以下命令 FORCE_MOVE STEPPER=<config_name> DISTANCE=<value> VELOCITY=<value> [ACCEL=<value>] 進行控制。我們寫一個宏,方便操作。

[gcode_macro DIRECTION]
description: 思兼 | 快速確定 A、B 電機方向,需要設置 [force_move] 為 True
gcode:
  # 歸零 Z軸並抬高30mm,防止誤觸熱床。也可以手動操作。
  G28 Z
  G1 Z30 F2000
  M117 Goto Right-Back # 提示信息顯示在屏幕上
  M118 Goto Right-Back # 顯示在控制台
  # 此時擠出頭應向右后方移動
  FORCE_MOVE STEPPER=stepper_x DISTANCE=20 VELOCITY=10
  # 等待 2秒
  G4 S2
  M117 Goto Right-Front
  M118 Goto Right-Front
  # 此時擠出頭應向右前方移動
  FORCE_MOVE STEPPER=stepper_y DISTANCE=20 VELOCITY=10

我們記下擠出頭兩次的移動情況,對照這個圖,理論上 先沿紅色向右后方移動 20mm -> 等待 2s -> 再沿藍色向右前方移動 20mm 。那么根據實際情況,我們進行分析:

  1. 擠出頭先沿藍色方向移動 —— AB電機接反,配置文件中交換引腳,[stepper_x] 和 [stepper_y] 的 x、y 字母對調
  2. 先沿紅色方向向左前方移動 —— A 電機反向,取反 DIR 引腳,對應區域 [dir_pin: ] 取消或者增加后面的 !
  3. 同樣,再沿紅色方向向左后方移動 —— B電機接反,取反 DIR 引腳,[dir_pin: ] 取消或者增加后面的 !
  4. 修改完成后,建議及時關閉 [force_move]

image-20211113001553819

后記

這種方法個人測試下來還是非常方便的,只需要執行一次宏,就可以快速確認電機方向,適合我這種懶人。后續會分享其他更多好玩、無聊的功能。
另外,由於 CoreXY 在 斜 45°移動時,只有一個電機運行,當速度/加速度過快,空駛的時候速度很快,超過單電機的物理能力,就會出現 geng-geng 的聲音,這時就是丟步了。那么如何判斷電機是否丟步、如何設置電機的理想電流、速度/加速度?請看下文分解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM