Hi CNC earthlings

Im an alien when it comes to CNC but havent stopped me into buying an used MPCNC.
I managed to put the thing together and its moving on all planes :slight_smile:

It came with 4 endstops but I think they were never used. Whats the advantage when using dual setup compared to singe stops? DO I have to flash my Ramps card with new firmware, how do I know…

Also have an AMB FME-P 1050 thats new some kind of connection. Do I need a Relay or softstart?
Where does it connect?

Cheers people

1 Like

End stops allow you to square the machine. They make sure the two steppers are the same distance from the ends of the tubing. Also, since they set a zero origin point in the corner of the machine, you can use them to return to specific locations on your spoil board. A lot of machines don’t have them, and the users get along just fine. To use the end stops, you need the steppers and the limit switches wired for them. Dual end stops do require a different version of the firmware. As for knowing if you have them, as a start take a look at how many stepper motors are connected to your Ramps board. If it is 5 then the steppers at least are wired for dual end stops. If it is only 3, then you have series wiring and your machine is not setup for dual end stops.


Also have an AMB FME-P 1050 thats new some kind of connection.

Posting a photo of what you are talking about here might help someone to give you a precise answer. Looking at a picture of that router on the net, it appears that just a power cord plugs into the router and that turning it on and off manually would work. Not sure if the connection is a standard one or something you’ll have to special order.

Thanks for your reply.
The steppers are connected in series, so only 3 connections to the board. This means only single endstops for now. As for the ramps board there only room for connecting 3 stops! Or ?

As for the router, for some reason I was thinking the router needed some input (signal) from the ramps board. But all it needs is a power connection…and on/off manual operation.

only 3 connections to the board

I’m not a Ramps user, but I believe Ramps boards support 5 motors…at least current versions. But you do have to have a separate (plug-in) stepper motor driver module for each motor.

Almost all MPCNC rigs are manual with respect to powering the router on and off. There are a few less common spindle configurations that allow an auto solution, and some people (me included) use an IOT Relay and ‘special’ GCode to automate the spindle on/off.

Technically I think we might say they allow you to square the gantry by setting the motors at different lengths from the corners. This is helpful if we can’t quite get the frame square when building.

You should have min/max for each axis. Max becomes the min for the second rail on that axis.

For my own benefit, I’m going to try to gather together some of the relevant information, and expand (perhaps to the clarity of mud) on some of it.

First, the drivers. There are two ways to connect your drivers. One is via serial wiring. You use three drivers to control 5 stepper motors. The serial wiring maintains current, therefore maintaining torque. Don’t be fooled by the two Z connectors on some controller boards, they are almost guaranteed to be wired in parallel, which does divide the current, dividing the torque. The second way to connect the drivers is to use five drivers for five motors. But to do that, you have to make sure the firmware is configured for dual axis motors on a per-axis basis (you have to tell it which axes are using dual motors). Not horribly difficult, but can be daunting for someone who has never dealt with the firmware before.

Second, the endstops. I will begin with the bold statement that endstops are not what you think they are in CNC machining. At least, not around here. Especially if you come from the 3D printing world. Before you flip your lid, and regale me with your stories and theories regarding safety and whatnot, give me a chance to explain myself. In 3D printing, the world revolves around the print bed, which is a fixed location (relatively). So the endstops are needed to a) find the origin in a repeatable fashion, and b) ensure that the user doesn’t break things (or more likely, gum things up with a lot of wasted filament) by trying to print a 1:1 model of the USS Sulaco on their Prusa Mini. In the CNC world, everything revolves around your stock, and you set your origin each time you start a job based on where your stock is (this is the other main difference between additive and subtractive processing). It can also be surmised that you’ve been clueful enough to ensure that the job you’re about to run will, in fact, fit within the confines of your stock. We’re not too terribly worried about the machine, because even at full speed, it’s not going to tear itself apart running into the corners. Besides, you should never leave a CNC machine running unattended.

So, with safety off the table, why use endstops on a CNC? Well, to have the machine automatically square itself, and to have the machine find a repeatable world origin. The first can be handy, and the second is very handy if you are doing multiple step jobs (bit changes, two-sided milling, etc.). Note that all of this can and has and is being done without endstops right now.

A couple of things to note about endstops. First, if you are using Marlin, you use the min for the first axis motor, and the max for the second axis motor, and then you have to configure the firmware to use auto-squaring. The dual-endstop firmware from V1 already has this all set up for you. On top of all that, you have to make absolutely sure your endstops are dead-on square. Thankfully, it’s usually easier to micro-adjust your endstops (or the blocks they trigger on) than it is to tweak your entire rig, but auto-squaring is still only as good as you get your endstops. And even then, they can only compensate for so much out-of-squareness. It can’t handle a rig that was put together by a pack of over-caffeinated spider monkeys, but it can help you overcome the normal gaffes of a human doing their earnest best, even if they aren’t familiar with construction projects.


  • Series wiring
    • Three drivers
    • no endstops
    • manually squaring (hold the gantry in a corner when turning on)
    • manually set origin
  • Individual wiring
    • Five drivers (typ => X0:X, Y0:Y, Z:Z, X1:E0, Y1:E1)
    • option to use endstops for auto-squaring & world origin
    • manually set work origin
  • Endstops (typ => NC normally closed)
    • Xmin:X0, Xmax:X1
    • Ymin:Y0, Ymax:Y1
    • Zmin:probe (whole other topic), Zmax: Zmax (???)
    • Softstops are usually enabled, preventing the firmware from moving the gantry into the endstops (the machine size needs to be set in the firmware or in EEPROM)

Now, that’s all how it’s usually done. Around here. You could use endstops as they are “designed” to be used. But there’s not a whole lot of benefit beyond your own mental health (which is not insignificant, I suppose). You can use dual motors on the XY axis without the endstops (either reconfigure the firmware, or jumper the endstops to keep them “closed”). Ultimately, it’s your machine, and you can do with it what you will (we’re kind of like Satanists Libertarians hippies that way), but the farther afield you go, the less experience the gestalt of the forums can bring to bear on any issues you may encounter.

ps: Check your grub screws. Always check your grub screws.

1 Like

Not sure what this means. Do you just mean that when the firmware believes it has a home position it won’t move below (0,0) and above (max_x, max_y)? If so, there is not much positive with this feature.

It means the firmware will raise an error status if given a command that will send it into negative world/machine coordinates. I believe the V1 dual firmware only has soft min endstops enabled, not the soft max endstops. They are there to prevent bashing into the physical endstops.

Note that it’s possible to set workspace coordinates that are different from the machine coordinates… I don’t have the specifics on the how-to at my fingertips, but the concept is pretty clear. The firmware can keep several sets of coordinate offsets for your workspace, so you can set your work origin to the center of your stock, for example. Then, you can send gcode that will reference negative coordinates in workspace coordinates, but still remain in positive machine coordinates.

1 Like

I understand the concepts, but in practice, at least for me, they are meaningless. First, I set my end stops close to the physical minimums of the machine. It is physically impossible to hurt the end stops since the machine “bottoms out” before the switches can be hurt. On the other hand, I remember one of the first times I used the machine after adding dual end stops. I homed the machine to make sure it was square, released the steppers, moved the router over the center of my work piece, and started the cut. Of course it thought it was still at (0,0) in world space and would not move to any negative coordinates. I had some bores on the center line of the cut, and it produce half circles.

A bit off from this discussion, but there are two things I’d like (someday) to do wrt world coordinates and end stops. First, I’d like to have a mounted bit change sensor that re-calibrates for the height of the bit “automatically”. The Shapeoko has this option. It requires knowing where the router is in global space to make it work. Second, I want to know the top possible position of my router on the Z axis…a kind of homing Z to figure out the highest the router should go.

After the machine squares and homes, it knows where machine origin is. So you might send a G54 to set work coordinates 1 (G54-G59.3 are the 9 workspace coordinate spaces). Then jog the gantry to where you want it and use G92 X0 Y0 to set the workspace origin. If you want to go back to the machine coordinates, use G53.

You can set up the Zmin endstop as a Z probe, and use G28 Z and G92 Z0.15 (or whatever the thickness of your probe is) to set your Z height. This is also documented in milling basics.

Doing it automatically is a little more complex, as you would have to sacrifice some portion of your work area for a dedicated probe. Then, you’d have to get a good connection to the collet/bit. Then you could always have your bit changes wrapped in a switch to machine coordinates, home, pause, probe, return to work coordinates, and return to job.

I have a Z probe setup, and it works well as long as I’m careful. From the videos, it appears that Carbide’s bit change device is a switch rather than a touch plate. It means that you don’t have to remember to ground the bit before probing. I’ve seen a couple threads on this Forum about modifying the router so that the bit is grounded. Nice in theory, but I’m reluctant to make the change. Thanks for the recipe to these features. I’d scanned Marlin G-Code and saw there was a pathway but had not struggled with the details. I also created a pendant, so I’ve though about doing the bit change outside of Marlin to simplify things.

Here’s my (admittedly layman’s) understanding of machine vs work coordinates.

The machine has one set of machine coordinates. End stops and soft limits let the machine keep track of its location and movement within the mechanical envelope of the machine.

The machine can keep track of several work coordinate systems. These are “named” G54 through G59. Most machines default to working in G54. Work offsets allow the machine to keep track of the work envelope relative to the machine envelope. This allows the same gcode to be execucted against multiple work pieces without editing the code. For example, you could load up 6 blanks, probe them to specify work coordinates for each work piece in a different coordinate system, and then use the same gcode 6 times, simply changing the current coordinate system before starting on the next piece. When we issue the G92 command we are setting the offsets for the currently selected work coordinate system.

There is also provision for tracking tool length offsets. Ideally (as I understand things), this is how you represent changes in bit length when changing tools. Tool lengths can be tracked in a table when the tooling is repeatable, for example when held in a tool holder as part of an automatic tool change system, or can be probed on the machine when the tool length may vary on each tool swap, as in the case with installing a different bit in the DW660 collet. Most of the tool length sensors I have seen have been a mechanical switch as this allows for some spring in the sensor system to protect the tool from damage while being probed. As long as the springiness is repeatable, it cancels out on repeated use and doesn’t add significant error to the process.