X / y dimensions of prints differ

Hi,
I noticed slight differences in the dimension of prints:
Y: should be 100mm, reads 99,93 → OK for me

X: should be 100mm, reads 99,78 → not OK, should be closer to Y Dimension at least

Problem scales with larger prints, and is independent from material (green is PLA, black is PETG).

Also X dimension, desired size should be 150mm:

Any ideas how to fix that?
I always dialed in my other printers via e-steps calibration, but what can I do on the X1?

Thanks!

1 Like

Those numbers are really quite good for a PLA print. If you are having problems with exact fit, look at the X-Y compensation settings in Bambu Studio.

1 Like

Hi,
Thanks!

I am used to +/- 0,05 on 100mm on Anycubic i3 mega and Vyper after estep calibration for PLA. I admit, we are looking at completely different printing speeds of course…

I will try X/Y compensation, but that will correct both equally in x and y, right??
So the difference between x and y accuracy will stay.

Hi,

short update on this topic:
I worked with the suggested X/Y compensation, but did not get the results I was hoping for.
The outer most contour is enlarged/reduced in size, but any structure on the inside just stays the same.

The only thing that worked was changing the overall scaling in X/Y dimension. in my case +1%.
→ step by step approach (if needed + test prints) by drvenipatuljak:

It also improved the correctness of hole sizes for me :slight_smile:

For me, this approach shows me, that E-steps calibration is def. something that needs to be allowed for the printer.

Thanks!

One would think that a multi axis machines would need to be fully calibrated, and continue to calibrate-able over time. In manufacturing the calibration and the related re-calibration cycle is determined for all the designer’s and manufacturing machines in order to identify and set the documented specifications. These internal processes need to be accessible to the end user too. So that the end users can maintain the machine within specification. Not sure how a manufacturer could accomplish customer support otherwise?

At this point probably i suffer from buyer blues, but my new X1 printer is disappointing:
-False error messages, including disassemble of the extruder to find no clogging in it;
-About 10 times executing self calibration on new printer to get auto leveling to work;

  • And finally and most disappointing: a supposed 33 mm dia tube comes out 30 mm only.
    If and when is expected a factory firmware update to size accuracy ?

You can correct this failure.
I have publicated the solution for you on my website.
Please follow: https://kndiag.com/bambulab-3d.html

Yours faithfully,
Kamil Niedzielski

1 Like

That’s interesting!
Would you mind going a little bit more into detail?
What is the source? Is this info from bambu labs via support ticket?
So many questions… :wink:
Thanks!

Yes this od from Bambu:)
Very simple and easy.
It od also marlin official gcode call babysteps , nothing special at all. Normal procedure

Cool. Thanks.
M290 aka babystepping is a totally different animal. It’s just a move that happens physically but isn’t registered as a position change in software. Bambu even uses it in its regular start code.

Would you mind sharing the original message from bambu?

(Not because the command isn’t clear but rather for more context)

thanks for the post. Does this also work with Z?

Before jumping onto modified G-Code…
Dimension getting worse with the size of the model DO indicate some stepping issue…
And of course the solution for this would be to adjust the stepping accordingly…
Reality is that for both axis the same motor stepping, the same pulleys, the same everything is used.
So WHY would one axis require a different stepping ?? :wink:

A model can shrink differently in one direction if things like airflow or such affect it.
But that is rather unlikely if the issues is constant and happens with different filaments the same way.
Accuracy with 3D printer is VERY different to the early days…
Some user make a fuss about a difference of 0.1m over a length of 20 or more cm…
Some users make an even bigger fuzz over the same length for a difference of 0.03mm…

Quick reality check…
Measuring dimensional accuracy using the SHORTEST possible side of a model is not really accurate at all…
Especially when these ‘crosses’ are printed as big as possible…
Why not you ask?
Well, it leaves one vital factor out - how parallel OR NOT your Y axis is…
On top of that it also means unless your filament is PROPERLY calibrated your results might be more off on one axis because the filament is squished out slightly different.
Try five small calibration prints in one go, one in the centre, one in each corner of the bed.
Do they all show the SAME measured differences ?

There is a model for the X1 I think that uses clips on the two rods and two triangular rulers going into them.
With that it is very easy to confirm whether or not your two y-axis rods are parallel.
With the same trick and model you also check if the print head move TRUE on the X-axis.
If one side is out more than the other you can add a shim (like a few layers of sticky tape) on the side that is behind - at the back where it bumps on to claim to get parallel :wink:

Let’s say your X-axis is FAR from being equal on both ends…
Then your two Y-axis rods probably would not be fully parallel either.
Trying to shim the ends of the Y-axis would then still make the X-axis fit but you would be unable to get true 90 degree angle in in your models…
As unlikely this case might be it happened…
Usually as a result transport or things bumping into the machine, resulting the the housing getting out of alignment.
It is possible to address this but not something for the faint of heart…

You are possibly overthinking things here. To make M292.2 generic across all machines you simply just have to do a number substitution. The command interpreter would capture all things related to X and Y and augment them with the adjusted amounts. So X+x_scale Y+y_scale.

This would pose zero adjustments to the physical skew of the printer but it could impose a skew on the printed part.

@kamil.niedzielski

Thanks for this information. I tested it on my X1C applying the M290.2 gcode at the end of the machine start gcode. Here are my results:

image

So it does correct the scaling of my XY axes.
The correction isn’t persistent. It’s not retained when I power cycle the printer (I did apply M500 after the M290.2 gcode). Bambu have confirmed that there’s a bug in M500 that they hope to fix in the next version of their firmware.
I would also caution that M290.2 can cause collisions when the machine end gcode is running. The print head hits the end stops faster than it normally does.

Could you share the advice you got from Bambu about running gcode M290.2 ?

Yes the problem with m500 consistent is still visible.
But remember that you can only put the first part od this code without using m500 and leave this in machine profile settings. I think it is safer also.
In the message from Bambu there was nothing more. Thay also wrote that this can be done only for fine tuning because it change the whole coordination system of the printer. What do you mean by heating end stops. You mean end stops od the whole Axis when the printhead move to the very end of the ax? And what happened?
I did not observe that the sound of hitting od bigger or something else

Ohhhh I understand where You have made Your mistake. You have made this for a big model. And Your new adjustments are quite big. Look at this you have 78.66 and you want 80. This is very big amount for fdm printer. So first of all you should use PLA. Than print small model 30x30x30 and measure. If you observe do big difference than you should first check another things like calibrations belts etc. If you receive something like 29.86 then you can make correction by my method. Your problem od bigger model van be also from shrinkage too. So you can not make probes on big model. Using smaller model provide smaller shrinkage. So please make this as I described on my instruction. You should not use my method to correct up to 1.5mm this is very much for fdm and this method. This method you should use only for fine tuning like up to 0.8mm because it change the whole coordinate system

I updated the instructions on the website. I have written more detailed instructions.
Please follow carefully the instructions.
Do not print larger models. Only cube 30x30x30.
Do not make fine tuning for the values higher than 0.7mm.
You do not have to use M500 command.
You can leave the M290.2 command in the printer profile.

It would be much appreciated - could you?

Yes of course,
But as I said before there only few information.
More information from my tests of use this method I have publicated on my website. One hour ago I have made updated instruction.

Here you are:
Hello Kamil,
Thank you for your patience.
I’ve received the details from the R&D team and I can provide you with some suggestions.

First, please note that there are some cautions to be aware of:

  1. This zooms in on the entire coordinate system and is only suitable for fine-tuning.
  2. Please don’t use this method to zoom in too large a magnification.
  3. Please try it on a case-by-case basis.

You can use in Bambu Studio settings the M290.2 command.

First, print the model using the default parameters and then measure the actual dimensions.

Example:
X = 29.84
Y = 29.91
Then zoomed in the X and Y directions by the corresponding magnification:
X = 30/29.84
Y = 30/29.91
Finally, save using M500.

The original publication:


Shrinkage is linear, so is the influence of M290.2. So it doesn’t really matter if you test with a small or big test print.

Issue I see is more general and disruptive - Using a test print to verify/adjust positional accuracy is a bad idea.
I’d rather measure the movements directly. And yes, it’s a bit involved to do this on these machines.

Agree. Actually I would expect it to be unnecessary if bambus desk calculator isn’t broken and the belts / pulleys aren’t bottom of the barrel.