Dimensionally Inaccurate Parts Being Produced by X1C

Sorry for the harsh words, but adjusting shrinkage in Orca to make a 30mm cube the right size is a terrible idea. You should use a model that is as big as you can print and measure to reduce influence from other errors, especially over/under extrusion and measurement errors. E.g. if your measurement of the cube is off by 0,03mm (which is not as easy as it seems to achieve reliably), then a 250mm print will be off by 0,25mm.

The size of the cube does not matter in this case, I meant matching the axle and bearing sockets, by the way, this model shows a problem. After printing, the cube is 30x30mm, but the axis and socket are too small

That’s precisely what the original poster described and documented in great detail. Cylindrical features on the xy-plane are about 2/10mm off from square features. There is no way to compensate for this in the slicer. Either one or the other will be off.

1 Like

Does any meaningful improvement in this situation result from enabling “Precise Walls” and setting “Inner/Outer/Inner” as the wall printing order (and consequently setting a minimum of 3 wall loops to accomplish that)? The in-line documentation seems to imply there would be some benefit.

Normally I would just try-it and see, but at the moment my extruder is jammed (first time ever), so I’ve got that lovely repair ahead of me.

I tried all that - precise wall + outer inner definitely is the way to go but the issue that remains is the toolpath deviations depending on the features ‘shape’.

I also tried different acceleration, jerk, speed. Even slowing things down to a crawl with no success. Also tried to guestimate potential commands in the initialization code hoping to turn off input shaping. All to no avail.

I’m pretty sure this is all a firmware issue. The prints have tremendous repeatability and layers on the same xy toolpath are stacked with no deviations. Still depending on the ‘shape’ on the xy plane dimensions randomly change (most notably square vs round).

To me the symptoms clearly point to a massively generous path smoothing tolerance in favor of ‘cosmetically nice’ prints.

Edit: In case anybody is doubting the slicer output - I also checked the gcode regarding cylindrical vs. square and the toolpath is spot on down to the third decimal

3 Likes

It seems, or I may have missed it, that no one is adding skewness correction within the firmware and is instead using the slicer settings for calibration.
Please follow the procedure below if you still have problems and are willing to implement the official skewness correction into the printer firmware.
I assume that everyone interested in this thread is comfortable changing the printer start g-code. If not, let me know, and I will provide further details.

In summary, the G-code:
M1005 [Xn] [Yn]
M500

STL link: Bambulab Skewness Correction - Google Drive (temporary link - not controlled by me).
@BambuLab, please add the file to the BambuLab repository to ensure it isn’t lost.

Source: https://www.reddit.com/r/BambuLab/comments/1adh0bn/xy_skew_calibrationfix/

More details (e.g. revert firmware correction): Skew compensation in the Bambu X1C Firmware - #15 by klomar

4 Likes

I’m well aware. Things are square on my ‘specimen’.
I hope bambu spits out more ‘secret commands’ like that one…
@BambuLab: Anybody reading?

1 Like

Question (TLDR):

Has anyone used a dial indicator to verify that the print head is moving the proper distance? This would eliminate any discrepancies with filament shrinkage, etc.

On my old Ender 3 S1Pro, I had a setup for a dial indicator to measure distance traveled and used math to calculate the proper steps for the X, Y, Z axis. I’m not sure how to mount a dial indicator on a core XY to figure it out.

Not yet but working on it…
stuff

Unfortunately a proper measurement on this thing isn’t easy. My approach is to replace the extruder with a dial test indicator and use a gauge block stack on the bed as reference.

1 Like

This has been my experience. Precise wall and Wall Order don’t do much to change dimensions, they seem to effect finish and wall quality. Here’s a discussion about the feature.

This is extremely useful and should be freely available on the wiki. Thank you. After going a long series of corrections to the printer I used this and got 80.00X and 79.78Y (before compensation). Not great, not terrible. This compensation you posted worked well and was within 0.01 between measurements. For now I’ll use the slicer based skew correction, but eventually this will require gantry squaring work.

Quick update on my X1C. I popped open the printer and found a few issues:

  • One of the bearings on the linear rail was slightly out of alignment. I gently pressed it back into place.
  • Every single belt was riding entirely on one side of its tensioner and one belt was significantly looser than the other. I re-tensioned and centered the belts.
  • While watching a print I could see the bed rising and falling on the same layer as part of the bed leveling compensation. The bed was so out of level that I could see a tilt with the naked eye. I ran the bed tramming procedure and used a feeler gauge to set things right.

Now that the machine has been given a mechanical tune up, I’m seeing shrinkage numbers reduce from ~0.5% to <0.2% which is inline with what others have posted. Frankly I think this is completely unacceptable quality control but am happy enough with the accuracy to put the printer to work.

4 Likes

Actually when chasing down 1/10mm on the perimeter they are relevant. Precise wall basically eliminates the built in overlap between the inner and outer wall that would otherwise be half a layer height leading to a partial ‘outwards squeeze’.

But in the context of the bigger issue - random deviation depending on the toolpath - indeed it doesn’t matter.

2 Likes

My first machine (that I returned) had so much bearing chatter on the left side that it wore off the finish on the smooth rod regardless of my efforts to clean and oil the rod/bearings. My second machine has bearing chatter on the right side, but not as bad as the first printer I had. I aligned the belt pulleys, squared them up, but it still has chatter at higher speeds, especially on circular prints… I also found metal shavings in the right side bearing on the second day of use when I noticed the chatter and went to clean/oil the rods.

bearing chatter marks

1 Like

For most of us plebs dimensional accuracy is fine. This is a mass produced retail machine designed to be operated by the general public with relative ease. It has to print a variety of materials with very basic calibration, basically slap a spool in and select the material full, send it! It’s a great printer that copes pretty well with complex prints and doesn’t look too out of place in the office or the craft room. I’d say they read the assignment.

2 Likes

One of the advertised benefits of the X1+ alternate firmware is that it will show you all the bed probe measurements, so then you’ll know just how far out of level it really is. Alternatively, if you manage to hook up a dial indicator to the printhead (similar to Nebur 's illustration above) as it collects the array of offset measurements, then you could find out that way. For that approach, you might want to use a digital dial indicator that can emit telemetry or logs to a file as the data gets collected.

On a different topic: there’s a guy named Nero on youtube who does a lot of voron and core-xy builds, and he talks a lot about all things related to those kinds of prints as he’s doing the builds. Purely by chance I was listening when I heard him mention that skewing is a common problem in core-xy printers because the belts are under tension, which results in a racking of the frame. If Nero is right in that assessment and if that’s one of the main root causes of the skewing, then I’m guessing it’s going to be more challenging to correct (maybe the fix involves making the frame a lot more sturdy?) than if it were just a simple misalignment without the accompanying belt tension. Anyone have any thoughts on that?

1 Like

So I’ve played with this for a huge amount of time, doing exactly what you’ve shown here in clear detail. Simply printing the “Orca Tolerance” test model via orcaslicer. When it comes to “square” holes the slicer is only able to read such as a “Contour” which it is indefinitely but doesn’t factor in the correct way of compensating the contour either.

So basically it’s 2 features tied into 1 versus the “XY Contour” simply controlling the outside perimeters and the “XY Hole” controlling inside perimeters.

When it comes to CNC machining all cutting tools such as endmills that rough cut a square block of aluminum or such. Will have compensation factor in the form of either “Cutter - tool” comp. or “based on actual tool diameter”. Being as printing only has [1] tool being the nozzle it shouldn’t have an issue with being compensated. So what I’m noticing is the issue lies with the slicers not having the correct comp. implemented or the fact it’s not coded out to perform the way it should be which would implement “Skew” into the X-Y as well not only 2 axis.

I’ve wanted to sit with this more and do some more digging into the compiled source code because it seems to not compensate squares/or polygons on ID’s as a hole so it’ll follow only contour comp. Very frustrating indeed but I do know it can be done correctly just have to figure out what the moves are when performing the arc’s and linear moves. Right now the comps are only adjusting line widths , not positive if its using nozzle centerline or if toolhead center would be better…

1 Like

I have printed and measured the linked cube, but I reduced Z size by 50%. Don’t see any gain in the height. I used ColorFabb PLA regrind. In the material profile, shrinkage is compensated (99,74%). Any other geometric compensation values are 0. First test is with default speeds (300 inner wall, 200 outer wall, …).

I took several measurements of each dimension:

Summary:

  • cube dimension are almost perfect.
  • the post is smaller by 0,08mm on average.
  • the hole is smaller by 0,16mm on average.

Then i realized, that speed might have an influence so printed a second sample with all speeds at 70 mm/s:

Summary:

  • cube dimension are almost perfect again.
  • the post is smaller by 0,10mm on average.
  • the hole is smaller by 0,12mm on average.

My takeaway:

  • the shrinkage compensation in OrcaSlicer seems to work great (didn’t check it yet :slight_smile: ) So good, that surface quality, corner quality, surface features etc. dominate deviations in my opinion.
  • the hole is more accurate than I am used to from other printers. I’m used to holes that are undersized by ~ 0,2mm typically.
  • the post indeed is a little bit undersized. I will repeat that test on a Prusa mini and an Ultimaker S5 tomorrow at work.
  • I have seen far worse deviations from the ideal model than this in much more expensive printers.
  • For high precision details, I needed mechanical post processing with my old printers and I need it with this printer. FDM is not a high precision manufacturing method.
  • I feel confirmed, that introducing an offset based on curvature in slicers could further improve precision of 3D printed parts. It might be the better alternative to X-Y hole compensation and could also improve outside rounded shapes.
  • Until then, I don’t have any pain to respect shortcomings of the manufacturing method in the design. Those are only very few anyway compared to many other manufacturing methods that I have to do with.

I think, the main incentive for the BambuLab printers are

  • high speed while maintaining quality,
  • AMS that works very well,
  • ability to print technical materials,
  • state of the art feature set including runout sensor, bed leveling and homing with load cell, good Z gantry (why the hell was two rods and a lead screw at the back state of the art for so long?), CoreXY
  • a bunch of innovative candies like Lidar, build plate recognition, seamless cloud syncing between printer and different computers, and some more.

Even if accuracy was worse than other printers (which I still don’t see), I would buy it again in a blink, as long as there is a way to handle it. That means, the printer should do what it does consistently. I feel this absolutely the case. Every tool has some weaknesses that you have to overcome.
The manual adjustment in the design is really no big deal. For most of my technical designs, I do test prints of some selected features anyway, mainly to correct my design mistakes before the full print :wink: At that occasion, I also check critical dimensions and adjust them for the next run.

So I still don’t understand, where the expectation of a certain accuracy is coming from and consequently causes so much upset. It is not like BambuLab are violating a specification or industry standard.

3 Likes

A dial test indicator doesn’t have enough travel to get proper measurements. A dial indicator is required so you can enough travel to see if 10mm of movement is actually 10mm of movement.

The one difficulty I realized is that you have to measure the diagonal movements to isolate the X motor and the Y motor to verify which one is has improper steps/mm. Because a movement from “Left to right” on the print bed, is a combined movement of both motors in a Core XY setup. A bed slinger X is X, Y is Y, Z is Z.

Now for something interesting… Before I purchased my X1C, I contacted the Pre-Sales department with the following:

I have a question about accuracy of the X, Y, Z axis.

I know in Marlin Firmware; one is able to fine tune the stepper motor steps, and BACKLASH to ensure dimensional accuracy of printed engineering parts. I am wondering if the X1C (or any of your printers) in its firmware and in the calibration process can calculate the stepper motor steps in ALL axes (X, Y, Z), and to what tolerance? Also, can backlash (again in all axes X, Y, Z) be calculated in the calibration process and enabled?

If it isn’t done automatically, can the end user calculate the steps (using a dial indicator and math), and backlash (using a dial or dial test indicator) and enable such features.

Also, to what tolerances (±0.1, ±0.01, ±0.001mm) can be achieved on each axis?

To which the reply was:

Our firmware does calculate the stepper motor steps in all axes and backlash is also calculated and accounted for. Unfortunately, due to the closed nature of the firmware, we are unable to provide the measured tolerances or how the calculations are derived.

There is no facility for manual calibration of these parts, it is done on the printer automatically.

So, what one thinks of this, it’s up to you.

I think there’s a little irony complaining about tolerances when a lot of these people are using a set of vernier calipers bought off amazon to measure. I mean I could breath on these things and get .5mm variance :laughing:

2 Likes

Please, let us not throw cold water on this enterprise, especially now that it’s gaining momentum. The way I see it, these guys are doing the non-trivial work of solving the problem, and if they succeed the potential benefits will accrue to everybody. You may not need that capability yourself right now, but someday you might, and then you’ll be glad for it.

4 Likes

Vary true.

But some of us do have some decent calipers that do read properly :wink:

3 Likes