Tuned STEALTHCHOP for successful print.

master
Marcio Teixeira 7 years ago
parent c864f864ee
commit a96dadb94e

@ -13,7 +13,7 @@
* got disabled. * got disabled.
*/ */
#define LULZBOT_FW_VERSION ".45" // Change this with each update #define LULZBOT_FW_VERSION ".46" // Change this with each update
#if ( \ #if ( \
!defined(LULZBOT_Gladiola_Mini) && \ !defined(LULZBOT_Gladiola_Mini) && \
@ -151,8 +151,7 @@
#define LULZBOT_USE_Z_BELT #define LULZBOT_USE_Z_BELT
#define LULZBOT_USE_SERIES_Z_MOTORS #define LULZBOT_USE_SERIES_Z_MOTORS
#define LULZBOT_USE_32_MICROSTEPS_ON_Z #define LULZBOT_USE_32_MICROSTEPS_ON_Z
#define LULZBOT_USE_TMC_COOLSTEP #define LULZBOT_USE_TMC_STEALTHCHOP
//#define LULZBOT_USE_TMC_STEALTHCHOP
#define LULZBOT_BAUDRATE 250000 #define LULZBOT_BAUDRATE 250000
#define LULZBOT_PRINTCOUNTER #define LULZBOT_PRINTCOUNTER
#define LULZBOT_UUID "1b8d32d3-0596-4335-8cd4-f3741a095087" #define LULZBOT_UUID "1b8d32d3-0596-4335-8cd4-f3741a095087"
@ -172,8 +171,7 @@
#define LULZBOT_USE_Z_BELT #define LULZBOT_USE_Z_BELT
#define LULZBOT_USE_SERIES_Z_MOTORS #define LULZBOT_USE_SERIES_Z_MOTORS
#define LULZBOT_USE_32_MICROSTEPS_ON_Z #define LULZBOT_USE_32_MICROSTEPS_ON_Z
#define LULZBOT_USE_TMC_COOLSTEP #define LULZBOT_USE_TMC_STEALTHCHOP
//#define LULZBOT_USE_TMC_STEALTHCHOP
#define LULZBOT_BAUDRATE 250000 #define LULZBOT_BAUDRATE 250000
#define LULZBOT_PRINTCOUNTER #define LULZBOT_PRINTCOUNTER
#define LULZBOT_UUID "1b8d32d3-0596-4335-8cd4-f3741a095087" #define LULZBOT_UUID "1b8d32d3-0596-4335-8cd4-f3741a095087"
@ -1218,7 +1216,7 @@
//#define LULZBOT_HOMING_USES_PROBE_PINS //#define LULZBOT_HOMING_USES_PROBE_PINS
#define LULZBOT_SENSORLESS_HOMING_Z_INIT \ #define LULZBOT_SENSORLESS_HOMING_Z_INIT \
LULZBOT_ENABLE_STALLGUARD(stepperZ); \ LULZBOT_ENABLE_COOLSTEP_WITH_STALLGUARD(stepperZ); \
/* Set stallguard value for Z sensing */ \ /* Set stallguard value for Z sensing */ \
stepperZ.sg_stall_value(LULZBOT_Z_HOMING_SENSITIVITY); \ stepperZ.sg_stall_value(LULZBOT_Z_HOMING_SENSITIVITY); \
stepperZ.diag1_stall(0); /* Start disabled */ stepperZ.diag1_stall(0); /* Start disabled */
@ -1249,26 +1247,10 @@
#define LULZBOT_HOLD_MULTIPLIER 0.5 #define LULZBOT_HOLD_MULTIPLIER 0.5
#define LULZBOT_COOLSTEP_DISABLED 1024UL * 1024UL - 1UL // If true, use STEALTHCHOP, otherwise use COOLSTEP
#define LULZBOT_STEALTHCHOP LULZBOT_USE_TMC_STEALTHCHOP
#if defined(LULZBOT_USE_TMC_COOLSTEP) && defined(LULZBOT_USE_TMC_STEALTHCHOP) #define LULZBOT_HYBRID_THRESHOLD
// If both using COOLSTEP and STEALTHCHOP, then set a transition velocity
#define LULZBOT_COOLSTEP_MIN 200UL
#define LULZBOT_STEALTHCHOP
#elif defined(LULZBOT_USE_TMC_COOLSTEP) && !defined(LULZBOT_USE_TMC_STEALTHCHOP)
// Enable COOLSTEP for all velocities
#define LULZBOT_COOLSTEP_MIN 1UL
#elif !defined(LULZBOT_USE_TMC_COOLSTEP) && defined(LULZBOT_USE_TMC_STEALTHCHOP)
// Disable COOLSTEP for all velocities
#define LULZBOT_COOLSTEP_MIN LULZBOT_COOLSTEP_DISABLED
#define LULZBOT_STEALTHCHOP
#else
// Disable COOLSTEP for all velocities
#define LULZBOT_COOLSTEP_MIN LULZBOT_COOLSTEP_DISABLED
#endif
#define LULZBOT_TMC_INIT(st) \ #define LULZBOT_TMC_INIT(st) \
/* The EinsyRambo connects both diag pins to the same */ \ /* The EinsyRambo connects both diag pins to the same */ \
@ -1281,9 +1263,6 @@
st.shaft_dir(1); \ st.shaft_dir(1); \
st.external_ref(0); /* I_scale_analog = 0 */ \ st.external_ref(0); /* I_scale_analog = 0 */ \
st.internal_sense_R(0); /* internal_Rsense = 0 */ \ st.internal_sense_R(0); /* internal_Rsense = 0 */ \
/* Enable coolstep */ \
st.sg_min(1); \
st.sg_max(10);
#define LULZBOT_TMC_REPORT(AXIS) \ #define LULZBOT_TMC_REPORT(AXIS) \
{ \ { \
@ -1344,12 +1323,12 @@
/* The following function accumulates the average of a /* The following function accumulates the average of a
stallguard values during a planner move */ stallguard values during a planner move */
#define LULZBOT_TMC_STALLGUARD_AVG_VARS \ #define LULZBOT_TMC_AVG_VARS \
static uint8_t current_tail, tally_freq = 10; \ static uint8_t current_tail, tally_freq = 10; \
static uint32_t sum_sg_X = 0, sum_sg_Y = 0, sum_sg_Z = 0, sum_sg_E0 = 0, num_sg = 0; \ static uint32_t sum_sg_X = 0, sum_sg_Y = 0, sum_sg_Z = 0, sum_sg_E0 = 0, num_sg = 0; \
static uint32_t sum_tstep_X = 0, sum_tstep_Y = 0, sum_tstep_Z = 0, sum_tstep_E0 = 0; static uint32_t sum_tstep_X = 0, sum_tstep_Y = 0, sum_tstep_Z = 0, sum_tstep_E0 = 0;
#define LULZBOT_TMC_STALLGUARD_AVG_FUNC \ #define LULZBOT_TMC_AVG_FUNC \
if(--tally_freq == 0) { \ if(--tally_freq == 0) { \
tally_freq = 10; \ tally_freq = 10; \
if(planner.blocks_queued()) { \ if(planner.blocks_queued()) { \
@ -1391,26 +1370,28 @@
} \ } \
} }
#define LULZBOT_TMC_M119_STALLGUARD_REPORT \ #define LULZBOT_TMC_M119_REPORT \
SERIAL_ECHOLNPGM("TMC2130 Status:"); \ SERIAL_ECHOLNPGM("TMC2130 Status:"); \
LULZBOT_TMC_REPORT(X) \ LULZBOT_TMC_REPORT(X) \
LULZBOT_TMC_REPORT(Y) \ LULZBOT_TMC_REPORT(Y) \
LULZBOT_TMC_REPORT(Z) \ LULZBOT_TMC_REPORT(Z) \
LULZBOT_TMC_REPORT(E0) LULZBOT_TMC_REPORT(E0)
#define LULZBOT_ENABLE_COOLSTEP(st) \ #define LULZBOT_ENABLE_COOLSTEP_WITH_STALLGUARD(st) \
/* Enable stallguard by disabling steathchop */ \ /* Disable steathchop */ \
st.coolstep_min_speed(LULZBOT_COOLSTEP_MIN); \ st.stealthChop(0); \
st.stealthChop(0); /* Enable coolstep for all velocities */ \
st.coolstep_min_speed(1024UL * 1024UL - 1UL); \
#define LULZBOT_ENABLE_STALLGUARD(st) \ st.sg_min(1); \
/* Enable stallguard by disabling steathchop */ \ st.sg_max(10);
st.coolstep_min_speed(LULZBOT_COOLSTEP_DISABLED); \
st.stealthChop(0);
#define LULZBOT_ENABLE_STEALTHCHOP(st) \ #define LULZBOT_ENABLE_STEALTHCHOP(st) \
st.coolstep_min_speed(LULZBOT_COOLSTEP_MIN); \ /* Enable steathchop */ \
st.stealthChop(1); st.stealthChop(1); \
/* Disable coolstep */ \
st.coolstep_min_speed(0); \
st.sg_min(0); \
st.sg_max(0);
#if defined(LULZBOT_USE_SERIES_Z_MOTORS) #if defined(LULZBOT_USE_SERIES_Z_MOTORS)
#define LULZBOT_Z_TOFF 1 #define LULZBOT_Z_TOFF 1
@ -1436,35 +1417,40 @@
stepperZ.hstrt(LULZBOT_Z_HSTRT); /* HSTART = [0..7] */ \ stepperZ.hstrt(LULZBOT_Z_HSTRT); /* HSTART = [0..7] */ \
stepperZ.hend(LULZBOT_Z_HEND); /* HEND = [0..15] */ \ stepperZ.hend(LULZBOT_Z_HEND); /* HEND = [0..15] */ \
stepperZ.tbl(LULZBOT_Z_TBL); /* TBL = [0..3] */ \ stepperZ.tbl(LULZBOT_Z_TBL); /* TBL = [0..3] */ \
/* Set Z homing sensitivity */ \ /* Set Z homing sensitivity, but not yet homing */ \
stepperZ.sg_stall_value(LULZBOT_Z_HOMING_SENSITIVITY); \ stepperZ.sg_stall_value(LULZBOT_Z_HOMING_SENSITIVITY); \
/* Always disable STEALHCHOP on E0 */ \ LULZBOT_SENSORLESS_HOMING_TOGGLE(stepperZ, false); \
LULZBOT_ENABLE_COOLSTEP(stepperE0);
#define LULZBOT_MOTOR_INIT_E \
/* Always use COOLSTEP on E0 */ \
LULZBOT_ENABLE_COOLSTEP_WITH_STALLGUARD(stepperE0); \
#define LULZBOT_TMC2130_ADV { \ #define LULZBOT_TMC2130_ADV { \
LULZBOT_MOTOR_INIT_XY \ LULZBOT_MOTOR_INIT_XY \
LULZBOT_MOTOR_INIT_Z \ LULZBOT_MOTOR_INIT_Z \
LULZBOT_MOTOR_INIT_E \
LULZBOT_SENSORLESS_HOMING_Z_INIT \ LULZBOT_SENSORLESS_HOMING_Z_INIT \
} }
#define LULZBOT_SENSORLESS_HOMING_ENABLE(st) \ /* Once homing is finished, return to the normal operating mode: */
/* Sometimes the X axis refuses to move at the start of G28, */ \ /* Either stealthchop or coolstep, as previously configured */
/* because the stallguard is triggered. Toggling in and out */ \
/* of STEALHCHOP mode seems to resolve this. */ \
LULZBOT_ENABLE_STEALTHCHOP(st) \
LULZBOT_ENABLE_STALLGUARD(st)
#if defined(LULZBOT_STEALTHCHOP) #if defined(LULZBOT_STEALTHCHOP)
#define LULZBOT_SENSORLESS_HOMING_DISABLE(st) LULZBOT_ENABLE_STEALTHCHOP(st) #define LULZBOT_DEFAULT_OPERATING_MODE(st) LULZBOT_ENABLE_STEALTHCHOP(st)
#else #else
#define LULZBOT_SENSORLESS_HOMING_DISABLE(st) LULZBOT_ENABLE_COOLSTEP(st) #define LULZBOT_DEFAULT_OPERATING_MODE(st) LULZBOT_ENABLE_COOLSTEP_WITH_STALLGUARD(st)
#endif #endif
/* Sensorless homing requires stallguard, which is not available with
* stealhchop, so switch to COOLSTEP prior to doing a homing move. */
#define LULZBOT_SENSORLESS_HOMING_TOGGLE(st, enable) \ #define LULZBOT_SENSORLESS_HOMING_TOGGLE(st, enable) \
if (enable) { \ if (enable) { \
LULZBOT_SENSORLESS_HOMING_ENABLE(st) \ /* Sometimes the X axis refuses to move at the start of G28, */ \
/* because the stallguard is triggered. Toggling in and out */ \
/* of STEALHCHOP mode seems to resolve this. */ \
LULZBOT_ENABLE_STEALTHCHOP(st) \
LULZBOT_ENABLE_COOLSTEP_WITH_STALLGUARD(st) \
} else { \ } else { \
LULZBOT_SENSORLESS_HOMING_DISABLE(st) \ LULZBOT_DEFAULT_OPERATING_MODE(st) \
} }
/* Leaving the toolhead resting on the endstops will likely cause /* Leaving the toolhead resting on the endstops will likely cause
@ -1488,9 +1474,9 @@
); \ ); \
} }
#else #else
#define LULZBOT_TMC_M119_STALLGUARD_REPORT #define LULZBOT_TMC_M119_REPORT
#define LULZBOT_TMC_STALLGUARD_AVG_VARS #define LULZBOT_TMC_AVG_VARS
#define LULZBOT_TMC_STALLGUARD_AVG_FUNC #define LULZBOT_TMC_AVG_FUNC
#define LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(AXIS) #define LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(AXIS)
#endif #endif
@ -1604,10 +1590,15 @@
#if defined(LULZBOT_USE_EINSYRAMBO) #if defined(LULZBOT_USE_EINSYRAMBO)
// These values specify the maximum current, but actual // These values specify the maximum current, but actual
// currents may be lower due to the regulation provided // currents may be lower when used with COOLCONF
// by COOLCONF #if defined(LULZBOT_USE_TMC_STEALTHCHOP)
/* Stealthchop seems to run a bit hotter on X */
#define LULZBOT_MOTOR_CURRENT_XY 900 // mA
#define LULZBOT_MOTOR_CURRENT_Z 960 // mA
#else
#define LULZBOT_MOTOR_CURRENT_XY 960 // mA #define LULZBOT_MOTOR_CURRENT_XY 960 // mA
#define LULZBOT_MOTOR_CURRENT_Z 960 // mA #define LULZBOT_MOTOR_CURRENT_Z 960 // mA
#endif
#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_SCREW) #elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_SCREW)
#define LULZBOT_MOTOR_CURRENT_XY 1300 // mA #define LULZBOT_MOTOR_CURRENT_XY 1300 // mA
@ -1640,16 +1631,14 @@
#if defined(LULZBOT_IS_MINI) #if defined(LULZBOT_IS_MINI)
#define LULZBOT_XY_STEPS 100.5 #define LULZBOT_XY_STEPS 100.5
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 8, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,1000} #define LULZBOT_DEFAULT_ACCELERATION 2000
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 2000
#define LULZBOT_DEFAULT_XJERK 12.0 #define LULZBOT_DEFAULT_XJERK 12.0
#define LULZBOT_DEFAULT_YJERK 12.0 #define LULZBOT_DEFAULT_YJERK 12.0
#define LULZBOT_DEFAULT_ZJERK 0.4 #define LULZBOT_DEFAULT_ZJERK 0.4
#define LULZBOT_DEFAULT_ACCELERATION 2000
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 2000
#define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.377 #define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.377
#elif defined(LULZBOT_IS_TAZ) #elif defined(LULZBOT_IS_TAZ)
@ -1671,6 +1660,9 @@
#define LULZBOT_Z_STEPS 1600 #define LULZBOT_Z_STEPS 1600
#define LULZBOT_Z_MICROSTEPS 16 #define LULZBOT_Z_MICROSTEPS 16
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 8, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,1000}
#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) && !defined(LULZBOT_USE_Z_GEARBOX) #elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) && !defined(LULZBOT_USE_Z_GEARBOX)
#if defined(LULZBOT_USE_32_MICROSTEPS_ON_Z) #if defined(LULZBOT_USE_32_MICROSTEPS_ON_Z)
#define LULZBOT_Z_STEPS 201 #define LULZBOT_Z_STEPS 201
@ -1680,7 +1672,13 @@
#define LULZBOT_Z_MICROSTEPS 16 #define LULZBOT_Z_MICROSTEPS 16
#endif #endif
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 300, 40} // (mm/sec) #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 300, 40} // (mm/sec)
#if defined(LULZBOT_USE_TMC_STEALTHCHOP)
/* Stealthchop can skip steps if the acceleration is too high */
#define LULZBOT_DEFAULT_MAX_ACCELERATION {500,500,200,1000}
#else
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,200,1000} #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,200,1000}
#endif
#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) && defined(LULZBOT_USE_Z_GEARBOX) #elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) && defined(LULZBOT_USE_Z_GEARBOX)
#define Z_FULL_STEPS_PER_ROTATION 200 #define Z_FULL_STEPS_PER_ROTATION 200
@ -1691,8 +1689,8 @@
#define LULZBOT_Z_STEPS (Z_FULL_STEPS_PER_ROTATION * Z_MICROSTEPS * Z_MOTOR_GEAR_REDUCTION / double(Z_BELT_PITCH) / double(Z_PULLEY_TEETH)) #define LULZBOT_Z_STEPS (Z_FULL_STEPS_PER_ROTATION * Z_MICROSTEPS * Z_MOTOR_GEAR_REDUCTION / double(Z_BELT_PITCH) / double(Z_PULLEY_TEETH))
#define LULZBOT_Z_MICROSTEPS 16 #define LULZBOT_Z_MICROSTEPS 16
#undef LULZBOT_DEFAULT_MAX_FEEDRATE
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 8, 25} // (mm/sec) #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 8, 25} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,1000}
#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW) #elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW)
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec) #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)

@ -1028,7 +1028,7 @@
* STEALTHCHOP needs to be enabled. * STEALTHCHOP needs to be enabled.
* M913 X/Y/Z/E to live tune the setting * M913 X/Y/Z/E to live tune the setting
*/ */
//#define HYBRID_THRESHOLD #define HYBRID_THRESHOLD LULZBOT_HYBRID_THRESHOLD
#define X_HYBRID_THRESHOLD 100 // [mm/s] #define X_HYBRID_THRESHOLD 100 // [mm/s]
#define X2_HYBRID_THRESHOLD 100 #define X2_HYBRID_THRESHOLD 100

@ -133,7 +133,7 @@ void Endstops::init() {
} // Endstops::init } // Endstops::init
LULZBOT_TMC_STALLGUARD_AVG_VARS LULZBOT_TMC_AVG_VARS
void Endstops::report_state() { void Endstops::report_state() {
if (endstop_hit_bits) { if (endstop_hit_bits) {
@ -183,7 +183,7 @@ void Endstops::report_state() {
} }
#endif #endif
} }
LULZBOT_TMC_STALLGUARD_AVG_FUNC LULZBOT_TMC_AVG_FUNC
LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(X) LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(X)
LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(Y) LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(Y)
LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(Z) LULZBOT_TMC_REPORT_CURRENT_ADJUSTMENTS(Z)
@ -232,7 +232,7 @@ void Endstops::M119() {
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR); SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
#endif #endif
LULZBOT_TMC_M119_STALLGUARD_REPORT LULZBOT_TMC_M119_REPORT
} // Endstops::M119 } // Endstops::M119
#if ENABLED(Z_DUAL_ENDSTOPS) #if ENABLED(Z_DUAL_ENDSTOPS)

Loading…
Cancel
Save