From fad137c06a2f1a718fe666acfbad59218cb8ff0b Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Fri, 21 Aug 2020 09:14:11 +0200 Subject: [PATCH 1/7] Velleman Vertex Delta K8800 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ° change LDC controller to AZSMZ_12864 change contrast range ° set ENCODER_PULSES_PER_STEP and REVERSE_MENU_DIRECTION in Configuration.h instead of src/pins/ramps/pins_K8800.h ° minimize changes to platformio.ini ° add platformio.ini.local as extra_config ° move env:K8800 and env_default to platformio.ini.local to ease push/pull from upstream repo ° cosmetic changes in pins_K8800.h move all heated bed settings (incl. pins) to begin of Configuration.h so we keep pins_K8800 close to stock settings ° add BOARD_K8800 to boards.h ° customize Configuration ° #define VELLEMAN_K8800_STOCK true|false to use stock 1.1.4 settings ° #define E3D_HOTEND true|false to select different hotend thermistor ° #define VELLEMAN_K8800_BED 0..3 to use different (heated) printbeds ° preset E3D_HOTEND false and VELLEMAN_K8800_BED 0 when setting VELLEMAN_K8800_STOCK to true ° enclose changes against stock 1.1.4 setting in #if ENABLED(VELLEMAN_STOCK_K8800) #else #endif --- Marlin/Configuration.h | 536 ++++++++++++++++++++++------- Marlin/Configuration_adv.h | 167 +++++---- Marlin/src/pins/pins.h | 2 +- Marlin/src/pins/ramps/pins_K8800.h | 6 + platformio.ini | 1 + platformio.ini.local | 25 ++ 6 files changed, 550 insertions(+), 187 deletions(-) create mode 100644 platformio.ini.local diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index dec1a81bee7e..4f77b4307a1d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -21,6 +21,36 @@ */ #pragma once +#define CONFIG_EXAMPLES_DIR "delta/Velleman/K8800" + +// set to true to use settings from Velleman K8800 Marlin 1.1.4 +#define VELLEMAN_K8800_STOCK false + +#if ENABLED(VELLEMAN_K8800_STOCK) + #define E3D_HOTEND false + #define VELLEMAN_K8800_BED 0 +#else // tweaked K8800 + #define E3D_HOTEND true + + #if ENABLED(E3D_HOTEND) + #define TEMP_SENSOR_0 5 // E3D V6 hotend + #endif + + // Heated Bed: + // 0 ... no heated bed - Velleman BuildTak + // 1 ... heated bed, variant @surviknows (PC1, PK0) + // 2 ... heated bed, variant @riodoro () + // 3 ... heated bed, variant @susisstrolch (PC1, PK0, sandwich 220mm) + #define VELLEMAN_K8800_BED 3 + +#if VELLEMAN_K8800_BED > 0 + // heated bed pin configuration + #define HEATER_BED_PIN 36 // @shelxle: 36, @riodoro: 31 + #define TEMP_BED_PIN 8 + #define HEATED_BED_SENSOR 5 + #endif +#endif + /** * Configuration.h * @@ -70,7 +100,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(SusisStrolch, Vertex Delta K8800)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) /** @@ -120,18 +150,18 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 500000 // Enable the Bluetooth serial interface on AT90USB devices //#define BLUETOOTH // Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB + #define MOTHERBOARD BOARD_K8800 #endif // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME "Vertex Delta" // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like https://www.uuidgenerator.net/version4 @@ -416,7 +446,9 @@ * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ -#define TEMP_SENSOR_0 1 +#if !defined(TEMP_SENSOR_0) + #define TEMP_SENSOR_0 7 /default: stock Velleman hotend +#endif #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 @@ -424,7 +456,10 @@ #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 -#define TEMP_SENSOR_BED 0 + +#if !defined(TEMP_SENSOR_BED) + #define TEMP_SENSOR_BED 0 +#endif #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 @@ -437,11 +472,11 @@ //#define TEMP_SENSOR_1_AS_REDUNDANT #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 -#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109 +#define TEMP_RESIDENCY_TIME 5 // (seconds) Time to wait for hotend to "settle" in M109 #define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer #define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target -#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190 +#define TEMP_BED_RESIDENCY_TIME 5 // (seconds) Time to wait for bed to "settle" in M190 #define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer #define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target @@ -460,14 +495,14 @@ // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define HEATER_4_MAXTEMP 275 -#define HEATER_5_MAXTEMP 275 -#define HEATER_6_MAXTEMP 275 -#define HEATER_7_MAXTEMP 275 +#define HEATER_0_MAXTEMP 295 +#define HEATER_1_MAXTEMP 295 +#define HEATER_2_MAXTEMP 295 +#define HEATER_3_MAXTEMP 295 +#define HEATER_4_MAXTEMP 295 +#define HEATER_5_MAXTEMP 295 +#define HEATER_6_MAXTEMP 295 +#define HEATER_7_MAXTEMP 295 #define BED_MAXTEMP 150 //=========================================================================== @@ -493,10 +528,30 @@ #define DEFAULT_Ki_LIST { 1.08, 1.0 } #define DEFAULT_Kd_LIST { 114.00, 112.0 } #else - #define DEFAULT_Kp 22.20 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114.00 + + #if ENABLED(E3D_HOTEND) + // Vertex Delta (E3D cooper block, 40W, @200°C, silicon sock) + #define DEFAULT_Kp 18.9063 + #define DEFAULT_Ki 1.7224 + #define DEFAULT_Kd 51.8836 + #else + // Stock Vertex Delta Hotend + #define DEFAULT_Kp 15.20 + #define DEFAULT_Ki 1.75 + #define DEFAULT_Kd 50.42 + #endif #endif + + // MakerGear + //#define DEFAULT_Kp 7.0 + //#define DEFAULT_Ki 0.1 + //#define DEFAULT_Kd 12 + + // Mendel Parts V9 on 12V + //#define DEFAULT_Kp 63.0 + //#define DEFAULT_Ki 2.25 + //#define DEFAULT_Kd 440 + #endif // PIDTEMP //=========================================================================== @@ -516,8 +571,9 @@ * heater. If your configuration is significantly different than this and you don't understand * the issues involved, don't use bed PID until someone else verifies that your hardware works. */ -//#define PIDTEMPBED - +#if VELLEMAN_K8800_BED > 0 + #define PIDTEMPBED +#endif //#define BED_LIMIT_SWITCHING /** @@ -529,14 +585,25 @@ #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current #if ENABLED(PIDTEMPBED) - //#define MIN_BED_POWER 0 + //#define PID_BED_DEBUG // Sends debug data to the serial port. - // 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - // from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 + // Velleman K8800 + // this is for the aluminium bed with a BuildTak-like sticker on it + // from pid autotune. "M303 E-1 C8 S60" to run autotune on the bed at 60 degreesC for 8 cycles + #if VELLEMAN_K8800_BED == 3 + // SusisStrolch: sandwich bed + // cork / aluminium bed 100W@12V / borosilicate / pertinax + #define DEFAULT_bedKp 114.8573 + #define DEFAULT_bedKi 21.9068 + #define DEFAULT_bedKd 401.4645 + #else + // 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) + // from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + #endif // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED @@ -545,7 +612,7 @@ //#define PID_DEBUG // Sends debug data to the serial port. Use 'M303 D' to toggle activation. //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + #define PID_FUNCTIONAL_RANGE 20 // If the temperature difference between the target temperature and the actual temperature // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. #endif @@ -566,7 +633,7 @@ * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE -#define EXTRUDE_MAXLENGTH 200 +#define EXTRUDE_MAXLENGTH 1000 //=========================================================================== //======================== Thermal Runaway Protection ======================= @@ -587,7 +654,7 @@ #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed -#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber +//#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber //=========================================================================== //============================= Mechanical Settings ========================= @@ -605,6 +672,84 @@ //#define COREZY //#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042 +//=========================================================================== +//============================== Delta Settings ============================= +//=========================================================================== +// Enable DELTA kinematics and most of the default configuration for Deltas +#define DELTA + +#if ENABLED(DELTA) + + // Make delta curves from many straight lines (linear interpolation). + // This is a trade-off between visible corners (not enough segments) + // and processor overload (too many expensive sqrt calls). + #define DELTA_SEGMENTS_PER_SECOND 60 + + // After homing move down to a height where XY movement is unconstrained + #define DELTA_HOME_TO_SAFE_ZONE + + // Delta calibration menu + // uncomment to add three points calibration menu option. + // See http://minow.blogspot.com/index.html#4918805519571907051 + #define DELTA_CALIBRATION_MENU + + // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) + #define DELTA_AUTO_CALIBRATION + + // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them + + #if ENABLED(DELTA_AUTO_CALIBRATION) + // set the default number of probe points : n*n (1 -> 7) + #if ENABLED(VELLEMAN_K8800_STOCK) + #define DELTA_CALIBRATION_DEFAULT_POINTS 3 + #else + #define DELTA_CALIBRATION_DEFAULT_POINTS 5 + #endif + #endif + + #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) + // Set the steprate for papertest probing + #define PROBE_MANUALLY_STEP 0.05 // (mm) + #endif + + // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). + #define DELTA_PRINTABLE_RADIUS 100.000 // (mm) + + // Horizontal offset from middle of printer to smooth rod center. + #define DELTA_SMOOTH_ROD_OFFSET 157.804 // mm + + // Horizontal offset of the universal joints on the end effector. + #define DELTA_EFFECTOR_OFFSET 23.816 // mm + + // Horizontal offset of the universal joints on the carriages. + #define DELTA_CARRIAGE_OFFSET 23.777 // mm + +#if ENABLED(VELLEMAN_K8800_STOCK) + // Center-to-center distance of the holes in the diagonal push rods. + #define DELTA_DIAGONAL_ROD 207.0 // (mm) + // Distance between bed and nozzle Z home position + #define DELTA_HEIGHT 308.00 // (mm) Get this value from G33 auto calibrate +#else + #define DELTA_DIAGONAL_ROD 210.0 // (mm) + #define DELTA_HEIGHT 298.00 // (mm) Get this value from G33 auto calibrate +#endif + + #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate + + // Horizontal distance bridged by diagonal push rods when effector is centered. + #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate + + // Trim adjustments for individual towers + // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 + // measured in degrees anticlockwise looking from above the printer + #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate + + // Delta radius and diagonal rod adjustments (mm) + //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } + //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } + +#endif + //=========================================================================== //============================== Endstop Settings =========================== //=========================================================================== @@ -614,12 +759,12 @@ // Specify here all the endstop connectors that are connected to any endstop or probe. // Almost all printers will be using one per axis. Probes will use one or more of the // extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG +//#define USE_XMIN_PLUG +//#define USE_YMIN_PLUG +#define USE_ZMIN_PLUG // a Z probe +#define USE_XMAX_PLUG +#define USE_YMAX_PLUG +#define USE_ZMAX_PLUG // Enable pullup for all endstops to prevent a floating state #define ENDSTOPPULLUPS @@ -648,13 +793,13 @@ #endif // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe. +#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe. /** * Stepper Drivers @@ -672,15 +817,15 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ -//#define X_DRIVER_TYPE A4988 -//#define Y_DRIVER_TYPE A4988 -//#define Z_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE DRV8825 +#define Y_DRIVER_TYPE DRV8825 +#define Z_DRIVER_TYPE DRV8825 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 //#define Z4_DRIVER_TYPE A4988 -//#define E0_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE DRV8825 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 @@ -691,7 +836,11 @@ // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. -//#define ENDSTOP_INTERRUPTS_FEATURE +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define ENDSTOP_INTERRUPTS_FEATURE +#else + #define ENDSTOP_INTERRUPTS_FEATURE +#endif /** * Endstop Noise Threshold @@ -715,6 +864,7 @@ //============================================================================= // @section motion +// delta speeds must be the same on xyz /** * Default Settings * @@ -735,18 +885,30 @@ * Override with M92 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 } +// variables to calculate steps +#if ENABLED(VELLEMAN_K8800_STOCK) + #define DEFAULT_AXIS_STEPS_PER_UNIT { 116.360, 116.360, 116.360, 148.700 } // default steps per unit for Kossel (GT2, 20 tooth) +#else + #define XYZ_FULL_STEPS_PER_ROTATION 200 + #define XYZ_MICROSTEPS 32 + #define XYZ_BELT_PITCH 2.5 + #define XYZ_PULLEY_TEETH 22 + + // delta speeds must be the same on xyz + #define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) + #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, 154.3 } // default steps per unit for Kossel (GT2, 20 tooth) +#endif /** * Default Max Feed Rate (mm/s) * Override with M203 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE { 500, 500, 500, 25 } //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) - #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits + #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 600, 50 } // ...or, set your own edit limits #endif /** @@ -755,11 +917,11 @@ * Override with M201 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } +#define DEFAULT_MAX_ACCELERATION { 9000, 9000, 9000, 10000 } //#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 #if ENABLED(LIMITED_MAX_ACCEL_EDITING) - #define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits + #define MAX_ACCEL_EDIT_VALUES { 12000, 12000, 12000, 15000 } // ...or, set your own edit limits #endif /** @@ -770,9 +932,15 @@ * M204 R Retract Acceleration * M204 T Travel Acceleration */ -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves +#if ENABLED(VELLEMAN_K8800_STOCK) + #define DEFAULT_ACCELERATION (3000) // X, Y, Z and E acceleration for printing moves + #define DEFAULT_RETRACT_ACCELERATION (3000) // E acceleration for retracts + #define DEFAULT_TRAVEL_ACCELERATION (3000) // X, Y, Z acceleration for travel (non printing) moves +#else + #define DEFAULT_ACCELERATION (9000 / 2) // X, Y, Z and E acceleration for printing moves + #define DEFAULT_RETRACT_ACCELERATION (9000 / 2) // E acceleration for retracts + #define DEFAULT_TRAVEL_ACCELERATION (9000 / 2) // X, Y, Z acceleration for travel (non printing) moves +#endif /** * Default Jerk limits (mm/s) @@ -782,17 +950,17 @@ * When changing speed and direction, if the difference is less than the * value set here, it may happen instantaneously. */ -//#define CLASSIC_JERK +#define CLASSIC_JERK #if ENABLED(CLASSIC_JERK) - #define DEFAULT_XJERK 10.0 - #define DEFAULT_YJERK 10.0 - #define DEFAULT_ZJERK 0.3 + #define DEFAULT_XJERK 20.0 + #define DEFAULT_YJERK DEFAULT_XJERK + #define DEFAULT_ZJERK DEFAULT_XJERK // Must be same as XY for delta //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves //#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2 #if ENABLED(LIMITED_JERK_EDITING) - #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits + #define MAX_JERK_EDIT_VALUES { 40, 40, 40, 10 } // ...or, set your own edit limits #endif #endif @@ -806,7 +974,7 @@ * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html */ #if DISABLED(CLASSIC_JERK) - #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge + #define JUNCTION_DEVIATION_MM 0.003 // (mm) Distance from real junction edge #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle // for small segments (< 1mm) with large junction angles (> 135°). #endif @@ -819,7 +987,11 @@ * * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained */ -//#define S_CURVE_ACCELERATION +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define S_CURVE_ACCELERATION +#else + #define S_CURVE_ACCELERATION +#endif //=========================================================================== //============================= Z Probe Options ============================= @@ -876,7 +1048,7 @@ * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. * (e.g., an inductive probe or a nozzle-based probe-switch.) */ -//#define FIX_MOUNTED_PROBE +#define FIX_MOUNTED_PROBE /** * Use the nozzle as the probe, as with a conductive @@ -946,9 +1118,38 @@ */ //#define SENSORLESS_PROBING -// -// For Z_PROBE_ALLEN_KEY see the Delta example configurations. -// +/** + * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe + * Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. + */ +//#define Z_PROBE_ALLEN_KEY + +#if ENABLED(Z_PROBE_ALLEN_KEY) + // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, + // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. + + #define Z_PROBE_ALLEN_KEY_DEPLOY_1 { 30.0, DELTA_PRINTABLE_RADIUS, 100.0 } + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_DEPLOY_2 { 0.0, DELTA_PRINTABLE_RADIUS, 100.0 } + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10 + + #define Z_PROBE_ALLEN_KEY_DEPLOY_3 { 0.0, (DELTA_PRINTABLE_RADIUS) * 0.75, 100.0 } + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_STOW_1 { -64.0, 56.0, 23.0 } // Move the probe into position + #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_STOW_2 { -64.0, 56.0, 3.0 } // Push it down + #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/10 + + #define Z_PROBE_ALLEN_KEY_STOW_3 { -64.0, 56.0, 50.0 } // Move it up to clear + #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_STOW_4 { 0.0, 0.0, 50.0 } + #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED + +#endif // Z_PROBE_ALLEN_KEY /** * Nozzle-to-Probe offsets { X, Y, Z } @@ -980,20 +1181,40 @@ * | [-] | * O-- FRONT --+ */ -#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0 } // Most probes should stay away from the edges of the bed, but // with NOZZLE_AS_PROBE this can be negative for a wider probing area. -#define PROBING_MARGIN 10 + #if ENABLED(VELLEMAN_K8800_STOCK) + #define PROBING_MARGIN ( DELTA_RADIUS / 2) + #elif VELLEMAN_K8800_BED == 3 + // printbed has 220mm diameter, so we don't need the margin + #define PROBING_MARGIN 5 + #else + #pragma GCC warning "setting PROBING_MARGIN to 15mm" + #define PROBING_MARGIN 15 + #endif -// X and Y axis travel speed (mm/min) between probes -#define XY_PROBE_SPEED (133*60) +// X and Y axis travel speed (mm/m) between probes +#if ENABLED(VELLEMAN_K8800_STOCK) + #define XY_PROBE_SPEED (66.67 * 60) +#else + #define XY_PROBE_SPEED (32 * 60) +#endif -// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z +// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) +#if ENABLED(VELLEMAN_K8800_STOCK) + #define Z_PROBE_SPEED_FAST (HOMING_FEEDRATE_Z) +#else + #define Z_PROBE_SPEED_FAST (2 * XY_PROBE_SPEED) +#endif -// Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) +// Feedrate (mm/m) for the "accurate" probe of each point +#if ENABLED(VELLEMAN_K8800_STOCK) + #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 4) +#else + #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 4) +#endif /** * Multiple Probing @@ -1004,8 +1225,13 @@ * A total of 2 does fast/slow probes with a weighted average. * A total of 3 or more adds more slow probes, taking the average. */ -//#define MULTIPLE_PROBING 2 +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define MULTIPLE_PROBING 3 //#define EXTRA_PROBING 1 +#else + #define MULTIPLE_PROBING 3 +//#define EXTRA_PROBING 1 +#endif /** * Z probes require clearance when deploying, stowing, and moving between @@ -1021,19 +1247,19 @@ * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. */ -#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow +#define Z_CLEARANCE_DEPLOY_PROBE 0 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points #define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes //#define Z_AFTER_PROBING 5 // Z position after probing is done -#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping +#define Z_PROBE_LOW_POINT -5 // Farthest distance below the trigger-point to go before stopping // For M851 give a range for adjusting the Z probe offset #define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MAX 20 // Enable the M48 repeatability test to test probe accuracy -//#define Z_MIN_PROBE_REPEATABILITY_TEST +#define Z_MIN_PROBE_REPEATABILITY_TEST // Before deploy/stow pause for user confirmation //#define PAUSE_BEFORE_DEPLOY_STOW @@ -1052,9 +1278,9 @@ #if ENABLED(PROBING_HEATERS_OFF) //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy) #endif -//#define PROBING_FANS_OFF // Turn fans off when probing -//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing -//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors +#define PROBING_FANS_OFF // Turn fans off when probing +#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing +#define DELAY_BEFORE_PROBING 500 // (ms) To prevent vibrations from triggering piezo sensors // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 // :{ 0:'Low', 1:'High' } @@ -1081,13 +1307,13 @@ // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false -#define INVERT_Y_DIR true +#define INVERT_Y_DIR false #define INVERT_Z_DIR false // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false +#define INVERT_E0_DIR true #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false @@ -1109,23 +1335,23 @@ // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 +#define X_HOME_DIR 1 // deltas always home to max +#define Y_HOME_DIR 1 +#define Z_HOME_DIR 1 // @section machine // The size of the print bed -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE ((DELTA_PRINTABLE_RADIUS) * 2) +#define Y_BED_SIZE ((DELTA_PRINTABLE_RADIUS) * 2) // Travel limits (mm) after homing, corresponding to endstop positions. -#define X_MIN_POS 0 -#define Y_MIN_POS 0 +#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) +#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) #define Z_MIN_POS 0 -#define X_MAX_POS X_BED_SIZE -#define Y_MAX_POS Y_BED_SIZE -#define Z_MAX_POS 200 +#define X_MAX_POS DELTA_PRINTABLE_RADIUS +#define Y_MAX_POS DELTA_PRINTABLE_RADIUS +#define Z_MAX_POS MANUAL_Z_HOME_POS /** * Software Endstops @@ -1153,7 +1379,11 @@ #endif #if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) - //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD + #if ENABLED(VELLEMAN_K8800_STOCK) + //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD + #else + #define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD + #endif #endif /** @@ -1163,7 +1393,7 @@ * RAMPS-based boards use SERVO3_PIN for the first runout sensor. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. */ -//#define FILAMENT_RUNOUT_SENSOR +#define FILAMENT_RUNOUT_SENSOR #if ENABLED(FILAMENT_RUNOUT_SENSOR) #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. @@ -1228,22 +1458,33 @@ */ //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR -//#define AUTO_BED_LEVELING_BILINEAR -//#define AUTO_BED_LEVELING_UBL +#if ENABLED(VELLEMAN_K8800_STOCK) + #define AUTO_BED_LEVELING_BILINEAR +#else + #define AUTO_BED_LEVELING_UBL +#endif //#define MESH_BED_LEVELING /** * Normally G28 leaves leveling disabled on completion. Enable * this option to have G28 restore the prior leveling state. */ -//#define RESTORE_LEVELING_AFTER_G28 +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define RESTORE_LEVELING_AFTER_G28 false +#else + #define RESTORE_LEVELING_AFTER_G28 false +#endif /** * Enable detailed logging of G28, G29, M48, etc. * Turn on with the command 'M111 S32'. * NOTE: Requires a lot of PROGMEM! */ -//#define DEBUG_LEVELING_FEATURE +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define DEBUG_LEVELING_FEATURE +#else + #define DEBUG_LEVELING_FEATURE +#endif #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL) // Gradually reduce leveling correction until a set height is reached, @@ -1275,7 +1516,12 @@ #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 + // Works best with 5 or more points in each dimension. + #if ENABLED(VELLEMAN_K8800_STOCK) + #define GRID_MAX_POINTS_X 5 + #else + #define GRID_MAX_POINTS_X 9 + #endif #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Probe along the Y axis, advancing X after each column @@ -1308,14 +1554,14 @@ //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh #define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed - #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited. + #define GRID_MAX_POINTS_X 9 // Don't use more than 15 points per axis, implementation limited. #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500 - //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used - // as the Z-Height correction value. + #define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used + // as the Z-Height correction value. #elif ENABLED(MESH_BED_LEVELING) @@ -1362,13 +1608,13 @@ // @section homing // The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 +#define BED_CENTER_AT_0_0 // Manually set the home position. Leave these undefined for automatic settings. // For DELTA this is the top-center of the Cartesian print volume. //#define MANUAL_X_HOME_POS 0 //#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 +#define MANUAL_Z_HOME_POS DELTA_HEIGHT // Distance between the nozzle to printbed after homing // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. // @@ -1379,16 +1625,19 @@ // - Move the Z probe (or nozzle) to a defined XY point before Z Homing. // - Prevent Z homing when the Z probe is outside bed area. // -//#define Z_SAFE_HOMING +#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing #define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing #endif -// Homing speeds (mm/min) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) +// Delta only homes to Z +#if ENABLED(VELLEMAN_K8800_STOCK) + #define HOMING_FEEDRATE_Z (100*60) +#else + #define HOMING_FEEDRATE_Z (100*60) +#endif // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -1465,7 +1714,7 @@ * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes) * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.) */ -//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 +#define EEPROM_SETTINGS // Persistent storage with M500 and M501 //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. #define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load @@ -1497,14 +1746,14 @@ // Preheat Constants #define PREHEAT_1_LABEL "PLA" -#define PREHEAT_1_TEMP_HOTEND 180 +#define PREHEAT_1_TEMP_HOTEND 200 #define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 #define PREHEAT_2_LABEL "ABS" -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_2_TEMP_HOTEND 250 +#define PREHEAT_2_TEMP_BED 100 +#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 /** * Nozzle Park @@ -1517,16 +1766,16 @@ * P1 Raise the nozzle always to Z-park height. * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. */ -//#define NOZZLE_PARK_FEATURE +#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } //#define NOZZLE_PARK_X_ONLY // X move only is required to park //#define NOZZLE_PARK_Y_ONLY // Y move only is required to park - #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance - #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis) - #define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers) + #define NOZZLE_PARK_Z_RAISE_MIN 10 // (mm) Always raise Z by at least this distance + #define NOZZLE_PARK_XY_FEEDRATE (25 * 60) // (mm/s) X and Y axes feedrate (also used for delta Z axis) + #define NOZZLE_PARK_Z_FEEDRATE (25 * 60) // (mm/s) Z axis feedrate (not used for delta printers) #endif /** @@ -1630,7 +1879,38 @@ * * View the current statistics with M78. */ -//#define PRINTCOUNTER +#define PRINTCOUNTER + +/** + * Password + * + * Set a numerical password for the printer which can be requested: + * + * - When the printer boots up + * - Upon opening the 'Print from Media' Menu + * - When SD printing is completed or aborted + * + * The following G-codes can be used: + * + * M510 - Lock Printer. Blocks all commands except M511. + * M511 - Unlock Printer. + * M512 - Set, Change and Remove Password. + * + * If you forget the password and get locked out you'll need to re-flash + * the firmware with the feature disabled, reset EEPROM, and (optionally) + * re-flash the firmware again with this feature enabled. + */ +//#define PASSWORD_FEATURE +#if ENABLED(PASSWORD_FEATURE) + #define PASSWORD_LENGTH 4 // (#) Number of digits (1-9). 3 or 4 is recommended + #define PASSWORD_ON_STARTUP + #define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P command. Disable to prevent brute-force attack. + #define PASSWORD_CHANGE_GCODE // Change the password with M512 P N. + //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent gcodes from running + //#define PASSWORD_AFTER_SD_PRINT_END + //#define PASSWORD_AFTER_SD_PRINT_ABORT + //#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE +#endif /** * Password @@ -1718,7 +1998,7 @@ * SD Card support is disabled by default. If your controller has an SD slot, * you must uncomment the following option or it won't work. */ -//#define SDSUPPORT +#define SDSUPPORT /** * SD CARD: SPI SPEED @@ -1752,7 +2032,7 @@ // This option overrides the default number of encoder pulses needed to // produce one step. Should be increased for high-resolution encoders. // -//#define ENCODER_PULSES_PER_STEP 4 +#define ENCODER_PULSES_PER_STEP 1 // // Use this option to override the number of step signals required to @@ -1783,7 +2063,7 @@ // If CLOCKWISE normally moves DOWN this makes it go UP. // If CLOCKWISE normally moves UP this makes it go DOWN. // -//#define REVERSE_MENU_DIRECTION +#define REVERSE_MENU_DIRECTION // // This option reverses the encoder direction for Select Screen. @@ -1806,7 +2086,7 @@ // If you have a speaker that can produce tones, enable it here. // By default Marlin assumes you have a buzzer with a fixed frequency. // -//#define SPEAKER +#define SPEAKER // // The duration and frequency for the UI feedback sound. @@ -1815,8 +2095,8 @@ // Note: Test audio output with the G-Code: // M300 S P // -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 -//#define LCD_FEEDBACK_FREQUENCY_HZ 5000 +#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 150 +#define LCD_FEEDBACK_FREQUENCY_HZ 4000 //============================================================================= //======================== LCD / Controller Selection ========================= @@ -2085,7 +2365,7 @@ // AZSMZ 12864 LCD with SD // https://www.aliexpress.com/item/32837222770.html // -//#define AZSMZ_12864 +#define AZSMZ_12864 // // Silvergate GLCD controller diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b6ea64c2af50..244ee89d4c51 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -21,6 +21,8 @@ */ #pragma once +#define CONFIG_EXAMPLES_DIR "delta/Velleman/K8800" + /** * Configuration_adv.h * @@ -161,12 +163,17 @@ * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ #if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius + #if ENABLED(VELLEMAN_K8800_STOCK) + #define THERMAL_PROTECTION_PERIOD 60 // Seconds + #define THERMAL_PROTECTION_HYSTERESIS 20 // Degrees Celsius + #else + #define THERMAL_PROTECTION_PERIOD 40 // Seconds + #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius + #endif - //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops + #define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP) - //#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303 + #define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303 #endif /** @@ -181,7 +188,11 @@ * and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set * below 2. */ - #define WATCH_TEMP_PERIOD 20 // Seconds + #if ENABLED(VELLEMAN_K8800_STOCK) + #define WATCH_TEMP_PERIOD 60 // Seconds + #else + #define WATCH_TEMP_PERIOD 20 // Seconds + #endif #define WATCH_TEMP_INCREASE 2 // Degrees Celsius #endif @@ -189,7 +200,11 @@ * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds + #if ENABLED(VELLEMAN_K8800_STOCK) + #define THERMAL_PROTECTION_BED_PERIOD 30 // Seconds + #else + #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds + #endif #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius /** @@ -250,7 +265,11 @@ * 5. Enable PID_FAN_SCALING_ALTERNATIVE_DEFINITION and enter the two identified Kf-values in * PID_FAN_SCALING_AT_FULL_SPEED and PID_FAN_SCALING_AT_MIN_SPEED. Enter the minimum speed in PID_FAN_SCALING_MIN_SPEED */ - //#define PID_FAN_SCALING + #if ENABLED(VELLEMAN_K8800_STOCK) + #define PID_FAN_SCALING false + #else + #define PID_FAN_SCALING false + #endif #if ENABLED(PID_FAN_SCALING) //#define PID_FAN_SCALING_ALTERNATIVE_DEFINITION #if ENABLED(PID_FAN_SCALING_ALTERNATIVE_DEFINITION) @@ -370,13 +389,13 @@ * The fan turns on automatically whenever any driver is enabled and turns * off (or reduces to idle speed) shortly after drivers are turned off. */ -//#define USE_CONTROLLER_FAN +#define USE_CONTROLLER_FAN #if ENABLED(USE_CONTROLLER_FAN) - //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan + #define CONTROLLER_FAN_PIN FAN1_PIN // Set a custom pin for the controller fan //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled. #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.) - #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled + #define CONTROLLERFAN_SPEED_ACTIVE 204 // (0-255) Active speed, used when any motor is enabled #define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled #define CONTROLLERFAN_IDLE_TIME 60 // (seconds) Extra time to keep the fan running after disabling motors //#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings @@ -388,7 +407,7 @@ // When first starting the main fan, run it at full speed for the // given number of milliseconds. This gets the fan spinning reliably // before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 +#define FAN_KICKSTART_TIME 300 // Some coolers may require a non-zero "off" state. //#define FAN_OFF_PWM 1 @@ -405,7 +424,7 @@ * * Define one or both of these to override the default 0-255 range. */ -//#define FAN_MIN_PWM 50 +//#define FAN_MIN_PWM 100 //#define FAN_MAX_PWM 128 /** @@ -449,7 +468,12 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ -#define E0_AUTO_FAN_PIN -1 +#if ENABLED(VELLEMAN_K8800_STOCK) + #define E0_AUTO_FAN_PIN -1 +#else + // case light only during print + #define E0_AUTO_FAN_PIN 7 +#endif #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 @@ -457,7 +481,7 @@ #define E5_AUTO_FAN_PIN -1 #define E6_AUTO_FAN_PIN -1 #define E7_AUTO_FAN_PIN -1 -#define CHAMBER_AUTO_FAN_PIN -1 +#define CHAMBER_AUTO_FAN_PIN FAN_PIN #define EXTRUDER_AUTO_FAN_TEMPERATURE 50 #define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed @@ -478,14 +502,18 @@ /** * M355 Case Light on-off / brightness */ -//#define CASE_LIGHT_ENABLE +#define CASE_LIGHT_ENABLE #if ENABLED(CASE_LIGHT_ENABLE) - //#define CASE_LIGHT_PIN 4 // Override the default pin if needed + #define CASE_LIGHT_PIN 7 // Override the default pin if needed #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW - #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on - #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin) + #if ENABLED(VELLEMAN_K8800_STOCK) + #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on + #else + #define CASE_LIGHT_DEFAULT_ON false // Set default power-up state on + #endif + #define CASE_LIGHT_DEFAULT_BRIGHTNESS 100 // Set default power-up brightness (0-255, requires PWM pin) //#define CASE_LIGHT_MAX_PWM 128 // Limit pwm - //#define CASE_LIGHT_MENU // Add Case Light options to the LCD menu + #define CASE_LIGHT_MENU // Add Case Light options to the LCD menu //#define CASE_LIGHT_NO_BRIGHTNESS // Disable brightness control. Enable for non-PWM lighting. //#define CASE_LIGHT_USE_NEOPIXEL // Use NeoPixel LED as case light, requires NEOPIXEL_LED. #if ENABLED(CASE_LIGHT_USE_NEOPIXEL) @@ -628,8 +656,14 @@ //#define SENSORLESS_BACKOFF_MM { 2, 2 } // (mm) Backoff from endstops before sensorless homing -#define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump -#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) +#if ENABLED(VELLEMAN_K8800_STOCK) + #define HOMING_BUMP_MM { 5, 5, 5 } // (mm) Backoff from endstops after first bump + // For delta all values must be the same + #define HOMING_BUMP_DIVISOR { 5, 5, 5 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) +#else + #define HOMING_BUMP_MM { 5, 5, 5 } // (mm) Backoff from endstops after first bump + #define HOMING_BUMP_DIVISOR { 10, 10, 10 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) +#endif //#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (mm) Backoff from endstops after homing @@ -758,7 +792,7 @@ // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm #define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle - #define Z_STEPPER_ALIGN_ITERATIONS 5 // Number of iterations to apply during alignment + #define Z_STEPPER_ALIGN_ITERATIONS 3 // Number of iterations to apply during alignment #define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this #define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done? // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights? @@ -813,7 +847,11 @@ * Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period. * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout. */ -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 +#if ENABLED(VELLEMAN_K8800_STOCK) + #define DEFAULT_STEPPER_DEACTIVE_TIME 15 +#else + #define DEFAULT_STEPPER_DEACTIVE_TIME 120 +#endif #define DISABLE_INACTIVE_X true #define DISABLE_INACTIVE_Y true #define DISABLE_INACTIVE_Z true // Set 'false' if the nozzle could fall onto your printed part! @@ -822,7 +860,7 @@ // If the Nozzle or Bed falls when the Z stepper is disabled, set its resting position here. //#define Z_AFTER_DEACTIVATE Z_HOME_POS -//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated +#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated // Default Minimum Feedrates for printing and travel moves #define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s) Minimum feedrate. Set with M205 S. @@ -833,7 +871,7 @@ // Slow down the machine if the lookahead buffer is (by default) half full. // Increase the slowdown divisor for larger buffer sizes. -#define SLOWDOWN +//#define SLOWDOWN #if ENABLED(SLOWDOWN) #define SLOWDOWN_DIVISOR 2 #endif @@ -949,7 +987,11 @@ * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the * lowest stepping frequencies. */ -//#define ADAPTIVE_STEP_SMOOTHING +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define ADAPTIVE_STEP_SMOOTHING +#else + #define ADAPTIVE_STEP_SMOOTHING +#endif /** * Custom Microstepping @@ -1024,7 +1066,8 @@ // @section lcd #if EITHER(ULTIPANEL, EXTENSIBLE_UI) - #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE_XYZ 50*60 + #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel #define SHORT_MANUAL_Z_MOVE 0.025 // (mm) Smallest manual Z move (< 0.1mm) #if ENABLED(ULTIPANEL) #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" @@ -1033,10 +1076,14 @@ #endif // Change values more rapidly when the encoder is rotated faster -#define ENCODER_RATE_MULTIPLIER +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define ENCODER_RATE_MULTIPLIER +#else + #define ENCODER_RATE_MULTIPLIER +#endif #if ENABLED(ENCODER_RATE_MULTIPLIER) - #define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed - #define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed + #define ENCODER_10X_STEPS_PER_SEC 90 // (steps/s) Encoder rate for 10x speed + #define ENCODER_100X_STEPS_PER_SEC 160 // (steps/s) Encoder rate for 100x speed #endif // Play a beep when the feedrate is changed from the Status Screen @@ -1049,7 +1096,7 @@ #if HAS_LCD_MENU // Include a page of printer information in the LCD Main Menu - //#define LCD_INFO_MENU + #define LCD_INFO_MENU #if ENABLED(LCD_INFO_MENU) //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages #endif @@ -1086,13 +1133,13 @@ #endif // HAS_LCD_MENU // Scroll a longer status message into view -//#define STATUS_MESSAGE_SCROLLING +#define STATUS_MESSAGE_SCROLLING // On the Info Screen, display XY with one decimal place when possible -//#define LCD_DECIMAL_SMALL_XY +#define LCD_DECIMAL_SMALL_XY // The timeout (in ms) to return to the status screen from sub-menus -//#define LCD_TIMEOUT_TO_STATUS 15000 +#define LCD_TIMEOUT_TO_STATUS 15000 // Add an 'M73' G-code to set the current percentage //#define LCD_SET_PROGRESS_MANUALLY @@ -1105,7 +1152,7 @@ #endif #if EITHER(SDSUPPORT, LCD_SET_PROGRESS_MANUALLY) && ANY(HAS_MARLINUI_U8GLIB, HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) - //#define SHOW_REMAINING_TIME // Display estimated time to completion + #define SHOW_REMAINING_TIME // Display estimated time to completion #if ENABLED(SHOW_REMAINING_TIME) //#define USE_M73_REMAINING_TIME // Use remaining time from M73 command instead of estimation //#define ROTATE_PROGRESS_DISPLAY // Display (P)rogress, (E)lapsed, and (R)emaining time @@ -1133,7 +1180,11 @@ // Enable this option and set to HIGH if your SD cards are incorrectly detected. //#define SD_DETECT_STATE HIGH - //#define SDCARD_READONLY // Read-only SD card (to save over 2K of flash) +#if ENABLED(VELLEMAN_K8800_STOCK) + //#define SDCARD_READONLY // Read-only SD card (to save over 2K of flash) +#else + #define SDCARD_READONLY // Read-only SD card (to save over 2K of flash) +#endif #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls @@ -1210,7 +1261,7 @@ #define FOLDER_SORTING -1 // -1=above 0=none 1=below #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 G-code. #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. - #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) + #define SDSORT_USES_STACK true // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting. @@ -1218,10 +1269,10 @@ #endif // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT + #define LONG_FILENAME_HOST_SUPPORT // Enable this option to scroll long filenames in the SD card menu - //#define SCROLL_LONG_FILENAMES + #define SCROLL_LONG_FILENAMES // Leave the heaters on after Stop Print (not recommended!) //#define SD_ABORT_NO_COOLDOWN @@ -1329,7 +1380,7 @@ */ #if HAS_MARLINUI_U8GLIB // Show SD percentage next to the progress bar - //#define DOGM_SD_PERCENT + #define DOGM_SD_PERCENT // Save many cycles by drawing a hollow frame or no frame on the Info Screen //#define XYZ_NO_FRAME @@ -1382,7 +1433,7 @@ #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM) #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating - #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating + //#define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating //#define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap @@ -1571,7 +1622,7 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#define BABYSTEPPING #if ENABLED(BABYSTEPPING) //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define BABYSTEP_WITHOUT_HOMING @@ -1582,7 +1633,7 @@ #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep - //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. + #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. @@ -1797,7 +1848,7 @@ #endif // Moves (or segments) with fewer steps than this will be joined with the next move -#define MIN_STEPS_PER_SEGMENT 6 +#define MIN_STEPS_PER_SEGMENT 1 /** * Minimum delay before and after setting the stepper DIR (in ns) @@ -1911,7 +1962,7 @@ * Currently handles M108, M112, M410, M876 * NOTE: Not yet implemented for all platforms. */ -//#define EMERGENCY_PARSER +#define EMERGENCY_PARSER // Bad Serial-connections can miss a received command by sending an 'ok' // Therefore some clients abort after 30 seconds in a timeout. @@ -1927,7 +1978,7 @@ #define SERIAL_OVERRUN_PROTECTION // For serial echo, the number of digits after the decimal point -//#define SERIAL_FLOAT_PRECISION 4 +#define SERIAL_FLOAT_PRECISION 4 // @section extras @@ -2054,28 +2105,28 @@ * Requires NOZZLE_PARK_FEATURE. * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. */ -//#define ADVANCED_PAUSE_FEATURE +#define ADVANCED_PAUSE_FEATURE #if ENABLED(ADVANCED_PAUSE_FEATURE) - #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. - #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. + #define PAUSE_PARK_RETRACT_FEEDRATE 120 // (mm/s) Initial retract feedrate. + #define PAUSE_PARK_RETRACT_LENGTH 6 // (mm) Initial retract. // This short retract is done immediately, before parking the nozzle. - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. + #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 25 // (mm/s) Unload filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. + #define FILAMENT_CHANGE_UNLOAD_LENGTH 700 // (mm) The length of filament for a complete unload. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. // Set to 0 for manual unloading. #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. // 0 to disable start loading and skip to fast load only - #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. + #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 25 // (mm/s) Load filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. + #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 650 // (mm) Load length of filament, from extruder gear to nozzle. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate. - #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading. + #define ADVANCED_PAUSE_PURGE_LENGTH 55 // (mm) Length to extrude after loading. // Set to 0 for manual extrusion. // Filament can be extruded repeatedly from the Filament Change menu // until extrusion is consistent, and to purge old filament. @@ -2088,14 +2139,14 @@ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload - #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. + #define PAUSE_PARK_NOZZLE_TIMEOUT 120 // (seconds) Time limit before the nozzle is turned off for safety. #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. - //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. + #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change - //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. + #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #endif @@ -3123,7 +3174,7 @@ * - M206 and M428 are disabled. * - G92 will revert to its behavior from Marlin 1.0. */ -//#define NO_WORKSPACE_OFFSETS +#define NO_WORKSPACE_OFFSETS // Extra options for the M114 "Current Position" report //#define M114_DETAIL // Use 'M114` for details to check planner calculations diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 3ec4e1a34b9b..17ebdda46307 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -740,7 +740,7 @@ #elif MB(RUMBA32_AUS3D) #error "BOARD_RUMBA32_AUS3D is now BOARD_RUMBA32_V1_0. Please update your configuration." #else - #error "Unknown MOTHERBOARD value set in Configuration.h" + #pragma GCC error "Unknown MOTHERBOARD value set in Configuration.h" #endif #undef BOARD_MKS_13 diff --git a/Marlin/src/pins/ramps/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h index 7e8c245a4158..d73ddf66fda3 100644 --- a/Marlin/src/pins/ramps/pins_K8800.h +++ b/Marlin/src/pins/ramps/pins_K8800.h @@ -120,3 +120,9 @@ #endif #endif // HAS_WIRED_LCD + +// LCD and encoder settings (Conditional_LCD.h) +#define LCD_CONTRAST_MIN 128 +#define LCD_CONTRAST_MAX 255 +#define LCD_CONTRAST_INIT 180 + diff --git a/platformio.ini b/platformio.ini index c426c5223b3b..2667e3abd15e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -20,6 +20,7 @@ src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards default_envs = mega2560 include_dir = Marlin +extra_configs = platformio.ini.local # # The 'common' values are used for most Marlin builds diff --git a/platformio.ini.local b/platformio.ini.local new file mode 100644 index 000000000000..9ff1adf3f5e8 --- /dev/null +++ b/platformio.ini.local @@ -0,0 +1,25 @@ +# +# Marlin Firmware +# PlatformIO Configuration File +# +# For detailed documentation with EXAMPLES: +# +# https://docs.platformio.org/en/latest/projectconf.html +# + +# Automatic targets - enable auto-uploading +#targets = upload + +[platformio] +default_envs = K8800 + +# +# Velleman K8800 +# +[env:K8800] +platform = atmelavr +board = megaatmega2560 +board_upload.maximum_size = 245759 +monitor_speed = 500000 +monitor_port = /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 +upload_port = /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 \ No newline at end of file From c62f768944c945b4fd6b061c923b3c7e9e02ab32 Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Fri, 28 Aug 2020 12:45:38 +0200 Subject: [PATCH 2/7] K8800 - fix erraneous ENCODER_PULSES_PER_STEP --- Marlin/Configuration.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 4f77b4307a1d..1e854913cba7 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -51,6 +51,8 @@ #endif #endif +#define ENCODER_FEEDRATE_DEADZONE 2 + /** * Configuration.h * @@ -2032,7 +2034,7 @@ // This option overrides the default number of encoder pulses needed to // produce one step. Should be increased for high-resolution encoders. // -#define ENCODER_PULSES_PER_STEP 1 +#define ENCODER_PULSES_PER_STEP 2 // // Use this option to override the number of step signals required to From 41b075a8c77a6c6e22e9e2de452f409aeadc6048 Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Sun, 30 Aug 2020 14:03:05 +0200 Subject: [PATCH 3/7] K8800 - fix typos when VELLEMAN_K800_STOCK=true --- Marlin/Configuration.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1e854913cba7..8f6a26193d4a 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -43,11 +43,11 @@ // 3 ... heated bed, variant @susisstrolch (PC1, PK0, sandwich 220mm) #define VELLEMAN_K8800_BED 3 -#if VELLEMAN_K8800_BED > 0 + #if VELLEMAN_K8800_BED > 0 // heated bed pin configuration #define HEATER_BED_PIN 36 // @shelxle: 36, @riodoro: 31 #define TEMP_BED_PIN 8 - #define HEATED_BED_SENSOR 5 + #define TEMP_SENSOR_BED 5 #endif #endif @@ -449,7 +449,7 @@ * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ #if !defined(TEMP_SENSOR_0) - #define TEMP_SENSOR_0 7 /default: stock Velleman hotend + #define TEMP_SENSOR_0 7 //default: stock Velleman hotend #endif #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 @@ -888,9 +888,6 @@ * X, Y, Z, E0 [, E1[, E2...]] */ // variables to calculate steps -#if ENABLED(VELLEMAN_K8800_STOCK) - #define DEFAULT_AXIS_STEPS_PER_UNIT { 116.360, 116.360, 116.360, 148.700 } // default steps per unit for Kossel (GT2, 20 tooth) -#else #define XYZ_FULL_STEPS_PER_ROTATION 200 #define XYZ_MICROSTEPS 32 #define XYZ_BELT_PITCH 2.5 @@ -898,7 +895,10 @@ // delta speeds must be the same on xyz #define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) +#if ENABLED(VELLEMAN_K8800_STOCK) #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, 154.3 } // default steps per unit for Kossel (GT2, 20 tooth) +#else + #define DEFAULT_AXIS_STEPS_PER_UNIT { 116.360, 116.360, 116.360, 148.700 } // default steps per unit for Kossel (GT2, 20 tooth) #endif /** From 03f36627c244f7c2025325162c18c44f9c1619a9 Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Sat, 19 Sep 2020 15:43:29 +0200 Subject: [PATCH 4/7] K8800 - add measured E-steprate for BMC dual drive --- Marlin/Configuration.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 8f6a26193d4a..21b287af27af 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -29,8 +29,11 @@ #if ENABLED(VELLEMAN_K8800_STOCK) #define E3D_HOTEND false #define VELLEMAN_K8800_BED 0 + #define ESTEPSpMM 154.3 // E-Steps/mm #else // tweaked K8800 #define E3D_HOTEND true + //#define ESTEPSpMM 148.7 // E-Steps/mm + #define ESTEPSpMM 812.0 // BMC Dual Drive extruder (830) #if ENABLED(E3D_HOTEND) #define TEMP_SENSOR_0 5 // E3D V6 hotend @@ -895,11 +898,7 @@ // delta speeds must be the same on xyz #define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) -#if ENABLED(VELLEMAN_K8800_STOCK) - #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, 154.3 } // default steps per unit for Kossel (GT2, 20 tooth) -#else - #define DEFAULT_AXIS_STEPS_PER_UNIT { 116.360, 116.360, 116.360, 148.700 } // default steps per unit for Kossel (GT2, 20 tooth) -#endif + #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, ESTEPSpMM } // default steps per unit for Kossel (GT2, 20 tooth) /** * Default Max Feed Rate (mm/s) From af413df3d6a1fa8d820f7d817decd22924a011d2 Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Sun, 27 Sep 2020 11:37:56 +0200 Subject: [PATCH 5/7] add definitions for Haydn Huntleys MagBalls & Arms --- Marlin/Configuration.h | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 21b287af27af..ea0d84bcc182 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -26,14 +26,16 @@ // set to true to use settings from Velleman K8800 Marlin 1.1.4 #define VELLEMAN_K8800_STOCK false +#define MAX_STEPRATE 45000 // max. Steps/s for AVR boards (see reprap) + #if ENABLED(VELLEMAN_K8800_STOCK) #define E3D_HOTEND false #define VELLEMAN_K8800_BED 0 - #define ESTEPSpMM 154.3 // E-Steps/mm + #define ESTEPS_P_MM 154.3 // stock E-Steps/mm #else // tweaked K8800 #define E3D_HOTEND true - //#define ESTEPSpMM 148.7 // E-Steps/mm - #define ESTEPSpMM 812.0 // BMC Dual Drive extruder (830) + #define ESTEPS_P_MM 812.0 // BMC Dual Drive extruder (830) + #define HAYDN_MAGARMS 288.13 // Haydn Huntley MagBalls and Arms #if ENABLED(E3D_HOTEND) #define TEMP_SENSOR_0 5 // E3D V6 hotend @@ -688,7 +690,11 @@ // Make delta curves from many straight lines (linear interpolation). // This is a trade-off between visible corners (not enough segments) // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 60 + #if ENABLED(VELLEMAN_K8800_STOCK) + #define DELTA_SEGMENTS_PER_SECOND 60 + #else + #define DELTA_SEGMENTS_PER_SECOND 100 + #endif // After homing move down to a height where XY movement is unconstrained #define DELTA_HOME_TO_SAFE_ZONE @@ -714,7 +720,11 @@ #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) // Set the steprate for papertest probing - #define PROBE_MANUALLY_STEP 0.05 // (mm) + #if ENABLED(VELLEMAN_K8800_STOCK) + #define PROBE_MANUALLY_STEP 0.05 // (mm) + #else + #define PROBE_MANUALLY_STEP (2 * 0.0086) // max. resolution is 0.0086mm + #endif #endif // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). @@ -733,10 +743,15 @@ // Center-to-center distance of the holes in the diagonal push rods. #define DELTA_DIAGONAL_ROD 207.0 // (mm) // Distance between bed and nozzle Z home position - #define DELTA_HEIGHT 308.00 // (mm) Get this value from G33 auto calibrate + #define DELTA_HEIGHT 308.00 // (mm) Get this value from G33 auto calibrate #else - #define DELTA_DIAGONAL_ROD 210.0 // (mm) - #define DELTA_HEIGHT 298.00 // (mm) Get this value from G33 auto calibrate + #if ENABLED(HAYDN_MAGARMS) + #define DELTA_DIAGONAL_ROD 218.13 // (mm) SusisStrolc rod set + #define DELTA_HEIGHT (298.00 - 11.0) // (mm) Get this value from G33 auto calibrate + #else + #define DELTA_DIAGONAL_ROD 210.0 // (mm) + #define DELTA_HEIGHT 298.00 // (mm) Get this value from G33 auto calibrate + #endif #endif #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate @@ -898,7 +913,7 @@ // delta speeds must be the same on xyz #define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) - #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, ESTEPSpMM } // default steps per unit for Kossel (GT2, 20 tooth) + #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, ESTEPS_P_MM } // default steps per unit for Kossel (GT2, 20 tooth) /** * Default Max Feed Rate (mm/s) From c359e7a71cfaddc7e246a4eead5ec2391ca00496 Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Mon, 28 Sep 2020 08:58:06 +0200 Subject: [PATCH 6/7] Config change to K8800 - calculate max. speed based on AVR max. steprate - add contitionals for Haydn Huntley MagArms - rework K8800 conditionals --- Marlin/Configuration.h | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index ea0d84bcc182..091fff0e79ec 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -739,20 +739,28 @@ // Horizontal offset of the universal joints on the carriages. #define DELTA_CARRIAGE_OFFSET 23.777 // mm -#if ENABLED(VELLEMAN_K8800_STOCK) // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 207.0 // (mm) + #define STOCK_K8800_DIAGONAL_ROD 207.0 // (mm) // Distance between bed and nozzle Z home position - #define DELTA_HEIGHT 308.00 // (mm) Get this value from G33 auto calibrate -#else - #if ENABLED(HAYDN_MAGARMS) - #define DELTA_DIAGONAL_ROD 218.13 // (mm) SusisStrolc rod set - #define DELTA_HEIGHT (298.00 - 11.0) // (mm) Get this value from G33 auto calibrate + #define STOCK_K8800_DELTAHEIGHT 308.0 // (mm) Get this value from G33 auto calibrate + + #if ENABLED(VELLEMAN_K8800_STOCK) + #define DELTA_DIAGONAL_ROD (STOCK_K8800_DIAGONAL_ROD) + #define DELTA_HEIGHT (STOCK_K8800_DELTAHEIGHT) #else - #define DELTA_DIAGONAL_ROD 210.0 // (mm) - #define DELTA_HEIGHT 298.00 // (mm) Get this value from G33 auto calibrate + #if defined(HAYDN_MAGARMS) + #define DELTA_DIAGONAL_ROD 288.13 // (mm) Haydn Huntley MagArms + #define DELTA_HEIGHT (STOCK_K8800_DELTAHEIGHT - DELTA_DIAGONAL_ROD + STOCK_K8800_DIAGONAL_ROD - 10.0) + #else + #if (VELLEMAN_K8800_BED) == 3 + #define DELTA_DIAGONAL_ROD (STOCK_K8800_DIAGONAL_ROD + 3.0) + #define DELTA_HEIGHT (STOCK_K8800_DELTAHEIGHT - 10.0) // height of heated bed + #else + #define DELTA_DIAGONAL_ROD (STOCK_K8800_DIAGONAL_ROD) + #define DELTA_HEIGHT (STOCK_K8800_DELTAHEIGHT - 0) // height of heated bed + #endif + #endif #endif -#endif #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate @@ -920,11 +928,13 @@ * Override with M203 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 500, 500, 500, 25 } +#define _MXYZFR (MAX_STEPRATE / DEFAULT_XYZ_STEPS_PER_UNIT) +#define _MEFR (MAX_STEPRATE / (ESTEPS_P_MM)) +#define DEFAULT_MAX_FEEDRATE {_MXYZFR , _MXYZFR, _MXYZFR, _MEFR } //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) - #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 600, 50 } // ...or, set your own edit limits + #define MAX_FEEDRATE_EDIT_VALUES { 1.5 * (_MXYZFR), 1.5 * (_MXYZF),1.5 * (_MXYZFR), 1.5 * (_MEFR) } // ...or, set your own edit limits #endif /** @@ -1203,11 +1213,7 @@ // with NOZZLE_AS_PROBE this can be negative for a wider probing area. #if ENABLED(VELLEMAN_K8800_STOCK) #define PROBING_MARGIN ( DELTA_RADIUS / 2) - #elif VELLEMAN_K8800_BED == 3 - // printbed has 220mm diameter, so we don't need the margin - #define PROBING_MARGIN 5 #else - #pragma GCC warning "setting PROBING_MARGIN to 15mm" #define PROBING_MARGIN 15 #endif @@ -1215,7 +1221,7 @@ #if ENABLED(VELLEMAN_K8800_STOCK) #define XY_PROBE_SPEED (66.67 * 60) #else - #define XY_PROBE_SPEED (32 * 60) + #define XY_PROBE_SPEED (48 * 60) #endif // Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) From 01cb4f6d0ba260395c1ca8b6eee168d2024273ee Mon Sep 17 00:00:00 2001 From: Susis Strolch Date: Tue, 29 Sep 2020 16:13:56 +0200 Subject: [PATCH 7/7] small cleanup --- Marlin/Configuration.h | 10 +++++++--- Marlin/Configuration_adv.h | 2 +- Marlin/src/pins/ramps/pins_K8800.h | 12 +++--------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 091fff0e79ec..aed239748263 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -26,7 +26,7 @@ // set to true to use settings from Velleman K8800 Marlin 1.1.4 #define VELLEMAN_K8800_STOCK false -#define MAX_STEPRATE 45000 // max. Steps/s for AVR boards (see reprap) +#define MAX_STEPRATE 40000 // max. Steps/s for AVR boards (see reprap) #if ENABLED(VELLEMAN_K8800_STOCK) #define E3D_HOTEND false @@ -168,7 +168,11 @@ #endif // Name displayed in the LCD "Ready" message and Info menu -#define CUSTOM_MACHINE_NAME "Vertex Delta" +#if ENABLED(VELLEMAN_K8800_STOCK) + #define CUSTOM_MACHINE_NAME "Vertex Delta" +#else + #define CUSTOM_MACHINE_NAME "Vertex Delta [mod]" +#endif // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like https://www.uuidgenerator.net/version4 @@ -1033,7 +1037,7 @@ * The probe replaces the Z-MIN endstop and is used for Z homing. * (Automatically enables USE_PROBE_FOR_Z_HOMING.) */ -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // Force the use of the probe for Z-axis homing //#define USE_PROBE_FOR_Z_HOMING diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 244ee89d4c51..635cb8537b9e 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -391,7 +391,7 @@ */ #define USE_CONTROLLER_FAN #if ENABLED(USE_CONTROLLER_FAN) - #define CONTROLLER_FAN_PIN FAN1_PIN // Set a custom pin for the controller fan + //#define CONTROLLER_FAN_PIN FAN1_PIN // Set a custom pin for the controller fan //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled. #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.) diff --git a/Marlin/src/pins/ramps/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h index d73ddf66fda3..8d5232569766 100644 --- a/Marlin/src/pins/ramps/pins_K8800.h +++ b/Marlin/src/pins/ramps/pins_K8800.h @@ -109,9 +109,9 @@ #define LCD_PINS_D6 33 #define LCD_PINS_D7 31 - #define LCD_CONTRAST_MIN 0 - #define LCD_CONTRAST_MAX 100 - #define DEFAULT_LCD_CONTRAST 30 + #define LCD_CONTRAST_MIN 128 + #define LCD_CONTRAST_MAX 255 + #define LCD_CONTRAST_INIT 180 #if ENABLED(NEWPANEL) #define BTN_EN1 17 @@ -120,9 +120,3 @@ #endif #endif // HAS_WIRED_LCD - -// LCD and encoder settings (Conditional_LCD.h) -#define LCD_CONTRAST_MIN 128 -#define LCD_CONTRAST_MAX 255 -#define LCD_CONTRAST_INIT 180 -