Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trying to understand LIN_ADVANCE...again :-) #9142

Closed
VanessaE opened this issue Jan 11, 2018 · 8 comments
Closed

Trying to understand LIN_ADVANCE...again :-) #9142

VanessaE opened this issue Jan 11, 2018 · 8 comments

Comments

@VanessaE
Copy link
Contributor

VanessaE commented Jan 11, 2018

This is Marlin 1.1.6 (commit 8dc10fb)

So...I decided to give LIN_ADVANCE another go, since I have since upgraded to a newer Marlin, a new hotend (now a genuine J-head v8), a new geared direct-feed extruder of my own design (https://www.thingiverse.com/thing:2744682). Instead of wasting a bunch of filament on random models, I went for the LIN_ADVANCE calibration test pattern (http://marlinfw.org/tools/lin_advance/k-factor.html)... and rather than ask a bunch of questions, maybe I should let some photos do the talking:

K=50 to 150, speeds of 5 mm/s and 100 mm/s (to test a 20:1 flow rate difference, similar to kinds of differences Slic3r may produce during a typical print, say an interior perimeter or sparse infill versus the thinnest bits of gap fill).

p1170862

K=50 to 150, speeds of 40 mm/s and 80 mm/s (to test a 2:1 flow rate difference)

p1170863

When the difference is small, the test pattern can get pretty close to perfect. Indeed, previous tests showed K=42 to be the sweet spot for the test pattern, but that setting is quite wrong when I try a real calibration print e.g. a Benchy or Ctrl-v v3.

In Marlin, I've left the E:D ratio at 0/auto.

What do I do now?

Here's the gcode output from the 40/80 test (the 5/100 test differed only by speed, all other parameters unchanged):

; ### Marlin K-Factor Calibration Pattern ###
; -------------------------------------------
;
; Created: Wed Jan 10 2018 21:51:52 GMT-0500 (EST)
; Settings:
; Print Size X = 170 mm
; Print Size Y = 125 mm
; Print Rotation = 0 degree
; Print Pattern = Standard
; Print Frame = true
; Prime Nozzle = true
; Prime Extrusion Multiplier = 2.5
; Dwell Time = 2 s
; Filament Diameter = 1.72 mm
; Nozzle Diameter = 0.4 mm
; Nozzle Temperature = 215 °C
; Nozzle / Line Ratio = 1
; Bed Temperature = 60 °C
; Slow Printing Speed = 1200 mm/min
; Fast Printing Speed = 6000 mm/min
; Printing Acceleration = 2500 mm/s^2
; Movement Speed = 7200 mm/min
; Use BL = true
; Retraction Distance = 2.5 mm
; Bed Size X = 200 mm
; Bed Size Y = 200 mm
; Origin Bed Center = false
; Layer Height = 0.208 mm
; Extrusion Multiplier = 1
; Starting Value K-Factor = 50
; Ending value K-Factor = 150
; K-Factor Stepping = 5
; Test Line Spacing = 5 mm
; Test Line Length Slow = 40 mm
; Test Line Length Fast = 80 mm
;
; prepare printing
;
G28 ; home all axes
M190 S60 ; set and wait for bed temp
M104 S215 ; set nozzle temp and continue
G29 ; execute bed automatic leveling compensation
M109 S215 ; block waiting for nozzle temp
G21 ; set units to millimeters
M204 P2500 ; set acceleration
G90 ; use absolute coordinates
M83 ; use relative distances for extrusion
G92 E0 ; reset extruder distance
;
; prime nozzle
;
G1 X15 Y37.5 F7200 ; move to prime start
G1 Z0.208 F1200 ; move to layer height
G1 X15 Y162.5 E11.1899 F1200 ; prime nozzle
G1 X15.6 Y162.5 E0.0537 F1200 ; prime nozzle
G1 X15.6 Y37.5 E11.1899 F1200 ; prime nozzle
G1 E-2.5
;
; print anchor frame
;
G1 X24.6 Y34.5 F7200 ; move to frame start
G1 E2.5
G1 X24.6 Y140.5 E3.7956 F1200
G1 X25 Y140.5 E0.0143 F1200
G1 X25 Y34.5 E3.7956 F1200
G1 E-2.5
G1 X185 Y34.5 F7200 ; move to frame start
G1 E2.5
G1 X185 Y140.5 E3.7956 F1200
G1 X185.4 Y140.5 E0.0143 F1200
G1 X185.4 Y34.5 E3.7956 F1200
G1 E-2.5
;
; start the test pattern
;
G4 P2000 ; Pause (dwell) for 2 seconds
G1 X25 Y37.5 F7200 ; move to pattern start
M900 K50 ; set K-factor
G1 E2.5
G1 X65 Y37.5 E1.4323 F1200
G1 X145 Y37.5 E2.8646 F6000
G1 X185 Y37.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y42.5 F7200
M900 K55 ; set K-factor
G1 E2.5
G1 X65 Y42.5 E1.4323 F1200
G1 X145 Y42.5 E2.8646 F6000
G1 X185 Y42.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y47.5 F7200
M900 K60 ; set K-factor
G1 E2.5
G1 X65 Y47.5 E1.4323 F1200
G1 X145 Y47.5 E2.8646 F6000
G1 X185 Y47.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y52.5 F7200
M900 K65 ; set K-factor
G1 E2.5
G1 X65 Y52.5 E1.4323 F1200
G1 X145 Y52.5 E2.8646 F6000
G1 X185 Y52.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y57.5 F7200
M900 K70 ; set K-factor
G1 E2.5
G1 X65 Y57.5 E1.4323 F1200
G1 X145 Y57.5 E2.8646 F6000
G1 X185 Y57.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y62.5 F7200
M900 K75 ; set K-factor
G1 E2.5
G1 X65 Y62.5 E1.4323 F1200
G1 X145 Y62.5 E2.8646 F6000
G1 X185 Y62.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y67.5 F7200
M900 K80 ; set K-factor
G1 E2.5
G1 X65 Y67.5 E1.4323 F1200
G1 X145 Y67.5 E2.8646 F6000
G1 X185 Y67.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y72.5 F7200
M900 K85 ; set K-factor
G1 E2.5
G1 X65 Y72.5 E1.4323 F1200
G1 X145 Y72.5 E2.8646 F6000
G1 X185 Y72.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y77.5 F7200
M900 K90 ; set K-factor
G1 E2.5
G1 X65 Y77.5 E1.4323 F1200
G1 X145 Y77.5 E2.8646 F6000
G1 X185 Y77.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y82.5 F7200
M900 K95 ; set K-factor
G1 E2.5
G1 X65 Y82.5 E1.4323 F1200
G1 X145 Y82.5 E2.8646 F6000
G1 X185 Y82.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y87.5 F7200
M900 K100 ; set K-factor
G1 E2.5
G1 X65 Y87.5 E1.4323 F1200
G1 X145 Y87.5 E2.8646 F6000
G1 X185 Y87.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y92.5 F7200
M900 K105 ; set K-factor
G1 E2.5
G1 X65 Y92.5 E1.4323 F1200
G1 X145 Y92.5 E2.8646 F6000
G1 X185 Y92.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y97.5 F7200
M900 K110 ; set K-factor
G1 E2.5
G1 X65 Y97.5 E1.4323 F1200
G1 X145 Y97.5 E2.8646 F6000
G1 X185 Y97.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y102.5 F7200
M900 K115 ; set K-factor
G1 E2.5
G1 X65 Y102.5 E1.4323 F1200
G1 X145 Y102.5 E2.8646 F6000
G1 X185 Y102.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y107.5 F7200
M900 K120 ; set K-factor
G1 E2.5
G1 X65 Y107.5 E1.4323 F1200
G1 X145 Y107.5 E2.8646 F6000
G1 X185 Y107.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y112.5 F7200
M900 K125 ; set K-factor
G1 E2.5
G1 X65 Y112.5 E1.4323 F1200
G1 X145 Y112.5 E2.8646 F6000
G1 X185 Y112.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y117.5 F7200
M900 K130 ; set K-factor
G1 E2.5
G1 X65 Y117.5 E1.4323 F1200
G1 X145 Y117.5 E2.8646 F6000
G1 X185 Y117.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y122.5 F7200
M900 K135 ; set K-factor
G1 E2.5
G1 X65 Y122.5 E1.4323 F1200
G1 X145 Y122.5 E2.8646 F6000
G1 X185 Y122.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y127.5 F7200
M900 K140 ; set K-factor
G1 E2.5
G1 X65 Y127.5 E1.4323 F1200
G1 X145 Y127.5 E2.8646 F6000
G1 X185 Y127.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y132.5 F7200
M900 K145 ; set K-factor
G1 E2.5
G1 X65 Y132.5 E1.4323 F1200
G1 X145 Y132.5 E2.8646 F6000
G1 X185 Y132.5 E1.4323 F1200
G1 E-2.5
G1 X25 Y137.5 F7200
M900 K150 ; set K-factor
G1 E2.5
G1 X65 Y137.5 E1.4323 F1200
G1 X145 Y137.5 E2.8646 F6000
G1 X185 Y137.5 E1.4323 F1200
G1 E-2.5
;
; mark the test area for reference
;
G1 X65 Y142.5 F7200
G1 E2.5
G1 X65 Y162.5 E1.4323 F1200
G1 E-2.5
G1 X145 Y142.5 F7200
G1 E2.5
G1 X145 Y162.5 E1.4323 F1200
G1 E-2.5
;
; finish
;
M104 S0 ; turn off hotend
M140 S0 ; turn off bed
G1 Z30 X200 Y200 F7200 ; move away from the print
M84 ; disable motors
M502 ; resets parameters from ROM (for those who do not have an EEPROM)
M501 ; resets parameters from EEPROM (preferably)

Diff showing my settings:

From e997df3bfa20c898327220bf86360462d6a1dcf9 Mon Sep 17 00:00:00 2001
From: Vanessa Ezekowitz <[email protected]>
Date: Wed, 10 Jan 2018 22:19:25 -0500
Subject: [PATCH] my settings

---
 Marlin/Configuration.h     | 110 +++++++++++++++++++++++++--------------------
 Marlin/Configuration_adv.h |  13 +++---
 Marlin/Marlin.ino          |   3 +-
 3 files changed, 69 insertions(+), 57 deletions(-)

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 8fd17498b..109de4494 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -111,7 +111,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
@@ -283,12 +283,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)", '-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 1
 
 // Dummy thermistor constant temperature readings, for use with 998 and 999
 #define DUMMY_THERMISTOR_998_VALUE 25
@@ -345,16 +345,22 @@
   //#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_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
                                   // Set/get with gcode: M301 E[extruder number, 0-2]
-  #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.
   #define K1 0.95 //smoothing factor within the PID
 
   // 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 MK8 and type-7 thermistor
+  // (raised the "functional range" above to 20 to prevent massive overshoot)
+  #define  DEFAULT_Kp 9
+  #define  DEFAULT_Ki 0.8
+  #define  DEFAULT_Kd 40
+
   // 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
@@ -380,7 +386,7 @@
 // If your configuration is significantly different than this and you don't understand the issues involved, you probably
 // shouldn't use bed PID until someone else verifies your hardware works.
 // If this is enabled, find your own PID constants below.
-//#define PIDTEMPBED
+#define PIDTEMPBED
 
 //#define BED_LIMIT_SWITCHING
 
@@ -394,11 +400,16 @@
 
   //#define PID_BED_DEBUG // Sends debug data to the serial port.
 
+  // MK2A heatbed with generic 100k thermistor
+  #define  DEFAULT_bedKp 207.96
+  #define  DEFAULT_bedKi 29.38
+  #define  DEFAULT_bedKd 367.98
+
   //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
@@ -420,7 +431,7 @@
 
 // This option prevents a single extrusion longer than EXTRUDE_MAXLENGTH.
 // Note that for Bowden Extruders a too-small value here may prevent loading.
-#define PREVENT_LENGTHY_EXTRUDE
+//#define PREVENT_LENGTHY_EXTRUDE
 #define EXTRUDE_MAXLENGTH 200
 
 //===========================================================================
@@ -440,7 +451,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 =========================
@@ -488,13 +499,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_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 true // 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 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.
@@ -525,14 +536,15 @@
  * 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, 4000, 760 }    // 7.1 mm MK8 clone, Wade's gearing
+#define DEFAULT_AXIS_STEPS_PER_UNIT     { 80, 80, 4000, 515 }    // 32-tooth flat gear, Wade's gearing
 
 /**
  * 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            { 450, 450, 2.5, 52 }
 
 /**
  * Default Max Acceleration (change/s) change = mm/s
@@ -562,8 +574,8 @@
  * When changing speed and direction, if the difference is less than the
  * value set here, it may happen instantaneously.
  */
-#define DEFAULT_XJERK                 20.0
-#define DEFAULT_YJERK                 20.0
+#define DEFAULT_XJERK                 15.0
+#define DEFAULT_YJERK                 15.0
 #define DEFAULT_ZJERK                  0.4
 #define DEFAULT_EJERK                  5.0
 
@@ -622,7 +634,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.
@@ -679,12 +691,12 @@
  *      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  32   // X offset: -left  +right  [of the nozzle]
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29   // Y offset: -front +behind [the nozzle]
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.15 // Z offset: -below +above  [the nozzle]
 
 // X and Y axis travel speed (mm/m) between probes
-#define XY_PROBE_SPEED 8000
+#define XY_PROBE_SPEED 18000
 
 // Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
@@ -709,8 +721,8 @@
  * 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_CLEARANCE_DEPLOY_PROBE    5 // Z Clearance for Deploy/Stow
+#define Z_CLEARANCE_BETWEEN_PROBES  2  // Z Clearance between probe points
 
 // For M851 give a range for adjusting the Z probe offset
 #define Z_PROBE_OFFSET_RANGE_MIN -20
@@ -742,8 +754,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
 
 // Enable this option for Toshiba stepper drivers
@@ -752,7 +764,7 @@
 // @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
@@ -762,7 +774,7 @@
 
 //#define NO_MOTION_BEFORE_HOMING  // Inhibit movement until all axes have been homed
 
-//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
+#define Z_HOMING_HEIGHT 5    // (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
@@ -774,8 +786,8 @@
 // @section machine
 
 // The size of the print bed
-#define X_BED_SIZE 200
-#define Y_BED_SIZE 200
+#define X_BED_SIZE 225
+#define Y_BED_SIZE 220
 
 // Travel limits (mm) after homing, corresponding to endstop positions.
 #define X_MIN_POS 0
@@ -850,7 +862,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
 
@@ -871,14 +883,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 15
-  #define RIGHT_PROBE_BED_POSITION 170
-  #define FRONT_PROBE_BED_POSITION 20
-  #define BACK_PROBE_BED_POSITION 170
+  // add the probe offsets above to the nozzle coords as given by M114, put result here
+  #define LEFT_PROBE_BED_POSITION 32
+  #define RIGHT_PROBE_BED_POSITION 169
+  #define FRONT_PROBE_BED_POSITION 11
+  #define BACK_PROBE_BED_POSITION 191
 
   // The Z probe minimum outer margin (to validate G29 parameters).
   #define MIN_PROBE_EDGE 10
@@ -890,7 +902,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.
@@ -990,16 +1002,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 axis (G28).
-  #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2)    // Y point for Z homing when homing all axis (G28).
+#if ENABLED(Z_SAFE_HOMING)  // add probe offsets above to the nozzle coords as returned by M114, put results here
+  #define Z_SAFE_HOMING_X_POINT 32    // X point for Z homing when homing all axis (G28).
+  #define Z_SAFE_HOMING_Y_POINT 11     // Y point for Z homing when homing all axis (G28).
 #endif
 
 // Homing speeds (mm/m)
 #define HOMING_FEEDRATE_XY (50*60)
-#define HOMING_FEEDRATE_Z  (4*60)
+#define HOMING_FEEDRATE_Z  150
 
 //=============================================================================
 //============================= Additional Features ===========================
@@ -1025,7 +1037,7 @@
 // When enabled Marlin will send a busy status message to the host
 // every couple of seconds when it can't accept commands.
 //
-#define HOST_KEEPALIVE_FEATURE        // Disable this if your host doesn't like keepalive messages
+//#define HOST_KEEPALIVE_FEATURE        // Disable this if your host doesn't like keepalive messages
 #define DEFAULT_KEEPALIVE_INTERVAL 2  // Number of seconds between "busy" messages. Set with M113.
 #define BUSY_WHILE_HEATING            // Some hosts require "busy" messages even during heating
 
@@ -1539,7 +1551,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 3ed2a44b3..230900778 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -1,5 +1,4 @@
-/**
- * Marlin 3D Printer Firmware
+ /* Marlin 3D Printer Firmware
  * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
  *
  * Based on Sprinter and grbl.
@@ -191,12 +190,12 @@
 // 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 500
 
 // This defines the minimal speed for the main fan, run in PWM mode
 // to enable uncomment and set minimal PWM speed for reliable running (1-255)
 // if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM
-//#define FAN_MIN_PWM 50
+#define FAN_MIN_PWM 128
 
 // @section extruder
 
@@ -350,7 +349,7 @@
 #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 this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
+#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
 
 // When G28 is called, this option will make Y home before X
 //#define HOME_Y_BEFORE_X
@@ -621,10 +620,10 @@
  * K=0 means advance disabled.
  * See Marlin documentation for calibration instructions.
  */
-//#define LIN_ADVANCE
+#define LIN_ADVANCE
 
 #if ENABLED(LIN_ADVANCE)
-  #define LIN_ADVANCE_K 75
+  #define LIN_ADVANCE_K 42
 
   /**
    * Some Slicers produce Gcode with randomly jumping extrusion widths occasionally.
diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino
index 49b6fd14b..dd7b7c966 100644
--- a/Marlin/Marlin.ino
+++ b/Marlin/Marlin.ino
@@ -1,5 +1,6 @@
-/**
+ /**
  * Marlin 3D Printer Firmware
+ * 1.1.6 release, commit 8dc10fb4
  * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
  *
  * Based on Sprinter and grbl.
-- 
2.11.0
@Sebastianv650
Copy link
Contributor

Please give us an indication of which line is first and which one is the last one and also of the print direction of the lines. I'm a little bit confused at the moment.

@VanessaE
Copy link
Contributor Author

VanessaE commented Jan 12, 2018

The lines closest to the camera (e.g. bottoms of the images) were first, and all were printed left-to-right.

@Sebastianv650
Copy link
Contributor

I guess your extruder is skipping steps during the high K lines, at least that's the only explanation I have for seeing the opposite compared to what I expect from increasing K.
Other things I don't feel comfortable with:

  • Your high speed test with 100mm/s results in a flow rate of 10mm³/s. That's realy a lot and I know from my own hotend it's the absolute upper limit where I can get a stable extrusion flow. Have you tested this flow rate without LIN_ADVANCE? I recommend to print a very big cylinder in vase mode for testing while feed rate is increased until the wall isn't clean any more.
  • Your acceleration is set to 2500mm/s². At least for the test pattern I would recommend a much lower value like 500 as it eleminates other possible issues and it's much more easy to see whats happening during acceleration because now there is a reasonable acceleration distance.

I recommend printing another test pattern, but this time stick to the default values in the Speed and K-factor sections.

@Sebastianv650
Copy link
Contributor

Sebastianv650 commented Jan 13, 2018

Just for information, I'm working at an improved version 2 of LIN_ADVANCE at the moment. You can follow the status (even if I don't write every progress there) in #9048.
It will take some time as it will contain a lot more "intelligence" than v1 and I was sorting out some odd planner behaviour first. After a PR the planner looks good now so I continue with v2 development again.

@VanessaE
Copy link
Contributor Author

I guess your extruder is skipping steps

I doubt it. 47:9 gearing, a brand new hob gear (less than 2 weeks old, not even 1 kg of filament put through it), and 100% certainty that the hotend is clean, and a spring/idler capable of crushing the filament flat (though obviously I don't have it tensioned to do that 😄). At worst, the hob might slip on the filament, but this extruder design makes a distinct sound when it does.

Your high speed test with 100mm/s results in a flow rate of 10mm³/s. That's realy a lot and I know from my own hotend it's the absolute upper limit where I can get a stable extrusion flow.

For a genuine J-head, 10mm³/s is pretty low. According to the manufacturer, it's capable of about twice that flow rate; indeed I've pushed it to 200 mm/s (0.4 mm nozzle, 0.304 mm layer height) and while those speeds make my bot's other mechanical inadequacies apparent, the extruder/hotend performed as designed - of course at the time, I was not using LIN_ADVANCE. But I get your point.

Your acceleration is set to 2500mm/s². At least for the test pattern I would recommend a much lower value like 500

OK, I'll give that a try.

@Sebastianv650
Copy link
Contributor

I doubt it. 47:9 gearing, a brand ..

It's not a question of quality but of inertia. The stepper itself has to accelerate to execute the step signal. If it gets too much steps within a too short amount of time, it will just not follow the signal and jump to the next stable full-step position.

@VanessaE
Copy link
Contributor Author

Oh right, makes sense.

@github-actions
Copy link

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.

@github-actions github-actions bot locked and limited conversation to collaborators Jan 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants