Files
cnc-router/pcb/schematic_netlist.md
nearxos f26f15db61 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
2026-06-20 16:15:25 +03:00

19 KiB
Raw Blame History

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 3749, 5152, 5661 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 (U5U12)

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 (J8J15, 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 0100%, 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
U5U12 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
J8J15 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
C5C8 0.1 µF 0805 10 Bypass caps
C9C16 100 nF 0603 8 TMC2209 VCC_IO bypass
C17C24 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
R5R12 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