Anycubic i3 Mega に Marlin 2.1 を導入する
Anycubic i3 Mega に Marlin 2.1 を導入する

Anycubic i3 Mega に Marlin 2.1 を導入する

Software 3D PrinterAnycubic i3 Mega 目次
  1. はじめに
  2. 現在のカスタム状態
  3. パラメータ設定
    1. DEFAULT_AXIS_STEPS_PER_UNIT
    2. X/Y_BED_SIZE, X/Y/Z_MIN_POS, X/Y/Z_MAX_POS
    3. NOZZLE_TO_PROBE_OFFSET
    4. TRAMMING_POINT_XY
  4. おわりに

はじめに

ここまで AI3M をカスタムしてきたが,導入した Marlin は最新のソースと比べてかなり古くなっている.設定沼にハマるついでに最新のバージョン 2.1 をビルとしてみることにした.

Anycubic i3 Mega「Anycubic i3 Mega」の記事一覧です。heavymoon.org

ビルド方法は Yan 様の記事を参照.

3Dプリンタユーザーの為のファームウェアコンパイル講座|YanどもどもYanでっす。 本日のお題は「Marlin使いたいけどコンパイルって?という方向けコンパイル講座」でっす。(長い題名だ…) 最新のMarlin2系は基本的に32bitマザーボード向けなので、MEGAなど格安3Dプリンターには向きませ...note.com

現在のカスタム状態

ファームウェアに関係するハードウェアの変更点は次の通り.

  • モータードライバを全て 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 様が整理されているのでそちらを参照.これも実際の移動量かステップ数を算出している.

エクストルーダーキャリブレーションの仕方|YanどもどもYanでっす。 本日のお題は「エクストルーダーのキャリブレーション」でっす。 要するに何をするかというと… プリントデータが要求するフィラメントの長さを、エクストルーダーが正しく送り出すようにします。 こうしてあげることで、機械的に...note.com 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アラームをリセット Servo PositionSet or get the position of a servo.marlinfw.org TRAMMING_POINT_XY

レベリングするエリアを指定する.

ダイレクトエクストルーダー化するなどカスタムヘッドを導入している場合,BLTouch の設置位置によってレベリング可能なエリアを調整する必要がある.今回ベースとしたコンフィグでは,以前のコンフィグから指定方法が変更されているが,設定内容自体は以前と同じなので説明は省略する.

// Define positions for probe points. #define TRAMMING_POINT_XY { { 20, 20 }, { 150, 20 }, { 150, 180 }, { 20, 180 } }

おわりに

最新版 Marlin 導入したいけどビルドするの難しそうだなと思ってたが,やってみるとなんのことは無かった.

バイナリは GitHub に置いてあるので,もし同じカスタム状態の人がいればご自由にどうぞ.多少構成が違っても Marlin 導入済みの人はビルドくらい簡単にできると思うので,自分でビルドしてどうぞ.

Release Marlin 2.1 Ai3M HeavyMoon Custom · HeavyMoon/MarlinAi3M Custom FeaturesTMC2208 v3.0BLTouchBMG ExtruderDirect Extruder MODsee also: Anycubic i3 Mega | HeavyMoongithub.com

湿気の多い季節はつらい.フィラメント的に.

導入ついでにリニアアドバンスも設定しておくことをおすすめする.

リニアアドバンスってなんぞ?|YanどもどもYanでっす。 本日のお題は「リニアアドバンス」。 FDM方式の3Dプリンターでプリントクオリティを追求していくと避けては通れない設定。だけどパラメーターをちょこっといじればOKという簡単なものじゃないのが残念なところ。 情報が少な...note.com
📎📎📎📎📎📎📎📎📎📎
BOT