delta: Don't limit XY+Z moves to max_z_velocity

Scale the max_z_velocity limit by the amount of movement in the Z.
This should improve bed_mesh and vase mode prints on delta printers.

Reported by @hywelmartin and @dalegaard.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-10-11 11:53:00 -04:00
parent b336a21fe7
commit afd1058af6
1 changed files with 3 additions and 5 deletions

View File

@ -129,7 +129,8 @@ class DeltaKinematics:
raise move.move_error() raise move.move_error()
limit_xy2 = -1. limit_xy2 = -1.
if move.axes_d[2]: if move.axes_d[2]:
move.limit_speed(self.max_z_velocity, move.accel) z_ratio = move.move_d / abs(move.axes_d[2])
move.limit_speed(self.max_z_velocity * z_ratio, move.accel)
limit_xy2 = -1. limit_xy2 = -1.
# Limit the speed/accel of this move if is is at the extreme # Limit the speed/accel of this move if is is at the extreme
# end of the build envelope # end of the build envelope
@ -138,10 +139,7 @@ class DeltaKinematics:
r = 0.5 r = 0.5
if extreme_xy2 > self.very_slow_xy2: if extreme_xy2 > self.very_slow_xy2:
r = 0.25 r = 0.25
max_velocity = self.max_velocity move.limit_speed(self.max_velocity * r, self.max_accel * r)
if move.axes_d[2]:
max_velocity = self.max_z_velocity
move.limit_speed(max_velocity * r, self.max_accel * r)
limit_xy2 = -1. limit_xy2 = -1.
self.limit_xy2 = min(limit_xy2, self.slow_xy2) self.limit_xy2 = min(limit_xy2, self.slow_xy2)
def get_status(self, eventtime): def get_status(self, eventtime):