mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2025-07-06 14:37:27 -06:00
✨ SWITCHING_NOZZLE_LIFT_TO_PROBE (#27804)
This commit is contained in:
parent
414951e42c
commit
4e1e7fa1b0
7 changed files with 19 additions and 2 deletions
|
@ -260,6 +260,7 @@
|
|||
#define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // A pair of angles for { E0, E1 }.
|
||||
// For Dual Servo use two pairs: { { lower, raise }, { lower, raise } }
|
||||
#define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move
|
||||
#define SWITCHING_NOZZLE_LIFT_TO_PROBE // Lift toolheads out of the way while probing
|
||||
#endif
|
||||
|
||||
// Switch nozzles by bumping the toolhead. Requires EVENT_GCODE_TOOLCHANGE_#.
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* Multi-Material-Unit supported models
|
||||
* Multi-Material-Unit supported models
|
||||
*/
|
||||
#ifdef MMU_MODEL
|
||||
#define HAS_MMU 1
|
||||
|
|
|
@ -69,6 +69,10 @@
|
|||
#endif
|
||||
#undef UNUSED_TEMP_SENSOR
|
||||
|
||||
#if !HAS_HOTEND
|
||||
#undef PREHEAT_1_TEMP_HOTEND
|
||||
#undef PREHEAT_2_TEMP_HOTEND
|
||||
#endif
|
||||
#if !TEMP_SENSOR_BED
|
||||
#undef TEMP_SENSOR_BED
|
||||
#undef THERMAL_PROTECTION_BED
|
||||
|
|
|
@ -736,6 +736,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
|||
#error "SWITCHING_NOZZLE requires NUM_SERVOS >= 1."
|
||||
#elif !defined(SWITCHING_NOZZLE_SERVO_NR)
|
||||
#error "SWITCHING_NOZZLE requires SWITCHING_NOZZLE_SERVO_NR."
|
||||
#elif ALL(SWITCHING_NOZZLE_LIFT_TO_PROBE, NOZZLE_AS_PROBE)
|
||||
#error "SWITCHING_NOZZLE_LIFT_TO_PROBE cannot be used with NOZZLE_AS_PROBE."
|
||||
#elif SWITCHING_NOZZLE_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
|
||||
#error "SERVO0_PIN must be defined for your SWITCHING_NOZZLE."
|
||||
#elif SWITCHING_NOZZLE_SERVO_NR == 1 && !PIN_EXISTS(SERVO1)
|
||||
|
|
|
@ -406,6 +406,10 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
|
|||
|
||||
#endif // PAUSE_BEFORE_DEPLOY_STOW
|
||||
|
||||
#if ENABLED(SWITCHING_NOZZLE_LIFT_TO_PROBE)
|
||||
servo[SWITCHING_NOZZLE_SERVO_NR].move(servo_angles[SWITCHING_NOZZLE_SERVO_NR][deploy ? 1 : 0]);
|
||||
#endif
|
||||
|
||||
#if ENABLED(SOLENOID_PROBE)
|
||||
|
||||
#if HAS_SOLENOID_1
|
||||
|
|
|
@ -1415,6 +1415,12 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
|||
#endif
|
||||
|
||||
} // (new_tool != old_tool)
|
||||
else {
|
||||
// For switching-nozzle-with-servos you may have manually-edited servo angles
|
||||
// or other functions that can affect angles. So here we ensure a T# command
|
||||
// restores active tool position even when recalling the same tool.
|
||||
TERN_(SWITCHING_NOZZLE_TWO_SERVOS, lower_nozzle(new_tool));
|
||||
}
|
||||
|
||||
planner.synchronize();
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ restore_configs
|
|||
opt_set MOTHERBOARD BOARD_MKS_SBASE \
|
||||
EXTRUDERS 2 TEMP_SENSOR_1 1 \
|
||||
NUM_SERVOS 2 SERVO_DELAY '{ 300, 300 }' SWITCHING_NOZZLE_SERVO_ANGLES '{ { 0, 90 }, { 90, 0 } }'
|
||||
opt_enable SWITCHING_NOZZLE SWITCHING_NOZZLE_E1_SERVO_NR EDITABLE_SERVO_ANGLES SERVO_DETACH_GCODE \
|
||||
opt_enable SWITCHING_NOZZLE SWITCHING_NOZZLE_E1_SERVO_NR SWITCHING_NOZZLE_LIFT_TO_PROBE EDITABLE_SERVO_ANGLES SERVO_DETACH_GCODE \
|
||||
ULTIMAKERCONTROLLER REALTIME_REPORTING_COMMANDS FULL_REPORT_TO_HOST_FEATURE
|
||||
exec_test $1 $2 "MKS SBASE with SWITCHING_NOZZLE, Grbl Realtime Report" "$3"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue