I have a Anycubic Kossel Linear Plus, with a Trigorilla board running Marlin 1.1.9 - this has been running nicely.
Now I have been wanting to use M600 (filament change), and I've *almost* got it working properly. Here's what I've got in the marlin code:
Extract from configuration_adv.h:
Extract from configuration.h:
I have also increase the maximum extrusion length so that it is greater than the load value shown above.
At the moment, the nozzle parks where I want it to park, the display beeps with the correct messages, the correct amount of filament is extruded to prime the nozzle, and the nozzle returns to the print when prompted. All fine so far.
My difficulty is with the filament load and unload - using the parameters shown above, the filament doesn't retract at all and it goes straight to the point where I get instructed to change the filament. When I press the button it immediately primes the nozzle, rather than loading filament.
I have also tried the following command:
M603 T0 U750 L700
Following this with M600 does unload the filament a bit - about 100 - 150mm - and does reload the filament again to slightly less length when instructed, and primes the nozzle. The problem is that I need the filament to retract about 750mm to get it most of the way out of the bowden tube, and the current results are way short.
At the time of running all these tests, the nozzle was well above the minimum nozzle temperature so that's not blocking things.
Where am I going wrong? I've looked at the Marlin gcode web pages for M603 and M600, but it doesn't indicate what the units are for these commands (I assumed mm).
All help appreciated...
Now I have been wanting to use M600 (filament change), and I've *almost* got it working properly. Here's what I've got in the marlin code:
Extract from configuration_adv.h:
#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 750 // (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 725 // (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 2 // 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
Extract from configuration.h:
#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z } #define NOZZLE_PARK_POINT { 0, -90, 50 } #define NOZZLE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) #define NOZZLE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) #endif
I have also increase the maximum extrusion length so that it is greater than the load value shown above.
At the moment, the nozzle parks where I want it to park, the display beeps with the correct messages, the correct amount of filament is extruded to prime the nozzle, and the nozzle returns to the print when prompted. All fine so far.
My difficulty is with the filament load and unload - using the parameters shown above, the filament doesn't retract at all and it goes straight to the point where I get instructed to change the filament. When I press the button it immediately primes the nozzle, rather than loading filament.
I have also tried the following command:
M603 T0 U750 L700
Following this with M600 does unload the filament a bit - about 100 - 150mm - and does reload the filament again to slightly less length when instructed, and primes the nozzle. The problem is that I need the filament to retract about 750mm to get it most of the way out of the bowden tube, and the current results are way short.
At the time of running all these tests, the nozzle was well above the minimum nozzle temperature so that's not blocking things.
Where am I going wrong? I've looked at the Marlin gcode web pages for M603 and M600, but it doesn't indicate what the units are for these commands (I assumed mm).
All help appreciated...