From 0e97b3d6d0f20c926ec79435dfcb9045c15d9052 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2017 22:12:08 -0500 Subject: [PATCH 1/3] Fix some configuration spacing --- Marlin/Configuration.h | 2 +- Marlin/example_configurations/Cartesio/Configuration.h | 2 +- Marlin/example_configurations/Felix/Configuration.h | 2 +- Marlin/example_configurations/Felix/DUAL/Configuration.h | 2 +- Marlin/example_configurations/Hephestos/Configuration.h | 2 +- Marlin/example_configurations/Hephestos_2/Configuration.h | 2 +- Marlin/example_configurations/K8200/Configuration.h | 2 +- Marlin/example_configurations/K8400/Configuration.h | 2 +- Marlin/example_configurations/K8400/Dual-head/Configuration.h | 2 +- .../RepRapWorld/Megatronics/Configuration.h | 2 +- Marlin/example_configurations/RigidBot/Configuration.h | 2 +- Marlin/example_configurations/SCARA/Configuration.h | 2 +- Marlin/example_configurations/TAZ4/Configuration.h | 2 +- Marlin/example_configurations/TinyBoy2/Configuration.h | 2 +- Marlin/example_configurations/WITBOX/Configuration.h | 2 +- Marlin/example_configurations/adafruit/ST7565/Configuration.h | 2 +- .../delta/FLSUN/auto_calibrate/Configuration.h | 2 +- .../delta/FLSUN/kossel_mini/Configuration.h | 2 +- Marlin/example_configurations/delta/generic/Configuration.h | 2 +- Marlin/example_configurations/delta/kossel_mini/Configuration.h | 2 +- Marlin/example_configurations/delta/kossel_pro/Configuration.h | 2 +- Marlin/example_configurations/delta/kossel_xl/Configuration.h | 2 +- Marlin/example_configurations/makibox/Configuration.h | 2 +- Marlin/example_configurations/tvrrug/Round2/Configuration.h | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 188e17d547..2730f193c8 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1522,7 +1522,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index 16ef7a4b1e..5fe019823e 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -1522,7 +1522,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 66f4decb9b..e70962110e 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -1506,7 +1506,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index c48340e211..96ad7d2fc4 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -1506,7 +1506,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 8ca04b48bd..7c6f79e4dc 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -1514,7 +1514,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index 732157d86e..807fbd46bf 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -1517,7 +1517,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 5c6b3eaf3c..edc9c53830 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -1557,7 +1557,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h index eb4234297a..15012c5b94 100644 --- a/Marlin/example_configurations/K8400/Configuration.h +++ b/Marlin/example_configurations/K8400/Configuration.h @@ -1523,7 +1523,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h index dc8a06ee18..e84fb3cad8 100644 --- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h @@ -1523,7 +1523,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 609f9ab5c1..be434e951e 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -1523,7 +1523,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index a90dc3f386..e401042dd4 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -1524,7 +1524,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 08a29ee67c..29de498f21 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -1538,7 +1538,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index b5ecf2b9fc..4ced451de1 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -1543,7 +1543,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/TinyBoy2/Configuration.h b/Marlin/example_configurations/TinyBoy2/Configuration.h index dafe44968e..cab37f2798 100644 --- a/Marlin/example_configurations/TinyBoy2/Configuration.h +++ b/Marlin/example_configurations/TinyBoy2/Configuration.h @@ -1579,7 +1579,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 9d66d84ec0..e33a5b9e94 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -1514,7 +1514,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 52737fdd77..7775dced25 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -1523,7 +1523,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h index df02ad3316..57fba7aa76 100644 --- a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h +++ b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h @@ -1645,7 +1645,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h index ce332e6e46..b7cc0b57cb 100644 --- a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h @@ -1647,7 +1647,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 22477b4ee0..2897bc3a33 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -1635,7 +1635,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 205236cb98..7d69dcc070 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -1631,7 +1631,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index aae0e18a66..8b809300e9 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -1639,7 +1639,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index f284c784cf..b9bd403b92 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -1646,7 +1646,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 26445970bf..75a1afcb30 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -1526,7 +1526,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index e95bbc15fe..8753f88b79 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -1519,7 +1519,7 @@ * Enable support for an RGB LED connected to 5V digital pins, or * an RGB Strip connected to MOSFETs controlled by digital pins. * - * Adds the M150 command to set the LED (or LED strip) color. + * Adds the M150 command to set the LED (or LED strip) color. * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of * luminance values can be set from 0 to 255. * From d60c02c5b1d638e4cd830cccd09759db2ef82ff0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2017 22:43:56 -0500 Subject: [PATCH 2/3] Cleanup, extend TMC2130 configuration --- Marlin/Configuration_adv.h | 113 ++++++++++++----- Marlin/SanityCheck.h | 18 +++ .../Cartesio/Configuration_adv.h | 113 ++++++++++++----- .../Felix/Configuration_adv.h | 113 ++++++++++++----- .../Hephestos/Configuration_adv.h | 113 ++++++++++++----- .../Hephestos_2/Configuration_adv.h | 113 ++++++++++++----- .../K8200/Configuration_adv.h | 113 ++++++++++++----- .../K8400/Configuration_adv.h | 113 ++++++++++++----- .../RigidBot/Configuration_adv.h | 113 ++++++++++++----- .../SCARA/Configuration_adv.h | 113 ++++++++++++----- .../TAZ4/Configuration_adv.h | 113 ++++++++++++----- .../TinyBoy2/Configuration_adv.h | 113 ++++++++++++----- .../WITBOX/Configuration_adv.h | 113 ++++++++++++----- .../FLSUN/auto_calibrate/Configuration_adv.h | 119 +++++++++++++----- .../FLSUN/kossel_mini/Configuration_adv.h | 113 ++++++++++++----- .../delta/generic/Configuration_adv.h | 113 ++++++++++++----- .../delta/kossel_mini/Configuration_adv.h | 113 ++++++++++++----- .../delta/kossel_pro/Configuration_adv.h | 113 ++++++++++++----- .../delta/kossel_xl/Configuration_adv.h | 113 ++++++++++++----- .../makibox/Configuration_adv.h | 113 ++++++++++++----- .../tvrrug/Round2/Configuration_adv.h | 113 ++++++++++++----- .../wt150/Configuration_adv.h | 113 ++++++++++++----- 22 files changed, 1703 insertions(+), 694 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index cb2b180e47..adfb03ccfa 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -882,18 +882,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -916,45 +904,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h index 8f4c295421..07e4224e23 100644 --- a/Marlin/SanityCheck.h +++ b/Marlin/SanityCheck.h @@ -1091,6 +1091,24 @@ static_assert(1 >= 0 , "Please select no more than one LCD controller option." ); +#if ENABLED(HAVE_TMC2130) && !( \ + ENABLED( X_IS_TMC2130 ) \ + || ENABLED( X2_IS_TMC2130 ) \ + || ENABLED( Y_IS_TMC2130 ) \ + || ENABLED( Y2_IS_TMC2130 ) \ + || ENABLED( Z_IS_TMC2130 ) \ + || ENABLED( Z2_IS_TMC2130 ) \ + || ENABLED( E0_IS_TMC2130 ) \ + || ENABLED( E1_IS_TMC2130 ) \ + || ENABLED( E2_IS_TMC2130 ) \ + || ENABLED( E3_IS_TMC2130 ) ) + #error "Choose at least one TMC2130 stepper." +#endif + +#if ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP) + #error "Enable STEALTHCHOP to use HYBRID_THRESHOLD." +#endif + /** * Require 4 or more elements in per-axis initializers */ diff --git a/Marlin/example_configurations/Cartesio/Configuration_adv.h b/Marlin/example_configurations/Cartesio/Configuration_adv.h index 20ff965c93..1e7a13c1ce 100644 --- a/Marlin/example_configurations/Cartesio/Configuration_adv.h +++ b/Marlin/example_configurations/Cartesio/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index 1095c95376..fef4bf0a5e 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index 104c1dc803..43ea5654e3 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h index 90007037e8..7001e573c0 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h @@ -863,18 +863,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -897,45 +885,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E3_CURRENT 1000 + //#define E3_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index 0c2cdd2a77..a3ee7f353f 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -892,18 +892,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -926,45 +914,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/K8400/Configuration_adv.h b/Marlin/example_configurations/K8400/Configuration_adv.h index ea4c7122dc..f76fa256e9 100644 --- a/Marlin/example_configurations/K8400/Configuration_adv.h +++ b/Marlin/example_configurations/K8400/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/RigidBot/Configuration_adv.h b/Marlin/example_configurations/RigidBot/Configuration_adv.h index 5b79424ad7..7a5be5249a 100644 --- a/Marlin/example_configurations/RigidBot/Configuration_adv.h +++ b/Marlin/example_configurations/RigidBot/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index 18c2240415..90e13e3654 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/TAZ4/Configuration_adv.h b/Marlin/example_configurations/TAZ4/Configuration_adv.h index 4c8e8a87e9..9064526438 100644 --- a/Marlin/example_configurations/TAZ4/Configuration_adv.h +++ b/Marlin/example_configurations/TAZ4/Configuration_adv.h @@ -887,18 +887,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -921,45 +909,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/TinyBoy2/Configuration_adv.h b/Marlin/example_configurations/TinyBoy2/Configuration_adv.h index 7983ef280d..3fa4f0b055 100644 --- a/Marlin/example_configurations/TinyBoy2/Configuration_adv.h +++ b/Marlin/example_configurations/TinyBoy2/Configuration_adv.h @@ -882,18 +882,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -916,45 +904,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index 104c1dc803..43ea5654e3 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h index a8ffa080f6..e2c7e024c9 100644 --- a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h +++ b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h @@ -327,7 +327,11 @@ // Default x offset in duplication mode (typically set to half print bed width) #define DEFAULT_DUPLICATION_X_OFFSET 100 -#endif //DUAL_X_CARRIAGE +#endif // DUAL_X_CARRIAGE + +// Activate a solenoid on the active extruder with M380. Disable all with M381. +// Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid. +//#define EXT_SOLENOID // @section homing @@ -899,18 +903,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -933,45 +925,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h index 6ee202ae09..7d4a2c0c21 100644 --- a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h @@ -902,18 +902,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -936,45 +924,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 5ea04ce0ae..ee2df57ebb 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -900,18 +900,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -934,45 +922,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 5ea04ce0ae..ee2df57ebb 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -900,18 +900,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -934,45 +922,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h index 1613baeb8d..a57c2bf35e 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h @@ -906,18 +906,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -940,45 +928,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h index 727768807b..08ba347da8 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h @@ -900,18 +900,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -934,45 +922,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index 11b8cf0978..fc5a716fa9 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index f5fd6eac40..78db8e1d53 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -879,18 +879,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -913,45 +901,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/example_configurations/wt150/Configuration_adv.h b/Marlin/example_configurations/wt150/Configuration_adv.h index d8c93a21b3..ea7644e711 100644 --- a/Marlin/example_configurations/wt150/Configuration_adv.h +++ b/Marlin/example_configurations/wt150/Configuration_adv.h @@ -882,18 +882,6 @@ //#define HAVE_TMC2130 #if ENABLED(HAVE_TMC2130) - #define STEALTHCHOP - - /** - * Let Marlin automatically control stepper current. - * This is still an experimental feature. - * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, - * then decrease current by CURRENT_STEP until temperature prewarn is cleared. - * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX - */ - //#define AUTOMATIC_CURRENT_CONTROL - #define CURRENT_STEP 50 // [mA] - #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY //#define X_IS_TMC2130 @@ -916,45 +904,104 @@ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 - #define X_MAX_CURRENT 1000 // rms current in mA - #define X_MICROSTEPS 16 // FULLSTEP..256 - #define X_CHIP_SELECT 40 // Pin + #define X_CURRENT 1000 // rms current in mA. Multiply by 1.41 for peak current. + #define X_MICROSTEPS 16 // 0..256 - #define Y_MAX_CURRENT 1000 + #define Y_CURRENT 1000 #define Y_MICROSTEPS 16 - #define Y_CHIP_SELECT 42 - #define Z_MAX_CURRENT 1000 + #define Z_CURRENT 1000 #define Z_MICROSTEPS 16 - #define Z_CHIP_SELECT 65 - //#define X2_MAX_CURRENT 1000 + //#define X2_CURRENT 1000 //#define X2_MICROSTEPS 16 - //#define X2_CHIP_SELECT -1 - //#define Y2_MAX_CURRENT 1000 + //#define Y2_CURRENT 1000 //#define Y2_MICROSTEPS 16 - //#define Y2_CHIP_SELECT -1 - //#define Z2_MAX_CURRENT 1000 + //#define Z2_CURRENT 1000 //#define Z2_MICROSTEPS 16 - //#define Z2_CHIP_SELECT -1 - //#define E0_MAX_CURRENT 1000 + //#define E0_CURRENT 1000 //#define E0_MICROSTEPS 16 - //#define E0_CHIP_SELECT -1 - //#define E1_MAX_CURRENT 1000 + //#define E1_CURRENT 1000 //#define E1_MICROSTEPS 16 - //#define E1_CHIP_SELECT -1 - //#define E2_MAX_CURRENT 1000 + //#define E2_CURRENT 1000 //#define E2_MICROSTEPS 16 - //#define E2_CHIP_SELECT -1 - //#define E3_MAX_CURRENT 1000 + //#define E3_CURRENT 1000 //#define E3_MICROSTEPS 16 - //#define E3_CHIP_SELECT -1 + + //#define E4_CURRENT 1000 + //#define E4_MICROSTEPS 16 + + /** + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ + #define STEALTHCHOP + + /** + * Let Marlin automatically control stepper current. + * This is still an experimental feature. + * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, + * then decrease current by CURRENT_STEP until temperature prewarn is cleared. + * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX + * Relevant g-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M906 S1 - Start adjusting current + * M906 S0 - Stop adjusting current + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + */ + //#define AUTOMATIC_CURRENT_CONTROL + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #define CURRENT_STEP 50 // [mA] + #define AUTO_ADJUST_MAX 1300 // [mA], 1300mA_rms = 1840mA_peak + #define REPORT_CURRENT_CHANGE + #endif + + /** + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP needs to be enabled. + * M913 X/Y/Z/E to live tune the setting + */ + //#define HYBRID_THRESHOLD + + #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X2_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 100 + #define Y2_HYBRID_THRESHOLD 100 + #define Z_HYBRID_THRESHOLD 4 + #define Z2_HYBRID_THRESHOLD 4 + #define E0_HYBRID_THRESHOLD 30 + #define E1_HYBRID_THRESHOLD 30 + #define E2_HYBRID_THRESHOLD 30 + #define E3_HYBRID_THRESHOLD 30 + #define E4_HYBRID_THRESHOLD 30 + + /** + * Use stallGuard2 to sense an obstacle and trigger an endstop. + * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal. + * + * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * Higher values make the system LESS sensitive. + * Lower value make the system MORE sensitive. + * Too low values can lead to false positives, while too high values will collide the axis without triggering. + * It is advised to set X/Y_HOME_BUMP_MM to 0. + * M914 X/Y to live tune the setting + */ + //#define SENSORLESS_HOMING + + #if ENABLED(SENSORLESS_HOMING) + #define X_HOMING_SENSITIVITY 19 + #define Y_HOMING_SENSITIVITY 19 + #endif /** * You can set your own advanced settings by filling in predefined functions. From 4067d15c92b6acbe0da3f87fce1b33ccf2d56ce8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2017 22:44:08 -0500 Subject: [PATCH 3/3] Cleanup, extend TMC2130 implementation --- .travis.yml | 2 +- Marlin/Marlin_main.cpp | 277 +++++++++++++++++++++++++++------ Marlin/configuration_store.cpp | 20 +-- Marlin/stepper_indirection.cpp | 62 +++++--- 4 files changed, 275 insertions(+), 86 deletions(-) diff --git a/.travis.yml b/.travis.yml index e877b2b348..f4e0f8d08e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -409,7 +409,7 @@ script: - restore_configs - opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130 - build_marlin - - opt_enable_adv AUTOMATIC_CURRENT_CONTROL STEALTHCHOP + - opt_enable_adv AUTOMATIC_CURRENT_CONTROL STEALTHCHOP HYBRID_THRESHOLD SENSORLESS_HOMING - build_marlin # # tvrrug Config need to check board type for sanguino atmega644p diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 5626a2226f..cf64cdc961 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -198,6 +198,8 @@ * M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT) * M911 - Report stepper driver overtemperature pre-warn condition. (Requires HAVE_TMC2130) * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires HAVE_TMC2130) + * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD) + * M914 - Set SENSORLESS_HOMING sensitivity. (Requires SENSORLESS_HOMING) * M350 - Set microstepping mode. (Requires digital microstepping pins.) * M351 - Toggle MS1 MS2 pins directly. (Requires digital microstepping pins.) * @@ -647,6 +649,10 @@ static bool send_ok[BUFSIZE]; bool chdkActive = false; #endif +#ifdef AUTOMATIC_CURRENT_CONTROL + bool auto_current_control = 0; +#endif + #if ENABLED(PID_EXTRUSION_SCALING) int lpq_len = 20; #endif @@ -2756,6 +2762,28 @@ static void do_homing_move(const AxisEnum axis, float distance, float fr_mm_s=0. #endif } +/** + * TMC2130 specific sensorless homing using stallGuard2. + * stallGuard2 only works when in spreadCycle mode. + * spreadCycle and stealthChop are mutually exclusive. + */ +#if ENABLED(SENSORLESS_HOMING) + void tmc2130_sensorless_homing(TMC2130Stepper &st, bool enable=true) { + #if ENABLED(STEALTHCHOP) + if (enable) { + st.coolstep_min_speed(1024UL * 1024UL - 1UL); + st.stealthChop(0); + } + else { + st.coolstep_min_speed(0); + st.stealthChop(1); + } + #endif + + st.diag1_stall(enable ? 1 : 0); + } +#endif + /** * Home an individual "raw axis" to its endstop. * This applies to XYZ on Cartesian and Core robots, and @@ -2804,6 +2832,16 @@ static void homeaxis(const AxisEnum axis) { if (axis == Z_AXIS) stepper.set_homing_flag(true); #endif + // Disable stealthChop if used. Enable diag1 pin on driver. + #if ENABLED(SENSORLESS_HOMING) + #if ENABLED(X_IS_TMC2130) + if (axis == X_AXIS) tmc2130_sensorless_homing(stepperX); + #endif + #if ENABLED(Y_IS_TMC2130) + if (axis == Y_AXIS) tmc2130_sensorless_homing(stepperY); + #endif + #endif + // Fast move towards endstop until triggered #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("Home 1 Fast:"); @@ -2888,6 +2926,16 @@ static void homeaxis(const AxisEnum axis) { #endif + // Re-enable stealthChop if used. Disable diag1 pin on driver. + #if ENABLED(SENSORLESS_HOMING) + #if ENABLED(X_IS_TMC2130) + if (axis == X_AXIS) tmc2130_sensorless_homing(stepperX, false); + #endif + #if ENABLED(Y_IS_TMC2130) + if (axis == Y_AXIS) tmc2130_sensorless_homing(stepperY, false); + #endif + #endif + // Put away the Z probe #if HOMING_Z_WITH_PROBE if (axis == Z_AXIS && STOW_PROBE()) return; @@ -6902,6 +6950,11 @@ inline void gcode_M140() { OUT_WRITE(SUICIDE_PIN, HIGH); #endif + #if ENABLED(HAVE_TMC2130) + delay(100); + tmc2130_init(); // Settings only stick when the driver has power + #endif + #if ENABLED(ULTIPANEL) powersupply = true; LCD_MESSAGEPGM(WELCOME_MSG); @@ -8770,22 +8823,21 @@ inline void gcode_M503() { #if ENABLED(HAVE_TMC2130) - static void tmc2130_print_current(const int mA, const char name) { + static void tmc2130_get_current(TMC2130Stepper &st, const char name) { SERIAL_CHAR(name); SERIAL_ECHOPGM(" axis driver current: "); - SERIAL_ECHOLN(mA); + SERIAL_ECHOLN(st.getCurrent()); } - static void tmc2130_set_current(const int mA, TMC2130Stepper &st, const char name) { - tmc2130_print_current(mA, name); - st.setCurrent(mA, 0.11, 0.5); - } - static void tmc2130_get_current(TMC2130Stepper &st, const char name) { - tmc2130_print_current(st.getCurrent(), name); + static void tmc2130_set_current(TMC2130Stepper &st, const char name, const int mA) { + st.setCurrent(mA, R_SENSE, HOLD_MULTIPLIER); + tmc2130_get_current(st, name); } + static void tmc2130_report_otpw(TMC2130Stepper &st, const char name) { SERIAL_CHAR(name); SERIAL_ECHOPGM(" axis temperature prewarn triggered: "); serialprintPGM(st.getOTPW() ? PSTR("true") : PSTR("false")); + SERIAL_EOL; } static void tmc2130_clear_otpw(TMC2130Stepper &st, const char name) { st.clear_otpw(); @@ -8793,10 +8845,32 @@ inline void gcode_M503() { SERIAL_ECHOLNPGM(" prewarn flag cleared"); } + static void tmc2130_get_pwmthrs(TMC2130Stepper &st, const char name, const uint16_t spmm) { + SERIAL_CHAR(name); + SERIAL_ECHOPGM(" stealthChop max speed set to "); + SERIAL_ECHOLN(12650000UL * st.microsteps() / (256 * st.stealth_max_speed() * spmm)); + } + static void tmc2130_set_pwmthrs(TMC2130Stepper &st, const char name, const int32_t thrs, const uint32_t spmm) { + st.stealth_max_speed(12650000UL * st.microsteps() / (256 * thrs * spmm)); + tmc2130_get_pwmthrs(st, name, spmm); + } + + static void tmc2130_get_sgt(TMC2130Stepper &st, const char name) { + SERIAL_CHAR(name); + SERIAL_ECHOPGM(" driver homing sensitivity set to "); + SERIAL_ECHOLN(st.sgt()); + } + static void tmc2130_set_sgt(TMC2130Stepper &st, const char name, const int8_t sgt_val) { + st.sgt(sgt_val); + tmc2130_get_sgt(st, name); + } + /** * M906: Set motor current in milliamps using axis codes X, Y, Z, E - * * Report driver currents when no axis specified + * + * S1: Enable automatic current control + * S0: Disable */ inline void gcode_M906() { uint16_t values[XYZE]; @@ -8804,21 +8878,25 @@ inline void gcode_M503() { values[i] = code_seen(axis_codes[i]) ? code_value_int() : 0; #if ENABLED(X_IS_TMC2130) - if (values[X_AXIS]) tmc2130_set_current(values[X_AXIS], stepperX, 'X'); + if (values[X_AXIS]) tmc2130_set_current(stepperX, 'X', values[X_AXIS]); else tmc2130_get_current(stepperX, 'X'); #endif #if ENABLED(Y_IS_TMC2130) - if (values[Y_AXIS]) tmc2130_set_current(values[Y_AXIS], stepperY, 'Y'); + if (values[Y_AXIS]) tmc2130_set_current(stepperY, 'Y', values[Y_AXIS]); else tmc2130_get_current(stepperY, 'Y'); #endif #if ENABLED(Z_IS_TMC2130) - if (values[Z_AXIS]) tmc2130_set_current(values[Z_AXIS], stepperZ, 'Z'); + if (values[Z_AXIS]) tmc2130_set_current(stepperZ, 'Z', values[Z_AXIS]); else tmc2130_get_current(stepperZ, 'Z'); #endif #if ENABLED(E0_IS_TMC2130) - if (values[E_AXIS]) tmc2130_set_current(values[E_AXIS], stepperE0, 'E'); + if (values[E_AXIS]) tmc2130_set_current(stepperE0, 'E', values[E_AXIS]); else tmc2130_get_current(stepperE0, 'E'); #endif + + #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + if (code_seen('S')) auto_current_control = code_value_bool(); + #endif } /** @@ -8826,17 +8904,19 @@ inline void gcode_M503() { * The flag is held by the library and persist until manually cleared by M912 */ inline void gcode_M911() { + const bool reportX = code_seen('X'), reportY = code_seen('Y'), reportZ = code_seen('Z'), reportE = code_seen('E'), + reportAll = (!reportX && !reportY && !reportZ && !reportE) || (reportX && reportY && reportZ && reportE); #if ENABLED(X_IS_TMC2130) - tmc2130_report_otpw(stepperX, 'X'); + if (reportX || reportAll) tmc2130_report_otpw(stepperX, 'X'); #endif #if ENABLED(Y_IS_TMC2130) - tmc2130_report_otpw(stepperY, 'Y'); + if (reportY || reportAll) tmc2130_report_otpw(stepperY, 'Y'); #endif #if ENABLED(Z_IS_TMC2130) - tmc2130_report_otpw(stepperZ, 'Z'); + if (reportZ || reportAll) tmc2130_report_otpw(stepperZ, 'Z'); #endif #if ENABLED(E0_IS_TMC2130) - tmc2130_report_otpw(stepperE0, 'E'); + if (reportE || reportAll) tmc2130_report_otpw(stepperE0, 'E'); #endif } @@ -8844,20 +8924,66 @@ inline void gcode_M503() { * M912: Clear TMC2130 stepper driver overtemperature pre-warn flag held by the library */ inline void gcode_M912() { + const bool clearX = code_seen('X'), clearY = code_seen('Y'), clearZ = code_seen('Z'), clearE = code_seen('E'), + clearAll = (!clearX && !clearY && !clearZ && !clearE) || (clearX && clearY && clearZ && clearE); #if ENABLED(X_IS_TMC2130) - if (code_seen('X')) tmc2130_clear_otpw(stepperX, 'X'); + if (clearX || clearAll) tmc2130_clear_otpw(stepperX, 'X'); #endif #if ENABLED(Y_IS_TMC2130) - if (code_seen('Y')) tmc2130_clear_otpw(stepperY, 'Y'); + if (clearY || clearAll) tmc2130_clear_otpw(stepperY, 'Y'); #endif #if ENABLED(Z_IS_TMC2130) - if (code_seen('Z')) tmc2130_clear_otpw(stepperZ, 'Z'); + if (clearZ || clearAll) tmc2130_clear_otpw(stepperZ, 'Z'); #endif #if ENABLED(E0_IS_TMC2130) - if (code_seen('E')) tmc2130_clear_otpw(stepperE0, 'E'); + if (clearE || clearAll) tmc2130_clear_otpw(stepperE0, 'E'); #endif } + /** + * M913: Set HYBRID_THRESHOLD speed. + */ + #if ENABLED(HYBRID_THRESHOLD) + inline void gcode_M913() { + uint16_t values[XYZE]; + LOOP_XYZE(i) + values[i] = code_seen(axis_codes[i]) ? code_value_int() : 0; + + #if ENABLED(X_IS_TMC2130) + if (values[X_AXIS]) tmc2130_set_pwmthrs(stepperX, 'X', values[X_AXIS], planner.axis_steps_per_mm[X_AXIS]); + else tmc2130_get_pwmthrs(stepperX, 'X', planner.axis_steps_per_mm[X_AXIS]); + #endif + #if ENABLED(Y_IS_TMC2130) + if (values[Y_AXIS]) tmc2130_set_pwmthrs(stepperY, 'Y', values[Y_AXIS], planner.axis_steps_per_mm[Y_AXIS]); + else tmc2130_get_pwmthrs(stepperY, 'Y', planner.axis_steps_per_mm[Y_AXIS]); + #endif + #if ENABLED(Z_IS_TMC2130) + if (values[Z_AXIS]) tmc2130_set_pwmthrs(stepperZ, 'Z', values[Z_AXIS], planner.axis_steps_per_mm[Z_AXIS]); + else tmc2130_get_pwmthrs(stepperZ, 'Z', planner.axis_steps_per_mm[Z_AXIS]); + #endif + #if ENABLED(E0_IS_TMC2130) + if (values[E_AXIS]) tmc2130_set_pwmthrs(stepperE0, 'E', values[E_AXIS], planner.axis_steps_per_mm[E_AXIS]); + else tmc2130_get_pwmthrs(stepperE0, 'E', planner.axis_steps_per_mm[E_AXIS]); + #endif + } + #endif // HYBRID_THRESHOLD + + /** + * M914: Set SENSORLESS_HOMING sensitivity. + */ + #if ENABLED(SENSORLESS_HOMING) + inline void gcode_M914() { + #if ENABLED(X_IS_TMC2130) + if (code_seen(axis_codes[X_AXIS])) tmc2130_set_sgt(stepperX, 'X', code_value_int()); + else tmc2130_get_sgt(stepperX, 'X'); + #endif + #if ENABLED(Y_IS_TMC2130) + if (code_seen(axis_codes[Y_AXIS])) tmc2130_set_sgt(stepperY, 'Y', code_value_int()); + else tmc2130_get_sgt(stepperY, 'Y'); + #endif + } + #endif // SENSORLESS_HOMING + #endif // HAVE_TMC2130 /** @@ -8865,10 +8991,9 @@ inline void gcode_M503() { */ inline void gcode_M907() { #if HAS_DIGIPOTSS - LOOP_XYZE(i) - if (code_seen(axis_codes[i])) stepper.digipot_current(i, code_value_int()); + LOOP_XYZE(i) if (code_seen(axis_codes[i])) stepper.digipot_current(i, code_value_int()); if (code_seen('B')) stepper.digipot_current(4, code_value_int()); - if (code_seen('S')) for (int i = 0; i <= 4; i++) stepper.digipot_current(i, code_value_int()); + if (code_seen('S')) for (uint8_t i = 0; i <= 4; i++) stepper.digipot_current(i, code_value_int()); #elif HAS_MOTOR_CURRENT_PWM #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) if (code_seen('X')) stepper.digipot_current(0, code_value_int()); @@ -8884,11 +9009,11 @@ inline void gcode_M907() { // this one uses actual amps in floating point LOOP_XYZE(i) if (code_seen(axis_codes[i])) digipot_i2c_set_current(i, code_value_float()); // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...) - for (int i = NUM_AXIS; i < DIGIPOT_I2C_NUM_CHANNELS; i++) if (code_seen('B' + i - (NUM_AXIS))) digipot_i2c_set_current(i, code_value_float()); + for (uint8_t i = NUM_AXIS; i < DIGIPOT_I2C_NUM_CHANNELS; i++) if (code_seen('B' + i - (NUM_AXIS))) digipot_i2c_set_current(i, code_value_float()); #endif #if ENABLED(DAC_STEPPER_CURRENT) if (code_seen('S')) { - float dac_percent = code_value_float(); + const float dac_percent = code_value_float(); for (uint8_t i = 0; i <= 4; i++) dac_current_percent(i, dac_percent); } LOOP_XYZE(i) if (code_seen(axis_codes[i])) dac_current_percent(i, code_value_float()); @@ -10165,6 +10290,18 @@ void process_next_command() { case 912: // M911: Clear TMC2130 prewarn triggered flags gcode_M912(); break; + + #if ENABLED(HYBRID_THRESHOLD) + case 913: // M913: Set HYBRID_THRESHOLD speed. + gcode_M913(); + break; + #endif + + #if ENABLED(SENSORLESS_HOMING) + case 914: // M914: Set SENSORLESS_HOMING sensitivity. + gcode_M914(); + break; + #endif #endif #if HAS_MICROSTEPS @@ -11390,23 +11527,58 @@ void disable_all_steppers() { disable_e_steppers(); } -#if ENABLED(AUTOMATIC_CURRENT_CONTROL) +#if ENABLED(HAVE_TMC2130) - void automatic_current_control(const TMC2130Stepper &st) { - #if CURRENT_STEP > 0 - const bool is_otpw = st.checkOT(), // Check otpw even if we don't adjust. Allows for flag inspection. - is_otpw_triggered = st.getOTPW(); + void automatic_current_control(TMC2130Stepper &st, String axisID) { + // Check otpw even if we don't use automatic control. Allows for flag inspection. + const bool is_otpw = st.checkOT(); - if (!is_otpw && !is_otpw_triggered) { - // OTPW bit not triggered yet -> Increase current - const uint16_t current = st.getCurrent() + CURRENT_STEP; - if (current <= AUTO_ADJUST_MAX) st.SilentStepStick2130(current); + // Report if a warning was triggered + static bool previous_otpw = false; + if (is_otpw && !previous_otpw) { + char timestamp[10]; + duration_t elapsed = print_job_timer.duration(); + const bool has_days = (elapsed.value > 60*60*24L); + (void)elapsed.toDigital(timestamp, has_days); + SERIAL_ECHO(timestamp); + SERIAL_ECHO(": "); + SERIAL_ECHO(axisID); + SERIAL_ECHOLNPGM(" driver overtemperature warning!"); + } + previous_otpw = is_otpw; + + #if CURRENT_STEP > 0 && ENABLED(AUTOMATIC_CURRENT_CONTROL) + // Return if user has not enabled current control start with M906 S1. + if (!auto_current_control) return; + + /** + * Decrease current if is_otpw is true. + * Bail out if driver is disabled. + * Increase current if OTPW has not been triggered yet. + */ + uint16_t current = st.getCurrent(); + if (is_otpw) { + st.setCurrent(current - CURRENT_STEP, R_SENSE, HOLD_MULTIPLIER); + #if ENABLED(REPORT_CURRENT_CHANGE) + SERIAL_ECHO(axisID); + SERIAL_ECHOPAIR(" current decreased to ", st.getCurrent()); + #endif } - else if (is_otpw && is_otpw_triggered) { - // OTPW bit triggered, triggered flag raised -> Decrease current - st.SilentStepStick2130((float)st.getCurrent() - CURRENT_STEP); + + else if (!st.isEnabled()) + return; + + else if (!is_otpw && !st.getOTPW()) { + current += CURRENT_STEP; + if (current <= AUTO_ADJUST_MAX) { + st.setCurrent(current, R_SENSE, HOLD_MULTIPLIER); + #if ENABLED(REPORT_CURRENT_CHANGE) + SERIAL_ECHO(axisID); + SERIAL_ECHOPAIR(" current increased to ", st.getCurrent()); + #endif + } } - // OTPW bit cleared (we've cooled down), triggered flag still raised until manually cleared -> Do nothing, we're good + SERIAL_EOL; #endif } @@ -11415,34 +11587,37 @@ void disable_all_steppers() { if (ELAPSED(millis(), next_cOT)) { next_cOT = millis() + 5000; #if ENABLED(X_IS_TMC2130) - automatic_current_control(stepperX); + automatic_current_control(stepperX, "X"); #endif #if ENABLED(Y_IS_TMC2130) - automatic_current_control(stepperY); + automatic_current_control(stepperY, "Y"); #endif #if ENABLED(Z_IS_TMC2130) - automatic_current_control(stepperZ); + automatic_current_control(stepperZ, "Z"); #endif #if ENABLED(X2_IS_TMC2130) - automatic_current_control(stepperX2); + automatic_current_control(stepperX2, "X2"); #endif #if ENABLED(Y2_IS_TMC2130) - automatic_current_control(stepperY2); + automatic_current_control(stepperY2, "Y2"); #endif #if ENABLED(Z2_IS_TMC2130) - automatic_current_control(stepperZ2); + automatic_current_control(stepperZ2, "Z2"); #endif #if ENABLED(E0_IS_TMC2130) - automatic_current_control(stepperE0); + automatic_current_control(stepperE0, "E0"); #endif #if ENABLED(E1_IS_TMC2130) - automatic_current_control(stepperE1); + automatic_current_control(stepperE1, "E1"); #endif #if ENABLED(E2_IS_TMC2130) - automatic_current_control(stepperE2); + automatic_current_control(stepperE2, "E2"); #endif #if ENABLED(E3_IS_TMC2130) - automatic_current_control(stepperE3); + automatic_current_control(stepperE3, "E3"); + #endif + #if ENABLED(E4_IS_TMC2130) + automatic_current_control(stepperE4, "E4"); #endif #if ENABLED(E4_IS_TMC2130) automatic_current_control(stepperE4); @@ -11450,7 +11625,7 @@ void disable_all_steppers() { } } -#endif // AUTOMATIC_CURRENT_CONTROL +#endif // HAVE_TMC2130 /** * Manage several activities: @@ -11648,7 +11823,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { handle_status_leds(); #endif - #if ENABLED(AUTOMATIC_CURRENT_CONTROL) + #if ENABLED(HAVE_TMC2130) checkOverTemp(); #endif diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 16775bbd11..d19296d2b8 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -1124,34 +1124,34 @@ void MarlinSettings::reset() { #if ENABLED(HAVE_TMC2130) #if ENABLED(X_IS_TMC2130) - stepperX.setCurrent(X_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperX.setCurrent(X_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(Y_IS_TMC2130) - stepperY.setCurrent(Y_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperY.setCurrent(Y_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(Z_IS_TMC2130) - stepperZ.setCurrent(Z_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperZ.setCurrent(Z_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(X2_IS_TMC2130) - stepperX2.setCurrent(X2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperX2.setCurrent(X2_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(Y2_IS_TMC2130) - stepperY2.setCurrent(Y2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperY2.setCurrent(Y2_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(Z2_IS_TMC2130) - stepperZ2.setCurrent(Z2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperZ2.setCurrent(Z2_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(E0_IS_TMC2130) - stepperE0.setCurrent(E0_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperE0.setCurrent(E0_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(E1_IS_TMC2130) - stepperE1.setCurrent(E1_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperE1.setCurrent(E1_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(E2_IS_TMC2130) - stepperE2.setCurrent(E2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperE2.setCurrent(E2_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #if ENABLED(E3_IS_TMC2130) - stepperE3.setCurrent(E3_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); + stepperE3.setCurrent(E3_CURRENT, R_SENSE, HOLD_MULTIPLIER); #endif #endif diff --git a/Marlin/stepper_indirection.cpp b/Marlin/stepper_indirection.cpp index 4e072dff2e..0fe3a801ce 100644 --- a/Marlin/stepper_indirection.cpp +++ b/Marlin/stepper_indirection.cpp @@ -129,8 +129,9 @@ #include #include + #include "enum.h" - #define _TMC2130_DEFINE(ST) TMC2130Stepper stepper##ST(ST##_ENABLE_PIN, ST##_DIR_PIN, ST##_STEP_PIN, ST##_CHIP_SELECT) + #define _TMC2130_DEFINE(ST) TMC2130Stepper stepper##ST(ST##_ENABLE_PIN, ST##_DIR_PIN, ST##_STEP_PIN, ST##_CS_PIN) // Stepper objects of TMC2130 steppers used #if ENABLED(X_IS_TMC2130) @@ -169,61 +170,74 @@ // Use internal reference voltage for current calculations. This is the default. // Following values from Trinamic's spreadsheet with values for a NEMA17 (42BYGHW609) - void tmc2130_init(TMC2130Stepper &st, const uint16_t max_current, const uint16_t microsteps) { + // https://www.trinamic.com/products/integrated-circuits/details/tmc2130/ + void tmc2130_init(TMC2130Stepper &st, const uint16_t microsteps, const uint32_t thrs, const uint32_t spmm) { st.begin(); st.setCurrent(st.getCurrent(), R_SENSE, HOLD_MULTIPLIER); st.microsteps(microsteps); - st.blank_time(24); - st.off_time(8); + st.blank_time(36); + st.off_time(5); // Only enables the driver if used with stealthChop st.interpolate(INTERPOLATE); + st.power_down_delay(128); // ~2s until driver lowers to hold current + st.hysterisis_start(0); // HSTRT = 1 + st.hysterisis_low(1); // HEND = -2 + st.diag1_active_high(1); // For sensorless homing #if ENABLED(STEALTHCHOP) + st.stealth_freq(1); // f_pwm = 2/683 f_clk + st.stealth_autoscale(1); + st.stealth_gradient(5); + st.stealth_amplitude(255); st.stealthChop(1); - #endif - #if ENABLED(SENSORLESS_HOMING) - st.coolstep_min_speed(1048575); - st.sg_stall_value(STALL_THRESHOLD); - st.sg_filter(1); - st.diag1_stall(1); - st.diag1_active_high(1); + #if ENABLED(HYBRID_THRESHOLD) + st.stealth_max_speed(12650000UL*st.microsteps()/(256*thrs*spmm)); + #endif + #elif ENABLED(SENSORLESS_HOMING) + st.coolstep_min_speed(1024UL * 1024UL - 1UL); #endif } - #define _TMC2130_INIT(ST) tmc2130_init(stepper##ST, ST##_MAX_CURRENT, ST##_MICROSTEPS) + #define _TMC2130_INIT(ST, SPMM) tmc2130_init(stepper##ST, ST##_MICROSTEPS, ST##_HYBRID_THRESHOLD, SPMM) void tmc2130_init() { - delay(500); // Let power stabilize before configuring the steppers + constexpr uint16_t steps_per_mm[] = DEFAULT_AXIS_STEPS_PER_UNIT; #if ENABLED(X_IS_TMC2130) - _TMC2130_INIT(X); + _TMC2130_INIT( X, steps_per_mm[X_AXIS]); + #if ENABLED(SENSORLESS_HOMING) + stepperX.sg_stall_value(X_HOMING_SENSITIVITY); + #endif #endif #if ENABLED(X2_IS_TMC2130) - _TMC2130_INIT(X2); + _TMC2130_INIT(X2, steps_per_mm[X_AXIS]); #endif #if ENABLED(Y_IS_TMC2130) - _TMC2130_INIT(Y); + _TMC2130_INIT( Y, steps_per_mm[Y_AXIS]); + #if ENABLED(SENSORLESS_HOMING) + stepperY.sg_stall_value(Y_HOMING_SENSITIVITY); + #endif #endif #if ENABLED(Y2_IS_TMC2130) - _TMC2130_INIT(Y2); + _TMC2130_INIT(Y2, steps_per_mm[Y_AXIS]); #endif #if ENABLED(Z_IS_TMC2130) - _TMC2130_INIT(Z); + _TMC2130_INIT( Z, steps_per_mm[Z_AXIS]); #endif #if ENABLED(Z2_IS_TMC2130) - _TMC2130_INIT(Z2); + _TMC2130_INIT(Z2, steps_per_mm[Z_AXIS]); #endif #if ENABLED(E0_IS_TMC2130) - _TMC2130_INIT(E0); + _TMC2130_INIT(E0, steps_per_mm[E_AXIS]); #endif #if ENABLED(E1_IS_TMC2130) - _TMC2130_INIT(E1); + { constexpr int extruder = 1; _TMC2130_INIT(E1, steps_per_mm[E_AXIS_N]); } #endif #if ENABLED(E2_IS_TMC2130) - _TMC2130_INIT(E2); + { constexpr int extruder = 2; _TMC2130_INIT(E2, steps_per_mm[E_AXIS_N]); } #endif #if ENABLED(E3_IS_TMC2130) - _TMC2130_INIT(E3); + { constexpr int extruder = 3; _TMC2130_INIT(E3, steps_per_mm[E_AXIS_N]); } #endif #if ENABLED(E4_IS_TMC2130) - _TMC2130_INIT(E4); + { constexpr int extruder = 4; _TMC2130_INIT(E4, steps_per_mm[E_AXIS_N]); } #endif TMC2130_ADV()