Feedrate consistency
This commit is contained in:
parent
ee50a8eb44
commit
30bcc00331
1 changed files with 12 additions and 53 deletions
|
@ -36,25 +36,6 @@ class GCodeToMotors:
|
|||
self.CONTROLLER = ctrl
|
||||
self.HARDWARE = hw_interface
|
||||
|
||||
# Hardcoded Values for Our Machine
|
||||
X_STEP_PIN = 8
|
||||
X_DIR_PIN = 9
|
||||
X_MIN_PIN = 4
|
||||
X_MAX_PIN = 2
|
||||
X_ENABLE_PIN = 15
|
||||
|
||||
Y_STEP_PIN = 10
|
||||
Y_DIR_PIN = 11
|
||||
Y_MIN_PIN = 3
|
||||
Y_MAX_PIN = 5
|
||||
Y_ENABLE_PIN = 15
|
||||
|
||||
Z_STEP_PIN = 12
|
||||
Z_DIR_PIN = 13
|
||||
Z_MIN_PIN = 7
|
||||
Z_MAX_PIN = 6
|
||||
Z_ENABLE_PIN = 15 # All the above should probably go to HARDWARE
|
||||
|
||||
X_STEPS_PER_INCH = x_units = 4800
|
||||
X_STEPS_PER_MM: float = 188.97
|
||||
X_MOTOR_STEPS: float = 200
|
||||
|
@ -84,8 +65,7 @@ class GCodeToMotors:
|
|||
z_direction: int = 1
|
||||
z_throttle : int = 0
|
||||
|
||||
target_feedrate: float = 0 # Target total head speed. For now in mm/s always
|
||||
feedrate: float = 0.
|
||||
feedrate: float = 0. # In m/mn
|
||||
|
||||
abs_mode: bool = False
|
||||
|
||||
|
@ -141,7 +121,7 @@ class GCodeToMotors:
|
|||
return self.FAST_Z_FEEDRATE
|
||||
return self.FAST_XY_FEEDRATE
|
||||
|
||||
# Try to move to target_units using target_feedrate
|
||||
# Try to move to target_units at feedrate
|
||||
|
||||
# We honor the following semantics:
|
||||
# GCodeToMotors translates the GCode to high-level controls/theoretical position and targets
|
||||
|
@ -156,13 +136,6 @@ class GCodeToMotors:
|
|||
|
||||
self.calculate_deltas()
|
||||
|
||||
def calculate_feedrate_delay(self, feedrate: float) -> float:
|
||||
distance: float = np.linalg.norm(self.delta_units)
|
||||
master_steps: float = max(self.delta_steps)
|
||||
|
||||
# Compute delay between steps in microseconds
|
||||
return ((distance * 600000000.) / feedrate) / master_steps
|
||||
|
||||
def instruction_converter(self, instruction: str) -> Optional[List[float]]:
|
||||
if instruction[0] == "/":
|
||||
return None
|
||||
|
@ -201,20 +174,10 @@ class GCodeToMotors:
|
|||
match code:
|
||||
case 0, 1:
|
||||
self.set_position(fp[0], fp[1], fp[2])
|
||||
if has_command('G', instruction):
|
||||
if code == 1:
|
||||
if has_command('G', instruction) and code == 1:
|
||||
self.feedrate = search_string('F', instruction)
|
||||
if self.feedrate > 0:
|
||||
self.target_feedrate = self.feedrate
|
||||
else:
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
else:
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
else:
|
||||
if self.feedrate > 0:
|
||||
self.target_feedrate = self.feedrate
|
||||
else:
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
if self.feedrate == 0:
|
||||
self.feedrate = self.get_max_speed()
|
||||
self.move()
|
||||
|
||||
case 2, 3:
|
||||
|
@ -249,10 +212,8 @@ class GCodeToMotors:
|
|||
newPoint[1] = center[1] + radius * np.sin(angleA + angle * (step / steps))
|
||||
self.set_target(newPoint[0], newPoint[1], fp[2])
|
||||
|
||||
if self.feedrate > 0:
|
||||
self.target_feedrate = self.feedrate
|
||||
else:
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
if self.feedrate == 0:
|
||||
self.feedrate = self.get_max_speed()
|
||||
|
||||
self.move()
|
||||
|
||||
|
@ -287,10 +248,8 @@ class GCodeToMotors:
|
|||
1 - t) * t ** 2 * control_2[1] + t ** 3 * fp[1]
|
||||
self.set_target(newPoint[0], newPoint[1], fp[2])
|
||||
|
||||
if self.feedrate > 0:
|
||||
self.target_feedrate = self.feedrate
|
||||
else:
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
if self.feedrate == 0.:
|
||||
self.feedrate = self.get_max_speed()
|
||||
|
||||
self.move()
|
||||
|
||||
|
@ -345,10 +304,10 @@ class GCodeToMotors:
|
|||
self.set_target(fp[0], fp[1], fp[2])
|
||||
else:
|
||||
self.set_target(self.current_units[0] + fp[0], self.current_units[1] + fp[1], self.current_units[2] + fp[2])
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
self.feedrate = self.get_max_speed()
|
||||
self.move()
|
||||
self.set_target(0., 0., 0.)
|
||||
self.target_feedrate = self.get_max_speed()
|
||||
self.feedrate = self.get_max_speed()
|
||||
self.move()
|
||||
|
||||
case _:
|
||||
|
|
Loading…
Reference in a new issue