- esp32-s3-pinout.yml: complete FluidNC machine config for 4×axis, 2-motors-per-axis (8 TMC2209, UART mode) - schematic_netlist.md: component-level connection table (ESP32-S3, TMC2209, power, connectors, BOM) - pins derived from Maslow 4 ESP32-S3 board layout adapted for 4-axis gantry - TMC2209s on 2 UART buses (GPIO17/18), 4 addresses each, VREF resistor matrix
441 lines
12 KiB
YAML
441 lines
12 KiB
YAML
# =============================================================================
|
||
# FluidNC Machine Configuration — 8-Belt CNC Router Controller Board
|
||
# Board: ESP32-S3-WROOM-1 based custom PCB
|
||
# Architecture: 4 axes (X/Y/Z/A), 2 motors per axis (gantry)
|
||
# Driver: 8 × TMC2209 in UART mode, 2 buses (4 drivers each)
|
||
# Kinematics: Cartesian (dual-motor gantry)
|
||
# =============================================================================
|
||
# Pin assignments derived from Maslow 4 ESP32-S3 board layout
|
||
# (github.com/MaslowCNC/Maslow_4) adapted for a 4-axis 8-motor CNC router.
|
||
#
|
||
# TMC2209 bus topology:
|
||
# UART1 (txd_pin: gpio.17): addr 0..3 → motors X0, Y0, Z0, A0
|
||
# UART2 (txd_pin: gpio.18): addr 0..3 → motors X1, Y1, Z1, A1
|
||
#
|
||
# TMC2209 ADDR selection per driver (VREF resistor to GND):
|
||
# ADDR 0: no resistor (short) → 0 Ω
|
||
# ADDR 1: → 2.2 kΩ
|
||
# ADDR 2: → 4.7 kΩ
|
||
# ADDR 3: → 8.2 kΩ
|
||
# =============================================================================
|
||
|
||
board: "8-Belt CNC Router S3"
|
||
name: "8-Belt CNC Router"
|
||
|
||
# ---- Stepping Engine -------------------------------------------------------
|
||
stepping:
|
||
engine: RMT # RMT for ESP32-S3 (cleaner than Timed on S3)
|
||
idle_ms: 250
|
||
pulse_us: 2
|
||
dir_delay_us: 1
|
||
disable_delay_us: 0
|
||
segments: 12
|
||
|
||
# ---- UART Buses (for TMC2209 UART control) ---------------------------------
|
||
# UART0 → console (USB-serial bridge), not used for TMC.
|
||
# UART1 → TMC2209 drivers, ADDR 0..3
|
||
# UART2 → TMC2209 drivers, ADDR 0..3
|
||
uart:
|
||
uart1:
|
||
txd_pin: gpio.17
|
||
rxd_pin: gpio.17 # single-wire half-duplex — TXD tied to PDN_UART
|
||
baud: 115200
|
||
mode: 8N1
|
||
rts_pin: NO_PIN
|
||
cts_pin: NO_PIN
|
||
uart2:
|
||
txd_pin: gpio.18
|
||
rxd_pin: gpio.18 # single-wire half-duplex
|
||
baud: 115200
|
||
mode: 8N1
|
||
rts_pin: NO_PIN
|
||
cts_pin: NO_PIN
|
||
|
||
# ---- SPI Bus (SD card) -----------------------------------------------------
|
||
spi:
|
||
miso_pin: gpio.41
|
||
mosi_pin: gpio.42
|
||
sck_pin: gpio.43
|
||
|
||
sdcard:
|
||
cs_pin: gpio.4
|
||
card_detect_pin: NO_PIN
|
||
frequency_hz: 8000000
|
||
|
||
# ---- Kinematics (Cartesian — dual motor gantry) ----------------------------
|
||
# Cartesian is the default; no kinematics section needed for standard
|
||
# X/Y/Z/A. Each axis has two TMC2209-driven motors (motor0, motor1).
|
||
# ----------------------------------------------------------------------------
|
||
kinematics:
|
||
Cartesian: # default, explicit for clarity
|
||
# No sub-items needed for Cartesian
|
||
|
||
# ---- Axes ------------------------------------------------------------------
|
||
axes:
|
||
# Shared disable pin — active low, disables all TMC2209 drivers
|
||
shared_stepper_disable_pin: NO_PIN # TMC2209 has internal enable via UART
|
||
|
||
# --------------------------------------------------------------------------
|
||
# X-Axis — Dual Motor Gantry (left/right)
|
||
# --------------------------------------------------------------------------
|
||
x:
|
||
steps_per_mm: 80.0
|
||
max_rate_mm_per_min: 3000.0
|
||
acceleration_mm_per_sec2: 60.0
|
||
max_travel_mm: 1200.0
|
||
soft_limits: true
|
||
|
||
homing:
|
||
cycle: 2 # home X then Y
|
||
positive_direction: false
|
||
mpos_mm: 0
|
||
feed_mm_per_min: 100.0
|
||
seek_mm_per_min: 400.0
|
||
settle_ms: 250
|
||
seek_scaler: 1.1
|
||
feed_scaler: 1.1
|
||
|
||
motor0:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: gpio.35:low:pu # shared X home/limit
|
||
hard_limits: true
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 1
|
||
step_pin: gpio.15
|
||
direction_pin: gpio.16
|
||
disable_pin: NO_PIN # each TMC driver manages its own enable via UART
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.2
|
||
hold_amps: 0.6
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 0
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
motor1:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: NO_PIN # uses motor0's limit pin for homing
|
||
hard_limits: false
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 2
|
||
step_pin: gpio.46
|
||
direction_pin: gpio.38
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.2
|
||
hold_amps: 0.6
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 0
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
# --------------------------------------------------------------------------
|
||
# Y-Axis — Dual Motor Gantry (front/back)
|
||
# --------------------------------------------------------------------------
|
||
y:
|
||
steps_per_mm: 80.0
|
||
max_rate_mm_per_min: 3000.0
|
||
acceleration_mm_per_sec2: 60.0
|
||
max_travel_mm: 800.0
|
||
soft_limits: true
|
||
|
||
homing:
|
||
cycle: 2
|
||
positive_direction: false
|
||
mpos_mm: 0
|
||
feed_mm_per_min: 100.0
|
||
seek_mm_per_min: 400.0
|
||
settle_ms: 250
|
||
seek_scaler: 1.1
|
||
feed_scaler: 1.1
|
||
|
||
motor0:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: gpio.36:low:pu
|
||
hard_limits: true
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 1
|
||
step_pin: gpio.21
|
||
direction_pin: gpio.47
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.2
|
||
hold_amps: 0.6
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 1
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
motor1:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: NO_PIN
|
||
hard_limits: false
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 2
|
||
step_pin: gpio.48
|
||
direction_pin: gpio.45
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.2
|
||
hold_amps: 0.6
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 1
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
# --------------------------------------------------------------------------
|
||
# Z-Axis — Dual Motors (lead-screw/gantry, mirrored)
|
||
# --------------------------------------------------------------------------
|
||
z:
|
||
steps_per_mm: 400.0
|
||
max_rate_mm_per_min: 800.0
|
||
acceleration_mm_per_sec2: 25.0
|
||
max_travel_mm: 200.0
|
||
soft_limits: true
|
||
|
||
homing:
|
||
cycle: 1 # home Z first
|
||
positive_direction: true
|
||
mpos_mm: 0
|
||
feed_mm_per_min: 50.0
|
||
seek_mm_per_min: 200.0
|
||
settle_ms: 500
|
||
seek_scaler: 1.1
|
||
feed_scaler: 1.1
|
||
|
||
motor0:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: gpio.37:low:pu
|
||
hard_limits: true
|
||
pulloff_mm: 3.0
|
||
tmc_2209:
|
||
uart_num: 1
|
||
step_pin: gpio.14
|
||
direction_pin: gpio.13
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.0
|
||
hold_amps: 0.5
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 2
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
motor1:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: NO_PIN
|
||
hard_limits: false
|
||
pulloff_mm: 3.0
|
||
tmc_2209:
|
||
uart_num: 2
|
||
step_pin: gpio.12
|
||
direction_pin: gpio.11
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.0
|
||
hold_amps: 0.5
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 2
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
# --------------------------------------------------------------------------
|
||
# A-Axis — Dual Motors (4th axis, e.g. rotary/aux)
|
||
# --------------------------------------------------------------------------
|
||
a:
|
||
steps_per_mm: 80.0
|
||
max_rate_mm_per_min: 2000.0
|
||
acceleration_mm_per_sec2: 40.0
|
||
max_travel_mm: 500.0
|
||
soft_limits: false
|
||
|
||
homing:
|
||
cycle: -1 # no homing — manual positioning
|
||
allow_single_axis: true
|
||
positive_direction: true
|
||
mpos_mm: 0
|
||
feed_mm_per_min: 50.0
|
||
seek_mm_per_min: 200.0
|
||
settle_ms: 250
|
||
seek_scaler: 1.1
|
||
feed_scaler: 1.1
|
||
|
||
motor0:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: gpio.39:low:pu
|
||
hard_limits: true
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 1
|
||
step_pin: gpio.8
|
||
direction_pin: gpio.3
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.0
|
||
hold_amps: 0.5
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 3
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
motor1:
|
||
limit_neg_pin: NO_PIN
|
||
limit_pos_pin: NO_PIN
|
||
limit_all_pin: NO_PIN
|
||
hard_limits: false
|
||
pulloff_mm: 2.0
|
||
tmc_2209:
|
||
uart_num: 2
|
||
step_pin: gpio.9
|
||
direction_pin: gpio.10
|
||
disable_pin: NO_PIN
|
||
r_sense_ohms: 0.11
|
||
run_amps: 1.0
|
||
hold_amps: 0.5
|
||
microsteps: 16
|
||
toff_disable: 0
|
||
toff_stealthchop: 5
|
||
use_enable: true
|
||
addr: 3
|
||
run_mode: StealthChop
|
||
homing_mode: StealthChop
|
||
stallguard: 0
|
||
stallguard_debug: false
|
||
toff_coolstep: 3
|
||
|
||
# ---- Control Pins ----------------------------------------------------------
|
||
control:
|
||
safety_door_pin: NO_PIN
|
||
reset_pin: NO_PIN
|
||
feed_hold_pin: NO_PIN
|
||
cycle_start_pin: NO_PIN
|
||
macro0_pin: NO_PIN
|
||
macro1_pin: NO_PIN
|
||
macro2_pin: NO_PIN
|
||
macro3_pin: NO_PIN
|
||
|
||
# ---- Coolant ---------------------------------------------------------------
|
||
coolant:
|
||
flood_pin: gpio.7
|
||
mist_pin: NO_PIN
|
||
delay_ms: 0
|
||
|
||
# ---- Probe ----------------------------------------------------------------
|
||
probe:
|
||
pin: gpio.40:low:pu
|
||
check_mode_start: true
|
||
|
||
# ---- Macros ----------------------------------------------------------------
|
||
macros:
|
||
startup_line0:
|
||
startup_line1:
|
||
macro0:
|
||
macro1:
|
||
macro2:
|
||
macro3:
|
||
|
||
# ---- Start / Park ----------------------------------------------------------
|
||
start:
|
||
must_home: true
|
||
deactivate_parking: false
|
||
check_limits: false
|
||
|
||
parking:
|
||
enable: false
|
||
axis: Z
|
||
target_mpos_mm: -5.0
|
||
rate_mm_per_min: 800.0
|
||
pullout_mm: 5.0
|
||
pullout_rate_mm_per_min: 250.0
|
||
|
||
# ---- Spindle (PWM / VFD) ----------------------------------------------------
|
||
PWM:
|
||
pwm_hz: 5000
|
||
output_pin: gpio.5
|
||
enable_pin: NO_PIN
|
||
direction_pin: gpio.6
|
||
disable_with_s0: false
|
||
s0_with_disable: true
|
||
spinup_ms: 0
|
||
spindown_ms: 0
|
||
tool_num: 0
|
||
speed_map: 0=0% 10000=100%
|
||
|
||
# ---- User Outputs -----------------------------------------------------------
|
||
user_outputs:
|
||
analog0_pin: NO_PIN
|
||
analog1_pin: NO_PIN
|
||
analog2_pin: NO_PIN
|
||
analog3_pin: NO_PIN
|
||
digital0_pin: NO_PIN
|
||
digital1_pin: NO_PIN
|
||
digital2_pin: NO_PIN
|
||
digital3_pin: NO_PIN
|
||
digital4_pin: NO_PIN
|
||
digital5_pin: NO_PIN
|
||
digital6_pin: NO_PIN
|
||
digital7_pin: NO_PIN
|
||
analog_hz: 5000
|
||
|
||
# ---- General Settings -------------------------------------------------------
|
||
arc_tolerance_mm: 0.002
|
||
junction_deviation_mm: 0.010
|
||
verbose_errors: false
|
||
report_inches: false
|
||
enable_parking_override_control: false
|
||
use_line_numbers: false
|
||
planner_blocks: 16
|