Explorar el Código

Merge pull request #5794 from thinkyhead/rc_m600_improve

M600 wait for heatup, prevent stepper timeout, etc.
Scott Lahteine hace 8 años
padre
commit
babe1d211c
Se han modificado 27 ficheros con 412 adiciones y 143 borrados
  1. 5
    1
      Marlin/Configuration_adv.h
  2. 91
    16
      Marlin/Marlin_main.cpp
  3. 1
    1
      Marlin/dogm_font_data_ISO10646_1_tr.h
  4. 4
    0
      Marlin/endstops.cpp
  5. 3
    1
      Marlin/enum.h
  6. 36
    27
      Marlin/example_configurations/Cartesio/Configuration_adv.h
  7. 5
    1
      Marlin/example_configurations/Felix/Configuration_adv.h
  8. 5
    1
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  9. 5
    1
      Marlin/example_configurations/Hephestos_2/Configuration_adv.h
  10. 36
    27
      Marlin/example_configurations/K8200/Configuration_adv.h
  11. 36
    27
      Marlin/example_configurations/K8400/Configuration_adv.h
  12. 5
    1
      Marlin/example_configurations/RigidBot/Configuration_adv.h
  13. 5
    1
      Marlin/example_configurations/SCARA/Configuration_adv.h
  14. 36
    27
      Marlin/example_configurations/TAZ4/Configuration_adv.h
  15. 5
    1
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  16. 5
    1
      Marlin/example_configurations/delta/generic/Configuration_adv.h
  17. 5
    1
      Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
  18. 5
    1
      Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
  19. 5
    1
      Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
  20. 5
    1
      Marlin/example_configurations/makibox/Configuration_adv.h
  21. 5
    1
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  22. 1
    0
      Marlin/language.h
  23. 20
    1
      Marlin/language_en.h
  24. 63
    3
      Marlin/ultralcd.cpp
  25. 11
    0
      Marlin/ultralcd_impl_DOGM.h
  26. 8
    0
      Marlin/ultralcd_impl_HD44780.h
  27. 1
    0
      README.md

+ 5
- 1
Marlin/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 91
- 16
Marlin/Marlin_main.cpp Ver fichero

7290
 
7290
 
7291
 #if ENABLED(FILAMENT_CHANGE_FEATURE)
7291
 #if ENABLED(FILAMENT_CHANGE_FEATURE)
7292
 
7292
 
7293
+  millis_t next_buzz = 0;
7294
+  unsigned long int runout_beep = 0;
7295
+
7296
+  void filament_change_beep() {
7297
+    const millis_t ms = millis();
7298
+    if (ELAPSED(ms, next_buzz)) {
7299
+      if (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS + 5) { // Only beep as long as we're supposed to
7300
+        next_buzz = ms + (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS ? 2500 : 400);
7301
+        BUZZ(300, 2000);
7302
+        runout_beep++;
7303
+      }
7304
+    }
7305
+  }
7306
+
7307
+  static bool busy_doing_M600 = false;
7308
+
7293
   /**
7309
   /**
7294
    * M600: Pause for filament change
7310
    * M600: Pause for filament change
7295
    *
7311
    *
7310
       return;
7326
       return;
7311
     }
7327
     }
7312
 
7328
 
7329
+    busy_doing_M600 = true;  // Stepper Motors can't timeout when this is set
7330
+
7331
+    // Pause the print job timer
7332
+    bool job_running = print_job_timer.isRunning();
7333
+    print_job_timer.pause();
7334
+
7313
     // Show initial message and wait for synchronize steppers
7335
     // Show initial message and wait for synchronize steppers
7314
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
7336
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
7315
     stepper.synchronize();
7337
     stepper.synchronize();
7327
       #define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S);
7349
       #define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S);
7328
     #endif
7350
     #endif
7329
 
7351
 
7330
-    KEEPALIVE_STATE(IN_HANDLER);
7331
-
7332
     // Initial retract before move to filament change position
7352
     // Initial retract before move to filament change position
7333
     if (code_seen('E')) destination[E_AXIS] += code_value_axis_units(E_AXIS);
7353
     if (code_seen('E')) destination[E_AXIS] += code_value_axis_units(E_AXIS);
7334
     #if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
7354
     #if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
7367
 
7387
 
7368
     stepper.synchronize();
7388
     stepper.synchronize();
7369
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD);
7389
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD);
7390
+    idle();
7370
 
7391
 
7371
     // Unload filament
7392
     // Unload filament
7372
     if (code_seen('L')) destination[E_AXIS] += code_value_axis_units(E_AXIS);
7393
     if (code_seen('L')) destination[E_AXIS] += code_value_axis_units(E_AXIS);
7384
     disable_e3();
7405
     disable_e3();
7385
     delay(100);
7406
     delay(100);
7386
 
7407
 
7387
-    #if HAS_BUZZER
7388
-      millis_t next_buzz = 0;
7389
-    #endif
7408
+    millis_t nozzle_timeout = millis() + FILAMENT_CHANGE_NOZZLE_TIMEOUT * 1000L;
7409
+    bool nozzle_timed_out = false;
7410
+    float temps[4];
7390
 
7411
 
7391
     // Wait for filament insert by user and press button
7412
     // Wait for filament insert by user and press button
7392
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
7413
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
7393
 
7414
 
7394
-    // LCD click or M108 will clear this
7395
-    wait_for_user = true;
7415
+    idle();
7416
+
7417
+    wait_for_user = true;    // LCD click or M108 will clear this
7418
+    next_buzz = 0;
7419
+    runout_beep = 0;
7420
+    HOTEND_LOOP() temps[e] = thermalManager.target_temperature[e]; // Save nozzle temps
7396
 
7421
 
7397
     while (wait_for_user) {
7422
     while (wait_for_user) {
7398
-      #if HAS_BUZZER
7399
-        millis_t ms = millis();
7400
-        if (ms >= next_buzz) {
7401
-          BUZZ(300, 2000);
7402
-          next_buzz = ms + 2500; // Beep every 2.5s while waiting
7423
+      millis_t current_ms = millis();
7424
+      if (nozzle_timed_out)
7425
+        lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
7426
+
7427
+      #if HAS_BUZZER 
7428
+        filament_change_beep();
7429
+      #endif
7430
+
7431
+      if (current_ms >= nozzle_timeout) {
7432
+        if (!nozzle_timed_out) {
7433
+          nozzle_timed_out = true; // on nozzle timeout remember the nozzles need to be reheated
7434
+          HOTEND_LOOP() thermalManager.setTargetHotend(0, e); // Turn off all the nozzles
7435
+          lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
7436
+        }
7437
+      }
7438
+      idle(true);
7439
+    }
7440
+
7441
+    if (nozzle_timed_out)      // Turn nozzles back on if they were turned off
7442
+      HOTEND_LOOP() thermalManager.setTargetHotend(temps[e], e);
7443
+
7444
+    // Show "wait for heating"
7445
+    lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
7446
+
7447
+    wait_for_heatup = true;
7448
+    while (wait_for_heatup) {
7449
+      idle();
7450
+      wait_for_heatup = false;
7451
+      HOTEND_LOOP() {
7452
+        if (abs(thermalManager.degHotend(e) - temps[e]) > 3) {
7453
+          wait_for_heatup = true;
7454
+          break;
7403
         }
7455
         }
7456
+      }
7457
+    }
7458
+
7459
+    // Show "insert filament"
7460
+    if (nozzle_timed_out)
7461
+      lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
7462
+
7463
+    wait_for_user = true;    // LCD click or M108 will clear this
7464
+    next_buzz = 0;
7465
+    runout_beep = 0;
7466
+    while (wait_for_user && nozzle_timed_out) {
7467
+      #if HAS_BUZZER
7468
+        filament_change_beep();
7404
       #endif
7469
       #endif
7405
       idle(true);
7470
       idle(true);
7406
     }
7471
     }
7407
 
7472
 
7408
-    // Show load message
7473
+    // Show "load" message
7409
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD);
7474
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD);
7410
 
7475
 
7411
     // Load filament
7476
     // Load filament
7434
 
7499
 
7435
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_RESUME);
7500
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_RESUME);
7436
 
7501
 
7437
-    KEEPALIVE_STATE(IN_HANDLER);
7438
-
7439
     // Set extruder to saved position
7502
     // Set extruder to saved position
7440
     destination[E_AXIS] = current_position[E_AXIS] = lastpos[E_AXIS];
7503
     destination[E_AXIS] = current_position[E_AXIS] = lastpos[E_AXIS];
7441
     planner.set_e_position_mm(current_position[E_AXIS]);
7504
     planner.set_e_position_mm(current_position[E_AXIS]);
7459
 
7522
 
7460
     // Show status screen
7523
     // Show status screen
7461
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS);
7524
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS);
7525
+
7526
+    // Resume the print job timer if it was running
7527
+    if (job_running) print_job_timer.start();
7528
+
7529
+    busy_doing_M600 = false;  // Allow Stepper Motors to be turned off during inactivity
7462
   }
7530
   }
7463
 
7531
 
7464
 #endif // FILAMENT_CHANGE_FEATURE
7532
 #endif // FILAMENT_CHANGE_FEATURE
10074
 
10142
 
10075
   if (max_inactive_time && ELAPSED(ms, previous_cmd_ms + max_inactive_time)) kill(PSTR(MSG_KILLED));
10143
   if (max_inactive_time && ELAPSED(ms, previous_cmd_ms + max_inactive_time)) kill(PSTR(MSG_KILLED));
10076
 
10144
 
10077
-  if (stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
10145
+  // Prevent steppers timing-out in the middle of M600
10146
+  #if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT)
10147
+    #define M600_TEST !busy_doing_M600
10148
+  #else
10149
+    #define M600_TEST true
10150
+  #endif
10151
+             
10152
+  if (M600_TEST && stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
10078
       && !ignore_stepper_queue && !planner.blocks_queued()) {
10153
       && !ignore_stepper_queue && !planner.blocks_queued()) {
10079
     #if ENABLED(DISABLE_INACTIVE_X)
10154
     #if ENABLED(DISABLE_INACTIVE_X)
10080
       disable_x();
10155
       disable_x();

+ 1
- 1
Marlin/dogm_font_data_ISO10646_1_tr.h Ver fichero

31
   X Font      ascent = 7 descent=-1
31
   X Font      ascent = 7 descent=-1
32
   Max Font    ascent = 8 descent=-1
32
   Max Font    ascent = 8 descent=-1
33
 */
33
 */
34
-#include "U8glib.h"
34
+#include <U8glib.h>
35
 const u8g_fntpgm_uint8_t ISO10646_TR[2591] U8G_SECTION(".progmem.ISO10646_TR") = {
35
 const u8g_fntpgm_uint8_t ISO10646_TR[2591] U8G_SECTION(".progmem.ISO10646_TR") = {
36
   0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
36
   0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
37
   255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
37
   255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,

+ 4
- 0
Marlin/endstops.cpp Ver fichero

217
     SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
217
     SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
218
     SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
218
     SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
219
   #endif
219
   #endif
220
+  #if ENABLED(FILAMENT_RUNOUT_SENSOR)
221
+    SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
222
+    SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
223
+  #endif
220
 } // Endstops::M119
224
 } // Endstops::M119
221
 
225
 
222
 #if ENABLED(Z_DUAL_ENDSTOPS)
226
 #if ENABLED(Z_DUAL_ENDSTOPS)

+ 3
- 1
Marlin/enum.h Ver fichero

143
       FILAMENT_CHANGE_MESSAGE_EXTRUDE,
143
       FILAMENT_CHANGE_MESSAGE_EXTRUDE,
144
       FILAMENT_CHANGE_MESSAGE_OPTION,
144
       FILAMENT_CHANGE_MESSAGE_OPTION,
145
       FILAMENT_CHANGE_MESSAGE_RESUME,
145
       FILAMENT_CHANGE_MESSAGE_RESUME,
146
-      FILAMENT_CHANGE_MESSAGE_STATUS
146
+      FILAMENT_CHANGE_MESSAGE_STATUS,
147
+      FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
148
+      FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
147
     };
149
     };
148
   #endif
150
   #endif
149
 #endif
151
 #endif

+ 36
- 27
Marlin/example_configurations/Cartesio/Configuration_adv.h Ver fichero

695
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
695
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
696
 #endif
696
 #endif
697
 
697
 
698
-// Add support for experimental filament exchange support M600; requires display
699
-#if ENABLED(ULTIPANEL)
700
-  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
701
-  #if ENABLED(FILAMENT_CHANGE_FEATURE)
702
-    #define FILAMENT_CHANGE_X_POS 30            // X position of hotend
703
-    #define FILAMENT_CHANGE_Y_POS 10            // Y position of hotend
704
-    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
705
-    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
706
-    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
707
-    #define FILAMENT_CHANGE_RETRACT_LENGTH 1    // Initial retract in mm
708
-                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
709
-    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
710
-    //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
711
-                                                // Longer length for bowden printers to unload filament from whole bowden tube,
712
-                                                // shorter lenght for printers without bowden to unload filament from extruder only,
713
-                                                // 0 to disable unloading for manual unloading
714
-    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
715
-    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
716
-                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
717
-                                                // Short or zero length for printers without bowden where loading is not used
718
-    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
719
-    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
720
-                                                // 0 to disable for manual extrusion
721
-                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
722
-                                                // or until outcoming filament color is not clear for filament color change
723
-    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
724
-  #endif
698
+/**
699
+ * Filament Change
700
+ * Experimental filament change support.
701
+ * Adds the GCode M600 for initiating filament change.
702
+ *
703
+ * Requires an LCD display.
704
+ * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
705
+ */
706
+//#define FILAMENT_CHANGE_FEATURE
707
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
708
+  #define FILAMENT_CHANGE_X_POS 30            // X position of hotend
709
+  #define FILAMENT_CHANGE_Y_POS 10            // Y position of hotend
710
+  #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
711
+  #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
712
+  #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
713
+  #define FILAMENT_CHANGE_RETRACT_LENGTH 1    // Initial retract in mm
714
+                                              // It is a short retract used immediately after print interrupt before move to filament exchange position
715
+  #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
716
+  //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
717
+                                              // Longer length for bowden printers to unload filament from whole bowden tube,
718
+                                              // shorter lenght for printers without bowden to unload filament from extruder only,
719
+                                              // 0 to disable unloading for manual unloading
720
+  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
721
+  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
+                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
+                                              // Short or zero length for printers without bowden where loading is not used
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
+  #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
+                                              // 0 to disable for manual extrusion
727
+                                              // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
+                                              // or until outcoming filament color is not clear for filament color change
729
+  #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
725
 #endif
734
 #endif
726
 
735
 
727
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/Felix/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/Hephestos/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/Hephestos_2/Configuration_adv.h Ver fichero

704
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
704
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
705
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
705
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
706
                                               // Short or zero length for printers without bowden where loading is not used
706
                                               // Short or zero length for printers without bowden where loading is not used
707
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
707
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
708
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
708
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
709
                                               // 0 to disable for manual extrusion
709
                                               // 0 to disable for manual extrusion
710
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
710
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
711
                                               // or until outcoming filament color is not clear for filament color change
711
                                               // or until outcoming filament color is not clear for filament color change
712
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
712
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
713
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
714
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
715
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
716
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
713
 #endif
717
 #endif
714
 
718
 
715
 /******************************************************************************\
719
 /******************************************************************************\

+ 36
- 27
Marlin/example_configurations/K8200/Configuration_adv.h Ver fichero

708
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
708
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
709
 #endif
709
 #endif
710
 
710
 
711
-// Add support for experimental filament exchange support M600; requires display
712
-#if ENABLED(ULTIPANEL)
713
-  #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
714
-  #if ENABLED(FILAMENT_CHANGE_FEATURE)
715
-    #define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
716
-    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
717
-    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
718
-    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
719
-    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
720
-    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
721
-                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
722
-    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
723
-    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
724
-                                                // Longer length for bowden printers to unload filament from whole bowden tube,
725
-                                                // shorter lenght for printers without bowden to unload filament from extruder only,
726
-                                                // 0 to disable unloading for manual unloading
727
-    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
728
-    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
729
-                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
730
-                                                // Short or zero length for printers without bowden where loading is not used
731
-    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
732
-    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
733
-                                                // 0 to disable for manual extrusion
734
-                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
735
-                                                // or until outcoming filament color is not clear for filament color change
736
-    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
737
-  #endif
711
+/**
712
+ * Filament Change
713
+ * Experimental filament change support.
714
+ * Adds the GCode M600 for initiating filament change.
715
+ *
716
+ * Requires an LCD display.
717
+ * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
718
+ */
719
+//#define FILAMENT_CHANGE_FEATURE
720
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
721
+  #define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
722
+  #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
723
+  #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
724
+  #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
725
+  #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
726
+  #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
727
+                                              // It is a short retract used immediately after print interrupt before move to filament exchange position
728
+  #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
729
+  #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
730
+                                              // Longer length for bowden printers to unload filament from whole bowden tube,
731
+                                              // shorter lenght for printers without bowden to unload filament from extruder only,
732
+                                              // 0 to disable unloading for manual unloading
733
+  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
734
+  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
735
+                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
736
+                                              // Short or zero length for printers without bowden where loading is not used
737
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
738
+  #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
739
+                                              // 0 to disable for manual extrusion
740
+                                              // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
741
+                                              // or until outcoming filament color is not clear for filament color change
742
+  #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
743
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
744
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
745
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
746
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
738
 #endif
747
 #endif
739
 
748
 
740
 /******************************************************************************\
749
 /******************************************************************************\

+ 36
- 27
Marlin/example_configurations/K8400/Configuration_adv.h Ver fichero

695
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
695
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
696
 #endif
696
 #endif
697
 
697
 
698
-// Add support for experimental filament exchange support M600; requires display
699
-#if ENABLED(ULTIPANEL)
700
-  #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
701
-  #if ENABLED(FILAMENT_CHANGE_FEATURE)
702
-    #define FILAMENT_CHANGE_X_POS 100           // X position of hotend
703
-    #define FILAMENT_CHANGE_Y_POS 100           // Y position of hotend
704
-    #define FILAMENT_CHANGE_Z_ADD 20            // Z addition of hotend (lift)
705
-    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
706
-    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
707
-    #define FILAMENT_CHANGE_RETRACT_LENGTH 5    // Initial retract in mm
708
-                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
709
-    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
710
-    #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
711
-                                                // Longer length for bowden printers to unload filament from whole bowden tube,
712
-                                                // shorter lenght for printers without bowden to unload filament from extruder only,
713
-                                                // 0 to disable unloading for manual unloading
714
-    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
715
-    #define FILAMENT_CHANGE_LOAD_LENGTH 600     // Load filament length over hotend in mm
716
-                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
717
-                                                // Short or zero length for printers without bowden where loading is not used
718
-    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
719
-    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100  // Extrude filament length in mm after filament is load over the hotend,
720
-                                                // 0 to disable for manual extrusion
721
-                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
722
-                                                // or until outcoming filament color is not clear for filament color change
723
-    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
724
-  #endif
698
+/**
699
+ * Filament Change
700
+ * Experimental filament change support.
701
+ * Adds the GCode M600 for initiating filament change.
702
+ *
703
+ * Requires an LCD display.
704
+ * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
705
+ */
706
+//#define FILAMENT_CHANGE_FEATURE
707
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
708
+  #define FILAMENT_CHANGE_X_POS 100           // X position of hotend
709
+  #define FILAMENT_CHANGE_Y_POS 100           // Y position of hotend
710
+  #define FILAMENT_CHANGE_Z_ADD 20            // Z addition of hotend (lift)
711
+  #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
712
+  #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
713
+  #define FILAMENT_CHANGE_RETRACT_LENGTH 5    // Initial retract in mm
714
+                                              // It is a short retract used immediately after print interrupt before move to filament exchange position
715
+  #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
716
+  #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
717
+                                              // Longer length for bowden printers to unload filament from whole bowden tube,
718
+                                              // shorter lenght for printers without bowden to unload filament from extruder only,
719
+                                              // 0 to disable unloading for manual unloading
720
+  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
721
+  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
+                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
+                                              // Short or zero length for printers without bowden where loading is not used
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
+  #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100  // Extrude filament length in mm after filament is load over the hotend,
726
+                                              // 0 to disable for manual extrusion
727
+                                              // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
+                                              // or until outcoming filament color is not clear for filament color change
729
+  #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
725
 #endif
734
 #endif
726
 
735
 
727
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/RigidBot/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/SCARA/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 36
- 27
Marlin/example_configurations/TAZ4/Configuration_adv.h Ver fichero

703
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
703
   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
704
 #endif
704
 #endif
705
 
705
 
706
-// Add support for experimental filament exchange support M600; requires display
707
-#if ENABLED(ULTIPANEL)
708
-  #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
709
-  #if ENABLED(FILAMENT_CHANGE_FEATURE)
710
-    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
711
-    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
712
-    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
713
-    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
714
-    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
715
-    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
716
-                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
717
-    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
718
-    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
719
-                                                // Longer length for bowden printers to unload filament from whole bowden tube,
720
-                                                // shorter lenght for printers without bowden to unload filament from extruder only,
721
-                                                // 0 to disable unloading for manual unloading
722
-    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
723
-    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
724
-                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
725
-                                                // Short or zero length for printers without bowden where loading is not used
726
-    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
727
-    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
728
-                                                // 0 to disable for manual extrusion
729
-                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
730
-                                                // or until outcoming filament color is not clear for filament color change
731
-    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
732
-  #endif
706
+/**
707
+ * Filament Change
708
+ * Experimental filament change support.
709
+ * Adds the GCode M600 for initiating filament change.
710
+ *
711
+ * Requires an LCD display.
712
+ * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
713
+ */
714
+//#define FILAMENT_CHANGE_FEATURE
715
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
716
+  #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
717
+  #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
718
+  #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
719
+  #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
720
+  #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
721
+  #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
722
+                                              // It is a short retract used immediately after print interrupt before move to filament exchange position
723
+  #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
724
+  #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
725
+                                              // Longer length for bowden printers to unload filament from whole bowden tube,
726
+                                              // shorter lenght for printers without bowden to unload filament from extruder only,
727
+                                              // 0 to disable unloading for manual unloading
728
+  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
729
+  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
730
+                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
731
+                                              // Short or zero length for printers without bowden where loading is not used
732
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
733
+  #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
734
+                                              // 0 to disable for manual extrusion
735
+                                              // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
736
+                                              // or until outcoming filament color is not clear for filament color change
737
+  #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
738
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
739
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
740
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
741
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
733
 #endif
742
 #endif
734
 
743
 
735
 /******************************************************************************\
744
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/WITBOX/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/delta/generic/Configuration_adv.h Ver fichero

723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
725
                                               // Short or zero length for printers without bowden where loading is not used
725
                                               // Short or zero length for printers without bowden where loading is not used
726
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
726
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
728
                                               // 0 to disable for manual extrusion
728
                                               // 0 to disable for manual extrusion
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
730
                                               // or until outcoming filament color is not clear for filament color change
730
                                               // or until outcoming filament color is not clear for filament color change
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
732
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
733
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
734
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
735
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
732
 #endif
736
 #endif
733
 
737
 
734
 /******************************************************************************\
738
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h Ver fichero

723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
725
                                               // Short or zero length for printers without bowden where loading is not used
725
                                               // Short or zero length for printers without bowden where loading is not used
726
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
726
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
728
                                               // 0 to disable for manual extrusion
728
                                               // 0 to disable for manual extrusion
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
730
                                               // or until outcoming filament color is not clear for filament color change
730
                                               // or until outcoming filament color is not clear for filament color change
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
732
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
733
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
734
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
735
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
732
 #endif
736
 #endif
733
 
737
 
734
 /******************************************************************************\
738
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h Ver fichero

728
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
728
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
729
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
729
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
730
                                               // Short or zero length for printers without bowden where loading is not used
730
                                               // Short or zero length for printers without bowden where loading is not used
731
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
731
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
732
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
732
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
733
                                               // 0 to disable for manual extrusion
733
                                               // 0 to disable for manual extrusion
734
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
734
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
735
                                               // or until outcoming filament color is not clear for filament color change
735
                                               // or until outcoming filament color is not clear for filament color change
736
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
736
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
737
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
738
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
739
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
740
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
737
 #endif
741
 #endif
738
 
742
 
739
 /******************************************************************************\
743
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h Ver fichero

723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
723
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
724
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
725
                                               // Short or zero length for printers without bowden where loading is not used
725
                                               // Short or zero length for printers without bowden where loading is not used
726
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
726
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
727
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
728
                                               // 0 to disable for manual extrusion
728
                                               // 0 to disable for manual extrusion
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
729
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
730
                                               // or until outcoming filament color is not clear for filament color change
730
                                               // or until outcoming filament color is not clear for filament color change
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
731
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
732
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
733
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
734
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
735
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
732
 #endif
736
 #endif
733
 
737
 
734
 /******************************************************************************\
738
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/makibox/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 5
- 1
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h Ver fichero

721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723
                                               // Short or zero length for printers without bowden where loading is not used
723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726
                                               // 0 to disable for manual extrusion
726
                                               // 0 to disable for manual extrusion
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728
                                               // or until outcoming filament color is not clear for filament color change
728
                                               // or until outcoming filament color is not clear for filament color change
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
732
+  #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
733
+                                                     // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
730
 #endif
734
 #endif
731
 
735
 
732
 /******************************************************************************\
736
 /******************************************************************************\

+ 1
- 0
Marlin/language.h Ver fichero

152
 #define MSG_Z2_MIN                          "z2_min: "
152
 #define MSG_Z2_MIN                          "z2_min: "
153
 #define MSG_Z2_MAX                          "z2_max: "
153
 #define MSG_Z2_MAX                          "z2_max: "
154
 #define MSG_Z_PROBE                         "z_probe: "
154
 #define MSG_Z_PROBE                         "z_probe: "
155
+#define MSG_FILAMENT_RUNOUT_SENSOR          "filament: "
155
 #define MSG_ERR_MATERIAL_INDEX              "M145 S<index> out of range (0-1)"
156
 #define MSG_ERR_MATERIAL_INDEX              "M145 S<index> out of range (0-1)"
156
 #define MSG_ERR_M355_NONE                   "No case light"
157
 #define MSG_ERR_M355_NONE                   "No case light"
157
 #define MSG_ERR_M421_PARAMETERS             "M421 required parameters missing"
158
 #define MSG_ERR_M421_PARAMETERS             "M421 required parameters missing"

+ 20
- 1
Marlin/language_en.h Ver fichero

33
 #ifndef WELCOME_MSG
33
 #ifndef WELCOME_MSG
34
   #define WELCOME_MSG                         MACHINE_NAME _UxGT(" ready.")
34
   #define WELCOME_MSG                         MACHINE_NAME _UxGT(" ready.")
35
 #endif
35
 #endif
36
+#ifndef MSG_BACK
37
+  #define MSG_BACK                            _UxGT("Back")
38
+#endif
36
 #ifndef MSG_SD_INSERTED
39
 #ifndef MSG_SD_INSERTED
37
   #define MSG_SD_INSERTED                     _UxGT("Card inserted")
40
   #define MSG_SD_INSERTED                     _UxGT("Card inserted")
38
 #endif
41
 #endif
486
 #ifndef MSG_DELTA_CALIBRATE_CENTER
489
 #ifndef MSG_DELTA_CALIBRATE_CENTER
487
   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center")
490
   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center")
488
 #endif
491
 #endif
489
-
490
 #ifndef MSG_INFO_MENU
492
 #ifndef MSG_INFO_MENU
491
   #define MSG_INFO_MENU                       _UxGT("About Printer")
493
   #define MSG_INFO_MENU                       _UxGT("About Printer")
492
 #endif
494
 #endif
583
 #ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME
585
 #ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME
584
   #define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resume print")
586
   #define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resume print")
585
 #endif
587
 #endif
588
+#ifndef MSG_FILAMENT_CHANGE_MINTEMP
589
+  #define MSG_FILAMENT_CHANGE_MINTEMP         _UxGT("Minimum Temp is ")
590
+#endif
591
+#ifndef MSG_FILAMENT_CHANGE_NOZZLE
592
+  #define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozzle: ")
593
+#endif
586
 
594
 
587
 //
595
 //
588
 // Filament Change screens show up to 3 lines on a 4-line display
596
 // Filament Change screens show up to 3 lines on a 4-line display
603
     #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("and press button")
611
     #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("and press button")
604
     #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("to continue...")
612
     #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("to continue...")
605
   #endif
613
   #endif
614
+  #ifndef MSG_FILAMENT_CHANGE_HEAT_1
615
+    #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Press button to")
616
+    #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("heat nozzle.")
617
+  #endif
618
+  #ifndef MSG_FILAMENT_CHANGE_HEATING_1
619
+    #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating nozzle")
620
+    #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Please wait...")
621
+  #endif
606
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
622
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
607
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wait for")
623
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wait for")
608
     #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament load")
624
     #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament load")
625
   #ifndef MSG_FILAMENT_CHANGE_INSERT_1
641
   #ifndef MSG_FILAMENT_CHANGE_INSERT_1
626
     #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert and Click")
642
     #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert and Click")
627
   #endif
643
   #endif
644
+  #ifndef MSG_FILAMENT_CHANGE_HEATING_1
645
+    #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating...")
646
+  #endif
628
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
647
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
629
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Loading...")
648
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Loading...")
630
   #endif
649
   #endif

+ 63
- 3
Marlin/ultralcd.cpp Ver fichero

54
 
54
 
55
 #if ENABLED(DOGLCD)
55
 #if ENABLED(DOGLCD)
56
   #include "ultralcd_impl_DOGM.h"
56
   #include "ultralcd_impl_DOGM.h"
57
+  #include <U8glib.h>
57
 #else
58
 #else
58
   #include "ultralcd_impl_HD44780.h"
59
   #include "ultralcd_impl_HD44780.h"
59
 #endif
60
 #endif
151
     void lcd_filament_change_unload_message();
152
     void lcd_filament_change_unload_message();
152
     void lcd_filament_change_insert_message();
153
     void lcd_filament_change_insert_message();
153
     void lcd_filament_change_load_message();
154
     void lcd_filament_change_load_message();
155
+    void lcd_filament_change_heat_nozzle();
154
     void lcd_filament_change_extrude_message();
156
     void lcd_filament_change_extrude_message();
155
     void lcd_filament_change_resume_message();
157
     void lcd_filament_change_resume_message();
156
   #endif
158
   #endif
948
     // Change filament
950
     // Change filament
949
     //
951
     //
950
     #if ENABLED(FILAMENT_CHANGE_FEATURE)
952
     #if ENABLED(FILAMENT_CHANGE_FEATURE)
951
-       MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
953
+      if (!thermalManager.tooColdToExtrude(active_extruder))
954
+        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
952
     #endif
955
     #endif
953
 
956
 
954
     END_MENU();
957
     END_MENU();
1384
         MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0);
1387
         MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0);
1385
         MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0);
1388
         MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0);
1386
       #endif
1389
       #endif
1390
+
1387
       //
1391
       //
1388
       // Change filament
1392
       // Change filament
1389
       //
1393
       //
1390
       #if ENABLED(FILAMENT_CHANGE_FEATURE)
1394
       #if ENABLED(FILAMENT_CHANGE_FEATURE)
1391
-        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
1395
+        if (!thermalManager.tooColdToExtrude(active_extruder))
1396
+          MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
1392
       #endif
1397
       #endif
1393
     #endif
1398
     #endif
1394
 
1399
 
2441
     }
2446
     }
2442
   #endif // LCD_INFO_MENU
2447
   #endif // LCD_INFO_MENU
2443
 
2448
 
2449
+  /**
2450
+   *
2451
+   * Filament Change Feature Screens
2452
+   *
2453
+   */
2444
   #if ENABLED(FILAMENT_CHANGE_FEATURE)
2454
   #if ENABLED(FILAMENT_CHANGE_FEATURE)
2455
+
2445
     void lcd_filament_change_toocold_menu() {
2456
     void lcd_filament_change_toocold_menu() {
2446
       START_MENU();
2457
       START_MENU();
2447
       STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
2458
       STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
2448
-      MENU_BACK(MSG_FILAMENTCHANGE);
2459
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
2460
+      MENU_BACK(MSG_BACK);
2461
+      STATIC_ITEM(" ");
2462
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2463
+      lcd_implementation_hotend_status();
2449
       END_MENU();
2464
       END_MENU();
2450
     }
2465
     }
2451
 
2466
 
2478
       #ifdef MSG_FILAMENT_CHANGE_INIT_3
2493
       #ifdef MSG_FILAMENT_CHANGE_INIT_3
2479
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3);
2494
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3);
2480
       #endif
2495
       #endif
2496
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2497
+      lcd_implementation_hotend_status();
2481
       END_SCREEN();
2498
       END_SCREEN();
2482
     }
2499
     }
2483
 
2500
 
2491
       #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
2508
       #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
2492
         STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3);
2509
         STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3);
2493
       #endif
2510
       #endif
2511
+      STATIC_ITEM (" ");
2512
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2513
+      lcd_implementation_hotend_status();
2514
+      END_SCREEN();
2515
+    }
2516
+
2517
+    void lcd_filament_change_wait_for_nozzles_to_heat() {
2518
+      START_SCREEN();
2519
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
2520
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
2521
+      #ifdef MSG_FILAMENT_CHANGE_HEATING_2
2522
+        STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
2523
+      #endif
2524
+      STATIC_ITEM(" ");
2525
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2526
+      lcd_implementation_hotend_status();
2527
+      END_SCREEN();
2528
+    }
2529
+
2530
+    void lcd_filament_change_heat_nozzle() {
2531
+      START_SCREEN();
2532
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
2533
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
2534
+      #ifdef MSG_FILAMENT_CHANGE_INSERT_2
2535
+        STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
2536
+      #endif
2537
+      STATIC_ITEM(" ");
2538
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2539
+      lcd_implementation_hotend_status();
2494
       END_SCREEN();
2540
       END_SCREEN();
2495
     }
2541
     }
2496
 
2542
 
2504
       #ifdef MSG_FILAMENT_CHANGE_INSERT_3
2550
       #ifdef MSG_FILAMENT_CHANGE_INSERT_3
2505
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3);
2551
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3);
2506
       #endif
2552
       #endif
2553
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2554
+      lcd_implementation_hotend_status();
2507
       END_SCREEN();
2555
       END_SCREEN();
2508
     }
2556
     }
2509
 
2557
 
2517
       #ifdef MSG_FILAMENT_CHANGE_LOAD_3
2565
       #ifdef MSG_FILAMENT_CHANGE_LOAD_3
2518
         STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3);
2566
         STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3);
2519
       #endif
2567
       #endif
2568
+      STATIC_ITEM(" ");
2569
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2570
+      lcd_implementation_hotend_status();
2520
       END_SCREEN();
2571
       END_SCREEN();
2521
     }
2572
     }
2522
 
2573
 
2530
       #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
2581
       #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
2531
         STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
2582
         STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
2532
       #endif
2583
       #endif
2584
+      STATIC_ITEM(" ");
2585
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2586
+      lcd_implementation_hotend_status();
2533
       END_SCREEN();
2587
       END_SCREEN();
2534
     }
2588
     }
2535
 
2589
 
2564
         case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
2618
         case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
2565
           lcd_goto_screen(lcd_filament_change_extrude_message);
2619
           lcd_goto_screen(lcd_filament_change_extrude_message);
2566
           break;
2620
           break;
2621
+        case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
2622
+          lcd_goto_screen(lcd_filament_change_heat_nozzle);
2623
+          break;
2624
+        case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
2625
+          lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat);
2626
+          break;
2567
         case FILAMENT_CHANGE_MESSAGE_OPTION:
2627
         case FILAMENT_CHANGE_MESSAGE_OPTION:
2568
           filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
2628
           filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
2569
           lcd_goto_screen(lcd_filament_change_option_menu);
2629
           lcd_goto_screen(lcd_filament_change_option_menu);

+ 11
- 0
Marlin/ultralcd_impl_DOGM.h Ver fichero

379
 
379
 
380
 //#define DOGM_SD_PERCENT
380
 //#define DOGM_SD_PERCENT
381
 
381
 
382
+
383
+static void lcd_implementation_hotend_status() {
384
+  u8g.setPrintPos(58, 60);
385
+  lcd_print((char)('0' + active_extruder));
386
+  lcd_print(' ');
387
+  lcd_print(' ');
388
+  lcd_print(itostr3(thermalManager.degHotend(active_extruder)));
389
+  lcd_print('/');
390
+  lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
391
+}
392
+
382
 static void lcd_implementation_status_screen() {
393
 static void lcd_implementation_status_screen() {
383
 
394
 
384
   bool blink = lcd_blink();
395
   bool blink = lcd_blink();

+ 8
- 0
Marlin/ultralcd_impl_HD44780.h Ver fichero

592
 
592
 
593
 #endif // LCD_PROGRESS_BAR
593
 #endif // LCD_PROGRESS_BAR
594
 
594
 
595
+static void lcd_implementation_hotend_status() {
596
+  lcd.setCursor(10, 3);
597
+  lcd.print(LCD_STR_THERMOMETER[active_extruder]);
598
+  lcd.print(itostr3(thermalManager.degHotend(active_extruder)));
599
+  lcd.print('/');
600
+  lcd.print(itostr3(thermalManager.degTargetHotend(active_extruder)));
601
+}
602
+
595
 /**
603
 /**
596
 Possible status screens:
604
 Possible status screens:
597
 16x2   |000/000 B000/000|
605
 16x2   |000/000 B000/000|

+ 1
- 0
README.md Ver fichero

19
 ## Recent Changes
19
 ## Recent Changes
20
 - RCBugFix
20
 - RCBugFix
21
   - Fixed broken MBL
21
   - Fixed broken MBL
22
+  - M600 heater timeout option
22
 
23
 
23
 - RC8 - 06 Dec 2016
24
 - RC8 - 06 Dec 2016
24
   - Major performance improvement for Graphical LCDs
25
   - Major performance improvement for Graphical LCDs

Loading…
Cancelar
Guardar