クリアメモリ

プログラミングやガジェットレビュー、便利なアプリケーションなど雑多に記録するブログ

【CR10S オートレベリング ファームウェア・オフセット編】3DTouch用にMarlin1.1.8を書き換えてオフセットを設定する!

f:id:clrmemory:20180916094630p:plain

こんにちはクリアメモリです!

前回、CR10Sオートレベリングを追加するために必要なモデルやアプリケーションを用意し、3DTouchの取り付けまで完了しました。

 

前回に引き続き、今回は「ファームウェアの書き換え」と「オフセットの設定」について紹介します。

基本的に、書き換える場所や値は決まっているのでチェックしてみてください。

 

はじめに

 

今回紹介する内容は「Creality3D CR10S」にオートレベリング機能を追加する方法の「ファームウェア編」についてです。

 

  • CR10S オートレベリング - 準備編
  • CR10S オートレベリング - 3DTouch取り付け編
  • CR10S オートレベリング - ファームウェア編 <- この記事

 

前回の記事でも紹介した通り、Creality3D CR10Sという3Dプリンターに「3DTouch」という接触センサーを取り付けてオートレベリングを追加しました。

基本的な設定は簡単ですが、ファームウェアを書き換えることになるので、今回の作業は全て自己責任でお願いします。

 

また、ファームウェアの書き換え後に「Z軸のオフセット値」を設定する必要があります。

各自値を調整するので、合わせてチェックしてみてください。

 

参考記事

 

3DTouch用にファームウェアの書き換える場所や値はこちらの記事を参考にしました。

ありがとうございます。

 

参考サイト様:

3dmakerita.it

 

英語がわかるのであれば、こちらの記事を読んだ方が良いです。

今回のファームウェア書き換えも、ほとんどそのまま参考にさせていただきました。

 

ファームウェアを用意する

 

CR10Sにオートレベリングを追加するためにはファームウェアの書き換えが必要です。

今回は参考記事とバージョンを合わせて「Marlin 1.1.8」を使いました。

 

バージョンによって作業が変わる可能性があるので注意してください。

現在の最新バージョンは、Marlinのサイトからダウンロード可能です。

 

marlinfw.org

 

バージョン1.1.8はこちらから。

github.com

 

ArduinoからMarlin1.1.8を開く

 

ダウンロードしたZipファイルを解凍すると「Marlin」というフォルダがあるので開いてください。

下の方にスクロールしていくと「Marlin.ino」というファイルが見つかります。

 

f:id:clrmemory:20180916091046p:plain

 

ダブルクリックすれば「Arduino」が開きました。

 

f:id:clrmemory:20180916091115p:plain

 

初期状態だとこんな感じ。

それでは順番にファームウェアを書き換えていきましょう。

 

Configuration.hを書き換える

 

まず最初に書き換える項目は「Configuration.h」の中にあります。

Arduinoで右側の「▼」をクリックすると全てのファイルが表示されるので、その中から「Configuration.h」を選択してください。

 

f:id:clrmemory:20180916091140p:plain

 

ずらーっとコードが表示されたと思います。

この中から「〇〇行目を〜〜」という感じで書き換えていくわけですね。

 

私自身すべてを理解したわけではないので、わかる範囲で解説をいれていこうと思います。

 

127行:

 

127行: CUSTOM_MACHINE_NAME

 

「custom_machine_name」を好きな名前に書き換えると、CR-10Sを起動した時にコントローラーボックスに表示されるテキストが変わります。

 

f:id:clrmemory:20180916140007p:plainf:id:clrmemory:20180916140635p:plain

 

こんな感じで表示されるので、任意のテキストを入力しましょう。

私は「#define CUSTOM_MACHINE_NAME "CR-10S"」としました。

 

114行:

 

114行: #define BAUDRATE 250000

#define BAUDRATE 115200に変更

 

140行:

 

140行: #define DEFAULT_NOMINAL_FILAMENT_DIA 3.0

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 に変更

 

フィラメントの太さを設定します。

基本的な値は「1.75

 

294行:

 

294行: #define TEMP_SENSOR_BED 0

#define TEMP_SENSOR_BED 5 に変更

 

ヒートベッドを搭載していない場合は「0」

 

328行〜332行

 

328行: #define HEATER_0_MAXTEMP 260

329行: #define HEATER_1_MAXTEMP 260

330行: #define HEATER_2_MAXTEMP 260

331行: #define HEATER_3_MAXTEMP 260

332行: #define HEATER_4_MAXTEMP 260

333行: #define BED_MAXTEMP 110

 

ノズルとベッドの最大温度を設定します。

この値を超えた温度で造形しようとすると「MAXTEMP」のエラーが発生するため、少し高めに設定しても良いのかもしれません。

 

532行:

 

532行: #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 95 } に変更

 

539行:

 

539行: #define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }

#define DEFAULT_MAX_FEEDRATE { 2500, 2500, 100, 25 } に変更

 

547行:

 

547行: #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }

#define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 10000 } に変更

 

557行〜559行:

 

557行: #define DEFAULT_ACCELERATION500 に変更

558行: #define DEFAULT_RETRACT_ACCELERATION1000 に変更

559行: #define DEFAULT_TRAVEL_ACCELERATION1000 に変更

 

751行〜753行:

 

751行: #define INVERT_X_DIR false に変更

752行: #define INVERT_Y_DIR false に変更

753行: #define INVERT_Z_DIR true に変更

 

784行〜785行:

 

"注意" この設定は「Creality3D CR-10S 300x300x400」の場合です。

サイズの違いによって値が変わるので注意してください。

 

784行: #define X_BED_SIZE 300 に変更

785行: #define Y_BED_SIZE 300 に変更

 

プラットフォームの大きさ設定です。

私が購入した「Creality3D CR10S」のプラットフォームは300mm x 300mm x 400mmなので「X > 300(mm)」「Y > 300(mm)」となりました。

 

プラットフォームの大きさと合わせてください。

 

793行:

 

先ほど同様、3Dプリンターのサイズによって値が変わります。

 

793行: #define Z_MAX_POS 400 に変更

 

827行:

 

827行: #define FILAMENT_RUNOUT_SENSOR

コメントを外す

 

「//〇〇」となっているコードを「〇〇」に書き換えてください。

コメントをを外すことで、その部分に書かれたコードが有効になります。

 

私の環境(Mac)では「Command + /キー」を押すことで、コメント(有り無し)を切り替えられます。

 

830行:

 

830行: #define ENDSTOPPULLUP_FIL_RUNOUT

コメントを外す

 

BLTouchを有効化

 

ここからは「BLTouch(3DTouch)」を有効にするための設定です。

BLTouchや3DTouchを使わない場合は不要。

 

それ以外のセンサーを使った場合の記述方法はわかりません。

 

874行:

 

874行: #define AUTO_BED_LEVELING_BILINEAR

コメントを外す

 

640行

 

640行: #define BLTOUCH

コメントを外す

 

641行: 以下のコードを追加してください。

 

#define SERVO0_PIN 11

 

f:id:clrmemory:20180916091221p:plain

 

687行〜689行

 

687行: > #define X_PROBE_OFFSET_FROM_EXTRUDER -32

688行: > #define Y_PROBE_OFFSET_FROM_EXTRUDER -5

689行: > #define Z_PROBE_OFFSET_FROM_EXTRUDER 8

 

ノズルと「BLTouch(3DTouch)」のオフセットを設定します。

私の場合は「-32」「-5」「8」を設定しましたが、メジャーなどを使って、実際の距離を測定し値を書き換えてください。

 

- 値 + 値
手前

 

914行

 

914行: #define GRID_MAX_POINTS_X 4

 

GRID_MAX_POINTS_X 「4」のように設定すると、プラットフォーム上の「12箇所」でオートレベリングを実行します。

もう少し少なくても良いという方は「3」を設定。

 

4を設定した場合:

| x x x x |

| x x x x |

| x x x x |

 

3を設定した場合:

| x x x |

| x x x |

| x x x |

 

イメージとしてはこんな感じ。

細かく調整させるため私は「4」を設定しましたが、その分実行時に時間がかかります。

 

後からでも変えられるので、とりあえずどちらでもOKです。

 

918行〜921行

 

918行: #define LEFT_PROBE_BED_POSITION 20 に変更

919行: #define RIGHT_PROBE_BED_POSITION 240 に変更

920行: #define FRONT_PROBE_BED_POSITION 30 に変更

921行: #define BACK_PROBE_BED_POSITION 260 に変更

 

924行:

 

924行: #define MIN_PROBE_EDGE 10 に変更

 

プラットフォーム上の最大サイズに余裕を持たせるための設定だそうです。

値を10にすると、プラットフォームは「290 x 290」になります。

 

1117行〜1118行:

 

1117行: #define EEPROM_SETTINGS

コメントを外す

 

1118行: #define DISABLE_M503

コメントを外す

 

1035行:

 

1035行: #define Z_SAFE_HOMING

コメントを外す

 

Z_SAFE_HOMINGの定義を有効にすることで、「AUTO HOME」などでホームに戻る時、「0, 0」の位置がプラットフォームの中心になります。

「X_BED_SIZE / 2」「Y_BED_SIZE / 2」

 

PREHEATの設定

 

続いて、プレヒート実行時の温度を設定していきます。

CR10Sのコントローラーから「Prepare > Preheat PLA」というように実行した場合の温度ですね。

 

f:id:clrmemory:20180916135935p:plain

 

PREHEAT_X_TEMP_HOTEND xxx

Xの値が「1ならPLA」「2ならABS」用の設定になります。

 

1149行〜1151行

 

1149行: #define PREHEAT_1_TEMP_HOTEND 200

1150行: #define PREHEAT_1_TEMP_BED 70

1151行: #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255

 

プレヒートでファンの速度は不要なので「0」を設定。

使用するフィラメントの温度に合わせて温度を調整してみてください。

 

1153行〜1155行:

 

1153行: > #define PREHEAT_2_TEMP_HOTEND 240 に変更

1154行: > #define PREHEAT_2_TEMP_BED 100 に変更

1155行: > #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 に変更

 

PLA同様、Preheat ABSを実行した時の温度も設定します。

ノズル、ベッド共に「328行」で設定したMAXTEMPを超えた値は設定できないので注意してください。

 

1168行:

 

1168行: #define NOZZLE_PARK_FEATURE

コメントを外す

 

1333行:

 

1333行: #define SDSUPPORT

コメントを外す

 

1358行:

 

1358行: #define ENCODER_PULSES_PER_STEP 1

コメントを外す

 

1364行:

 

1364行: #define ENCODER_STEPS_PER_MENU_ITEM 5

コメントを外す

 

1404行:

 

1404行: #define SPEAKER

> 『コメントアウト』する

 

コメントを外すではないので注意。

 

1485行:

 

1485行: #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

コメントを外す

 

Configuration_adv.hを編集する

 

続いて、Arduinoの右側「▼」から「Configuration_adv.h」を開いてください。

 

f:id:clrmemory:20180916091318p:plain

 

これまで同様「〇〇行を〜」という形で編集していきましょう。

 

658行:

 

658行: #define BABYSTEPPING

コメントを外す

 

BABYSTEPPINGを有効にすることで、CR10Sの「Tune」からノズルの高さを調整することができます。

コメントアウトしたままでもOKですが、あとで設定する「ノズルのオフセット」や、ノズルとベッドが離れすぎた時に便利なので有効化しておいた方が良いと思います。

 

662行:

 

662行: #define BABYSTEP_MULTIPLICATOR 5

コメントを外す

 

664行:

 

664行: #define DOUBLECLICK_FOR_Z_BABYSTEPPING

コメントを外す

 

後ろの方に記述してある「// Double-click on the Status Screen for Z Babystepping.」はそのまま。

 

733行:

 

733行: #define ARC_SUPPORT

『コメントアウト』する

 

コメントを外すではないので注意

 

879行:

 

879行: #define ADVANCED_PAUSE_FEATURE

コメントを外す

 

pins_RAMPS.hを編集

 

続いて「pins_RAMPS.h」を編集します。

先ほど同様、Arduinoの「▼」から開いてください。

 

f:id:clrmemory:20180916091341p:plain

 

とは言っても、変更する値は1箇所だけ。

 

255行:

 

255行: #define FIL_RUNOUT_PIN 2 に変更

 

ライブラリを追加

 

最後にArduino「ライブラリ」や「ボード」を設定していきます。

メニューバーから「スケッチ > ライブラリをインクルード > ライブラリを管理」と進んでください。

 

f:id:clrmemory:20180916140640p:plain

 

表示されたウィンドウの「検索をフィルタ...」欄に「U8glib」と入力します。

一番下に「U8glib by oliver」というライブラリが表示されるのでインストールしましょう。

 

f:id:clrmemory:20180916140703p:plain

 

ボードを設定

 

Arduino > ツール > ボードと進み、表示された項目の中から「Arduino/genuino Mega or Mega 2560」を選択します。

 

f:id:clrmemory:20180916091718p:plain

 

同じようにして「プロセッサ」も変更しましょう。

ATmega2560(Mega2560)」を選択してください。

 

検証・コンパイル

 

最後に「検証・コンパイル(Command + R)」を実行します。

コンパイルが実行されるので数秒〜数分待ちましょう。

 

f:id:clrmemory:20180916091741p:plain

 

コンパイルが完了し、エラーが発生していなければ完了です。

加えて書きますが、今回の作業は全て自己責任でお願いします。

 

f:id:clrmemory:20180916091805p:plain

 

じっくり確認してから「スケッチ > マイコンボードに書き込む」を実行しましょう。

この時、PCと3Dプリンター(CR10S)をUSBケーブルで接続しておく必要があります。

 

f:id:clrmemory:20180916091818p:plain

 

書き込みが完了すると3Dプリンターが再起動し、UIが変わったCR10Sが起動しました。

もし途中で失敗してしまい、青い画面から変わらない状態になった場合は、もう一度ファームウェアを書き込み直せば対処できると思います。

 

オフセットを設定

 

ここまでで、オートレベリングはほぼ完成したのですが、最後に「ノズルと3DTouchのオフセット値」を調整する必要があります。

準備編で紹介した「Pronterface」を起動しましょう。

 

f:id:clrmemory:20180910114541p:plain

 

CR10Sを接続し、Pronterfaceからノズルの位置などを操作できる状態にしてください。

(X軸の+やーをクリックして動けばOK)

 

コマンドを実行

 

CR10Sのオフセット値を調整するための命令を送る「コマンド」を使います。

以下の手順で実行してください。

 

  1. PronterfaceからHOMEに移動
  2. M851 Z0を実行
  3. M500を実行
  4. M501を実行
  5. M503を実行
  6. G28 Z0を実行
  7. G1 F60 Z0を実行
  8. M211 S0を実行
  9. Pronterfaceからゆっくりノズルを下げる
  10. ノズルとベッドの間にA4普通紙が入るくらいの高さに調整
  11. 3Dプリンタの画面でZの値をチェック
  12. M851 Z-?.??(さっきチェックした値)を実行
  13. M211 S1を実行
  14. M500を実行
  15. M501を実行
  16. M503を実行
  17. G1 F60 F0を実行

 

M851 Z ?.??の値に注意してコマンドを入力していきましょう。

それぞれの命令は以下のような意味になっています。

 

コマンド 意味
M851 Z0 オフセット値を0にする(初期化)
M500 値を保存
M501 パラメータを読み込む
M503 値を有効化
G28 Z0 HOME(Z0)を実行
G1 F60 Z0 Z 0の位置に移動
M211 S0 ノズルをマイナス値に移動可能にする
M851 Z-1.00 例) オフセット値を-1.00に設定
M211 S1 マイナス値の移動を戻す(不可にする)

 

ちなみに「G28はAUTO_HOME」「G29はAUTO_LEVELING」になっています。

 

続いて、造形の開始時に「オートレベリング」を実行するようにしましょう。

スライサーアプリごとに変わってくるので注意してください。

 

今回はCuraを使った場合です。

Curaを起動し「プレファレンス > Curaを構成する」を選択します。

 

英語でCuraを使っている方は「Ultimaker Cura > Preferences...」

 

f:id:clrmemory:20180916091936p:plain

 

こんな感じのウィンドウが開きました。

プリンター」タブをクリックすると、初回起動時に作成した3Dプリンターが表示されるので、今回オートレベリングを追加した3Dプリンターを選択し「プリンターの設定」をクリックしましょう。

 

f:id:clrmemory:20180916091941p:plain

 

新たに「プリンターの設定」ウィンドウが開きました。

ウィンドウ内左下に「G-Codeの開始」という項目があると思います。

 

f:id:clrmemory:20180916091952p:plain

 

こちらは、造形開始時に行う命令を記述したもの。

造形開始前にオートレベリングを実行したいので「G28」でHOMEに戻った後、「G29(オートレベリングのコマンド)」を実行しています。

 

f:id:clrmemory:20180916092009p:plain

 

Curaから設定するのはこれだけ。

別のスライサーアプリでも基本的な書き方は同じだと思います。

 

勘違いをしていた点

 

オートレベリングの「オフセット値」を設定する際、いくつか勘違いをして間違った設定方法をしていたので参考にしてみてください。

 

HOMEの値

 

AUTO_HOMEを実行した時に、Z軸0の位置から少し上に上がります。

これはオートレベリング時の値に変化はないので、無理やり低い位置に調整する必要はありません。

 

ただし、オフセット値の最大(-20.00 ~ 20.00)を超えると設定できないので注意してください。

723行: #define Z_PROBE_OFFSET_RANGE_MIN -20

724行: #define Z_PROBE_OFFSET_RANGE_MAX 20

 

オートレベリング実行中

 

オートレベリングは、設定したポイントを順番にチェックしていくのですが、この時ノズルの高さは高くても問題ありません。

私は、オートレベリング実行時に紙が通るくらいの高さまでノズルが下がらないとダメだと思っていたので、無駄に頑張って調整しようとしていました。

 

無理に設定しようとすると「プラットフォーム」に当たったり、3DTouchが反応できないので注意してください。

 

CR10Sからオフセット値を調整

 

オフセットの値を調整するだけなら「CR10S」とPCを接続する必要はありません。

 

f:id:clrmemory:20180916092052p:plain

 

CR10Sの「Control > Motion > Z Offset」と進むことで、先ほどコマンドから設定したオフセット値を調整することが可能です。

オフセットの値を変更した場合は「Store Settings」を選択すれば保存できるようです。

 

f:id:clrmemory:20180916135906p:plain

 

もしオフセットの値が低すぎたり高すぎたりした場合は、先ほど有効にした「Babystep」を試してみてください。

造形中にノズルの高さを調整し、ちょうどいいところの値をチェックすることができるので、それを参考にOffset Zの値を設定するのも良いと思います。

 

Tuneから「Babystep Z」の値を調整すればOK

+にすればノズルが上がり、ー値にすればノズルが下がります。

 

※Babystepの値は保存されないので注意してください。

 

まとめ

 

今回紹介したように、CR10Sにオートレベリング機能を追加するためには「Marlin ファームウェア」を書き換える必要がありました。

書き換えはほとんど「コメント」を外したりが多いですが、3Dプリンターのサイズによって値が変わるものもあるので注意しましょう。

 

オフセットのコマンドはややこしいですが、意味がわかると簡単に使いこなせるのでぜひチェックしてみてください。

 

www.clrmemory.com

 

ではまた。

新着記事