|
|
@ -231,20 +231,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
/*********************** HOMING & AXIS DIRECTIONS ******************************/
|
|
|
|
/*********************** HOMING & AXIS DIRECTIONS ******************************/
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_USE_EINSYRAMBO)
|
|
|
|
|
|
|
|
// The axis connectors seem to be reversed on the EinsyRambo.
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_X_DIR true
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_Y_DIR false
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_Z_DIR true
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_E0_DIR false
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_E1_DIR false
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#define LULZBOT_INVERT_X_DIR false
|
|
|
|
#define LULZBOT_INVERT_X_DIR false
|
|
|
|
#define LULZBOT_INVERT_Y_DIR true
|
|
|
|
#define LULZBOT_INVERT_Y_DIR true
|
|
|
|
#define LULZBOT_INVERT_Z_DIR false
|
|
|
|
#define LULZBOT_INVERT_Z_DIR false
|
|
|
|
#define LULZBOT_INVERT_E0_DIR true
|
|
|
|
#define LULZBOT_INVERT_E0_DIR true
|
|
|
|
#define LULZBOT_INVERT_E1_DIR true
|
|
|
|
#define LULZBOT_INVERT_E1_DIR true
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_IS_MINI)
|
|
|
|
#if defined(LULZBOT_IS_MINI)
|
|
|
|
#define LULZBOT_HOMING_Z_WITH_PROBE false
|
|
|
|
#define LULZBOT_HOMING_Z_WITH_PROBE false
|
|
|
@ -412,47 +403,43 @@
|
|
|
|
* Z_MIN_PIN corresponds to the Z-Home push button.
|
|
|
|
* Z_MIN_PIN corresponds to the Z-Home push button.
|
|
|
|
* Z_MIN_PROBE_PIN are the bed washers.
|
|
|
|
* Z_MIN_PROBE_PIN are the bed washers.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
#if defined(LULZBOT_Gladiola_MiniEinsy)
|
|
|
|
#define LULZBOT_SET_PIN_STATE(pin, enable) \
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_MINI_BED)
|
|
|
|
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
|
|
|
|
|
|
|
|
if(enable) { \
|
|
|
|
if(enable) { \
|
|
|
|
/* Set as inputs with pull-up resistor */ \
|
|
|
|
/* Set as inputs with pull-up resistor */ \
|
|
|
|
SET_INPUT(Z_MIN_PIN); \
|
|
|
|
SET_INPUT(pin); \
|
|
|
|
WRITE(Z_MIN_PIN, HIGH); \
|
|
|
|
WRITE(pin, HIGH); \
|
|
|
|
} else { \
|
|
|
|
} else { \
|
|
|
|
/* Ground to prevent EMI */ \
|
|
|
|
/* Ground to prevent EMI */ \
|
|
|
|
SET_OUTPUT(Z_MIN_PIN); \
|
|
|
|
SET_OUTPUT(pin); \
|
|
|
|
WRITE(Z_MIN_PIN, LOW); \
|
|
|
|
WRITE(pin, LOW); \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_Gladiola_MiniEinsy)
|
|
|
|
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable) \
|
|
|
|
|
|
|
|
endstops.enable_z_probe(enable);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_MINI_BED)
|
|
|
|
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
|
|
|
|
|
|
|
|
endstops.enable_z_probe(enable); \
|
|
|
|
|
|
|
|
LULZBOT_SET_PIN_STATE(Z_MIN_PIN, enable) \
|
|
|
|
LULZBOT_EXTRUDER_MOTOR_SHUTOFF_ON_PROBE(enable) \
|
|
|
|
LULZBOT_EXTRUDER_MOTOR_SHUTOFF_ON_PROBE(enable) \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_USE_HOME_BUTTON)
|
|
|
|
#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_USE_HOME_BUTTON)
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
|
|
|
|
if(enable) { \
|
|
|
|
endstops.enable_z_probe(enable); \
|
|
|
|
/* Set both as inputs with pull-up resistor */ \
|
|
|
|
LULZBOT_SET_PIN_STATE(Z_MIN_PIN, enable) \
|
|
|
|
SET_INPUT(LULZBOT_Z_MIN_PROBE_PIN); \
|
|
|
|
LULZBOT_SET_PIN_STATE(LULZBOT_Z_MIN_PROBE_PIN, enable) \
|
|
|
|
WRITE(LULZBOT_Z_MIN_PROBE_PIN, HIGH); \
|
|
|
|
|
|
|
|
SET_INPUT(Z_MIN_PIN); \
|
|
|
|
|
|
|
|
WRITE(Z_MIN_PIN, HIGH); \
|
|
|
|
|
|
|
|
/* The following is required since Marlin would \
|
|
|
|
|
|
|
|
* not normally deploy the probe for Z-Min */ \
|
|
|
|
|
|
|
|
endstops.enable_z_probe(true); \
|
|
|
|
|
|
|
|
} else { \
|
|
|
|
|
|
|
|
/* Ground both pins to prevent EMI */ \
|
|
|
|
|
|
|
|
SET_OUTPUT(LULZBOT_Z_MIN_PROBE_PIN); \
|
|
|
|
|
|
|
|
WRITE(LULZBOT_Z_MIN_PROBE_PIN, LOW); \
|
|
|
|
|
|
|
|
SET_OUTPUT(Z_MIN_PIN); \
|
|
|
|
|
|
|
|
WRITE(Z_MIN_PIN, LOW); \
|
|
|
|
|
|
|
|
endstops.enable_z_probe(false); \
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable)
|
|
|
|
#define LULZBOT_ENABLE_PROBE_PINS(enable)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* We need a delay before M119, since LULZBOT_ENABLE_PROBE_PINS
|
|
|
|
|
|
|
|
* calls endstops.enable_z_probe, but there is a delay before
|
|
|
|
|
|
|
|
* the ISR checks endstops again */
|
|
|
|
|
|
|
|
#define LULZBOT_DELAY_BEFORE_M119 safe_delay(500);
|
|
|
|
|
|
|
|
|
|
|
|
/* Make it so M42 S<state> controls the state of the
|
|
|
|
/* Make it so M42 S<state> controls the state of the
|
|
|
|
/* probe lines. This is useful for troubleshooting. */
|
|
|
|
/* probe lines. This is useful for troubleshooting. */
|
|
|
|
#define LULZBOT_M42_TOGGLES_PROBE_PINS \
|
|
|
|
#define LULZBOT_M42_TOGGLES_PROBE_PINS \
|
|
|
@ -967,21 +954,43 @@
|
|
|
|
// EinsyRambo uses a 220 mOhm sense resistor
|
|
|
|
// EinsyRambo uses a 220 mOhm sense resistor
|
|
|
|
#define LULZBOT_R_SENSE 0.22
|
|
|
|
#define LULZBOT_R_SENSE 0.22
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_HOLD_MULTIPLIER 0.5
|
|
|
|
|
|
|
|
|
|
|
|
#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 */ \
|
|
|
|
/* microcontroller pin and provides a pull up resistor, */ \
|
|
|
|
/* microcontroller pin and provides a pull up resistor, */ \
|
|
|
|
/* so configure the pin as active low. */ \
|
|
|
|
/* so configure the pin as active low. */ \
|
|
|
|
st.diag0_active_high(0); \
|
|
|
|
st.diag0_active_high(0); \
|
|
|
|
st.diag1_active_high(0); \
|
|
|
|
st.diag1_active_high(0); \
|
|
|
|
st.diag1_stall(1);
|
|
|
|
st.diag1_stall(1); \
|
|
|
|
|
|
|
|
/* Reverse the motor direction so it matches the Rambo */ \
|
|
|
|
|
|
|
|
st.shaft_dir(1); \
|
|
|
|
|
|
|
|
st.external_ref(0); /* I_scale_analog = 0 */ \
|
|
|
|
|
|
|
|
st.internal_sense_R(0); /* internal_Rsense = 0 */ \
|
|
|
|
|
|
|
|
/* Disable short protection since this generates false positives
|
|
|
|
|
|
|
|
on the Z axis when probing.
|
|
|
|
|
|
|
|
*/ \
|
|
|
|
|
|
|
|
//st.disable_short_protection(1)
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_STALLGUARD_REPORT \
|
|
|
|
#define LULZBOT_TMC_HEALTHCHECK(AXIS) \
|
|
|
|
static int nextSgReport = 100; \
|
|
|
|
{ \
|
|
|
|
if(planner.blocks_queued()) { \
|
|
|
|
uint16_t ALWAYS_1, DIR_0, DIR_1; \
|
|
|
|
if(nextSgReport-- == 0) { \
|
|
|
|
ALWAYS_1 = (stepper##AXIS.IOIN() >> 6) & 0b1; \
|
|
|
|
nextSgReport = 100; \
|
|
|
|
AXIS##_DIR_WRITE(0); DIR_0 = (stepper##AXIS.IOIN() >> 1) & 0b1; \
|
|
|
|
uint32_t DRVSTATUS = stepperX.DRV_STATUS(); \
|
|
|
|
AXIS##_DIR_WRITE(1); DIR_1 = (stepper##AXIS.IOIN() >> 1) & 0b1; \
|
|
|
|
uint16_t SG_RESULT = DRVSTATUS & 0b111111111; \
|
|
|
|
if(!ALWAYS_1 || DIR_0 != 0 || DIR_1 != 1) { \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPGM("Failed TMC driver health check!"); \
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_REPORT(AXIS) \
|
|
|
|
|
|
|
|
{ \
|
|
|
|
|
|
|
|
uint32_t DRVSTATUS = stepper##AXIS.DRV_STATUS(); \
|
|
|
|
|
|
|
|
uint32_t IOIN = stepper##AXIS.IOIN(); \
|
|
|
|
|
|
|
|
uint32_t IHOLD_IRUN = stepper##AXIS.IHOLD_IRUN(); \
|
|
|
|
|
|
|
|
uint32_t CHOPCONF = stepper##AXIS.CHOPCONF(); \
|
|
|
|
|
|
|
|
uint16_t SG_RESULT = (DRVSTATUS) & 0b111111111; \
|
|
|
|
|
|
|
|
bool drv_enn = (IOIN >> 4) & 0b1; \
|
|
|
|
bool stst = (DRVSTATUS >> 31) & 0b1; \
|
|
|
|
bool stst = (DRVSTATUS >> 31) & 0b1; \
|
|
|
|
bool olb = (DRVSTATUS >> 30) & 0b1; \
|
|
|
|
bool olb = (DRVSTATUS >> 30) & 0b1; \
|
|
|
|
bool ola = (DRVSTATUS >> 29) & 0b1; \
|
|
|
|
bool ola = (DRVSTATUS >> 29) & 0b1; \
|
|
|
@ -990,10 +999,12 @@
|
|
|
|
bool otpw = (DRVSTATUS >> 26) & 0b1; \
|
|
|
|
bool otpw = (DRVSTATUS >> 26) & 0b1; \
|
|
|
|
bool ot = (DRVSTATUS >> 25) & 0b1; \
|
|
|
|
bool ot = (DRVSTATUS >> 25) & 0b1; \
|
|
|
|
bool fsactive = (DRVSTATUS >> 15) & 0b1; \
|
|
|
|
bool fsactive = (DRVSTATUS >> 15) & 0b1; \
|
|
|
|
SERIAL_PROTOCOLPGM("Stepper X: "); \
|
|
|
|
uint16_t ihold = (IHOLD_IRUN) & 0b11111; \
|
|
|
|
SERIAL_PROTOCOLPGM("SG_RESULT:"); \
|
|
|
|
uint16_t irun = (IHOLD_IRUN >> 8) & 0b11111; \
|
|
|
|
SERIAL_PROTOCOLLN(SG_RESULT); \
|
|
|
|
bool vsense = (CHOPCONF >> 17) & 0b1; \
|
|
|
|
if(stst) SERIAL_PROTOCOLPGM("standstill "); \
|
|
|
|
SERIAL_PROTOCOLPGM("TMC_" #AXIS ": "); \
|
|
|
|
|
|
|
|
if(!drv_enn) SERIAL_PROTOCOLPGM("en "); \
|
|
|
|
|
|
|
|
if(stst) SERIAL_PROTOCOLPGM("st "); \
|
|
|
|
if(olb) SERIAL_PROTOCOLPGM("olb "); \
|
|
|
|
if(olb) SERIAL_PROTOCOLPGM("olb "); \
|
|
|
|
if(ola) SERIAL_PROTOCOLPGM("ola "); \
|
|
|
|
if(ola) SERIAL_PROTOCOLPGM("ola "); \
|
|
|
|
if(s2gb) SERIAL_PROTOCOLPGM("s2gb "); \
|
|
|
|
if(s2gb) SERIAL_PROTOCOLPGM("s2gb "); \
|
|
|
@ -1001,22 +1012,59 @@
|
|
|
|
if(otpw) SERIAL_PROTOCOLPGM("otpw "); \
|
|
|
|
if(otpw) SERIAL_PROTOCOLPGM("otpw "); \
|
|
|
|
if(ot) SERIAL_PROTOCOLPGM("ot "); \
|
|
|
|
if(ot) SERIAL_PROTOCOLPGM("ot "); \
|
|
|
|
if(fsactive) SERIAL_PROTOCOLPGM("fsactive "); \
|
|
|
|
if(fsactive) SERIAL_PROTOCOLPGM("fsactive "); \
|
|
|
|
} \
|
|
|
|
SERIAL_PROTOCOLPGM("ihold_irun:"); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOL(ihold); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPGM("/"); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOL(irun); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPGM(" vsense:"); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOL(vsense); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPGM(" SGR:"); \
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLLN(SG_RESULT); \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_HEALTHCHECK(AXIS) \
|
|
|
|
/* For reasons unknown, s2ga and s2gb seem to be getting triggered
|
|
|
|
|
|
|
|
* during probing at the end of Z motions. This checks to see if
|
|
|
|
|
|
|
|
* these flags are set, and if so, resets the drivers */
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_CHECK_S2G(AXIS, WHERE) \
|
|
|
|
{ \
|
|
|
|
{ \
|
|
|
|
uint16_t ALWAYS_1, DIR_0, DIR_1; \
|
|
|
|
safe_delay(100); \
|
|
|
|
ALWAYS_1 = (stepper##AXIS.IOIN() >> 6) & 0b1; \
|
|
|
|
uint32_t DRVSTATUS = stepper##AXIS.DRV_STATUS(); \
|
|
|
|
AXIS##_DIR_WRITE(0); DIR_0 = (stepper##AXIS.IOIN() >> 1) & 0b1; \
|
|
|
|
bool s2gb = (DRVSTATUS >> 28) & 0b1; \
|
|
|
|
AXIS##_DIR_WRITE(1); DIR_1 = (stepper##AXIS.IOIN() >> 1) & 0b1; \
|
|
|
|
bool s2ga = (DRVSTATUS >> 27) & 0b1; \
|
|
|
|
if(!ALWAYS_1 || DIR_0 != 0 || DIR_1 != 1) { \
|
|
|
|
if(s2ga || s2gb) { \
|
|
|
|
SERIAL_PROTOCOLPGM("Failed TMC driver health check!"); \
|
|
|
|
SERIAL_PROTOCOLLN("s2g detected in checkpoint#" #WHERE); \
|
|
|
|
|
|
|
|
/* Z_ENABLE_WRITE(!Z_ENABLE_ON); */ \
|
|
|
|
|
|
|
|
/* Z_ENABLE_WRITE( Z_ENABLE_ON); */ \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_PROBE_DIAGNOSTICS(TRIGGERED) \
|
|
|
|
|
|
|
|
if(TRIGGERED) \
|
|
|
|
|
|
|
|
SERIAL_ERRORLNPGM("Probe triggered"); \
|
|
|
|
|
|
|
|
else \
|
|
|
|
|
|
|
|
SERIAL_ERRORLNPGM("Probe not triggered");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*#define LULZBOT_TMC_G0G1_STALLGUARD_REPORT \
|
|
|
|
|
|
|
|
static int nextSgReport = 100; \
|
|
|
|
|
|
|
|
if(planner.blocks_queued()) { \
|
|
|
|
|
|
|
|
if(nextSgReport-- == 0) { \
|
|
|
|
|
|
|
|
nextSgReport = 100; \
|
|
|
|
|
|
|
|
LULZBOT_TMC_REPORT(AXIS)\
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_G0G1_STALLGUARD_REPORT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_M119_STALLGUARD_REPORT \
|
|
|
|
|
|
|
|
LULZBOT_TMC_REPORT(X) \
|
|
|
|
|
|
|
|
LULZBOT_TMC_REPORT(Y) \
|
|
|
|
|
|
|
|
LULZBOT_TMC_REPORT(Z)
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
#define LULZBOT_STALLGUARD_REPORT
|
|
|
|
#define LULZBOT_TMC_M119_STALLGUARD_REPORT
|
|
|
|
#define LULZBOT_TMC_HEALTHCHECK
|
|
|
|
#define LULZBOT_TMC_G0G1_STALLGUARD_REPORT
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_HEALTHCHECK(AXIS)
|
|
|
|
|
|
|
|
#define LULZBOT_TMC_CHECK_S2G(AXIS, WHERE)
|
|
|
|
|
|
|
|
#define LULZBOT_PROBE_DIAGNOSTICS(TRIGGERED)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_SENSORLESS_HOMING)
|
|
|
|
#if defined(LULZBOT_SENSORLESS_HOMING)
|
|
|
@ -1028,9 +1076,9 @@
|
|
|
|
#define LULZBOT_USE_ZMAX_PLUG
|
|
|
|
#define LULZBOT_USE_ZMAX_PLUG
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_X_MIN_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_X_MIN_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
|
|
|
|
//#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Y_MIN_ENDSTOP_INVERTING true
|
|
|
|
//#define LULZBOT_Y_MIN_ENDSTOP_INVERTING true
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Z_MIN_ENDSTOP_INVERTING true
|
|
|
|
#define LULZBOT_Z_MIN_ENDSTOP_INVERTING true
|
|
|
@ -1051,7 +1099,7 @@
|
|
|
|
// stealth freq the cooler the motor drivers will operate.
|
|
|
|
// stealth freq the cooler the motor drivers will operate.
|
|
|
|
#define LULZBOT_STEALTH_FREQ 0
|
|
|
|
#define LULZBOT_STEALTH_FREQ 0
|
|
|
|
|
|
|
|
|
|
|
|
// For some reason, Quickhome is not reliable with sensorless homing
|
|
|
|
// Quickhome does not work with sensorless homing
|
|
|
|
#undef LULZBOT_QUICKHOME
|
|
|
|
#undef LULZBOT_QUICKHOME
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_X_HOMING_SENSITIVITY 5
|
|
|
|
#define LULZBOT_X_HOMING_SENSITIVITY 5
|
|
|
@ -1128,12 +1176,46 @@
|
|
|
|
Nozzle::clean(0, 2, 0, 0); /* wipe nozzle */ \
|
|
|
|
Nozzle::clean(0, 2, 0, 0); /* wipe nozzle */ \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/************ ACCELERATION, FEEDRATES, XYZ MOTOR STEPS AND CURRENTS ************/
|
|
|
|
/******************************** MOTOR CURRENTS *******************************/
|
|
|
|
|
|
|
|
|
|
|
|
// Values for XYZ vary by printer model, values for E vary by toolhead.
|
|
|
|
// Values for XYZ vary by printer model, values for E vary by toolhead.
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_IS_MINI)
|
|
|
|
#if defined(LULZBOT_Gladiola_MiniEinsy)
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 960 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 960 // mA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if LULZBOT_MOTOR_CURRENT_E > 960
|
|
|
|
|
|
|
|
#warning This toolhead may not work properly with the EinsyRambo
|
|
|
|
|
|
|
|
#undef LULZBOT_MOTOR_CURRENT_E
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_E 960 // mA
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD)
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 1300 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1630 // mA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD)
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 1300 // mA
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 1300 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1000 // mA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Juniper_TAZ5)
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 950 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1275 // mA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Oliveoil_TAZ6)
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 950 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1075 // mA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Quiver_TAZ7)
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 950 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 950 // mA
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************** ACCELERATION, FEEDRATES AND XYZ MOTOR STEPS *******************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Values for XYZ vary by printer model, values for E vary by toolhead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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_FEEDRATE {300, 300, 8, 40} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,1000}
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,1000}
|
|
|
@ -1148,7 +1230,6 @@
|
|
|
|
#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)
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_XY 950 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_XY_STEPS 100.5
|
|
|
|
#define LULZBOT_XY_STEPS 100.5
|
|
|
|
#define LULZBOT_DEFAULT_XJERK 8.0
|
|
|
|
#define LULZBOT_DEFAULT_XJERK 8.0
|
|
|
|
#define LULZBOT_DEFAULT_YJERK 8.0
|
|
|
|
#define LULZBOT_DEFAULT_YJERK 8.0
|
|
|
@ -1164,7 +1245,6 @@
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD) || defined(LULZBOT_Gladiola_MiniEinsy)
|
|
|
|
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD) || defined(LULZBOT_Gladiola_MiniEinsy)
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1630 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD)
|
|
|
|
#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD)
|
|
|
@ -1175,32 +1255,42 @@
|
|
|
|
#define Z_MOTOR_GEAR_REDUCTION 26.8512396694
|
|
|
|
#define Z_MOTOR_GEAR_REDUCTION 26.8512396694
|
|
|
|
#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_MOTOR_CURRENT_Z 1000 // mA
|
|
|
|
|
|
|
|
#undef LULZBOT_DEFAULT_MAX_FEEDRATE
|
|
|
|
#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)
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Juniper_TAZ5)
|
|
|
|
#elif defined(LULZBOT_Juniper_TAZ5)
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1275 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Oliveoil_TAZ6)
|
|
|
|
#elif defined(LULZBOT_Oliveoil_TAZ6)
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 1075 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
#define LULZBOT_Z_STEPS 1600
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_Quiver_TAZ7)
|
|
|
|
#elif defined(LULZBOT_Quiver_TAZ7)
|
|
|
|
// Prototype Z-belt driven TAZ 7
|
|
|
|
// Prototype Z-belt driven TAZ 7
|
|
|
|
#define LULZBOT_MOTOR_CURRENT_Z 950 // mA
|
|
|
|
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 10, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 10, 25} // (mm/sec)
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000}
|
|
|
|
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000}
|
|
|
|
#define LULZBOT_Z_STEPS 1790.08264463
|
|
|
|
#define LULZBOT_Z_STEPS 1790.08264463
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_USE_EINSYRAMBO)
|
|
|
|
#if defined(LULZBOT_USE_EINSYRAMBO)
|
|
|
|
// Neither define LULZBOT_PWM_MOTOR_CURRENT nor LULZBOT_DIGIPOT_MOTOR_CURRENT
|
|
|
|
// Neither define LULZBOT_PWM_MOTOR_CURRENT nor LULZBOT_DIGIPOT_MOTOR_CURRENT,
|
|
|
|
|
|
|
|
// as the current is set in Configuration_adv.h under the HAVE_TMC2130 block
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure the current is in range, as setting it above this causes the
|
|
|
|
|
|
|
|
// value in irun to wrap around to zero, which fails silently!
|
|
|
|
|
|
|
|
#if LULZBOT_MOTOR_CURRENT_XY > 960 || \
|
|
|
|
|
|
|
|
LULZBOT_MOTOR_CURRENT_Z > 960 || \
|
|
|
|
|
|
|
|
LULZBOT_MOTOR_CURRENT_E > 960
|
|
|
|
|
|
|
|
#error Motor currents exceed the maximum values that can be set on the EinsyRambo
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_X_CURRENT LULZBOT_MOTOR_CURRENT_XY
|
|
|
|
|
|
|
|
#define LULZBOT_Y_CURRENT LULZBOT_MOTOR_CURRENT_XY
|
|
|
|
|
|
|
|
#define LULZBOT_Z_CURRENT LULZBOT_MOTOR_CURRENT_Z
|
|
|
|
|
|
|
|
#define LULZBOT_E0_CURRENT LULZBOT_MOTOR_CURRENT_E
|
|
|
|
|
|
|
|
|
|
|
|
#elif defined(LULZBOT_IS_MINI)
|
|
|
|
#elif defined(LULZBOT_IS_MINI)
|
|
|
|
#define LULZBOT_PWM_MOTOR_CURRENT { \
|
|
|
|
#define LULZBOT_PWM_MOTOR_CURRENT { \
|
|
|
|