SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
6.83k stars 805 forks source link

Predictive nozzle temperature adjustment for sensitive materials #2516

Closed tsmith35 closed 7 months ago

tsmith35 commented 11 months ago

After working with my X1C and P1P to print PETG, I have determined that the reason so many Bambu Lab users struggle to print with PETG is due to two things: a narrow usable temperature band for PETG and the high speeds of the Bambu Lab printers.

PETG goes from too cold (high viscosity) to too hot (low viscosity) very quickly. This becomes an issue when used with a fast printer; as the nozzle decelerates for corners, overhangs and other features, the nozzle heater does not respond quickly enough to the thermistor, causing a slight delay in the heat flux which then causes the PETG to rapidly heat due to the rapid decrease in flow. The result is over-extrusion and stringing.

Conversely, the rapid acceleration after a corner, overhang or other feature is past causes the PETG to rapidly cool when the flow rate increases, causing low viscosity that in turn causes the nozzle to drag away part of the just-printed filament.

There are a few solutions, one of which is using a nozzle with higher usable volume. The extra volume acts as a buffer, helping to decrease the effects of rapid temperature changes.

Another solution, which is what I'm proposing, is to utilize a nozzle heater pre-act, which is basically a predictive temperature adjustment made slightly in advance of a known time. In the case of PETG printing, it means initiating the nozzle heater power decrease just before reaching the point of slowdown, then increasing nozzle heater power just before resuming normal print speed. Such a pre-act would serve to moderate the temperature of the PETG in the nozzle, thereby eliminating the adverse effect on viscosity.

This pre-act could be implemented in software or firmware, or a combination of both, and should be adjustable by the end user. The nature of slicing and printing means that speed changes are known well ahead of time and can be easily accommodated.

This would be good for any highly temperature-sensitive material, not just PETG.

igiannakas commented 11 months ago

The hysteresis of the heating element is in multiple seconds to drop 10-20c and to increase 10-20c. So doubt something like this would work as you'd need to slow down the print to allow the temperature to reach the target state in the new position, which would mean the new position where a lower temperature is needed is the current position and so forth, if that makes sense.

Unless we park the nozzle outside the print object and re-prime it; but then that would result in multiple seam lines.

My advice? Get a high flow nozzle for the bambu lab. A CHT nozzle works great in heating the filament uniformly reducing that deviation that you're observing. Also the nozzle block PID has this already solved - the temperature is consistent but because of flow variations the melt of the filament varies. For that a nozzle that splits the filament up is the answer (CHT) or simply printing with a lower volumetric flow rate.

tsmith35 commented 11 months ago

igiannakas, perhaps the temperature change is slow under static conditions, but going from 200 mm/s to 130 mm/s, the speed changes within about 7 ms, while the temperature change, while just as fast, appears to lag the speed change by about 7 ms. The end result is that the nozzle doesn't begin cooling until the slowdown is complete. Similarly, the nozzle doesn't begin heating up again until after the nozzle has returned to 200 mm/s.

The temperature appears to deviate from setpoint by about 5-10⁰, which is enough to cause print quality to suffer with PETG.

I do see great improvement with the CHT nozzle, but it's just a bandaid for the lag in heat flux. Ideally, a lookahead heater pre-act would eliminate the need for an increased nozzle volume.

github-actions[bot] commented 8 months ago

GitHub bot: this issue is stale because it has been open for 90 days with no activity.

github-actions[bot] commented 7 months ago

Orca bot: This issue was closed because it has been inactive for 7 days since being marked as stale.