Swapping X and Y Axis on a lowrider

I am seeking to document here my firmware edits & hardware changes, in my successful process of …

…swapping X and Y axes on a Lowrider v3 with dual end stops, with an SKR Pro 1.2 main board and BTT TFT35-e3 v3.

MARLIN FIRMWARE EDITS

In configuration_adv.h, there were five (5) edits. I changed the following:

  1. Uncommented “#define X_DUAL_STEPPER_DRIVERS”
  2. Uncommented “#define X_DUAL_ENDSTOPS”
  3. Commented out: “#define Y_DUAL_STEPPER_DRIVERS”
  4. Commented out: “#define Y_DUAL_ENDSTOPS”
  5. Changed “#define X2_USE_ENDSTOP _XMAX_” to “#define X2_USE_ENDSTOP _YMAX_”

Here are the “before and after” code sections:

BEFORE:

//#define X_DUAL_STEPPER_DRIVERS
#if ENABLED(X_DUAL_STEPPER_DRIVERS)
  //#define INVERT_X2_VS_X_DIR    // Enable if X2 direction signal is opposite to X
  //#define X_DUAL_ENDSTOPS
  #if ENABLED(X_DUAL_ENDSTOPS)
    #define X2_USE_ENDSTOP _XMAX_
    #define X2_ENDSTOP_ADJUSTMENT  0
  #endif
#endif

#define Y_DUAL_STEPPER_DRIVERS
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
  #define INVERT_Y2_VS_Y_DIR     // Enable if Y2 direction signal is opposite to Y
  #define Y_DUAL_ENDSTOPS
  #if ENABLED(Y_DUAL_ENDSTOPS)
    #define Y2_USE_ENDSTOP _YMAX_
    #define Y2_ENDSTOP_ADJUSTMENT  0
  #endif
#endif

AFTER:

#define X_DUAL_STEPPER_DRIVERS
#if ENABLED(X_DUAL_STEPPER_DRIVERS)
  //#define INVERT_X2_VS_X_DIR    // Enable if X2 direction signal is opposite to X
  #define X_DUAL_ENDSTOPS
  #if ENABLED(X_DUAL_ENDSTOPS)
    #define X2_USE_ENDSTOP _YMAX_
    #define X2_ENDSTOP_ADJUSTMENT  0
  #endif
#endif

// #define Y_DUAL_STEPPER_DRIVERS
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
  #define INVERT_Y2_VS_Y_DIR     // Enable if Y2 direction signal is opposite to Y
  // #define Y_DUAL_ENDSTOPS
  #if ENABLED(Y_DUAL_ENDSTOPS)
    #define Y2_USE_ENDSTOP _YMAX_
    #define Y2_ENDSTOP_ADJUSTMENT  0
  #endif
#endif

Firmware Download:

  • If you were using the V1 Engineering LowRider Dual Endstop firmware.bin file, and you are OK with a precompiled copy of it that has the changes for swapping X & Y, as detailed above, then you can use the firmware.bin file provided in this listing (link below). If not, you may tweak the included editable source Marlin folder provided. It was made based on “Marlin_V1CNC_SkrPro_DualLR_2209_2.0.9.2_513-src.zip” which was downloaded from V1 Engineering, and is renamed as “V1CNC_SkrPro_DualLR_2209-2.0.9.2 (SWAP X & Y) 2022-06-21.zip.”

  • Firmware Download Link: http://design8studio.com/files/V1CNC_SkrPro_DualLR_2209-2.0.9.2-SWAP-X-Y-2022-06-21.zip

HARDWARE CHANGES

  1. I moved the former X end stop switch (which is becoming the new Y end stop switch) from the left side of the LR Core to the right side of the core, attaching it to a newly designed & printed end stop mount that attaches to the former X stepper motor mount, which is becoming the new Y stepper mount. I also re-ran its wiring accordingly.
  2. I designed, printed, and installed a newly remixed “stub” on the right side of the old X axis (new Y axis, on the new Y-min side). The only change was to add a “stop” bar for the relocated X end stop (new Y end stop) to press against and trigger its switch. This stub is the part that the X belt (new Y belt) attaches to, and which also attaches to the lead screw on that side.
  3. In control box, I swapped the wires for X1 driver and Y1 driver with each other and re-labeled accordingly.
  4. In control box, I swapped the wires for X1 end stop and Y1 end stop with each other and re-labeled accordingly.
  5. In control box, I re-labeled the Y2 end stop as the new X2 end stop while leaving it plugged into the same pins, at E1 (on the SKR Pro 1.2).

Note: Some of what needed done could have been accomplished more than one way, such as firmware changes only, or physical rewiring only, and where I could, I chose to physically move wires and relabel them. This limited the number of needed firmware searching and edits.

If I am forgetting anything and you spot it, let me know and I will edit accordingly.

2 Likes