Welcome! Log In Create A New Profile

Advanced

Filament change only purges

Posted by Calania 
Filament change only purges
January 29, 2019 10:58AM
Hello, today I decided to activate filament change on my printer running Marlin 1.1.9 on an Anet board. But now after flashing it, I can't get it to work as it should. What happens is that when I press change filament or run the m600 command it only does the last purge were it extrudes roughly 50 mm of filament. It skips the unloading and loading and starts with that. I have the max extrude length in the normal configuration file set to 650mm since I have a Bowden setup. Have I done anything wrong? Could someone please help me? Here is what I changed in configuration.adv
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
  #define PAUSE_PARK_RETRACT_FEEDRATE         60  // (mm/s) Initial retract feedrate.
  #define PAUSE_PARK_RETRACT_LENGTH            2  // (mm) Initial retract.
                                                  // This short retract is done immediately, before parking the nozzle.
  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE     10  // (mm/s) Unload filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_UNLOAD_ACCEL        25  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_UNLOAD_LENGTH      500  // (mm) The length of filament for a complete unload.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
                                                  //   Set to 0 for manual unloading.
  #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE   6  // (mm/s) Slow move when starting load.
  #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH     0  // (mm) Slow length, to allow time to insert material.
                                                  // 0 to disable start loading and skip to fast load only
  #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE   6  // (mm/s) Load filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_FAST_LOAD_ACCEL     25  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_FAST_LOAD_LENGTH     600  // (mm) Load length of filament, from extruder gear to nozzle.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
  //#define ADVANCED_PAUSE_CONTINUOUS_PURGE       // Purge continuously up to the purge length until interrupted.
  #define ADVANCED_PAUSE_PURGE_FEEDRATE        3  // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
  #define ADVANCED_PAUSE_PURGE_LENGTH         50  // (mm) Length to extrude after loading.
                                                  //   Set to 0 for manual extrusion.
                                                  //   Filament can be extruded repeatedly from the Filament Change menu
                                                  //   until extrusion is consistent, and to purge old filament.
 
                                                  // Filament Unload does a Retract, Delay, and Purge first:
  #define FILAMENT_UNLOAD_RETRACT_LENGTH      13  // (mm) Unload initial retract length.
  #define FILAMENT_UNLOAD_DELAY             5000  // (ms) Delay for the filament to cool after retract.
  #define FILAMENT_UNLOAD_PURGE_LENGTH         8  // (mm) An unretract is done, then this length is purged.
 
  #define PAUSE_PARK_NOZZLE_TIMEOUT           45  // (seconds) Time limit before the nozzle is turned off for safety.
  #define FILAMENT_CHANGE_ALERT_BEEPS         10  // Number of alert beeps to play when a response is needed.
  #define PAUSE_PARK_NO_STEPPER_TIMEOUT           // Enable for XYZ steppers to stay powered on during filament change.
 
  #define PARK_HEAD_ON_PAUSE                    // Park the nozzle during pause and filament change.
  //#define HOME_BEFORE_FILAMENT_CHANGE           // Ensure homing has been completed prior to parking for filament change
 
  #define FILAMENT_LOAD_UNLOAD_GCODES           // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
  //#define FILAMENT_UNLOAD_ALL_EXTRUDERS         // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
Re: Filament change only purges
June 19, 2019 11:01AM
Hi, i'm stuck in a similar issue.
It seems the parameter "FILAMENT_CHANGE_FAST_LOAD_LENGTH" is not recognized
I also changed the max length extrusion so it should work.

Have you been able to solve this?

Thanks
Re: Filament change only purges
June 19, 2019 11:38AM
Well, i got mine working. Changed the 2nd on marlin_main.cpp
I copied and commented out the original (3rd line)

I hope it helps!

constexpr float slow_load_length = FILAMENT_CHANGE_SLOW_LOAD_LENGTH;
const float fast_load_length = FILAMENT_CHANGE_FAST_LOAD_LENGTH; //CAMBIADO POR VIC
//BEFORE const float fast_load_length = ABS(parser.seen('L') ? parser.value_axis_units(E_AXIS) : filament_change_load_length[active_extruder]); //COMENTADO POR VIC
load_filament(slow_load_length, fast_load_length, ADVANCED_PAUSE_PURGE_LENGTH, FILAMENT_CHANGE_ALERT_BEEPS,
true, thermalManager.wait_for_heating(target_extruder), ADVANCED_PAUSE_MODE_LOAD_FILAMENT);
Re: Filament change only purges
December 23, 2019 01:23PM
I had the same problem with Marlin-2.0. Lots of trial and error revealed a workaround. It seems that the "FILAMENT_CHANGE_SLOW_LOAD_LENGTH" comment (// 0 to disable start loading and skip to fast load only) does not work properly. I set this value to 1, and now things work as expected.
Re: Filament change only purges
December 25, 2019 08:55PM
Hi,

if EEPROM is activated, Marlin will use its values, not those hardcoded in the sources.

No need to hack Marlin sources !

Do a M503 : you will probably get somewhere in the dump something like this : "M603 L0.00 U100.0". Whatever you defined for the advanced pause feature.
In order to ask Marlin to use the hardcoded values, do a M502, then save them to the EEPROM with M500. Now, the hardcoded values are in the EEPROM, and the advanced pause feature will work properly everytime Marlin is rebooted.

1 - set the advanced pause features parameters in Configuration_adv.h
2 - flash
3 - in a terminal, type M502 (or do "Initialize EEPROM" in the Configuration menu and you're done)
4 - if M502 was used, now type M500

done !

Do this everytime you change the advanced pause settings in your sources.

EEPROM explained : [github.com]

This could be explained somewhere in the Conf*_adv.h file... The #define organization is also a bit confusing as it does not reflect the chronology in load_filament() and unload_filament() functions in pause.cpp, or GcodeSuite::M701() and GcodeSuite::M702() in M701_M702.cpp.

These advanced features are labeled "experimental", but they are more than usefull with some extruders (BMGs are nearly impossible to load/unload manually). On my side, I had to read the cpp source files before I really understand what these functions do, and the meaning of the parameters : translating C to gcode helped a lot, for comprehension and for fine tuning.

Wanted to do some very basic reordering in the parameters + a few comments, but for, some reason, I can't pull request or commi on my own Git. So, I didn't even try to pull request on Marlin Git ! If someone could do it, I will post a slightly modded Configuration_adv.h later.
Sorry, only registered users may post in this forum.

Click here to login