I have seen that many 3D printers have only one limit switch for each axis, how does it know where to stop on the other end?

My first guess is that the machine knows how big the plate is, and calculates it accordingly.

If this is true, then if I were to use a RAMPS, I would have to modify the software to figure out the build plate, it won't have the hardware to autocalculate.

  • 1
    $\begingroup$ it doesn't need to be at one end, any known position can be used to "home" (calibrate absolute position in regards to future movement commands). $\endgroup$
    – dandavis
    May 10, 2019 at 18:52
  • 1
    $\begingroup$ Limit switches have (at least) 2 uses: finding the edge, and preventing running past it. With one limit switch per axis you get the first but only half the second. But as @Oscar points out, any kind of slippage (belt, motor limitations, etc.) means the axis won't be where the software thinks it is. I much prefer having limit switches at both ends. $\endgroup$
    – TextGeek
    May 15, 2019 at 15:13
  • 1
    $\begingroup$ I believe you can add a 2nd limit switch, and update the Configuration.h file to show it's there. My combined Mega2560+RAMP functionality (Migbot printer) has both + and - limit switch connectors. Looks like this, with X+/X-. Y+/Y-, and Z+/Z- at the lower right. I haven't tried any Config file changes myself, am just running the software that came with the board in Jan 2015. $\endgroup$
    – CrossRoads
    May 21, 2019 at 16:40

1 Answer 1


In principle you only need the minimum axis position (or the maximum), the offset to the bed and the size of the bed in the direction of the axes. Fortunately, you can specify this in the firmware:

E.g. in Marlin Firmware offsets are defined as travel limits:

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -33
#define Y_MIN_POS -10
#define Z_MIN_POS 0
#define Z_MAX_POS 240

Bed size:

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

Do note that some printers do have maximum endstops on top of minimum endstops. This is handy in case of layer shifting (e.g. caused by the nozzle catching the print as such that the belt skips notches and as such redefining the reference frame) to prevent the carriage from destroying the printer at the maximum of the axis.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .