Editor's Note: This is the first in a series of articles written by Daniel Halvorson discussing technical topics around how to produce higher quality 3D Prints. The example prints shown in the article were printed on his Printrbot Simple Metal in colorFabb NGEN Silver Metallic.
There are two main opposing types of errors that can produce poor corners: ringing and corner swell. To achieve high-quality corners, certain parameters must be matched to the printer’s physical characteristics, and they must be balanced to avoid falling into either of these errors. Before reading this article, check out the explanations for Ringing and Corner Swell. Here, we brush up on the causes of these errors and the functions of the parameters involved, and in the application section, the solutions will be explored.
A printer’s maximum corner quality is ultimately limited by two main characteristics: ringing is allowed by the rigidity of the nozzle’s positioning, and corner swell is allowed by the stored compression in the extrusion system. For more information on those two, see the definition pages for Ringing and Corner Swell.
With these physical characteristics in mind, the relevant software and firmware settings are speed, acceleration, jerk speed, and those relevant to extrusion pressure.
Electronics: Speed and Acceleration Control at Corners
To understand the solution for balancing ringing and corner swell, we must dive into the processes behind how the printer’s microprocessor and stepper drivers choose to make the printer handle corners.
In an ideal world, a printer would be able to change directions instantaneously. However, since this cannot happen in real life without the printer being subjected to unnecessarily high forces, causing extreme ringing, there must be a short deceleration period applied before the printer encounters a corner. The slicer and microprocessor both know this, and account for this deceleration before the corner and acceleration after the corner.
If programmed deceleration/acceleration values were the only method a printer used to navigate corners, the nozzle would slow down to a complete stop at every acute corner. However, anyone familiar with a printer’s behavior knows this is not usually the case. If you recall the cause of Corner Swell, you will remember that there is stored compression in the filament between the drive gear and melt zone. This causes a small amount of extrusion to continue at the corner, when the speed has momentarily dropped to zero before the nozzle accelerates out of the corner. If a printer intentionally slowed down to a stop during direction changes, the corner swell would be exaggerated.
If the printer doesn’t decelerate at all when going around a corner, there will be extreme ringing and possibly even overshot steps. But if the printer decelerates all the way to a stop at every corner, there will be extreme corner swell, and sharp corners will be impossible. How can the printer avoid falling into either of these extremes?
It turns out that paradoxes like this are pretty common among robotics applications where stepper motors are used, so much so that these systems have a simple little trick up their sleeve—so simple and reliable that the user rarely sees it. It’s called maximum jerk speed, and it represents the highest speed that the microprocessor assumes the printer can decelerate to and accelerate from instantaneously. (Even though the term “jerk” is shared with the formal physics concept of the third time derivative of position, the two concepts are quite distinct from each other, so it’s important to recognize the differences. Maximum jerk speed is indeed a speed, and printers typically measure it in mm/s.) This is a good compromise: the printer doesn’t hit a corner at full speed, so ringing is manageable; yet the printer doesn’t slow down to zero, so corner swell is minimized. The maximum allowable jerk speed tends to have a larger impact on ringing than acceleration does.
So how can we use these concepts to improve print quality?
Rigidity and Accuracy: Ringing
The more rigid a printer’s structure is, the less capacity it will have for ringing. The first solution is pretty simple; get out those tools, square the printer up, and tighten it down, with some appropriate Loctite for good measure! To take it to the next level, the frame of most RepRaps can often be stiffened with printed gusset plates and such.
Proper belt tensioning is also important. Tensioning belts with inline springs that clip onto the belt is not recommended, because it introduces a huge amount of springiness into the position of the nozzle. The best tensioning systems are those that use one or more pairs of captive nuts and bolts, which allow you to precisely choose how tight you want the belt to be, and adjust it in precise, small, repeatable increments. Some printers come with these systems, but if yours doesn’t, you can find numerous printer-specific designs in various online file repositories, or design one yourself.
Extrusion Pressure: Corner Swell
All other things being equal, the lower the compression in the filament between the drive gear and melt zone, the better a printer will be at avoiding corner swell. Keeping the backpressure low by using a clean nozzle at a sufficiently high temperature is one of the only quick changes you can really do to a given printer. That being said, if you’re using a softer filament and you’re experiencing an undesirable level of corner swell, you can switch filament types to something more rigid, like PLA.
Electronics: Speed and Acceleration Control at Corners
This is the crux of this article: how to balance between a printer’s tendencies for ringing versus corner swelling. There are several reasons you may want to tweak this balance. Different models of printers (even different printers of the same model) usually have different optimal balances between the two. Or perhaps you want to specialize: maybe you mostly print structural parts that need sharp corners, but visible ringing isn’t a cosmetic issue; or maybe you’re printing figurine models at low speeds and low layer heights and you’re more concerned about reducing ringing at all costs. Well, the procedure for adjusting these variables is pretty straightforward: talk to your printer by connecting to it with any program with a terminal. (Octoprint, Repetier-Host, and Pronterface are common ones.) Enter the command M501, which asks the printer what some of its settings are (the ones stored in EEPROM). XY jerk speed is the one you’ll mostly be interested in. For Sprinter, Marlin, Smoothie, and Repetier firmware, the command you’re looking for is the X parameter of M205, “advanced settings.” The most common scenario is that you may want to adjust your printer to reduce ringing at the expense of slightly increasing corner swell, and you would do this by noting the current value for M205 X_____, subtracting a bit, entering it with M205 X[new value instead], and then saving it to memory with M500. Conversely, to reduce corner swell at the expense of worse ringing, increase the maximum jerk speed.
As an example, I printed two single-wall squares from identical g-code, identical in every way except that the printer’s EEPROM value for XY jerk was intentionally weighted toward producing either ringing or corner swell.
The print shown below from two angles has high ringing, but insignificant corner swell, as you can see. It was printed with very high jerk speed.
In contrast, this print was printed with a jerk speed of zero mm/s, and as you can see, it exhibits considerable corner swell (but has no visible ringing).
That's all, folks! Shoutout to Trevor Ward for his helpful feedback. If you have any questions, contact me. And as always, stay tuned for more articles arriving soon.
If you are active on any number of Facebook 3D Printing groups, there's a good chance you've had a positive interaction with Daniel Halvorson. I'm active on a lot of those groups, and I've noticed how good Daniel's advice usually is. Not only does he offer good advice, but he is usually very respectful and polite. Knowledgeable, helpful, and polite is such a rare combination in social media that I had to approach him to compliment him.
As we got to talking, an idea was born. Daniel would take his knowledge and use the Printed Solid blog as a platform to share his advice. He came up with the idea of establishing a series of articles for A Solid Foundation for 3D Printing. These articles would go through some of the basic concepts required to really produce great prints. If we get it right, they will be presented in a way that has enough technical depth to satisfy more experienced users but enough simple information that newbies aren't scared away.
Here is Daniel's introduction:
Hello, everyone! My name is Daniel Halvorson, and I’m an engineering student going into the field of additive manufacturing. Matt Gorton and I are kicking off a series of articles that will explore the engineering side of hobby-level 3D printing. Over the next few months, articles will be posted periodically to the Printed Solid blog. Whether you’re a garage tinkerer hoping to avoid design pitfalls as you build a DIY printer, a student learning about the theoretical intricacies of printing, or a hobbyist who’s focusing on the practical side of print quality troubleshooting, I hope there’s something here for you.
If you have ideas for new articles, get in touch with me! Likewise, if you feel that something could use more clarification or should be explained differently, or if you see a typo or think something is incorrect, don’t hesitate to contact me.
-- Daniel Halvorson
(You can find me on Reddit and Instagram as “techyfiddler”, or you can usually reach me quickly on Facebook.)