MustafaMulla29/rp2040-bldc-motor-controller-new
A USB‑C PD–powered RP2040 BLDC motor controller PCB with 3.3 V logic, MCT8329A sensorless commutation, three MOSFET half-bridges, protected power switching, USB data, controls, and motor connectors.
- Version
- 0.3.82
- License
- unset
- Stars
- 0
docs/order-readiness.md
# Order-readiness — configurable-PD trial, 16 October 2026
**HOLD fabrication/assembly release.** The configurable-PD changes were applied to main with user approval on 16 October 2026. The 5 V operating limitation awaits maintainer review; application to main does not qualify hardware or authorize an order. Passing CAD checks does not establish a working or production-qualified motor controller.
The candidate is 73 × 72 mm, four copper layers, 1.6 mm thick, with 155 fitted top-side parts and 16 bare service pads. J19 requests a selected 5/9/15/20 V / 2 A profile; cold startup defaults to 9 V. J1 is USB DATA. No battery is fitted.
Fresh generated evidence is in `assembly/dist/results/pcb-validation.json`, `dist/assembly-review/orientation-review.json`, `dist/assembly-review/native-stencil-review.json` and `dist/system/integration-check.json`. Each report identifies its exact checked input; stale reports are not evidence for a changed design. The copy's final validation summary is in `manufacturing/CURRENT-REVISION.md`.
The available checks cover connectivity, specified copper widths/clearances, pad anchors, placement envelopes, source-isolation topology and native paste geometry. They do not measure operating current, thermal rise, PD negotiation, USB signal integrity, regeneration or component assembly quality. Firmware host tests use mocks. Motor commutation/control and the final protection settings remain incomplete. Factory stock, placement and process approval remain outstanding.
## Findings to resolve before hardware release
### 1. R81 Kelvin routing — corrected
SP and SN now have independent 0.20 mm top-layer routes to R81.1 and R81.2.
They share a paired corridor with 0.12–0.20 mm edge spacing, then fan out to the
two shunt terminals. SP is 10.97 mm and SN is 17.30 mm long; there are no sense
vias. This is an analog Kelvin pair, not a length-matched digital pair.
LSS has its own 0.40 mm return after the QFN escape. Its copper no longer touches
SP before the shunt land. The 1.50 mm motor-return entry is shifted within the
same R81 land to keep that land's outside edge clear for sensing. Two ground
vias and the DRVOFF signal via move locally. U7 AGND joins its exposed ground
pad directly. Top ground-pour outlines leave a clearance channel around SN;
the continuous inner1 ground reference remains unchanged.
`scripts/pcb-audit/audit-kelvin.py` checks the generated copper, including
same-net traces, vias, pads and pours. It rejects any extra contact at either
sense pin and any sense-track contact outside the intended shunt land. It is
part of `check:assembly-pcb`, so a clean ordinary DRC alone cannot hide a
regression. Full connectivity, clearance, width, placement and pad-anchor
checks also pass. No rule was weakened and no generated circuit was edited.
Reference: [TI motor-driver layout guidance, sections 7.5–7.9](https://www.ti.com/lit/an/slva959b/slva959b.pdf).
Actual current-sense noise and protection behavior still require bench testing.
### 2. The raw paste Gerbers are not an approved production stencil
Direct inspection of `board-gerbers.zip/F_Paste.gbr` found:
| Exposed pad | Copper size, PCB axes | Native paste flash | Paste/copper area |
| --- | --- | --- | --- |
| U7.37 | 3.650 × 2.650 mm | Six 1.050 × 1.150 mm rectangles | 74.90% |
| U11.15 | 2.590 × 2.600 mm | One 2.590 × 2.600 mm rectangle | 100% |
| U1.25 | 2.800 × 2.800 mm | One 1.960 × 1.960 mm rectangle | 49% |
| U5.57 | 3.100 × 3.100 mm | One 2.170 × 2.170 mm rectangle | 49% |
U11 is fixed at the footprint source using `solderPasteMargin={0}`. Its raw
native Gerber now matches the **2.60 × 2.59 mm component-axis** opening in TI's
PWP0014K example for a **0.125 mm** stencil. `check-native-stencil.mjs` parses the
actual exported aperture and fails if this regresses. The copper land is unchanged.
U7 uses six native `<solderpaste>` elements with core **0.0.2153**. The
continuous exposed copper pad suppresses only its automatic paste opening using
`solderPasteMargin={-2}`. The checker requires six correctly sized/positioned
Gerber flashes and rejects an extra central opening. No copper segmentation,
local core modification or Gerber postprocessing is used.
The native element currently supports rectangles and circles, so these six
windows have square corners (74.90% area). The factory instruction retains the
requested R0.05 corner rounding (~74.77% area) for process review; that rounding
is **not** claimed to be in the native Gerber. `native-stencil-review.json`
records this distinction. Factory approval of the final stencil remains open.
Have the factory approve the stencil process and review the remaining exposed
pads and small-pad release. Paste area alone is not final solder coverage.
The native bottom-paste file also contains 8 flashes corresponding to the USB connector
shell slots. The production process must omit ordinary THT paste, as
specified in the assembly instructions. There are no bottom fitted parts.
Do not silently patch Gerbers or treat the existing raw paste as stencil approval.
Reference: [TI TPS1H100-Q1 package/stencil drawing PWP0014K](https://www.ti.com/lit/ds/symlink/tps1h100-q1.pdf#page=46).
### 3. Qualify all four voltage profiles and current budgets
R142 = 1.5 kΩ sets U11 to about **1.644 A nominal**. Using the datasheet's ±14%
limit tolerance for this range plus a 1% resistor gives an illustrative upper
estimate of **1.893 A**, leaving about **107 mA** of a 2 A input budget for loads
outside that path. The accuracy specification has stated operating/overload
conditions; this is not a guaranteed whole-board current cap.
R13/INA180 measures the switched motor-feed branch. The **VBUS_RAW → D2 →
logic regulator branch bypasses R13**, so an ADC_IIN reading is not total USB
input current. Account for that branch, tolerances, gate-drive load, startup and
inrush. Motor phase current under PWM is also not identical to PD input current.
Choose MCT8329A current-limit/gate-drive settings and a permitted motor load before
claiming that all power traces/vias are adequately rated. No 30 A capability is
assumed; the trial supports 5/9/15/20 V with 9 V startup default. The provisional firmware motor-feed ceilings are 0.8 A at 5 V and 1.5 A at the higher settings. They are not measured ratings. The 5 V case must retain at least 4.5 V at U7 under actual source, cable and load conditions.
References: [TPS1H100-Q1 current-limit specification](https://www.ti.com/lit/ds/symlink/tps1h100-q1.pdf),
[MCT8329A configuration and layout requirements](https://www.ti.com/lit/ds/symlink/mct8329a.pdf).
### 4. Programming and motor firmware are incomplete qualifications
`firmware/power_manager.py` and `bringup.py` deliberately keep SPEED and ARM low.
There is no completed motor-specific MCT profile, working knob/ARM motor-control
application or USB motor-command implementation in the supplied firmware. The helper
`motor_permitted()` and passing host tests do not implement that runtime system.
This does not prevent buying development hardware after its hardware issues are
resolved, but it prevents promising a working controller on delivery.
Provision STUSB4500 NVM for 5 V startup and **9 V / 2 A default** using the documented
5 V-only setup before connecting an ordinary PD source. Cold-boot verification is
required. ST documents default higher-voltage PDOs, including 15 V and 20 V;
the schematic does not program the chip. Runtime 5/9/15/20 V selection must be checked on hardware, especially an explicit 5 V PDO2 contract and 20 V-to-5 V transitions. The manufacturing
package is currently for an **unprogrammed** assembly.
Reference: [STUSB4500 default startup configuration](https://www.st.com/resource/en/datasheet/stusb4500.pdf#page=22).
### 5. Factory and physical validation still required
Confirm the requested JLC04161H-3313 stack and actual USB geometry, factory
numbered-pad placement preview, exact part availability and mixed SMT/THT quote.
There are **five** fully through-hole parts (C93, J10–J12, RV1), plus J1/J19
soldered shell tabs. Old instructions saying 77 × 78 mm, center (0,0), and nine
THT components were corrected during this review; the built outline was already
73 × 72 mm and did not change.
The adapter model still uses illustrative body/insertion dimensions. Obtain and
check the actual motor bullets, adapters and sockets for mating, insulation,
retention and intended current. A 3D rendering does not establish those facts.
## Prototype versus production
Before placing even a prototype order, resolve the U7 stencil support/approval, document the
current/phase-current design limits, regenerate matching exports, and obtain the
factory's stencil/placement/stack review. Then a small bring-up batch is the
appropriate next step; unfinished application firmware can be developed on it.
Before motor use, provision and verify PD, test logic-only/PD-only/both USB inputs,
and verify OFF/ARM/fault behavior. Start unloaded and without a propeller. Then
measure startup/inrush, bus voltage, input and phase currents, gate waveforms,
heating, USB operation and stopping/backdrive transients with the intended load.
D3 blocks energy returning to the USB source, but D4 is not a continuous energy
dump; configure and test the stopping/AVS strategy. These measurements require
hardware and have not been performed by CAD checks.
For sale or repeat production, complete tested firmware, programming/test-fixture
instructions and repeatable acceptance limits. No board has been ordered,
programmed or bench-tested as part of this review.