LowRider2 - Dual Y and Z, Sensorless Homing

This is my new LowRider2 build. I am testing sensorless homing which I have working on all 3 axis. The Z axis needs a little lubricant, you can hear it squeaking in the vid.

BigTreeTech SKR 1.3 32-bit main board
BigTreeTech TFT35 Touch Screen
TMC2209 Drivers - UART Mode
Marlin 2.0 Firmware

The only wiring on the board are to the motors, TFT, and power.

Here is a link to the changes I made to Marlin 2.0:


Excellent work! I have a couple of questions as I am about to dive into the sensorless homing rabbit hole. I’m still new at all this so sorry if my questions seem silly.

I see your Z homes/levels to the top. Is that because if you home to Z Min, it could lift the Y plate off the runners and not get an accurate reading? How do you set Z0 once you’ve completed this cycle? I was thinking about using two blocks exactly the same height on the table surface at either end of the X axis to level out the Z and then use a touch probe to set Z0. Any reason why that wouldn’t work?

I tried to configure it but just can’t seem to get the TFT35 firmware right. It’s filled with a bunch of 3D printer junk that doesn’t apply to CNC. Is your version streamlined and if so, would you mind sharing? Also, for some reason, the Marlin screen works for moving the machine but the touch screen does not. Any thoughts on what I might be missing?

For reference, I am running BTT SKR 1.3, BTT TFT35, TMC2209 UART, and Marlin2.0. I have the machine operating with the Marlin screen and Pronterface as the gcode sender.

Thank you in advance for any help and again, great build!

I decided to home to the Z-Max due to the fact I was using sensorless homing and I didn’t want to employ any other methods or sensors for this function. If I were to home to Z-Min, I would have been homing against the bit, which I did not want, or I would have had to use an extra probe which would have to be reset every time the bit was changed. Setting it up with a home to Z-Max allowed me to set a consistant distance between the bed surface and the max amount of Z travel allowed. Sensorless homing on this machine is mainly used to automatically square the machine, rather than setting a true ‘home’ such as on my 3D printers. For CNC, home is determined by where I start the operation.

As far as the TFT firmware, I made very minor modifications. I am using 3.0.26, but these changes should work for other TFT firmwares. All of these changes are in the \TFT\src\User\Configuration.h file.

  1. I changed the below 2 lines to remove preheat temps
    #define PREHEAT_BED {0, 0, 0}
    #define PREHEAT_HOTEND {0, 0, 0}

  2. I changed the below lines to bypass the ‘wait for hotend/bed’ heating

#define HEAT_CMD {“M140”, “M104 T0”, “M104 T1”, “M104 T2”, “M104 T3”, “M104 T4”, “M104 T5” };
#define HEAT_WAIT_CMD {“M190”, “M109 T0”, “M109 T1”, “M109 T2”, “M109 T3”, “M109 T4”, “M109 T5” };

#define HEAT_CMD {“M115”, “M115”, “M104 T1”, “M104 T2”, “M104 T3”, “M104 T4”, “M104 T5” };
#define HEAT_WAIT_CMD {“M115”, “M115”, “M109 T1”, “M109 T2”, “M109 T3”, “M109 T4”, “M109 T5” };

  1. I changed the way the display handled E0 and E1
    #define AXIS_DISPLAY_ID {“X”, “Y”, “Z”, “Y2”, “Z2”}

Good Luck on your build!

1 Like

Thank you! This is very helpful!