|
|
|
@ -13,7 +13,7 @@
|
|
|
|
|
* got disabled.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_FW_VERSION ".29" // Change this with each update
|
|
|
|
|
#define LULZBOT_FW_VERSION ".31" // Change this with each update
|
|
|
|
|
|
|
|
|
|
#if ( \
|
|
|
|
|
!defined(LULZBOT_Gladiola_Mini) && \
|
|
|
|
@ -118,7 +118,6 @@
|
|
|
|
|
#define LULZBOT_TWO_PIECE_BED
|
|
|
|
|
#define LULZBOT_USE_AUTOLEVELING
|
|
|
|
|
#define LULZBOT_SENSORLESS_HOMING
|
|
|
|
|
#define LULZBOT_SENSORLESS_HOMING_Z
|
|
|
|
|
#define LULZBOT_USE_Z_BELT
|
|
|
|
|
#define LULZBOT_BAUDRATE 250000
|
|
|
|
|
#define LULZBOT_PRINTCOUNTER
|
|
|
|
@ -136,7 +135,6 @@
|
|
|
|
|
#define LULZBOT_TWO_PIECE_BED
|
|
|
|
|
#define LULZBOT_USE_AUTOLEVELING
|
|
|
|
|
#define LULZBOT_SENSORLESS_HOMING
|
|
|
|
|
#define LULZBOT_SENSORLESS_HOMING_Z
|
|
|
|
|
#define LULZBOT_USE_Z_BELT
|
|
|
|
|
#define LULZBOT_BAUDRATE 250000
|
|
|
|
|
#define LULZBOT_PRINTCOUNTER
|
|
|
|
@ -543,6 +541,53 @@
|
|
|
|
|
return; \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/****************************** BACKLASH COMPENSATION **************************/
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT)
|
|
|
|
|
//#define LULZBOT_AXIS_BACKLASH {0.27, 0.05, 0.4, 0}
|
|
|
|
|
#define LULZBOT_AXIS_BACKLASH {0.00, 0.00, 0.35, 0}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_AXIS_BACKLASH)
|
|
|
|
|
#define SIGN(v) ((v < 0) ? -1.0 : 1.0)
|
|
|
|
|
#define LULZBOT_AXIS_BACKLASH_CORRECTION \
|
|
|
|
|
{ \
|
|
|
|
|
static const float backlash[NUM_AXIS] = LULZBOT_AXIS_BACKLASH; \
|
|
|
|
|
static uint8_t last_direction_bits; \
|
|
|
|
|
static bool is_correction = false; \
|
|
|
|
|
if(!is_correction) { \
|
|
|
|
|
uint8_t changed_dir = last_direction_bits ^ dm; \
|
|
|
|
|
/* Ignore direction change if no steps are taken in that direction */ \
|
|
|
|
|
if(da == 0) CBI(changed_dir, X_AXIS); \
|
|
|
|
|
if(db == 0) CBI(changed_dir, Y_AXIS); \
|
|
|
|
|
if(dc == 0) CBI(changed_dir, Z_AXIS); \
|
|
|
|
|
if(de == 0) CBI(changed_dir, E_AXIS); \
|
|
|
|
|
last_direction_bits ^= changed_dir; \
|
|
|
|
|
/* When there is motion in an opposing direction, apply the backlash correction */ \
|
|
|
|
|
if(changed_dir) { \
|
|
|
|
|
long saved_position[NUM_AXIS] = { 0 }; \
|
|
|
|
|
COPY(saved_position, position); \
|
|
|
|
|
const long x_backlash = TEST(changed_dir, X_AXIS) ? backlash[X_AXIS] * axis_steps_per_mm[X_AXIS] * SIGN(da) : 0; \
|
|
|
|
|
const long y_backlash = TEST(changed_dir, Y_AXIS) ? backlash[Y_AXIS] * axis_steps_per_mm[Y_AXIS] * SIGN(db) : 0; \
|
|
|
|
|
const long z_backlash = TEST(changed_dir, Z_AXIS) ? backlash[Z_AXIS] * axis_steps_per_mm[Z_AXIS] * SIGN(dc) : 0; \
|
|
|
|
|
const long e_backlash = TEST(changed_dir, E_AXIS) ? backlash[E_AXIS] * axis_steps_per_mm[E_AXIS] * SIGN(de) : 0; \
|
|
|
|
|
is_correction = true; /* Avoid infinite recursion */ \
|
|
|
|
|
_buffer_line( \
|
|
|
|
|
(position[X_AXIS] + x_backlash)/axis_steps_per_mm[X_AXIS], \
|
|
|
|
|
(position[Y_AXIS] + y_backlash)/axis_steps_per_mm[Y_AXIS], \
|
|
|
|
|
(position[Z_AXIS] + z_backlash)/axis_steps_per_mm[Z_AXIS], \
|
|
|
|
|
(position[E_AXIS] + e_backlash)/axis_steps_per_mm[E_AXIS_N], \
|
|
|
|
|
fr_mm_s, extruder \
|
|
|
|
|
); \
|
|
|
|
|
is_correction = false; \
|
|
|
|
|
COPY(position, saved_position); \
|
|
|
|
|
} \
|
|
|
|
|
} \
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
#define LULZBOT_AXIS_BACKLASH_CORRECTION
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*************************** COMMON TOOLHEADS PARAMETERS ***********************/
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_DEFAULT_EJERK 10.0
|
|
|
|
@ -1074,7 +1119,7 @@
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_SENSORLESS_HOMING)
|
|
|
|
|
#define LULZBOT_X_HOMING_SENSITIVITY 5
|
|
|
|
|
#define LULZBOT_Y_HOMING_SENSITIVITY 3
|
|
|
|
|
#define LULZBOT_Y_HOMING_SENSITIVITY 5
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(LULZBOT_SENSORLESS_HOMING_Z)
|
|
|
|
@ -1090,7 +1135,7 @@
|
|
|
|
|
#define LULZBOT_Z_SAFE_HOMING_X_POINT 17 // LULZBOT_LEFT_PROBE_BED_POSITION
|
|
|
|
|
#define LULZBOT_Z_SAFE_HOMING_Y_POINT 180 // LULZBOT_BACK_PROBE_BED_POSITION
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_Z_HOMING_SENSITIVITY 1
|
|
|
|
|
#define LULZBOT_Z_HOMING_SENSITIVITY 2
|
|
|
|
|
#define LULZBOT_Z_HOMING_CURRENT 500
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_Z_HOMING_HEIGHT 5
|
|
|
|
@ -1270,15 +1315,19 @@
|
|
|
|
|
* the head sitting on the endstops after homing. */
|
|
|
|
|
#define LULZBOT_BACKOFF_DIST 5
|
|
|
|
|
#define LULZBOT_BACKOFF_FEEDRATE 5
|
|
|
|
|
|
|
|
|
|
#define LULZBOT_AFTER_Z_HOME_ACTION \
|
|
|
|
|
if(home_all || homeZ) { \
|
|
|
|
|
LULZBOT_G0_Z(LULZBOT_BACKOFF_DIST); \
|
|
|
|
|
} \
|
|
|
|
|
if(home_all || homeX || homeY) { \
|
|
|
|
|
{ \
|
|
|
|
|
int x = (LULZBOT_INVERT_X_HOME_DIR < 0 ? LULZBOT_BACKOFF_DIST : LULZBOT_STANDARD_X_MAX_POS - LULZBOT_BACKOFF_DIST); \
|
|
|
|
|
int y = (LULZBOT_INVERT_Y_HOME_DIR < 0 ? LULZBOT_BACKOFF_DIST : LULZBOT_STANDARD_Y_MAX_POS - LULZBOT_BACKOFF_DIST); \
|
|
|
|
|
int z = (LULZBOT_INVERT_Z_HOME_DIR < 0 ? LULZBOT_BACKOFF_DIST : LULZBOT_STANDARD_Z_MAX_POS - LULZBOT_BACKOFF_DIST); \
|
|
|
|
|
do_blocking_move_to_z( \
|
|
|
|
|
(home_all || homeZ) ? z : current_position[Z_AXIS] \
|
|
|
|
|
); \
|
|
|
|
|
do_blocking_move_to_xy( \
|
|
|
|
|
homeX ? x : current_position[X_AXIS], homeY ? y : current_position[Y_AXIS], LULZBOT_BACKOFF_FEEDRATE \
|
|
|
|
|
(home_all || homeX) ? x : current_position[X_AXIS], \
|
|
|
|
|
(home_all || homeY) ? y : current_position[Y_AXIS], \
|
|
|
|
|
LULZBOT_BACKOFF_FEEDRATE \
|
|
|
|
|
); \
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|