|
30 | 30 | * Basic settings can be found in Configuration.h
|
31 | 31 | *
|
32 | 32 | */
|
33 |
| -#ifndef CONFIGURATION_ADV_H |
34 |
| -#define CONFIGURATION_ADV_H |
35 |
| -#define CONFIGURATION_ADV_H_VERSION 010109 |
| 33 | +#define CONFIGURATION_ADV_H_VERSION 02010300 |
36 | 34 |
|
37 | 35 | // @section temperature
|
38 | 36 |
|
|
78 | 76 | #define THERMAL_PROTECTION_PERIOD 40 // Seconds
|
79 | 77 | #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius
|
80 | 78 |
|
| 79 | + //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops |
| 80 | + #if ENABLED(ADAPTIVE_FAN_SLOWING) && EITHER(MPCTEMP, PIDTEMP) |
| 81 | + //#define TEMP_TUNING_MAINTAIN_FAN // Don't slow fan speed during M303 or M306 T |
| 82 | + #endif |
| 83 | + |
81 | 84 | /**
|
82 | 85 | * Whenever an M104, M109, or M303 increases the target temperature, the
|
83 | 86 | * firmware will wait for the WATCH_TEMP_PERIOD to expire. If the temperature
|
|
109 | 112 | #endif
|
110 | 113 |
|
111 | 114 | #if ENABLED(PIDTEMP)
|
112 |
| - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. |
113 |
| - // if Kc is chosen well, the additional required power due to increased melting should be compensated. |
| 115 | + // Add an additional term to the heater power, proportional to the extrusion speed. |
| 116 | + // A well-chosen Kc value should add just enough power to melt the increased material volume. |
114 | 117 | //#define PID_EXTRUSION_SCALING
|
115 | 118 | #if ENABLED(PID_EXTRUSION_SCALING)
|
116 | 119 | #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
|
117 | 120 | #define LPQ_MAX_LEN 50
|
118 | 121 | #endif
|
| 122 | + |
| 123 | + /** |
| 124 | + * Add an additional term to the heater power, proportional to the fan speed. |
| 125 | + * A well-chosen Kf value should add just enough power to compensate for power-loss from the cooling fan. |
| 126 | + * You can either just add a constant compensation with the DEFAULT_Kf value |
| 127 | + * or follow the instruction below to get speed-dependent compensation. |
| 128 | + * |
| 129 | + * Constant compensation (use only with fanspeeds of 0% and 100%) |
| 130 | + * --------------------------------------------------------------------- |
| 131 | + * A good starting point for the Kf-value comes from the calculation: |
| 132 | + * kf = (power_fan * eff_fan) / power_heater * 255 |
| 133 | + * where eff_fan is between 0.0 and 1.0, based on fan-efficiency and airflow to the nozzle / heater. |
| 134 | + * |
| 135 | + * Example: |
| 136 | + * Heater: 40W, Fan: 0.1A * 24V = 2.4W, eff_fan = 0.8 |
| 137 | + * Kf = (2.4W * 0.8) / 40W * 255 = 12.24 |
| 138 | + * |
| 139 | + * Fan-speed dependent compensation |
| 140 | + * -------------------------------- |
| 141 | + * 1. To find a good Kf value, set the hotend temperature, wait for it to settle, and enable the fan (100%). |
| 142 | + * Make sure PID_FAN_SCALING_LIN_FACTOR is 0 and PID_FAN_SCALING_ALTERNATIVE_DEFINITION is not enabled. |
| 143 | + * If you see the temperature drop repeat the test, increasing the Kf value slowly, until the temperature |
| 144 | + * drop goes away. If the temperature overshoots after enabling the fan, the Kf value is too big. |
| 145 | + * 2. Note the Kf-value for fan-speed at 100% |
| 146 | + * 3. Determine a good value for PID_FAN_SCALING_MIN_SPEED, which is around the speed, where the fan starts moving. |
| 147 | + * 4. Repeat step 1. and 2. for this fan speed. |
| 148 | + * 5. Enable PID_FAN_SCALING_ALTERNATIVE_DEFINITION and enter the two identified Kf-values in |
| 149 | + * PID_FAN_SCALING_AT_FULL_SPEED and PID_FAN_SCALING_AT_MIN_SPEED. Enter the minimum speed in PID_FAN_SCALING_MIN_SPEED |
| 150 | + */ |
| 151 | + //#define PID_FAN_SCALING |
| 152 | + #if ENABLED(PID_FAN_SCALING) |
| 153 | + //#define PID_FAN_SCALING_ALTERNATIVE_DEFINITION |
| 154 | + #if ENABLED(PID_FAN_SCALING_ALTERNATIVE_DEFINITION) |
| 155 | + // The alternative definition is used for an easier configuration. |
| 156 | + // Just figure out Kf at fullspeed (255) and PID_FAN_SCALING_MIN_SPEED. |
| 157 | + // DEFAULT_Kf and PID_FAN_SCALING_LIN_FACTOR are calculated accordingly. |
| 158 | + |
| 159 | + #define PID_FAN_SCALING_AT_FULL_SPEED 13.0 //=PID_FAN_SCALING_LIN_FACTOR*255+DEFAULT_Kf |
| 160 | + #define PID_FAN_SCALING_AT_MIN_SPEED 6.0 //=PID_FAN_SCALING_LIN_FACTOR*PID_FAN_SCALING_MIN_SPEED+DEFAULT_Kf |
| 161 | + #define PID_FAN_SCALING_MIN_SPEED 10.0 // Minimum fan speed at which to enable PID_FAN_SCALING |
| 162 | + |
| 163 | + #define DEFAULT_Kf (255.0*PID_FAN_SCALING_AT_MIN_SPEED-PID_FAN_SCALING_AT_FULL_SPEED*PID_FAN_SCALING_MIN_SPEED)/(255.0-PID_FAN_SCALING_MIN_SPEED) |
| 164 | + #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0 |
| 165 | + |
| 166 | + #else |
| 167 | + #define PID_FAN_SCALING_LIN_FACTOR (0) // Power loss due to cooling = Kf * (fan_speed) |
| 168 | + #define DEFAULT_Kf 10 // A constant value added to the PID-tuner |
| 169 | + #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING |
| 170 | + #endif |
| 171 | + #endif |
119 | 172 | #endif
|
120 | 173 |
|
121 | 174 | /**
|
|
376 | 429 | // Default x offset in duplication mode (typically set to half print bed width)
|
377 | 430 | #define DEFAULT_DUPLICATION_X_OFFSET 100
|
378 | 431 |
|
379 |
| -#endif // DUAL_X_CARRIAGE |
| 432 | + // Default action to execute following M605 mode change commands. Typically G28X to apply new mode. |
| 433 | + //#define EVENT_GCODE_IDEX_AFTER_MODECHANGE "G28X" |
| 434 | +#endif |
| 435 | + |
| 436 | +/** |
| 437 | + * Multi-Stepper / Multi-Endstop |
| 438 | + * |
| 439 | + * When X2_DRIVER_TYPE is defined, this indicates that the X and X2 motors work in tandem. |
| 440 | + * The following explanations for X also apply to Y and Z multi-stepper setups. |
| 441 | + * Endstop offsets may be changed by 'M666 X<offset> Y<offset> Z<offset>' and stored to EEPROM. |
| 442 | + * |
| 443 | + * - Enable INVERT_X2_VS_X_DIR if the X2 motor requires an opposite DIR signal from X. |
| 444 | + * |
| 445 | + * - Enable X_DUAL_ENDSTOPS if the second motor has its own endstop, with adjustable offset. |
| 446 | + * |
| 447 | + * - Extra endstops are included in the output of 'M119'. |
| 448 | + * |
| 449 | + * - Set X_DUAL_ENDSTOP_ADJUSTMENT to the known error in the X2 endstop. |
| 450 | + * Applied to the X2 motor on 'G28' / 'G28 X'. |
| 451 | + * Get the offset by homing X and measuring the error. |
| 452 | + * Also set with 'M666 X<offset>' and stored to EEPROM with 'M500'. |
| 453 | + * |
| 454 | + * - Use X2_USE_ENDSTOP to set the endstop plug by name. (_XMIN_, _XMAX_, _YMIN_, _YMAX_, _ZMIN_, _ZMAX_) |
| 455 | + */ |
| 456 | +#if HAS_X2_STEPPER && DISABLED(DUAL_X_CARRIAGE) |
| 457 | + //#define INVERT_X2_VS_X_DIR // X2 direction signal is the opposite of X |
| 458 | + //#define X_DUAL_ENDSTOPS // X2 has its own endstop |
| 459 | + #if ENABLED(X_DUAL_ENDSTOPS) |
| 460 | + #define X2_USE_ENDSTOP _XMAX_ // X2 endstop board plug. Don't forget to enable USE_*_PLUG. |
| 461 | + #define X2_ENDSTOP_ADJUSTMENT 0 // X2 offset relative to X endstop |
| 462 | + #endif |
| 463 | +#endif |
| 464 | + |
| 465 | +#if HAS_DUAL_Y_STEPPERS |
| 466 | + //#define INVERT_Y2_VS_Y_DIR // Y2 direction signal is the opposite of Y |
| 467 | + //#define Y_DUAL_ENDSTOPS // Y2 has its own endstop |
| 468 | + #if ENABLED(Y_DUAL_ENDSTOPS) |
| 469 | + #define Y2_USE_ENDSTOP _YMAX_ // Y2 endstop board plug. Don't forget to enable USE_*_PLUG. |
| 470 | + #define Y2_ENDSTOP_ADJUSTMENT 0 // Y2 offset relative to Y endstop |
| 471 | + #endif |
| 472 | +#endif |
| 473 | + |
| 474 | +// |
| 475 | +// Multi-Z steppers |
| 476 | +// |
| 477 | +#ifdef Z2_DRIVER_TYPE |
| 478 | + //#define INVERT_Z2_VS_Z_DIR // Z2 direction signal is the opposite of Z |
| 479 | + |
| 480 | + //#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops |
| 481 | + #if ENABLED(Z_MULTI_ENDSTOPS) |
| 482 | + #define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG. |
| 483 | + #define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Z endstop |
| 484 | + #endif |
| 485 | + #ifdef Z3_DRIVER_TYPE |
| 486 | + //#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z |
| 487 | + #if ENABLED(Z_MULTI_ENDSTOPS) |
| 488 | + #define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG. |
| 489 | + #define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Z endstop |
| 490 | + #endif |
| 491 | + #endif |
| 492 | + #ifdef Z4_DRIVER_TYPE |
| 493 | + //#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z |
| 494 | + #if ENABLED(Z_MULTI_ENDSTOPS) |
| 495 | + #define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG. |
| 496 | + #define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Z endstop |
| 497 | + #endif |
| 498 | + #endif |
| 499 | +#endif |
| 500 | + |
| 501 | +// Drive the E axis with two synchronized steppers |
| 502 | +//#define E_DUAL_STEPPER_DRIVERS |
| 503 | +#if ENABLED(E_DUAL_STEPPER_DRIVERS) |
| 504 | + //#define INVERT_E1_VS_E0_DIR // E direction signals are opposites |
| 505 | +#endif |
380 | 506 |
|
381 | 507 | // Activate a solenoid on the active extruder with M380. Disable all with M381.
|
382 | 508 | // Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid.
|
|
626 | 752 | #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity
|
627 | 753 | //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup
|
628 | 754 | #endif
|
629 |
| -#endif // LED_CONTROL_MENU |
| 755 | +#endif |
| 756 | + |
| 757 | +#if HAS_MARLINUI_MENU |
| 758 | + |
| 759 | + #if HAS_BED_PROBE |
| 760 | + // Add calibration in the Probe Offsets menu to compensate for X-axis twist. |
| 761 | + //#define X_AXIS_TWIST_COMPENSATION |
| 762 | + #if ENABLED(X_AXIS_TWIST_COMPENSATION) |
| 763 | + /** |
| 764 | + * Enable to init the Probe Z-Offset when starting the Wizard. |
| 765 | + * Use a height slightly above the estimated nozzle-to-probe Z offset. |
| 766 | + * For example, with an offset of -5, consider a starting height of -4. |
| 767 | + */ |
| 768 | + #define XATC_START_Z 0.0 |
| 769 | + #define XATC_MAX_POINTS 3 // Number of points to probe in the wizard |
| 770 | + #define XATC_Y_POSITION Y_CENTER // (mm) Y position to probe |
| 771 | + #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points |
| 772 | + #endif |
| 773 | + |
| 774 | + // Show Deploy / Stow Probe options in the Motion menu. |
| 775 | + #define PROBE_DEPLOY_STOW_MENU |
| 776 | + #endif |
| 777 | + |
| 778 | + // Include a page of printer information in the LCD Main Menu |
| 779 | + //#define LCD_INFO_MENU |
| 780 | + #if ENABLED(LCD_INFO_MENU) |
| 781 | + //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages |
| 782 | + #endif |
| 783 | + |
| 784 | + // Add 50/100mm moves to MarlinUI even with a smaller bed |
| 785 | + //#define LARGE_MOVE_ITEMS |
| 786 | + |
| 787 | + // BACK menu items keep the highlight at the top |
| 788 | + //#define TURBO_BACK_MENU_ITEM |
| 789 | + |
| 790 | + // Insert a menu for preheating at the top level to allow for quick access |
| 791 | + //#define PREHEAT_SHORTCUT_MENU_ITEM |
| 792 | + |
| 793 | +#endif // HAS_MARLINUI_MENU |
| 794 | + |
| 795 | +#if HAS_DISPLAY |
| 796 | + //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu |
| 797 | + #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state |
| 798 | + |
| 799 | + // The timeout to return to the status screen from sub-menus |
| 800 | + //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) |
| 801 | + |
| 802 | + #if ENABLED(SHOW_BOOTSCREEN) |
| 803 | + #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) |
| 804 | + #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) |
| 805 | + #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) |
| 806 | + #endif |
| 807 | + #endif |
| 808 | + |
| 809 | + // Scroll a longer status message into view |
| 810 | + //#define STATUS_MESSAGE_SCROLLING |
| 811 | + |
| 812 | + // Apply a timeout to low-priority status messages |
| 813 | + //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) |
| 814 | + |
| 815 | + // On the Info Screen, display XY with one decimal place when possible |
| 816 | + //#define LCD_DECIMAL_SMALL_XY |
| 817 | + |
| 818 | + // Show the E position (filament used) during printing |
| 819 | + //#define LCD_SHOW_E_TOTAL |
| 820 | + |
| 821 | + /** |
| 822 | + * LED Control Menu |
| 823 | + * Add LED Control to the LCD menu |
| 824 | + */ |
| 825 | + //#define LED_CONTROL_MENU |
| 826 | + #if ENABLED(LED_CONTROL_MENU) |
| 827 | + #define LED_COLOR_PRESETS // Enable the Preset Color menu option |
| 828 | + //#define NEO2_COLOR_PRESETS // Enable a second NeoPixel Preset Color menu option |
| 829 | + #if ENABLED(LED_COLOR_PRESETS) |
| 830 | + #define LED_USER_PRESET_RED 255 // User defined RED value |
| 831 | + #define LED_USER_PRESET_GREEN 128 // User defined GREEN value |
| 832 | + #define LED_USER_PRESET_BLUE 0 // User defined BLUE value |
| 833 | + #define LED_USER_PRESET_WHITE 255 // User defined WHITE value |
| 834 | + #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity |
| 835 | + //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup |
| 836 | + #endif |
| 837 | + #if ENABLED(NEO2_COLOR_PRESETS) |
| 838 | + #define NEO2_USER_PRESET_RED 255 // User defined RED value |
| 839 | + #define NEO2_USER_PRESET_GREEN 128 // User defined GREEN value |
| 840 | + #define NEO2_USER_PRESET_BLUE 0 // User defined BLUE value |
| 841 | + #define NEO2_USER_PRESET_WHITE 255 // User defined WHITE value |
| 842 | + #define NEO2_USER_PRESET_BRIGHTNESS 255 // User defined intensity |
| 843 | + //#define NEO2_USER_PRESET_STARTUP // Have the printer display the user preset color on startup for the second strip |
| 844 | + #endif |
| 845 | + #endif |
| 846 | + |
| 847 | +#endif // HAS_DISPLAY |
| 848 | + |
| 849 | +// Add 'M73' to set print job progress, overrides Marlin's built-in estimate |
| 850 | +//#define SET_PROGRESS_MANUALLY |
| 851 | +#if ENABLED(SET_PROGRESS_MANUALLY) |
| 852 | + #define SET_PROGRESS_PERCENT // Add 'P' parameter to set percentage done |
| 853 | + #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time |
| 854 | + //#define SET_INTERACTION_TIME // Add 'C' parameter to set time until next filament change or other user interaction |
| 855 | + //#define M73_REPORT // Report M73 values to host |
| 856 | + #if BOTH(M73_REPORT, SDSUPPORT) |
| 857 | + #define M73_REPORT_SD_ONLY // Report only when printing from SD |
| 858 | + #endif |
| 859 | +#endif |
| 860 | + |
| 861 | +// LCD Print Progress options. Multiple times may be displayed in turn. |
| 862 | +#if HAS_DISPLAY && EITHER(SDSUPPORT, SET_PROGRESS_MANUALLY) |
| 863 | + #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) |
| 864 | + #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') |
| 865 | + //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') |
| 866 | + #if ENABLED(SET_INTERACTION_TIME) |
| 867 | + #define SHOW_INTERACTION_TIME // Display time until next user interaction ('C' = filament change) |
| 868 | + #endif |
| 869 | + //#define PRINT_PROGRESS_SHOW_DECIMALS // Show/report progress with decimal digits, not all UIs support this |
| 870 | + |
| 871 | + #if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) |
| 872 | + //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing |
| 873 | + #if ENABLED(LCD_PROGRESS_BAR) |
| 874 | + #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar |
| 875 | + #define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message |
| 876 | + #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever) |
| 877 | + //#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it |
| 878 | + //#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar |
| 879 | + #endif |
| 880 | + #endif |
| 881 | +#endif |
630 | 882 |
|
631 | 883 | #if ENABLED(SDSUPPORT)
|
632 | 884 |
|
|
838 | 1090 | */
|
839 | 1091 | //#define LIN_ADVANCE
|
840 | 1092 | #if ENABLED(LIN_ADVANCE)
|
841 |
| - #define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed |
842 |
| - //#define LA_DEBUG // If enabled, this will generate debug information output over USB. |
| 1093 | + #if ENABLED(DISTINCT_E_FACTORS) |
| 1094 | + #define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder |
| 1095 | + #else |
| 1096 | + #define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders |
| 1097 | + #endif |
| 1098 | + //#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. |
| 1099 | + //#define LA_DEBUG // Print debug information to serial during operation. Disable for production use. |
| 1100 | + //#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends. |
| 1101 | + //#define EXPERIMENTAL_I2S_LA // Allow I2S_STEPPER_STREAM to be used with LA. Performance degrades as the LA step rate reaches ~20kHz. |
843 | 1102 | #endif
|
844 | 1103 |
|
845 | 1104 | // @section leveling
|
|
0 commit comments