はじめに
ここまで AI3M をカスタムしてきたが,導入した Marlin は最新のソースと比べてかなり古くなっている.設定沼にハマるついでに最新のバージョン 2.1 をビルとしてみることにした.
ビルド方法は Yan 様の記事を参照.
現在のカスタム状態
ファームウェアに関係するハードウェアの変更点は次の通り.
- モータードライバを全て TMC2208 V3.0 へ変更
- ダイレクトエクストルーダー化
- BLTouch 導入
- BMG エクストルーダー導入
他にも静音化のためにファンを交換していたりするが,ファームウェア観点では影響無いので省略.
パラメータ設定
ビルドにあたりファームウェアレベルで設定できる部分は最適な値を探ってからビルドする.
DEFAULT_AXIS_STEPS_PER_UNIT
移動量 1mm あたりのステップ数を設定する.
印刷物の精度に直結するのでできるだけ厳密な値を探しておくと良い.
ステッピングモータの仕様から理論値を算出してもいいし,実際の移動量から最適な値を探しても良い.
/**
* Default Axis Steps Per Unit (linear=steps/mm, rotational=steps/°)
* Override with M92
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 419.19 }
実際の移動量からステップ数を探す場合は針と定規などを使って移動量を測定してみるとよさげ.
エクストルーダー部分は Yan 様が整理されているのでそちらを参照.これも実際の移動量かステップ数を算出している.
X/Y_BED_SIZE, X/Y/Z_MIN_POS, X/Y/Z_MAX_POS
ベッドサイズとホーミング後の移動限界位置を設定する.
絶対座標系で移動可能な限界点を探って設定値を決めればいいが,あまり厳密に設定する必要はない.
// The size of the printable area
#define X_BED_SIZE 210
#define Y_BED_SIZE 210
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS -5
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 180
NOZZLE_TO_PROBE_OFFSET
ノズルから BLTouch までのオフセットを指定する.
せっかく BLTouch を接続してもこの設定値が適当だとオートレベリングの恩恵を受けられない.うまく設定値が決まれば第一層の定着も良くなる.
XY 軸のオフセット値は実際の移動量を測定して調べてもいいし,プリンタヘッド周りの 3D データがあればデータ上で距離を調べても良い.
Z軸のオフセットはBLTouchのプローブが押し上げられる位置を指定する.BLTouch には個体差があると思われるので,自分の個体に合わせて設定値を探る必要がある.
/**
* Nozzle-to-Probe offsets { X, Y, Z }
*
* X and Y offset
* Use a caliper or ruler to measure the distance from the tip of
* the Nozzle to the center-point of the Probe in the X and Y axes.
*
* Z offset
* - For the Z offset use your best known value and adjust at runtime.
* - Common probes trigger below the nozzle and have negative values for Z offset.
* - Probes triggering above the nozzle height are uncommon but do exist. When using
* probes such as this, carefully set Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES
* to avoid collisions during probing.
*
* Tune and Adjust
* - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc.
* - PROBE_OFFSET_WIZARD (configuration_adv.h) can be used for setting the Z offset.
*
* Assuming the typical work area orientation:
* - Probe to RIGHT of the Nozzle has a Positive X offset
* - Probe to LEFT of the Nozzle has a Negative X offset
* - Probe in BACK of the Nozzle has a Positive Y offset
* - Probe in FRONT of the Nozzle has a Negative Y offset
*
* Some examples:
* #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1"
* #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2"
* #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3"
* #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4"
*
* +-- BACK ---+
* | [+] |
* L | 1 | R <-- Example "1" (right+, back+)
* E | 2 | I <-- Example "2" ( left-, back+)
* F |[-] N [+]| G <-- Nozzle
* T | 3 | H <-- Example "3" (right+, front-)
* | 4 | T <-- Example "4" ( left-, front-)
* | [-] |
* O-- FRONT --+
*/
#define NOZZLE_TO_PROBE_OFFSET { -36, -32, -2.6 }
Z 軸のオフセット値確認方法は次の通り.Z 軸のオフセット調査前に DEFAULT_AXIS_STEPS_PER_UNIT
の最適値を探して設定してておくこと.
まずは Z 軸の現在のオフセット値を確認.0mm 以外なら一旦 0mm に変更しておく.
M851 # 現在のオフセット値を確認
> M851 X-36.00 Y-32.00 Z0.00 ; (mm)
M851 Z0 # Z軸のオフセット値が 0.0mm 以外が指定されていたら 0.0 mm に変更
ホーミングして,手動でレベリングを行う.ただし,通常の手動レベリングではなく,ノズルセンタがベッドにピッタリと接地する位置に調整するといい.もしくはプローブのオフセット値算出の際に手動レベリングの厚み分減算してもいい.
G28 #ホーミング
適当な測定位置に移動して,プローブを下げる.
G90 # 絶対座標系に設定
G0 Z10
G0 X60 Y60 # ノズルを X60mm Y60mm Z10 に移動
M280 P0 S10 # プローブを下げる
少しずつ Z 軸を降下させ,プローブが押し上げられる位置を探す.
G91 # 相対座標系に設定
G0 Z-1 # プローブ先端がベッドにふれるまでZ軸を1.0mmずつ下げる
G0 Z-0.1 # プローブが押し上げられるまでZ軸を0.1mmずつ下げる
今回は概ね 7.4mm 下げたところでプローブが押し上げられたので,Z 軸のオフセット値は -2.6mm.これを何度か繰り返して平均値を算出する.
設定値が決まったらオフセット値を設定して保存.
M851 Z-2.6
M500
実際のオートレベリングでは,上記の手順と異なり,Z 軸がリニアに降下するので測定値との若干の誤差が生じる.測定値から得られたオフセット値で何度か印刷してみて,第一層の定着具合を確認し,更にオフセットを微調整していくと良い.
参考までにプローブの操作コマンドは次の通り.
コマンド | 動作 |
---|---|
M280 P0 S10 | プローブを押し出す |
M280 P0 S90 | プローブを引き上げる |
M280 P0 S120 | プローブの上下動作確認 |
M280 P0 S160 | アラームをリセット |
TRAMMING_POINT_XY
レベリングするエリアを指定する.
ダイレクトエクストルーダー化するなどカスタムヘッドを導入している場合,BLTouch の設置位置によってレベリング可能なエリアを調整する必要がある.今回ベースとしたコンフィグでは,以前のコンフィグから指定方法が変更されているが,設定内容自体は以前と同じなので説明は省略する.
// Define positions for probe points.
#define TRAMMING_POINT_XY { { 20, 20 }, { 150, 20 }, { 150, 180 }, { 20, 180 } }
おわりに
最新版 Marlin 導入したいけどビルドするの難しそうだなと思ってたが,やってみるとなんのことは無かった.
バイナリは GitHub に置いてあるので,もし同じカスタム状態の人がいればご自由にどうぞ.多少構成が違っても Marlin 導入済みの人はビルドくらい簡単にできると思うので,自分でビルドしてどうぞ.
湿気の多い季節はつらい.フィラメント的に.
導入ついでにリニアアドバンスも設定しておくことをおすすめする.
コメント