X/Y calibration problem (M290.2 function)

Hello everyone,

I’m writing to you because I’m having problems with the X/Y adjustment on the bambulab X1C (V1.08.05.00) that I use at work.

To summarise, I’m trying to print a 20x20x20mm calibration cube, and it comes out in X/Y at 19.70. I want to make my adjustment using the following function in the machine’s start-up gcode:

M290.2 X1.015 Y1.015

1.015 = 20 / 19.70

I put this function at the end of my machine startup gcode, but it doesn’t change anything. I’ve also tried adding “M500” after it to register the values, but no difference either.

I’m using bambustudio (V1.10.2.76) on a virtual machine.

Would you have any idea where the problem comes from?

I made these adjustments at home on my P1S and it worked perfectly.

Screenshot_22
Will it help you?

2 Likes

Thanks, i am going to try that !

But still wondering why does the M290.2 commande doesn’t work.

Think about calibrating your filament shrink different filament shrinks differently.

Yeah, thanks for the advice !

Update : I tried a 99.2% shrinking on my black ABS and it worked perfectly fine.

If anybody else have an idea on why does the M290.2 doesn’t work, please let us know !

I Think that it’s a better solution cause you can manage the shrinking on X,Y and Z axis with one single command.

Every firmware has its own set of GCode commands. Most share a lot of commands but I think there aren’t any two that have the same set. Apparently, BambuLab firmware doesn’t have the GCode you tried.

In my experience, using the shrinkage value in the filament profile is the better solution. That is because every material shrinks by a different percentage. When you adjust the scaling in the firmware, you will correct only for the one filament you tried with but a different material would need another value. So the filament profile is exactly the right place for the correction in my opinion.

btw, I would avoid those 20mm calibration cubes. Here is an excellent video explaining why:
https://youtu.be/H7OsnMLDIMw?si=DiV4Ejka2_JLbEQX

Instead I propose to either use the califlower linked in the video or my tool: https://makerworld.com/en/models/803990-shrinkingtest-v4-1-by-alex_vg#profileId-744301

I didn’t find the “.2” variant on marlins docs, you sure that shouldnt just be M290?

https://reprap.org/wiki/G-code#M290:_Babystepping

In fact, i am sure that this commande does exist cause i applied it on my personnal P1S and it worked perfectly fine ! (Correction of a .4 offset on a 25mm cube).

Thanks for the answer !

I would say that theoretically yes, but in facts shrinkage don’t allow me to correct X and Y axis separatly.

I completely agree about the calbiration cube, but it was simply the beggining of the process.

Are X and Y significantly different? That would be a sign that the gantry might be out of square, which would render any calibration completely useless when you are after dimensional accuracy. In this thread https://forum.bambulab.com/t/skew-compensation-in-the-bambu-x1c-firmware/67661, some users investigated that issue in detail and gave instructions how to identify and correct skew.

If I understand it correctly, CoreXY can never have different esteps in X and Y. Both, movements in X and Y are done by turning both stepper motors at the same time. In one case they turn in opposite directions, in the other case in the same direction. When only one stepper motor turns, then the head moves diagonally. So if really one of the belts or a pully is not correct, then it should affect both X and Y at the same time.
In my experience, the kinematics of most printers are very precise, aligning almost perfectly with the calculated esteps and there is really no need to adjust the scaling.

When you say that you had 0.4mm offset on a 25mm cube, that would be a deviation of 1.6% that you corrected with the M290. Are you sure, that those 0.4mm were completely due to wrong scaling?
Let’s assume, your print was slightly underextruded, so that outer walls are set back by 0.1mm. When you measure the outside of the cube, that means the cube is 0.2mm short due to underextrusion and only 0.2mm short due to scaling = 0.8%. (which is still far more than I have measured for PLA and PETG. Was that a ABS print?).
If you scale by 1.6% anyway and now print a 200mm long part, due to 0.8% over scaling, the resulting part would suddenly be 1.4mm too long! Far worse than your initial deviation of 0.4mm.

Have you tested longer parts on your adjusted P1S? I would be really surprised if they come out correct. It is almost impossible to create a good compensation based on calibration cubes. All that you typically achieve is, that similar size parts come out better then.

Your refelexion is very interisting ! To be honest, X and Y mesures are off of 0.05 so it does work on the X1C at my office.

About the 0.4mm, i made a calibration of the filament right before and visually it seems verry well. But my point was not here, my real concern is about why does it work on my P1S at home and not on our X1C at work ??

At home i don’t really mind if it’s dimensionnaly perfect, but at my work this is far more important. So i made few tests at home only to compare.

The firmware for the different Bambu printers is not identical. Maybe P1S supports it and X1C being older doesn’t?
As far as I know, the GCodes for skew correction is supported by only a few printers, so there are differences.