Complete LR Calibration Sequence?

II have been reading a bunch of threads where users are experiencing differences in X and Y cut lengths, or there are differences in size between inside (hole) cuts and outside (part) cuts with the same specified dimension.

I’ve compiled suggestions from several different threads into a single list for calibrating my own machine (LR3), with a goal of minimizing those differences and having as accurate a machine as possible.

I want to run this list by the Forum for a sanity check to make sure that I’m not missing anything. Hopefully this can also be a resource for others wanting to fully calibrate their machine.
Comments and feedback are appreciated.

BTW, I’m running Marlin on an SKR v1.2 Pro controller. The process may vary slightly for Jackpot/FluidNC machines.

Prerequisite: Adjust belt tension, ensure core bearings are contacting gantry rails (no core looseness)

Step 1: Square the machine

  • Home the X and Y axis
  • Move the machine in a rectangular pattern (as large as possible)
  • Use a V-bit to create marks on painters tape at each corner of the rectangle (lower Z until the V-bit just touches the tape)
  • Measure the diagonals of the rectangle with a steel tape and compare for different lengths
  • Adjust the Y endstops as necessary (my endstops have threaded adjustment screws). If no adjustment screws, use M666 Y(n) to compensate for Y offset
  • Repeat above steps until the diagonals are within +/- 0.5 mm (pretty much the measurement granularity using a steel tape measure)
  • Save settings with M500

Step 2: Level the gantry

  • Home Z axis
  • Measure the distance between the lower gantry rail and the spoil board at both XMin and XMax (I have some hole gauges that are perfect for this)
  • Adjust one Z endstop to get the difference between the measurements as close as possible (repeat previous 2 steps as required)
  • Home Z, then probe using the Touch Probe (G38.2 Z0) to set Z=0 at XMin (G92 Z0.5).
  • Move the core to XMax and repeat the probe (G38.2 Z-10), but do not use the G92 command
  • Read the Z position on the display. This will show the offset difference.
  • Use M666 Z(n) to compensate for a Z Offset between XMin and XMax
  • Re-home Z and repeat measurements/adjustments to ensure the offset is as low as possible (< +/- 0.2mm).
  • Save settings with M500

Step 3: Tram the router

  • Attach Ryans’s printed Tramming Tool to the router collet
  • Move the tool so that the pointer is pointing toward YMax.
  • Move the Z axis so the tool is almost touching the spoil board.
  • Rotate the tool 360 degrees, making note of where the pointer is closer and further away from the spoil board
  • Remove the router from the mount and place a few layers of painters tape on the bottom mount opposite the lowest point (or on the top mount in the location of the highest point)
  • Reinstall the router and retest
  • Repeat until the tool can rotate fully with minimal variation in distance from the spoil board

Step 4: Measure belt spacing (Reportedly some belts from V1E have very minor errors in tooth spacing, resulting in slight errors over long distances.)

  • Using a V-Bit, make marks in painters tape at YMin and YMax.
  • Note the Y position at each location (ie. YMin = 0, YMax = 2250mm)
  • Measure the actual distance between the marks using a steel tape
  • If difference is >0.5mm, it may be necessary to change the steps/mm for that axis using M92
  • To calculate required steps/mm: New Steps/mm = (Old Steps/mm (default 100) * Expected Length)/Measured Length
  • For example, YMax = 2250, measured length = 2247. (n) = 100*2250/2247 = 100.1335
  • Set new steps/mm using M92 Y(n)
  • Retest to confirm correct measured distance
  • Save settings using M500
  • Repeat test/adjustment for X axis if required
  • As per @Dreyfus and @CesarH , recheck square if steps are modified (although I am yet to be convinced it is necessary)

Step 5: Perform test cuts

  • Using appropriate feeds and speeds for the test material (MDF or plywood), create two square cuts of 100mm per side in EstlCAM (one as a hole, one as a part) using Climb Milling. Use a Finishing Pass of approximately 10% of bit diameter. The squares should be oriented such that the edges are parallel to the X and Y axis
  • Create a second pair of identical cuts, this time using Conventional Milling.
  • Perform the cuts on a test piece of MDF or Plywood (thinner material and a single cut preferred - use holding tabs).
  • Measure the distance of both the hole and part cuts along both the X and Y axis.
  • Distances should be identical for all measured lengths
  • If the hole and part measurements are different, you may need to adjust the Tool Diameter in EstlCAM to compensate for the cutting width of the bit varying from the nominal width (for example 1/8" bit may be cutting at 3.120mm instead of the expected 3.175mm)
  • If there is a difference between Climb and Conventional cuts, that may indicate excessive tool flex (reduce cutting depth or decrease stick-out) or looseness in the core bearings.

Please let me know if I have missed anything, or have made any mistakes in the above procedure.

10 Likes

If you make any changes at step 4 you probably want to check squareness again.

3 Likes

I’ll have to think about that. As long as both belts are the same step value, the diagonals shouldn’t change (overall length would, but not the difference between the two). Or maybe I’m wrong (definitely not the first time)

As you change the steps per mm, you are moving more or less mm so yes you should recheck for squareness

1 Like

But aren’t the Y axis both moving the same (different) distance, so while the edges of the rectangle are longer (or shorter), the angles of the rectangle should still be the same, no?

Pre-sguare adjustment

|_______________________________
|
|
|
. |_______________________________

Post square adjustment, Pre-step adjustment
|_______________________________
|
|
|
|_______________________________

Post step adjustment

|_________________________________
|
|
|
|
|_________________________________

I added to resquare after step 4 to the list, but I don’t see it in my head yet as necessary. Maybe you could explain further…?

If steps / mm is set independently on each side then you would need to square it again.

1 Like

What a great idea! and perfect timing for me! I’m about to start fine tuning my LowRider :slight_smile:

Thank you for your help!

1 Like

I don’t think that is an option in Marlin. You can set X, Y and Z differently, but both Y axis (and both Z axis) are set the same from a single parameter.

Plus if the belts are from the same lot (usually cut from a single length), then there would be no reason to set them differently.

Fluidnc and the jackpot can do it afaik.

Could someone post a screen shot showing which values to read at this step? Do I read the PRB values or the MPos values? Does it matter?

On the SKR, the display will show the X, Y & Z positions. After setting Z=0 at XMin, and then probing again at ZMax (without re-setting Z=(n)), the display should read a value close to (but seldom equal to) 0

These pictures show the position after Homing all three axis, but before probing (Z=200)

In Marlin Mode:

In Touch Mode:

With a Jackpot, I believe that the GUI will show the position of all 3 axis (not sure, I don’t have a Jackpot)

Thanks @Bartman. I should have been more specific because I do have a Jackpot.

1 Like

I’ve done this a bunch of times with the Jackpot but I’m blanking a bit. I think you just want to look at the Z position in the working coordinates. I can check later.

1 Like

Well, for Z leveling with FluidNC (and really anything), you could use either working or machine coordinates. I typically use machine coordinates. If you used working coordinates, depending on how you probed, it could zero those.

In WebUI v2, that’s Zm.

In WebUI v3, that Mpos Z.

The instructions above use working coordinates. So, you probe and zero Z at X min, and then measure at X max to get the difference without re-zeroing. I typically probe in each spot 3 times to take an average so that process doesn’t quite work.

I’m hesitant to say this but I have some automated ways of doing this for FluidNC but they’re half baked. I had a gcode script to do the whole thing and also an extension. I should revisit. It’s one of those things you do so infrequently and it’s not that difficult to do manually that I’m not sure how much value they have.

2 Likes

Got it, thanks. I haven’t been brave enough to install WebUI 3 yet, but I can see the value just fine in WebUI 2.

1 Like

Is this about adjusting belt tension? Or moving whole belt-holding block? My difference in diagonals is 7mm and documentation says to minimise it before changing M666 value.

Can anyone explain, please?

The purpose of adjusting the Y stops is to.square the machine, such thst the X axis is as close to 90° from the Y axis as possible. By changing the start points on either end of the X axis we can ensure that cuts made on the X axis are perpendicular to cuts along the Y axis.

The Y axis follows the Y rail, but the X axis follows the Y endstops on either side. If these are not square to the Y rail, then they need adjustment.

3 Likes

@SupraGuy nailed the answer. By moving the endstop, you are in effect moving one end of the X axis (gantry) in order to make it perpendicular to the Y axis.

In this case it makes sense to reposition one of the Y endstops, rather than try to compensate for such a large difference using the offset.

In the drawing, the endstop at XMax YMin is too far to the right (or the endstop at XMin YMin is too far to the left) and the result is that D1 is 7mm longer than D2.

By repositioning one of the endstops (XMax to the left or XMin to the right), you are bringing the angle closer to 90 degrees, which will result in D1 being closer in length to D2.

If the difference between D1 and D2 is only a couple of mm, then the M666 method is appropriate, as it is fairly difficult to make such fine adjustments by repositioning the endstop hold down screws (which is why I used an adjustment screw on the edges of my endstops).

BTW, you don’t want to increase or decrease belt tension when you do this, so you may need to go back and check that after moving the endstops

Hope that answer isn’t too confusing…

2 Likes

Thank you for great explanation, both! Now I understand it fully and will square it today :slight_smile:

@Bartman do you mind linking the endstops with adjustment you use?

1 Like

My whole system is a heavily modified LR3, so it probably won’t work for you. But I think that the stock LR4 endstops come with a hole that you can insert a threaded M3 screw. If not, you may be able to modify it in Fusion or some other CAD program.

1 Like