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
5.89k stars 670 forks source link

Layer time based temperature #5797

Open TheUnlimited64 opened 1 week ago

TheUnlimited64 commented 1 week ago

Is there an existing issue for this feature request?

Is your feature request related to a problem?

When printing PLA theres a big issue with cooling on overhangs, that needs to slow down, to cool better. But big parts would benefit from a higher temperature, due to better flow rates

Also the different speeds with constant temperature can result in a different texutre (matte and glossy)

Which printers will be beneficial to this feature?

All

Describe the solution you'd like

A layer time based temperature. If layertime is really short, the temperature will be lowered, so the layer is not as hot as it would be, so cooling it gets easier (also overhangs could profit from slowing down layer and temperature)

But when the layer time is high, the temperature will get higher, so it improves the flow rate a bit, allowing for faster speeds

Describe alternatives you've considered

1Decreasing temperature => flow rate will drop, surface will get worse

Additional context

I've already requested such feature, but it was closed: https://github.com/SoftFever/OrcaSlicer/issues/2123

vgdh commented 1 week ago

Temperature probably should be calculated ahead of time based on future volumetric flow. May be some number of seconds before slowing down of the flow it should starting lowering the temperature. Also it probably will cause some quality inconsistency on the surface of the print. It should be tested.

TheUnlimited64 commented 6 days ago

I think if it's implemented correctly, it can work quite well

On many objects you have many layers that you can print damn fast and therefore hot, that would increase layer adhesion

And on smaller you'll slow down and print cooler. Like for example a overhang curve, that one would definitely benefit from being printed cooler

igiannakas commented 5 days ago

The problem is that you cannot adjust the hot end temperature fast enough to adapt it for an overhang specifically. The hot end takes a good 5-10 seconds or more to drop from say 220 to 200c so it would need to be changed ahead of time (most likely in the layer before the overhang). Also it cannot heat up instantly after the overhang so when you accelerate back to normal print speeds you’ll get lower than desired filament temperature. Unless you end up slowing down the entirety of the layer to match the heat up time of the nozzle.

however from my testing, changing speeds has a big impact on surface quality and it will cause more inconsistencies on the external walls than it fixes by printing overhangs better.

the solution to this issue is really better cooling. Higher fan speeds offset the slight overheating of the filament over the overhangs.

TheUnlimited64 commented 5 days ago

I thought of matching flow rate and temperature consistently, so it could also predict the nozzle temperature ahead of time

So in the last few mm^3 it decreases temperature step by step and also the speed, so the filament that leaves the nozzle would always have the same temperature

If the nozzle stays high and the flow decreases, the filament melts more, what makes it a bit hard to print, especially when there are big and small sections (with overhangs)

But maybe my idea doesn't work out as intended

igiannakas commented 5 days ago

The problem is thermal inertia. It takes time from when you command a temperature change to when it actually happens.

TheUnlimited64 commented 5 days ago

I know I know,

But that could probably be calibrated like pressure advance, where the pressure is Also non linear and direct

kylek29 commented 4 days ago

Also the different speeds with constant temperature can result in a different texutre (matte and glossy)

I think that is going to be primarily addressed with the new experimental option (it's in 2.1) to not reduce speeds on the perimeter layers -- that should go a long way with the sheen shifting.