Welcome! Log In Create A New Profile

Advanced

Bed Auto Leveling problem

Posted by kd6hq 
Bed Auto Leveling problem
July 06, 2015 12:57PM
This is not a kit it is all home built.

I'm in the process of checking that everything is basically working before installing in the printer. I'm using a RAMPS 1.4 board with an Arduino 2560.

To check things out I have been using Repetier V1.0.6.

I have 2 mechanical end stops with an Inductive Probe (PNP type) hooked up.
Since it is a PNP type I found that I had to set "const bool Z_MIN_ENDSTOP_INVERTING = false" to get it to respond properly.

If I commit out the "define ENABLE_AUTO_BED _LEFELING line and use the M119 command then I get the correct response x_min: open, X_max: open etc. (all open).

If I home the x, y and z positions all the motors spin and stop when the end stop or probe is activated.

So here is the problem. If I try to activate "Bed Auto Leveling" by un-commenting the define command I get the following when trying to home the X, Y and Z positions.
X = acts normally, rotates motor and stops when end stop pushed.
Y = acts normally, rotates motor and stops when end stop pushed.
Z - dose not rotate motor and gives me the message "Z stop out bed"

I'm not quite sure what it is trying to tell me.

Your suggestions would be appreciated.

thanks


I've compared the "Bed Auto Leveling" code to others and nothing looks out of place but will include it here.
The bed size is X=240, Y=270, Z=203

//============================= 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
// Bed size is 270 x 240
// set the rectangle in which to probe
#define LEFT_PROBE_BED_POSITION 10
#define RIGHT_PROBE_BED_POSITION 260
#define BACK_PROBE_BED_POSITION 230
#define FRONT_PROBE_BED_POSITION 10

// 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 estimate the plane of the print bed

#define ABL_PROBE_PT_1_X 10
#define ABL_PROBE_PT_1_Y 260
#define ABL_PROBE_PT_2_X 15
#define ABL_PROBE_PT_2_Y 10
#define ABL_PROBE_PT_3_X 230
#define ABL_PROBE_PT_3_Y 15

#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 -25
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29
#define Z_PROBE_OFFSET_FROM_EXTRUDER -2

#define Z_RAISE_BEFORE_HOMING 10 // (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 8000 // X and Y axis travel speed between probes, in mm/min

#define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point.
#define Z_RAISE_BETWEEN_PROBINGS 10 //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-1)) >= (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-1)) >= (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-1)) >= (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-1)) >= (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, 4*60, 0} // set the homing speeds (mm/min)

// default settings
Re: Bed Auto Leveling problem
July 21, 2015 04:55PM
Quote



// 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 -25
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29
#define Z_PROBE_OFFSET_FROM_EXTRUDER -2

change these offset values. It thinks your probe is off the bed once it homes x and y. Set to 0 if you like or enter values so it knows you sensor is still on the bed.

Edited 1 time(s). Last edit at 07/21/2015 04:55PM by abritton.
Re: Bed Auto Leveling problem
July 23, 2015 03:34AM
It looks to me that theses settings are used to define the distance the probe is from the hot end and are used during the auto bed leveling function. I found a series of 3 videos, which explain it. Part 3 of the videos explain it. [www.youtube.com]

As per the video just above "Bed Auto Leveling" header is the command
#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS. Changed to false July 23 2015
After the change to false I no longer get the error message. Now I can start building the printer smiling smiley

This setting was originally set to true but according to the above video it needs to be set to false so that the axis can move to positions less than the Home_POS. Which you may need to do when setting the hot end Z position.
Sorry, only registered users may post in this forum.

Click here to login