USB‑C USB‑PD–powered ESP32‑C3 controller with protected data, 3.3‑V regulation, and dual DRV8847 H‑bridges driving four current-limited brushed DC motors with status indication and protection.
# USB-PD Quad DC Motor Controller
A four-layer tscircuit board for four independently controlled bidirectional brushed DC motors. It takes the four-motor product architecture of the [Adafruit Motor Shield V2](https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino) as its reference, while using two TI [DRV8847](https://www.ti.com/product/DRV8847) dual H-bridges under direct ESP32-C3 control.
## Features
- Four independent brushed-DC motor outputs from two DRV8847 dual H-bridges.
- Separate USB-C DATA and USB-C POWER connectors.
- ESP32-C3 native USB device interface and eight direct H-bridge control lines.
- CH224K negotiates a 15 V USB-PD motor supply.
- 0.30 Ω, 1 W shunts set a hardware current limit of about 0.5 A per motor; four motors can operate inside a 2 A aggregate design budget.
- Shared hardware sleep, wired-OR fault reporting, power/fault status LED, reset, and boot controls.
- Resettable 3 A input fuse, SS54 reverse-current block, 16 V bidirectional TVS, and 100 µF + 30 µF motor-rail storage.
- ESD-protected USB data, four motor screw terminals, and four grounded mounting holes.
- 100 mm × 70 mm, four copper layers, 1.6 mm board.
The DATA connector powers the controller logic. The POWER connector powers only the motor rail after successful 15 V PD negotiation. Both connectors are required for normal USB-controlled operation.
## MCU signals
| ESP32-C3 pin | Function |
|---|---|
| GPIO18 / GPIO19 | USB D− / D+ |
| GPIO0 / GPIO1 | Motor 1 IN1 / IN2 |
| GPIO2 / GPIO3 | Motor 2 IN1 / IN2 |
| GPIO4 / GPIO5 | Motor 3 IN1 / IN2 |
| GPIO6 / GPIO7 | Motor 4 IN1 / IN2 |
| GPIO21 / TXD | Shared driver sleep/enable |
| GPIO20 / RXD | Shared active-low fault input |
| GPIO10 | USB-PD power-good input |
## Verification
- `tsci build index.circuit.tsx`: pass, zero circuit/PCB error objects, 136 routed traces, no jumpers.
- `tsci check netlist`: 0 errors, 0 warnings.
- `tsci check source`: 0 errors, 0 warnings.
- `tsci check placement`: pass; placement summary reports no placement issues and 0 DRC errors.
- `tsci check shorts dist/index/circuit.json --mode gerber --layer all`: no shorts detected.
- Every populated component carries a JLCPCB/LCSC supplier code; all codes were live-stock checked on 2026-09-28.
The tscircuit checks validate the generated design data, not real-world thermal or EMC performance. Perform current-limited bring-up and four-channel load/temperature testing before production deployment.