Strange behavior of x-axis while auto bed leveling

Hi Guys, while waiting for my spindle to be delivered, I attached a MK8 extruder/hotend to my MPCNC Primo. I added a inductive sensor to the tip of the z-axis as a probe. auto squaring works quite good, but i ran into a problem with auto bed leveling. when i send the G29 command to start the automated bed leveling the x-axis moves proper into the positiv direction, but moves way to less or even not into the negative direction.

has any one an idea, why it is acting like that?

I am using the dual endstop setup with a 6th/external stepper driver on a ramps1.4 board.
ezgif.com-gif-maker

my modifications in Configuration.h :
#define TEMP_SENSOR_0 1
#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 false // 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 true // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // 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 FIX_MOUNTED_PROBE
#define NOZZLE_TO_PROBE_OFFSET { 37, 20, 0 }
#define XY_PROBE_SPEED 1000
//#define MIN_SOFTWARE_ENDSTOPS
#define AUTO_BED_LEVELING_LINEAR
#define RESTORE_LEVELING_AFTER_G28
#define GRID_MAX_POINTS_X 5
#define E0_STEP_PIN 42
#define E0_DIR_PIN 40
#define E0_ENABLE_PIN 63

You shouldn’t move into the negative, right? The negative is on the other side of your endstops.

The part of the software that limits this is the soft stops. There is a gcode to disable them, but for some reason, I can never remember which one it is. M121, or M211 or something with 2 and 1.

with negative i only ment the direction, not a negative range the x-axis. so when the probe is bed leveling it is moving like show in the following table

Position | X on LCD | real X | Y

  1.            34                34                34
    
  2.            68                68                34
    
  3.            102              102              34
    
  4.            102              102              68
    
  5.            68                100+-4         68
    
  6.            34                98+-4           68
    
  7.            34                98+-4           68
    
  8.            68                131+-4           102             // here it moves out of the defined build plate
    
  9.            102              164+-4           102
    

i assume it has something to do with my stepper driver or with the pins that control the driver. because i was able to create a work around by wiring the X2 stepper in parallel to X1 stepper then everything was working as expected

Maybe the dir input?

i dont think that it is the dir input, because:
1.) when i am not ABL-mode it moves without any problems to negative direction.
2.) i ordered a new arduino, a new ramps1.4 and new stepper drivers. And i am still having that problem

it is definitely the something around x2-stepper controller. when i am wiring the stepper in parallel at x1, everything is fine. when I wiring them at X2 then the x-axis moves only in positiv direction (only while ABL!!)

is it possible that it’s some how a timing problem? i ask that because i use a 6th stepper extruder. before i attached it everything was working fine… ?!?

UPDATE

I assume that it is a software problem, because defined the pins for X2 (or E1) to be wired with my 6th (external) stepper driver:

/*#define E1_STEP_PIN        26
#define E1_DIR_PIN         28
#define E1_ENABLE_PIN      24
#ifndef E1_CS_PIN
  #define E1_CS_PIN        42 
#endif*/
#define E1_STEP_PIN        42
#define E1_DIR_PIN         40
#define E1_ENABLE_PIN      63
#ifndef E1_CS_PIN
  #define E1_CS_PIN        70 
#endif

and it ist showing me the same strange and unwanted behavior :man_facepalming:

You appear to be using pin 42 twice - is that intentional? Maybe you need to move the lines where you define the E1_CS_PIN up higher, before the check to see whether it is defined…

@ttraband thank you for your hint, i just checked the pins settings. that is not the problem. E1_CS_PIN is not defined, so 42 is not defined twice.

i also just tried to swap the pins of x2(e1) and x1

> #define E1_STEP_PIN        54 //26
> #define E1_DIR_PIN         55 //28
> #define E1_ENABLE_PIN      38 //24
> #ifndef E1_CS_PIN
>   #define E1_CS_PIN        53 //42 
> #endif
> 
> #define X_STEP_PIN         26 //54
> #define X_DIR_PIN          28 //55
> #define X_ENABLE_PIN       24 //38
> #ifndef X_CS_PIN
>   #define X_CS_PIN         42 //53
> #endif

or even x2(e1) and e0.

the problem moves with x2(e1) slot. so i can say it seems not to be a hardware problem or pins settings problem.

does anybody else use the dual-endstop setup with ABL successfull? if yes, would you please share you config with me??

@jeffeb3 @ttraband here you can see the behavior: https://www.youtube.com/watch?v=E6EE5i1ZD-Q

ABL definitely does funky orders of points. But that seems pretty weird. I think there are commands to go to a specific point (of the 25).

You may be the first to try ABL with dual x and y, so it is also very possible you have encountered a bug.

Sorry, I don’t have dual endstop setup, nor am I using ABL on my Burly.