Solved Y dimensions smaller than they should be on CoreXY
-
Hello,
I have a custom built CoreXY machine that is exhibiting a strange problem. When I print a calibration cube, the dimensions are as follows:
20mm calibration cube printed with all axes parallel to machine axes
X = 20.01
Y = 19.70Same 20mm cube rotated 45deg
X = 20.25
Y = 19.7540mm cube printed with all axes parallel to machine axes
X = 40.03
Y = 39.70All Z dimensions are as they should be. What could be causing this? It doesn't seem to scale with the size of the model. Could I have a bad motor? Incorrect belt tension (both belts seem to have nearly identical tension)? Any help in ironing this out would be appreciated.
I would prefer not to use M556 but will if I have to.
Thank you
EDIT:
A couple more things to note:- The angles on the printed cubes are all perfectly orthogonal (measured with a right angle).
- My Y axis motion is very smooth. My X axis motion is a little tighter but still smooth and very straight (using 2020 extrusion as my X axis gantry)
-
Perhaps you have 0.3mm of backlash in the Y axis mechanics?
-
A perfect corexy mechanism really should have the same steps/mm in X and Y because of the symmetry of the construction and the way the motion works. Both motors turn for movement in either X or Y. Only one motor turns in each direction when you print a cube rotated 45 degrees. In your rotated print you're getting a 1 mm difference between the two motors that should not be there, implying that there may be something wrong with the printer geometry.
First things first- check the drive pulleys- are they securely attached to the motor shafts? Are motor mounts and and all pulleys solidly anchored? Everything should be rigid. They should not wobble at all when printing. Pulley axes should not be tilted inward by the belt tension.
What are you using for guide rails in X and Y? If you're using the v-slot wheel type construction, the printer's frame needs to be perfectly square. Check it by measuring diagonals. If you use end supported round guide rails, they can flex and be out of parallel. Are the Y axis guide rails parallel? Check by measuring diagonals. Can you post a picture of the printer, looking down from the top so we can see the belt paths? Are the belts stacked or on the same level? While you're at it, post a picture or two of the calibration prints...
Are the belts parallel to the guide rails? If they are not, the print geometry will be distorted in XY, and the distortion will vary depending on the print's location on the bed. If the printer's XY geometry is right, printing two cubes, one at the center and one near a corner of the bed, should yield identical results.
Calibrate the extruder before you start tweaking the XY steps/mm. The extruder should produce the line width you set in the slicer. Line width error won't be 0.3 mm, but it can contribute to the problem. Measure the filament diameter in 20-30 places, calculate an average value, and use that value when you slice to print the calibration cubes. Print an object with zero infill and 3 perimeters with line width set to the nozzle diameter (don't let the slicer set the line width for you), and layer thickness set to 50% of the nozzle diameter. Set the seam to "aligned" so all the start/stop problems end up in one corner of the print. Measure the print walls, avoiding areas of ringing, and away from the corners. Tweak the extruder steps/mm to get the correct wall thickness before you start messing with XY calibration.
I know it's called a "calibration cube", but a 20mm cube is too small to calibrate anything. There are too many potential distortions in the print because of thermal properties of the plastic and extrusion problems. If you use a small cube to calibrate steps/mm, when you print something larger, the absolute error from the calibration will get multiplied. If you use a large print to calibrate, when you print something smaller, the absolute error from the calibration will get divided. If you print a 100 mm cube to calibrate, you'll be able to measure the diagonals with a 6" caliper.
Print XY calibration parts with "random" seam position set in the slicer. If you use the "aligned" option, one corner of the print will have all the layer start/stop extrusion problems piled into it. That can lead to errors in the measured dimensions.
Check for squareness by measuring the diagonals of the cube. If the axes are square the diagonals should be the same. Make the measurements at least a few mm above the bottom of the print.
-
Thank you for the detailed response!
I check the drive pulleys and they are very tight. My motors are D-shafts and the grub screw on the flat portion is properly secure to it.
My Y-axis consists of 2 x 10mm stainless steel rods with LM10LUU bearings (1 per rod)
My X-axis consists of a piece of 2020 aluminium extrusion. I have printed a custom Nylon bushing to run on the 2020 extrusion and my carriage is built around it. I did this to eliminate the weight penalty of using steel linear rails.I have measure the diagonals across my frame at the top of the printer and each diagonal is exactly 61.5cm
The belts are stacked atop one another.
I've attached a couple pictures. Forgive the mess!
! -
It would appear that your belts aren't parallel where they should be. See the link @mrehorstdmd posted above.
-
You are totally right and I didn't even notice until you said it. I'm pretty sure that is my problem. Thank you and thank you @mrehorstdmd
I will tweak my joiners and carriage to make them exactly parallel.
-
@donnyb99 let us know how it works out when you've made the tweaks.
-
So it turned out that my belts were off by 1.75mm in X and 1 mm in Y. I adjusted the idler positions on the XY joiners following @mrehorstdmd linked blog and the end result was a perfect calibration cube!
Y was exactly 20.00 mm and X was ~20.01 or 20.02mm depending on where I measured.
Thank you very much! I truly had no idea that those portions of the belt needed to be entirely parallel! I appreciate you helping me out and teaching me something new in the process!
-
Great! I'm glad you solved the problem.