4Max Pro 2.0 Marlin Firmware Changes

結局動いていないので、今後参考用として公開している。トップページにある標準ファームウェアを使用中。

20210915
Ender-3ではSKR Mini E3に換装していた。制御基板を32bitボードに換装する事で得られる恩恵は語りつくせないが、その1つに安定動作がある。
Atmega2560を使ったRAMPS互換の8bitボードの場合、Cura 4.xが出力するGcodeでは、印刷中、特に理由もなく加熱を止めたりHaltしたりする。
Gcodeを2度実施すると2度同じところで止まるので、ソフトウェアの不具合だと考えられる。
Curaは印刷品質を高めるための更新が頻繁にあり、最新版を使えない影響は計り知れない。

久しくそれを忘れていたけど、4Max Proはそれを思い出させてくれた。そう、これは制御基板がTrigorillaだった。
まさか2021年にもなって、この不具合に悩まされるとは思わなかった。時代遅れにもほどがあるだろう。
まずは最新のMarlin Firmwareに変更して様子を見たいと思う。望み薄だが。

標準仕様のAnycubic 4Max Pro 2.0搭載しているTrigorillaボードのファームウェアを最新のMarlin 2.xシリーズで作製する際に、必要な変更箇所一覧を記録として残す。
下記のNESTOR氏の設定を参考に変更している。NESTOR氏のFirmwareをそのまま使うと、2mmほど宙を浮いて印刷開始する。旧式はGlassplate無しが原点?
追記:確認するとPROBE_MANUALLYが有効になっていた。なので、予め手動でMesh Bed Leveringを実行して各ポイントごと計測して保管する必要がある。
個人的には恩恵無いので、無効にした。
Marlin 2.0.2 & 2.0.1 for Anycubic 4MAX pro by nestor75 - Thingiverse

変更不要

// #define MOTHERBOARD BOARD_RAMPS_14_EFB
#define MOTHERBOARD BOARD_TRIGORILLA_14
 
// #define PSU_ACTIVE_STATE LOW      // Set 'LOW' for ATX, 'HIGH' for X-Box
#define PSU_ACTIVE_STATE HIGH      // Set 'LOW' for ATX, 'HIGH' for X-Box
// #define TEMP_SENSOR_0 1
#define TEMP_SENSOR_0 11
 
// #define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_BED 11
 
// #define HEATER_0_MAXTEMP 275
#define HEATER_0_MAXTEMP 265
 
// #define BED_MAXTEMP      150
#define BED_MAXTEMP      120
// #define PID_K1 0.95      // Smoothing factor within any PID loop
#define PID_K1 0.8      // Smoothing factor within any PID loop
 
//  #if ENABLED(PID_PARAMS_PER_HOTEND)
//    // Specify between 1 and HOTENDS values per array.
//    // If fewer than EXTRUDER values are provided, the last element will be repeated.
//    #define DEFAULT_Kp_LIST {  22.20,  22.20 }
//    #define DEFAULT_Ki_LIST {   1.08,   1.08 }
//    #define DEFAULT_Kd_LIST { 114.00, 114.00 }
//  #else
//    #define DEFAULT_Kp  22.20
//    #define DEFAULT_Ki   1.08
//    #define DEFAULT_Kd 114.00
 
  #if ENABLED(PID_PARAMS_PER_HOTEND)
    // Specify between 1 and HOTENDS values per array.
    // If fewer than EXTRUDER values are provided, the last element will be repeated.
    #define DEFAULT_Kp_LIST {  12.05,  12.05 }
    #define DEFAULT_Ki_LIST {   0.63,   0.63 }
    #define DEFAULT_Kd_LIST {  57.77,  57.77 }
  #else
    #define DEFAULT_Kp  12.05
    #define DEFAULT_Ki   0.63
    #define DEFAULT_Kd  57.77

注:ExtruderのPID値は私の個体の実測値。Stock Firmwareの値はKp:15.11 Ki:0.94 Kd:60.97だった。

//#define PIDTEMPBED
#define PIDTEMPBED
 
//  #define DEFAULT_bedKp 10.00
//  #define DEFAULT_bedKi .023
//  #define DEFAULT_bedKd 305.4
  #define DEFAULT_bedKp 60.50
  #define DEFAULT_bedKi 7.31
  #define DEFAULT_bedKd 333.71

注:HeatBedのPID値は私の個体の実測値。Stock Firmwareの値はKp:439.45 Ki:73.49 Kd:656.97だった。

#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber
// #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber //Disable
// #define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
// #define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
// #define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
 
// #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
// #define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
// #define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
 
// #define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.
// #define X_DRIVER_TYPE  A4988
// #define Y_DRIVER_TYPE  A4988
#define X_DRIVER_TYPE  A4988
#define Y_DRIVER_TYPE  A4988
 
// #define ENDSTOP_NOISE_THRESHOLD 2
#define ENDSTOP_NOISE_THRESHOLD 2
// #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 500 }
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 100.06, 80.06, 800, 392.16 }
 
// #define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }
#define DEFAULT_MAX_FEEDRATE          { 150, 150, 20, 80 }
 
// #define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 10000 }
#define DEFAULT_MAX_ACCELERATION      { 700, 700, 70, 15000 }
 
//   #define MAX_ACCEL_EDIT_VALUES       { 6000, 6000, 200, 20000 } // ...or, set your own edit limits
  #define MAX_ACCEL_EDIT_VALUES       { 700, 700, 70, 15000 } // ...or, set your own edit limits
 
// #define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration for printing moves
// #define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration for retracts
// #define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration for travel (non printing) moves
#define DEFAULT_ACCELERATION          700    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  700    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   700    // X, Y, Z acceleration for travel (non printing) moves
 
//  #define DEFAULT_XJERK 10.0
//  #define DEFAULT_YJERK 10.0
//  #define DEFAULT_ZJERK  0.3
  #define DEFAULT_XJERK  8.2
  #define DEFAULT_YJERK  8.2
  #define DEFAULT_ZJERK  0.2
 
//  #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
  #define JUNCTION_DEVIATION_MM 0.022 // (mm) Distance from real junction edge

注:Stock FirmwareのE-steps値はX100.06 Y80.06 Z800.00 E392.16で同じだった。

// #define INVERT_E0_DIR false
#define INVERT_E0_DIR true
 
// #define X_BED_SIZE 200
// #define Y_BED_SIZE 200
#define X_BED_SIZE 273
#define Y_BED_SIZE 205
 
// #define X_MIN_POS 0
#define X_MIN_POS -8
 
// #define Z_MAX_POS 200
#define Z_MAX_POS 205

注:Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PINを有効のままとして、PROBE_MANUALLYは有効にしなかった。
注:Z_MIN_POS -1.43としていたが、0のままとした。
注:MESH_BED_LEVELINGは無効のままとした。

// #define EEPROM_SETTINGS
#define EEPROM_SETTINGS
 
// #define PREHEAT_2_TEMP_BED    110
#define PREHEAT_2_TEMP_BED    100

注:ABSプリセット値を変更しているが、LCD側が持っているプリセット値が適用されるので、意味は無い。

// #define SDSUPPORT
#define SDSUPPORT
 
// #define SPEAKER
#define SPEAKER
 
// #define ANYCUBIC_LCD_I3MEGA
#define ANYCUBIC_LCD_I3MEGA
 
// #define ANYCUBIC_LCD_DEBUG
#define ANYCUBIC_LCD_DEBUG

注:ANYCUBIC_TFT35という設定値があるが、Trigorillaではビルドできないらしい。

// #define FAN_SOFT_PWM
#define FAN_SOFT_PWM
 
// #define SOFT_PWM_SCALE 0
#define SOFT_PWM_SCALE 2

注:最終行に、下記2行を追加する。これがいくつかのライブラリを入れる必要があるが、そのうちコア部のファイルは古いバージョンに上書きすることになるので、ソースコードを解析して移植しなければならない。流石に面倒なので止めた。

#define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
#define ANYCUBIC_TFT_DEBUG
//  #define THERMAL_PROTECTION_PERIOD 40        // Seconds
//  #define THERMAL_PROTECTION_HYSTERESIS 4     // Degrees Celsius
  #define THERMAL_PROTECTION_PERIOD 60        // Seconds
  #define THERMAL_PROTECTION_HYSTERESIS 20     // Degrees Celsius
 
//  #define WATCH_TEMP_PERIOD  20               // Seconds
//  #define WATCH_TEMP_INCREASE 2               // Degrees Celsius
  #define WATCH_TEMP_PERIOD  60               // Seconds
  #define WATCH_TEMP_INCREASE 3               // Degrees Celsius
 
//  #define THERMAL_PROTECTION_BED_PERIOD        20 // Seconds
//  #define THERMAL_PROTECTION_BED_HYSTERESIS     2 // Degrees Celsius
  #define THERMAL_PROTECTION_BED_PERIOD        80 // Seconds
  #define THERMAL_PROTECTION_BED_HYSTERESIS     8 // Degrees Celsius

注:私はStick Glueを使い、加熱して水清掃するから緩く設定している。必要なければTHERMAL_PROTECTION_BED_PERIOD 20, THERMAL_PROTECTION_BED_HYSTERESIS 5にする。

// #define E0_AUTO_FAN_PIN -1
#define E0_AUTO_FAN_PIN FAN2_PIN
 
// #define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed
#define EXTRUDER_AUTO_FAN_SPEED 191   // 255 == full speed

注:Stock PartsのExtruderのFAN SPEEDは75%にする必要があるらしい。Detail

// #define CASE_LIGHT_ENABLE
#define CASE_LIGHT_ENABLE
 
//   #define CASE_LIGHT_PIN 4                  // Override the default pin if needed
  #define CASE_LIGHT_PIN 45                  // Override the default pin if needed
 
//  #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105   // Set default power-up brightness (0-255, requires PWM pin)
  #define CASE_LIGHT_DEFAULT_BRIGHTNESS 255   // Set default power-up brightness (0-255, requires PWM pin)

注:Mesh Bed leveling未使用のため、CALIBRATION_PINは無効のまま。

// #define ADAPTIVE_STEP_SMOOTHING
#define ADAPTIVE_STEP_SMOOTHING
// #define TX_BUFFER_SIZE 0
#define TX_BUFFER_SIZE 4
 
// #define RX_BUFFER_SIZE 1024
#define RX_BUFFER_SIZE 256
 
// #define EMERGENCY_PARSER
#define EMERGENCY_PARSER
  • memo/3dp/4maxpromarlin.txt
  • 最終更新: 2025/10/18 20:13
  • by htmikan