Skip to content

Commit d8a80cf

Browse files
filipporthinkyhead
authored andcommitted
✨ Z_SERVO_DEACTIVATE_AFTER_STOW (MarlinFirmware#24215)
1 parent 02342c4 commit d8a80cf

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

Marlin/Configuration.h

+7-4
Original file line numberDiff line numberDiff line change
@@ -1387,10 +1387,13 @@
13871387
/**
13881388
* Z Servo Probe, such as an endstop switch on a rotating arm.
13891389
*/
1390-
//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector.
1391-
//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
1392-
//#define Z_SERVO_MEASURE_ANGLE 45 // Use if the servo must move to a "free" position for measuring after deploy.
1393-
//#define Z_SERVO_INTERMEDIATE_STOW // Stow the probe between points.
1390+
//#define Z_PROBE_SERVO_NR 0
1391+
#ifdef Z_PROBE_SERVO_NR
1392+
//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
1393+
//#define Z_SERVO_MEASURE_ANGLE 45 // Use if the servo must move to a "free" position for measuring after deploy
1394+
//#define Z_SERVO_INTERMEDIATE_STOW // Stow the probe between points
1395+
//#define Z_SERVO_DEACTIVATE_AFTER_STOW // Deactivate the servo when probe is stowed
1396+
#endif
13941397

13951398
/**
13961399
* The BLTouch probe uses a Hall effect sensor and emulates a servo.

Marlin/src/module/probe.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -403,13 +403,16 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
403403

404404
#elif HAS_Z_SERVO_PROBE
405405

406+
// i.e., deploy ? DEPLOY_Z_SERVO() : STOW_Z_SERVO();
406407
servo[Z_PROBE_SERVO_NR].move(servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]);
407408

408409
#ifdef Z_SERVO_MEASURE_ANGLE
409410
// After deploy move back to the measure angle...
410-
if (deploy) MOVE_SERVO(Z_PROBE_SERVO_NR, Z_SERVO_MEASURE_ANGLE);
411+
if (deploy) servo[Z_PROBE_SERVO_NR].move(Z_SERVO_MEASURE_ANGLE);
411412
#endif
412413

414+
if (TERN0(Z_SERVO_DEACTIVATE_AFTER_STOW, !deploy)) servo[Z_PROBE_SERVO_NR].detach();
415+
413416
#elif ANY(TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE)
414417

415418
deploy ? run_deploy_moves() : run_stow_moves();
@@ -950,6 +953,8 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai
950953
* homing has been done - no homing with z-probe without init!
951954
*/
952955
STOW_Z_SERVO();
956+
957+
TERN_(Z_SERVO_DEACTIVATE_AFTER_STOW, servo[Z_PROBE_SERVO_NR].detach());
953958
}
954959

955960
#endif // HAS_Z_SERVO_PROBE

buildroot/tests/mega2560

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO NUM_SERVOS 1 \
6363
NUM_RUNOUT_SENSORS 5 FIL_RUNOUT2_PIN 44 FIL_RUNOUT3_PIN 45 FIL_RUNOUT4_PIN 46 FIL_RUNOUT5_PIN 47 \
6464
FIL_RUNOUT3_STATE HIGH FILAMENT_RUNOUT_SCRIPT '"M600 T%c"'
6565
opt_enable VIKI2 BOOT_MARLIN_LOGO_ANIMATED SDSUPPORT AUTO_REPORT_SD_STATUS \
66-
Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
66+
Z_PROBE_SERVO_NR Z_SERVO_ANGLES Z_SERVO_MEASURE_ANGLE DEACTIVATE_SERVOS_AFTER_MOVE Z_SERVO_DEACTIVATE_AFTER_STOW \
6767
AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE PROBE_PT_1 PROBE_PT_2 PROBE_PT_3 \
6868
EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL AUTO_REPORT_POSITION \
6969
NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
7070
DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \
7171
FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING FIL_RUNOUT3_PULLUP
72-
exec_test $1 $2 "Multiple runout sensors (x5) | Distinct runout states" "$3"
72+
exec_test $1 $2 "Z Servo Probe | Multiple runout sensors (x5)" "$3"
7373

7474

7575
#

0 commit comments

Comments
 (0)