Browse Source

Added new feature for AutoParking Extruder (APE)

Vben 7 years ago
parent
commit
4817b39d98
39 changed files with 734 additions and 22 deletions
  1. 10
    0
      Marlin/Conditionals_post.h
  2. 15
    0
      Marlin/Configuration.h
  3. 170
    21
      Marlin/Marlin_main.cpp
  4. 28
    0
      Marlin/SanityCheck.h
  5. 1
    1
      Marlin/configuration_store.cpp
  6. 15
    0
      Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h
  7. 15
    0
      Marlin/example_configurations/AliExpress/CL-260/Configuration.h
  8. 15
    0
      Marlin/example_configurations/Anet/A6/Configuration.h
  9. 15
    0
      Marlin/example_configurations/Anet/A8/Configuration.h
  10. 15
    0
      Marlin/example_configurations/BQ/Hephestos/Configuration.h
  11. 15
    0
      Marlin/example_configurations/BQ/Hephestos_2/Configuration.h
  12. 15
    0
      Marlin/example_configurations/BQ/WITBOX/Configuration.h
  13. 15
    0
      Marlin/example_configurations/Cartesio/Configuration.h
  14. 15
    0
      Marlin/example_configurations/Creality/CR-10/Configuration.h
  15. 15
    0
      Marlin/example_configurations/Felix/Configuration.h
  16. 15
    0
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  17. 15
    0
      Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h
  18. 15
    0
      Marlin/example_configurations/Geeetech/GT2560/Configuration.h
  19. 15
    0
      Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h
  20. 15
    0
      Marlin/example_configurations/Infitary/i3-M508/Configuration.h
  21. 15
    0
      Marlin/example_configurations/Malyan/M150/Configuration.h
  22. 15
    0
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  23. 15
    0
      Marlin/example_configurations/RigidBot/Configuration.h
  24. 15
    0
      Marlin/example_configurations/SCARA/Configuration.h
  25. 15
    0
      Marlin/example_configurations/TinyBoy2/Configuration.h
  26. 15
    0
      Marlin/example_configurations/Velleman/K8200/Configuration.h
  27. 15
    0
      Marlin/example_configurations/Velleman/K8400/Configuration.h
  28. 15
    0
      Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h
  29. 15
    0
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  30. 15
    0
      Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
  31. 15
    0
      Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
  32. 15
    0
      Marlin/example_configurations/delta/generic/Configuration.h
  33. 15
    0
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  34. 15
    0
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  35. 15
    0
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  36. 15
    0
      Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h
  37. 15
    0
      Marlin/example_configurations/makibox/Configuration.h
  38. 15
    0
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  39. 15
    0
      Marlin/example_configurations/wt150/Configuration.h

+ 10
- 0
Marlin/Conditionals_post.h View File

@@ -906,4 +906,14 @@
906 906
     #undef PROBE_MANUALLY
907 907
   #endif
908 908
 
909
+  // Parking Extruder
910
+  #if ENABLED(PARKING_EXTRUDER)
911
+    #ifndef PARKING_EXTRUDER_GRAB_DISTANCE
912
+      #define PARKING_EXTRUDER_GRAB_DISTANCE 0
913
+    #endif
914
+    #ifndef PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE
915
+      #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE HIGH
916
+    #endif
917
+  #endif
918
+
909 919
 #endif // CONDITIONALS_POST_H

+ 15
- 0
Marlin/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid not magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 170
- 21
Marlin/Marlin_main.cpp View File

@@ -3494,6 +3494,12 @@ inline void gcode_G0_G1(
3494 3494
 
3495 3495
 #endif // ARC_SUPPORT
3496 3496
 
3497
+void dwell(millis_t time) {
3498
+  refresh_cmd_timeout();
3499
+  time += previous_cmd_ms;
3500
+  while (PENDING(millis(), time)) idle();
3501
+}
3502
+
3497 3503
 /**
3498 3504
  * G4: Dwell S<seconds> or P<milliseconds>
3499 3505
  */
@@ -3504,12 +3510,10 @@ inline void gcode_G4() {
3504 3510
   if (parser.seenval('S')) dwell_ms = parser.value_millis_from_seconds(); // seconds to wait
3505 3511
 
3506 3512
   stepper.synchronize();
3507
-  refresh_cmd_timeout();
3508
-  dwell_ms += previous_cmd_ms;  // keep track of when we started waiting
3509 3513
 
3510 3514
   if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL);
3511 3515
 
3512
-  while (PENDING(millis(), dwell_ms)) idle();
3516
+  dwell(dwell_ms);
3513 3517
 }
3514 3518
 
3515 3519
 #if ENABLED(BEZIER_CURVE_SUPPORT)
@@ -4083,7 +4087,13 @@ inline void gcode_G28(const bool always_home_all) {
4083 4087
 
4084 4088
   // Restore the active tool after homing
4085 4089
   #if HOTENDS > 1
4086
-    tool_change(old_tool_index, 0, true);
4090
+    tool_change(old_tool_index, 0,
4091
+      #if ENABLED(PARKING_EXTRUDER)
4092
+        false // fetch the previous toolhead
4093
+      #else
4094
+        true
4095
+      #endif
4096
+    );
4087 4097
   #endif
4088 4098
 
4089 4099
   lcd_refresh();
@@ -6017,16 +6027,10 @@ inline void gcode_G92() {
6017 6027
    */
6018 6028
 
6019 6029
   // Wait for spindle to come up to speed
6020
-  inline void delay_for_power_up() {
6021
-    refresh_cmd_timeout();
6022
-    while (PENDING(millis(), SPINDLE_LASER_POWERUP_DELAY + previous_cmd_ms)) idle();
6023
-  }
6030
+  inline void delay_for_power_up() { dwell(SPINDLE_LASER_POWERUP_DELAY); }
6024 6031
 
6025 6032
   // Wait for spindle to stop turning
6026
-  inline void delay_for_power_down() {
6027
-    refresh_cmd_timeout();
6028
-    while (PENDING(millis(), SPINDLE_LASER_POWERDOWN_DELAY + previous_cmd_ms + 1)) idle();
6029
-  }
6033
+  inline void delay_for_power_down() { dwell(SPINDLE_LASER_POWERDOWN_DELAY); }
6030 6034
 
6031 6035
   /**
6032 6036
    * ocr_val_mode() is used for debugging and to get the points needed to compute the RPM vs ocr_val line
@@ -8697,7 +8701,7 @@ inline void gcode_M211() {
8697 8701
     if (parser.seenval('X')) hotend_offset[X_AXIS][target_extruder] = parser.value_linear_units();
8698 8702
     if (parser.seenval('Y')) hotend_offset[Y_AXIS][target_extruder] = parser.value_linear_units();
8699 8703
 
8700
-    #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)
8704
+    #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER)
8701 8705
       if (parser.seenval('Z')) hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units();
8702 8706
     #endif
8703 8707
 
@@ -8708,7 +8712,7 @@ inline void gcode_M211() {
8708 8712
       SERIAL_ECHO(hotend_offset[X_AXIS][e]);
8709 8713
       SERIAL_CHAR(',');
8710 8714
       SERIAL_ECHO(hotend_offset[Y_AXIS][e]);
8711
-      #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)
8715
+      #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER)
8712 8716
         SERIAL_CHAR(',');
8713 8717
         SERIAL_ECHO(hotend_offset[Z_AXIS][e]);
8714 8718
       #endif
@@ -10244,6 +10248,29 @@ inline void invalid_extruder_error(const uint8_t e) {
10244 10248
   SERIAL_ECHOLN(MSG_INVALID_EXTRUDER);
10245 10249
 }
10246 10250
 
10251
+#if ENABLED(PARKING_EXTRUDER)
10252
+
10253
+  #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT)
10254
+    #define PE_MAGNET_ON_STATE !PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE
10255
+  #else
10256
+    #define PE_MAGNET_ON_STATE PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE
10257
+  #endif
10258
+
10259
+  void pe_set_magnet(const uint8_t extruder_num, const uint8_t state) {
10260
+    switch (extruder_num) {
10261
+      case 1: OUT_WRITE(SOL1_PIN, state); break;
10262
+      default: OUT_WRITE(SOL0_PIN, state); break;
10263
+    }
10264
+    #if PARKING_EXTRUDER_SOLENOIDS_DELAY > 0
10265
+      dwell(PARKING_EXTRUDER_SOLENOIDS_DELAY);
10266
+    #endif
10267
+  }
10268
+
10269
+  inline void pe_activate_magnet(const uint8_t extruder_num) { pe_set_magnet(extruder_num, PE_MAGNET_ON_STATE); }
10270
+  inline void pe_deactivate_magnet(const uint8_t extruder_num) { pe_set_magnet(extruder_num, !PE_MAGNET_ON_STATE); }
10271
+
10272
+#endif // PARKING_EXTRUDER
10273
+
10247 10274
 /**
10248 10275
  * Perform a tool-change, which may result in moving the
10249 10276
  * previous tool out of the way and the new tool into place.
@@ -10271,8 +10298,10 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
10271 10298
 
10272 10299
       if (tmp_extruder != active_extruder) {
10273 10300
         if (!no_move && axis_unhomed_error()) {
10274
-          SERIAL_ECHOLNPGM("No move on toolchange");
10275 10301
           no_move = true;
10302
+          #if ENABLED(DEBUG_LEVELING_FEATURE)
10303
+            if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("No move on toolchange");
10304
+          #endif
10276 10305
         }
10277 10306
 
10278 10307
         // Save current position to destination, for use later
@@ -10382,8 +10411,118 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
10382 10411
           #endif
10383 10412
 
10384 10413
           // No extra case for HAS_ABL in DUAL_X_CARRIAGE. Does that mean they don't work together?
10414
+
10385 10415
         #else // !DUAL_X_CARRIAGE
10386 10416
 
10417
+          #if ENABLED(PARKING_EXTRUDER) // Dual Parking extruder
10418
+            const float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder];
10419
+            float z_raise = 0;
10420
+            if (!no_move) {
10421
+
10422
+              const float parkingposx[] = PARKING_EXTRUDER_PARKING_X,
10423
+                          midpos = ((parkingposx[1] - parkingposx[0])/2) + parkingposx[0] + hotend_offset[X_AXIS][active_extruder],
10424
+                          grabpos = parkingposx[tmp_extruder] + hotend_offset[X_AXIS][active_extruder]
10425
+                                    + (tmp_extruder == 0 ? -(PARKING_EXTRUDER_GRAB_DISTANCE) : PARKING_EXTRUDER_GRAB_DISTANCE);
10426
+              /**
10427
+               *  Steps:
10428
+               *    1. raise Z-Axis to have enough clearance
10429
+               *    2. move to park poition of old extruder
10430
+               *    3. disengage magnetc field, wait for delay
10431
+               *    4. move near new extruder
10432
+               *    5. engage magnetic field for new extruder
10433
+               *    6. move to parking incl. offset of new extruder
10434
+               *    7. lower Z-Axis
10435
+               */
10436
+
10437
+              // STEP 1
10438
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10439
+                SERIAL_ECHOLNPGM("Starting Autopark");
10440
+                if (DEBUGGING(LEVELING)) DEBUG_POS("current position:", current_position);
10441
+              #endif
10442
+              z_raise = PARKING_EXTRUDER_SECURITY_RAISE;
10443
+              current_position[Z_AXIS] += z_raise;
10444
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10445
+                SERIAL_ECHOLNPGM("(1) Raise Z-Axis ");
10446
+                if (DEBUGGING(LEVELING)) DEBUG_POS("Moving to Raised Z-Position", current_position);
10447
+              #endif
10448
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
10449
+              stepper.synchronize();
10450
+
10451
+              // STEP 2
10452
+              current_position[X_AXIS] = parkingposx[active_extruder] + hotend_offset[X_AXIS][active_extruder];
10453
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10454
+                SERIAL_ECHOLNPAIR("(2) Park extruder ", active_extruder);
10455
+                if (DEBUGGING(LEVELING)) DEBUG_POS("Moving ParkPos", current_position);
10456
+              #endif
10457
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[X_AXIS], active_extruder);
10458
+              stepper.synchronize();
10459
+
10460
+              // STEP 3
10461
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10462
+                SERIAL_ECHOLNPGM("(3) Disengage magnet ");
10463
+              #endif
10464
+              pe_deactivate_magnet(active_extruder);
10465
+
10466
+              // STEP 4
10467
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10468
+                SERIAL_ECHOLNPGM("(4) Move to position near new extruder");
10469
+              #endif
10470
+              current_position[X_AXIS] += (active_extruder == 0 ? 10 : -10); // move 10mm away from parked extruder
10471
+
10472
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10473
+                if (DEBUGGING(LEVELING)) DEBUG_POS("Moving away from parked extruder", current_position);
10474
+              #endif
10475
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[X_AXIS], active_extruder);
10476
+              stepper.synchronize();
10477
+
10478
+              // STEP 5
10479
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10480
+                SERIAL_ECHOLNPGM("(5) Engage magnetic field");
10481
+              #endif
10482
+
10483
+              #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT)
10484
+                pe_activate_magnet(active_extruder); //just save power for inverted magnets
10485
+              #endif
10486
+              pe_activate_magnet(tmp_extruder);
10487
+
10488
+              // STEP 6
10489
+              current_position[X_AXIS] = grabpos + (tmp_extruder == 0 ? (+10) : (-10));
10490
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[X_AXIS], active_extruder);
10491
+              current_position[X_AXIS] = grabpos;
10492
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10493
+                SERIAL_ECHOLNPAIR("(6) Unpark extruder ", tmp_extruder);
10494
+                if (DEBUGGING(LEVELING)) DEBUG_POS("Move UnparkPos", current_position);
10495
+              #endif
10496
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[X_AXIS]/2, active_extruder);
10497
+              stepper.synchronize();
10498
+
10499
+              // Step 7
10500
+              current_position[X_AXIS] = midpos - hotend_offset[X_AXIS][tmp_extruder];
10501
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10502
+                SERIAL_ECHOLNPGM("(7) Move midway between hotends");
10503
+                if (DEBUGGING(LEVELING)) DEBUG_POS("Move midway to new extruder", current_position);
10504
+              #endif
10505
+              planner.buffer_line_kinematic(current_position, planner.max_feedrate_mm_s[X_AXIS], active_extruder);
10506
+              stepper.synchronize();
10507
+              #if ENABLED(DEBUG_LEVELING_FEATURE)
10508
+                SERIAL_ECHOLNPGM("Autopark done.");
10509
+              #endif
10510
+            }
10511
+            else { // nomove == true
10512
+              // Only engage magnetic field for new extruder
10513
+              pe_activate_magnet(tmp_extruder);
10514
+              #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT)
10515
+                pe_activate_magnet(active_extruder); // Just save power for inverted magnets
10516
+              #endif
10517
+            }
10518
+            current_position[Z_AXIS] -= hotend_offset[Z_AXIS][tmp_extruder] - hotend_offset[Z_AXIS][active_extruder]; // Apply Zoffset
10519
+
10520
+            #if ENABLED(DEBUG_LEVELING_FEATURE)
10521
+              if (DEBUGGING(LEVELING)) DEBUG_POS("Applying Z-offset", current_position);
10522
+            #endif
10523
+
10524
+          #endif // dualParking extruder
10525
+
10387 10526
           #if ENABLED(SWITCHING_NOZZLE)
10388 10527
             #define DONT_SWITCH (SWITCHING_EXTRUDER_SERVO_NR == SWITCHING_NOZZLE_SERVO_NR)
10389 10528
             // <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower.
@@ -10487,7 +10626,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
10487 10626
           // The newly-selected extruder XY is actually at...
10488 10627
           current_position[X_AXIS] += xydiff[X_AXIS];
10489 10628
           current_position[Y_AXIS] += xydiff[Y_AXIS];
10490
-          #if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE)
10629
+          #if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE) || ENABLED(PARKING_EXTRUDER)
10491 10630
             for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) {
10492 10631
               #if HAS_POSITION_SHIFT
10493 10632
                 position_shift[i] += xydiff[i];
@@ -10529,7 +10668,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
10529 10668
 
10530 10669
       stepper.synchronize();
10531 10670
 
10532
-      #if ENABLED(EXT_SOLENOID)
10671
+      #if ENABLED(EXT_SOLENOID) && !ENABLED(PARKING_EXTRUDER)
10533 10672
         disable_all_solenoids();
10534 10673
         enable_solenoid_on_active_extruder();
10535 10674
       #endif // EXT_SOLENOID
@@ -10684,11 +10823,11 @@ void process_next_command() {
10684 10823
       #endif // CNC_WORKSPACE_PLANES
10685 10824
 
10686 10825
       #if ENABLED(INCH_MODE_SUPPORT)
10687
-        case 20: //G20: Inch Mode
10826
+        case 20: // G20: Inch Mode
10688 10827
           gcode_G20();
10689 10828
           break;
10690 10829
 
10691
-        case 21: //G21: MM Mode
10830
+        case 21: // G21: MM Mode
10692 10831
           gcode_G21();
10693 10832
           break;
10694 10833
       #endif // INCH_MODE_SUPPORT
@@ -10835,7 +10974,7 @@ void process_next_command() {
10835 10974
         #endif
10836 10975
 
10837 10976
         #if ENABLED(SDCARD_SORT_ALPHA) && ENABLED(SDSORT_GCODE)
10838
-          case 34: //M34 - Set SD card sorting options
10977
+          case 34: // M34: Set SD card sorting options
10839 10978
             gcode_M34(); break;
10840 10979
         #endif // SDCARD_SORT_ALPHA && SDSORT_GCODE
10841 10980
 
@@ -11085,7 +11224,7 @@ void process_next_command() {
11085 11224
       case 204: // M204: Set acceleration
11086 11225
         gcode_M204();
11087 11226
         break;
11088
-      case 205: //M205: Set advanced settings
11227
+      case 205: // M205: Set advanced settings
11089 11228
         gcode_M205();
11090 11229
         break;
11091 11230
 
@@ -13352,6 +13491,16 @@ void setup() {
13352 13491
   #if ENABLED(SWITCHING_NOZZLE)
13353 13492
     move_nozzle_servo(0);  // Initialize nozzle servo
13354 13493
   #endif
13494
+  
13495
+  #if ENABLED(PARKING_EXTRUDER)
13496
+    #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT)
13497
+      pe_activate_magnet(0);
13498
+      pe_activate_magnet(1);
13499
+    #else 
13500
+      pe_deactivate_magnet(0);
13501
+      pe_deactivate_magnet(1);
13502
+    #endif
13503
+  #endif
13355 13504
 }
13356 13505
 
13357 13506
 /**

+ 28
- 0
Marlin/SanityCheck.h View File

@@ -417,6 +417,34 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
417 417
 #endif
418 418
 
419 419
 /**
420
+ * Parking Extruder requirements
421
+ */
422
+#if ENABLED(PARKING_EXTRUDER)
423
+  #if ENABLED(DUAL_X_CARRIAGE)
424
+    #error "PARKING_EXTRUDER and DUAL_X_CARRIAGE are incompatible."
425
+  #elif ENABLED(SINGLENOZZLE)
426
+    #error "PARKING_EXTRUDER and SINGLENOZZLE are incompatible."
427
+  #elif ENABLED(EXT_SOLENOID)
428
+    #error "PARKING_EXTRUDER and EXT_SOLENOID are incompatible. (Pins are used twice.)"
429
+  #elif EXTRUDERS != 2
430
+    #error "PARKING_EXTRUDER requires exactly 2 EXTRUDERS."
431
+  #elif !PIN_EXISTS(SOL0) || !PIN_EXISTS(SOL1)
432
+    #error "PARKING_EXTRUDER requires SOL0_PIN and SOL1_PIN."
433
+  #elif !defined(PARKING_EXTRUDER_PARKING_X)
434
+    #error "PARKING_EXTRUDER requires PARKING_EXTRUDER_PARKING_X."
435
+  #elif !defined(PARKING_EXTRUDER_SECURITY_RAISE)
436
+    #error "PARKING_EXTRUDER requires PARKING_EXTRUDER_SECURITY_RAISE."
437
+  #elif PARKING_EXTRUDER_SECURITY_RAISE < 0
438
+    #error "PARKING_EXTRUDER_SECURITY_RAISE must be 0 or higher."
439
+  #elif !defined(PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE) || !WITHIN(PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE, LOW, HIGH)
440
+    #error "PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE must be defined as HIGH or LOW."
441
+  #elif !defined(PARKING_EXTRUDER_SOLENOIDS_DELAY) || !WITHIN(PARKING_EXTRUDER_SOLENOIDS_DELAY, 0, 2000)
442
+    #error "PARKING_EXTRUDER_SOLENOIDS_DELAY must be between 0 and 2000 (ms)."
443
+  #endif
444
+#endif
445
+
446
+
447
+/**
420 448
  * Limited number of servos
421 449
  */
422 450
 #if NUM_SERVOS > 4

+ 1
- 1
Marlin/configuration_store.cpp View File

@@ -1563,7 +1563,7 @@ void MarlinSettings::reset() {
1563 1563
         SERIAL_ECHOPAIR("  M218 T", (int)e);
1564 1564
         SERIAL_ECHOPAIR(" X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
1565 1565
         SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
1566
-        #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)
1566
+        #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) ||ENABLED(PARKING_EXTRUDER)
1567 1567
           SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
1568 1568
         #endif
1569 1569
         SERIAL_EOL();

+ 15
- 0
Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/AliExpress/CL-260/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Anet/A6/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Anet/A8/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/BQ/Hephestos/Configuration.h View File

@@ -179,6 +179,21 @@
179 179
 #endif
180 180
 
181 181
 /**
182
+ * Two separate X-carriages with extruders that connect to a moving part
183
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
184
+ */
185
+//#define PARKING_EXTRUDER
186
+#if ENABLED(PARKING_EXTRUDER)
187
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
188
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
189
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
190
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
191
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
192
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
193
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
194
+#endif
195
+
196
+/**
182 197
  * "Mixing Extruder"
183 198
  *   - Adds a new code, M165, to set the current mix factors.
184 199
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/BQ/Hephestos_2/Configuration.h View File

@@ -175,6 +175,21 @@
175 175
 #endif
176 176
 
177 177
 /**
178
+ * Two separate X-carriages with extruders that connect to a moving part
179
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
180
+ */
181
+//#define PARKING_EXTRUDER
182
+#if ENABLED(PARKING_EXTRUDER)
183
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
184
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
185
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
186
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
187
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
188
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
189
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
190
+#endif
191
+
192
+/**
178 193
  * "Mixing Extruder"
179 194
  *   - Adds a new code, M165, to set the current mix factors.
180 195
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/BQ/WITBOX/Configuration.h View File

@@ -179,6 +179,21 @@
179 179
 #endif
180 180
 
181 181
 /**
182
+ * Two separate X-carriages with extruders that connect to a moving part
183
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
184
+ */
185
+//#define PARKING_EXTRUDER
186
+#if ENABLED(PARKING_EXTRUDER)
187
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
188
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
189
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
190
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
191
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
192
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
193
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
194
+#endif
195
+
196
+/**
182 197
  * "Mixing Extruder"
183 198
  *   - Adds a new code, M165, to set the current mix factors.
184 199
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Cartesio/Configuration.h View File

@@ -177,6 +177,21 @@
177 177
 #endif
178 178
 
179 179
 /**
180
+ * Two separate X-carriages with extruders that connect to a moving part
181
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
182
+ */
183
+//#define PARKING_EXTRUDER
184
+#if ENABLED(PARKING_EXTRUDER)
185
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
186
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
187
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
188
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
189
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
190
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
191
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
192
+#endif
193
+
194
+/**
180 195
  * "Mixing Extruder"
181 196
  *   - Adds a new code, M165, to set the current mix factors.
182 197
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Creality/CR-10/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Felix/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Felix/DUAL/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Geeetech/GT2560/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Infitary/i3-M508/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Malyan/M150/Configuration.h View File

@@ -181,6 +181,21 @@
181 181
 #endif
182 182
 
183 183
 /**
184
+ * Two separate X-carriages with extruders that connect to a moving part
185
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
186
+ */
187
+//#define PARKING_EXTRUDER
188
+#if ENABLED(PARKING_EXTRUDER)
189
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
190
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
191
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
192
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
193
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
194
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
195
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
196
+#endif
197
+
198
+/**
184 199
  * "Mixing Extruder"
185 200
  *   - Adds a new code, M165, to set the current mix factors.
186 201
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/RigidBot/Configuration.h View File

@@ -179,6 +179,21 @@
179 179
 #endif
180 180
 
181 181
 /**
182
+ * Two separate X-carriages with extruders that connect to a moving part
183
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
184
+ */
185
+//#define PARKING_EXTRUDER
186
+#if ENABLED(PARKING_EXTRUDER)
187
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
188
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
189
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
190
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
191
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
192
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
193
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
194
+#endif
195
+
196
+/**
182 197
  * "Mixing Extruder"
183 198
  *   - Adds a new code, M165, to set the current mix factors.
184 199
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/SCARA/Configuration.h View File

@@ -206,6 +206,21 @@
206 206
 #endif
207 207
 
208 208
 /**
209
+ * Two separate X-carriages with extruders that connect to a moving part
210
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
211
+ */
212
+//#define PARKING_EXTRUDER
213
+#if ENABLED(PARKING_EXTRUDER)
214
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
215
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
216
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
217
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
218
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
219
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
220
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
221
+#endif
222
+
223
+/**
209 224
  * "Mixing Extruder"
210 225
  *   - Adds a new code, M165, to set the current mix factors.
211 226
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/TinyBoy2/Configuration.h View File

@@ -198,6 +198,21 @@
198 198
 #endif
199 199
 
200 200
 /**
201
+ * Two separate X-carriages with extruders that connect to a moving part
202
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
203
+ */
204
+//#define PARKING_EXTRUDER
205
+#if ENABLED(PARKING_EXTRUDER)
206
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
207
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
208
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
209
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
210
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
211
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
212
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
213
+#endif
214
+
215
+/**
201 216
  * "Mixing Extruder"
202 217
  *   - Adds a new code, M165, to set the current mix factors.
203 218
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Velleman/K8200/Configuration.h View File

@@ -196,6 +196,21 @@
196 196
 #endif
197 197
 
198 198
 /**
199
+ * Two separate X-carriages with extruders that connect to a moving part
200
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
201
+ */
202
+//#define PARKING_EXTRUDER
203
+#if ENABLED(PARKING_EXTRUDER)
204
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
205
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
206
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
207
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
208
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
209
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
210
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
211
+#endif
212
+
213
+/**
199 214
  * "Mixing Extruder"
200 215
  *   - Adds a new code, M165, to set the current mix factors.
201 216
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Velleman/K8400/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -180,6 +180,21 @@
180 180
 #endif
181 181
 
182 182
 /**
183
+ * Two separate X-carriages with extruders that connect to a moving part
184
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
185
+ */
186
+//#define PARKING_EXTRUDER
187
+#if ENABLED(PARKING_EXTRUDER)
188
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
189
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
190
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
191
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
192
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
193
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
194
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
195
+#endif
196
+
197
+/**
183 198
  * "Mixing Extruder"
184 199
  *   - Adds a new code, M165, to set the current mix factors.
185 200
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h View File

@@ -181,6 +181,21 @@
181 181
 #endif
182 182
 
183 183
 /**
184
+ * Two separate X-carriages with extruders that connect to a moving part
185
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
186
+ */
187
+//#define PARKING_EXTRUDER
188
+#if ENABLED(PARKING_EXTRUDER)
189
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
190
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
191
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
192
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
193
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
194
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
195
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
196
+#endif
197
+
198
+/**
184 199
  * "Mixing Extruder"
185 200
  *   - Adds a new code, M165, to set the current mix factors.
186 201
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/makibox/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

+ 15
- 0
Marlin/example_configurations/wt150/Configuration.h View File

@@ -176,6 +176,21 @@
176 176
 #endif
177 177
 
178 178
 /**
179
+ * Two separate X-carriages with extruders that connect to a moving part
180
+ * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
181
+ */
182
+//#define PARKING_EXTRUDER
183
+#if ENABLED(PARKING_EXTRUDER)
184
+  #define PARKING_EXTRUDER_SOLENOIDS_INVERT           // If enabled, the solenoid is NOT magnetized with applied voltage
185
+  #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW  // LOW or HIGH pin signal energizes the coil
186
+  #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250        // Delay (ms) for magnetic field. No delay if 0 or not defined.
187
+  #define PARKING_EXTRUDER_PARKING_X { -78, 184 }     // X positions for parking the extruders
188
+  #define PARKING_EXTRUDER_GRAB_DISTANCE 1            // mm to move beyond the parking point to grab the extruder
189
+  #define PARKING_EXTRUDER_SECURITY_RAISE 5           // Z-raise before parking
190
+  #define HOTEND_OFFSET_Z { 0.0, 1.3 }                // Z-offsets of the two hotends. The first must be 0.
191
+#endif
192
+
193
+/**
179 194
  * "Mixing Extruder"
180 195
  *   - Adds a new code, M165, to set the current mix factors.
181 196
  *   - Extends the stepping routines to move multiple steppers in proportion to the mix.

Loading…
Cancel
Save