@ -13,7 +13,7 @@
* got disabled .
*/
# define LULZBOT_FW_VERSION ".2 8 " // Change this with each update
# define LULZBOT_FW_VERSION ".2 9 " // Change this with each update
# if ( \
! defined ( LULZBOT_Gladiola_Mini ) & & \
@ -113,6 +113,7 @@
# define LULZBOT_TWO_PIECE_BED
# define LULZBOT_USE_AUTOLEVELING
# define LULZBOT_SENSORLESS_HOMING
# define LULZBOT_REPROBE_EXTENDED_RECOVERY
# define LULZBOT_USE_TMC_STEALTHCHOP_Z
# define LULZBOT_USE_Z_BELT
# define LULZBOT_BAUDRATE 250000
@ -136,6 +137,7 @@
# define LULZBOT_TWO_PIECE_BED
# define LULZBOT_USE_AUTOLEVELING
# define LULZBOT_SENSORLESS_HOMING
# define LULZBOT_REPROBE_EXTENDED_RECOVERY
# define LULZBOT_USE_TMC_STEALTHCHOP_Z
# define LULZBOT_USE_Z_BELT
# define LULZBOT_BAUDRATE 250000
@ -1516,7 +1518,6 @@
/*************************** REWIPE FUNCTIONALITY *******************************/
# define LULZBOT_NUM_REWIPES 3
# define LULZBOT_NOZZLE_CLEAN_GOBACK_DISABLE
# if defined(LULZBOT_IS_TAZ)
# define LULZBOT_BED_PROBE_MIN 0 // Limit on pushing into the bed
@ -1536,43 +1537,89 @@
# define LULZBOT_REHOME_BEFORE_REWIPE
# endif
# if defined(LULZBOT_USE_Z_BELT)
# define LULZBOT_REWIPE_GCODE LULZBOT_MENU_AXIS_LEVELING_GCODE "\nG12 P0 S12 T0"
# else
# define LULZBOT_REWIPE_GCODE "G0 Z10\nG12 P0 S12 T0"
# endif
# if defined(LULZBOT_REPROBE_EXTENDED_RECOVERY)
/* New style reprobe recovery that can perform a more
complex recovery sequence */
# if defined(LULZBOT_USE_Z_BELT)
# define LULZBOT_REWIPE_GCODE LULZBOT_MENU_AXIS_LEVELING_GCODE "\nG12 P0 S12 T0"
# else
# define LULZBOT_REWIPE_GCODE "G0 Z10\nG12 P0 S12 T0"
# endif
# define LULZBOT_PROBE_RETRY_COUNTER_DECL int reprobe_retries_left = LULZBOT_NUM_REWIPES;
# define LULZBOT_G29_WITH_RETRY \
{ \
LULZBOT_ENABLE_PROBE_PINS ( true ) ; \
gcode_G29 ( ) ; \
if ( planner . leveling_active ) { \
/* Probe succeeded */ \
reprobe_retries_left = LULZBOT_NUM_REWIPES ; \
} else if ( reprobe_retries_left > 0 ) { \
/* Probe failed, but we still have retries left */ \
reprobe_retries_left - - ; \
# define LULZBOT_DO_PROBE_MOVE(speed) if (do_probe_move(LULZBOT_BED_PROBE_MIN, speed)) return NAN;
# define LULZBOT_PROBE_RETRY_COUNTER_DECL int reprobe_retries_left = LULZBOT_NUM_REWIPES;
# define LULZBOT_G29_WITH_RETRY \
{ \
LULZBOT_ENABLE_PROBE_PINS ( true ) ; \
set_bed_leveling_enabled ( false ) ; \
gcode_G29 ( ) ; \
if ( planner . leveling_active ) { \
/* Probe succeeded */ \
reprobe_retries_left = LULZBOT_NUM_REWIPES ; \
} else if ( reprobe_retries_left > 0 ) { \
/* Probe failed, but we still have retries left */ \
reprobe_retries_left - - ; \
SERIAL_ERRORLNPGM ( MSG_REWIPE ) ; \
LCD_MESSAGEPGM ( MSG_REWIPE ) ; \
enqueue_and_echo_commands_P ( PSTR ( LULZBOT_REWIPE_GCODE " \n G29 " ) ) ; \
} else { \
/* Probe failed; no retries left */ \
SERIAL_ERRORLNPGM ( " PROBE FAIL CLEAN NOZZLE " ) ; /* cura listens for this message specifically */ \
LCD_MESSAGEPGM ( MSG_ERR_PROBING_FAILED ) ; /* use a more friendly message on the LCD */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; /* play tone */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
do_blocking_move_to_z ( 100 , MMM_TO_MMS ( Z_PROBE_SPEED_FAST ) ) ; /* raise head */ \
current_position [ E_AXIS ] = 0 ; /* prime nozzle at 75 mm/sec */ \
planner . buffer_line ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] , current_position [ E_AXIS ] , 75. / 60 , active_extruder ) ; \
sync_plan_position_e ( ) ; \
stepper . synchronize ( ) ; \
kill ( PSTR ( MSG_ERR_PROBING_FAILED ) ) ; /* stop print job */ \
} \
LULZBOT_ENABLE_PROBE_PINS ( false ) ; \
}
# else
/* Old style rewipe recovery that repeats only the failed probe
point after a simple nozzle wipe . */
# define LULZBOT_NOZZLE_CLEAN_GOBACK
# define LULZBOT_DO_PROBE_MOVE(speed) \
/* do_probe_move returns true when it fails to hit an endstop, meaning we need to rewipe */ \
for ( int rewipes = 0 ; do_probe_move ( LULZBOT_BED_PROBE_MIN , speed ) ; rewipes + + ) { \
if ( rewipes > = LULZBOT_NUM_REWIPES ) { /* max of tries */ \
SERIAL_ERRORLNPGM ( " PROBE FAIL CLEAN NOZZLE " ) ; /* cura listens for this message specifically */ \
LCD_MESSAGEPGM ( MSG_ERR_PROBING_FAILED ) ; /* use a more friendly message on the LCD */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; /* play tone */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
do_blocking_move_to_z ( 100 , MMM_TO_MMS ( Z_PROBE_SPEED_FAST ) ) ; /* raise head */ \
current_position [ E_AXIS ] = 0 ; /* prime nozzle at 75 mm/sec */ \
planner . buffer_line ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] , current_position [ E_AXIS ] , 75. / 60 , active_extruder ) ; \
sync_plan_position_e ( ) ; \
stepper . synchronize ( ) ; \
kill ( PSTR ( MSG_ERR_PROBING_FAILED ) ) ; /* stop print job */ \
return NAN ; /* abort the leveling in progress */ \
} \
SERIAL_ERRORLNPGM ( MSG_REWIPE ) ; \
LCD_MESSAGEPGM ( MSG_REWIPE ) ; \
enqueue_and_echo_commands_P ( PSTR ( LULZBOT_REWIPE_GCODE " \n G29 " ) ) ; \
} else { \
/* Probe failed; no retries left */ \
SERIAL_ERRORLNPGM ( " PROBE FAIL CLEAN NOZZLE " ) ; /* cura listens for this message specifically */ \
LCD_MESSAGEPGM ( MSG_ERR_PROBING_FAILED ) ; /* use a more friendly message on the LCD */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; /* play tone */ \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
BUZZ ( 25 , 880 ) ; BUZZ ( 50 , 0 ) ; \
do_blocking_move_to_z ( 100 , MMM_TO_MMS ( Z_PROBE_SPEED_FAST ) ) ; /* raise head */ \
current_position [ E_AXIS ] = 0 ; /* prime nozzle at 75 mm/sec */ \
planner . buffer_line ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] , current_position [ E_AXIS ] , 75. / 60 , active_extruder ) ; \
sync_plan_position_e ( ) ; \
stepper . synchronize ( ) ; \
kill ( PSTR ( MSG_ERR_PROBING_FAILED ) ) ; /* stop print job */ \
} \
LULZBOT_ENABLE_PROBE_PINS ( false ) ; \
}
do_blocking_move_to_z ( 10 , MMM_TO_MMS ( speed ) ) ; /* raise nozzle */ \
Nozzle : : clean ( 0 , 12 , 0 , 0 ) ; /* wipe nozzle */ \
}
# define LULZBOT_G29_WITH_RETRY \
{ \
LULZBOT_ENABLE_PROBE_PINS ( true ) ; \
gcode_G29 ( ) ; \
LULZBOT_ENABLE_PROBE_PINS ( false ) ; \
}
# define LULZBOT_PROBE_RETRY_COUNTER_DECL
# endif
/******************************** MOTOR CURRENTS *******************************/