feat(pcb): add 8-belt CNC router board — FluidNC YAML config + schematic netlist

- 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
This commit is contained in:
2026-06-20 16:15:25 +03:00
parent f9cf6aa5e7
commit f26f15db61
2 changed files with 862 additions and 0 deletions

440
pcb/esp32-s3-pinout.yml Normal file
View File

@@ -0,0 +1,440 @@
# =============================================================================
# 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