ANYCUBIC MEGA-S用の ちゃんと使えるファームウェアをビルドする① ちゃんとちゃんとのヘッダーファイルの巻
何となくファームウェアのビルドを紹介してきましたが、
ちゃんとちゃんとの MEGA-S って事で? ここからが本番!
ちゃんと使えるファームウェアを作っていきたいと思います。
Configration.h の基本的な間違いの修正
これは以前にも書きましたね。
間違いの場所を具体的に書くと、
誤 825 #define Z_MIN_ENDSTOP_INVERTING false
正 825 #define Z_MIN_ENDSTOP_INVERTING True
これでベースは完成。
ホットエンドのPID温度制御のパラメーターを AnycubicのHPで配布されている1.1.5 の値に入れ替える。
606 #define DEFAULT_Kp 20.02
607 #define DEFAULT_Ki 0.91
608 #define DEFAULT_Kd 80.76
何故1.1.5の値を持ってくるかというと、2.0.xのConfigration.hのデフォルトの値は温度の安定性がとても悪く、15℃以上アンダーシュートする事もあるのでインターロックが掛かり印刷が途中で止まってしまうためです。オートチューニングの機能を使って調整もできるのですが、オートチューニングもフィラメントを流しながら行うわけでもないので精度が良くないみたいです。
経験的に1.1.5の値がビッタリ安定するのでBestです。
E軸 エクストルーダーのステップ数を修正する
例えばしっかりしていると思っている HPで配布している 1.1.5ファームウェアを入れて、コマンドで
G92 E0 E軸のカウントを0に設定する
G1 E100 E軸を100mm 押し出す
これを実行しても9cmちょろちょろしかフィラメントが押し出されません。これでは印刷物がやせてOutputされてしまいます。
10cmぴったりが送り出される正しい値 に修正します。
927 #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 409.4 }
ノギスや定規でエクストルーダーから押し出されたフィラメントを測定して見て下さい。ぴったり10cm出てくるはずです。
最近のMARLINの目玉は3つ
最近のMARLINでアップデートされているのは、
●Junction Deviation Factor
●linear advance
●S_CURVE_ACCELERATION
※最近buildを始めたので間違ってたらごめんね
Junction Deviation Factor の動きを先ずはMasterしよう。
●Junction Deviation Factor はデフォルトでONになっていますので手を加える必要はありません。
旧来の JARKの値に変わり 「JUNCTION_DEVIATION_MM」の値を使用します。 デフォルトでは
JUNCTION_DEVIATION_MM 0.013
で設定されています。 これは後でコマンドを通しても調整が出来ます。
旧来のJARKの値は CURA 4.10.0 では 「内壁」「外壁」「インフィル」「移動」などで個別に設定が可能になっていますが、追々 このJUNCTION_DEVIATION_MM にとって代わるものと思いますので先ず調整するとどのような動きになるのかを会得する必要があります。
この動きの上に linear advance の E軸のジャーク(ノズル圧力)の計算から来るXY軸の動きがのっかる形になります。(maybe. )
JERKの代わる基本の設定なので、調整をしっかりマスターしましょうね。
取り合えず linear advance は OFF
印刷の対象に対して得手不得手が有るみたいです。あまりにいっぱいの新規機能を入れても何が何だか分からなくなってしまうので、動作確認を目的に取り合えずOFFにしておきます。楽しみは残しておきましょう。(まぁONでもいいけどね)
※ Configration_adv.h にあります。
1874 //#define LIN_ADVANCE
S_CURVE_ACCELERATION もOFFしておきましょう
1014 //#define S_CURVE_ACCELERATION
あまり印刷品質への寄与は無いのかな? Junction Deviation Factor と linear advance のセッティングが済んでから ON-OFF で具合を確認しましょう。 (まぁONでもいいけどね)
重要性が増した「加速度」の調整
Junction Deviation Factor が良い意味で良い動きをするので(本当好き)、加速度の重要性が増した感があります。しっかりと調整しておきましょう。
私の推奨は 「300」 とだいぶ低い値となっております。移動は少し増して「400」にしておきましょうかね。 急いだって印刷時間はそんなに変わりませんから控えめに。
962 #define DEFAULT_ACCELERATION 300
964 #define DEFAULT_TRAVEL_ACCELERATION 400
最大加速度も設定しておきましょう。加速度のリミッターの値ですね。
947 #define DEFAULT_MAX_ACCELERATION { 500, 500, 60, 10000 }
ついでにと言っては何ですが、最大印刷速度の設定も。
934 #define DEFAULT_MAX_FEEDRATE { 100, 100, 5, 60 }
取り合えず大まかにと言うか アウトラインはこんな感じで構成すれば基本のファームウェアの完成です。あとは印刷が普通に出来るようになったのを確認してから、「linear advance」を試してみたり「S_CURVE_ACCELERATION」をONにして水の入ったコップをX軸に固定して印刷を実行して見たり。。。 調整を試みてみましょう。
最後にプリンターに名前を付けられるので変更しておきましょう。
169 #define CUSTOM_MACHINE_NAME "Custom! i3"
では早速 ビルドして書き込んで見ましょう。
バッチリでしょ?
PCでターミナルを起動してUSB接続をするとマシンの概要をechoしてきます。
Connecting...
start
Printer is now online.
Marlin bugfix-2.0.x
echo: Last Updated: 2021-07-11 | Author: (none, default config)
echo:Compiled: Jul 12 2021
echo: Free Memory: 2456 PlannerBufferBytes: 1200
//action:notification Custom! i3 Ready.
echo:V83 stored settings retrieved (716 bytes; crc 39008)
//action:prompt_end
echo:SD card ok
バッチリ Custom! i3 に変わっています。
続いて M503 を送ってEEPROMの内容を見てみます。
SENDING:M503
echo: G21 ; Units in mm (mm)
echo: M149 C ; Units in Celsius
echo:; Filament settings: Disabled
echo: M200 S0 D1.75
echo:; Steps per unit:
echo: M92 X80.00 Y80.00 Z400.00 E409.36
echo:; Maximum feedrates (units/s):
echo: M203 X300.00 Y300.00 Z5.00 E60.00
echo:; Maximum Acceleration (units/s2):
echo: M201 X500.00 Y500.00 Z60.00 E10000.00
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P200.00 R3000.00 T450.00
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>
echo: M205 B20000.00 S0.00 T0.00 J0.01
echo:; Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:; Mesh Bed Leveling:
echo: M420 S0 Z10.00
echo:; Endstop adjustment:
echo: M666 Z0.00
echo:; Material heatup parameters:
echo: M145 S0 H200.00 B50.00 F0
echo: M145 S1 H235.00 B85.00 F0
echo:; PID settings:
echo: M301 P20.02 I0.91 D80.76
echo: M304 P251.78 I49.57 D319.73
echo:; Filament load/unload lengths:
echo: M603 L538.00 U555.00
echo:; Filament runout sensor:
echo: M412 S1
EEPROMに格納されたプリンターの設定値が返ってきましたが太字の所がファームウェアで設定した値と違う設定が入っています。これは前に設定したEEPROMの設定値がそのまま残ってしまっているためで、ファームウェアの設定値を読み込むには M502-工場出荷時のリセット を実行します。
SENDING:M502
echo:Hardcoded Default Settings Loaded
SENDING:M503
echo: G21 ; Units in mm (mm)
echo: M149 C ; Units in Celsius
echo:; Filament settings: Disabled
echo: M200 S0 D1.75
echo:; Steps per unit:
echo: M92 X80.00 Y80.00 Z400.00 E409.40
echo:; Maximum feedrates (units/s):
echo: M203 X100.00 Y100.00 Z5.00 E60.00
echo:; Maximum Acceleration (units/s2):
echo: M201 X500.00 Y500.00 Z60.00 E10000.00
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P300.00 R3000.00 T400.00
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>
echo: M205 B20000.00 S0.00 T0.00 J0.01
echo:; Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:; Mesh Bed Leveling:
echo: M420 S0 Z10.00
echo:; Endstop adjustment:
echo: M666 Z0.00
echo:; Material heatup parameters:
echo: M145 S0 H215.00 B65.00 F0
echo: M145 S1 H235.00 B85.00 F0
echo:; PID settings:
echo: M301 P20.02 I0.91 D80.76
echo: M304 P251.78 I49.57 D319.73
echo:; Filament load/unload lengths:
echo: M603 L538.00 U555.00
echo:; Filament runout sensor:
echo: M412 S1
設定値がファームウェアで設定した値に変更されましたね。
そうしたら M500-設定を保存 をして終了です。
SENDING:M500
echo:Settings Stored (716 bytes; crc 54866)
//action:notification Settings Stored
ファームウェアの変更の都度行っておいた方が間違いがありません。
些細な事ですが、MARLINは EEPROMの書き換え寿命を考慮して、差分だけEEPROMの書き換えを実行します。
洗練されてますね。 MARLIN。
ターミナルはpronterfaceを使っています。