4MAX PRO2.0のファームウェア作成

縁があって Anycubic の 4MAX PRO2.0 を追加購入しました。
Amazonのセールで大幅値引きしていたので衝動買いでもあるのですが。

さて、プリンターが届いてテストプリントを行いましたがやっぱり印刷品質はイマイチ。まぁ分かってはいました。今回のプリンターの選定の理由は「Klipperなどの高性能制御について行けるHardware」+「ケース」+「安価」でした。

MEGA-Sもそうですが 基盤にTRIGORILLAを使用しているプリンターでストック状態で綺麗に印刷出来る商品は無いのではないのか?と思っています。

画像1

こちらはほぼストック状態の 4MAX PRO2.0 の印刷品質です。(個体差があるかもしれませんが。)

ネットに出ているMEGA-Sでの印刷物も、なんかボソボソしていたりぶつぶつしていたりイマイチなものが多いですよね。

IMG_2160 のコピー

こちらは MEGA-S でMarlin2.0.9.1ファームウェアを調整して印刷したものです。他のプリンターのようにしっかりと柱の部位も印刷出来ていますし「表面のテリ」もしっかり出ています。調子よく動いていれば 8BitCPUでも32BitCPU機と変わらない品質で普通に印刷出来るものなんですよね。

不調のTRIGOLLIRA は柱の部分が特に印刷が出来ないみたいです。
色々ある例のE軸の送り出し量を合わせた所で、今度は表面のブツブツに悩まされる事に成ります。


という事で 4MAX PRO 用にファームウェアを作りたいと思います。


ベースにしたファームウェアはこちら。MEGA-S用の AnycubicTFT が使えるもの。Marlinは最終の1.1.9になっています。


参考にしたファームウェア。GithubでAnycubicが提供しているもの。Versionは1.1.0RC8になっています。


変更点を挙げていきます。


pins_TRIGORILLA_14.h

#define LED_PIN            45 //Heater 1 13  
#define Z_MIN_PROBE_PIN    2 //32
#define FIL_RUNOUT_PIN	   33 //19
#define Y_MIN_PIN          19 //42
#define PS_ON_PIN      21 

MEGA-Sとはピン配置が若干変わっているので修正

Configuration.h

#define TEMP_SENSOR_0 11 //5
#define TEMP_SENSOR_BED 5 //1


#define X_DRIVER_TYPE  TMC2208_STANDALONE 
#define Y_DRIVER_TYPE  TMC2208_STANDALONE 

 #define  DEFAULT_Kp 15.96 //22.2 rc8より転記
 #define  DEFAULT_Ki 0.41 //3.5
 #define  DEFAULT_Kd 58.49 //154

#define DEFAULT_AXIS_STEPS_PER_UNIT   {  6.25*16,5*16, 50*16, 856.50 } //{ 80, 80, 400, 92.6 }

#define DEFAULT_ACCELERATION          700 //3000     X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  700 //3000     E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   700 //3000     X, Y, Z acceleration for travel (non printing) moves

#define DEFAULT_XJERK                 8.2 //10.0
#define DEFAULT_YJERK                 8.2 //10.0
#define DEFAULT_ZJERK                 0.2 // 0.4

#define PROBE_MANUALLY
//#define FIX_MOUNTED_PROBE

#define INVERT_X_DIR false //true
#define INVERT_Y_DIR true //false

//#define AUTO_BED_LEVELING_BILINEAR

//#define M100_FREE_MEMORY_WATCHER  // Add M100 (Free Memory Watcher) to debug memory usage

#define FAN_SOFT_PWM

小修整

Configuration_adv.h


//#define SHOW_TEMP_ADC_VALUES

#define CONTROLLERFAN_SECS 4 //60          Duration in seconds for the fan to run after all motors are disabled

#define CASE_LIGHT_ENABLE
 #define CASE_LIGHT_PIN LED_PIN //4    

//#define Z_DUAL_STEPPER_DRIVERS

#define DISABLE_INACTIVE_Z true //false

//#define LIN_ADVANCE

//#define ARC_SUPPORT    

#define MIN_STEPS_PER_SEGMENT 1  //6

singleZ軸 とか LEDの使用とか小修整


AnycubicTFT.cpp

        case 30// A30 assist leveling, the original function was canceled
               if(CodeSeen('G')) {
#ifdef ANYCUBIC_TFT_DEBUG
             SERIAL_ECHOLNPGM("TFT Entering level menue...");
#endif
           } else if(CodeSeen('H')) {
#ifdef ANYCUBIC_TFT_DEBUG
             SERIAL_ECHOLNPGM("TFT Leveling started and movint to front left...");
#endif
             enqueue_and_echo_commands_P(PSTR("G91\nG1 Z10 F240\nG90\nG1 X40 Y40 F6000\nG1 Z0 F240"));
           } else if(CodeSeen('I')) {
#ifdef ANYCUBIC_TFT_DEBUG
             SERIAL_ECHOLNPGM("TFT Level checkpoint front right...");
#endif
             enqueue_and_echo_commands_P(PSTR("G1 Z5 F240\nG1 X230 Y40 F6000\nG1 Z0 F240"));
           } else if(CodeSeen('J')) {
#ifdef ANYCUBIC_TFT_DEBUG
             SERIAL_ECHOLNPGM("TFT Level checkpoint back right...");
#endif
             enqueue_and_echo_commands_P(PSTR("G1 Z5 F240\nG1 X230 Y230 F6000\nG1 Z0 F240"));
           } else if(CodeSeen('K')) {
#ifdef ANYCUBIC_TFT_DEBUG
             SERIAL_ECHOLNPGM("TFT Level checkpoint back right...");
#endif
             enqueue_and_echo_commands_P(PSTR("G1 Z5 F240\nG1 X20 Y230 F6000\nG1 Z0 F240")); 
             
             
       case 42// //A42 LED ON
          {
           enqueue_and_echo_commands_P(PSTR("M42 P45 S255"));
          }
           break;

元々のファームウェアが間違ってる?水平出しのコマンド群の修正と、LEDのON-OFFが効かなかったので、とりあえずONだけ記述。(コマンド記述しただけ。)

以上。MEGA-S と 4MAX_PRO は同じ基盤なので小変更でファームウェアの完成です。これだけで特段問題なく使用する事が出来るファームウェアが作成できました。


印刷品質はと言いますと、一番初めの写真の左側。途中で印刷を終了しているのがこの作成したファームウェアで印刷した物になっています。
結果はE軸の吐出量の調整も行ったのもあってブツブツが出てしまいイマイチでした。Marlin2.0x系には通用した調子が良くなるオマジナイも通用しないみたいなので、もしかしたらTRIGORILLAと marlin1.1x系の相性も良くないのかも知れないと思っています。
(Marlin2.0x系はUBLにバグがある様なので1.1x系に乗り換えようと思っていた矢先なのでガッカリです。)


ここから先は少し勿体ぶりますが、原因が見えた様な気がしています。
このファームウェアを作成する時に、すでにMEGA-Sの時に見つけたTRIGOLLIRAの癖はHardware的に回避するようにしましたが、別にもう一つSoftwear的な癖があるようです。

これはMarlinの癖かもしれませんが、32BitCPUでも同じ症状が出る事がある「ある事」があります。

Configuration.h

//#define ANYCUBIC_TFT_MODEL
//#define ANYCUBIC_TFT_DEBUG

それは、この2行をコメントアウトする事で印刷品質が上がるかもしれません。


で、印刷してみた結果がこちら。

画像3

印刷した物を追加しました。ブツブツも消えてボソボソも無く、だいぶ仕上がってきました。(写真左)G-CODEファイルは全く同じものを使用しています。

画像4


追記
今日、ファイルが添付できる事に気が付きました。そのファームウェアです。

E軸のFEEDRATEが一般と違いますので、M92でお使いの環境に合わせてからご使用ください。


AnycubicTFTはTRIGORILLAとの通信にSerial通信を利用していますが、PCとの通信を行うVCP用の1つのチャンネルとは別にもう一つのチャンネルを用意して使用する事に成ります。これが不調の原因だと推測します。
32bitCUPを使用しているMarlin2.0x系のプリンターでもWi-Fiを取り付けたとたんにE軸が不調になったりするのを経験したことがあります。そのWi-Fiも内部的にはSerial通信になりますのでAnycubicTFTと等価という事が出来ます。Marlinは2個目のSerialPortのマネージメントが得意では無いと言えそうです。

TFTの宣言をしない事により2つ目のSerialが宣言されなくなる

Serial通信による割り込み処理の発生が無くなる

印刷が安定する。

これがTRIGORILLAを使用しているプリンターでストック状態で綺麗に印刷出来る商品は無いのではないのか? の理由になります。

※個人の見解です。


AVRを扱っている電子工作系の人たちが3Dプリンターを扱い始めれば、この位の不具合はチョチョイのチョイで直してしまうのかも知れませんが、浅く広くの私には残念ながら修正は難しいです。

写真ではうまく映っていませんがまだ柱部分に痩せがみられるので、まだ完調では無いのか?印刷条件が甘いのかも?しれません。

MEGA-Sのレビューで大きなものを印刷する人ほど良いレビューになってるように感じますが、吐出量の変化が少ない印刷をしているのかそうで無いのかで評価が分かれる事に成るのかと思います。


Marlin1.1x系は2.0x系よりも8BitCPUと相性がいいのかと思いましたが必ずしもそうでは無い様なので、次回から私のtunedMEGA-Sと同等の印刷品質を目指して、Marlin2.0x系で4MAXpro2.0のファームウェアを作成してみたいと思います。



thingiverseを見てもMEGA-SのTFTを12864や2004に乗せ換えている人達が多くいますね。今まで操作性に我慢がならずに交換しているのかと思っていましたが、印刷品質の問題もあって交換が成されていたのかも知れませんね。


この記事が気に入ったらサポートをしてみませんか?