slaved_to on an actuator configured with an external driver.
A slaved axis uses two motors for one machine axis. Typical machines use two motors on Y for a wide gantry or two motors on Z for a large bed. Smoothie sends the same steps to the primary and secondary motors during normal motion.
The secondary motor occupies an A, B, or C actuator slot. That slot no longer acts as an independent G-code axis.
delta, epsilon, or zeta can serve as the secondary actuator.alpha, beta, or gamma.This example uses delta as a second Y motor controlled by beta:
[actuator]
alpha.steps_per_mm = 800
alpha.max_rate = 1800
beta.steps_per_mm = 800
beta.max_rate = 1800
beta.microsteps = 32
gamma.steps_per_mm = 800
gamma.max_rate = 1800
delta.microsteps = 32
delta.slaved_to = beta
During ordinary Y moves, Smoothie steps both beta and delta. Commands for the A axis no longer move delta independently.
Add an endstop assigned to the secondary actuator’s axis letter. For the delta example, assign it to A. Do not enable that endstop as a hard limit; G28.7 refuses an endstop with limit_enable = true.
[endstops]
miny.enable = true
miny.pin = PI1^
miny.homing_direction = home_to_min
miny.homing_position = 0
miny.axis = Y
miny.fast_rate = 30
miny.slow_rate = 5
miny.retract = 5
slave_y.enable = true
slave_y.pin = PI2^
slave_y.axis = A
slave_y.limit_enable = false
Align and measure the offset:
G28.7 Y0. Smoothie moves only the secondary motor to its endstop, reports the travelled distance, then returns it by that distance.M666 Y<distance>, then use M500 if you want to save it.G28.7 Y1. Smoothie finds the secondary endstop and returns by the stored Y trim, aligning the two motors.G28.7 requires one X, Y, or Z argument. A zero value measures without applying trim; a non-zero value applies the stored trim. The primary axis must already be homed, and the secondary endstop must not start in its triggered state.
See the G28 command family for the command reference.