MPCNC RAMPS Dual Endstop Wiring

Hi All,

Where do I wire in the end stop limit switches, please?

On this page, the RAMPs picture is missing:

There is a label on the Ramps board:

End stops

1 1 1 1 1 1
S x-min x-max y-min y-max z-min z-max
- x-min x-max y-min y-max z-min z-max
I have filled in the table with the connections I think are right for Normally Closed with Marlin Dual End-stops.

Is this correct?

Thanks very much All.


Yes that is correct, your board should be labeled and I have the chart directly next to the pictures.

1 Like


When I asked I didn’t really understand, now I can see that diagram was just wrong, so in case anyone else is as confused as I was, here is a correct diagram of the Ramps 1.4 limit switch wiring that makes much more sense:

Naturally each limit switch has two terminals, one terminal is connected to the S row, the other terminal is connected to the ground row.

S (Signal) x1-min x2-min y1-min y2-min z-min
– (Ground) x1-min x2-min y1-min y2-min z-min

With Dual End-Stops you don’t get Max limits - there aren’t enough pins. So with Dual End-stops you sacrifice Max limits to gain a minium limit on each motor. Hence you will see “//#define MAX_SOFTWARE_ENDSTOPS” (which is commented out) in configuration.h

To compensate for not having Maximum limit switches, I think you can rely on software by setting the print bed size in configuration.h here:

// The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200

Presumably, 200 is 200mm.

I’m not sure yet what happens if your G-Code tells your machine to go beyond the BED_SIZE hopefully Marlin is smart enough to reject the instruction!

I think I will wire in some max limit switches of my own to kill the machine if it ever actually hits the ends. Even if the software limits work, the machine is always susceptible to missing steps when pushed too hard and losing its position. So I’ll safeguard it simply by wiring all max-limit switches togther in parallel with the Kill button.


Hi Lindsay,

Did you ever wire up your MPCNC to address additional max endstops on a dual endstop build? I’m starting to research this and came across this thread.

It seems that two of the AUX pins could be remapped to a new y max and x max endstop and then code in pins.h and configuration.h modified to account for these new end stops.


Max endstops don’t really gain you anything without a lot more firmware work. They are not used for homing and endstops aren’t used at all while milling…

Unfortunately, the method I proposed above does not work. The version of Marlin that I use (Bugfix 2.0x (and all other current versions I presume)) **doesn’t react to a Stop command until after the current move has completed. -Not very good for a kill switch really. I think more needs to be done here because Stop should mean stop immediately, no matter what.

Max and min endstops are a good idea on any machine that has no idea of where it really is. Remember the stepper motors and Marlin are open loop - there is no feedback so when steps commands fail to move the motors, the machine doesn’t know and it has lost its position at that point - it could be 0.5mm out or 1000mm out. Ideally Marlin will one day evolve to allow the option of magnetic strip closed loop feedback. I hope so.

Hey, actually I never ended up putting in max limit switches. In my experience the machine hasn’t missed steps since I first started… I had probs with a Chinese collet adapter that was not to tolerance and my bits were not holding or cutting properly. Since I have sorted that trouble out, and also use respectable feed rates and depths of cut that aren’t too ambitious, I have not had a problem with skipping steps and the machine has always remained in control.