diff --git a/Marlin/Conditionals_LulzBot.h b/Marlin/Conditionals_LulzBot.h index 34b7c0e16..7641b3377 100644 --- a/Marlin/Conditionals_LulzBot.h +++ b/Marlin/Conditionals_LulzBot.h @@ -279,21 +279,6 @@ #define LULZBOT_Z_HOMING_HEIGHT 0 #endif // LULZBOT_USE_HOME_BUTTON -#if defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_MINI_BED) - // Mini has a horizontal wiping pad on the back of the bed - #define LULZBOT_WIPE_X1 115 - #define LULZBOT_WIPE_X2 45 - #define LULZBOT_WIPE_Y1 173 - #define LULZBOT_WIPE_Y2 173 - -#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_TAZ_BED) - // TAZ has a vertical wiping pad on the left side of the bed - #define LULZBOT_WIPE_X1 -16 - #define LULZBOT_WIPE_X2 -16 - #define LULZBOT_WIPE_Y1 95 - #define LULZBOT_WIPE_Y2 25 -#endif - #if defined(LULZBOT_USE_AUTOLEVELING) #define LULZBOT_NOZZLE_CLEAN_FEATURE // Select type of leveling to use: @@ -447,12 +432,17 @@ #define LULZBOT_TOOLHEAD_VER VERSION_STRING #define LULZBOT_UUID "351487b6-ca9a-4c1a-8765-d668b1da6585" #define LULZBOT_EXTRUDERS 1 - #define LULZBOT_X_MAX_POS 175 - #define LULZBOT_X_MIN_POS 0 - #define LULZBOT_Y_MAX_POS 191 - #define LULZBOT_Y_MIN_POS -10 + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 #define LULZBOT_AO_Hexagon - #define PWM_MOTOR_CURRENT_E 1250 #endif /* TOOLHEAD_Gladiola_SingleExtruder || TOOLHEAD_Albatross_Flexystruder || TOOLHEAD_Finch_Aero */ @@ -481,10 +471,16 @@ #define LULZBOT_TOOLHEAD_VER VERSION_STRING #define LULZBOT_UUID "845f003c-aebd-4e53-a6b9-7d0984fde609" #define LULZBOT_EXTRUDERS 1 - #define LULZBOT_X_MAX_POS 300 - #define LULZBOT_X_MIN_POS -20 - #define LULZBOT_Y_MAX_POS 303 - #define LULZBOT_Y_MIN_POS -20 + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 #define LULZBOT_AO_Hexagon #endif /* TOOLHEAD_Tilapia_SingleExtruder || TOOLHEAD_Angelfish_Aero */ @@ -514,10 +510,16 @@ #define LULZBOT_EXTRUDERS 1 #define LULZBOT_UUID "564bab1c-704c-4225-b329-ac1a093d2638" #define LULZBOT_X_MAX_ENDSTOP_INVERTING true - #define LULZBOT_X_MAX_POS 288 - #define LULZBOT_X_MIN_POS -27 - #define LULZBOT_Y_MAX_POS 302 - #define LULZBOT_Y_MIN_POS -20 + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 12 + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 7 + #define LULZBOT_TOOLHEAD_Y_MAX_ADJ 1 + #define LULZBOT_TOOLHEAD_Y_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 #define LULZBOT_AO_Hexagon #endif /* TOOLHEAD_Kanyu_Flexystruder */ @@ -531,10 +533,16 @@ #define LULZBOT_EXTRUDERS 1 #define LULZBOT_UUID "d651819d-4a79-4b73-bc5b-ae1fe1aab36b" #define LULZBOT_X_MAX_ENDSTOP_INVERTING true - #define LULZBOT_X_MAX_POS 290 - #define LULZBOT_X_MIN_POS -20 - #define LULZBOT_Y_MAX_POS 303 - #define LULZBOT_Y_MIN_POS -20 + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 10 + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 #define LULZBOT_Moarstruder #endif /* TOOLHEAD_Opah_Moarstruder */ @@ -545,11 +553,17 @@ #define DIGIPOT_MOTOR_CURRENT_E 160, 160 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) #define LULZBOT_EXTRUDERS 2 #define LULZBOT_UUID "c5077702-4ecd-4532-beaf-6acf94acc404" - #define LULZBOT_X_MAX_POS 288 - #define LULZBOT_X_MIN_POS -22 - #define LULZBOT_Y_MAX_POS 303 - #define LULZBOT_Y_MIN_POS -20 - #define LULZBOT_TEMP_SENSOR_1 5 + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 12 + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 2 + #define LULZBOT_TOOLHEAD_Y_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Y_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MAX_ADJ 0 + #define LULZBOT_TOOLHEAD_Z_MIN_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 + #define LULZBOT_TEMP_SENSOR_1 5 #define LULZBOT_AO_Hexagon #define LULZBOT_NO_HOME_ON_TOOLHEAD_CHANGE #endif /* TOOLHEAD_Javelin_DualExtruder || TOOLHEAD_Longfin_FlexyDually || TOOLHEAD_Yellowfin_DualExtruder */ @@ -557,16 +571,20 @@ #if defined(TOOLHEAD_Javelin_DualExtruder) #define LULZBOT_LCD_TOOLHEAD_NAME "Dual Extruder 2" // 16 chars max ^^^^^^^^^^^^^^^ - #undef LULZBOT_WIPE_Y2 - #define LULZBOT_WIPE_Y2 73 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 48 #define LULZBOT_X_MAX_ENDSTOP_INVERTING true #endif /* TOOLHEAD_Javelin_DualExtruder */ #if defined(TOOLHEAD_Longfin_FlexyDually) #define LULZBOT_LCD_TOOLHEAD_NAME "FlexyDually v2" // 16 chars max ^^^^^^^^^^^^^^^ - #undef LULZBOT_WIPE_Y2 - #define LULZBOT_WIPE_Y2 73 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 48 #define LULZBOT_X_MAX_ENDSTOP_INVERTING true #define LULZBOT_DISTINCT_E_FACTORS #endif /* TOOLHEAD_Longfin_FlexyDually */ @@ -580,10 +598,10 @@ #define LULZBOT_AFTER_Z_HOME_Z_RAISE 16 #undef LULZBOT_AFTER_Z_HOME_Z_ORIGIN #define LULZBOT_AFTER_Z_HOME_Z_ORIGIN 5.5 - #undef LULZBOT_WIPE_X1 - #undef LULZBOT_WIPE_X2 - #define LULZBOT_WIPE_X1 -22 - #define LULZBOT_WIPE_X2 -22 + #define LULZBOT_TOOLHEAD_WIPE_X1_ADJ -6 + #define LULZBOT_TOOLHEAD_WIPE_X2_ADJ -6 + #define LULZBOT_TOOLHEAD_WIPE_Y1_ADJ 0 + #define LULZBOT_TOOLHEAD_WIPE_Y2_ADJ 0 #undef LULZBOT_Z_HOMING_HEIGHT #define LULZBOT_Z_HOMING_HEIGHT 10 #undef LULZBOT_Z_CLEARANCE_DEPLOY_PROBE @@ -596,8 +614,8 @@ #undef LULZBOT_Z_SAFE_HOMING_Y_POINT #define LULZBOT_Z_SAFE_HOMING_X_POINT (-22) // X point for Z homing when homing all axis (G28) #define LULZBOT_Z_SAFE_HOMING_Y_POINT (265) // Y point for Z homing when homing all axis (G28) - #undef LULZBOT_X_MAX_POS - #define LULZBOT_X_MAX_POS 290 + #undef LULZBOT_TOOLHEAD_X_MAX_ADJ + #define LULZBOT_TOOLHEAD_X_MAX_ADJ 10 #define LULZBOT_X_MAX_ENDSTOP_INVERTING false #define LULZBOT_SWAP_EXTRUDERS #undef LULZBOT_INVERT_E1_DIR @@ -607,6 +625,88 @@ #define LULZBOT_AO_Hexagon #endif /* TOOLHEAD_Yellowfin_DualExtruder */ +/*********************************** AXIS TRAVEL LIMITS *******************************************/ + +/* Define min and max travel limits based on the printer model using a standard + * toolhead, then define adjustments from the standard for alternative toolheads. + * This allows us to accomodate toolheads that might be wider or taller than the + * standard. + */ + +#if defined(LULZBOT_IS_MINI) + #define LULZBOT_STANDARD_X_MAX_POS 175 + #define LULZBOT_STANDARD_X_MIN_POS 0 + #define LULZBOT_STANDARD_Y_MAX_POS 191 + #define LULZBOT_STANDARD_Y_MIN_POS -10 + +#elif defined(LULZBOT_IS_TAZ) + #define LULZBOT_STANDARD_X_MAX_POS 300 + #define LULZBOT_STANDARD_X_MIN_POS -20 + #define LULZBOT_STANDARD_Y_MAX_POS 303 + #define LULZBOT_STANDARD_Y_MIN_POS -20 +#endif + +#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_GLCD) + #define LULZBOT_STANDARD_Z_MIN_POS 0 + #define LULZBOT_STANDARD_Z_MAX_POS 160 + +#elif defined(LULZBOT_Hibiscus_Mini) || defined(LULZBOT_Hibiscus_GLCD) + #define LULZBOT_STANDARD_Z_MIN_POS 0 + #define LULZBOT_STANDARD_Z_MAX_POS 178 + +#elif defined(LULZBOT_Juniper_TAZ_5) + #define LULZBOT_STANDARD_Z_MIN_POS 0 + #define LULZBOT_STANDARD_Z_MAX_POS 270 + +#elif defined(LULZBOT_Oliveoil_TAZ_6) + #define LULZBOT_STANDARD_Z_MIN_POS 0 + #define LULZBOT_STANDARD_Z_MAX_POS 270 + +#elif defined(LULZBOT_Quiver_TAZ_7) + #define LULZBOT_STANDARD_Z_MIN_POS 0 + #define LULZBOT_STANDARD_Z_MAX_POS 290 +#endif + +#define LULZBOT_X_MAX_POS (LULZBOT_STANDARD_X_MAX_POS - LULZBOT_TOOLHEAD_X_MAX_ADJ) +#define LULZBOT_X_MIN_POS (LULZBOT_STANDARD_X_MIN_POS - LULZBOT_TOOLHEAD_X_MIN_ADJ) +#define LULZBOT_Y_MAX_POS (LULZBOT_STANDARD_Y_MAX_POS - LULZBOT_TOOLHEAD_Y_MAX_ADJ) +#define LULZBOT_Y_MIN_POS (LULZBOT_STANDARD_Y_MIN_POS - LULZBOT_TOOLHEAD_Y_MIN_ADJ) +#define LULZBOT_Z_MAX_POS (LULZBOT_STANDARD_Z_MAX_POS - LULZBOT_TOOLHEAD_Z_MAX_ADJ) +#define LULZBOT_Z_MIN_POS (LULZBOT_STANDARD_Z_MIN_POS - LULZBOT_TOOLHEAD_Z_MIN_ADJ) + +/*********************************** WIPER PAD **********************************/ + +// Nozzle wiping points (varies by toolhead, as the nozzle position varies) + +#if defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_MINI_BED) + // Mini has a horizontal wiping pad on the back of the bed + #define LULZBOT_STANDARD_WIPE_X1 115 + #define LULZBOT_STANDARD_WIPE_X2 45 + #define LULZBOT_STANDARD_WIPE_Y1 173 + #define LULZBOT_STANDARD_WIPE_Y2 173 + +#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_TAZ_BED) + // TAZ has a vertical wiping pad on the left side of the bed + #define LULZBOT_STANDARD_WIPE_X1 -16 + #define LULZBOT_STANDARD_WIPE_X2 -16 + #define LULZBOT_STANDARD_WIPE_Y1 95 + #define LULZBOT_STANDARD_WIPE_Y2 25 +#endif + +#define LULZBOT_NOZZLE_CLEAN_START_POINT { \ + LULZBOT_STANDARD_WIPE_X1 + LULZBOT_TOOLHEAD_WIPE_X1_ADJ, \ + LULZBOT_STANDARD_WIPE_Y1 + LULZBOT_TOOLHEAD_WIPE_Y1_ADJ, \ + 1 \ +} + +#define LULZBOT_NOZZLE_CLEAN_END_POINT { \ + LULZBOT_STANDARD_WIPE_X2 + LULZBOT_TOOLHEAD_WIPE_X2_ADJ, \ + LULZBOT_STANDARD_WIPE_Y2 + LULZBOT_TOOLHEAD_WIPE_Y2_ADJ, \ + 1 \ +} + +/*********************************** HEATING ELEMENTS ****************************/ + /* HOTEND Variants */ #if defined(LULZBOT_Moarstruder) @@ -637,15 +737,8 @@ #define LULZBOT_DEFAULT_bedKd 382 #endif -// Nozzle wiping points (varies by toolhead, as the nozzle position varies) - -#define LULZBOT_NOZZLE_CLEAN_START_POINT {LULZBOT_WIPE_X1, LULZBOT_WIPE_Y1, 1} -#define LULZBOT_NOZZLE_CLEAN_END_POINT {LULZBOT_WIPE_X2, LULZBOT_WIPE_Y2, 1} - // Acceleration, feedrate, motor steps and motor currents for XYZ vary // by printer model (steps and motor currents for E vary by toolhead). -// Z values additionally vary depending on whether the Z assembly is -// rod or belt driven. #if defined(LULZBOT_IS_MINI) #define PWM_MOTOR_CURRENT_XY 1300 @@ -660,9 +753,6 @@ #define LULZBOT_DEFAULT_ACCELERATION 2000 #define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000 - #define LULZBOT_Z_MAX_POS 160 - #define LULZBOT_Z_MIN_POS 0 - #define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.43 #elif defined(LULZBOT_IS_TAZ) @@ -675,8 +765,6 @@ #define LULZBOT_DEFAULT_ACCELERATION 500 #endif #define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000 - #define LULZBOT_Z_MIN_POS 0 - #define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.5 #endif @@ -693,8 +781,6 @@ #define Z_PULLEY_TEETH 24 #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)) - #undef LULZBOT_Z_MAX_POS - #define LULZBOT_Z_MAX_POS 178 #undef LULZBOT_DEFAULT_MAX_FEEDRATE #define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 16, 40} // (mm/sec) @@ -704,14 +790,12 @@ #define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 3, 40} // (mm/sec) #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} #define LULZBOT_Z_STEPS 1600 - #define LULZBOT_Z_MAX_POS 270 #elif defined(LULZBOT_Oliveoil_TAZ_6) #define DIGIPOT_MOTOR_CURRENT_Z 200 #define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 3, 40} // (mm/sec) #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} #define LULZBOT_Z_STEPS 1600 - #define LULZBOT_Z_MAX_POS 270 #elif defined(LULZBOT_Quiver_TAZ_7) #define DIGIPOT_MOTOR_CURRENT_Z 175 @@ -719,7 +803,6 @@ #define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 600, 40} // (mm/sec) #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000} #define LULZBOT_Z_STEPS 1790.08264463 - #define LULZBOT_Z_MAX_POS 290 #endif #if defined(PWM_MOTOR_CURRENT_XY) && defined(PWM_MOTOR_CURRENT_Z) && defined(PWM_MOTOR_CURRENT_E) diff --git a/Marlin/Makefile b/Marlin/Makefile index 3ba11b08f..658110acc 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -338,11 +338,6 @@ LD_PREFIX=-nodefaultlibs LD_SUFFIX=-lm -lgcc -lc -lgcc endif -#Disabling the timestamp is useful for diffing binaries between different builds. -ifeq ($(NO_TIMESTAMP), 1) -CDEFS +=-D__DATE__="??? ?? ????" -D__TIME__="??:??:??" -endif - #Check for Arduino 1.0.0 or higher and use the correct source files for that version ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) CXXSRC += main.cpp @@ -380,6 +375,12 @@ MV = mv -f CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)} CXXDEFS = $(CDEFS) +#Disabling the timestamp is useful for diffing binaries between different builds. +ifeq ($(NO_TIMESTAMP), 1) +#CDEFS +=-D__DATE__="??? ?? ????" -D__TIME__="??:??:??" +CDEFS +=-D__DATE__='"Aug 17 2017"' -D__TIME__='"08:59:30"' +endif + ifeq ($(HARDWARE_VARIANT), Teensy) CDEFS += -DUSB_SERIAL SRC += usb.c pins_teensy.c diff --git a/build-lulzbot-firmware.sh b/build-lulzbot-firmware.sh index fb2482ccd..6af685407 100755 --- a/build-lulzbot-firmware.sh +++ b/build-lulzbot-firmware.sh @@ -22,6 +22,16 @@ MINI_TOOLHEADS="Gladiola_SingleExtruder Albatross_Flexystruder Finch_Aero" TAZ_MODELS="Juniper_TAZ_5 Oliveoil_TAZ_6 Quiver_TAZ_7" TAZ_TOOLHEADS="Tilapia_SingleExtruder Kanyu_Flexystruder Opah_Moarstruder Javelin_DualExtruder Longfin_FlexyDually Yellowfin_DualExtruder Angelfish_Aero" +#### +# usage +# +# Prints out a usage summary +# +usage() { + echo "Usage: $0 [--no-timestamps] [printer_model toolhead_name]" + exit +} + #### # build_firmware # @@ -141,18 +151,28 @@ build_summary() { # MAIN SCRIPT ############################################ +while true +do + case $1 in + --no-timestamps) + MAKEOPTS="NO_TIMESTAMP=1" + shift + ;; + --*) + usage + ;; + *) + break + ;; + esac +done + locate_avr_tools check_avr_tools rm -rf build mkdir build -if [ "$1" = "--no-timestamp" ] -then - shift - MAKEOPTS="NO_TIMESTAMP=1" -fi - if [ $# -eq 2 ] then build_firmware $1 $2