Printer Calibration

Home Model Engine Machinist Forum

Help Support Home Model Engine Machinist Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

CFLBob

Well-Known Member
HMEM Supporting Member
Joined
Feb 10, 2018
Messages
999
Reaction score
300
Location
Central Florida
I have a Creality Ender 3 V2 printer that I got around Christmas. This is my first 3D printer, and once I got the bed leveled, I started playing with making useful things.

I find that it's not printing exactly the right size. I haven't printed a calibration cube, yet, but I tried printing a couple of internally threaded standoffs on Sunday, a 1/4-20 and a 6-32. When I measured the OD of the final parts, they were supposed to be 9.525mm. They were about 2% small. I enlarged my model by 2% and that allowed them to work.

I've built 3 CNC machines over the years, and I've run all of them with Mach3. Before you can do anything accurately, you need to tell it how many steps per inch. There has always been some correction from the numbers I tell it, and even a little iteration before I tell it to go 1.000" (for example) and it actually goes 1.000". I understand that this can be from shrinkage of the filament as it cools and can also be from calibration.

The Ender printer runs its own firmware and not Mach3. I can find no way to calibrate my printer.

The other option is to calibrate the slicer. I'm using the Cura slicer (4.8) and it has an adjustment that might fix this.

How do you guys assure you get accurately sized parts? Does anyone know how to calibrate this printer, or should I focus on calibrating the slicer?


Bob
 
Pretty much like you did, I print a test print and the adjust accordilngly. An FDM printer will never get the parts exactly the right size, but you should easily get within 0.1-0.2mm. With your undersize parts it's not so much that the printer is printing to the wrong dimensions, it's shrinkage. Things expand when they get hot and contract when they cool. Different materials expand at different rates, you can find the coefficient of expansion for just about any material on line anymore. Whatever material you are printing it most likely will have about a 200°C temperature differential between the printed temperature and ambient temperature. It might be printed at the correct dimension, but when it cools the part shrinks so it's too small.

The solution is to print oversize to compensate for the shrinkage. Metal casters do the same thing, they make their molds oversize so the cast object will be the correct dimension when it's cool. Your slicing software should allow you to scale the print to whatever percentage you want/need.

I thought my first printer, a Chinese Pruse I3 clone, was printing undersize - so I modified the steps/mm settings until I got the correct dimensions. Years later I was watching a Clough42 video where he used the slicing software to compensate for shrinkage. I had one of those Homer Simpson head smacking moments when I realized that was exactlly what I was doing by modifying the steps/mm settings. I normally print PLA and I've found that between 103% and 106% oversize will usually get the part spot on.

Don
 
Thanks for the input, Don. I hadn't thought that the answer might depend on the material and might be different numbers for different materials. Less like correcting the steps per inch number in Mach3 and more like changing the feed rate for different materials in the CAM software.

FWIW, I'm printing with PLA+ from a company called eSun that I bought from Amazon. The only guy I know who has a 3D printer recommended PLA+ over plain old PLA and I don't have any info on what brands might be better.

I printed a calibration cube and find it seems closer than my threaded standoffs were. X is perfect; well 20.01 instead of 20.00. Y is 19.94, which is less than 1% off. My Slicer (currently the brand new version of Cura slicer: 4.9) only lists one value for horizontal expansion. I don't see how that will work given one slightly bigger and the other slightly smaller.

I think the Creality machines are basically clones of the Prusa i3, which I understand are based on the RepRap project, and most cheap printers are similar. My Ender 3 V2 looks like the I3 MK3S although it looks like it has a bigger print envelope than mine.
 
Most 3D printers that aren't CoreXY or Delta type machines can probably trace part of their heritage back to the I3.

The latest Prusa version of Slic3r has most of the same features that Symplify3d has got, the Prusa Slic3r is free and I highly recommend it. One of those features it has is scaling the part. I wish the latest version had been available before I pulled the trigger on buying S3D, it would have saved me $150.

On my Prusa I3 clone I was modifying the steps/mm in the gcode. There are M commands to do that but I don't remember what they are right now. At that time I was still using the original Slic3r and I set up the on-start script to load the new steps/mm values in X, Y, & Z with every file. The Z axis will only be dimensionally accurate if your steps/mm/layer height/part height relationship is an integer value. Think about it, your Z dimension can only be within a tolerance of +/- half of your layer height.

I haven't used Cura for years, so I don't know about it's horizontal scaling. I do know that both the regular Slic3r and the Prusa version of Slic3r will allow you to scale the object along any 1 axis, or scale it uniformly along all 3 axis. It also gives you an "Elephant's Foot" compensation that will reduce the 1st layer in the X&Y directions to compensate for any squeezeout on your first layer if your nozzle is a little too close to the bed. That's one feature I wish S3D had, but I've learned to get my printer dialed in and keep it that way.

Bottom-line, if your printing crap you downloaded off Thingiverse - you can probably print it and forget about it. If you are trying to print a dimensionally accurate part, it's best to print a test part, let that part cool to ambient temperature, and then measure the part. Then you scale the part appropoiately in the slicer and print it again.

Don
 
I printed three more sets of my two threaded spacers, a 1/4-20 and a 6-32. I got the outer diameters to match with "horizontal expansion" and that was straightforward. I measured the diameter, found out how far off it was, and added half of that to each side.

I tried a few different values at an initial layer expansion, which is supposed to help with with the wide "elephant's foot," eventually going up to 0.7mm, which is more than the foot measures, and it had no effect that I can see.

Finally, there's a "hole horizontal expansion" that I needed to adjust. The last of the three prints came off the bed and a test screw fit right in.

If I have to change these numbers for every part that I print, I'd find that annoying, but as a one time experiment with a few prints to get the right size whenever I change filaments, that's pretty easy to live with. I guess I'll find out which scenario it is.


Bob
 
I use Cura with an Ultimaker 3. Unfortunately, it turns out that shrinkage varies between different makes of PLA, and even different colours from the same maker.
 
Most 3D printers that aren't CoreXY or Delta type machines can probably trace part of their heritage back to the I3.

Yes indeed they do and most of them use the "Marlin" firmware which can be edited, recompiled, and uploaded to your printer using the easily available Arduino IDE, As they use the same chips (Mega 2560 usually).

This is not a job for the faint hearted though as there are many, settings that can be adjusted in Marlin. It would be advisable to start with an Arduino readable (.INO format) copy of the manufacturers original firmware, Most will provide these or they can be found on the Net. This way you have a backup to restore to your machine if something should go wrong.

Rather than printing test patterns It is probably better to test this with a DTI attached to the print head. There are many designs for brackets/adaptors to do this available online. (try Thingiverse)

This will enable you to determine whether the machine itself is at fault, much the same way as you might do with your MACH 3 setup.

Having done this, if your prints are still undersized then it is indeed shrinkage which (as has been mentioned) can vary with material. brand, and even colour.
It's true ! I have PLA from the same manufacturer in two different colours and one colour (Red) shrinks slightly more than the other (Black).

Printing test cubes and adjusting for shrinkage in your slicer is the best way of correcting this. Most slicers allow for unequal scaling along different axes.
I use Repetier Host which allows me a choice of 3 slicers (Cura, Slic3r, and Prusa) and supports unequal scaling.

Whilst this is a bit laborious it can usually be done in one iteration and the "calibration factor" noted for further use.

Hope this helps a little.

Best Regards Mark
 
Mark:

With my first printer I was never able to determine which version of the firmware it actually had, Chinese I3 clone dontchaknow. I didn't want to try a download to fix one problem and just break something else. That's why I went down the route of modifying the steps/mm in gcode. I always had the default settings to fall back on if I broke something instead of fixing it.

Since Bob's machine is a relatively new Ender 3, it's probably a pretty safe bet that the machine itself is OK.

I know what you mean about the different colors wanting different settings, particularly temperature. I've had a spool of white and a spool of black from the same manufacturer, the black was happy printing 20° cooler than the white.

Don
 
Good info above; I'll just add a bit to what Don said about the M-codes for adjusting the printer's "mechanical" settings for steps / mm. A lot of "clone" printers, as well as some of the name-brand printers (such as those from Prusa) use some form of the Marlin firmware. Here is the link to the page that shows all of the available G (and M) codes for Marlin: Gcode, and here is the link to the specific M-code that is needed to change the steps per mm for any axis; this also includes some description of how to save that setting in the EEPROM, so that the printer starts up with that value: Set Axis Steps-per-unit

If your printer does not use a form of Marlin, it may be that none of this works ... or it may be that at least some of it is somewhat standardized. In particular I'd guess that using M92 to set the steps-per-mm might be standard, but I don't really know.

If you can set the steps-per-mm using this code, and even better if you can save the values to EEPROM using M500, that is a very good and much easier alternative to reconfiguring and recompiling Marlin ... though if you want ultimate control, that is certainly a worthwhile route. Note that you will need to be sure that your printer reads the EEPROM settings - on a Marlin-based printer, this means making sure that M501 is included in the start-up G code. (Do this via the Printer settings in the slicer.)
 
I have a Prusa I3 Mk3s and have been printing some fairly detailed parts to make R/C vehicles. Some of the parts need to be accurate in certain features, such as the bores needed to seat radial bearings or rods that slide inside of a cylinder. I was having a lot of problems with parts fitting properly until I started digging into the various settings that needed calibration. So far I've found that getting the 1st Z level done nearly perfectly, the extrusion multiplier, scaling (X, Y, and Z) and something called XY Size Compensation are important to reaching that goal, essentially in that order. The 1st Z level is usually fixed for a given bed, the extrusion multiplier varies with the type of filament (PLA, ABS, PETG, etc.) as does the X/Y/Z scale factors. I adjust XY Size Compensation only for cavities or holes where sizing is critical. I've been keeping a spreadsheet to tabulate parts made, filament type and the values of those parameters for anything critical that I do.

Ender and Cura may not have the same parameters but there should be analogs to the ones available in PrusaSlicer. Prusa has an excellent web site with all sorts of tips and suggestions for how to improve prints with their printers and PrusaSlicer and you might find it instructive to browse through there for general tips.

https://help.prusa3d.com/en/
 
Thanks, Andy.

That's a bunch of useful stuff. I really need to find a good group of Ender 3 V2 users, because I don't see how to do these things.

There is a USB B (micro) on the front of the printer and the only PC software that came with the printer says it's a printer driver. I don't know if I can do any command inputs to the printer from a PC with that, though. Almost at the end of the two pages of dense, poorly translated Chinese to English, it says

"The text box in the lower right corner can be input G code to control. If you are not familiar with it, please do not change anything."
 
I have a Prusa Mk3S+ and use Prusaslicer. In Prusaslicer there are scaling factors you can use to tweak and you can save separate configurations for different filament types, brands, whatever. Works fine and it's free. Very well supported.

Ted
 
I have a Prusa Mk3S+ and use Prusaslicer. In Prusaslicer there are scaling factors you can use to tweak and you can save separate configurations for different filament types, brands, whatever. Works fine and it's free. Very well supported.

Ted

Since you mention Prusaslicer, does it have separate scaling factors for X and Y?

Cura has one number for both X and Y, and then some other numbers: one to change only holes (?) and one to change the size of the initial layer. I don't know how it decides to only work on holes, but in my simple, internally threaded standoffs, it seemed to work.


Bob
 
Prusaslicer has separate scales for X, Y and Z. It's free and I suggest you download it and try it out. Very well supported in the groups.

Ted

Clipboard01.jpg
 
Bob, what you need is a program that acts as a "sender" to the USB port on the printer. Pronterface is a free/open source program, and it works well - or I should say, it has worked well; I haven't used it for a while, because I have my printer set up with OctoPrint on a Raspberry Pi so that I can connect via wifi.

With a program like Pronterface (or OctoPrint), you get visual interface to your printer. There are controls that let you "jog" left, right, forward, back, up, down, turn on/off the heat bed, etc. But there is also a window into which you can directly type G-code, and see any results returned by the printer. So you could type M503 into this window, press the Send button, and it will print out a list of all of the printer settings - steps per mm for X, Y, Z, and extruder, PID settings for controlling the temperature, and so on. That would be a good first test to see how everything is working. Or maybe better, M115 will print out the firmware information - version, etc.

Keep in mind, the above M codes are based on Marlin, and I don't know how universal they are. But some things definitely are universal; you could send the printer G28 and it will go through its homing routine, and this should work regardless of the type of firmware.
 
I got the Prusa slicer running and printed a calibration cube. Interestingly, it was slightly different in size from the first one I printed with Cura slicing it. I measured it and scaled the dimensions in that Object Manipulation window that Ted showed the picture of. I was unable to adjust the axes independently, but the same scaling value worked fine for X and Y.

Z is still a bit short and the elephant's foot correction had a minimal effect, if any.

I guess the next interesting thing to work on would be the threaded spacers.
 
To scale X, Y, and Z individually click on the "padlock" icon to the left in the picture I posted, under the label "scale factors". Also note that there are three levels you can select for more or less variables/settings to change: simple, advanced and expert.

There is a Prusa user group that I have found to be very helpful on topics like this.... some people out there are real experts and using this software and equipment. Other owners besides Prusa owners do post questions there.

Ted
 
Back
Top