A dual-channel brushless DC motor driver PCB designed in LibrePCB, featuring DRV8870 H-bridge ICs with integrated current sensing, overcurrent protection, and thermal management. Designed for robotics and CNC applications requiring precise motor control.
| Parameter | Value |
|---|---|
| Motor Driver IC | DRV8870DDAR (×2) |
| Supply Voltage | 6.5V – 45V |
| Continuous Current | 3.6A per channel |
| Peak Current | 6A (500ms) |
| PWM Frequency | Up to 200 kHz |
| Current Sensing | 0.1Ω shunt + INA181 (×2) |
| Protection | UVLO, OCP, thermal shutdown |
| MCU Interface | PWM + DIR + nFAULT per channel |
| PCB | 2-layer, 1.6mm FR4, 2oz copper, HASL |
| Dimensions | 55mm × 40mm |
├── project/
│ ├── motor-driver.lpp # LibrePCB project file
│ ├── motor-driver.lppz # Archived project (portable)
│ ├── schematic/
│ │ ├── motor-driver.lp # Main schematic
│ │ └── sheets/
│ │ ├── power-input.lp # Power stage + protection
│ │ ├── h-bridge-ch1.lp # Channel 1 H-bridge
│ │ ├── h-bridge-ch2.lp # Channel 2 H-bridge
│ │ └── current-sense.lp # Current monitoring
│ ├── board/
│ │ ├── motor-driver.lp # PCB layout
│ │ └── design-rules.lp # Manufacturing constraints
│ └── library/
│ ├── DRV8870DDAR.lplib # Custom component library
│ ├── INA181A1.lplib # Current sense amplifier
│ └── TVS_SMBJ45A.lplib # TVS diode for motor transients
├── docs/
│ ├── design-notes.md # Design rationale
│ ├── thermal-analysis.md # Thermal calculations
│ ├── BOM.csv # Bill of materials
│ └── test-procedure.md # Bench test protocol
└── README.md
- Input protection: SMBJ45A TVS diode (45V standoff, 72.5V clamping)
- Bulk decoupling: 4× 10µF/50V MLCC + 100µF/50V aluminum polymer
- Reverse polarity: P-channel MOSFET (Si2301) on high side
- Power indicator: LED with 1.5kΩ series resistor
- DRV8870: Integrated N+P FET bridge, 3.6A continuous
- Control: IN1/IN2 for H-bridge direction, VREF for current limit
- Bootstrap: Internal charge pump — no external bootstrap caps needed
- Decay mode: Slow decay (default) via internal braking
- Shunt resistor: 0.1Ω ±1%, 2512 package (1W rated)
- Amplifier: INA181A1 (gain = 20 V/V, BW = 350kHz)
- Output: 0–3.3V analog to MCU ADC (1.65V = 0A, 3.3V = 3.6A)
- Overcurrent: Comparator trip at 4A → nFAULT assertion
- Copper fill: Maximized ground plane copper pour on both layers
- Thermal vias: 16× 0.3mm vias under each DRV8870 thermal pad
- Via stitching: Ground plane stitched every 5mm
- Estimated θ_JA: 35°C/W (at 3.6A, T_junction = 25 + 35 × 0.36 × 3.6² = 71.7°C)
| Parameter | Value | Rationale |
|---|---|---|
| Min trace width (signal) | 8 mil | Standard for 2oz copper |
| Min trace width (power) | 40 mil | 3.6A continuous @ 10°C rise |
| Min clearance | 8 mil | JLCPCB standard capability |
| Min drill | 0.3mm | JLCPCB standard |
| Via size | 0.6mm pad / 0.3mm drill | Standard thermal vias |
| Power trace | 2mm (80 mil) | 45V rated, 3.6A per channel |
This project demonstrates LibrePCB-specific workflows:
-
Custom library creation — DRV8870 and INA181 built from datasheets
- Symbol: schematic representation with pin mapping
- Footprint: land pattern per TI recommended layout
- Component: links symbol ↔ footprint with 3D model
- Package: HTSSOP-8 with thermal pad
-
Hierarchical schematic — 4 sheets for modular design
-
Design rule check — Custom DRC for high-current constraints
-
Gerber export — JLCPCB-compatible output with drill file
-
BOM export — CSV with LCSC part numbers for assembly
- ERC: 0 errors across all sheets
- DRC: 0 violations with high-current design rules
- Current-carrying trace widths verified (IPC-2221 calculator)
- Thermal simulation: junction temps within DRV8870 abs max (150°C)
- Motor transient protection validated in Ngspice (see companion repo)
- BOM availability confirmed (LCSC + DigiKey backup)
Hardware: CERN-OHL-S-2.0
