Welcome! Log In Create A New Profile

Advanced

CoreXY and Max endstops

Posted by SlimJim 
CoreXY and Max endstops
December 11, 2016 06:04PM
Hi again,

I am building a corexy machine that uses max endstops for x and z and min endstops for y.

Here's my issue: if I set all endstops to home to -1, and I keep the section called "disable_Max_endstops" active, then everything homes and works. But X and Z home the wrong direction.

However, if I set X_home_dir to 1, Y to -1 and Z to 1, and I comment out the ""disable_max_endstops" section, then I get correct home movements on X and Z, but Y sits still and does not home. It's position readout jumps to zero, as if an endstop switch HAD been hit.

All endstops are working reliably, as checked with M119.

I know this is some sort of known CoreXY issue, and SOMEONE has fixed it before, because the D-bot uses a mixture of - and + home positions.

My problem seems simlar to the one in [forums.reprap.org] this post.
Re: CoreXY and Max endstops
December 11, 2016 07:14PM
ok. I found a solution to this problem, but it's a Gcode hack.

A post on GitHub by "Wurstnase" said:
Wurstnase commented on Mar 16, 2015
Now the old homing-bug for coreXY is back.
With max endstops on X and Y I can only home X or Y when the other endstop is free.


Which described the problem exactly! Thanks Wurstnase!

So I modified my starting GCode script in S3D as follows:

G28 X ; home x
G0 X# ; where # = 1mm less than the X-Max position
G28 Y ; home y
G0 Y1 ; move y 1mm away from the endstop
G28 Z ; home z

Now each axis homes, then moves 1mm away from the endstop so that the other axis can home.
Re: CoreXY and Max endstops
January 15, 2017 04:51PM
Sorry i am very tired now.
This is the config i am currently using for my new coreXY. x_max , y_max , z_min
(the z endstop is on the top and therefore the min because the build plate moves downwards)
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false

#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1

//#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 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 X_MAX_POS 235 // 240 possible
#define Y_MAX_POS 245 // 250 possible
#define Z_MAX_POS 330

#define Z_STEPS (XYZ_FULL_STEPS_PER_ROTATION * XYZ_MICROSTEPS / 5)  // 5mm per rotation (this line is new)
#define DEFAULT_AXIS_STEPS_PER_UNIT   {XYZ_STEPS, XYZ_STEPS, Z_STEPS, 89} //XYZ_STEPS       E 84-95
Sorry, only registered users may post in this forum.

Click here to login