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

M600 can power down nozzles if filament change takes too long #5737

Closed
wants to merge 53 commits into from
Closed

Conversation

Roxy-3D
Copy link
Member

@Roxy-3D Roxy-3D commented Jan 23, 2017

Bug fix for the M600 Filament Change command.

Without these changes, the Filament Change code (especially if triggered by an 'End of Filament' sensor) fails to turn off the nozzle after a period of time. If the user is not near the machine, this can cause the filament to retract and the remaining filament in the nozzle to 'cook' until it jams or destroys the nozzle.

These changes allow the user to specify a 'safe time' after which the nozzle will cool down. If the nozzle cools down, the user can click the encoder wheel to start the re-heat process so the new filament can be inserted.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Jan 28, 2017

@Tannoo I wonder if we should specify which nozzle is active and being heated? Maybe something like:

Nozzle: 2    185 / 205   

And if so... The heatup loop would naturally display which ever nozzle was causing it to wait. It would get to a nozzle that is not up to temperature and complain about it. (All nozzles would be heating, but which ever one is the first found that fails to meet the desired temperature would get the message.)

@ghost
Copy link

ghost commented Jan 28, 2017

That would be good for multi-hotend setups.

@ghost
Copy link

ghost commented Jan 28, 2017

Testing now.. Got it.

I did it like this:

Nozzle X Temp: XXX
Nozzle X On: XXX
Nozzle X Off: XXX

Not enough room to show set point also.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Jan 29, 2017

Not enough room to show set point also.

Especially on the 4x20 displays... We could use an extra line if needed? But instead of Temp:, On:, and Off wouldn't it be clear to the user if we did 185/205 ? I might not understand what you mean. But the example:

Nozzle: 2  185/205 

That all fits on a 20 character line???

@ghost
Copy link

ghost commented Jan 29, 2017

If that is exactly how you want it displayed, ok.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Jan 29, 2017

If that is exactly how you want it displayed, ok.

Yes. It is mostly because of what has already been done. Right now, that is the format for Temperature on the various LCD Panels. That format will cause less confusion. People will see the two numbers and it will be obvious to them what it means. (Especially since nozzle temperature needs to be 'correct' in order to perform a filament change.)

@ghost
Copy link

ghost commented Jan 29, 2017

Alright...no objections. I'm just having a hard time creating it or even finding the previous implementation. Point me in the right direction?

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Jan 29, 2017

Alright...no objections. I'm just having a hard time creating it or even finding the previous implementation. Point me in the right direction?

I did not mean there was a previous version of M600 that did this. What I meant was the normal 'Status Screen' already displays the numbers that way. On the 20x4 displays it shows:

| 198/205  H 21/60

(The | and H are special characters. In the text above | is a thermometer symbol. If you choose to include the thermometer symbol, you should be able to encode that the same way the code displays it on the status screen)

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 7, 2017

OK! We need a number of people to load this Pull Request and test it. There was a lot of chaos because the changes got put into two different branches and needed to be merged.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 7, 2017

I had to mess with the

static void lcd_implementation_hotend_status() {
  u8g.setPrintPos(50, 60);
  lcd_print( (char) '0'+active_extruder );
  lcd_print( ' ' ); 
  lcd_print( ' ' ); 
  lcd_print(itostr3(thermalManager.degHotend(active_extruder)));
  lcd_print('/');
  lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
}

to get the nozzle number onto the Graphics LCD screen. And there were corresponding changes to ultralcd.cpp to eliminate all the lines that looked like:

     STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);

To strip the STRINGIFY(HOTENDS) out of the function call.

@ghost
Copy link

ghost commented Feb 7, 2017

M'kay, m'kay.

@ghost
Copy link

ghost commented Feb 7, 2017

I tested this branch and it works fine on this end.

@ghost
Copy link

ghost commented Feb 7, 2017

Esthetics: Can you move the Nozzle:0 xxx/xxx closer to center?

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 8, 2017

Esthetics: Can you move the Nozzle:0 xxx/xxx closer to center?

I shifted the Nozzle Temperature message 8 pixels to the right. That looks pretty close to centered.

But we seem to still have that double click at the very end.... I don't know what is causing that.

@ghost
Copy link

ghost commented Feb 8, 2017

I don't have that issue anymore. I click once before the nozzle shuts down and it starts extruding. No need to click again.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 8, 2017

I'm needing to click twice at the very end... It isn't that big of a deal... But it doesn't make sense to me.

@ghost
Copy link

ghost commented Feb 8, 2017

That was fixed with line 7434 in marlin_main.cpp.

@ghost
Copy link

ghost commented Feb 8, 2017

I'll try it again after this print that I have running.

@ghost
Copy link

ghost commented Feb 8, 2017

I'm needing to click twice at the very end

After loading, heating, or extruding?

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 8, 2017

At the Extrude more or Continue Print screen.

@ghost
Copy link

ghost commented Feb 8, 2017

Ok....I tried it during this print and yes, that is a new issue. It wasn't there before. OR... maybe I just didn't notice it before because I can't find any previous builds that are different enough to cause it.

@Roxy-3D
Copy link
Member Author

Roxy-3D commented Feb 8, 2017

Well... I'll find the cause soon enough... I'm moving the UBL code base to RC-8's RCBugFix. And I figured I'ld include the updated M600 just to get some more test time on it. The UBL code takes over the Encoder Wheel (and LCD Display) at certain points. So I'm going to be messing around with the button debouncing any way.

What ever is causing that... I'll find it. But it isn't a super high priority. It might take a couple of weeks to figure it out and clean up the problem. Also... It is very possible it doesn't happen on 20x4 LCD Displays. I won't know that until I try to bring up one of my older printers with the new UBL code base.

If you find the cause... Be sure to holler and let people know! But for the next couple of weeks... People can press the Encoder Wheel twice at the end of the M600. And there will be a bug fix soon enough for them! I don't think this keeps us from merging the Pull Request.

@ghost
Copy link

ghost commented Feb 8, 2017

I have a RepRap Discount LCD display in the mail. So, I will be able to test that when it gets here.

@thinkyhead
Copy link
Member

Doing a little git rebase -i to squash this down…

git rebase -i RCBugFix

...

pick 0e60411a3 Nozzle shutdown during M600
f a3d9be7d8 Nozzle shutdown during M600   
f d4a93f12e Nozzle shutdown during M600   
f 82ac90374 Nozzle shutdown during M600   
f 95a560dd0 fix botched edit   
pick 9236c5a21 Don't let compiler complain about integer overflow
pick 32784cfb8 Show nozzle temperature while heating nozzle
f ab8dab9da Show nozzle temperature while heating during M600   
f c44aff6ee Make M600 show nozzle temp while heating   
pick bfcc26bf5 Display active extruder during M600 instead of extruder 0
pick c207ec177 Try to get Travis happy
f f81cc6a40 Fix botched edit that confuses Travis   
f 19d5bddb6 Undo change to try to make Travis happy   
pick 8efdf3dc6 Change wording...
pick 568492ce9 Add Tannoo's new Filament Change Messages
f 3b2ddae8c One more Tannoo message added!   
f db37445be Switch over to Tannoo's symbolic text names   
pick e7556d4f1 Update Readme
pick cedb1f667 Update Marlin_main.cpp
pick d752bcb12 Show temp on more filament change screens
pick 959b56a7b Show Active Nozzle Temp
pick a9f4171ad A few subtle screen changes.. ;)
pick 8d0f4d4f9 Update ultralcd.cpp
f aaa396a54 Update ultralcd.cpp   
pick f93ba3ce1 Trying to make Travis happy
f aa5b8b032 Travis correction?   
f 1366dc85f Undoing last commit   
f abcbfda47 See if this helps   
f bd355dee8 Maybe Travis will like this?   
pick f3ce0ce7a Cleanup and toocold menu change (#3)
pick 689cb28aa Changes for Travis (#4)
f 136fc586a Declaration for Travis (#5)   
f e0df23460 Travis Happy Yet (#6)   
f 19b459554 Travis Happy Yet (#7)   
pick 9a221e595 Update ultralcd.h
f 06c4d69cd Update ultralcd.h   
f 22b00f45d Update ultralcd.h   
pick 01e3e3c89 Remove Filament Change from Prepare Menu if too cold
pick aaca9433c Update M119
pick e515a785d Beep timeout cleanup
pick 7cd048fae Missed a configuration setting.
pick be8f35604 Move Tannoo's changes to RCBugFix
f 25cb85da0 moving stuff over from RC branch   
f 71d9525ee move changes from RC to RCBugFix   
f a1fdd0e3e Move a definition from RC to RCBugFix   
pick df30043a3 Safer defaults for Filament Change
pick f3d3690de M600 will now display nozzle number on Graphics LCD's
f f261f1da4 Make M600 display correct active nozzle number   
r 8fd794adc Better center Hotend Status message   
f 28af8e160 Better center Nozzle Temp message   
f 2d9528d9c More tweaking to get message centered nicely

@thinkyhead
Copy link
Member

thinkyhead commented Feb 10, 2017

Superseded by #5794. Please test and confirm it still functions as designed.

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.

None yet

3 participants