SWITCHING_NOZZLE_LIFT_TO_PROBE (#27804)

This commit is contained in:
InsanityAutomation 2025-05-03 22:07:40 -04:00 committed by GitHub
parent 414951e42c
commit 4e1e7fa1b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 19 additions and 2 deletions

View file

@ -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_#.

View file

@ -87,7 +87,7 @@
#endif
/**
* Multi-Material-Unit supported models
* Multi-Material-Unit supported models
*/
#ifdef MMU_MODEL
#define HAS_MMU 1

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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();

View file

@ -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"