Skip to content

Conversation

@italocjs
Copy link
Contributor

Description

This feature has been developed to prevent clogs and jams caused by filament carbonization, usually caused by a nozzle being heated for too much time without extrusion (usually as result of someone preheating and forgetting)

Logic:
It checks if extruder have not moved during FCP_TIMEOUT(in minutes) and check if temperature is above FCP_MIN_TRIGGER(celsius), if both conditions are met, then it will set the nozzle and bed to their respective FCP_NOZZLE_TARGET and FCP_BED_TARGET

New files:
\features\FCP.h
\features\FCP.cpp

Changed:
\marlin.cpp (added the "call" for the funcion)
\configurations.h (added the definitions line from 2216 to 2230) and used my printer config to test.

Benefits

Prevent user-caused clog and jams

Future improvements

1 - As said in the "best pratices" i did not managed to make use of the elapsed function (to compare time) duo overflows, so i wrote the time comparison code another way.

Related Issues

#16200

This feature has been developed to prevent a nozzle being heated too much time without extrusion (usually as result of someone preheating and forgetting),

Logic:
 it checks if extruder have not moved during FCP_TIMEOUT(minutes) and check if temperature is above FCP_MIN_TRIGGER(celsius), if both conditions are true, then set nozzle and bed to their respective FCP_NOZZLE_TARGET and FCP_BED_TARGET

New files:
\features\FCP.h
\features\FCP.cpp

Changed:
\marlin.cpp  (added the "call" for the funcion)

\configurations.h (added the definitions line 2216 to  2230) and used my printer config to test.
@extesy
Copy link

extesy commented Dec 30, 2019

@italocjs You should separate changes that are necessary for this feature from the rest of the changes that are specific for your printer.

@thinkyhead
Copy link
Member

Thanks for your contribution! Unfortunately we can't accept PRs directed at release branches. We make patches to the bugfix branches and only later do we push them out as releases. Please redo this PR starting with the bugfix-2.0.x branch and be careful to target bugfix-2.0.x when resubmitting the PR.

It may help to set your fork's default branch to bugfix-2.0.x.

See http://marlinfw.org/docs/development/getting_started_pull_requests.html for full instructions.

@thinkyhead thinkyhead changed the base branch from 2.0.x to bugfix-2.0.x January 2, 2020 03:15
@thinkyhead
Copy link
Member

The basic concept is sound, but the heuristic might be too simple and the behavior could be problematic when combined with other behaviors. For example, if the user does an intentional pause from the host, the temperature will not be returned to the previous state before continuing the job. Ideally, this should invoke a procedure like the current "pause" (or most of it) in which the screen is locked while the machine is in a temperature standby, and there is a prompt to re-heat and continue.

@italocjs
Copy link
Contributor Author

italocjs commented Jan 3, 2020

Hi @thinkyhead , sorry for the delay. Thanks for the fixes in the code, sorry i submitted to the wrong branch, i tried following that guide but i'm not sure where i did wrong.

Anyway, i agree with the pause situation, i'll try studying how the pause works and implement something to fix this.

@thinkyhead thinkyhead force-pushed the bugfix-2.0.x branch 2 times, most recently from 6a1a2d4 to 022b6b9 Compare January 5, 2020 07:54
@thinkyhead thinkyhead force-pushed the bugfix-2.0.x branch 9 times, most recently from f94b384 to bd550bb Compare January 15, 2020 07:27
@italocjs
Copy link
Contributor Author

Sorry, i'm quite new to github/programming, but was this merged into the bugfix? i cant find the feature there, if not, i noticed that the last message says something about conflicts, its because my config.h has my own configs?

@italocjs
Copy link
Contributor Author

Another thing i forgot to mention, i have been printing since i developed this (and thinkyhead improved) without any issue, it has worked well and only detected when i truly forgot

@thinkyhead
Copy link
Member

Have you tried the existing EXTRUDER_RUNOUT_PREVENT feature? Maybe the changes here should be merged with that feature instead of making it separate.

@thinkyhead thinkyhead changed the title [NEW FEATURE] Filament carbonization prevention Filament carbonization prevention Mar 4, 2020
@bill-orange
Copy link

bill-orange commented Mar 19, 2020

Is the incorporation of the feature on the road map? It would provide an backstop to my forgetfulness.

@thisiskeithb
Copy link
Member

Renaming this to “Heater Timeout” or similar (like the OctoPrint plugin) might be a better name.

It’d be a nice safety feature.

@thinkyhead thinkyhead force-pushed the FCP-feature branch 2 times, most recently from 5368f99 to ee5a5dd Compare May 6, 2020 03:16
@thinkyhead thinkyhead changed the title Filament carbonization prevention Hotend Protection - Prevent deep-fried filament clogs May 6, 2020
@thinkyhead thinkyhead merged commit 213d4b8 into MarlinFirmware:bugfix-2.0.x May 18, 2020
vgadreau pushed a commit to vgadreau/Marlin that referenced this pull request May 29, 2020
jmp0x0000 pushed a commit to jmp0x0000/Marlin that referenced this pull request Aug 7, 2020
HairingX pushed a commit to HairingX/Marlin that referenced this pull request Jun 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants