Welcome! Log In Create A New Profile

Advanced

Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.

Posted by LMF5000 
Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 18, 2018 12:10PM
Greetings! I've been lurking around the RepRap forums since buying my first printer almost a year ago, but this is my first ever post here grinning smiley.

I have an Anycubic Kossel Linear Plus to which I've flashed Marlin 1.1.9. I've ironed out most of the bugs over the months, but I'm having some trouble getting the XY dimensions to be perfect.

I've done 3 calibration iterations as follows:
- printing the 75mm calibration hexagon from [www.thingiverse.com]
- feeding the existing trim, delta diagonal rod, radius, and actual length measurements of the printed hexagon into the spreadsheet at that link
- taking the output ("recommended values" of delta diagonal rod and trims) from the spreadsheet and putting it into Marlin
- flashing marlin with the new values
- running delta auto calibration (using mechanical z-probe that came with the kossel - probes around 20 points and typically gives SD 0.023 after 4-5 iterations)
- running auto bed level
- printing another hexagon, measuring the sides, and feeding all the new values into the spreadsheet.

Attached are the results of the three iterations I've done so far.

As you can see, my 75mm hexagon started with sides of 74.06, 74.04 and 74.57mm, and after the last iteration it's at 74.53, 74.88 and 75.15mm. So I'm still +/- 0.3mm out.

Is there a better way to get dimensionally accurate prints out of a delta printer?

I want to use this to print stands for 5mm thick plastic plates. I designed the slot to be 5mm as I knew the printed part would be slightly smaller and so the slot would grip on the sheet tightly. Sure enough, my CR-10 mini printed the slot at ~4.85mm so it gripped the sheet perfectly. On my kossel however, the stand came out with one side of the slot at 5mm, and the other side at 5.2mm - so the plastic was loose on one side and a very loose on the other confused smiley.

This is after 3 iterations of calibrating. I might do a 4th iteration tonight but I feel the rate of convergence toward acceptable accuracy is too slow. Is there a better way?

P.S. I plan to pump out as many stands as I can fit on the bed (around 3 on the 240mm kossel bed) - so scaling the part before printing wouldn't really work if the errors are not constant all across the bed.
Attachments:
open | download - First 3-4 iterations.png (82.4 KB)
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 18, 2018 02:14PM
Quote
LMF5000
Is there a better way to get dimensionally accurate prints out of a delta printer?

I don't know the calibration algorithm that your version of Marlin uses, but clearly it is either converging very slowly (unlike the least-squares calibration in RepRapFirmware, which converges very fast), or your Z probe is not giving consistent results, or the calibration algorithm is numerically unstable. I'm surprised that Marlin is trying to calibrate any rod lengths at all, let alone 3 different ones. Unless you can probe outside the triangle formed by the towers and use enough probe points, that is doomed to failure - there just isn't enough information from probing at smaller radius.

I'm sorry to be negative, but RepRapFirmware running on 32-bit electronics solved the problem of calibrating well-built delta printers three and a half years ago. It seems that other firmwares still haven't caught up; and sadly there are still delta printer kits sold using 8-bit electronics.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
I think I may have been a bit unclear with my long description. Marlin's delta auto calibration finds tower angle offsets and delta radius (and some other corrections). However the delta diagonal rod length is something I enter in the config.h file and it stays fixed - it's not affected by calibration.

What I'm doing is printing the hexagon and measuring its sides. Then I plug those measurements into the spreadsheet along with what I currently have as my diagonal rod and my delta radius, and the spreadsheet outputs new values for diagonal rod and trim. I input those new values into the config, reflash the firmware, run the auto calibration (which corrects delta radius and angular tower offsets but not diagonal rod length or length offsets) - and then print another hexagon and restart the process.
Can you suggest a suitable control board that will run the firmware you recommend? Max budget would be around $50 because I already spent quite a bit upgrading the drivers to TMC2208s.
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 18, 2018 06:45PM
You can calibrate it better than ±0.3 mm. You can achieve probably about 0.1 mm precision in the XY direction even with 8 bit electronics. But notice that precision in the XY direction depends very much also on the platform rotation and extruder calibration. If your platform rotates a bit while moving over the bed (e.g. because arms do not have the same length or because of many other reasons) then not even a 32 bit RepRapFirmware will fix your problems.

From the technical point of view, a proper calibration does not need 32 bit electronics. One can do it with an 8-bit firmware controlled over USB. But nobody bothered.

As far as I know, it not easy to calibrate with 8-bit electronics. You need a bit of math knowledge to be able to update probing results in this maxima script and run it:
[github.com]

You need a firmware which will report tower coordinates after probing. I do not know whether a current standard Marlin does it. I published a very old version (2014) of Marlin which will report it here: [github.com]

It is not user friendly. Sorry, It is probable that I'll never make it user friendly. I need it rarely so I do not intend to polish it.

If I'll get bored during holidays then I may fix the tower tilt bug in my branch of Repetier firmware and publish it. It is kind of recent (2018) and reports tower coordinates at the probing point as well. More info about the status is here:
[reprap.org]

Good luck.
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 18, 2018 06:50PM
Maybe your spreadsheet method works when calibrating both tower positions and arm length. I do not know it.

You do not need to calibrate arm length. Put them In a jig and measure the length with calipers. It will do.

Calibration methods based on z-probing only are not very stable when both tower positions and arm length are calibrated at the same time. You need special conditions for this to work. The conditions are not obeyed by most builds.

Quote
LMF5000
Max budget would be around $50
You are out of luck with that budget.
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 19, 2018 02:03AM
Quote
hercek
From the technical point of view, a proper calibration does not need 32 bit electronics. One can do it with an 8-bit firmware controlled over USB. But nobody bothered.

Actually, somebody did bother: SeeMeCNC wrote an Octoprint plugin to calibrate their delta printers when they used 8-bit electronics. It was based on my online calibration calculator, which in turn was based on the least squares calibration in RepRapFirmware, which in turn was inspired by your wxMaxima script. But SeeMeCNC has switched to Duet electronics now.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 19, 2018 02:17AM
Quote
LMF5000
I think I may have been a bit unclear with my long description. Marlin's delta auto calibration finds tower angle offsets and delta radius (and some other corrections). However the delta diagonal rod length is something I enter in the config.h file and it stays fixed - it's not affected by calibration.

I'm sorry, I failed to read your post properly. It's clear to me now.

Quote

Can you suggest a suitable control board that will run the firmware you recommend? Max budget would be around $50 because I already spent quite a bit upgrading the drivers to TMC2208s.

That's a shame, because for around $100 you could have got a Duet Maestro with five TMC2224 on board. I don't have any recommendations in the $50 ball park.

I suggest you do as hercek advises and enter the arm lengths as measured. If you then get scaling errors, they are caused by geometric errors in your printer mechanics. The most common ones are described at [duet3d.dozuki.com]. Most geometric errors cause the effector tilt to vary with XY position, so it's helpful to put a small circular spirit level on the effector to make the tilt visible.

Edited 1 time(s). Last edit at 12/19/2018 02:18AM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
LVD
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 19, 2018 06:18AM
Quote
dc42
I'm sorry to be negative, but RepRapFirmware running on 32-bit electronics solved the problem of calibrating well-built delta printers three and a half years ago. It seems that other firmwares still haven't caught up;

Marlin-AC with a least squares method started at about the same time and was introduced into official Marlin about 2 years ago. The exact routine is now also part of MK4duo as well. Your and my method are basicly the same: build a matrix and iterate trough it to find a least square solution. The big difference is your method used in the RepRapFirmware and online calculator builds a matrix and inverses it using forward and reverse delta kinematics with 32-bit precision and my method did compute a universal inverted matrix for a circular evenly spaced grid externally to the firmware and that universal matrix is then just scaled to the dimensions of the printer and probe grid using 8-bit precision forward and reverse delta kinematics. As such it requires much less calculations and precision and can run on 8-bit boards as well; it took me a wile to get that universal matrix right (especially the part concerning the tower angles) but now it converges as quickly as your method used in your online calculator and gives the same results. (I do not have a 32-bit board so I can not compare to RepRapFirmware calibration).
LVD
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 19, 2018 06:23AM
Quote
LMF5000
What I'm doing is printing the hexagon and measuring its sides. Then I plug those measurements into the spreadsheet ...

Looking at the results: one diagonal rod is over 4mm shorter as the build specs, and the difference between the different rods is also over 4mm. I can achieve a better build precision just using a tape measure... This indicates this method is not suitable to solve the problem of dimensional errors.

Edited 1 time(s). Last edit at 12/19/2018 06:24AM by LVD.
I've checked the Marlin documentation. Their auto-calibration routine (G33) does the following:
-Probe a circular grid of points,
-Calibrate Delta Height,
-Calibrate endstops,
-Calibrate Delta Radius, and
-Calibrate Tower Angles.

Diagonal length (i.e. length of delta rods) isn't tuned by the calibration, it's input by me to the config file (or tweaked using the LCD controls or sending M665 Lxxx). I started with 271.5mm (per anycubic source) and reduced it slightly every iteration according to the spreadsheet's numbers (currently stands at 268.5-ish). I don't have a caliper that can measure that large, but using a ruler I measured around 268mm.

I have this doubt that perhaps the numbers I'm inputting as delta rod length corrections are misplaced. I'm putting them in this line: #define DELTA_RADIUS_TRIM_TOWER { -2.074, -0.379, 2.452 }

As for upgrading the board, it's tempting, but I picked up this printer brand new for €250. That board alone costs €100. For €180 I could buy an Ender 3 (with larger effective build volume than the kossel and none of the delta calibration headaches). Mind you, it would be tempting to buy a Duet for the kossel and put the kossel's trigorilla in my CR-10 to benefit from the silence of the TMC2208s!

Edited 2 time(s). Last edit at 12/19/2018 07:13AM by LMF5000.
LVD
Re: Anycubic kossel poor XY accuracy even after 3 iterations of calibrating with hexagon.
December 19, 2018 12:25PM
DELTA_RADIUS_TRIM_TOWER is to change the delta radius or radial tower position for each tower
DELTA_TOWER_ANGLE_TRIM is to change the angle or axial tower position for each tower

Both are related and changes to the tower radial positions will be undone/compensated by a corresponding G33 calibration of the tower angle positions and delta radius (hence barely anything changes in your spreadsheet iterations). It is not advised to use both DELTA_RADIUS_TRIM_TOWER and DELTA_TOWER_ANGLE_TRIM to calibrate.

DELTA_DIAGONAL_ROD_TRIM_TOWER (I do not know why they added _TOWER to the name - it has nothing to do with the tower positions) is to change the diagonal rod lengths individually and this is where you need to put the results of the spreadsheet. But it is advised to keep those at zero and if your rods have different lengths to rebuild them properly. Setting diagonal rod wrong (especially setting a different length to each rod) may "solve" dimensional accuracy but will introduce a lot of other problems like straight lines no longer being printed straight...

Edited 1 time(s). Last edit at 12/19/2018 12:39PM by LVD.
I've been putting the spreadsheet outputs into the DELTA_RADIUS_TRIM_TOWER variable. Today I thought that perhaps I was putting it in the wrong place (hence the poor convergence), so I tried putting them into DELTA_DIAGONAL_ROD_TRIM_TOWER instead.

Initially I thought it helped, but after 3 iterations I'm not so sure. Here's the latest status: Hexagon of 75mm printed as X=74.800, Y=75.050, Z=75.270 (= cumulative error of 0.520mm)

Current firmware values needed to achieve that are:
Delta Radius 132.570
D0 267.244
Trim A -1.390
Trim B -0.950
Trim C 2.340

I am noticing that one side of objects is printing slightly larger than the other ones (even the calibration hexagon - I get a 0.1mm difference between front and back of the same side). Perhaps this is the problem with trims that you mentioned.

What do you suggest? Setting trims to zero and inputting a delta_diagonal_rod that minimizes average dimensional errors? The printer came preassembled so not sure how easy it is to physically adjust rod lengths.

Is there any way to quickly estimate the required delta diagonal rod? The kinematics formulae suggest that printed part size is a function of the square root of delta diagonal length, so perhaps I should multiply existing delta diagonal by the square of the desired scaling ratio? Eg to turn my 75.27 into 75 I'd change DDL from 267.244 to (75/75.27)2 x 267.244 = 265.33?

Edited 2 time(s). Last edit at 12/19/2018 08:15PM by LMF5000.
Sorry, only registered users may post in this forum.

Click here to login