3D Printer Bed Center Calibration


If you noticed that with large prints part of the skirt or brims sometimes was printed outside the heat bed print area. Apparently, the printer does not have the correct heat bed center in the firmware.

To correct this there is a helpful thing in Thingiverse that this thing helps you to find the center of the bed and aids in changing the bed center to the actual bed center. Instructions are provided below for you to change your center.

Warning: This thing and correction works with Marlin, Reprap and green marked firmwares below. Populer printer Anet printers stock firmware is not supported. Upgrading to the Marlin necessary. This calibration method is not applicable for Delta printers.

https://www.thingiverse.com/thing:2280529

Before downloading the STL file lets go in customizer and create the customized STL file according to your bed size. For example for Anet A8 selecting 200×200 mm or 180×180 mm size would be fine as its bed size is 220x220mm. Set at least 20mm lower value than your actual bed size to measure corner difference.  

 

Print the STL file and check that the printed frame is the same distance from edges of the bed. Probably not! Right. Thats why you are here tho 🙂

Lets assume our printed shape (red) looks like in following picture on the bed.

To measure in the X direction; the distance from the outer squares to the edge of the bed and subtract the 2 values and divide them by 2. (First measure left, then right side)

In our example case this led to (5-35)/2 = -15 mm

To measure in the Y direction; the distance from the outer squares to the edge of the bed and subtract the 2 values and divide them by 2. (First measure front, then rear side)

In our example case this led to (22-18)/2 = 2 mm

Method-1 (Easy)

For this method you can able to write on printer mainboard EEPROM. For Marlin this setting EEPROM_SETTINGS must be enabled. You will need a printer control terminal application, such as Pronterface, a free Windows and Mac application can be downloaded from following site:

https://github.com/kliment/Printrun/releases/tag/printrun-1.6.0

Connect your 3D printer to the computer and open a Pronterface or any printer terminal screen and send following g-code. 

M206 X-15 Y2

The values specified are added to the endstop position when the X and Y axes are referenced, so this tells the printer that the center of the printer is located at the given values with respect to the stored values in the configuration file. To store the new center into EEPROM send following g-code commands one by one.

M500
M501
M503

Method-2 (Experienced)

If you can able to update and flash the Marlin firmware then open up the configuration file (configuration.h) and we will make some changes. Please backup that file before change anything.

First, lets make sure we have the correct bed dimensions defined. (Around line 882)

Lets take Anet A8 again as an example here. Stock bed size is 220x200mm.

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

Then we need to change the X_MIN_POS and Y_MIN_POS values according to our new X and Y values (Around line 885)

// 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 X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE

If  X_MIN_POS and Y_MIN_POS lines have set numbers in your existing configuration file we will update those values on top of that.

In this example X_MIN_POS becomes -33-15 = -48  and Y_MIN_POS becomes -10+2 = -8. (If those values were already zero just put the measurement values.)

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -48
#define Y_MIN_POS -8
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE

Your 3D printer has set for a new center.


If you want to be the first to know about 3D articles, join my Facebook group