Dual Endstops

Working on a new lowrider build and starting think about it’s operation. Will the dual Endstops firmware work for this? I have a ramps board from my donor MPCNC and am running the dual motors on the y axis.

What I would like to do is put stops on both X axis motors and both z motors driving all four of those motors independently. Since the y motors are so close together I do not see them racking so driving them with one driver and one endstop should not be an issue.

So the ramps board gives me the five drivers but I want to use two for z instead of y. Is this possible with the firmware as it is posted now?

Teaser pic of the build attached…

Nice looking build!

Yup dual endstop firmware used on the table length axis ( I call that the Y axis) and the Z axis. The axis along the rails does not need it (I call that the X). Just remember to lower the accelerations from the MPCNC to the LowRider Firmware.

I’m really interested to see how well this works. I haven’t seen any with the two Y motors yet (I call it Y :wink: ). How are you going to attach the endstops? Are you going to put the z endstops on the top?

Dang I am horrible with typing lately, and getting worse. Might have to switch to type to text…

OK…so we are all talking the same coordinate system, as Ryan defined, we’ll call the Y axis the long direction of the table, the one running on the skate wheels, and the X axis will be the shirt direction, running on the SS tube rails, and for the noobs, the Z will be up and down, haha.

My plan is to use a Ramps 1.4 with all five stepper drivers, two on the Y, two on the Z, and one on the X. The X will still use two stepper motors (1) because I have them and I can and (2) I want to eliminate any torque created by one stepper being offset from the center of the cutting bit.

For limit switches, I will put one on each of the Y axis sides so I can square the Y to the table. I will put two on the Z axis at each end of the SS tube rails. During a homing sequence, the Z axis would drive all the way to the top of its range and hit the switches making the SS rails parallel to the table. The X axis gets one stop on the side where the controller is attached.

SO…will the current dual endstop firmware accommodate this or do I need to make some changes somehow to drive two Z’s instead of two Y’s? How does this get wired up then compared to the MPCNC version using dual endstops?

You can’t just use the firmware as-is from the .zip, but the changes are all in the configuration.h and configuration_adv.h. You don’t have to write any software for it.



Z_HOME_DIR 1 // This will make the z axis home to the max, not the min. I’ve never used this, but I think it will work.

Then you’ll plug the x2 endstop into the xmax endstop port on the ramps and the z2 on the zmax port on the ramps.

Using Z instead of Y is no big deal. Each axis is the same, in terms of the code. The thing that no one has tried before (AFAIK) is the dual endstops on the max of Z. When you try that homing the first time, be prepared for it to fail. You could try putting the endstops in your hand, and when it starts to home z, just push them both. If it doesn’t stop, then hit the reset button or turn off the power strip.

Before doing any homing, check that your endstop logic is right with M119.

1 Like

That makes perfect sense now! Just need to finish building this monster and try it out. Thanks for the quick reply.

This thread is just up my ally as I am in the process of wiring my Ramps 1.4 board and I am a little confused as to how I should wire it.

Should I just go ahead and use all five of my driver boards and run 1 motor to one board?

If so do I just wire all of the motors normal? i.e. 2B->Blue, 2A->Yellow, 1A->Green, 2A->Red (these are the colors on the wires that most seem to be using)

How do I know which motor should go to which board?

If I do it this way I need to get the Dual End stops version of the firmware correct, and obviously wire the end stops correct?

The version I have loaded now that I got here is for only 3 boards 5 motors, 2Z, 2Y(long) and 1X?

Hopefully what I am asking is making since!!!


No, I really really suggest you do it the standard way for many many reasons. If you find a need for this than do it at a later time when you fully understand why you would do it. This only allows for auto squaring at the cost of convenience. It does not add power or make anything easier.

As for wiring if you got it here just plug it in and go. If you did not get it here the colors mean nothing and vary by manufacturer.



Also had to un-comment USE_ZMAX_PLUG in the configuration.h file. But now when trying to compile I get the following error:

Arduino: 1.8.4 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

fork/exec C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc.exe: The filename or extension is too long.
Error compiling for board Arduino/Genuino Mega or Mega 2560.

This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.

That is the same issue as above with Marlin 2.0. Try either the arduino beta, or move your Marlin folder to the root of another drive. It is an issue withe the temp compile folder creating too long of file names with the LCD enabled It will work it just seems to be different with every machine. If you have the know how you can just move arduino’s temp compile folder to the root of a drive that should give you enough room.


Thanks for the direction. Used beta Arduino 1.9.0 Build 26 and was able to compile. Time finish the mechanical side of this build and try it out!

[attachment file=49284]

So I got everything hooked up using just the three driver boards and everything seems to be working fine in a technical since. However as you can see in my pic everything is really just kind of mocked up and at some point I am going to need to go back and square, level and support the whole thing properly and then clean up and mount all of the wiring along with the power supply etc.

So basically I am more or less in a conceptual phase here making sure everything works and testing different configurations of the unistrut frame so I can kind of figure out what will work and what wont. Obviously, as it sits right now, there are many issues and reasons it wont work properly from an engineering standpoint.

That being said I am more in a proof of concept mindset and once I got everything up and moving and went to make a simple program I realized I don’t have endstops or limit switches so I don’t have a consistent ‘Home’ or ‘Zero’. Obviously a program can be run without this you just have to tell the machine what your calling zero etc., but because all my other CNC machines and printers have limits it is very difficult for me to conceptualize not having that ability to hit the home button and basically reset everything and have the machine know exactly where it is and what its limits are.

So my question is, can limit switches be added in this configuration and if so do they even make any since?


Does using the dual endstops firmware and then setting the machine up with all 5 drivers get you to this more defined level of operation?

I know you suggested just going with the three drivers at first, and I know you have said that you are not a big fan of endstops, but for someone who is used to working with machines that have limits do you think it makes since to go ahead and set it up from the beginning with the extra drivers and the newer firmware? Any disadvantages other than the learning curve?

By the way I just wanted to say that I am truly amazed by your designs Ryan!!! As someone who is in the part design and manufacturing business you have an incredible ability to design parts that are both functional and aesthetically pleasing but what I think is most over looked in part design that you seem to have excellent grasp of is designing parts with the means of manufacture in mind.

Anyway Just wanted to give that shout out.


That looks pretty crazy like that, somehow it seems super complicated. on the control side seeing the wires and simple on the other side. Pretty cool pic.

As for endstops, they are not necessary, it is easier to use without them. I have written about this in a few places and I thing the FAQ’s has the compilation. Think of it this way, does it matter where the bit is, or is it more important where you clamp down your piece to be cut? If you have endstops you have to precisely clamp down your material…not easy. At the ends of the Lowrider assembly instructions it tells you how most of us use our gcode to reset home before each cut.

So my work flow is like this.

First prep the CAM, then;

1-Screw down my material, trying to keep it square with a table rail. Not super important because I leave room on all sides.

2-Pull the gantry square against the end of the table to square it and make sure the Z screws are evenly engaged by turning them by hand.

3-Turn it on.

4-Using the LCD raise the Z axis above the work piece.

5-Using the LCD drive the gantry until the bit is over the end of the material.

6-By hand I move the X axis to the corner of the material.

7-Using the LCD lower the gantry .1mm at a time until the bit touches the material (or is tight on a piece of paper as a feeler gauge then down another .1-.2mm).

8- Run the gcode which includes G92 x0 y0 z0 as the first line to reset the coordinates without disabling the steppers.



Alan - I’m a fan of repeatable-ness so that’s why i’m going with stops on my lowrider. My original MPCNC had the end stops so it made setting up a fixture plate and doing repeatable parts a snap. I’m doing dual endstops on mine also so I can fine tune the squareness and make that repeatable too. Once I get the mounts designed and positioned I’ll post some pics on that.

I see your mill and lathe in the background…when do they get converted to CNC? I have a LMS 3990 mill I did a conversion too, love it. Would love to have a lathe too, maybe sometime though. In my opinion everything should have CNC control…RIGHT!

You can do it, I have faith in you. You don’t need endstops. I always start my machine in the same spot, just because that’s where I can make sure it’s square. That’s where I would put endstops, but without them squaring, there’s no point.

That unistrut design looks awesome. That definitely had me jealous.

Keep in mind that you can change anything later, so don’t be afraid to make a less than perfect decision. If you don’t install endstops, you can add them in 30 minutes later. If you don’t like your first spoil board, you can replace it. It’s not like piece of furniture that had been glued and finished. It can evolve with experience.

I’ve been thinking about end stops as well. I’m only going to have them for the X0 Y0 position, so I’m pretty sure I can mount both on the controller side of the carriage. I’ll mount something to activate the switch on the end of my unistrut where the belt is attached, then mount a hard stop on the other side for when the whole assembly gets slightly out of whack. That’s how I have my mpcnc set up now.

That’s some wisdom right there!

Awwwwww come on Barry try the dual…You might as well if you are running the endstops.

I’d have to wire endstops to the other side… Has anyone figured out z stops yet?

As in how to mount them? I haven’t really looked but I think you could use my clip on endstop holders on the Z rails in between the wheel blocks.

I have been using the holy hell out of my LowRider and desperately want to try a redesign. I think I only have 1 piece left of the MP3DP update and then I think the LowRider is next. I will keep end stops in mind.