Skip to content

Commit

Permalink
Merge pull request #3121 from wavexx/reduce_m600_min_height
Browse files Browse the repository at this point in the history
Revert/cleanup mininum extruder height during M600
  • Loading branch information
DRracer authored Apr 22, 2021
2 parents 1e0fd8a + daef542 commit 00ce16e
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 14 deletions.
7 changes: 4 additions & 3 deletions Firmware/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -551,9 +551,10 @@ enum CalibrationStatus

// Try to maintain a minimum distance from the bed even when Z is
// unknown when doing the following operations
#define MIN_Z_FOR_LOAD 50
#define MIN_Z_FOR_UNLOAD 50
#define MIN_Z_FOR_PREHEAT 10
#define MIN_Z_FOR_LOAD 50 // lcd filament loading or autoload
#define MIN_Z_FOR_UNLOAD 50 // lcd filament unloading
#define MIN_Z_FOR_SWAP 27 // filament change (including M600)
#define MIN_Z_FOR_PREHEAT 10 // lcd preheat

#include "Configuration_adv.h"
#include "thermistortables.h"
Expand Down
12 changes: 6 additions & 6 deletions Firmware/Marlin_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3622,12 +3622,12 @@ static T gcode_M600_filament_change_z_shift()
#ifdef FILAMENTCHANGE_ZADD
static_assert(Z_MAX_POS < (255 - FILAMENTCHANGE_ZADD), "Z-range too high, change the T type from uint8_t to uint16_t");
// avoid floating point arithmetics when not necessary - results in shorter code
T z_shift = T(FILAMENTCHANGE_ZADD); // always move above printout
T ztmp = T( current_position[Z_AXIS] );
T z_shift = 0;
if(ztmp < T(25)){
z_shift = T(25) - ztmp; // make sure to be at least 25mm above the heat bed
}
return z_shift + T(FILAMENTCHANGE_ZADD); // always move above printout
if((ztmp + z_shift) < T(MIN_Z_FOR_SWAP)){
z_shift = T(MIN_Z_FOR_SWAP) - ztmp; // make sure to be at least 25mm above the heat bed
}
return z_shift;
#else
return T(0);
#endif
Expand Down Expand Up @@ -3676,7 +3676,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float

// Unload filament
if (mmu_enabled) extr_unload(); //unload just current filament for multimaterial printers (used also in M702)
else unload_filament(); //unload filament for single material (used also in M702)
else unload_filament(true); //unload filament for single material (used also in M702)
//finish moves
st_synchronize();

Expand Down
9 changes: 5 additions & 4 deletions Firmware/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4888,7 +4888,7 @@ void lcd_wizard(WizState state)
lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));
wait_preheat();
//unload current filament
unload_filament();
unload_filament(true);
//load filament
lcd_wizard_load();
setTargetHotend(0, 0); //we are finished, cooldown nozzle
Expand Down Expand Up @@ -6203,13 +6203,14 @@ static void change_extr_menu(){
}
#endif //SNMM

//unload filament for single material printer (used in M702 gcode)
void unload_filament()
// unload filament for single material printer (used in M702 gcode)
// @param automatic: If true, unload_filament is part of a unload+load sequence (M600)
void unload_filament(bool automatic)
{
custom_message_type = CustomMsg::FilamentLoading;
lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT));

raise_z_above(MIN_Z_FOR_UNLOAD);
raise_z_above(automatic? MIN_Z_FOR_SWAP: MIN_Z_FOR_UNLOAD);

// extr_unload2();

Expand Down
2 changes: 1 addition & 1 deletion Firmware/ultralcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ extern bool bFilamentAction;
void mFilamentItem(uint16_t nTemp,uint16_t nTempBed);
void mFilamentItemForce();
void lcd_generic_preheat_menu();
void unload_filament();
void unload_filament(bool automatic = false);

void stack_error();
void lcd_printer_connected();
Expand Down

0 comments on commit 00ce16e

Please sign in to comment.