# 8-Belt CNC Router — Controller Board Schematic Netlist **Board revision:** 1.0 **Controller:** ESP32-S3-WROOM-1 (16 MB Flash / 8 MB PSRAM) **Drivers:** 8× TMC2209 (UART mode, 2 buses × 4 addresses) **Form factor:** 4-layer PCB, 100×80 mm, 1.6 mm thickness **Power:** 24 VDC (motor), 5 VDC (logic), 3.3 VDC (ESP32) > Connections are listed as `REF_DES ── PIN ── SIGNAL ── DESTINATION`. > Signals with `~` prefix are active low. --- ## 1 — Microcontroller: ESP32-S3-WROOM-1 (U1) | Pin | Signal | Destination | Notes | |-----|--------|-------------|-------| | 1 | GND | GND plane | | | 2 | GPIO1 / TX0 | USB-UART bridge (RX) | Console UART | | 3 | GPIO2 / RX0 | USB-UART bridge (TX) | Console UART | | 4 | GPIO3 / ADC1_CH3 | J1-8 (A0_DIR) → U10 (DIR) | A-axis motor1 direction | | 5 | GPIO4 | J2-5 (SD_CS) → microSD (CS) | SD card chip-select | | 6 | GPIO5 | J3 (SPINDLE_PWM) → spindle MOSFET | Spindle speed PWM out | | 7 | GPIO6 | J3 (SPINDLE_DIR) → spindle MOSFET | Spindle direction | | 8 | GPIO7 | J7-1 (COOLANT_FLOOD) → MOSFET | Coolant flood relay | | 9 | GPIO8 | J1-7 (A0_STEP) → U11 (STEP) | A-axis motor0 step | | 10 | GPIO9 | J1-9 (A1_STEP) → U12 (STEP) | A-axis motor1 step | | 11 | GPIO10 | J1-10 (A1_DIR) → U12 (DIR) | A-axis motor1 direction | | 12 | GPIO11 | J1-6 (Z1_DIR) → U9 (DIR) | Z-axis motor1 direction | | 13 | GPIO12 | J1-5 (Z1_STEP) → U9 (STEP) | Z-axis motor1 step | | 14 | GPIO13 | J1-3 (Z0_DIR) → U8 (DIR) | Z-axis motor0 direction | | 15 | GPIO14 | J1-2 (Z0_STEP) → U8 (STEP) | Z-axis motor0 step | | 16 | GPIO15 | J1-1 (X0_STEP) → U5 (STEP) | X-axis motor0 step | | 17 | GPIO16 | J1-4 (X0_DIR) → U5 (DIR) | X-axis motor0 direction | | 18 | GPIO17 | UART TX1 → TMC2209 (PDN_UART) bus | UART1 single-wire (4 drivers: X0, Y0, Z0, A0) | | 19 | GPIO18 | UART TX2 → TMC2209 (PDN_UART) bus | UART2 single-wire (4 drivers: X1, Y1, Z1, A1) | | 20 | GND | GND plane | | | 21 | GPIO21 | J1-12 (Y0_STEP) → U6 (STEP) | Y-axis motor0 step | | 22 | GPIO35 | J4-1 (X_LIMIT) → limit switch | X-axis limit/home | | 23 | GPIO36 | J4-2 (Y_LIMIT) → limit switch | Y-axis limit/home | | 24 | GPIO37 | J4-3 (Z_LIMIT) → limit switch | Z-axis limit/home | | 25 | GPIO38 | J2-9 (X1_DIR) → U7 (DIR) | X-axis motor1 direction | | 26 | GPIO39 | J4-4 (A_LIMIT) → limit switch | A-axis limit/home | | 27 | GPIO40 | J4-5 (PROBE) → probe input | Probe input | | 28 | GPIO41 | SPI_MISO → microSD card (DO) | SD card data-out | | 29 | GPIO42 | SPI_MOSI → microSD card (DI) | SD card data-in | | 30 | GPIO43 | SPI_SCLK → microSD card (SCLK) | SD card clock | | 31 | GPIO44 | (reserved) | NC — available for user I/O | | 32 | GPIO45 | J2-10 (Y1_DIR) → U8 (DIR) | Y-axis motor1 direction | | 33 | GPIO46 | J2-7 (X1_STEP) → U7 (STEP) | X-axis motor1 step | | 34 | GPIO47 | J2-11 (Y0_DIR) → U6 (DIR) | Y-axis motor0 direction | | 35 | GPIO48 | J2-8 (Y1_STEP) → U8 (STEP) | Y-axis motor1 step | | 36 | GND | GND plane | | | 37~49 | NC (space) | — | Module-internal flash pins | | 50 | GND | GND plane | | | 51~52 | NC | — | Internal flash | | 53~54 | VBAT / CHIP_PU | 3.3V + 10 kΩ pullup + 0.1 µF to GND | Enable pin | | 55 | 3V3 | 3.3V rail | Core supply | | 56~61 | NC | — | Internal flash/PSRAM | | 62 | GND | GND plane | | | 63 | USB_DP | USB-UART bridge (D+) | Also accessible via USB-C | | 64 | USB_DN | USB-UART bridge (D−) | Also accessible via USB-C | | 65 | VDD_USB | 5V rail (USB VBUS) | USB power detect | | 66 | NC | — | | | 67~68 | NC | — | | | 69 | GND | GND plane | | **Module-internal connections (ESP32-S3-WROOM-1):** | Pin | Signal | Notes | |-----|--------|-------| | Module pins 37–49, 51–52, 56–61 | Flash/PSRAM interface | Internal — NC on PCB | | | 3.3V supply | LDO (U2) output to module pin 55 | | | EN / CHIP_PU | RC delay (10 kΩ + 1 µF) for power sequencing | --- ## 2 — Power Regulation ### 2.1 — 24V Input Connector (J6) | Pin | Signal | Destination | Notes | |-----|--------|-------------|-------| | 1 | VIN_24V | F1 (5A fuse) → C1 (100 µF/35V) → motor supply rail | Motor/bus power | | 2 | GND | GND plane | Power ground | **Protection:** TVS diode (SMBJ30A) from VIN_24V to GND, reverse-polarity protection (P-MOSFET or Schottky). ### 2.2 — 5V Buck Regulator (U3) — MP9942 or TPS54360 | Component | Pin | Signal | Destination | |-----------|-----|--------|-------------| | U3-1 | BOOT | Cboot (0.1 µF) → U3-8 (SW) | Bootstrap cap | | U3-2 | VIN | VIN_24V → C2 (10 µF/50V) → GND | Input | | U3-3 | EN | 24V via 100 kΩ pullup | Enable | | U3-4 | SS | Css (10 nF) → GND | Soft-start | | U3-5 | RT | Rrt (51 kΩ) → GND | Switching frequency (~500 kHz) | | U3-6 | COMP | Rc (10 kΩ) + Cc (4.7 nF) → GND | Compensation | | U3-7 | FB | R1 (10 kΩ) → 5V rail; R2 (2.32 kΩ) → GND | Feedback divider | | U3-8 | SW | L1 (10 µH) → C3 (47 µF/16V) → 5V rail | Inductor + output cap | | — | PGND | GND plane | Power ground | | — | — | 5V rail → TMC2209 VM + 3.3V LDO input | 5V distribution | ### 2.3 — 3.3V LDO Regulator (U4) — AMS1117-3.3 | Component | Pin | Signal | Destination | |-----------|-----|--------|-------------| | U4-1 | GND | GND plane | | | U4-2 | VOUT | 3.3V rail → C4 (10 µF) + C5 (0.1 µF) → ESP32-S3 module, TMC2209 VIO | 3.3V logic supply | | U4-3 | VIN | 5V rail → C6 (10 µF) | Input from 5V buck | --- ## 3 — TMC2209 Stepper Drivers (U5–U12) ### 3.1 — TMC2209 Pinout (common to all 8 drivers) | Pin # | Name | Function | Connection | |-------|------|----------|------------| | 1 | EN | Enable (active low) | 10 kΩ pullup to VIO (3.3V); optional ESP32 GPIO44 | | 2 | MS1 / ADDR_CFG | UART address select | Resistor to GND (see §3.3) | | 3 | MS2 / VREF | Current reference / UART addr | Resistor to GND if UART addressing; else VREF divider | | 4 | VCC_IO | Logic supply | 3.3V rail + C7 (0.1 µF) to GND near each driver | | 5 | GND | Ground | GND plane | | 6 | V3_1 | Internal regulator cap | 100 nF cap to GND | | 7 | V3_2 | Internal regulator cap | 100 nF cap to GND | | 8 | V3_3 | Internal regulator cap | 100 nF cap to GND | | 9 | CAP | Internal charge pump | 22 nF cap to V3_3 | | 10 | VCC | Motor supply | 5V rail (or 24V, see §3.4) | | 11 | A2 | Motor coil A2 | Motor connector | | 12 | A1 | Motor coil A1 | Motor connector | | 13 | B1 | Motor coil B1 | Motor connector | | 14 | B2 | Motor coil B2 | Motor connector | | 15 | VCC | Motor supply | 5V rail (or 24V, see §3.4) | | 16 | GND | Ground | GND plane | | 17 | VREF | Analog reference / Select | Resistor to GND (UART addressing) or voltage divider | | 18 | PDN_UART | UART data / Power-down | UART TX line (single-wire half-duplex) | | 19 | CLK | Internal clock | 10 nF to GND; or external clock if precision needed | | 20 | NC | Not connected | — | | 21 | DIAG | Diagnostic output | 10 kΩ pullup to 3.3V; optional to ESP32 GPIO | | 22 | DRV_EN | Driver enable | Pull high via 10 kΩ to VIO for active; pull low to disable | | 23 | STEP | Step input | From ESP32 GPIO via 100 Ω series resistor (see table below) | | 24 | DIR | Direction input | From ESP32 GPIO via 100 Ω series resistor (see table below) | ### 3.2 — TMC2209 Address Selection (VREF resistor to GND) | ADDR | R_VREF to GND | Driver | Axis | UART Bus | |------|---------------|--------|------|----------| | 0 | 0 Ω (short) | U5 | X motor0 | UART1 (gpio.17) | | 1 | 2.2 kΩ | U6 | Y motor0 | UART1 (gpio.17) | | 2 | 4.7 kΩ | U7 | Z motor0 | UART1 (gpio.17) | | 3 | 8.2 kΩ | U8 | A motor0 | UART1 (gpio.17) | | 0 | 0 Ω (short) | U9 | X motor1 | UART2 (gpio.18) | | 1 | 2.2 kΩ | U10 | Y motor1 | UART2 (gpio.18) | | 2 | 4.7 kΩ | U11 | Z motor1 | UART2 (gpio.18) | | 3 | 8.2 kΩ | U12 | A motor1 | UART2 (gpio.18) | ### 3.3 — Step/Dir Pin Mapping (ESP32-S3 → TMC2209) | Ref | Axis | Motor | ADDR | STEP GPIO | DIR GPIO | UART Bus | |-----|------|-------|------|-----------|----------|----------| | U5 | X | motor0 | 0 | GPIO15 | GPIO16 | UART1 | | U6 | Y | motor0 | 1 | GPIO21 | GPIO47 | UART1 | | U7 | Z | motor0 | 2 | GPIO14 | GPIO13 | UART1 | | U8 | A | motor0 | 3 | GPIO8 | GPIO3 | UART1 | | U9 | X | motor1 | 0 | GPIO46 | GPIO38 | UART2 | | U10 | Y | motor1 | 1 | GPIO48 | GPIO45 | UART2 | | U11 | Z | motor1 | 2 | GPIO12 | GPIO11 | UART2 | | U12 | A | motor1 | 3 | GPIO9 | GPIO10 | UART2 | ### 3.4 — TMC2209 Motor Supply (VCC) All TMC2209s powered by 5V rail from buck regulator (U3). For high-torque applications, VCC can be fed from 24V rail (remove LDO jumper). Each motor output (coils A1/A2/B1/B2) connects to J1/J2 XH-8 motor connectors via 100 nF + 47 µF electrolytic per driver pair. --- ## 4 — Motor Output Connectors ### 4.1 — JST XH-8 Pinout (J1, J2) — Motor Connector Blocks **J1 — Motors A0, A1, B0, B1 (top row, nearer UART1 drivers):** | J1 Pin | Signal | Driver | Driver Pin | Wire Color (typ) | |--------|--------|--------|------------|-------------------| | 1 | X0_STEP | U5 | STEP (23) | — (test point) | | 2 | Z0_STEP | U8 | STEP (23) | — (test point) | | 3 | Z0_DIR | U8 | DIR (24) | — (test point) | | 4 | X0_DIR | U5 | DIR (24) | — (test point) | | 5 | Z1_STEP | U11 | STEP (23) | — (test point) | | 6 | Z1_DIR | U11 | DIR (24) | — (test point) | | 7 | A0_STEP | U7 | STEP (23) | — (test point) | | 8 | A0_DIR | U7 | DIR (24) | — (test point) | | 9 | A1_STEP | U12 | STEP (23) | — (test point) | | 10 | A1_DIR | U12 | DIR (24) | — (test point) | | 11 | GND | GND | — | Black | | 12 | Y0_STEP | U6 | STEP (23) | — (test point) | **J2 — Motors A2, A3, B2, B3 (bottom row, nearer UART2 drivers):** | J2 Pin | Signal | Driver | Driver Pin | Wire Color (typ) | |--------|--------|--------|------------|-------------------| | 1 | VCC_5V | 5V rail | — | Red | | 2 | GND | GND | — | Black | | 3 | VIN_24V | 24V rail | — | Red/Thick | | 4 | GND | GND | — | Black | | 5 | SD_CS | U1 (GPIO4) | — | — | | 6 | GND | GND | — | Black | | 7 | X1_STEP | U9 | STEP (23) | — (test point) | | 8 | Y1_STEP | U10 | STEP (23) | — (test point) | | 9 | X1_DIR | U9 | DIR (24) | — (test point) | | 10 | Y1_DIR | U10 | DIR (24) | — (test point) | | 11 | Y0_DIR | U6 | DIR (24) | — (test point) | ### 4.2 — Motor Coil Connectors (J8–J15, 4-pin JST XH) | Connector | Driver | Axis | Pin 1 (A1) | Pin 2 (A2) | Pin 3 (B1) | Pin 4 (B2) | |-----------|--------|------|------------|------------|------------|------------| | J8 | U5 | X motor0 | U5-12 | U5-11 | U5-13 | U5-14 | | J9 | U6 | Y motor0 | U6-12 | U6-11 | U6-13 | U6-14 | | J10 | U7 | Z motor0 | U7-12 | U7-11 | U7-13 | U7-14 | | J11 | U8 | A motor0 | U8-12 | U8-11 | U8-13 | U8-14 | | J12 | U9 | X motor1 | U9-12 | U9-11 | U9-13 | U9-14 | | J13 | U10 | Y motor1 | U10-12 | U10-11 | U10-13 | U10-14 | | J14 | U11 | Z motor1 | U11-12 | U11-11 | U11-13 | U11-14 | | J15 | U12 | A motor1 | U12-12 | U12-11 | U12-13 | U12-14 | --- ## 5 — Limit Switches & Probe (J4) | J4 Pin | Signal | ESP32 GPIO | Pull | Notes | |--------|--------|------------|------|-------| | 1 | X_LIMIT | GPIO35 | 10 kΩ to 3.3V (internal :pu) | NC, active low | | 2 | Y_LIMIT | GPIO36 | 10 kΩ to 3.3V (internal :pu) | NC, active low | | 3 | Z_LIMIT | GPIO37 | 10 kΩ to 3.3V (internal :pu) | NC, active low | | 4 | A_LIMIT | GPIO39 | 10 kΩ to 3.3V (internal :pu) | NC, active low | | 5 | PROBE | GPIO40 | 10 kΩ to 3.3V (internal :pu) | NC, active low | | 6 | GND | GND | — | Ground reference | --- ## 6 — Spindle / Coolant Outputs (J3, J7) | Connector | Pin | Signal | ESP32 GPIO | Driver | Notes | |-----------|-----|--------|------------|--------|-------| | J3-1 | SPINDLE_ENA | GPIO5 | Gate of N-MOSFET (IRLZ44N) | PWM 0–100%, 5 kHz | | J3-2 | SPINDLE_DIR | GPIO6 | Gate of N-MOSFET (IRLZ44N) | CW/CCW | | J3-3 | GND | — | GND | | | J7-1 | COOLANT_FLOOD | GPIO7 | Gate of N-MOSFET + relay | 12V/1A rated | | J7-2 | GND | — | GND | | --- ## 7 — SD Card Socket (mSD, J5) | J5 Pin | Signal | Destination | Notes | |--------|--------|-------------|-------| | 1 | DAT2 | NC (1-bit SD mode) | | | 2 | CD/DAT3 | 10 kΩ pullup to 3.3V | Card detect not used | | 3 | CMD | SPI_MOSI (GPIO42) | Data in | | 4 | VDD | 3.3V + C8 (0.1 µF) to GND | Supply | | 5 | CLK | SPI_SCLK (GPIO43) | Clock | | 6 | VSS | GND | Ground | | 7 | DAT0 | SPI_MISO (GPIO41) | Data out | | 8 | DAT1 | NC (1-bit SD mode) | | | CD | CARD_DETECT | GPIO44 (optional) | Use if 4-bit SD mode | --- ## 8 — USB / Serial Console (J16) | J16 Pin | Signal | ESP32 GPIO | Connects to | |---------|--------|------------|-------------| | 1 (D+) | USB_DP | U1-63 | CP2102N or CH343 D+ | | 2 (D−) | USB_DN | U1-64 | CP2102N or CH343 D− | | 3 | VUSB | 5V from USB | 5V rail (OR-ing with 24V buck) | | 4 | GND | GND | GND | **USB-UART bridge (CP2102N or CH343):** | Bridge Pin | Signal | ESP32 GPIO | |------------|--------|------------| | TXD | TX0 | GPIO1 (RX0) | | RXD | RX0 | GPIO2 (TX0) | --- ## 9 — UART Bus Topology ``` UART1 (ESP32 GPIO17) ──┬── 1 kΩ ── U5 (X motor0) PDN_UART ADDR=0 ├── 1 kΩ ── U6 (Y motor0) PDN_UART ADDR=1 ├── 1 kΩ ── U7 (Z motor0) PDN_UART ADDR=2 └── 1 kΩ ── U8 (A motor0) PDN_UART ADDR=3 UART2 (ESP32 GPIO18) ──┬── 1 kΩ ── U9 (X motor1) PDN_UART ADDR=0 ├── 1 kΩ ── U10 (Y motor1) PDN_UART ADDR=1 ├── 1 kΩ ── U11 (Z motor1) PDN_UART ADDR=2 └── 1 kΩ ── U12 (A motor1) PDN_UART ADDR=3 ``` > **Note:** Each TMC2209 PDN_UART pin gets a 1 kΩ series resistor to prevent contention during multi-drop operation. > The ESP32's TXD pin is configured as open-drain and re-connected to its RXD for half-duplex operation (`rxd_pin: gpio.17` in config for a shared pin, or a discrete 1 kΩ feedback from TX to RX). --- ## 10 — UART Address Resistor Matrix (VREF → GND) | Driver | Axis | ADDR | R_VREF (1% tolerance) | Resistor Ref | |--------|------|------|----------------------|--------------| | U5 | X motor0 | 0 | 0 Ω (jumper) | R5 | | U6 | Y motor0 | 1 | 2.2 kΩ | R6 | | U7 | Z motor0 | 2 | 4.7 kΩ | R7 | | U8 | A motor0 | 3 | 8.2 kΩ | R8 | | U9 | X motor1 | 0 | 0 Ω (jumper) | R9 | | U10 | Y motor1 | 1 | 2.2 kΩ | R10 | | U11 | Z motor1 | 2 | 4.7 kΩ | R11 | | U12 | A motor1 | 3 | 8.2 kΩ | R12 | --- ## 11 — Netlist Summary by Net Name | Net Name | Type | ESP32 Pin | Driver Pins | Connector | Other | |----------|------|-----------|-------------|-----------|-------| | X0_STEP | Output | GPIO15 | U5-23 | J1-1 | 100 Ω series R | | X0_DIR | Output | GPIO16 | U5-24 | J1-4 | 100 Ω series R | | X1_STEP | Output | GPIO46 | U9-23 | J2-7 | 100 Ω series R | | X1_DIR | Output | GPIO38 | U9-24 | J2-9 | 100 Ω series R | | Y0_STEP | Output | GPIO21 | U6-23 | J1-12 | 100 Ω series R | | Y0_DIR | Output | GPIO47 | U6-24 | J2-11 | 100 Ω series R | | Y1_STEP | Output | GPIO48 | U10-23 | J2-8 | 100 Ω series R | | Y1_DIR | Output | GPIO45 | U10-24 | J2-10 | 100 Ω series R | | Z0_STEP | Output | GPIO14 | U7-23 | J1-2 | 100 Ω series R | | Z0_DIR | Output | GPIO13 | U7-24 | J1-3 | 100 Ω series R | | Z1_STEP | Output | GPIO12 | U11-23 | J1-5 | 100 Ω series R | | Z1_DIR | Output | GPIO11 | U11-24 | J1-6 | 100 Ω series R | | A0_STEP | Output | GPIO8 | U8-23 | J1-7 | 100 Ω series R | | A0_DIR | Output | GPIO3 | U8-24 | J1-8 | 100 Ω series R | | A1_STEP | Output | GPIO9 | U12-23 | J1-9 | 100 Ω series R | | A1_DIR | Output | GPIO10 | U12-24 | J1-10 | 100 Ω series R | | UART1_TX | Bidir | GPIO17 | U5-18, U6-18, U7-18, U8-18 | — | 1 kΩ R per driver | | UART2_TX | Bidir | GPIO18 | U9-18, U10-18, U11-18, U12-18 | — | 1 kΩ R per driver | | X_LIMIT | Input | GPIO35 | — | J4-1 | 10 kΩ pullup | | Y_LIMIT | Input | GPIO36 | — | J4-2 | 10 kΩ pullup | | Z_LIMIT | Input | GPIO37 | — | J4-3 | 10 kΩ pullup | | A_LIMIT | Input | GPIO39 | — | J4-4 | 10 kΩ pullup | | PROBE | Input | GPIO40 | — | J4-5 | 10 kΩ pullup | | SPINDLE_PWM | Output | GPIO5 | — | J3-1 | MOSFET gate | | SPINDLE_DIR | Output | GPIO6 | — | J3-2 | MOSFET gate | | COOLANT | Output | GPIO7 | — | J7-1 | Relay driver | | SD_CS | Output | GPIO4 | — | J2-5, J5-3 | | | SD_MISO | Input | GPIO41 | — | J5-7 | | | SD_MOSI | Output | GPIO42 | — | J5-3 | | | SD_SCLK | Output | GPIO43 | — | J5-5 | | | VIN_24V | Power | — | — | J6-1, J2-3 | Fused 5A, TVS | | VCC_5V | Power | U1-65 | U5-10,15 through U12-10,15 | J2-1 | From U3 buck | | VCC_3V3 | Power | U1-55 | U5-4 through U12-4 | — | From U4 LDO | | GND | Ground | U1-1,20,36,50,62,69 | U5-5,16 through U12-5,16 | J1-11, J2-2,4,6, J4-6, J3-3, J6-2 | Ground plane | --- ## 12 — Bill of Materials (Key Components) | Ref | Part | Package | Qty | Notes | |-----|------|---------|-----|-------| | U1 | ESP32-S3-WROOM-1-N16R8 | 36-pin castellation | 1 | 16 MB flash, 8 MB PSRAM | | U2 | CP2102N / CH343G | QFN-28 / MSOP-10 | 1 | USB-UART bridge | | U3 | MP9942 / TPS54360 | SOP-8 | 1 | 5V buck regulator | | U4 | AMS1117-3.3 | SOT-223 | 1 | 3.3V LDO | | U5–U12 | TMC2209-LA | QFN-24 | 8 | Stepper driver | | J1, J2 | JST XH-12 | 12-pin header | 2 | Signal breakout | | J3 | JST XH-3 | 3-pin header | 1 | Spindle | | J4 | JST XH-6 | 6-pin header | 1 | Limits + probe | | J5 | microSD socket | SMT | 1 | SD card | | J6 | 2-pin terminal block | 5.08 mm | 1 | 24V power input | | J7 | JST XH-2 | 2-pin header | 1 | Coolant | | J8–J15 | JST XH-4 | 4-pin header | 8 | Motor coils | | J16 | USB-C receptacle | SMT | 1 | Programming | | C1 | 100 µF/35V | SMD electrolytic | 1 | 24V input bulk cap | | C2 | 10 µF/50V | 1206 | 1 | Buck input cap | | C3 | 47 µF/16V | SMD electrolytic | 1 | 5V output cap | | C4 | 10 µF/10V | 0805 | 1 | 3.3V output cap | | C5–C8 | 0.1 µF | 0805 | 10 | Bypass caps | | C9–C16 | 100 nF | 0603 | 8 | TMC2209 VCC_IO bypass | | C17–C24 | 47 µF/16V | 1206 | 8 | TMC2209 motor supply | | F1 | 5A resettable fuse | 1812 | 1 | 24V input protection | | L1 | 10 µH shielded | SMD | 1 | Buck inductor | | R5–R12 | ADDR resistors | 0805 | 8 | See ADDR resistor matrix | | RxD-xS | 100 Ω | 0603 | 16 | Step/Dir line termination | | RxU-xS | 1 kΩ | 0603 | 8 | UART bus series resistors | | — | 10 kΩ | 0603 | 5 | Limit pullups | | — | TVS (SMBJ30A) | DO-214AA | 1 | 24V input protection | --- ## 13 — Board Stackup (4-Layer) | Layer | Type | Notes | |-------|------|-------| | L1 (Top) | Signal + Ground pour | ESP32-S3, TMC2209s, signal routing | | L2 (Inner 1) | Ground plane | Solid GND, no splits | | L3 (Inner 2) | Power plane | 3.3V, 5V split | | L4 (Bottom) | Signal + Ground pour | Connectors, bulk caps, routing | --- ## 14 — References | Source | URL | |--------|-----| | Maslow 4 firmware maslow.yaml | `github.com/MaslowCNC/Maslow_4/blob/Maslow-Main/firmware/FluidNC/data/maslow.yaml` | | Maslow 4 Hardware (Boards repo) | `github.com/MaslowCNC/Boards` | | Maslow 4 Electronics (old Arduino) | `github.com/MaslowCNC/Electronics` | | Maslow 4 PCB files (OSHWLabs) | `oshwlab.com/BarbourSmith/maslow4` | | FluidNC 4-axis TMC2209 board | `wiki.fluidnc.com/en/hardware/official/TMC2209_4_Axis` | | FluidNC config IO docs | `wiki.fluidnc.com/en/config/config_IO` | | FluidNC kinematics docs | `wiki.fluidnc.com/en/config/kinematics` | | FluidNC dual-motor/homing | `wiki.fluidnc.com/en/config/homing_and_limit_switches` | | FluidNC official config examples | `github.com/bdring/fluidnc-config-files` | | TMC2209 datasheet | `trinamic.com/products/integrated-circuits/tmc2209/` | | ESP32-S3 datasheet | `espressif.com/en/products/socs/esp32-s3` |