servodrive › board S

Board S — the one-board servodrive

routed · DRC, ERC and netlist clean simulated on this layout not built

A three-phase BLDC/PMSM drive on a Ø65 mm six-layer board that bolts to the back of the motor: 12–48 V in on an XT30, 20 A RMS per phase in bursts, field-oriented control on an RP2350 with the MT6701 magnetic encoder on the shaft axis, inline current sensing on two phases, USB-C for configuration and logic power, two full-duplex RS-485 ports for a daisy chain, and a header for a stacked USB-PD or Ethernet board. It is board A of the two-board design with its board-to-board links replaced by the essentials of board B, so the power stage and CPU are the same copper.

KiCad 9 project hardware/single_board/servodrive_S.kicad_pro (three sheets, one board). Everything is generated: tools/schematic_s.py is the netlist, tools/schlayout_s.py draws the schematic, tools/placement_s.py is the floorplan, tools/gen_boards.py --board s the board and tools/route.py --board s the routing.

The dot puts a layer on top at full opacity; the box says whether it is drawn at all.

1.0×

Keys: 1–9 pick a layer, s solo, a all, m mirror, 0 fit. Click a part for its pane; coordinates are pcbnew’s, in millimetres.

Copper, layer by layer

Board S's six copper layers as routed, plotted out of the board file by KiCad and stacked in register — the same viewer as board A's on the project page. Pick a layer to bring it to the front; drag to pan, scroll to zoom; click a part for its pane. The cursor reads out pcbnew's x and y, and the radius and angle about the shaft axis: angles are measured from the +x axis, the way the section boundaries at 0/68/136/204/256/308° are.

The viewer is pcbview's (configured by pcbview.toml); route.py --board s and gen_boards.py --board s rebuild it through tools/regen.py, or by hand python3 tools/regen.py --board s --sim no.

What the simulation says about this board

The project’s electromagnetic simulation, run on this board file: the commutation loop and gate loops in FastHenry, the switching edges and sense chain in ngspice, DC current flow on all six layers, the DC link and bulk as a network, the field at the encoder, the FOC loop with the ADC, and an openEMS cross-check of the loop. Design point: 48 V, 20 A RMS per phase (28.3 A peak), 20 kHz centre-aligned sine PWM at m = 0.8. Each row grades one question against the criterion the simulation spec (sim/SPEC.md) set for it.

4 of 17 criteria met5 not met · 2 partly · the rest reported
Bulk cans: 2.3 A ripple eachrated about 1.8 A · fine to ~16 A RMS per phase
Worst Vds 69.7 Vsilicon 80 V · phase clamps break down at 60.0 V
Commutation loop 2.03 nHPCB only, FastHenry · openEMS agrees within 9 %
QuestionThis boardCriterionVerdict
Commutation loop2.03 nH of PCB (FastHenry, all four capacitors); 3.2–3.3 nH with the two FET packages and the capacitors' ESL (its mesh series 2.50, 2.32, 2.10, 2.00, 2.03, 1.82, 1.74 nH, 4.2 % on the last step); cells A/B/C within 18 %; the full-wave check, one capacitor's loop, reads 2.37, 2.32, 2.27 nH as its mesh refines (0.2, 0.14, 0.1 mm) against FastHenry's 2.49 nHreported; FastHenry and openEMS agree within 25 %, each convergedmeets it
Switching overshoot51.2 V peak at 48 V and 28.3 A; 69.7 V at the worst corner swept (Rg, Tj, driver strength, capacitance); 59.1 V at 56 V, the top of the fold-backVds ≤ 57 V everywhere (the TPSMF4L54A's breakdown minimum is 60.0 V; the criterion keeps board A's 3 V margin under it); ringing under 5 % in 5 cyclespartly
Snubberat the nominal edge, which passes without one (51.2 V), every RC from 2.2–22 Ω and 0.47–4.7 nF leaves the peak at 50.9–51.3 V: the overshoot there is too small for a snubber to matter. The sweep is not run at the strong-driver corner that reaches 69.7 Vthe smallest RC that passes Q2 with PR ≤ 0.25 Wreported
Miller turn-on3.04 V induced on the off FET's gate at the nominal edge, 3.62 V at the worst corner, against a VGS(th) of 2.2 V minimuminduced Vgs ≤ 0.7 × VGS(th),mindoes not
Current sense, transientthe INA241A3 holds its output 1000 ns after each edge (settles in 1196 ns, 35 LSB worst); a free-running ADC lands 12–14 % of samples in a hold, PWM-synchronised sampling nonesettled to ±1 LSB in 500 ns; ≤ 6 % of samples disturbeddoes not
Current sense, DCcopper is 2.9 % of the 1.030 mΩ between the taps; TCR -155 to 379 ppm/K with the shunt's ±275 ppm/K; the two shunts share 51/49copper ≤ 5 %; TCR ≤ 500 ppm/K; sharing within 10 %meets it
Vias and copper at 20 Abusiest barrel 2.83 A RMS in the 16-via array that takes the phase current from the low-side drain down to the shunts, 2.09 A in the high side's 20-via drain array fed from the XT30; phase band 74 A/mm² (p99.9)≤ 2 A RMS per 0.4 mm barreldoes not
Bulk cans2.3 A RMS in each can at 20 A RMS per phase (0.15 W each), against 1.8 A of rating at 20–40 kHz: within rating up to about 16.1 A RMS per phase, continuouseach can within its ripple ratingdoes not
Bus ripple2.42 V peak-to-peak at the drains; 3.2 A RMS goes back up a 1 µH battery lead; the ceramics are 8.2 µF at 48 V of 13.8 nominal; the cans are about 1.0 nH of plane from cell AVbus,pp ≤ 3 V; no DC-link resonance with Q > 3 below 1 MHzmeets it
Encoder fieldbulk cans 0.009° and the XT30's bus current 0.016° at the weakest field; with the motor leads 0.13° at the nominal gap, 0.17° at the weakest — the leads are nearly all of itcurrent-induced angle error ≤ 0.05° (about 2 LSB)partly
the board's own currents pass; the motor leads do not unless twisted
MagnetØ6 × 2.5 mm: 69 mT at the IC at the nominal 1.5 mm gap; inside the window for every grade and ±0.3 mm offset from 1.0 to 2.0 mm; over 100 mT at 0.5 mm and closer20–100 mT (MT6701) over the gap tolerance, 1–2 mmmeets it
ADC samplingfree-running round-robin: 0.63 A RMS error and 1.52 A bias on iq; sampled at the PWM counter's zero: 0.20 A and 0.73 Asynchronised sampling cuts disturbed samples to zeroreported
Dead timethe software dead_zone costs 0.62 % of torque on top of the EG2103's own 560 ns; pulses under 2.4 % duty never reach the FETsreported, with a firmware settingreported
Regenerationa 20 A brake from rated speed (J 10−3 kg·m²) lifts 132 µF from 48 V to the 52 V fold-back in 31 µs and to the TVS in 93 µs; the bulk takes 0.09 J of the 21.9 J storedreported: no brake chopper; the battery, when it accepts charge, is the sinkreported
Motor frame (common mode)a floating frame swings 70 V peak on each edge through the winding capacitance≤ 10 V peak frame-to-GNDdoes not
the enclosure has to bond the motor frame; the board cannot
Heat10.0 W on the board at 20 A RMS and 48 V; the high-side drain's 20-via array is 7.1 K/W; for Tj ≤ 125 °C the ring needs ≤ 7.4 K/W to air (about 90 cm²)reportedreported
Radiated field56 dBµV/m at 3 m per volt across the switch node at its 115 MHz ring, with a 58 mm motor lead: 164 mV of switch-node signal in a CISPR receiver's 120 kHz band reaches class B there (36 mV at 230 MHz, the least up to 300 MHz). Two meshes agree to 0.5 dB; the transform reproduces a textbook dipoleinformationalreported
The bulk cans at the design point
The bulk cans at the design point. Left: the inverter's DC-link current over three PWM periods at the phase-current peak, with what the six cans and the battery lead carry of its ripple. Right: each can's RMS ripple for every ceramic and ESR corner, against the part's 2.6 A (100 kHz) rating brought down to 20–40 kHz. The ceramics on the cells are too small at 20 kHz to take a useful share; the cans take it all, and the battery lead rings against them.
Both switching edges of cell A
Both switching edges of cell A. ngspice, with FastHenry's loop and gate inductances, the fitted BSC030N08NS5 and a behavioural EG2103, at the design point. Top: Vds of both FETs; the larger overshoot is the low side's, while its own body diode recovers at turn-on. Bottom: the gates, with the Miller kick on the FET that is meant to stay off.
The commutation loop, solved
The commutation loop, solved. FastHenry on cell A's routed copper: each DC-link capacitor's own loop and all four in parallel (black), 1 kHz to 300 MHz, against the 0.39 nH the design's closed form assumed (dashed). The packages and capacitor ESL come on top of this.
The bus current on In2
The bus current on In2. The DC solution, 28.3 A from the XT30's VMOT pin (lower left) to cell A's high-side drain (right) on the In2 VBUS plane. It goes the long way round, past cells C and B: In2 is +3V3 over the CPU wedge and the centre, so the plane is an open ring.
The phase output
The phase output. Current density in cell A's phase pour on B.Cu, from the shunts to the motor-lead pad, at the 28.3 A peak.
The field at the encoder
The field at the encoder. Worst angle error over the air gap with the Ø6 magnet: the bulk cans' ripple and the bus current through the XT30 each stay well under the 0.05° criterion; the motor leads are what exceed it.
The DC link seen from one cell
The DC link seen from one cell. Impedance looking into cell A's half-bridge: the cans behind the planes at low frequency, the ceramics above a few hundred kHz, and the loop inductance at the top.
What the ADC gives the current loop
What the ADC gives the current loop. The FOC loop, the motor and the RP2350's ADC together: free-running round-robin sampling against sampling at the PWM counter's zero.
What the board radiates
What the board radiates. openEMS, the whole board: phase A's switch node driven against ground at the low-side FET, with the motor lead on J1. Every other net is AC ground at these frequencies, so only the switch node's copper needs a mesh fine enough to keep it apart. Top: the field at 3 m per volt across the switch node, on two meshes. Bottom: the switch-node level, in a CISPR receiver's 120 kHz band, that puts the field on the class B limit.
Two solvers, one loop
Two solvers, one loop. The same loop in openEMS (full wave, mesh snapped to the copper) and in FastHenry (quasi-static), each over its own mesh series (the numbers are in the table above).

Phases run: P0, P1, P2, P3, P4, P5, P5S, P6, P7, P8; solver known-answer tests 14/14 passed. Results written 2026-10-12 03:10 from the board file of 2026-09-29 10:50; numbers and figures come only from sim/results/s/ and sim/report/img/s/. Rebuild with python3 sim/run.py --board s (about two hours; the full-wave cross-check is most of it). Board A’s own report is here.

The board at a glance

FormØ65 mm round, 1.58 mm, six layers (2 oz outer, 1 oz inner). Parts on both faces. Bolts to the motor's rear face on 4 × M3 (NPTH, not a ground bond) at (±12.5, 0) and (0, ±9.5) mm; six M2.5 bosses at R 29.5 carry a heatsink ring or standoffs and bond GND to it.
Bus12–48 V operating, 48 V the maximum; the firmware folds the current limit back across 52→56 V. 80 V FETs. Clamps are the 54 V grade: SMDJ54A (3 kW) on the bus, TPSMF4L54A on each phase, both breaking down at 60.0–66.3 V.
Phase current20 A RMS per phase (28.3 A peak) in bursts. The continuous rating is set by heat and, on this board, by the bulk cans' ripple rating: about 16 A RMS per phase with six small cans (the bulk options), where the first two large ones allowed 5.5.
Power stageThree half-bridges of BSC030N08NS5 (80 V, 3.0 mΩ max), 20 kHz centre-aligned PWM. EG2103 driver per phase: bootstrap high side, interlock, 560 ns internal dead time, 0.3/0.6 A; 2.2 Ω gate resistors, 10 k bleeds. DC link at the FETs: 2 × 2.2 µF/100 V X7S + 2 × 100 nF per cell. RC snubber footprints (2.2 Ω + 470 pF) on the board, not populated.
Bulk6 × 22 µF/100 V conductive polymer (jieerrui PA100V22M6X9, Ø6.3 × 9, 30 mΩ, 2.6 A ripple at 100 kHz), 132 µF, two in each of the three pockets between the M3 heads on the outward face (2026-09-28; it was two Ø10 cans, why).
Current sensePhases A and B inline: 2 × 2 mΩ (Vishay WSLP2010) = 1.0 mΩ into an INA241A3 at 50 V/V: 50 mV/A about 1.65 V, ±29.0 A at the amplifier's worst-case swing. Phase C carries a metal-strip 0 Ω so all three legs match; Ic = −(Ia + Ib). One shunt off per phase gives ±14.5 A at 100 mV/A.
Other sensingBus voltage (2 × 56 k over 4.7 k, 0.1 %: 1 : 24.8, 81.9 V full scale) on ADC2; FET temperature, a 10 k NTC (B 3380 K) in cell A, on ADC3; USB VBUS present on GPIO25.
EncoderMT6701 on the shaft axis, motor-facing face; 14-bit angle over SSI on the same board. Ø6 × 2.5 mm diametric magnet at a 1.5 mm nominal gap; nothing taller than 1.5 mm in the motor-facing centre.
ControllerRP2350A (QFN-60) with its core buck, 12 MHz crystal and 16 Mbit flash, laid out after Raspberry Pi's RP-006440 reference design.
InterfacesUSB-C: USB 2.0 device and 5 V logic power, no PD. Two RS-485 ports (JST-SH 6), each a full-duplex point-to-point link; the CPU relays between them. 2 × 10, 1.27 mm expansion header for a stacked board. RGB LED, BOOTSEL, SWD pads.
Rails+12 V gate drive and +5 V logic, each an LMR38010 buck from the bus at 400 kHz; +5 V also from USB through a Schottky OR; +3V3 from an SPX3819 LDO; +1V1 from the RP2350's own buck.

Power tree

Power tree: VBUS from the XT30 feeds the three half-bridges, the 12 V gate buck, the 5 V logic buck, the expansion header and the bus divider; 5 V from the buck or USB through a diode-OR feeds the 3.3 V LDO and the logic. VBUS J4 · XT30, 12–48 V battery (pin 1 GND, pin 2 VMOT) SMDJ54A 3 kW clamp · 2 × 100 µF polymer bulk · In2 is the VBUS plane DC link at the FETs 6 × 2.2 µF X7S + 6 × 100 nF 3 half-bridges, 20 kHz 6 × BSC030N08NS5, 80 V Shunts on A and B 2 × 2 mΩ into INA241A3 Motor leads J1–J3 TPSMF4L54A clamp per phase LMR38010 → +12 V gate on 9.9 V, off 8.7 V; GATE_OFF 3 × EG2103 bootstrap, 560 ns dead time ISENSE A, B HIN / LIN × 3 (GPIO8–13), GATE_OFF (GPIO2) LMR38010 → +5 V logic supply, EN tied to VIN Diode-OR, 2 × B5819WS buck or USB → +5V SPX3819 LDO → +3V3 RP2350 core buck → +1V1 RP2350A · MT6701 2 × INA241A3 · 4 × SIT65HVD75 J13 · expansion 2 × 10 4 × VMOT, either direction J12 · USB-C USB 2.0 device, 5 V, no PD J14, J15 · RS-485 full duplex × 2, SM712 ESD Bus divider → ADC2 2 × 56 k / 4.7 k, 0.1 %

Start-up and reset

  • The 12 V buck's enable is a divider from the bus (470 k over 68 k): it starts at 9.9 V (11.1 V worst case) and stops at 8.7 V. At a 12 V bus the buck runs near its maximum duty and the rail sits about 11.5 V, still above the EG2103's 9.7 V UVLO: 12 V is the floor.
  • GATE_OFF (GPIO2) is active high. A 2N7002 on the enable divider does the pulling, because the divider sees up to 8 V; high kills the gate rail. A 4.7 k pull-down holds it low through reset, so the rail stays up.
  • A reset brakes. HIN is pulled down and LIN is pulled down (4.7 k, strong enough for RP2350-E9); the EG2103's LIN is active low, so every low side conducts and the motor windings are shorted while the CPU is in reset.
  • USB alone powers the logic (encoder, CPU, RS-485, configuration) but not the gate rail, so nothing can switch without the bus.

Protection

  • Bus: SMDJ54A, 3 kW, 60.0–66.3 V breakdown, 87.1 V clamp at 34.4 A — under the FETs' 80 V for pulses to about 23 A. There is no brake chopper and no reverse-polarity protection: regen goes into the bulk, then the battery if it takes charge, then the TVS.
  • Phases: TPSMF4L54A from each phase output to ground, beside the lead pad.
  • Interfaces: SM712 on each RS-485 pair at its connector; USBLC6-2SC6 on USB D+/D− and VBUS.
  • Firmware: the bus guard folds the current limit to zero across 52→56 V; the 60 V TVS breakdown is the hard stop above it.

Floorplan

Angles are from +x, counter-clockwise, looking at the outward face. The three phase cells take 0–204° of the rim (68° each, centred at 34, 102 and 170°): FETs, driver and DC-link ceramics on the outward face under a heatsink land at R 29.2–31.5; shunts, sense amplifier, phase pour and the motor-lead pad on the motor-facing face. The remaining 156° is three 52° wedges:

Placement, both faces. Filled: parts board S adds or moves; grey: board A's, unchanged; tan: heatsink lands (outward) and motor-lead pads (motor side). The motor-facing face is drawn as seen through the board, so the two panels register. Hover a part for its note.

Connectors and pinouts

J4 · bus, AMASS XT30PW-M (horizontal)

1GND
2VMOT, 12–48 V

The rp2350-motor-controller's pinout, so one pack lead fits both. Rated 15 A continuous.

J14 RS-485 IN, J15 RS-485 OUT · JST-SH 6

PinJ14, from upstreamJ15, to downstream
1GNDGND
2, 3DN A/B — received (U14, 120 Ω)DN A/B — driven (U17)
4, 5UP A/B — driven (U15)UP A/B — received (U18, 120 Ω)
6GNDGND

Each pair has one driver and one receiver, so drivers are always enabled and each receiver is permanently terminated. A straight cable joins one drive's OUT to the next one's IN. Port IN is UART0 (GPIO0/1), port OUT a PIO UART (GPIO14/15); the CPU relays between them, so an unpowered drive breaks the chain below it. No bias network is needed: the SIT65HVD75's receiver switches at −10 and −200 mV, so an idle, open or shorted line reads as idle with the 120 Ω across it. 20 Mbit/s maximum. (It replaced the SIT3088ETK, out of stock, on 2026-10-16: the same pins in the same package.)

J12 · USB-C (HRO TYPE-C-31-M-12)

USB 2.0 full-speed device (27 Ω series, USBLC6 ESD); 5.1 k on each CC, so a 5 V sink only. VBUS feeds +5V through a B5819WS and is sensed on GPIO25 (10 k/15 k).

J13 · expansion, 2 × 10 at 1.27 mm

PinNetPinNet
1VMOT2GND
3VMOT4GND
5VMOT6GND
7VMOT8GND
9RUN10GND
11GPIO24 · RST12+5V
13GPIO19 · INT14+3V3
15GPIO20 · I2C0 SDA / SPI0 RX16GPIO21 · I2C0 SCL / SPI0 CSn
17GPIO22 · SPI0 SCK18GPIO23 · SPI0 TX
19SWCLK20SWDIO

For a stacked board: a USB-PD sink (e.g. FUSB302 on I2C0) that feeds VMOT through its own ideal diode, or Ethernet (e.g. W5500 on SPI0). The VMOT pins are paired with grounds so a PD board's current passes the encoder as a dipole; 3 A per pin.

Motor, programming, test

  • J1–J3: phase A/B/C lead pads on the motor-facing rim at 34, 102 and 170°, for 14 AWG. Twist or bundle the three leads for their first 50 mm (encoder, above).
  • SW1 BOOTSEL; TP5/TP6 SWCLK/SWDIO, TP7 RUN, TP4 ADC3 (FET temperature), all in the outward centre.

RP2350 pin map

GPIONetUse
0, 1RS485_IN_TX, _RXUART0, port IN
2GATE_OFFhigh turns the 12 V gate rail off
3FAULT_npulled up; nothing drives it on this board
4–7ENC_DO, ENC_CS, ENC_SCK, ENC_OUTMT6701 SSI data, chip select, clock, and its OUT pin: GPIO4 and 6 are SPI0's RX and SCK, so SPI0 reads it
8–13HIN_A, LIN_A, HIN_B, LIN_B, HIN_C, LIN_CPWM slices 4, 5, 6; both channels of a slice at the same duty (the EG2103 inverts LIN)
14, 15RS485_OUT_TX, _RXPIO UART, port OUT
16–18LED_R, LED_G, LED_Bcommon-anode RGB, low is on
19–24EXP_GP19–24expansion header
25USB_VBUS_DETUSB power present (3.0 V at 5 V)
26 / ADC0ISENSE_Aphase A current, 50 mV/A about 1.65 V
27 / ADC1ISENSE_Bphase B current
28 / ADC2VBUS_SENSEbus voltage ÷ 24.8
29 / ADC3FET_TEMPNTC divider, cell A

Stackup and rules

LayerCopperUse
F.Cu70 µmFETs, drain and switch-node islands, DC-link caps, drivers, bulk, GND pour
prepreg 0.10 mm
In1.Cu35 µmGND, solid
core 0.37 mm
In2.Cu35 µmVBUS plane everywhere but the CPU wedge and centre disc, which are +3V3
core 0.37 mm
In3.Cu35 µmsignals, GND fill
core 0.37 mm
In4.Cu35 µmGND, solid
prepreg 0.10 mm
B.Cu70 µmswitch-node and phase pours, shunts, sense amplifiers, encoder, lead pads
  • 0.15 mm track and clearance; 0.40 mm on the bus-voltage nets (VBUS, SW_*, PHASE_*). On In3 within 17 mm of the shaft (the rule area fine centre) signal tracks may be 0.12 mm with 0.12 mm clearance: that is 1 oz inner copper, where JLCPCB's floor is 0.09.
  • No copper on either outer face round the four centre M3 screws: rule-area keepouts of the screw head's diameter, for the head on the outward face and the standoff on the motor-facing one.
  • Vias 0.5/0.2 mm signal, 0.6/0.3 power, 0.8/0.4 phase; hole to hole 0.5 mm. Each FET drain pad has 16 × 0.4 mm vias; via-in-pad throughout, so it wants a filled and capped (POFV) six-layer process, e.g. JLCPCB's.
  • The bus reaches the cells only through In2: the high-side drains by their via arrays, the DC-link caps by via-in-pad. The XT30's VMOT pin has 10 vias into an In2 tab and its GND pin 7; a VBUS spine on F.Cu joins it to the expansion header's VMOT pins.
  • Board origin (KiCad 148, 105 mm) is the shaft axis and the MT6701's sensing centre.

Build status

Parts on the board198 footprints (99 outward, 99 motor-facing): 190 placed parts, 10 of them DNP (the snubbers, and cell C's unused amplifier and sense taps), plus test pads and holes
Netlist194 components, 111 nets, 585 connections
Routing2241 track segments, 444 vias; 0 unconnected
ChecksDRC 0, ERC 0 (every severity)
Sourcingevery placed part has an LCSC number (hardware/parts/lcsc.csv), shown in the 3D viewer's part pane

Counted off servodrive_S.kicad_pcb as saved 2026-10-16 00:28 by tools/regen.py, which route.py runs after every routing run.

python3 tools/schematic_s.py                       # netlist and its checks
python3 tools/gen_boards.py --board s --force       # emit, stitch, fan out (discards routing)
python3 tools/route.py --board s --rounds 1         # then --polish, twice
python3 sim/run.py --board s                        # the simulation, into this page

Open items

Parts board S adds or moves

Everything else is board A's, in the same place. R is the courtyard centre's radius from the shaft axis.

RefValueWhereRNote
D1001SMDJ54Apower wedge, 230°, motor sideR 21.3bus TVS, 3 kW, 54 V standoff, 60-66 V breakdown; under the XT30, cathode toward its VMOT pin
D1101SM712power wedge, 230°, motor sideR 23.5RS-485 ESD, IN, DOWN pair, at the port
D1104SM712power wedge, 230°, motor sideR 23.5RS-485 ESD, OUT, DOWN pair, at the port
J14RS485 IN (upstream)power wedge, 230°, motor sideR 28.7full-duplex RS-485, JST-SH 6, motor-facing rim, mouth outward
J15RS485 OUT (downstream)power wedge, 230°, motor sideR 28.7a link of its own, relayed by the CPU
C100922u/25Vpower wedge, 230°, outwardR 28.7+12 V out; beside the XT30
D1102SM712power wedge, 230°, outwardR 23.4RS-485 ESD, IN, UP pair, at the port
D1105SM712power wedge, 230°, outwardR 23.5RS-485 ESD, OUT, UP pair, at the port
J4XT30power wedge, 230°, outwardR 20.1bus input, AMASS XT30PW-M as the rp2350-motor-controller's J9: pin 1 GND, pin 2 VMOT; mouth outward, 5.0 mm in from the edge
C1102100ncentre, motor sideR 8.5U14 decoupling, at VCC
C1103100ncentre, motor sideR 14.5U15 decoupling, at VCC
C1104100ncentre, motor sideR 11.4U17 decoupling, at VCC
C1105100ncentre, motor sideR 8.1U18 decoupling, at VCC
C7121ucentre, motor sideR 14.73V3 out
C7131ucentre, motor sideR 15.35 V in
C717100ncentre, motor sideR 15.9RUN
C801100ncentre, motor sideR 8.7ADC2 filter
C802100ncentre, motor sideR 11.3ADC3 filter
R110310kcentre, motor sideR 13.3VBUS_DET divider, top
R110415kcentre, motor sideR 14.8VBUS_DET divider, bottom -> GPIO25
R1105120Rcentre, motor sideR 11.9port IN DOWN pair termination, always on
R1106120Rcentre, motor sideR 7.7port OUT UP pair termination, always on
R70410kcentre, motor sideR 15.3RUN pull-up
R70510kcentre, motor sideR 14.4FAULT_n pull-up
R80156k 0.1%centre, motor sideR 13.5bus divider, high leg
R8024k7 0.1%centre, motor sideR 7.6bus divider, low leg
R80310k 0.1%centre, motor sideR 14.2thermistor divider -> ADC3
R80656k 0.1%centre, motor sideR 10.6bus divider, high leg, second half
U14SIT65HVD75centre, motor sideR 8.8port IN: receiver, DOWN pair -> UART0 RX
U15SIT65HVD75centre, motor sideR 13.0port IN: driver, UP pair <- UART0 TX, DE on
U17SIT65HVD75centre, motor sideR 14.1port OUT: driver, DOWN pair <- PIO TX, DE on
U18SIT65HVD75centre, motor sideR 10.6port OUT: receiver, UP pair -> PIO RX
U9SPX3819-3.3centre, motor sideR 14.55 V -> 3V3
C1001100u/100V polymercentre, outwardR 13.3bulk, C2887236, Dia 10 x 12, in the centre, + lead outward
C1002100u/100V polymercentre, outwardR 15.3bulk, C2887236, Dia 10 x 12, in the centre, + lead outward
C10044u7/100Vcentre, outwardR 14.9+12 V buck input, 4.7 uF ceramic; in the outward centre, 11 mm from C1003
C10074u7/100Vcentre, outwardR 11.0+5 V buck input, 4.7 uF ceramic; in the outward centre, 17 mm from C1006
D1103RGBcentre, outwardR 12.7status LED, three GPIO
J13EXPANSIONcentre, outwardR 0.02x10 1.27 SMD: 4 VMOT, 5 GND, +5V, +3V3, RUN, GPIO19-24, SWCLK, SWDIO; across the axis, the MT6701's vias moved clear
R11071kcentre, outwardR 13.2LED series
R11081kcentre, outwardR 13.8LED series
R11091kcentre, outwardR 15.2LED series
SW1BOOTSELcentre, outwardR 15.0BOOTSEL to GND, via R701
TP4ADC3centre, outwardR 6.9test point, ADC3, outward face
TP5SWCLKcentre, outwardR 6.4test point, SWCLK, outward face
TP6SWDIOcentre, outwardR 8.4test point, SWDIO, outward face
TP7RUNcentre, outwardR 10.5test point, RUN, outward face
C1003100n/100Vsignal wedge, 334°, motor sideR 22.7+12 V buck input, HF, at VIN/GND
C1005100nsignal wedge, 334°, motor sideR 29.1+12 V bootstrap, BOOT to SW
C101122u/25Vsignal wedge, 334°, motor sideR 19.1+5 V out
C60322u/25Vsignal wedge, 334°, motor sideR 19.7+12 V out
D1002B5819WSsignal wedge, 334°, motor sideR 20.3USB VBUS -> +5V
D1003B5819WSsignal wedge, 334°, motor sideR 29.55 V buck -> +5V, so USB cannot back-feed the rails
L100168usignal wedge, 334°, motor sideR 21.7+12 V buck inductor, SWPA4030S680MT
Q10012N7002signal wedge, 334°, motor sideR 28.4GATE_OFF high pulls EN low: kills the gate rail
R1001100ksignal wedge, 334°, motor sideR 30.5+12 V feedback, top
R10029k09signal wedge, 334°, motor sideR 30.4+12 V feedback, bottom
R1003470ksignal wedge, 334°, motor sideR 22.2EN from VMOT: UVLO, on unless pulled down
R100468ksignal wedge, 334°, motor sideR 20.3EN divider, bottom: 9.9 V start
R10054k7signal wedge, 334°, motor sideR 27.0GATE_OFF pull-down: the rail is ON through reset, so a reset brakes; 4k7 clears E9
R100864k9signal wedge, 334°, motor sideR 27.3+12 V RT: 400 kHz
R11015k1signal wedge, 334°, motor sideR 21.4CC1 pull-down: a sink, 5 V only
R11025k1signal wedge, 334°, motor sideR 22.2CC2 pull-down
U11LMR38010SDDARsignal wedge, 334°, motor sideR 26.5+12 V rail, EN on a VMOT divider, GATE_OFF pulls it down
U13USBLC6-2SC6signal wedge, 334°, motor sideR 23.9USB ESD, as close to the connector as the wedge allows
C1006100n/100Vsignal wedge, 334°, outwardR 26.7+5 V buck input, HF, at VIN/GND
C1008100nsignal wedge, 334°, outwardR 20.2+5 V bootstrap, BOOT to SW
C101022u/25Vsignal wedge, 334°, outwardR 19.3+5 V out
C60422u/25Vsignal wedge, 334°, outwardR 29.4+5 V out
J12USB-Csignal wedge, 334°, outwardR 27.2USB 2.0 data + 5 V logic, no PD; HRO TYPE-C-31-M-12
L100233usignal wedge, 334°, outwardR 27.0+5 V buck inductor, SWPA4030S330MT
R1006100ksignal wedge, 334°, outwardR 18.7+5 V feedback, top
R100724k9signal wedge, 334°, outwardR 18.3+5 V feedback, bottom
R100964k9signal wedge, 334°, outwardR 22.3+5 V RT: 400 kHz
U12LMR38010SDDARsignal wedge, 334°, outwardR 22.4+5 V rail, logic; EN tied to VIN