First, I have just started to spend time with FDM printing in the last

First, I have just started to spend time with FDM printing in the last few months. So there is a risk I might be re-visiting old topics.

I was very interested in the early RepRap, but when my then-16 year old son knocked up a girl, caring for my infant grandson became the activity that consumed my spare time.

Fast-forward to the present. Really impressive amounts of progress, and … in many ways still very primitive. (To pick one - how many folk have been injured separating a print from the bed?)

The 3D printing process is a set of equations with rather a lot of unknowns. To get to predictable results, we have to eliminate the unknowns.

To pick one example…

One of the settings always used is the temperature of the print head, and this is entirely wrong as a manual setting.

What we care about is the temperature of the filament when it leaves the nozzle. That is what matters to our prints. When the filament moves slowly and majestically through the print head, the temperature of the extruded plastic will be very close to the temperature of the print head.

Fair enough. Do you want all your prints to be slow and majestic?

The temperature of the zone transferring heat into the plastic should be calculated. The end-goal is plastic leaving the nozzle at an exact temperature.

To calculate the temperature of the print head, you need to know the desired temperature of the plastic when it leaves the nozzle, the amount of plastic flowing through the hot-end, and the exact thermal characteristics of the plastic.

This means filament manufacturers must meet or provide exact parameters. This means printer firmware must target exact extruded-plastic temperatures.

Perhaps this discussion has occurred prior (when I was otherwise occupied), but if so, I am not finding obvious reference.

To take this technology further, we need to take out more of the manual “tuning” (or fiddling around) presently needed.

That is the main reason systems use PID driven nozzle heaters: so, regardless of the amount of material flowing through and extracting heat, the nozzle is maintained at the same temperature. Abstracting difficult-to-quantify parameters into hardware/software loops that automate setting of those parameters is critical to a lot of CNC.

@John_Bump Well, yes and no. The PID parameters maintain the temperature of the gadget measuring the temperature near the nozzle. What we care about is the temperature of the plastic leaving the the nozzle. They are not the same thing.

kYou do not need the plastic to be at an exact temperature, there is a range that it will print. Most Pla has a plus/minus five degree range that is perfectly fine.

Can you show this is actually a problem? The flow is constantly varying and the easiest way to handle that is a hot end with enough thermal mass so that the temperature stays within some limits.

It is not possible to quickly change the temperature of the hot end to match the current flow. Even if you could calculate it, the current needed would be insane when heating and there is no way to force the temperature down again when the flow slows.

It may be possible to improve the PID controller of the hot end heater by giving it a variable boost based on current extruder speed. This probably does not need advanced knowledge of the plastic. This will deliver extra power when we know that extra power is going to be consumed by melting plastic instead of waiting until the PID loop reacts on dropping temperature.

It’s extremely difficult to measure the actual temperature of the plastic at the nozzle. For the most part we rely on thermal mass to keep the temp steady. There are some firmware and slicers that adjust the temperature for higher speeds to compensate for less soak time in the nozzle, but it’s still just guesses.

If you really want it to be accurate, less thermal mass is actually the key. It would respond faster to a drop in temp, and it would be cooled faster by more plastic entering it. But at this size it can be difficult to design and implement properly.

The current method is to tune your temperature to your speed. Its sufficient although manual.


I think you’re missing a few points here. The outlet temp of the filament is in principle only interesting for the layer adhesion. What you push in will come out. This is how the calculation in the slider works. What varies is the force on the hotend and the needed tourque for the motor.
Of course also this is not 100% true. Because there is a small gap between the filament and the inner wall of the hotend that will be more or less filled with fluid plastic. But as long as your motor is not loosing steps and your filament is above the melting point it really doesn’t matter.

Try it. Print a temp tower with different temperatures and the measure it.
You’ll basically only see differences in the colour and layer strength if you stay inside the minimum needed temperatures.

One step to improve everything would be to use copper instead of Aluminium as a heat block. Copper comes with a significantly higher conductivity and only half of the heat capacity. But to achieve what you are searching for would result in a super conductor (heat pipe is quite close) with almost 0 heat capacity.

Physically not possible and you would probably end up with a solution that generates new unwanted effects.

By the way,for the appearance of an printed object the outer perimeter is usually the most important one. And this will be usually printed at a quite low velocity and stable temps.

So basically we’re talking about problem that doesn’t exist :wink:

@Baldur_Norddahl got it spot-on. The filament flow rate varies faster than you can change the temperature of the hot block. This is a pretty intractable engineering problem.

Yes, the primary limit to print speed today is heat flux into the filament as it melts. That’s a legitimate issue worthy of R&D effort.

Yes, you COULD build a very low thermal mass hot end, and use a finely-calibrated energy balance model to pump the proper amount of power into the filament to heat it the correct amount to hit your desired outlet temp. That’s a doable thing. But:

  1. Polymer heat capacities are complex and vary significantly over the range from room temp to printing temp. Each filament blend – not just plastic type but manufacturer and possibly even color – will have a different number of joules per gram required to bring it up to temp. That number will depend on the starting temp of the filament (EG if used in a heated chamber) and to a small degree even the age and melt processing history of the filament manufacturing, which changes the starting crystallinity phase distribution. It’s effing complicated. You basically have to perform DSC measurement (not cheap) for every filament, and plug that capacity/temp curve into your firmware, and even then it won’t be exactly right for the heating rate used in your hot end. Polymers are complicated. Net net, you’re going to have to measure the outflow from the nozzle to get an empirical power requirement, rather than predicting it from filament data. That’s really hard.

  2. When you use higher temps to heat the filament faster, you risk charring any material that ends up in a dead zone, such as the crevice between the nozzle and heat break, or drill corners at a diameter change. This then contributes to clogging as the charred material builds up and breaks loose.

  3. Getting heat from a ceramic-potted resistive heating cartridge into the filament involves some non-trivial time lag (5-10 sec) between the coil power and filament heating. Filament flow rate can vary on a time scale magnitude of 0.01 seconds. There’s no easy solution to this. You could imagine microwave heating through a glass hot end… or putting a heater coil directly inside the hot end… but that’s an insane technology step-out.

Where you end up at the end of the day is that the most reasonable approach is keeping the hot block temp constant, and relying on residence time to allow the filament sufficient time to heat up to approximate thermal equilibrium.

Now, with that said, there are some interesting areas to experiment. For example, using flow rate as a fudge factor to quickly adjust PID power for more stable temp control, or to adjust hot block temp to help melt faster or slower. That’s a good idea… it just requires a lot of tuning to work right.

Another effect to consider is shear-heating. Injection molding machines put about half the melting heat into the pellets by forcibly mashing and shearing them so hard they get hotter. This actually scales and self-regulates pretty well – as the filament heats up, the viscosity drops, and less shear-heating occurs. This occurs to a small extent in 3d printer extruders (where do you think all the extruder motor power output is going? Friction heating at the nozzle.) But it’s not a sure thing… you can easily get hot spots and burning if the process isn’t tuned right.

There is a lot of good material in the above responses, and I will try to find a minimal answer.

Is this a problem? Yes. Do your prints always work? Not at present. That is where we need to get a better grasp on the problem.

We do have a certain amount of usable slop in that the characteristics of the molten plastic do not in general change radically with a few degrees of temperatures (either C or F).

While the rate of heat movement through metal may be relatively slow (and factored by design), we do have more immediate control over the rate at while we try to pump plastic, and the (exactly related) rate at which we move the print head.

So part of this is a software problem. As a software guy, this puts me somewhat on the hook. :slight_smile:

The other part of the problem is mechanical and thermal design. With a very well characterized hot end and extruder I can know when to bump up the thermal input (ahead of faster extrusion). I can know when to extrude more slowly, and when to accelerate.

As Ryan suggests, in the mean time, the we might just try to keep the temperature of the hot end constant, and vary feed and movement to match. Also, as Ryan notes, varying flow means varying power to the hot end … so we still had design work.

@Preston_Bannister have you dug into the acceleration and motion control code in any of the mainstream firmwares yet? Slaving XYZ motion off an extruder flow capacity function would be a ground-up rewrite of some very, very complex and performance-sensitive firmware code. You’re talking about maybe a man-year of competent embedded systems engineer time. (Not just “coding” time – most people willing to work on this stuff for free aren’t skilled+smart enough to avoid breaking it.) And you’d end up with a much slower printer because you wouldn’t be able to change speeds between corners and straights anywhere near as fast. And you’d need more empirical tuning for printer-specific hardware. For what? Print quality would be nearly indistinguishable, with only people running “extremely high flow rates at low feedrates” noticing any difference. The juice isn’t worth the squeeze.

A much easier approach is to just have slicers warn people when their calculated flow rate is too high for their hardware. Then switch to a high-flow hot end like an E3D Volcano if you want to print faster.

@Ryan_Carlyle Have I dug into the software as yet? Nope! That is an exercise for the future, if I keep to this line. Also this is a topic to be visited regardless, as this area evolves.

This first part that bothered me was the physical design of the printers. I have guesses … that might be wrong. Building experiments to see which of my guesses work, or not.

As I have in past built quite a lot of complex, extremely performant software - that part does not bother me - at all.

In fact, building hardware is much less familiar, as I have done much less over time. The change of pace is fun. :slight_smile:

So if I fail (very publicly) in my hardware exercise…

Before performing experiments (and spending money) It may be worthwhile to do some research in the various user groups to see if the idea or topic has already been visited by others.

That was exactly my point. There are a lot of very clever people involved in printer development. Therefore there is a high risk to accidentally reinvent the wheel.

I.e. a lot people said that it’s probably not a good idea to use carbon tubes and aluminium as axis. Then the HyperCube came and everybody was like “Wow, I didn’t expect that…”

There have been a lot of bad ideas too, that keep coming back because people assume it will work, implement it, and then think it works. Like over constraining leadscrews or over constraining an axis.
I remember the early days when people tried making hotends out of glass. Most were just screws wrapped in nichrome wire or they used resistors as a heating element.

@Sven_Eric_Nielsen I don’t think the Hypercube is a good example to support your point… it’s chock full of bad engineering decisions. For example, running polymer bearings on aluminum tube or carbon fiber tube is totally fine, and this has been known for years, but it’s LOWER PERFORMANCE than a solid steel rod of the same diameter. (Steel has the best stiffness/volume ratio of any reasonable material.) 10mm steel rods would have been a better choice than 10mm aluminum tube. If you want to use aluminum or CF, that’s fine and good, but you need to bump up the diameter more to compensate for the lower stiffness/volume ratio.

I agree with you, that’s also the reason why I use 12mm in my printer. And yes,there are a lot of other bad things too. Running the thing on 12v instead of 24v for example. Or twisting the belt right before a pully. But that’s not the point. My point is that it works,and it works better than most other diy printers which are similar. So it’s a good starting point and it also shows that the wheel is already there, you just need to make it a little bit more round. And you’ll gain a lot experience on that way. But reinventing the wheel and end up with something that is potentially less round simply doesn’t make sense.

I’m working in an r&d department and if there is one thing I’ve learned,than that it doesn’t make sense to deal with all concepts in such a machine at the same time. Take the whole thing as it is and work on single conceptual parts. Piece by piece. Not everything at the same time.

By the, it also carries less weight. So therefore you simply don’t need this ridiculous stiffness you would get with a steel tube at a similar diameter. It’s simply overkill.

@Sven_Eric_Nielsen For a fixed diameter, steel is actually stiffer than CF or aluminum even when you factor in the force required to accelerate the self-weight.

For a fixed diameter yes. Did I wrote something else?
But if you do some FEM calculations you can see that for a traditional 200x200mm printer with a Bowden system and 2x 8mm rods are really over engineered.
I mean hey, in the past we’ve used 2x 8mm rods for a direct extruder system with a big fat stepper motor. And on the older 3mm filament systems even with additional parts like gears and so on.

Even with some basic math,no fancy FEM, you can already see that the displacement with a 10mm CF tube with a 0,5mm wall can be ignored on a lightweight Bowden system.

@Sven_Eric_Nielsen Only if you ignore “jerk” forces. Plug in, say, 40,000 mm/sec^2 acceleration to your calculations and see what the deflections look like. (I don’t have my jerk simulator file at the office to get an exact number but that’s a realistic ballpark.) Don’t forget to use a realistic transverse load bending stiffness for woven carbon fiber tube… 45 degree / helical lay wrap layers in particular don’t do much for transverse bending. And then calculate out the sine error to a nozzle tip displacement. It’s going to end up a lot larger than you think.