# ============================================================================= # 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