Welcome! Log In Create A New Profile

Advanced

Auto-Leveling crashes into bed upon printing

Posted by whymrprinter 
Auto-Leveling crashes into bed upon printing
June 17, 2016 09:35PM
Hi all, I have a folgertech prusa I3 that I am attempting to add auto-bed leveling to. However I am having the following issue:The homing and auto-leveling processes seem to complete successfully, but when the printer starts to print it crashes the extruder into the bed. I have paused the print and retracted the Z-axis until a sheet of paper fits between it and the bed and it always requires about 3.3 mm of Z movement until the paper fits. I have tried changing the Z-offset in both the firmware, and with g-code, however the printer exhibits this same behavior. Please help. Below is my Cura g-code, configuration file, event log from repetier.

Overview : Folgertech Prusa I3 with capacitive bed sensor running marlin V1.02 Using Repetier host and Cura slicer.

Summary: The homing and autoleveling processes seem to complete successfully, but when the printer starts to print it crashes the extruder into the bed.


Cura G-code:

; Default start code
M501 ;Read out EEPROM settings
G28 ; Home extruder
G29 V4; Auto Level
M851 Z -4.67;
M500 ;Save EEPROM settings
M501 ;Read out new EEPROM settings
G1 Z15 F{Z_TRAVEL_SPEED}
M107 ; Turn off fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
{IF_BED}M190 S{BED}
; Activate all used extruder
{IF_EXT0}M104 T0 S{TEMP0}
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
{IF_EXT0}M109 T0 S{TEMP0}

Repetier Output:

21:26:52.972 : echoconfused smileytored settings retrieved
21:26:52.977 : echoconfused smileyteps per unit:
21:26:52.977 : echo:  M92 X80.00 Y80.00 Z400.00 E96.00
21:26:52.977 : echo:Maximum feedrates (mm/s):
21:26:52.981 : echo:  M203 X250.00 Y250.00 Z2.00 E22.00
21:26:52.981 : echo:Maximum Acceleration (mm/s2):
21:26:52.985 : echo:  M201 X1000 Y1000 Z5 E1000
21:26:52.985 : echo:Acceleration: S=acceleration, T=retract acceleration
21:26:52.989 : echo:  M204 S500.00 T500.00
21:26:52.993 : echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
21:26:52.997 : echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
21:26:52.997 : echo:Home offset (mm):
21:26:52.997 : echo:  M206 X0.00 Y0.00 Z0.00
21:26:53.001 : echotongue sticking out smileyID settings:
21:26:53.001 : echo:   M301 P22.20 I1.08 D114.00
21:27:26.853 : Bed x: 30.00 y: 20.00 z: 5.34
21:27:50.923 : Bed x: 140.00 y: 20.00 z: 3.41
21:28:11.887 : Bed x: 140.00 y: 110.00 z: 3.98
21:28:28.899 : Bed x: 30.00 y: 110.00 z: 5.75
21:28:28.903 : Eqn coefficients: a: -0.02 b: 0.01 d: 5.70
21:28:28.907 : planeNormal x: 0.02 y: -0.01 z: 1.00
21:28:28.907 : echo:endstops hit:  X:-9.95 Z:5.76
21:28:29.362 : echoconfused smileyettings Stored
21:28:29.399 : echoconfused smileytored settings retrieved
21:28:29.399 : echoconfused smileyteps per unit:
21:28:29.399 : echo:  M92 X80.00 Y80.00 Z400.00 E96.00
21:28:29.403 : echo:Maximum feedrates (mm/s):
21:28:29.403 : echo:  M203 X250.00 Y250.00 Z2.00 E22.00
21:28:29.408 : echo:Maximum Acceleration (mm/s2):
21:28:29.408 : echo:  M201 X1000 Y1000 Z5 E1000
21:28:29.408 : echo:Acceleration: S=acceleration, T=retract acceleration
21:28:29.412 : echo:  M204 S500.00 T500.00
21:28:29.416 : echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
21:28:29.420 : echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
21:28:29.420 : echo:Home offset (mm):
21:28:29.424 : echo:  M206 X0.00 Y0.00 Z0.00
21:28:29.424 : echotongue sticking out smileyID settings:
21:28:29.424 : echo:   M301 P22.20 I1.08 D114.00
21:29:10.021 : Printing layer 1 of 100





Configuration File:



//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================

// Uncomment the following line to enable CoreXY kinematics
// #define COREXY

// coarse Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

#ifndef ENDSTOPPULLUPS
  // fine Enstop settings: Individual Pullups. will be ignord if ENDSTOPPULLUPS is defined
  #define ENDSTOPPULLUP_XMAX
  #define ENDSTOPPULLUP_YMAX
  #define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
#endif

#ifdef ENDSTOPPULLUPS
  #define ENDSTOPPULLUP_XMAX
  #define ENDSTOPPULLUP_YMAX
  #define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
 // #define ENDSTOPPULLUP_ZMIN
#endif

// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS

// Disable max endstops for compatibility with endstop checking routine
#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
  #define DISABLE_MAX_ENDSTOPS
#endif

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

// Disables axis when it's not being used.
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false // For all extruders
#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled

#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR true    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false

// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

#define min_software_endstops false //If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops false  //If true, axis won't move to coordinates greater than the defined lengths below.
// Travel limits after homing
#define X_MAX_POS 182 // was 200
#define X_MIN_POS 0
#define Y_MAX_POS 110 // was 200
#define Y_MIN_POS 0
#define Z_MAX_POS 175
#define Z_MIN_POS 0  // was 0   changed to -5  to allow Z to go below initial home level on unlevel bed where another corner was lower than initial home level


#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
//============================= Bed Auto Leveling ===========================

#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
#define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.

#ifdef ENABLE_AUTO_BED_LEVELING

// There are 2 different ways to pick the X and Y locations to probe:

//  - "grid" mode
//    Probe every point in a rectangular grid
//    You must specify the rectangle, and the density of sample points
//    This mode is preferred because there are more measurements.
//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive

//  - "3-point" mode
//    Probe 3 arbitrary points on the bed (that aren't colinear)
//    You must specify the X & Y coordinates of all 3 points

   #define AUTO_BED_LEVELING_GRID
  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
  // and least squares solution is calculated
  // Note: this feature occupies 10'206 byte
  #ifdef AUTO_BED_LEVELING_GRID

    // set the rectangle in which to probe
    #define LEFT_PROBE_BED_POSITION 30
    #define RIGHT_PROBE_BED_POSITION 140
    #define BACK_PROBE_BED_POSITION 110
    #define FRONT_PROBE_BED_POSITION 20

     // set the number of grid points per dimension
     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
    #define AUTO_BED_LEVELING_GRID_POINTS 2


  #else  // not AUTO_BED_LEVELING_GRID
    // with no grid, just probe 3 arbitrary points.  A simple cross-product
    // is used to esimate the plane of the print bed

      #define ABL_PROBE_PT_1_X 50
      #define ABL_PROBE_PT_1_Y 150
      #define ABL_PROBE_PT_2_X 80
      #define ABL_PROBE_PT_2_Y 120
      #define ABL_PROBE_PT_3_X 160
      #define ABL_PROBE_PT_3_Y 50

  #endif // AUTO_BED_LEVELING_GRID


  // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
  // X and Y offsets must be integers
  #define X_PROBE_OFFSET_FROM_EXTRUDER  40
  #define Y_PROBE_OFFSET_FROM_EXTRUDER  -25
  #define Z_PROBE_OFFSET_FROM_EXTRUDER -4.67 //actually around -5

  #define Z_RAISE_BEFORE_HOMING 0       // (in mm) Raise Z before homing (G28) for Probe Clearance.
                                        // Be sure you have this distance over your Z_MAX_POS in case

  #define XY_TRAVEL_SPEED 5000         // X and Y axis travel speed between probes, in mm/min

  #define Z_RAISE_BEFORE_PROBING 1    //How much the extruder will be raised before traveling to the first probing point.
  #define Z_RAISE_BETWEEN_PROBINGS 1  //How much the extruder will be raised when traveling from between next probing points

  //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
  //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.

  //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
  //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
  // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.

//  #define PROBE_SERVO_DEACTIVATION_DELAY 300


//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,
//it is highly recommended you let this Z_SAFE_HOMING enabled!!!

  #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.
                          // When defined, it will:
                          // - Allow Z homing only after X and Y homing AND stepper drivers still enabled
                          // - If stepper drivers timeout, it will need X and Y homing again before Z homing
                          // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)
                          // - Block Z homing only when the probe is outside bed area.

  #ifdef Z_SAFE_HOMING

    #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)
    #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)

  #endif

  #ifdef AUTO_BED_LEVELING_GRID	// Check if Probe_Offset * Grid Points is greater than Probing Range
    #if X_PROBE_OFFSET_FROM_EXTRUDER < 0
      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
	  #endif
	#else
      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
	  #endif
	#endif
    #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
	  #endif
	#else
      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
	  #endif
	#endif

	
  #endif
  
#endif // ENABLE_AUTO_BED_LEVELING


// The position of the homing switches
//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)

//Manual homing switch locations:
// For deltabots this means top and 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 402 // For delta: Distance between nozzle and print surface after homing.

//// MOVEMENT SETTINGS
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
#define HOMING_FEEDRATE {50*60, 50*60, 50, 0}  // set the homing speeds (mm/min)

// default settings

#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,400,96}  // default steps per unit for ultimaker {78.7402,78.7402,200*8/3,760*1.1}920 previous value for z 3840
#define DEFAULT_MAX_FEEDRATE          {250, 250, 2, 22}    // (mm/sec)    
#define DEFAULT_MAX_ACCELERATION      {1000,1000,5,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.

#define DEFAULT_ACCELERATION          500    // X, Y, Z and E max acceleration in mm/s^2 for printing moves 
#define DEFAULT_RETRACT_ACCELERATION  500   // X, Y, Z and E max acceleration in mm/s^2 for r retracts

// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend.
// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
// #define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis

// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK                20.0    // (mm/sec)
#define DEFAULT_ZJERK                 0.4     // (mm/sec)
#define DEFAULT_EJERK                 5.0    // (mm/sec)

//===========================================================================
//=============================Additional Features===========================
//===========================================================================

// Custom M code points
#define CUSTOM_M_CODES
#ifdef CUSTOM_M_CODES
  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
  #define Z_PROBE_OFFSET_RANGE_MIN -15
  #define Z_PROBE_OFFSET_RANGE_MAX -1
#endif


// EEPROM
// The microcontroller can store settings in the EEPROM, e.g. max velocity...
// M500 - stores parameters in EEPROM
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
//define this to enable EEPROM support
#define EEPROM_SETTINGS
//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
// please keep turned on if you can.
#define EEPROM_CHITCHAT




Re: Auto-Leveling crashes into bed upon printing
June 20, 2016 05:25PM
I confess I am new at that also, but my question is:
Why do you need to autolevel every print?
Shouldn't autolevelling one time work and then correct your Z height to be correct for printing thereafter?
If something changed physically, I could see why you would repeat autolevel.
Not trying to be rude, just curious.
Re: Auto-Leveling crashes into bed upon printing
June 20, 2016 05:42PM
Quote
roko
I confess I am new at that also, but my question is:
Why do you need to autolevel every print?
Shouldn't autolevelling one time work and then correct your Z height to be correct for printing thereafter?
If something changed physically, I could see why you would repeat autolevel.
Not trying to be rude, just curious.

Adding autoleveling to a printer that can't maintain the level setting from one print to the next is cheaper than building the printer so that it can maintain the level setting. The only thing most people care about is minimizing the price, so poor construction and autoleveling win.


Ultra MegaMax Dominator 3D printer: [drmrehorst.blogspot.com]
Re: Auto-Leveling crashes into bed upon printing
June 25, 2016 11:11AM
I agree with you that it should be able to maintain level and that auto-leveling on every print is unnecessary. However I am not able to test that without getting auto bed leveling to work in the first place.

Edited 1 time(s). Last edit at 06/25/2016 11:14AM by whymrprinter.
Re: Auto-Leveling crashes into bed upon printing
June 25, 2016 10:23PM
Is your printer using the stored values in the EEPROM instead of the new values? If you remove the autolevel gcode, will it print normally?
Re: Auto-Leveling crashes into bed upon printing
April 23, 2018 01:26AM
Hi. Sorry to hijack an old thread but i am having the same issues. im new to all this so please bear with me lol. when I use the G29 code in cura the bed level is carried out but then when it begins the print it the nozzle hits the bed, with the G29 taken out of cura and bed leveling carried out on the printer before the print everything is good. I have set up the printer using pronterface to get my z offset then using m501 to store to the eeprom which i believe (but not 100% sure) is what the printer uses and not the config.h. What it looks like, and im just guessing is that using The G29 code in cura looks like its not use the eeprom setting for the z-offset ???

G28 ;Home
G29 ; auto bed level
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0

Thanks
Re: Auto-Leveling crashes into bed upon printing
April 23, 2018 11:42AM
Level Bed using the Marlin Menu under Prepare, Bed Leveling. Then Save the Auto bed leveling using M500 or Store settings from the control menu.
(I know that Save bed leveling data is reserved for Unified Bed leveling)
(Save does not know it is Unified Bed leveling and saves bed leveling data for (Linear and Bi-Linear Bed leveling as well))

Add "M402 S1" after the last G92 in you start up G-Code
G92 E0 ;reset extruder length
M420 S1 ; Turn Bed Leveling On

;M420 V1 ; Print the leveling grid

Now you only have to level you bed if it not level.

Video shows printer off and then turned on to restore saved bed Leveling data
[youtu.be]
Re: Auto-Leveling crashes into bed upon printing
April 24, 2018 01:57PM
Thanks for the reply i will give it a go and let you know how i get on

Thanks agailn
Re: Auto-Leveling crashes into bed upon printing
April 26, 2018 01:16PM
Hi again,

I tried the following additions and once again the nozzle crashed into the bed.
Re: Auto-Leveling crashes into bed upon printing
April 27, 2018 06:50AM
"#define Z_PROBE_OFFSET_FROM_EXTRUDER -4.67 //actually around -5"

This says your probe is closer to the bed than the nozzle... this isnt correct. (unless you have some sort of deployment servo, and it sounds liel you just have an inductive sensor)

Z offset: -below +above [the nozzle]
Re: Auto-Leveling crashes into bed upon printing
May 10, 2018 02:39AM
If I'm in the wrong thread, let me know but, this topic is as close to my issue as I could find. I'm a very lost rookie.

I level my bed manually but, the extruder crashes into the bed every time. Very frustrating. Can someone tell me where and what I need to adjust to prevent this problem?

Firmware is Marlin 1.1.8, Arduino 1.8.5, and Cura 15.04.3

Garry
Sorry, only registered users may post in this forum.

Click here to login