Can I use dual endstops with only one diver

Hello everyone,

I have a problem because I am not really into Marlin.

I have the SKR 1.3 board with TMC 2209 drivers.
My motors are currently wired in series without dual endstops connected.

I want to use dual endstops on my MPCNC Primo, but can I do this with only one TMC 2209 driver wired in series for 2 Motors?

Or is it better to configure the E0 to X2 and E1 to Y2 so that every motor can be controlled individually.
And if this is better, does anyone have the software for this case?

Dual endstops would be more or less useless without dual motors to allow auto squaring. Without autosquare one endstop will be just as good. Not sure regarding software for the 1.3 with dual endstops as I don’t have one, but you will need at least dual motors (and drivers… not series or parallel wired motors) on each axis with dual endstops to use autosquare regardless of the software approach used.


I seen one topic on this forum where someone put single endstops on a series machine so that he had an electronic repeatable home position, but as Kev mentions you don’t get auto-squaring if you do it this way. If you want auto-squaring, each motor must have its own driver. As for the firmware, V1 maintains version V1CNC_Skr1p3_Dual_2209 on its firmware page.

Thank you for your help.
I will try to rewire my machine tomorrow and see if it works.

I rewired my motors now and used the marlin firmware from the firmware page.
But I ran into a different problem.
The E0 motor goes twice as far as my Y axis motor.
But my E1 motor goes the same distance as the X axis motor.
Basically every setting in marlin that’s for the E-Step combines E0 and E1 into just E.
So why is my X axis working and my Y is not working?
Is there a method to change the setting individually?

There is probably something in the eeprom goofed up for that driver. Try sending M502 to restore the defaults. If that’s better, use M500 to save it to the eeprom.

OK I have tried your method.
Sadly it did not work. I think it is a problem with the V1CNC_Skr1p3_Dual_2209 firmware that is “untested” because when I tried the Z axis it suddenly moved the E1 motor with it.
And no, I did not install the LowRider version.
So is there anyone out there that has a tested and working Marlin version for the MPCNC and the SKR 1.3 with TMC 2209s and dual endstops.
Or does anyone know what I should change in the firmware?

Apparently the problems just fixed themselves after I turned the MPCNC on today.
I do not know how, but the Z axis issue is gone and now every motor that is connected to E0 or E1 goes twice as far as the normal axis motors.
Now I just need to know how to configure the X2 and Y2 motor apart from the normal axis motors.
So is there an option to configure the X2 and Y2 motor individually?
Because I can just configure the two axis motors with M92 and changing the E value does nothing.

If say x1 is moving the correct direction and x2 needs to be reversed, I would swap polarity on one of the poles of x2 and be done with it. If the distance needs to be scaled on a particular motor, with tmc drivers, the advanced config file has a tmc section where you can set steps per mm for each driver individually. Say x1 travels the right distance, but x2 goes 2x too far. In advanced config, set the x2 tmc driver steps per mm to half of what it is, or simply equal to the “x1 steps per mm variable”.

Be sure to save eeprom and take notes before rebooting the controller.

Thank you for your reply there is no issue with the direction of the motors. I just can not find the line in the marlin advanced configuration where you can set the steps per unit(mm) for every driver. It would be perfect if you could tell me where it is.

The directive you’re looking for (steps per mm) is in configuration.h, not configuration_adv.h

Here’s a link to the right section of the Marlin documentation.

Referring to:

Starting at line 2256: ‘ define X_MICROSTEPS 16 // 0…256’

As you scan just below you will find similar lines for the rest of the axis. Notice how X2 is set to match X1 in the default advanced config… this is an acceptable pable method (reduces the amount of typing anyways).

Now Tom was right… I was thinking microstepping not purely steps per mm.

The problem with the steps per mm setting under configuration.h is that it effects both axis motors but I want to change the steps per mm on every motor individually. Because I think it is not possible to just write a new steps per mm value for X2 and Y2 in there that is twice as large as X and Y.

Each comma separated value in the command is for a different axis, and X2/E0 and Y2/E1 are seen, I believe, as different axes, so you should be able to get there. I’d guess the order is X,1 Y1, Z, X2/E0, Y2/E1. You just need to add the “extra” values into to the directive.

I run grbl, and I’m using serial wiring on my Burly, so I’m not 100% certain of the order of the axes in the command, but someone here should be able to help.

So I found the problem and it explains why everything I tried on the software side was useless.
I just forgot the UART jumpers on the E0 and E1 extruder. Because of that every E driver was just running with standard settings. Thank you for all your help.

1 Like