-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Do not heat the bed, on load/unload (or autoload) #2335
Do not heat the bed, on load/unload (or autoload) #2335
Conversation
I like the behavior. Maybe we can save some space by avoiding the repetition of the entire menu? |
@wavexx After the changes, we gain 22 bytes in program space. Every other method I tried resulted to a larger binary. |
If I could get a dime for every time I needed this before 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I gave this a try, it's nice, but if I already have the bed heated it will set it 0 which is something I do not expect. I also think this could cause problem if preheat is called for unload during the paused state where the bed /should/ be kept on.
When bPreheatOnlyNozzle
is set, instead of setting the bed temperature to zero in all menus, we should just skip setting the bed temperature in mFilamentItem
instead, leaving it as-is.
This avoids all the need for all checks in mFilamentItem_* functions.
Comments?
Firmware/ultralcd.cpp
Outdated
else lcd_generic_preheat_menu(); | ||
else | ||
{ | ||
bPreheatOnlyNozzle = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this one area I have some doubts on. Shouldn't "cut filament" also be a good candidate for bPreheatOnlyNozzle = true?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since I've never seen this functionality working, I left it untouched. But I think you are right.
@wavexx indeed the load/unload filament selection during a paused print, set the heated bed to 0 degrees. You have an excellent idea about moving the check into the But then, instead of setting the Also, as you proposed, we now set the So, after all these changes, the compiled code size decreased another 108 bytes and now the whole functionality occupies 194 bytes of code. PS. The load/unload temperatures during a paused print still are not set correctly. For example, if the user cancels the unloading of the filament while waiting for the nozzle to reach the requested temperature, then both the hotend and the heated bed temperatures are set to 0. But this is a preexisting issue, not related to this PR. |
That sounds bad :/, especially in pause this would detach the print. |
Steps to reproduce:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know if my review does anything, but I tested the changes and it works perfectly.
I filed a new bug for the unload behavior during a pause to keep track of it. It's a good idea to fix this separately. |
After using this again, I'm afraid I've run into the same problem I had into PR #2386. While heating the extruder, |
My bad. The last commit broke the main functionality, due to the continues call of the |
I returned this PR to a working state. I tried to keep the current logic, but the resulted code/logic was too complex. Also, I fixed the bug of resetting the bed temperature after a 'Cancel filament loading' during a paused print. |
Really like that is also now shows the bed temperature while heating. Still.. nTarget*Old is technically lost when calling mFilamentItem multiple times, which I think defeats the purpose of the |
Since the Now the source is as clean and compact as it can get. |
A value of true for the The two variables Since I cannot also find any use for them, I push another commit with these variables removed. |
028273f
to
b63fd90
Compare
👍 I've been looking at powerpanic issues lately, but I'll get back to this asap :) |
Looking back, is #2385 by chance also addressed? |
Yes, this PR also fixes the #2385. |
I've also identified 2 "problems" that have to do with the temperature display, but are not relevant to this PR:
@wavexx Do you suggest a new PR? |
@Panayiotis-git after some internal (flame-war :) ) discussion, there is another valid opinion on this issue - it is not about technical solution, but if you are unloading and loading a piece of filament, you may very well also want to start printing - therefore the bed heating (it is more likely).
|
Marking as FW 3.10 - we shall decide about the generally accepted solution here. |
My 2c, I personally really like the behavior since I switch between materials quite often. I also like a lot the cleanup of the preheat flags too. |
I rarely leave the printer with a filament loaded and when I finish a printing I usually remove the filament and keep it stored into its sealing bag to avoid absorbing humidity. I have also used the filament loading functionality of this PR some times, like to do a cold-pull cleaning to the hot-end. If I want to start a printing afterwards, I usually go through the preheat menu. Then, after everything reached the target temperatures, I simply select the Load filament function. It is useful if I want to heat uniformly the bed so I preheat it and leave it for a couple of minutes before I start the printing. In general, I mostly use the Load/unload functionality as it is implemented with this PR rather than the preheat menu. Regarding the custom preheat profiles, it is indeed a very useful feature especially for the cases when the filament is not included in the printer's list and requires special temperature handling. My opinion is that the custom preheat profiles rather complement than replace this PR. Otherwise, as a user, I would have to re-create the existing list of filaments with custom profiles only to set the bed temperature to 0 degrees. The solution to use some sort of settings to allow/disable the bed heating while loading/unloading sounds interesting. Although, I would leave it to disabled, I think it gives the user more choices. |
857900f
to
2450c4b
Compare
Given the age of this PR I think it's safe to assume this will never be merged (although it is annoying AF). Maybe worth setting up a GCODE macro for it then.
|
a51cb29
to
40c241c
Compare
40c241c
to
1bd1340
Compare
a7be650
to
1f995ce
Compare
4 years old annoying bug. Please merge. |
1f995ce
to
67eb439
Compare
The feature implementation including the menu setting, now occupies only 280 bytes. |
67eb439
to
b4c4420
Compare
How many mk3's has Prusa sold overall? 200k? 500k units? How many billions watt-hours of energy were wasted for bed heating while user wants to only unload the filament after finished printing? How long this bug is well known?: 4.5 years. |
b4c4420
to
104a156
Compare
🔥 @DRracer |
@Panayiotis-git Hi 👋 thanks for this PR and sorry this is taking so long to merge. I'm testing your PR at the moment and am seeing it doesn't work as I expected when using the Preheat menu If I select PLA from Preheat menu, the Bed is heated regardless of what the EEPROM setting is. Is this expected behavior? If I apply the fix below, then your PR also works for the Preheat menu :) This is super useful for me when testing the MMU. Note I am OK with this not being applied to the Preheat menu, just thought I'd ask about this. I will try to avoid creating conflict with this PR until we have decided whether to merge or not next week. 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving the current state of the PR 👍 Works great when using for example "Load to Nozzle" menu.
PR will need one more rebase due to a recent merge to add PA to the filament menu. 3e976e0
@gudnimg, the Preheat action was intentionally left out from this PR. The logic is that from the Preheat menu you can preheat both nozzle and bed for the selected filament. But for the filament handling actions, only the nozzle will be heated. TY, for your review! |
If during a paused print, the preheat is canceled, keep the bed target temperature Display bed temperatures only if bed is also heated Remove not needed variables nTargetOld and nTargetBedOld from the mFilamentItem function Define new Setting "HeatBedOnLoad" [Yes/No]
104a156
to
c75c81c
Compare
Travis build failed, with message: Is there something I can do, in the context of this PR, to correct this error? |
@Panayiotis-git no the French translation is currently too large (byte wise). It's failing all builds at the moment, but it should be resolved hopefully very soon. For this PR, this error should not prevent a merge. |
It has been requested a long time ago:
#422
#2295
Since I've already implemented and tested this improvement for months, I thing I can share it.