Merge pull request #3288 from thinkyhead/rc_servo_plus_delta
Fix servo deploy/stow issues with G29 and Delta
This commit is contained in:
commit
4f85226106
@ -339,7 +339,7 @@
|
|||||||
#define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
#define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SERVO_LEVELING (defined(AUTO_BED_LEVELING_FEATURE) && defined(Z_ENDSTOP_SERVO_NR))
|
#define SERVO_LEVELING (ENABLED(AUTO_BED_LEVELING_FEATURE) && defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sled Options
|
* Sled Options
|
||||||
|
@ -1999,24 +1999,33 @@ static void homeaxis(AxisEnum axis) {
|
|||||||
sync_plan_position();
|
sync_plan_position();
|
||||||
|
|
||||||
#if ENABLED(Z_PROBE_SLED)
|
#if ENABLED(Z_PROBE_SLED)
|
||||||
// Get Probe
|
#define _Z_SERVO_TEST (axis != Z_AXIS) // deploy Z, servo.move XY
|
||||||
if (axis == Z_AXIS) {
|
#define _Z_PROBE_SUBTEST false // Z will never be invoked
|
||||||
if (axis_home_dir < 0) dock_sled(false);
|
#define _Z_DEPLOY (dock_sled(false))
|
||||||
}
|
#define _Z_STOW (dock_sled(true))
|
||||||
#elif SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE)
|
#elif SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE)
|
||||||
|
#define _Z_SERVO_TEST (axis != Z_AXIS) // servo.move XY
|
||||||
// Deploy a Z probe if there is one, and homing towards the bed
|
#define _Z_PROBE_SUBTEST false // Z will never be invoked
|
||||||
if (axis == Z_AXIS) {
|
#define _Z_DEPLOY (deploy_z_probe())
|
||||||
if (axis_home_dir < 0) deploy_z_probe();
|
#define _Z_STOW (stow_z_probe())
|
||||||
}
|
#elif HAS_SERVO_ENDSTOPS
|
||||||
|
#define _Z_SERVO_TEST true // servo.move X, Y, Z
|
||||||
|
#define _Z_PROBE_SUBTEST (axis == Z_AXIS) // Z is a probe
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (axis == Z_AXIS) {
|
||||||
|
// If there's a Z probe that needs deployment...
|
||||||
|
#if ENABLED(Z_PROBE_SLED) || SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE)
|
||||||
|
// ...and homing Z towards the bed? Deploy it.
|
||||||
|
if (axis_home_dir < 0) _Z_DEPLOY;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if HAS_SERVO_ENDSTOPS
|
#if HAS_SERVO_ENDSTOPS
|
||||||
// Engage Servo endstop if enabled
|
// Engage an X or Y Servo endstop if enabled
|
||||||
if (axis != Z_AXIS && servo_endstop_id[axis] >= 0) {
|
if (_Z_SERVO_TEST && servo_endstop_id[axis] >= 0) {
|
||||||
servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][0]);
|
servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][0]);
|
||||||
z_probe_is_active = true;
|
if (_Z_PROBE_SUBTEST) z_probe_is_active = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2145,42 +2154,30 @@ static void homeaxis(AxisEnum axis) {
|
|||||||
axis_known_position[axis] = true;
|
axis_known_position[axis] = true;
|
||||||
axis_homed[axis] = true;
|
axis_homed[axis] = true;
|
||||||
|
|
||||||
#if ENABLED(Z_PROBE_SLED)
|
// Put away the Z probe
|
||||||
// bring Z probe back
|
#if ENABLED(Z_PROBE_SLED) || SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE)
|
||||||
if (axis == Z_AXIS) {
|
if (axis == Z_AXIS && axis_home_dir < 0) {
|
||||||
if (axis_home_dir < 0) dock_sled(true);
|
|
||||||
}
|
|
||||||
#elif SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE)
|
|
||||||
|
|
||||||
// Deploy a Z probe if there is one, and homing towards the bed
|
|
||||||
if (axis == Z_AXIS) {
|
|
||||||
if (axis_home_dir < 0) {
|
|
||||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) {
|
if (DEBUGGING(LEVELING)) {
|
||||||
SERIAL_ECHOLNPGM("> SERVO_LEVELING > stow_z_probe");
|
SERIAL_ECHOLNPGM("> SERVO_LEVELING > " STRINGIFY(_Z_STOW));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
stow_z_probe();
|
_Z_STOW;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
|
||||||
#if HAS_SERVO_ENDSTOPS
|
|
||||||
// Retract Servo endstop if enabled
|
// Retract Servo endstop if enabled
|
||||||
if (servo_endstop_id[axis] >= 0) {
|
#if HAS_SERVO_ENDSTOPS
|
||||||
|
if (_Z_SERVO_TEST && servo_endstop_id[axis] >= 0) {
|
||||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) {
|
if (DEBUGGING(LEVELING)) {
|
||||||
SERIAL_ECHOLNPGM("> SERVO_ENDSTOPS > Stow with servo.move()");
|
SERIAL_ECHOLNPGM("> SERVO_ENDSTOPS > Stow with servo.move()");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][1]);
|
servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][1]);
|
||||||
z_probe_is_active = false;
|
if (_Z_PROBE_SUBTEST) z_probe_is_active = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3074,7 +3071,7 @@ inline void gcode_G28() {
|
|||||||
|
|
||||||
#if ENABLED(Z_PROBE_SLED)
|
#if ENABLED(Z_PROBE_SLED)
|
||||||
dock_sled(false); // engage (un-dock) the Z probe
|
dock_sled(false); // engage (un-dock) the Z probe
|
||||||
#elif ENABLED(Z_PROBE_ALLEN_KEY) //|| SERVO_LEVELING
|
#elif ENABLED(Z_PROBE_ALLEN_KEY) || (ENABLED(DELTA) && SERVO_LEVELING)
|
||||||
deploy_z_probe();
|
deploy_z_probe();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3342,7 +3339,7 @@ inline void gcode_G28() {
|
|||||||
|
|
||||||
#if ENABLED(DELTA)
|
#if ENABLED(DELTA)
|
||||||
// Allen Key Probe for Delta
|
// Allen Key Probe for Delta
|
||||||
#if ENABLED(Z_PROBE_ALLEN_KEY)
|
#if ENABLED(Z_PROBE_ALLEN_KEY) || SERVO_LEVELING
|
||||||
stow_z_probe();
|
stow_z_probe();
|
||||||
#elif Z_RAISE_AFTER_PROBING > 0
|
#elif Z_RAISE_AFTER_PROBING > 0
|
||||||
raise_z_after_probing(); // ???
|
raise_z_after_probing(); // ???
|
||||||
|
Loading…
Reference in New Issue
Block a user