Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add independent setting for external perimeter fan speed #2921

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jschuh
Copy link
Contributor

@jschuh jschuh commented Sep 15, 2019

Adds a new setting and plumbs through the UI to independently control the fan speed for external perimeters. Higher fan speed on external perimeters improves surface finish and overhangs, while lower fan speeds for internal perimeters and infill improves layer adhesion. Filed as issues #2776 and #154.

@jschuh jschuh changed the title Add external_perimeter_fan_speed setting Add independent setting for external perimeter fan speed Oct 1, 2019
@jschuh
Copy link
Contributor Author

jschuh commented Oct 1, 2019

@bubnikv sorry to bug you, but since you had someone review and land my PR for fan speed visualization and you replied on the discussion in bug #154 I wondered if you could take a look at this change?

@jschuh
Copy link
Contributor Author

jschuh commented Oct 12, 2019

I've been running with this patch for several weeks now and am very happy with it. I don't have equipment to properly compare the strength of the resulting parts against those produced without the patch. However, anecdotally I'm now able to print at lower temperatures while getting robust parts with very good surface finish (particularly for top layers). This has been especially useful for structural PETG parts, because I can now enable the fan for only external perimeters, bridges, and overhangs. Whereas previously I would strengthen parts by making the tradeoff of either reducing the cooling (worsening the surface finish) or cranking up the nozzle temperature (worsening overhangs and bridges).

If you want to try this patch on Windows, here's a build compiled from my fork. I would certainly recommend you build from source rather than downloading and running random executables, but I appreciate that building isn't an option for everyone.

@xyyx
Copy link

xyyx commented Dec 13, 2019

@jschuh Tested. It works. But i think better to use it only on overhang perimeters instead all external. What do you think?

@jschuh
Copy link
Contributor Author

jschuh commented Dec 14, 2019

It sounds like what you're asking for can already be achieved by enabling "Detect bridging perimeters" under "Layers and perimeters". I know that I specifically wanted to control the fan speed for all external perimeters. My typical config is: very low or zero fan for infill and internal perimeters, medium fan speed for normal external perimeters, and the highest fan speed for bridges and overhangs (so I enable "Detect bridging perimeters").

@xyyx
Copy link

xyyx commented Dec 18, 2019

It sounds like what you're asking for can already be achieved by enabling "Detect bridging perimeters" under "Layers and perimeters". I know that I specifically wanted to control the fan speed for all external perimeters. My typical config is: very low or zero fan for infill and internal perimeters, medium fan speed for normal external perimeters, and the highest fan speed for bridges and overhangs (so I enable "Detect bridging perimeters").

Thanks. True! Found it.

@jschuh
Copy link
Contributor Author

jschuh commented Dec 21, 2019

@enricoturri1966 could you look into merging this? I think I added the feature in the safest way possible (i.e. clean merge, minimal changes, and doesn't take effect unless the new filament setting is added). I'm happy to make any other necessary changes, but I'd really appreciate getting it landed since I've found this feature essential for printing structural parts.

And sorry if you're the wrong person to ask, but I figured I'd give it a shot since you merged my last PR.

@rongith
Copy link
Contributor

rongith commented Jan 6, 2020

@jschuh, I'm interested in your PR. I'm trying to find ways to improve corner overhang that curls up. The main issue is that too much cooling stress the corners and the resulting shrink makes them curl up. Do you think your PR address that issue?
Test-Overhang-Remplissage-r08b - Defaut.zip

@jschuh
Copy link
Contributor Author

jschuh commented Apr 25, 2020

@rongith, I don't have any idea if this would address your issue. It might, since this patch allows me to print at lower temperatures with significantly reduced cooling. So, perhaps that would give you a lower temperature differential with the surrounding air, and thus reduce the curling affect. However, I assume there are a lot of other contributing factors (material, base temperature, ambient room temperature, etc.), and to be honest I haven't had the time to experiment with this patch in the last several months anyway.

@jschuh
Copy link
Contributor Author

jschuh commented Dec 9, 2020

@bubnikv any interest in pulling this in? I realize the PR is well over a year old at this point, but there's no conflicts since I've been maintaining it for a custom build I run locally. FWIW Superslicer has added an equivalent feature in the interim, so it seems like other people find it useful.

@bubnikv
Copy link
Collaborator

bubnikv commented Dec 9, 2020

Most likely not in this version. We have to evaluate its usefulness first.

@jschuh
Copy link
Contributor Author

jschuh commented Dec 9, 2020

Totally fair. I just figured I should ask since I realized that it's been sitting here long enough that the assumption might be it was bitrotted. Also, If it's evaluated and considered useful but changes are needed in the implementation/approach, I would be happy to make those.

@bubnikv
Copy link
Collaborator

bubnikv commented Dec 9, 2020

thanks

@jschuh
Copy link
Contributor Author

jschuh commented Feb 15, 2021

@bubnikv, figured I'd follow up to see if someone will be able to evaluate the usefulness of this change. Like I mentioned before, I'm happy to alter the implementation/approach if that would help.

@Drachenkaetzchen
Copy link
Contributor

Drachenkaetzchen commented Feb 28, 2021

This is an extremely useful feature. It allows for fine detail whilst retaining the strength.

Here's an example of 3 benchies, printed in ABS with 230°C in a build chamber. Print speed was 40mm/s max. From left to right:

  • Printed without cooling. Unable to break by hand.
  • Printed with 1% cooling fan. Relatively easy to break by hand.
  • Printed with 1% cooling fan for external perimeters only. Unable to break by hand.

Note: Newer Marlin Firmware can equalize the fan speed to the usable PWM range of a fan - 1% fan in the slicer equals to 20% PWM duty cycle.

20210228_180626

@Drachenkaetzchen
Copy link
Contributor

Out of curiosity I separated the chute of each benchy using pliers. It is noteworthy that ABS turns white if bent and in this case it shows us how effective the perimeter fan is compared to no fan or a permanent fan.

Again, left is without any fan, middle is with 1% permanent fan, right is 1% perimeter only fan.

20210228_191639

The middle chute took very little effort, the right one took a bit more force and the left one took quite some force.

It is also interesting to see that there is a small perimeter gap with the perimeter fan (rightmost chute), yet this part is much stronger than the permanent 1% fan one where the perimeters touch each other.

@jschuh
Copy link
Contributor Author

jschuh commented Mar 1, 2021

Thanks @Drachenkaetzchen, your testing matches what I've found anecdotally when printing with PETG and PC blends (I rarely print with ABS, so I don't have enough experience to say on that). I get a good surface finish and comparable part strength to no-fan by enabling the fan for only external perimeters and bridges/overhangs (after dialing in the exact cooling parameters for those flows).

@jschuh
Copy link
Contributor Author

jschuh commented Mar 30, 2021

@bubnikv, I see the version was recently switched to alpha. Any chance of someone taking a look at this in time for the next release? I'm happy to help, and make any changes or do any cleanup that might be needed. If you have specific prints or demonstrations you'd like to see of usefulness, I have a stock MK3S that I can test with.

@jschuh jschuh force-pushed the external_perimeter_fan_speed branch from 4cb6f93 to 6e33915 Compare July 15, 2021 16:41
@jschuh
Copy link
Contributor Author

jschuh commented Jul 15, 2021

I assume it's too late to target the current alpha, so I squashed and rebased the patch to make it easier to maintain my local build.

@Godrak
Copy link
Contributor

Godrak commented Mar 6, 2023

The upcoming Alpha 5 will introduce Dynamic Fan Speeds in Cooling section. Similarly to dynamic overhang speed, you will be able to set fan speed for certain extrusion overlap levels, with the rest covered by linear interpolation. It is a little bit different in the fact that the fan speed is driven by overhang size, not extrusion type.

I would like to know your opinion, whether you prefer to use high fan speed on all external perimeters, or if the overhang driven fan speed is sufficient.

@jschuh
Copy link
Contributor Author

jschuh commented Mar 6, 2023

@Godrak, I just took a quick look at the Alpha 5 implementation and it seems really useful. Accepting that, I still think there's a value in also having a separate fan speed for external perimeters, because it helps avoid tradeoffs between layer adhesion and surface finish. This assumes something like ABS or PETG, where you usually don't even want any cooling for well-supported internal extrusions, but cooling on the external perimeters helps ensure that the extrusions look even and consistent.

I actually tested this late last year with a very hacked up version of this sort of overhang cooling, and while at first I thought it made external perimeter cooling unnecessary, after a bunch of attempts I found that the exterior extrusions just didn't look as good with only the overlap-based cooling. Functionally I wouldn't say there was any difference in parts, but there was just a lot of variation between matte and glossy surfaces in the extrusions, and in general the extrusion lines looked less uniform. I could of course dial up the base cooling a bit to improve the surface finish, but then I would get worse layer adhesion.

I'll see if I can integrate this PR with the Alpha 5 code and run off some prints to demonstrate what I encountered. Although, I may not get to it for a bit (I've had COVID for the last week and am only just getting back to normal).

@Godrak
Copy link
Contributor

Godrak commented Mar 7, 2023

Thanks, that is an interesting point about the consistent surface finish. Please, show your results if you do some testing.

@jschuh jschuh force-pushed the external_perimeter_fan_speed branch from 390530b to 354eaf7 Compare March 7, 2023 18:49
@jschuh
Copy link
Contributor Author

jschuh commented Mar 7, 2023

I just did a quick and dirty integration with ExtrusionQualityEstimator (the new code is so much easier to integrate with than the old code). The added UI is a minimum speed for external perimeters option tacked onto the Dynamic fan speeds section:

image

I'll try to run off some prints today or tomorrow that demonstrate the surface finish issues I mentioned.

@jschuh jschuh force-pushed the external_perimeter_fan_speed branch from 354eaf7 to 90cd1f8 Compare May 15, 2023 13:21
@fff7d1bc
Copy link

fff7d1bc commented Sep 4, 2023

@jschuh

I'll try to run off some prints today or tomorrow that demonstrate the surface finish issues I mentioned.

How did tests went? I am very much interested in this feature.

@jschuh
Copy link
Contributor Author

jschuh commented Sep 13, 2023

There's a difference in the surface finish; basically some portions of the print come out a bit more glossy versus having more of a sheen. But it's subtle enough that it just wasn't very noticeable when I tried to photograph it (at least for the filament I tried). So, I didn't bother uploading pics.

I have kept the PR updated, because it's what I run in my own build (see the last setting in the pic below for an example of how I use it).

image

The PR also fades in the dynamic fan speed (including the external perimeter fan), because otherwise you get a really stark change in surface finish at the layer that it kicks in.

@jschuh jschuh force-pushed the external_perimeter_fan_speed branch from 8d544ea to d8df128 Compare November 12, 2023 19:37
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Apr 18, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Apr 23, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Apr 24, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 7, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 7, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 7, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 10, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 12, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 21, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 25, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request May 26, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 1, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 8, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 13, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 14, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 16, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 21, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 23, 2024
vovodroid added a commit to vovodroid/PrusaSlicer that referenced this pull request Jun 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants