MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.17k stars 19.21k forks source link

[bugfix-2.0.x] Bad forward extruder moves between retractions #11093

Closed VanessaE closed 6 years ago

VanessaE commented 6 years ago

Normal forward extruder moves are being interrupted, or something :smiley:, particularly the first move or two after a retract -- including the corresponding unretract move. Seems to be a conflict between linear advance, retraction moves, and Slic3r's wipe function.

Listening very closely, I can hear a brief, quiet extruder whine with each failed forward move -- not a typical stall in the middle of a move, more like "tried to go way too fast for the whole move".

The result is the extruder doing more successful backward moves than forward moves, in retract-heavy parts of the print anyway.

git bisect process:

vanessa@rainbird:~/RepRap/Marlin-bugfix-2.0.x$ git bisect start 
Already on 'bugfix-2.0.x'
Your branch is up-to-date with 'origin/bugfix-2.0.x'.
vanessa@rainbird:~/RepRap/Marlin-bugfix-2.0.x$ git bisect good 2ba198
vanessa@rainbird:~/RepRap/Marlin-bugfix-2.0.x$ git bisect  bad 48a15d1c7e78eaa716bedecb80feeae780c7234a
Bisecting: 23 revisions left to test after this (roughly 5 steps)
[091f74243240992be5f6e2edf7e63a585245e183] Add WIFISUPPORT to example configs
vanessa@rainbird:~/RepRap/Marlin-bugfix-2.0.x$  pushd .; cp ../Configuration* Marlin/; cd /home/vanessa/RepRap/arduino-1.8.5/; /home/vanessa/RepRap/arduino-1.8.5/arduino; popd; git stash

* click the "(➡)" compile/upload button, then close the IDE after it's done

* connect with Pronterface, heat up, print, then stop/disconnect after I get a reliable result

* `git bisect bad` or `good` accordingly, and repeat from `pushd` above

The result:

vanessa@rainbird:~/RepRap/Marlin-bugfix-2.0.x$ git bisect good
a215725df6a00aa61c5d5a8c5e2d109810f082c9 is the first bad commit
commit a215725df6a00aa61c5d5a8c5e2d109810f082c9
Author: etagle <ejtagle@hotmail.com>
Date:   Tue Jun 12 01:04:26 2018 -0300

    Fix stepper pulse timing

    Always honor minimum period on stepper pulse generation, and fix timing calculations

    Signed-off-by: etagle <ejtagle@hotmail.com>

:040000 040000 a1a3b76e8e49bdd312c7ca8c2df46badd68c4e23 2599204319092a4343f78ac1d71243c56cb495cf M  Marlin
gloomyandy commented 6 years ago

Are you using JUNCTION_DEVIATION? Does turning that off make any difference? I ask because from this thread https://github.com/MarlinFirmware/Marlin/issues/9917 there are still problems with the calculation of ejerk values. Posting your configuration may help others to investigate further.

VanessaE commented 6 years ago

No, I have that disabled.

Configs, as a diff ```diff commit 7f6dc969078a118d7475ab17a695b28fe7a61168 Author: Vanessa Dannenberg Date: Sun Jun 24 02:53:47 2018 -0400 My Settings diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 8586c4e54..2da18e54d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -74,7 +74,7 @@ // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "bugfix-2.0.x 0d79128c" // Who made the changes. #define SHOW_BOOTSCREEN #define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1 #define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2 @@ -125,7 +125,7 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 115200 // Enable the Bluetooth serial interface on AT90USB devices //#define BLUETOOTH @@ -151,7 +151,7 @@ #define EXTRUDERS 1 // Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 +#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 // For Cyclops or any "multi-extruder" that shares a single nozzle. //#define SINGLENOZZLE @@ -311,12 +311,12 @@ * * :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-4':"Thermocouple + AD8495", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" } */ -#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_0 7 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 -#define TEMP_SENSOR_BED 0 +#define TEMP_SENSOR_BED 13 #define TEMP_SENSOR_CHAMBER 0 // Dummy thermistor constant temperature readings, for use with 998 and 999 @@ -351,11 +351,11 @@ // When temperature exceeds max temp, your heater will be switched off. // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! // You should 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_0_MAXTEMP 255 +#define HEATER_1_MAXTEMP 255 +#define HEATER_2_MAXTEMP 255 +#define HEATER_3_MAXTEMP 255 +#define HEATER_4_MAXTEMP 255 #define BED_MAXTEMP 150 //=========================================================================== @@ -380,10 +380,15 @@ // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it + // prusa i3 with genuine J-head 10 HiFlow with type 7 thermistor + #define DEFAULT_Kp 18.84 + #define DEFAULT_Ki 1.46 + #define DEFAULT_Kd 60.56 + // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 + //#define DEFAULT_Kp 22.2 + //#define DEFAULT_Ki 1.08 + //#define DEFAULT_Kd 114 // MakerGear //#define DEFAULT_Kp 7.0 @@ -414,7 +419,7 @@ * 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 +#define PIDTEMPBED //#define BED_LIMIT_SWITCHING @@ -430,11 +435,16 @@ //#define PID_BED_DEBUG // Sends debug data to the serial port. + // MK2A heatbed with type-13 beta3950 thermistor + #define DEFAULT_bedKp 586.80 + #define DEFAULT_bedKi 102.34 + #define DEFAULT_bedKd 841.18 + //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 + //#define DEFAULT_bedKp 10.00 + //#define DEFAULT_bedKi .023 + //#define DEFAULT_bedKd 305.4 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from pidautotune @@ -461,7 +471,7 @@ * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH. * Note: For Bowden Extruders make this large enough to allow load/unload. */ -#define PREVENT_LENGTHY_EXTRUDE +//#define PREVENT_LENGTHY_EXTRUDE #define EXTRUDE_MAXLENGTH 200 //=========================================================================== @@ -482,7 +492,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_BED // Enable thermal protection for the heated bed //=========================================================================== //============================= Mechanical Settings ========================= @@ -508,10 +518,10 @@ // 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_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG +#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG @@ -543,12 +553,12 @@ // 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_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING true // 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 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 Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe. // 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. @@ -596,14 +606,14 @@ * Override with M92 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 } +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 381.5 } // MK8 gear, running at 8x microstepping /** * Default Max Feed Rate (mm/s) * Override with M203 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE { 500, 500, 30, 80 } /** * Default Max Acceleration (change/s) change = mm/s @@ -611,7 +621,7 @@ * Override with M201 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] */ -#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } +#define DEFAULT_MAX_ACCELERATION { 5000, 5000, 250, 10000 } /** * Default Acceleration (change/s) change = mm/s @@ -621,9 +631,9 @@ * 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 +#define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves +#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts +#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves /** * Default Jerk (mm/s) @@ -703,7 +713,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 /** * Z Servo Probe, such as an endstop switch on a rotating arm. @@ -763,15 +773,15 @@ * O-- FRONT --+ * (0,0) */ -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] +#define X_PROBE_OFFSET_FROM_EXTRUDER 43 // X offset: -left +right [of the nozzle] +#define Y_PROBE_OFFSET_FROM_EXTRUDER -20 // Y offset: -front +behind [the nozzle] +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.55 // Z offset: -below +above [the nozzle] // Certain types of probes need to stay away from edges #define MIN_PROBE_EDGE 10 // X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 +#define XY_PROBE_SPEED 18000 // Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z @@ -782,7 +792,7 @@ // The number of probes to perform at each point. // Set to 2 for a fast/slow probe, using the second probe result. // Set to 3 or more for slow probes, averaging the results. -//#define MULTIPLE_PROBING 2 +#define MULTIPLE_PROBING 4 /** * Z probes require clearance when deploying, stowing, and moving between @@ -798,9 +808,9 @@ * 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_BETWEEN_PROBES 5 // Z Clearance between probe points -//#define Z_AFTER_PROBING 5 // Z position after probing is done +#define Z_CLEARANCE_DEPLOY_PROBE 5 // Z Clearance for Deploy/Stow +#define Z_CLEARANCE_BETWEEN_PROBES 2 // Z Clearance between probe points +#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 @@ -809,7 +819,7 @@ #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 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 // :{ 0:'Low', 1:'High' } @@ -834,8 +844,8 @@ // @section machine // 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_X_DIR true +#define INVERT_Y_DIR false #define INVERT_Z_DIR false // @section extruder @@ -853,12 +863,12 @@ //#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off. -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. +#define Z_HOMING_HEIGHT 10 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... + // Be sure you have this distance over your Z_MAX_POS in case. // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] -#define X_HOME_DIR -1 +#define X_HOME_DIR 1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 @@ -869,12 +879,12 @@ #define Y_BED_SIZE 200 // Travel limits (mm) after homing, corresponding to endstop positions. -#define X_MIN_POS 0 -#define Y_MIN_POS 0 +#define X_MIN_POS -19 +#define Y_MIN_POS -8 #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 Y_MAX_POS 230 +#define Z_MAX_POS 190 /** * Software Endstops @@ -962,7 +972,7 @@ */ //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR -//#define AUTO_BED_LEVELING_BILINEAR +#define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING @@ -998,8 +1008,8 @@ #if ENABLED(G26_MESH_VALIDATION) #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle. #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool. - #define MESH_TEST_HOTEND_TEMP 205.0 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool. - #define MESH_TEST_BED_TEMP 60.0 // (°C) Default bed temperature for the G26 Mesh Validation Tool. + #define MESH_TEST_HOTEND_TEMP 215.0 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool. + #define MESH_TEST_BED_TEMP 65.0 // (°C) Default bed temperature for the G26 Mesh Validation Tool. #endif #endif @@ -1007,14 +1017,14 @@ #if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 + #define GRID_MAX_POINTS_X 2 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Set the boundaries for probing (where the probe can reach). - //#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE - //#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE) - //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE - //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE) + #define LEFT_PROBE_BED_POSITION 28 + #define RIGHT_PROBE_BED_POSITION 168 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 185 // Probe along the Y axis, advancing X after each column //#define PROBE_Y_FIRST @@ -1023,7 +1033,7 @@ // Beyond the probed grid, continue the implied tilt? // Default is to maintain the height of the nearest edge. - //#define EXTRAPOLATE_BEYOND_GRID + #define EXTRAPOLATE_BEYOND_GRID // // Experimental Subdivision of the grid by Catmull-Rom method. @@ -1128,16 +1138,16 @@ // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). // - 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_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28). + #define Z_SAFE_HOMING_X_POINT 28 // X point for Z homing when homing all axes (G28). + #define Z_SAFE_HOMING_Y_POINT 20 // Y point for Z homing when homing all axes (G28). #endif // Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) +#define HOMING_FEEDRATE_XY 6000 +#define HOMING_FEEDRATE_Z 900 // @section calibrate @@ -1169,25 +1179,25 @@ * +-------------->X +-------------->X +-------------->Y * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR */ -//#define SKEW_CORRECTION +#define SKEW_CORRECTION #if ENABLED(SKEW_CORRECTION) // Input all length measurements here: - #define XY_DIAG_AC 282.8427124746 - #define XY_DIAG_BD 282.8427124746 - #define XY_SIDE_AD 200 + #define XY_DIAG_AC 140.69 + #define XY_DIAG_BD 141.27 + #define XY_SIDE_AD 99.84 // Or, set the default skew factors directly here // to override the above measurements: #define XY_SKEW_FACTOR 0.0 - //#define SKEW_CORRECTION_FOR_Z + #define SKEW_CORRECTION_FOR_Z #if ENABLED(SKEW_CORRECTION_FOR_Z) - #define XZ_DIAG_AC 282.8427124746 - #define XZ_DIAG_BD 282.8427124746 - #define YZ_DIAG_AC 282.8427124746 - #define YZ_DIAG_BD 282.8427124746 - #define YZ_SIDE_AD 200 + #define XZ_DIAG_AC 141.31 + #define XZ_DIAG_BD 140.76 + #define YZ_DIAG_AC 140.81 + #define YZ_DIAG_BD 141.36 + #define YZ_SIDE_AD 99.68 #define XZ_SKEW_FACTOR 0.0 #define YZ_SKEW_FACTOR 0.0 #endif @@ -1803,7 +1813,7 @@ // @section extras // Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN +#define FAST_PWM_FAN // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not as annoying as with the hardware PWM. On the other hand, if this frequency diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 26d238ad6..5f4657d36 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -206,7 +206,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 200 /** * PWM Fan Scaling @@ -220,7 +220,7 @@ * * Define one or both of these to override the default 0-255 range. */ -//#define FAN_MIN_PWM 50 +#define FAN_MIN_PWM 3 //#define FAN_MAX_PWM 128 // @section extruder @@ -380,8 +380,8 @@ #define X_HOME_BUMP_MM 5 #define Y_HOME_BUMP_MM 5 #define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially +#define HOMING_BUMP_DIVISOR { 4, 4, 8 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) +//#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially // When G28 is called, this option will make Y home before X //#define HOME_Y_BEFORE_X @@ -408,7 +408,7 @@ #define DEFAULT_STEPPER_DEACTIVE_TIME 120 #define DISABLE_INACTIVE_X true #define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. +#define DISABLE_INACTIVE_Z false // set to false if the nozzle will fall down on your printed part when print has finished. #define DISABLE_INACTIVE_E true #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate @@ -456,7 +456,7 @@ * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the * lowest stepping frequencies. */ -//#define ADAPTIVE_STEP_SMOOTHING +#define ADAPTIVE_STEP_SMOOTHING // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES { 16, 16, 16, 16, 16 } // [1,2,4,8,16] @@ -766,9 +766,9 @@ * See http://marlinfw.org/docs/features/lin_advance.html for full instructions. * Mention @Sebastianv650 on GitHub to alert the author of any issues. */ -//#define LIN_ADVANCE +#define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed + #define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed //#define LA_DEBUG // If enabled, this will generate debug information output over USB. #endif @@ -852,7 +852,7 @@ * 130000 : Maximum for LV8729 stepper driver * 15000 : Maximum for TB6560 stepper driver */ -#define MAXIMUM_STEPPER_RATE 250000 +#define MAXIMUM_STEPPER_RATE 500000 // @section temperature @@ -1662,27 +1662,28 @@ /** * MAX7219 Debug Matrix * - * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip, which can be used as a status - * display. Requires 3 signal wires. Some useful debug options are included to demonstrate its usage. - * - * Fully assembled MAX7219 boards can be found on the internet for under $2(US). - * For example, see https://www.ebay.com/sch/i.html?_nkw=332349290049 + * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip as a realtime status display. + * Requires 3 signal wires. Some useful debug options are included to demonstrate its usage. */ //#define MAX7219_DEBUG #if ENABLED(MAX7219_DEBUG) - #define MAX7219_CLK_PIN 64 // 77 on Re-ARM // Configuration of the 3 pins to control the display - #define MAX7219_DIN_PIN 57 // 78 on Re-ARM - #define MAX7219_LOAD_PIN 44 // 79 on Re-ARM + #define MAX7219_CLK_PIN 64 + #define MAX7219_DIN_PIN 57 + #define MAX7219_LOAD_PIN 44 + + //#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix + #define MAX7219_INIT_TEST // Do a test pattern at initialization (Set to 2 for spiral) + #define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°) /** * Sample debug features * If you add more debug displays, be careful to avoid conflicts! */ #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning - #define MAX7219_DEBUG_STEPPER_HEAD 3 // Show the stepper queue head position on this and the next LED matrix row - #define MAX7219_DEBUG_STEPPER_TAIL 5 // Show the stepper queue tail position on this and the next LED matrix row + #define MAX7219_DEBUG_PLANNER_HEAD 3 // Show the planner queue head position on this and the next LED matrix row + #define MAX7219_DEBUG_PLANNER_TAIL 5 // Show the planner queue tail position on this and the next LED matrix row - #define MAX7219_DEBUG_STEPPER_QUEUE 0 // Show the current stepper queue depth on this and the next LED matrix row + #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row // If you experience stuttering, reboots, etc. this option can reveal how // tweaks made to the configuration are affecting the printer in real-time. #endif @@ -1700,4 +1701,13 @@ // Default behaviour is limited to Z axis only. #endif +/** + * WiFi Support (Espressif ESP32 WiFi) + */ +//#define WIFISUPPORT +#if ENABLED(WIFISUPPORT) + #define WIFI_SSID "Wifi SSID" + #define WIFI_PWD "Wifi Password" +#endif + #endif // CONFIGURATION_ADV_H ``` ` ` Ignore the stuff after `MAXIMUM_STEPPER_RATE 500000`, I'm not sure why that stuff shows as changed. Never touched that section. Probably just the result of copying my configs in from out-of-tree during all the `git bisect` stuff.
gloomyandy commented 6 years ago

Things that might be worth trying until someone who really knows this stuff comes along...

I'm sure @ejtagle will want to take a look at this at some point. What stepper drivers are you using?

VanessaE commented 6 years ago

You have a max E acceleration of 10000, which may be too high I'd be tempted to set that to something lower.

My E acceleration has been set that way for quite a looooong time - in fact that's Marlin's default.

Does lowering the acceleration and retract acceleration help?

During a print, my acceleration is explicitly set to 1500 mm/s² for X/Y moves, and I guess E/retract stays at its default of 2000 (I'm not sure if Slic3r changes E accel along with X/Y or not).

Is the MAXIMUM_STEPPER_RATE figure of 500000 correct? Does lowering it help?

I use A4988's, so according the code comments above that setting, it's correct; I have not tried to lower it.

There have been a lot of changes in the minimum pulse setting area, so perhaps raising that might help.

It's already set appropriately for my driver modules.

gloomyandy commented 6 years ago

From other discussions of Linear Advance it is clear from the author of that code that the default setting of 10000 is almost certainly not correct for most hardware. When I asked about it on the Junction Deviation thread it was suggested that a value of 2100 was a more realistic starting point.

My understanding is that the new pulse code is supposed to produce more accurate pulse lengths and frequencies (which are possibly shorter/higher than before), perhaps this means that settings like acceleration, top speed and jerk now need to be more accurately configured?

On other threads related to lost steps with the new pulse code one of the things that @ejtagle has asked users to try is to adjust the minimum pulse settings upwards (and the max stepper rate downwards) as the current code calculates things differently. There was also a correction to the pulse generation code made two days ago: https://github.com/MarlinFirmware/Marlin/commit/48a15d1c7e78eaa716bedecb80feeae780c7234a#diff-b1e3f1b10558445963aa5bbf4d20249c not sure if your tests included that or not?

It may be that none of the above makes any difference, but if you have the time then having the extra data points will probably help determine what the underlying problem is.

VanessaE commented 6 years ago

perhaps this means that settings like acceleration, top speed and jerk now need to be more accurately configured?

I don't see how that should matter. All these step timing changes were supposed to be about jitter, resolution, and the like, if I understand things correctly, and not absolute number of steps per second, so acceleration and peak speeds should be unaffected.

Besides, it only affects the first extruder move or two, after a retract (well, that's as accurate as I can be, it moves too fast for me to be 100% sure), when the stepper has effectively no load, thus extruder acceleration should be able to go much higher than 2000 mm/s².

not sure if your tests included that or not?

I bisected from 2ba198a624d0bf0b00b044ef0d26514ab54d2a3f to 48a15d1c7e78eaa716bedecb80feeae780c7234a, so yeah, that commit was included.

gloomyandy commented 6 years ago

This pull request may be of interest: https://github.com/MarlinFirmware/Marlin/pull/11098 In particular this change: https://github.com/MarlinFirmware/Marlin/pull/11098/commits/8b1f494b1918ed66056435c2007f0885c1d941c6

which will introduce extra delays for the A4988 if configured.

What exactly is the visible result of the problem you are seeing? I've been running tests with the latest code and have not seen anything obvious, but I may have missed it. But I'm probably not running as fast as you especially things like the max Z and E feedrates.

VanessaE commented 6 years ago

What exactly is the visible result of the problem you are seeing?

As I wrote in my opening post, "[t]he result is the extruder doing more successful backward moves than forward moves, in retract-heavy parts of the print anyway."

...which leads to basically zero nozzle pressure.

But I'm probably not running as fast as you especially things like the max Z and E feedrates.

Z at 30 mm/s and E at 60 mm/s is not fast at all.

VanessaE commented 6 years ago

This bug report is invalid -- I found the problem. Somehow my E module's current got turned down from the usual 625mA to (what to me seems like) a weakling 300 mA. Probably when I took my E modules off to change their microstep settings. I must have swapped the spare, which I know was turned down, with the active one.

Corrected the current setting, pulled to HEAD, works now.

Not sure why this showed up when it did, BUT that module's only been in this state for like, a week, so I wonder if I've run into a variant of the "skips steps on Y" issue many of us have seen? Shouldn't 300 mA on a 5.222:1 geared extruder be enough (mind you, I'm perfectly happy to keep it where it is).

github-actions[bot] commented 4 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.