-
Notifications
You must be signed in to change notification settings - Fork 19
Dimensionality
There are several reasons why the dimensionality of your print could be off.
-
Shrinkage of the part as it cools (fix in slicer)
-
Incorrect steps/mm in firmware (fix in firmware)
-
Non-linear movement of the printhead (cannot fix perfectly)
Calistar can help you fix the first two, and has some logic for helping you decide which of these you are experiencing. If you're interested in learning more about each of these, keep reading below!
The Calistar spreadsheet can help you fix the first two (shrinkage and steps/mm), and contains tailor-made instructions based on your measurements of your print. It will even try and help you figure out if it's just shrinkage or if you should adjust your steps.
Unfortunately, in the case of non-linear movement, you can make some adjustments but you'll never be able to get it perfect. This is because the distance that the print head moves vs how much the motor(s) move changes as a function of where the print head is. To my knowledge, there is no way to compensate for this at the time of writing in any print firmware.
The Calistar spreadsheet's null hypothesis is that any dimensionality problems are skew related. Only if it gets information that refutes that assumption does it suggest mucking around with steps/mm.
If any of the following conditions are found, then Calistar suggests that it is not just shrinkage affecting your print
-
If the Calistar print is larger than it is supposed to be
-
If the x-dimension correction is signficantly different from the y-dimension correction (exceeding 2-sigma)
-
If the print shrank more than it should have based on your material selection
For the last of these, we make some assumptions about maximal shrinkage for various materials. These are discussed more in the Shrinkage section. The maximal shrinkage that Calistar expects is displayed in the table below.
| Material | Maximal shrinkage |
|---|---|
| ABS | 1.6% |
| PETG | 0.8% |
| PLA | 0.3% |
CoreXY printers have A and B motors, and they are intertwined when moving in the x- and y-directions. The Calistar spreadsheet asks whether you have a CoreXY printer; if you do, the dimensional offsets are averaged across the A- and B-motors to account for that intertwining.
Things shrink as they cool. If you printed an object to be 100 mm wide and it shrinks by just 1%, it will be 99 mm wide when you measure it.
The relationship between length and temperature is given by using
where
There's lots of information about shrinkage. Most information points to a few percent max, but there are a few websites that report significant outliers.
There are lots of blog posts about shrinkage, see for example 3d4create and 3dinsider. Most sources agree that shrinkage is typically on the order of a few percent. However, one suggests up to 11% shrinkage for ABS, but then in the same article give a table and source that points to the <2% range.
Omnexus has an entire table of shrinkage percentages for thermoplastics. Their use case is molded parts rather than 3D printed parts, but the common theme with 3D printing is that the hot melted plastic cools to room temperature, and so this is probably a good starting point.
Omnexus also has a table of CLTEs, but in my spot-checking I couldn't get agreement between these and the shrinkage percentages over the temperature ranges I expected.
This paper by Marwah et al carried out a design of experiments where they measured the shrinkage of ABS for various layer heights, print speeds, nozzle temperatures, and bed temperatures. The shrinkage values they found experimentally were between 0.35% and 1.1%.
Finally, I found a poster from Ahmed et al that examined shrinkage of inner- and outer-diameters of ABS-printed annulus parts. They also found shrinkage between about 1%-2.5%, but found a difference between the inner- and outer-diameters.
Depending on your slicer, there are two ways to compensate for shrinkage. The Calistar spreadsheet has instructions for how to do this that are tailor-made for your printer based upon your measurements.
-
Shrinkage compensation filament setting. Some slicers such as SuperSlicer and OrcaSlicer have a per-filament setting that you can use to compensate for shrinkage. This is a set-once-and-forget setting.
-
Scaling up the print. Other slicers, e.g. PrusaSlicer as of writing do not have this setting. In that case (and with any slicer, really), you can scale the print up by a given amount to counteract the shrinkage that will happen. Note, however, that you have to do this every time you slice something new.
Your printer needs to know if it advances a single step, how much distance linear distance that equates to. Most motors provide specifications of this value, but due to manufacturing tolerances this may be off.
Marlin specifies this in terms of steps/mm, i.e. if one wants to move the printhead by 1 mm, how many steps does the motor have to move? This is typically how motor manufactures specify the movement of the motor. You can see your current steps/mm using M92.
Klipper uses a different approach. Instead, one specifies rotation_distance in your printer.cfg file. This number represents the total linear movement of each axis given a full rotation of the corresponding motor. Note that this is opposite of how Marlin deals with this. If you know the steps/mm, the number of steps per rotation, and the number of microsteps per step, Klipper's documentation provides a formula to determine your rotation_distance value.
As noted in this Klipper forum post and this issue in the issue tracker, some budget printers such as the Creality Ender series of printers have an inherently non-linear movement in the x-direction. What this means is that if the x-motor rotates a full rotation, then the overall linear movement of the printhead in the x-direction will depend on where the printhead initally started. For example, if we started the print head at the far right and requested the printhead moves 10 cm to the left, then the total distance actually moved in the x-direction would be different than had the printhead started in the center of the bed.
Thus in this case, we can adjust the steps/mm for a Calistar printed at the center of the build plate and get dimensionally accurate prints near the center. But, as soon as you move a print to a corner, all bets are off. Unfortunately, this would be something that would be complex to fix, and would likely need to be fixed in firmware.
Next: Skew (if you haven't already done it).