Skip to main content

Multi-Z Reference Configuration

This page compiles common configuration methods for dual Z motors. The pins, travel distances, and directions in the examples need to be modified according to the actual motherboard and machine structure.

Debugging Reminders
  • Before debugging the Z axis for the first time, ensure that the lead screws, couplings, and platform will not jam.
  • Multiple Z motors must use the same rotation_distance, microsteps, and mechanical transmission specifications.
  • When using a Probe or BL-Touch as the Z endstop, do not retain position_endstop.

Dual Z with Single Endstop

When dual Z motors share one endstop, you only need to configure endstop_pin in [stepper_z]. The second Z motor [stepper_z1] does not require an endstop_pin.

printer.cfg
[stepper_z]
step_pin: <z_step_pin>
dir_pin: <z_dir_pin>
enable_pin: !<z_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16
endstop_pin: ^!<z_endstop_pin>
position_endstop: 0
position_max: 300
homing_speed: 50
homing_retract_dist: 5

[stepper_z1]
step_pin: <z1_step_pin>
dir_pin: <z1_dir_pin>
enable_pin: !<z1_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16

Dual Z with Dual Endstops

When dual Z motors use independent endstops, the second Z motor needs an endstop_pin. This method is suitable for machines that require detecting the endpoints of both Z axes separately.

printer.cfg
[stepper_z]
step_pin: <z_step_pin>
dir_pin: <z_dir_pin>
enable_pin: !<z_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16
endstop_pin: ^!<z_endstop_pin>
position_endstop: 0
position_max: 300
homing_speed: 50
homing_retract_dist: 5

[stepper_z1]
step_pin: <z1_step_pin>
dir_pin: <z1_dir_pin>
enable_pin: !<z1_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16
endstop_pin: ^!<z1_endstop_pin>

Dual Z Using Probe or BL-Touch

When using a Probe or BL-Touch as the Z endstop, change the endstop_pin in the first Z configuration to probe:z_virtual_endstop, and add the corresponding [probe] or [bltouch] configuration.

printer.cfg
[stepper_z]
step_pin: <z_step_pin>
dir_pin: <z_dir_pin>
enable_pin: !<z_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16
endstop_pin: probe:z_virtual_endstop
# position_endstop: 0
position_max: 300
homing_speed: 50
homing_retract_dist: 5
step_pulse_duration: 0.000004

[stepper_z1]
step_pin: <z1_step_pin>
dir_pin: <z1_dir_pin>
enable_pin: !<z1_enable_pin>
rotation_distance: 4
full_steps_per_rotation: 200
microsteps: 16

[probe]
pin: ^<probe_pin>
x_offset: 0
y_offset: 0
# z_offset: 0
speed: 3.0
lift_speed: 5
samples: 3
samples_result: median
sample_retract_dist: 3.0
samples_tolerance: 0.075
samples_tolerance_retries: 3

Check Sequence

  1. Use STEPPER_BUZZ STEPPER=stepper_z to check the direction of the first Z motor.
  2. Use STEPPER_BUZZ STEPPER=stepper_z1 to check the direction of the second Z motor.
  3. Confirm that both Z motors move up and down in the same direction.
  4. After confirming the endstop or Probe status is correct, execute G28 Z.
Loading...