Single end-stops for series wiring, any benefit?

To the gurus around here. If I have hard stops on Y and no issues with staying square, I am wondering if there are tool change benefits etc. via using single end-stops. Series wiring so it should keep both motors in sync no and can I home using the current series firmware using single-endstops? I am hoping it just hits the one on each axis and takes that as the limit and sets home and since it is in series all dual motor axis should continue inter-locked? Or am I over simplifying it ha!

Not a guru, but I have some info that might be helpful. The one place I find end stops useful beyond squaring is being able to repeatedly find a position on the spoil board (almost always a home position relative to stock) when the electronics are turned off. This need might be a double sided milling where I want to power down between the sides. Or it might be a repeated operation on a fixture use for making multiple copies of an item and I need to repeatedly find the home relative to the fixture. Or it might be a long milling operation broken down into separate files, and I want to power down between files (i.e. not run all night or in other situations where I cannot be near the router). I don’t use homing/end stops when changing bits since if I leave the steppers powered, the machine knows the home position relative to the stock (0,0).

But the open question is how accurate are hard stops compared to electronic stops. I don’t have an answer. It is entirely possible that hard stops are as accurate as electronic end stop so electronic end stops are just adding complexity.

If you decide to add electronic end stops to your serial rig, there is one issue you need to be aware of. The X and Y end stops in the serial firmware on Ryan’s Github release site are set to normally open (NO) rather than the recommended normally closed (NC). The problem with NO wiring is that if a wire is knocked loose from an end stop switch, the stepper will keep running potentially driving the truck until it is physically stopped. To fix the problem you can either re-flash the serial firmware with two lines changed in Configuration.h, or you can flash the dual end stop firmware on your serial rig. I was informed in one post by either Jamie or Jeff that the dual end stop firmware will run just fine on a serial rig, but the reverse is not true. Or you can just live with the risk of NO switch wiring.

Edit: The two lines that need to be changed in the serial firmware in Configuration.h are:

#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.

…change to:

#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.


I don’t use any endstops. I have hard stops. I have used serial and dual drivers and they both work just as well to me.

1 Like

Great info thank you.

So the hard stops I have are just on table start and I align gantry to them also twisting lead screws and then I have had no issue with squareness or accuracy. Even precision. So definitely enjoying the least complex solution that definitely works.

Only in a tool change scenario I was hoping that with single and stops and motors in series I can somehow make them remember where they last were and get them to start back there again after unpause using some gcode kungfu. Without single end stops I would be remembering this or writing it down. I was hoping with single end stops for series motors I find a way to keep absolute cords. Set zero on job start relative. On tool change move absolute, on unpause move back absolute which should bring gantry back to where it was because tool change pause + add pause height as minus to Z start milling. If that makes sense.

If you start at the hard stops, or you home first, then use the controls to jog to the starting place. You can write down the coordinates you are at before sending G92. Then, after a power up, do the same thing again, moving to that same position. The Z will be wrong if you change the tool.

1 Like

Assuming you are doing things in the common way, your origin gets reset relative to the work piece. Assuming each cutting uses the same stock point as the origin, and you don’t kill the electronics or release the steppers, you can just execute a G0 X0 Y0 to return to the home/origin relative to the stock. This assumes you’ve moved your bit up enough to celar the stock. Setting the new Z home position after a bit change can be more complicated and the steps will depend on whether you are setting the height based on the top of the stock or the top of the spoil board.

gcode kungfu

Assuming your situation is more complicated than I’ve outlines, there there are a few g-codes I’ve run across that might be helpful. I’ve not used these, so it is just me reading the Marlin g-codes and going hummm…maybe I can use that some day.

G60/G61 - These g-code save a position and return to a saved position. I doubt the positions are saved to EEPROM even if an M500 is executed, so they are only saved while the electronics are running. These codes are not enabled in Ryan’s GitHub firmware. You would need to uncomment a line and re-flash the firmware. Search for SAVED_POSITIONS in Configuration_Adv.h. You would save the position just before you reset home for the work piece, and you would have to re-home your machine before restoring the position.

G53/G54-G59.3 - Global and Workspace Coordinate System - these codes allow you to have global workspace and then local workspaces for your cutting. These coordinates can be saved to EEPROM (I assume using an M500), and therefore can be saved across a power cycle. And they can be used to return to a position relative to the global home of the machine.

Another solution to some of the kind of problems you are outlining is a pendant using an Arduino. Pendants are a rabbit hole all their own, but an interesting one. There are many posts on the forum on pendants. There is at least one pendent project on Thingiverse. A pendent is my solution of saving a position across a power cycle.

1 Like

Awesome. Thanks for the pointers. I’ll do bit of digging. If it turns out to be an overkill then I’ll just give in and go dual stops :joy: