Calibration – Part 2……Again!

280 x 280mm

After figuring out that 20mm, just ain’t good enough to calibrate, I had a nose around on thingverse….

The largest ‘calibration’ thing I found was the above 280 x 280mm square……..Awesome, that’s good enough, close to 300mm too for maximum calibratory goodness…

Problem is, I’ve got a fairly crappy measuring thingy that only goes up to 151.44mm!, D’oh! (yaay for cheap digital vernier calipers though, where were you for my GCSE’s!)


another quick search – 150mm calibration Square

Now, we’re cooking…..

Lets Print & measure……………


Ok, not perfect, a lifted corner or two….BUT, good enough, this thing should measure 150mm….probably on the outside!? (I hope!)

  • X = 150.74
  • Y = 150.94

I found by closing the calipers just slightly and shifting up / down (left to right in the pic above) , closing slightly again until i couldn’t slide / rock….that I could get these measurements repeatedly this accurate (yep, repeatedly to 1/10th of a mm!! wow

So, where does that leave us………

Lets fire up Pronterface and see where we are…….Send M503 and look for M92

>>> M503
echo: G21 ; Units in mm
echo: M149 C ; Units in Celsius
echo:Filament settings: Disabled
echo: M200 D3.00
echo: M200 D0
echo:Steps per unit:
echo: M92 X80.30 Y80.30 Z400.50 E94.30
echo:Maximum feedrates (units/s):
echo: M203 X300.00 Y300.00 Z5.00 E25.00
echo:Maximum Acceleration (units/s2):
echo: M201 X500 Y500 Z100 E500
echo:Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P500.00 R800.00 T500.00
echo:Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_ms> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>
echo: M205 S0.00 T0.00 B20000 X7.00 Y7.00 Z0.40 E1.00
echo:Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:Auto Bed Leveling:
echo: M420 S1
echo:Material heatup parameters:
echo: M145 S0 H200 B60 F0
M145 S1 H240 B80 F0
echo:PID settings:
echo: M301 P33.40 I1.40 D189.20
echo:Z-Probe Offset (mm):
echo: M851 Z-0.30


We get the following E-Steps per mm for our settings

M92 X80.30 Y80.30 Z400.50 E94.30

Lets work out what they should be……….

  • New X = (150/150.74) * 80.30 = 79.9058 = 79.91 rounded up
  • New Y = (150/150.94) * 80.30 = 79.7999 = 79.80 rounded up
  • New Z = we’ll do this with a 100mm tower another time, it was fairly accurate though already
  • New E = we’ll do this later.

To change the M92 values in pronterface you will use the M92 Gcode.

For the numbers above, simply type

 M92 X79.71 Y79.80 Z400.50 E94.30


Now, lets check, Type M503 and see what’s in there….

Now type M500 to save to EEPROM

Power cycle, connect again and see if they’ve saved……

If they haven’t, I think i’ll need to alter the G-Code for every print (very easy to do in Cura)


Lets see

>>> M92 X93.00 Y91.72 Z1101.35
SENDING:M92 X93.00 Y91.72 Z1101.35
>>> M503
echo:  M92 X93.00 Y91.72 Z1101.35 E94.30

Looking good! lets save

>>> M500
echo:Settings Stored (466 bytes; crc -31597)

Looking better

Lets reboot and see if it’s in there

echo:SD card ok
Printer is now online.
echo:Marlin 1.1.4
echo:Steps per unit:
echo:  M92 X93.00 Y91.72 Z1101.35 E94.30

Perfect!, it’s stored……

Final test……lets measure the result….

Hmm, no bed adhesion at all….it’s printing into thin air with a 2mm gap between the extruder and the bed!

lets re-boot and home X,Y,Z then level…………


Crap, the extruder goes and crashes into the bed!

I’ve rinsed, repeated this 5 times now with various permutations….it really looks like the steps per mm number has affected the amount the X axis moves…to the point where the inductive bed Z limit sensor on the extruder moves too far over to the right and overshoots the bed, hovering just above,

of course, if there’s no metal underneath, it can’t detect the bed, so the head keeps driving down, causing the whole thing to crash into the bed

Looks like something’s wrong!

I’ve put back the original settings and it works OK!


I’m an idiot…………

I sent the M92 settings that I had still in my copy / paste buffer!……….. from the 20mm Cube thingverse!

>> M92 X93.00 Y91.72 Z1101.35
SENDING:M92 X93.00 Y91.72 Z1101.35


M92 X79.71 Y79.80 Z400.50 E94.30

No wonder X was overshooting I’d told it that it needed 93 steps per mm…..

  • at the original settings, the 300mm bed would, instead of needing 23,913 steps to traverse…
  • at the new settings, it tried to squeeze in 27,900 steps before hitting the physical limit! –

Lets try again

>>> M92 X79.71 Y79.80 Z400.50 E94.30
SENDING:M92 X79.71 Y79.80 Z400.50 E94.30

Print and Measure…….

  • X = between 149.74 and 149.98 – a .2mm variance from front to back
  • Y = 149.97

Ok, Better…But that trapesoidal print is worrying, lets re-print

  • X = 149.41
  • Y = 149.83

is that an improvement…..we were

  • X = 150.74
  • Y = 150.94

Both have improved, but not perfect

  • X = was 0.74 out, it’s now only (150-149.41) 0.59 out…that’s a 0.15mm improvement
  • Y = was 0.94 out, it’s now only (150-149.83) 0.17 out….that’s a 0.77mm improvement….
  • But, Both are still slightly out…..some more fine tuning needed………(which will all go to pot when the belts stretch / the printer wears in, etc, etc)

Summary (Phew)

calibrating the printer X and Y axis has made a small difference!…

  • X is now 0.15% of a percent more accurate
  • Y is now 0.51 % more accurate (Great result!)

I think that may be good enough for now, I really doubt my ability to measure repeatedly accurately to 0.1mm accuracy….and, I doubt the printer can print that accuracy repeatedly either……


To Do….Z axis and Extruder calibration……………..



Author: Bleugh

Early Fourties, Wife, two kids in primary school. Both of us work full time...5 years now we’ve been Back in Blighty after a decade away...It's a new country for everyone! Still finding time to tinker!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: