Dimensional accuracy problem

Hi everyone. I have problem with my ender 3 v2 with dimensional accuracy.

When I print an object X axis always smaller than Y axis in dimension.

For example when try printing 30mm square with fillets at corners X axis around 29.75,Y axis around 29.95.

I have no problem with my Y axis only in x axis. I checked printers frame all looks good and square, I could not find any skew.

My belts are tightened at 9.5N with 76hz in X axis, 91hz in Y axis.

Also when I check movement without printing X axis seems to move accurately. Would you help me please. I am searching this problem about a couple of days but could not find any solution. I did not print skew compansation print yet, I prefer fixing it mechanicaly first if I can. I tried higher microstep, lower microstep, interpolation on/off, belts loose or tight, different motor with different pulley, lower or higher current, fans on/ off and tried different slicer.

I can compansate it when if I change rotation distance but Probably deviation will be much higher in big prints. I just want to measure equal both x and y axis dont expecting to be perfectly 30mm because of shrinkage

Flow is calibrated also I am uploading my config file and a couple of photos of my printer.

Update: Tried new belt on x axis but results are same.

printer.cfg (12.9 KB)

1 Like

Update2: Currently belts are 84hz in x axis, 100hz on y axis, results are same

Update3: I printed skew calibration object and measured dimensions.

Lenghts are;

ac 141,10

bd 141,21

ad 99,63

As I thought there is no skew on printer. I reprinted my cube, sadly dimensions are same. I am happy and sad same time :smiley: there is no skew but I could not solve my problem yet. I am going to upload photos and videos my skew calibration object. Also I will adjust steps per mm values with using skew object so I will measure 100mm 100mm distance then update this post.

I would say your dimensions are within expected parameters. Dimensional accuracy is heavily influenced by the mechanical precision of your printer:

  • Quality of the belt
  • Different belt length
  • Run-out of the pulleys
  • etc

If you print a larger object or print the same object in a different location of your bed you will most likely find other dimensional deviations.
My personal opinion: All these images in the WWW, showing a test cube and a caliper which reads 20.000000 mm are rigged. Or to put it more politely: Exactly this print in exactly this location and exactly this dimension shows accurate results.

To even add to this:

  • Different materials have different shrinkage
  • Different materials have different properties with respect to the printed direction and even type of infill

My conclusion:

  • You will never reach dimension accuracy down to the tenth regardless of:
    • Dimensions of the object
    • Bed location
    • Material
    • Slicing properties
  • If you need a highly accurate print, you will need to dial it in for every geometry / material.
  • Use the slicers options, e.g. scaling, shrinkage compensation etc
  • Do not mess with rotation_distance, it will fit in the one location and throw you off in another

Very true, you need to better characterize the error (it it relative or absolute, dependent on the location in the print volume?) before taking any corrective action.
For example, on enders 3, the X axis’s belt is not perfectly straight which causes a bit of shrinkage close to the extremum. This can’t (and shouldn’t) be corrected with rotation_distance.

Vector 3D just did a calibration guide with a novel method: https://www.youtube.com/watch?v=dbWAhb40kG4
Essentially, It’s a skew calibration for Cartesian printers.

Thank you for your suggestions. I know I should not change my rotation distance, 99.99 percent my printer is not accurate compared to stepper motor’s manufacturer or belt manufacturers. Probably there is e problem mechanical but I could not find it. I am printing 150x150 mm object now so I am going to see how rotation distance will affect accuracy depend on print size. If it would be better compared to stock values I will leave it and test it for a bit long time.

About different materials. I am printing ABS also so shrink rates are different per material also maybe per spool. But my inaccuracy increasing if size is increase. I am assuming deviation will be different depending to object size but X Y dimension differency increasing if object size would be bigger.

Also I read your past post about similar topics to this you are right. I am just testing know but if it will be better I am gonna be honest I will leave the value as changed. I can not find where is the problem. My prediction is not %100 accuracy, close deviation from x y axis enough for me I can correct rest with slicer.

Again thank both of you

Update4: After I calculated new step value I re printed cube again It came 29,86 on X axis, 29,91 on Y axis It is really close now. But I will design a L shape object 140x140mm for checking and re calculating again if it is necessary. I will update post when I did it. BTW Skew profile removed before reprint cube

Update5: I designed an object with 13 walls per axis for measure, I measured all walls 3 times than took and average of them and calculated rotation distance per wall. Than I took average of all rotation distance values. Results are better now (with 0.05mm difference I measured wall thicknes per axis there is already 0,04mm difference on thicknesses ) and I’m gonna leave it. You can see excell file in pictures if you want. I wont upload my object and excell file because I don’t want to mislead someone.

Two quick things for your consideration @ruredi87:

  1. You should NEVER change X/Y, A/B, Z, etc. rotation_distance by trying to “calibrate” it on Cartesian or CoreXY, etc. printers. These values are fixed and are determined by the mechanical design of the printer. As @Sineos already mentioned, any attempts at “calibrating” these inconsistencies are futile and will create issues elsewhere. You can minimize dimensional inconsistencies by using high quality components, like Gates belts and pulleys, and by ensuring your printer frame and motion system is accurately assembled and adjusted to be square, straight, parallel, etc. You have already done some of this.

  2. The Creality X-trolley belt attachment is laughable and results in significant changes to belt tension between the travel extremes and the travel mid-point. I devised a very simple, but somewhat tedious to install method to eliminate this issue. You just need two small diameter pins and some careful assembly effort. See the attached photo for my belt installation method. Note that the belt loops move inside the X gantry extrusion slot, so they have to be very carefully adjusted to avoid rub. However, this works PERFECTLY. I am using Gates belts and Mellow or Gates pulleys on my CR-10S Pro.

I haven’t suggested that, quite the opposite. I thought that Sineos made that pretty clear already.

I’m sorry, I obviously confused you with the author (@ruredi87) and what he did to obtain the most recent results.

If you are interested in my belt attachment / routing solution, here is what it looks like after installation:

1 Like

It seems that you are confusing me with the OP @ruredi87 :sweat_smile:

Thanks for the belt path tip, I would have thought of folding the belt that way.
Interestingly, I was planning to build a custom E plate that protrudes inside the extrusion groves where it attaches to the belt. But I found it difficult to get tolerance good enough to avoid friction. as you said, it’s very tight in there.
You found a way to achieve that with little modification to the sock hardware.

Indeed, that’s what I get for reading across three different devices and responding on a fourth device. I edited my earlier post to reflect that LOL.

Re. belt routing, I thought of many different ways of doing this, including a custom machined plate like you. But the required tolerances, as you said, are very tight. I then thought of some form of a ramp or step to install, but retaining such a feature under belt tension would be impossible.

Ultimately I arrived at the shown installation, having done some measurements and calculations to determine the required pin diameter for reasonably parallel belt alignment.

This worked very well on my stock CR-10S Pro carriage for hundreds of print hours and now it’s working very well with my custom CrOD toolhead that uses Orbiter v2, Phaetus Dragon & Ender style carriage.

It is really clever idea. I never thought about and it may fix the problem.

If you try this, just be aware that the installation of the carriage is tricky - the belt/pin assembly must be inserted into the lower extrusion slot first. This requires the two screws holding the upper rollers to be quite loose. It’s fiddly, but once installed it works very well.

The other note is to make sure that you pull quite hard on the belt loop with the pin, to make sure it sits flush against the slot, before you route the rest of the belt over the loop.

The slot may also need to be slightly widened to fit two thicknesses of the belt through it rather than just one. I did not need to do this on my CR-10S Pro carriage, but I did need to widen it a little bit on the Mellow carriage that I am currently using. This is easy to do by hand with a small file because the aluminum is quite soft.

I am sorry, I was away from my computer. I will try thank you so much

Update6. I knew measuring each axis and taking avg was wrong. After I changed rotation distance deviation from each axis changed, X axis were a bit close to real value but when I measure without printing It was noticable it is moving a bit from real move. Because I did not include shrinkage, so I seaarhed a bit on internet and found some guy. His method is more scientific than taking all avg :smiley: Here is the link Calibration cross by lukeskymuh - Thingiverse

After I did it with stock RD values test was showing x axis deviation is 0.3ishmm Y axis was different but I also noticed there was different repetitive inaccuracy on Y axis. The reason was pulley, Before I change it was 20t push fit pulley, I changed it to 16t pulley because I had vertical lines problem on Y axis. Whatever, with 16t you have to mount it with 2 screws but with this mount type pulley is not perfectly centered so it is turning with slightly offset with motor shaft. That was causing to belt more stretch and more loosenes in periodic and causing inauccuracy. I loosened belt tension to 91hz on y, 76hz on X, it helped a bit but there is still mechanical problem.(I used eddietheengineer’s excell file thanks to him) If someone reads it later I recommend push fit pulleys or don’t use cheap pulleys like me (The X axis’s problem is not related to Y BTW)

So I recommend to try axis calibration using thingiverse link above if you can’t correct mechanical problem, dimensions are much close to each other than before but it is still wrong to calibrate RD using cheap ±0.01 calipers.

1 Like

So we are back at “You can’t cheat away mechanical topics with rotation_distance”?

1 Like

Kind of. You are right about prints will be different size on different location. Printer’s skew highly affecting it but if you are printing always center of bed I would say you can calibrate RD but It does not change we have mechanical problem on axis. It can be pulley, belt, skew etc. At my tests RD calibration with thingiverse file definetly helped my problem but it is not %100 accurate. It is accurate maximum my calipers accuracy and my hand pressure. There is still error, just not much before. When I print big objects difference between axes were increasing. I uploaded new excell file’s screenshots on my google photos if someone wants to check it.

Hi, is this x and y axis calibration problem only related to klipper ? With the stock firmware of the printer I corrected the steps/mm and I manage to get exact dimensions.

Correcting such issues with e-steps / rotation_distance etc. is wrong with Klipper as it is with any other firmware. Such issues are non linear and not related to software but in almost all cases to deficits in the mechanics.


Yes of course, the concept is clear but it is applicable only in an ideal world because if we take into account the various tolerances for example of the belt or the pulley, we will never have an exact dimension, so we have to surrender to the idea of having dimensionally wrong parts. Instead I believe that making small adjustments brings nothing but benefits.