Marlinのカスタマイズ

KINGROON KP3Sにはオープンソースの3Dプリンター用ファームウェアがインストールできる。

公式ファームウェアもインストール時にテキストファイルの設定ファイルの内容を読み取って反映できるユニークな仕組みがあり、自由度は高い。

しかし、公式ファームウェアは社外製の3D Touchに非対応で、例えば少なくない人が選びそうなTrianglelabの3D Touchが動かないといった問題がある。これは設定ファイルの変更では対処が不可能だ。

この問題はMarlinをインストールすると解決できる。特に固有の問題に対処する必要がなく、Marlinとして標準的な手順で3D Touch(BLTouch)に対応するだけだ。

KINGROON KP3SにMarlinをインストールする動機としては、これが一番ではないかと思われる。筆者もこの理由でインストールした。

公式ファームウェアもMarlinベースなのにおかしな話だが、ベンダーロックのような意図があるのかもしれない。

それならそれで、しっかり自社製品に誘導してほしいものだが。

3D Touch(BLTouch)対応のための変更

Marlinのインストール方法について解説したページで書いた通り、MarlinはConfigurationファイルの変更によって設定を変更できる。

では、具体的にConfigurationファイルのどこを変更したら3D Touch(BLTouch)対応が可能なのだろうか?

差分を取って分かるようにしておいた。ベースとしたのは、「Marlinのインストール」のページで紹介したdulfe氏のConfigurationファイルだ。

  • 「-」で始まる黄色い行は、変更後になくなった行。
  • 「+」で始まる緑の行は、変更後に増えた行。
  • ある行が書き換えられた場合は、「-」と「+」が連続で出てきて対を成している。
  • それ以外の色の付いていない行は、変更のあった行の位置関係を示すために住所のごとく含められているだけで、無変更の行。

自明のところが多いので全部は解説しないが、以下の設定については補足しておこう。


GRID_MAX_POINTS_X / GRID_MAX_POINTS_Y

見れば分かる通り、GRID_MAX_POINTS_XはGRID_MAX_POINTS_Yとしても使われるように書かれている。

image alt

自動ベッドレベリングでプローブを落とすポイントを縦横何箇所にするかを決めるものだ。元々は3なので、3x3で9回プローブを落としていたところ、4x4にしたので16回プローブを落とすように変更したことになる。

#define GRID_MAX_POINTS_X 4

NOZZLE_TO_PROBE_OFFSET

ノズルの中心と3D Touchのプローブの中心との位置関係を指定する。

Zはファームウェアの方では指定せず、G-codeのM851で指定するのがしきたり。

1
NOZZLE_TO_PROBE_OFFSET { X, Y, Z }

ベッドを上から見て、ノズルの右真横27.5mmのところにあるなら以下のようになる。

1
NOZZLE_TO_PROBE_OFFSET { 27.5, 0, 0 }

ベッドを上から見て、ノズルの左真横32mmのところにあるなら以下のようになる。

1
NOZZLE_TO_PROBE_OFFSET { -32.0, 0, 0 }

右上(右奥)なら……。

1
NOZZLE_TO_PROBE_OFFSET { 10.0, 10.0, 0 }
image alt

NOZZLE_TO_PROBE_OFFSETで明確にしたノズルとの位置関係と、次項のPROBING_MARGINで3D Touchのプローブの可動範囲が自動計算される。

NOZZLE_TO_PROBE_OFFSETを設定しても、M851のX、Yの値が指定されていればそれによって上書きされるので、EEPROMなどのM851の値を確認しておく必要がある。

PROBING_MARGIN

PROBING_MARGINは、プローブを落とす矩形領域をベッドの端から何ミリ内側に食い込ませる(縮小する)かを決めるものだ。

image alt

プローブを落とすポイントが端っこ過ぎてベッドの外に出てしまう場合は、この数字を増やすとベッドの端から内側にずれていくので、はみ出す心配がなくなっていく。

#define PROBING_MARGIN 10

Marlinの3D Touch(BLTouch)対応調整に当たっては、エンドストップのセンサーの状態を一覧できるG-CODEのM119が大変役に立つ。

3D Touchのプローブの状態(open = プローブが伸びた状態 / TRIGGERED = プローブが押し込まれた状態)を確認できる。

PWMノイズ低減のための変更

KINGROON KP3Sは冷却ファンのスピードコントロールのためのPWM制御の周波数が低く、100%以外のスピードでファンを動かしたときにPWM起因のノイズが乗る。

折角静音化のためにファンを交換しても、PWMノイズが乗るのでは台無し。

このPWMノイズはMarlinの設定を変更することでも抑えることが可能だ。

変更方法は以下の差分の通りだ。

PWMノイズ低減効果のデモ動画を作成した。

動画ではPWMノイズが減った分、ファンの音が大きくなっているが、これはスマートフォン側の音レベルのノーマライザーが働いてのことだろう。

実際はPWMノイズが減った分、ファンの動作音のみ残ったような感じになっている。

リニアアドバンスの有効化

リニアアドバンスは、造形物表面を綺麗にしたり、角の膨らみを緩和する効果を持つ設定項目。

KINGROON KP3Sの公式ファームウェアではリニアアドバンスが有効化されているが、dulfe氏のConfigurationファイルでは代わりにSカーブが有効化されている。

リニアアドバンスを有効化させるには、Configuration_adv.hの以下の行をアンコメント(行頭の//を削除)。

//#define LIN_ADVANCE

#define LIN_ADVANCE

Sカーブとリニアアドバンスは競合すると思われるので、Configuration.hの以下の行をコメントアウト(行頭に//を追加)。

#define S_CURVE_ACCELERATION

//#define S_CURVE_ACCELERATION

SカーブはConfiguration.hにあり、リニアアドバンスはConfiguration_adv.hに引っ込められたことから、Sカーブを使う方が正道のように思うが、筆者はこの辺りよく分かっていない。


とりあえずこれで記事を公開するが、必要があればMarlinの設定項目を追記していく。