自分の3Dプリンタに合わせMarlinの設定ファイルを変更してビルドする方法

タイトル

3Dプリンター用ファームウエア Marlin のビルドをします。Marlinをビルドするには使う3Dプリンタのハードウエアに合わせてコンフィギュレーションファイルを設定しなくてはなりません。
私が使っているTronxy XY-2 Pro TITANを例にMarlinの設定とビルド手順を紹介します。

3Dプリンタのファームウエアは3Dプリンタの動きを制御するプログラムです。モーターを動かす、ヒーターを加熱する、SDメモリーカードからファイルを読む、USB端子でシリアル通信をする、GCODEファイルを読み取ってモーターやヒーターを動かす などを行います。ファームウエアがなければ3Dプリンタは全く動きません。

3Dプリンタにはメーカー独自のファームウエアが搭載されているでしょう。メーカー独自の機能もファームウエアで実現されています。しかし、マイナーな機種だと使い方が分からなかったり、検索した方法が使えなかったりと困ることもあります。検索して何も情報が見つからない事もあります。
こんな時はファームウエアのデファクトスタンダードと言えるMarlinファームウエアに書き換えてしまうと良いでしょう。ネットで検索して見つかる設定はほぼMarlinファームウエアのものです。

ファームウエアは3Dプリンタを動かす脳みそです。脳みそは自分の体が犬なのか猫なのか蛇なのか蝉なのかミミズなのかを知りません。それはあなたが教えてあげなくてはなりません。犬だと思いこんでいる脳みそを蛇に入れてはいけません。
ファームウエアの書き換えに失敗すると3Dプリンタはまったく動かなくなります。正しい設定をしていないファームウエアを入れてしまうと3Dプリンタが予期しない動作をして怪我や事故を起こします。ヒーターが暴走すれば火災の危険もあります。
ここでは3Dプリンタのファームウエアの書き換え方法は紹介しません。自分が使う3Dプリンタ用にファームウエアを設定してビルドする方法だけ紹介します。
ファームウエアの書き換えはESP32などの組み込みマイコンボードで遊んで、ファームウエアを変えるとは何か?を理解してから挑戦しましょう。

ビルド環境

エディタはVisual Studio Codeを使います。
Visual Studio Code
VS Codeの拡張機能でMarlinをビルドする開発環境をインストールします。
拡張機能で"PlatformIO"を検索します。
PlatformIO

Marlinファームウエア

Marlinのホームページ
Marlin Firmware
ソースコード
Marlin 3D Printer Firmware
MarlinFirmware/Marlin
GitHubのRelesesから最新のMarlinソースコードをダウンロードします。ドキュメントフォルダなどにソースコードを展開します。
PlatformIOで展開したMarlinフォルダをプロジェクトとして開きます。

Marlinの設定

MarlinはC++で書かれています。
多くの3Dプリンタのハードウエアに対応するためにいろいろなプログラムを使うようになっています。あらゆるプリンタのプログラムを入れてしまうとプログラムがとても巨大になってしまいます。3Dプリンタのメモリーは1Mバイトも無いので入り切りません。そのため使う3Dプリンタが持っている機能だけ動かすプログラムだけにしてプログラムのサイズを最小にします。そのための設定ファイルを用意します。

Marlinの設定ファイルで設定する内容は、使う3Dプリンタの駆動形式、持っている機能の有効化、3Dプリンタに載っているICの種類、モーターの回転方向とヘッドの移動方向の対応、センサーの種類など、3Dプリンターのハードウエアに何を使っているかです。
多くの種類のハードウエアに対応しています。
大変そうに思えますが変更する設定ファイルは次の2つだけです。
configuration.h
configuration_adv.h
Marlinフォルダにあります。

configurationファイルの例

configurationファイルを設定するには3Dプリンタの回路やメカにどんな部品が使われているか正確に知らなくてはなりません。難しそうですね。
ですが業務用3Dプリンタ以外の3Dプリンタはメーカーが異なっていてもほとんどオープンソースハードウエアです。概ね使う部品もメカ構成も同じで異なっていても数種類しかありません。特殊な部品を使って情報が少ないとユーザーが離れて行ってしまうからです。Marlinプロジェクトでは精力的に新しい部品への対応をしているようです。
メジャーな3DプリンタならばMarlinのリポジトリにconfigurationファイルの例があります。
MarlinFirmware/Configurations
Pre-tested Configurations for Marlin Firmware.
config/examples/ にメーカー毎のサンプルがあります。最新機種は無いでしょう。
説明のリンクからダウンロードするか、リリースブランチを選択した後にダウンロードします。Marlinのバージョンに合わせるのを忘れずに。

私が使っているTronxyのディレクトリはありますがXY-2 Proのconfigurationファイルはありませんでした。
この記事公開時ごろのTronxyの機種ならばrhapsodyv氏がconfigurationファイルを公開してくれています。rhapsodyv氏 ありがとう!
rhapsodyv/Marlin
このconfigurationファイルでは XY-2 PRO、XY-3やX5SAなどの機種設定がコメント1行外すだけでできます。同じ機種でもロットにより使っている部品が違ったりするので少し調べる必要はあります。

最新のconfigurationファイルに合わせる

rhapsodyv氏のconfigurationファイルは少し古いバージョンのconfigurationファイルが元となっています。Marlinのバージョンが上がればconfigurationファイルも変更されて行きます。パラメーターが増えたりパラメーター名が変わったりします。まだ最新バージョンでも使えますが今後の事を考えてMarlinに添付されているconfigurationファイルを使って動くようにしてみます。
diffを使って変更しているパラメーターを抽出して最新版のconfigurationファイルを書き換えます。

結論:この記事公開時での私が使っているTRONXY TITAN用 Marlin 2.0.9.3 のconfiguration.hとconfiguration_adv.hファイルの変更点はこれです。


主要パラメーターだけ説明します。設定する値は3Dプリンタ毎に異なりますが、変更箇所は他の3Dプリンタもだいたい同じです。どんな設定をするのか眺めてみてください。

#define CONFIGURATION_H_VERSION 02000903
以前のバージョンのconfigurationファイルがそのまま使えるとは限りません。バージョンが合わないとコンパイルできないようになっています。Marlinのバージョンを新しくしたら変更点を確認して問題なければバージョン番号を変えます。

#define MOTHERBOARD BOARD_CHITU3D_V6
3Dプリンタが使っている制御ボードを指定します。

#define TEMP_SENSOR_BED 1 
温度センサーが付いていれば1にします。 

//#define ENDSTOPPULLUPS
終端センサーのプルアップ・プルダウンを指定できます。正しく設定していないとヘッド移動が端っこで止まらなくなったりします。時々突然に止まったりあるいは端っこで止まらない時はここを疑いましょう。

#define X_MIN_ENDSTOP_INVERTING true
終端のスイッチの論理反転を設定します。

#define X_DRIVER_TYPE TMC2208_STANDALONE
ステッピングモーターのドライバーICの種類を指定します。制御ボードに載っているドライバICの型番を見て決めます。

#define DEFAULT_AXIS_STEPS_PER_UNIT {160, 160, 800, 764}
ヘッド、ベッド、フィラメントが単位長さ移動するのに必要なステップ数を指定します。これを間違えると移動量が大きくなったり小さくなったりします。

#define FIX_MOUNTED_PROBE
誘導型のZ軸センサーを使う場合はコメントを外し有効にします。

#define NOZZLE_TO_PROBE_OFFSET { -35, -10, 0 }
ノズルからのプローブ位置のオフセット

#define INVERT_X_DIR false
モーターの回転方向と移動方向の整合をとります。

#define X_BED_SIZE 255
#define Y_BED_SIZE 255
#define Z_MAX_POS 245
ベッドサイズと高さの設定です。

#define FILAMENT_RUNOUT_SENSOR
フィラメント切れセンサーがある場合はコメントを外します。
終端センサーと同じくプルアップ プルダウン 論理設定があります。

#define FILAMENT_RUNOUT_SCRIPT "M25"
フィラメント切れを検知した時の動作を指定します。M600ではエラーでビルドできませんでした。

#define AUTO_BED_LEVELING_BILINEAR
自動ベッドレベリングを有効にします。

#define EEPROM_SETTINGS
EEPROMを使えるようにします。

#define SDSUPPORT
SDメモリーカードを使えるようにします。

#define TFT_TRONXY_X5SA
#define TFT_DRIVER ILI9488
TFTディスプレイの種類とドライバーを指定します。

#define TFT_LVGL_UI
UIのデザインを指定します。

#define TOUCH_SCREEN
タッチスクリーンを有効にします。

#define FAN_SOFT_PWM
ファンのPWMコントロールを有効にします。

以下、configuration_adv.hのパラメーター

#define E0_AUTO_FAN_PIN FAN2_PIN
ファンのIOピンを指定します。ファンが回らない時はここらへん。

#define LIN_ADVANCE
リニアアドバンスを有効にします。
XY-2 PROの場合はハードウエアを改造してstealthChopを無効にしないと使えません。エクストルーダーが突然止まるからです。

#define MINIMUM_STEPPER_POST_DIR_DELAY 20
#define MINIMUM_STEPPER_PRE_DIR_DELAY 20
#define MINIMUM_STEPPER_PULSE 0
#define MAXIMUM_STEPPER_RATE 5000000
ステッピングモータードライバーICの種類に合わせ指定された値にします。値はコメントに書かれています。

#define EMERGENCY_PARSER
緊急停止GCODEコマンドを有効にします。

その他、機種によってはCOREXYの設定が必要でしょう。

ビルド

 configurationファイルができたらPlatformIOでビルドします。
PlatformIOにもどんなマイコンボード用の開発をするのか教えなくてはなりません。
platformio.ini ファイルを開きdefault_envsを書き換えます。私のXY-2 PRO TITANの場合は次のように書き換えます。
default_envs = chitu_v5_gpio_init_maple
自前でconfigurationファイルを初めて作ったのならおそらくビルドエラーが出るでしょう。エラーメッセージを良く読んで設定を変えていきます。エラーがどうしても解消できない時はパラメーターを一つ一つ変更してはビルドしてエラーが出るパラメーターを特定しましょう。排他的なパラメーターや一緒に使うパラメーターもあって難しいです。

ビルドに成功するとファームウエアファイルは .PIOフォルダ以下に出来上がっています。

3Dプリンタの型番が同じでもロットによって使っている部品が異なる場合があります。部品が異なればMarlinのconfigurationファイルも変える必要があります。ご自分の3Dプリンタで使われているハードウエアを調べ部品と回路を自分で把握できないのならMarlinへの入れ替えはあきらめましょう。

ビデオ



コメント

  1. 動画ありがとうございます!
    やってみたけどできなかった。エラーが出ます

    返信削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.