-
-
Notifications
You must be signed in to change notification settings - Fork 19.4k
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 volumetric extrusion limit option #17017
Add volumetric extrusion limit option #17017
Conversation
d6fe340
to
b4e5d46
Compare
@thinkyhead thanks for the cleanup; it's much better that way ;-) |
d61029b
to
0aff434
Compare
rebased on bugfix-2.0.x; still no idea how to avoid MIN_STEPS_PER_SEGMENT 1 as workaround |
4638fa5
to
cde7514
Compare
…olumetric extruder limit is enforced) because the volumetric extruder limit could have been set to a very high value
708f951
to
f5bb0ec
Compare
39fe6ef
to
7aed32d
Compare
b052e90
to
1507c3f
Compare
Still no idea how to avoid MIN_STEPS_PER_SEGMENT 1 as workaround, therefore I have added a sanity check to ensure MIN_STEPS_PER_SEGMENT is set to 1 if VOLUMETRIC_EXTRUDER_LIMIT is enabled. |
…_limit # Conflicts: # Marlin/src/module/planner.cpp
7b92348
to
37176ed
Compare
… into Marlin-PR/bugfix-2.0.x-PR-volumetric_extrusion_limit
I'm printing (single extruder) for several weeks with this PR (including MIN_STEPS_PER_SEGMENT 1) w/o issues. Next I will add a spare feeder and migrate to dual extruder (single nozzle) as it's on my list for long time anyway. |
Sorry this has taken so long. There have been an unusual number of things ongoing lately. Re-reviewing… |
cec172f
to
cfad3d0
Compare
The only change I added was to retain compatibility with previous Backward-compatibility is always a concern, so this seems the best way to keep that behavior while also being able to use |
Bug with EEPROM.
|
I'm having very little coding experience, so please be patiently with me if the quality is not at the expected level.
Description
This PR will add an option (M200 Ln) to allows to configure volumetric based extrusion limits in cubic millimeter per second (mm^3/sec) for the extruders.
Please note, this PR was tested and works fine on my CoreXY w/ single extruder (non mixing). IMHO this PR needs more testing especially on mixing extruder as well as on printers with more extruders.
Requirements
Sadly there is still an issue that E axis is moving very very slow sometimes (due to configured volumetric based extrusion limits and in case of joined segments). I have no idea how to resolve it properly, therefore I use a workaround in my local config by setting MIN_STEPS_PER_SEGMENT 1
Benefits
Someone was asking for an option to set extruder volumetric limit w/o limiting given feedrate of E axis only moves (e.g. retraction). So this PR is just an (my) idea on how this could be implemented ;-)
It might help to prevent print failures and especially print jams, we need to be able to set a volumetric based extrusion limit. It's a value, measured in cubic millimeters per second (mm³/s), of exactly how much plastic can be extruded per second from your extruder and based on how fast the filament can physically melt in your hotend. If you exceed that limit, your printer will skip, and then likely jam.
IMHO using the printing speed settings of your slicer could be a misleading way to adjust print speed for 3D printers. How fast your print completes a 10 cubic millimeter print is entirely dependent on the how fast filament can be pushed through the nozzle.
Use of the head movement speed for adjusting print speed is based on CNC machines, where movement speed is everything, because nothing is extruding, you are cutting things. For 3D printing, you're most concerned with feeding filament for extrusion. You cannot exceed your printer's optimal extrusion rate for a particular filament or it will skip and likely jam your printer.
The volumetric based extrusion limit for a particular filament on a particular printer/extruder is a constant value. Being able to set a volumetric based limit for the extrusion rate is something you only need to do 1 time for a given filament, and a given printer configuration. It doesn't change, unless you change filament type, or change your printer configuration (e.g. replacing the nozzle by a bigger/smaller one).
Wouldn't it be great if one could adjust the layer height, extruder width, print speed or other slicer settings and not have to worry about a printer jam from exceeding the extruder's extrusion limit? No one likes to deal with a jammed printer/hotend. By having such settings, we greatly limit the possibility of jamming our printers when we fiddle with settings.
Related Issues / feature request:
I found some open issues / feature request ; see #6295 #16927