====== 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を実行して各ポイントごと計測して保管する必要がある。
個人的には恩恵無いので、無効にした。
[[https://www.thingiverse.com/thing:4104593|Marlin 2.0.2 & 2.0.1 for Anycubic 4MAX pro by nestor75 - Thingiverse]]
==== Pratformio.ini ====
変更不要
==== Configuration.h ====
// #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
==== Configuration_adv.h ====
// #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%にする必要があるらしい。[[https://github.com/davidramiro/Marlin-Ai3M/wiki/Calibration#:~:text=If%20you%20use%20the%20stock%20cooler%2C%20I%20generally%20recommend%20running%20it%20at%2075%25%20(M106%20S191)%20because%20of%20the%2012V%20mod.%20Remember%20to%20also%20limit%20it%20in%20your%20slicer.|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