====== V5.88 Ultra — Stepper Driver YAML Examples ======
Each file below is a **complete FluidNC template** for a 4-driver machine — **X / Y1 / Y2 / Z** (a dual-Y gantry) — with limit switches, probe, spindle PWM, OLED and pendant already wired to the V5.88 Ultra's real pins. **Click the file name to download it.**
**These are not finished machine configs. Do not load one unchanged.** Every file carries placeholder values that describe no real machine, and one of them (''run_amps'') can overheat a motor. Work through the checklist below first.
===== Pick the file that matches your wiring =====
^ Wiring option ^ File ^ Driver block ^ Current and microstepping come from ^
| **A** — on-board StepStick, standard step/dir | ''v588-xyyz-onboard-stepstick.yaml'' | ''stepstick'' | driver trimmer + board jumpers + ''ms3_pin'' |
| **B** — external standard drivers (TB6600 / DM542 class) | ''v588-xyyz-external-standard.yaml'' | ''standard_stepper'' | the external driver's own DIP switches |
| **C** — on-board SPI (TMC2130) | ''v588-xyyz-onboard-tmc2130-spi.yaml'' | ''tmc_2130'' | this file |
| **D** — external SPI (SilentStep TMC5160 V5) | [[pibot_cnc_laser_series:silentstep_tmc5160_v5:yaml:start|on the TMC5160 V5 page]] | ''tmc_5160'' | DIP switches, or the YAML in SPI mode |
===== Change these before you load — every time =====
^ # ^ Setting ^ Shipped placeholder ^ What happens if you leave it ^
| 1 | ''steps_per_mm'' | ''800'' | every distance is wrong — a 10 mm move is not 10 mm |
| 2 | ''run_amps'' (SPI files only) | ''1.2'' | **a smaller motor overheats; a larger one has no torque** |
| 3 | ''max_travel_mm'' | ''300'' | soft limits, once enabled, stop in the wrong place |
| 4 | ''homing:'' cycle / ''positive_direction'' / ''mpos_mm'' | a generic guess | the machine homes into the wrong end of the axis |
| 5 | ''limit_neg_pin'' / ''limit_pos_pin'' | this board's test-YAML pins | homing seeks a switch that may not be on that pin |
| 6 | ''microsteps'' (SPI files) or the board jumpers | ''16'' | ''steps_per_mm'' no longer matches the driver |
Do all six with the motors uncoupled from the machine, and leave ''soft_limits: false'' and ''hard_limits: false'' until the axis moves the right distance in the right direction.
===== The rest of what is inside =====
* **Limit pins follow this board's own test YAML.** Positions with no documented endstop are ''NO_PIN''. Read [[pibot_cnc_laser_series:v588_ultra:connect_limit_switches:start|4.1 Connect Limit Switches]] first — **PNP (sourcing) sensors are not compatible** with this board.
* **The four connectors are the same six I2SO groups shown on** [[pibot_cnc_laser_series:v588_ultra:connect_stepper_drivers:start|4.2 Connect Stepper Drivers]]. To add the B and C axes, copy an existing ''motor'' block and swap in that socket's numbers.
* **''max_rate_mm_per_min'' is deliberately low (1000).** Raise it only after the machine moves correctly.
* **If a motor is limp and never steps, invert its enable.** FluidNC asserts ''disable_pin'' to *disable* a motor, and step/dir drivers do not agree on which level means disabled — some ordinary drivers only run once you write ''disable_pin: I2SO.0:low''. Try one axis first, then apply the same suffix to every axis using that driver model.
* **''gpio.3'' is used here as the toolsetter input**, which needs jumper ⑩ set to input mode. Delete ''toolsetter_pin'' if you use GPIO.3 as an output or as a seventh axis.
* The spindle, laser, 0–10 V and RS485 blocks that are not in these files can be copied from the full test YAML on [[pibot_cnc_laser_series:v588_ultra:pinout_reference:start|1 Pinout Reference]].
[[pibot_cnc_laser_series:v588_ultra:connect_stepper_drivers:start|← Back to 4.2 Connect Stepper Drivers]]
----
===== A — On-board StepStick drivers (standard step/dir) =====
For A4988, DRV8825, TMC2208 and TMC2209 modules plugged into the sockets DRV1–DRV4.
* **MS1, MS2, RST and SLP are physical jumpers** on the board and are shared by all six sockets, so they stay ''NO_PIN'' in the file.
* **MS3 is the only microstep bit that lives in the YAML** — the MSP3 row on the board has an unconnected centre pin. ''ms3_pin: I2SO.n'' drives MS3 high; ''ms3_pin: I2SO.n:low'' drives it low.
* Set the driver current with the trimmer on each module, following that driver's own datasheet.
board: PiBot V5.88 Ultra
name: XYYZ on-board StepStick drivers (standard step/dir)
# ---------------------------------------------------------------
# PiBot V5.88 Ultra - 4.2 Connect Stepper Drivers
# Mode: A - on-board StepStick, standard step/dir
# Axes: X / Y1 / Y2 / Z (dual-Y gantry, 4 drivers)
#
# Before use, set your own: steps_per_mm, travel, homing direction,
# and check every limit pin against your real switches.
# Limit pins follow this board's own test YAML; NO_PIN where none
# is documented. This is a starting point, not a finished machine.
#
# ENABLE POLARITY: FluidNC asserts disable_pin to DISABLE a motor, but
# step/dir drivers do not agree on which level means disabled. If a motor
# is limp and never steps while STP and DIR look right, invert it:
# disable_pin: I2SO.0:low
# Some ordinary drivers only run that way. Try one axis, then do the rest.
#
# MS1 / MS2 / RST / SLP are physical jumpers on the board and are
# shared by all six sockets, so they stay NO_PIN here.
# MS3 has no jumper - it is the only microstep bit set in this file.
# ms3_pin: I2SO.n -> MS3 = 1 (logic high)
# ms3_pin: I2SO.n:low -> MS3 = 0 (logic low)
# A4988 : MS1=1 MS2=1 MS3=1 -> 1/16 step
# DRV8825 : MS1=1 MS2=1 MS3=1 -> 1/32 step
# TMC2209 : MS1=1 MS2=1 -> 1/16 step, and that socket pin is
# PDN, not MS3 - use ms3_pin: I2SO.n:low to keep the
# standstill current reduction the chip enables by default.
# ---------------------------------------------------------------
stepping:
engine: I2S_STATIC
idle_ms: 250
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 0
axes:
shared_stepper_disable_pin: NO_PIN
x:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # X - socket DRV1 / terminal 1
limit_neg_pin: gpio.42:low
limit_pos_pin: gpio.41:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.2
direction_pin: I2SO.1
disable_pin: I2SO.0 # add :low if the driver runs inverted
ms1_pin: NO_PIN # MSP1 jumper on the board
ms2_pin: NO_PIN # MSP2 jumper on the board
ms3_pin: I2SO.3 # MS3 = 1 (add :low for MS3 = 0)
reset_pin: NO_PIN # RSTP1 jumper on the board
y:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Y1 - socket DRV2 / terminal 2
limit_neg_pin: gpio.40:low
limit_pos_pin: gpio.39:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.5
direction_pin: I2SO.4
disable_pin: I2SO.7 # add :low if the driver runs inverted
ms1_pin: NO_PIN # MSP1 jumper on the board
ms2_pin: NO_PIN # MSP2 jumper on the board
ms3_pin: I2SO.6 # MS3 = 1 (add :low for MS3 = 0)
reset_pin: NO_PIN # RSTP1 jumper on the board
motor1: # Y2 - socket DRV3 / terminal 3
limit_neg_pin: gpio.38:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.10
direction_pin: I2SO.9
disable_pin: I2SO.8 # add :low if the driver runs inverted
ms1_pin: NO_PIN # MSP1 jumper on the board
ms2_pin: NO_PIN # MSP2 jumper on the board
ms3_pin: I2SO.11 # MS3 = 1 (add :low for MS3 = 0)
reset_pin: NO_PIN # RSTP1 jumper on the board
z:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 1
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Z - socket DRV4 / terminal 4
limit_neg_pin: gpio.37:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.13
direction_pin: I2SO.12
disable_pin: I2SO.15 # add :low if the driver runs inverted
ms1_pin: NO_PIN # MSP1 jumper on the board
ms2_pin: NO_PIN # MSP2 jumper on the board
ms3_pin: I2SO.14 # MS3 = 1 (add :low for MS3 = 0)
reset_pin: NO_PIN # RSTP1 jumper on the board
i2so:
bck_pin: gpio.16
data_pin: gpio.17
ws_pin: gpio.18
spi:
miso_pin: gpio.2
mosi_pin: gpio.1
sck_pin: gpio.21
sdcard:
card_detect_pin: NO_PIN
cs_pin: gpio.9
# ---- Probe and toolsetter ----
# gpio.3 is only an input when jumper 10 selects input mode.
probe:
pin: gpio.47:low
toolsetter_pin: gpio.3:low
check_mode_start: true
hard_stop: false
# ---- Spindle / laser PWM on the 5 V output header ----
pwm:
pwm_hz: 5000
output_pin: gpio.45
enable_pin: NO_PIN
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 10000=100.000%
off_on_alarm: false
# ---- OLED display ----
i2c0:
sda_pin: gpio.14
scl_pin: gpio.13
oled:
i2c_num: 0
i2c_address: 60
width: 128
height: 64
radio_delay_ms: 1000
# ---- Pendant / I/O Expander (UART2) ----
# Independent of the OLED on this board; delete this pair if unused.
uart2:
txd_pin: gpio.0
rxd_pin: gpio.35
rts_pin: NO_PIN
cts_pin: NO_PIN
baud: 1000000
mode: 8N1
uart_channel2:
report_interval_ms: 75
uart_num: 2
start:
must_home: false
----
===== B — External standard drivers =====
For TB6600, DM420, DM542, DM556 and closed-loop drivers wired to the white **EN / STP / DIR / GND** terminals. Set the VDD logic jumper ⑨ to **5 V**.
* There are no microstep pins to control from the firmware, so the plain ''standard_stepper'' block is all that is needed.
* Current and microstepping are set on the driver's own DIP switches — but microstepping still decides ''steps_per_mm''.
* The on-board sockets stay empty for these axes, and **Vmot-Driver is not needed**.
board: PiBot V5.88 Ultra
name: XYYZ external standard drivers (TB6600 / DM542 class)
# ---------------------------------------------------------------
# PiBot V5.88 Ultra - 4.2 Connect Stepper Drivers
# Mode: B - external standard drivers, step/dir/enable only
# Axes: X / Y1 / Y2 / Z (dual-Y gantry, 4 drivers)
#
# Before use, set your own: steps_per_mm, travel, homing direction,
# and check every limit pin against your real switches.
# Limit pins follow this board's own test YAML; NO_PIN where none
# is documented. This is a starting point, not a finished machine.
#
# ENABLE POLARITY: FluidNC asserts disable_pin to DISABLE a motor, but
# step/dir drivers do not agree on which level means disabled. If a motor
# is limp and never steps while STP and DIR look right, invert it:
# disable_pin: I2SO.0:low
# Some ordinary drivers only run that way. Try one axis, then do the rest.
#
# Current and microstepping come from the external driver's own DIP
# switches, not from this file - but microstepping still decides
# steps_per_mm. Set the VDD logic jumper to 5 V for these drivers.
# ---------------------------------------------------------------
stepping:
engine: I2S_STATIC
idle_ms: 250
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 0
axes:
shared_stepper_disable_pin: NO_PIN
x:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # X - socket DRV1 / terminal 1
limit_neg_pin: gpio.42:low
limit_pos_pin: gpio.41:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.2
direction_pin: I2SO.1
disable_pin: I2SO.0 # add :low if the driver runs inverted
y:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Y1 - socket DRV2 / terminal 2
limit_neg_pin: gpio.40:low
limit_pos_pin: gpio.39:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.5
direction_pin: I2SO.4
disable_pin: I2SO.7 # add :low if the driver runs inverted
motor1: # Y2 - socket DRV3 / terminal 3
limit_neg_pin: gpio.38:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.10
direction_pin: I2SO.9
disable_pin: I2SO.8 # add :low if the driver runs inverted
z:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 1
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Z - socket DRV4 / terminal 4
limit_neg_pin: gpio.37:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.13
direction_pin: I2SO.12
disable_pin: I2SO.15 # add :low if the driver runs inverted
i2so:
bck_pin: gpio.16
data_pin: gpio.17
ws_pin: gpio.18
spi:
miso_pin: gpio.2
mosi_pin: gpio.1
sck_pin: gpio.21
sdcard:
card_detect_pin: NO_PIN
cs_pin: gpio.9
# ---- Probe and toolsetter ----
# gpio.3 is only an input when jumper 10 selects input mode.
probe:
pin: gpio.47:low
toolsetter_pin: gpio.3:low
check_mode_start: true
hard_stop: false
# ---- Spindle / laser PWM on the 5 V output header ----
pwm:
pwm_hz: 5000
output_pin: gpio.45
enable_pin: NO_PIN
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 10000=100.000%
off_on_alarm: false
# ---- OLED display ----
i2c0:
sda_pin: gpio.14
scl_pin: gpio.13
oled:
i2c_num: 0
i2c_address: 60
width: 128
height: 64
radio_delay_ms: 1000
# ---- Pendant / I/O Expander (UART2) ----
# Independent of the OLED on this board; delete this pair if unused.
uart2:
txd_pin: gpio.0
rxd_pin: gpio.35
rts_pin: NO_PIN
cts_pin: NO_PIN
baud: 1000000
mode: 8N1
uart_channel2:
report_interval_ms: 75
uart_num: 2
start:
must_home: false
----
===== C — On-board SPI (TMC2130) drivers =====
For SPI-mode TMC modules in the sockets DRV1–DRV4, with the SPI jumper block ⑱ installed, the MS / RST / SLP jumpers ⑪ removed, and the VDD logic jumper ⑨ on **3.3 V**.
* Each motor has its own ''cs_pin'' — that is the same MS3 line, and ''spi_index: -1'' means independent chip select rather than a daisy chain.
* **''run_amps: 1.2'' is a placeholder.** Set it to your motor's rated current before you run anything.
* **Leave ''toff_disable'' at 0.** It is the TOFF value used while the driver is disabled, and TOFF 0 means "driver disable, all bridges off". A non-zero value keeps the power stage chopping while the motor is supposed to be off.
* ''r_sense_ohms: 0.110'' matches the common TMC2130 StepStick. Check the sense resistors on your own module if the current comes out wrong.
board: PiBot V5.88 Ultra
name: XYYZ on-board TMC2130 SPI drivers
# ---------------------------------------------------------------
# PiBot V5.88 Ultra - 4.2 Connect Stepper Drivers
# Mode: C - on-board SPI (TMC2130), independent chip select
# Axes: X / Y1 / Y2 / Z (dual-Y gantry, 4 drivers)
#
# Before use, set your own: steps_per_mm, travel, homing direction,
# and check every limit pin against your real switches.
# Limit pins follow this board's own test YAML; NO_PIN where none
# is documented. This is a starting point, not a finished machine.
#
# ENABLE POLARITY: FluidNC asserts disable_pin to DISABLE a motor, but
# step/dir drivers do not agree on which level means disabled. If a motor
# is limp and never steps while STP and DIR look right, invert it:
# disable_pin: I2SO.0:low
# Some ordinary drivers only run that way. Try one axis, then do the rest.
#
# Current and microstepping come from the tmc_2130 blocks below.
# Set run_amps to your motor's rating - do not leave the 1.2 A
# placeholder. Install the SPI jumper block, remove the MS / RST /
# SLP jumpers, and set the VDD logic jumper to 3.3 V.
#
# toff_disable is the TOFF register value used while the driver is
# disabled. TOFF 0 means 'driver disable, all bridges off', so leave
# it at 0 - that is the FluidNC default and what every official
# FluidNC example uses. A non-zero value keeps the power stage
# chopping while the motor is supposed to be off, so the motor stays
# energised and hot. FluidNC only writes this value when
# use_enable is true, so a non-zero value here is a trap that only
# springs once someone switches use_enable on.
# ---------------------------------------------------------------
stepping:
engine: I2S_STATIC
idle_ms: 250
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 0
axes:
shared_stepper_disable_pin: NO_PIN
x:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # X - socket DRV1 / terminal 1
limit_neg_pin: gpio.42:low
limit_pos_pin: gpio.41:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
tmc_2130:
cs_pin: i2so.3 # this socket's MS3 / CS output
spi_index: -1 # independent CS, not a daisy chain
r_sense_ohms: 0.110
run_amps: 1.2 # SET THIS to your motor
hold_amps: 0.1
microsteps: 16
stallguard: 0
stallguard_debug: false
toff_disable: 0 # 0 = bridges off when disabled (FluidNC default)
toff_stealthchop: 5
toff_coolstep: 3
run_mode: CoolStep
homing_mode: CoolStep
use_enable: false
step_pin: I2SO.2
direction_pin: I2SO.1
disable_pin: I2SO.0 # add :low if the driver runs inverted
y:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Y1 - socket DRV2 / terminal 2
limit_neg_pin: gpio.40:low
limit_pos_pin: gpio.39:low
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
tmc_2130:
cs_pin: i2so.6 # this socket's MS3 / CS output
spi_index: -1 # independent CS, not a daisy chain
r_sense_ohms: 0.110
run_amps: 1.2 # SET THIS to your motor
hold_amps: 0.1
microsteps: 16
stallguard: 0
stallguard_debug: false
toff_disable: 0 # 0 = bridges off when disabled (FluidNC default)
toff_stealthchop: 5
toff_coolstep: 3
run_mode: CoolStep
homing_mode: CoolStep
use_enable: false
step_pin: I2SO.5
direction_pin: I2SO.4
disable_pin: I2SO.7 # add :low if the driver runs inverted
motor1: # Y2 - socket DRV3 / terminal 3
limit_neg_pin: gpio.38:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
tmc_2130:
cs_pin: i2so.11 # this socket's MS3 / CS output
spi_index: -1 # independent CS, not a daisy chain
r_sense_ohms: 0.110
run_amps: 1.2 # SET THIS to your motor
hold_amps: 0.1
microsteps: 16
stallguard: 0
stallguard_debug: false
toff_disable: 0 # 0 = bridges off when disabled (FluidNC default)
toff_stealthchop: 5
toff_coolstep: 3
run_mode: CoolStep
homing_mode: CoolStep
use_enable: false
step_pin: I2SO.10
direction_pin: I2SO.9
disable_pin: I2SO.8 # add :low if the driver runs inverted
z:
steps_per_mm: 800.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 1
positive_direction: false
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0: # Z - socket DRV4 / terminal 4
limit_neg_pin: gpio.37:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
tmc_2130:
cs_pin: i2so.14 # this socket's MS3 / CS output
spi_index: -1 # independent CS, not a daisy chain
r_sense_ohms: 0.110
run_amps: 1.2 # SET THIS to your motor
hold_amps: 0.1
microsteps: 16
stallguard: 0
stallguard_debug: false
toff_disable: 0 # 0 = bridges off when disabled (FluidNC default)
toff_stealthchop: 5
toff_coolstep: 3
run_mode: CoolStep
homing_mode: CoolStep
use_enable: false
step_pin: I2SO.13
direction_pin: I2SO.12
disable_pin: I2SO.15 # add :low if the driver runs inverted
i2so:
bck_pin: gpio.16
data_pin: gpio.17
ws_pin: gpio.18
spi:
miso_pin: gpio.2
mosi_pin: gpio.1
sck_pin: gpio.21
sdcard:
card_detect_pin: NO_PIN
cs_pin: gpio.9
# ---- Probe and toolsetter ----
# gpio.3 is only an input when jumper 10 selects input mode.
probe:
pin: gpio.47:low
toolsetter_pin: gpio.3:low
check_mode_start: true
hard_stop: false
# ---- Spindle / laser PWM on the 5 V output header ----
pwm:
pwm_hz: 5000
output_pin: gpio.45
enable_pin: NO_PIN
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 10000=100.000%
off_on_alarm: false
# ---- OLED display ----
i2c0:
sda_pin: gpio.14
scl_pin: gpio.13
oled:
i2c_num: 0
i2c_address: 60
width: 128
height: 64
radio_delay_ms: 1000
# ---- Pendant / I/O Expander (UART2) ----
# Independent of the OLED on this board; delete this pair if unused.
uart2:
txd_pin: gpio.0
rxd_pin: gpio.35
rts_pin: NO_PIN
cts_pin: NO_PIN
baud: 1000000
mode: 8N1
uart_channel2:
report_interval_ms: 75
uart_num: 2
start:
must_home: false
----
===== D — External SPI drivers =====
The PiBot SilentStep TMC5160 V5 files, in Normal, SPI Daisy Chain and SPI Independent modes, live on their own page together with the V4.96, V5.77 and V4.7B versions:
* [[pibot_cnc_laser_series:silentstep_tmc5160_v5:yaml:start|TMC5160 V5 — Complete 4-Axis YAML Examples]]
* [[pibot_cnc_laser_series:silentstep_tmc5160_v5:start|SilentStep TMC5160 V5 manual]]
----
[[pibot_cnc_laser_series:v588_ultra:connect_stepper_drivers:start|← Back to 4.2 Connect Stepper Drivers]] · [[pibot_cnc_laser_series:v588_ultra:pinout_reference:start|1 Pinout Reference]] · [[pibot_cnc_laser_series:v588_ultra:connect_limit_switches:start|4.1 Connect Limit Switches]]