Semi-Automatic Bed Levelling of Ender 3

Without a $40-ish upgrade, bed levelling on the Ender 3 takes forever. A simple gcode file fixes this.

GCode, while sounding scary, is super easy. Each line is a direct command to the 3D printer.

Here are the relevant commands that I used:

  • G28 : Auto-home all axes

You cal also use G28 X or G28 Y to only home the x or y axes respectively.

  • G21 : Set units to mm

  • G90 : Use absolute positioning. G91 for relative positioning.

  • G0 : Jog to a XYZ location.

Example: G0 X30 moves the head to the x=30mm location, and doesnt modify the other axes.

  • G1 : Move to a XYZ location, at a given feedrate

Example: G0 X30 Y10 F1500 moves the head to the x=30mm, y=10mm location at a speed of 1500mm/s, and doesn't modify the other axes.

  • M0 : Wait for user to click the button.

So when you run the script below, it will home the axes, and then automatically move to a corner, wait for you to adjust the bed and click the button, and then move to the next one.

This is so much easier than fiddling with the Move Axis methods in the firmware.

If anyone knows how I can add this script into the firmware, I would love to know, but for now I just saved this to a file called bedLevelling.gcode and then run the file as if I'm printing a normal file.

Note, I've assumed the location of the screws - it is correct for the Ender 3, but you might need to change if for your printer.

Hope it helps someone.

bedLevelling.gcode

; This script is to help with levelling the bed.

G21 ; Set units to mm
G28 ; Home all axis
G90 ; Absolute positioning

G1 Z2 F1500.0 ; Rise up

; First Point
G1 X30 Y35 F3000 ; move

G1 Z0 F1500 ; Go down

M0 ; Wait for input

G1 Z2 F1500 ; Go back up


; Second Point
G1 X200 Y205 F3000 ; Move

G1 Z0 F1500 ; Go down

M0 ; wait for input

G1 Z2 F1500 ; Go back up



; Third POINT
G1 X200 Y35 F3000 ; Move

G1 Z0 F1500 ; Go down

M0; wait for input

G1 Z2 F1500 ; Go back up




; Fourth POINT
G1 X30 Y205 F3000 ; Move

G1 Z0 F1500 ; Go down

M0 ; wait for input

G1 Z2 F1500 ; Go back up



; Center point
G1 X110 Y120 F3000 ; Move

G1 Z0 F1500 ; Go down

M0; wait for input

G1 Z2 F1500 ; Go back up

; Get close to the starting point

G1 X5 Y5 ;

The ; just means that the rest of the line is a comment. It is not needed at the end of every line.