Configuring Marlin Bed Dimensions

From RepRap
Jump to: navigation, search

Writing this as an amateur RepRapper who initially struggled with getting prints on the center of the bed.

There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.

Method 1

Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)

// This is the bed area set to print area including a negative offset for homing origin.
// Does not require M206 and indeed required M206 to be clear.
#define X_MAX_POS 200
#define X_MIN_POS -45
#define Y_MAX_POS 170
#define Y_MIN_POS -20
#define Z_MAX_POS 130
#define Z_MIN_POS 0

Slicer has correct bed *area* configured as 200,170 (I lose some Y travel because of my binder-clips)

Method 2

Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)


This is not what M206 was designed for. M206 sets offset position for a work piece. This also reduces the bed size when miss used in this way.

// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.
// Example: M206 X-45 Y-30
#define X_MAX_POS 200
#define X_MIN_POS 0
#define Y_MAX_POS 175
#define Y_MIN_POS 0
#define Z_MAX_POS 130
#define Z_MIN_POS 0

In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500. You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.


This example results in reduced X MAX and Y MAX positions because travel is limited by both the firmware limits and the M206 offsets. I.e., with the above firmware limits, the M206 X-45 Y-30 runs up against the firmware limits at X_MAX_POS = 200-45 = 155, Y_MAX_POS = 175-30 = 145.

Method 3

Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)

Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.

I don't like this solution as the printer itself doesn't "know" where it's own printable area is, and relies on the slicer to sort things out.

Method 4

Technically not a firmware mod but it works too-

Manually move the x and y limit stop switches on your printer frame, then change bed size in the slicer.

Depending on the printer you may need to make a mounting bracket to mount the switch to the frame. For example- the Ender 3 can easily modify its Y switch but the X switch is attached to the drive-belt gear cover. To move it you must make a mounting bracket identical to the one on the Y axis.