Skip to the content
PCBKitNew board
4 layers200 × 120 mmNcv7240-driver, the printed circuit board in 3D

Ncv7240-driver

jussty/ncv7240-driver

KiCad 8 PCB: 4x NCV7240 octal low-side drivers + ESP32-S3 + AP33772S USB-C PD EPR (24V)

Size
200 × 120 mm
Copper layers
4
Thickness
1.6 mm
Parts
72
Nets
58
Pads
313
Tracks, vias
266, 80
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
11 May 2026
Updated
12 May 2026

Overview

Ncv7240-driver is an open-source printed circuit board by jussty, from the jussty/ncv7240-driver repository on GitHub. It is a 4-layer board of 200 × 120 mm with 72 parts on 58 nets, routed with 266 tracks and 80 vias.

It is built around the ESP32-S3-WROOM-1-N8, NCV7240DP and TPS62932DRL, with the B260A and SMBJ33A among its other parts. Its parts include 33 diodes, 15 capacitors, 7 resistors, 7 ICs and 5 connectors. It belongs with the ESP32 boards of this library.

Main components

5

README

README.md

NCV7240 x4 — ESP32 + USB-C PD EPR (24 V) Driver Board

A KiCad 8 project for a compact controller board that:

  • Negotiates 24 V from a USB-C PD 3.1 EPR source via the AP33772S sink controller.
  • Hosts an ESP32-S3 MCU for Wi-Fi/BT control, configuration and host comms.
  • Drives 32 low-side switched outputs at 24 V using 4 × NCV7240 octal low-side drivers (SPI-controlled).

Status: skeleton — project files, design rules, net classes and BOM are in place. The schematic (ncv7240-driver.kicad_sch) and PCB (ncv7240-driver.kicad_pcb) are intentionally empty placeholders ready to be populated in KiCad 8.


1. System architecture

text
       USB-C (PD 3.1 EPR, up to 28 V / 5 A)
           │
           ▼
   ┌────────────────┐   I²C   ┌──────────────────────┐
   │   AP33772S     │◀───────▶│   ESP32-S3-WROOM-1   │
   │  PD EPR sink   │  (CFG)  │  (Wi-Fi / BT / USB)  │
   └──────┬─────────┘         └───────┬──────────────┘
          │ VBUS_OUT = 24 V           │ SPI (CS x4, SCK, MOSI, MISO)
          │                           │ + RSTB, /FSO IRQ
          ▼                           ▼
   ┌──────────────┐   ┌──────────────┐   ┌──────────────┐   ┌──────────────┐
   │  NCV7240 #1  │   │  NCV7240 #2  │   │  NCV7240 #3  │   │  NCV7240 #4  │
   │ 8 ch low-side│   │ 8 ch low-side│   │ 8 ch low-side│   │ 8 ch low-side│
   └──────┬───────┘   └──────┬───────┘   └──────┬───────┘   └──────┬───────┘
          ▼                  ▼                  ▼                  ▼
       OUT1..8            OUT9..16          OUT17..24          OUT25..32
       (loads sink to GND; common rail = 24 V)
  • The AP33772S handles all CC negotiation/PPS/EPR; the ESP32 just configures the request profile over I²C and reads VBUS / status telemetry.
  • The 4 NCV7240s share SCK/MOSI/MISO/RSTB/SI on a single SPI bus; each has its own /CSB from the ESP32. Output enable is per-channel via SPI control word.

2. Bill of materials (core)

RefPartPkgNotes
U1AP33772SQFN-24USB-C PD 3.1 EPR sink controller
U2ESP32-S3-WROOM-1-N8R8SMD module8 MB flash, 8 MB PSRAM
U3..U6NCV7240ADQR2GSSOP-24Octal low-side driver, SPI
J1USB-C receptacle (EPR rated)TID/16-pin5 A continuous, EPR cable required >3 A
D1TVS for VBUS (e.g. SMBJ33A)SMB33 V standoff
L110 µH @ 3 A ferrite/inductor1210VBUS LC filter (optional)
C_BULK100 µF / 50 V × 2electrolyticVBUS bulk on 24 V rail
FB1..FB4Ferrite bead, 600 Ω @ 100 MHz0603Per-NCV7240 V_PWR decoupling
U7LDO/buck 24 V → 3.3 V (e.g. MP2451 or TPS62932)SOT-23-6≥500 mA for ESP32 peaks
U8(optional) 3.3 V LDOSOT-23-5Clean rail for analog if needed
Q_GATEP-MOSFET (e.g. DMP3098L)SOT-23Reverse-polarity / VBUS gate (optional)
R_CS1 % shunts0805If per-bank current sensing is desired

Plus per-channel flyback diodes/TVS if driving inductive loads (the NCV7240 has internal active clamp, but external TVS to 24 V rail is recommended for solenoids/relays).

3. Net classes / design rules

Defined in ncv7240-driver.kicad_pro:

Net classTrackClearanceViasUsed for
Default0.250.200.6 / 0.3logic, SPI, I²C
Power_24V0.800.400.9 / 0.4VBUS, 24 V plane feeds, OUTx pours
USB_PD0.400.250.7 / 0.3CC1/CC2, VBUS sense, D+/D- (90 Ω diff)

4. Pin assignment (ESP32-S3 → NCVs / AP33772S)

ESP32 pinNetGoes to
GPIO10SPI_CS1NCV7240 #1 /CSB
GPIO11SPI_CS2NCV7240 #2 /CSB
GPIO12SPI_CS3NCV7240 #3 /CSB
GPIO13SPI_CS4NCV7240 #4 /CSB
GPIO14SPI_SCKall NCV7240 SCLK
GPIO15SPI_MOSIall NCV7240 SI
GPIO16SPI_MISOall NCV7240 SO (open-drain, ext. pull-up)
GPIO17NCV_RSTBall NCV7240 /RSTB (active low, pull-up)
GPIO18NCV_FSOall NCV7240 /FSO fault flag (IRQ)
GPIO8I2C_SDAAP33772S SDA (+ 4.7 kΩ pull-up to 3V3)
GPIO9I2C_SCLAP33772S SCL (+ 4.7 kΩ pull-up to 3V3)
GPIO4PD_INTAP33772S /INT
ENreset btnper ESP32 standard wiring
GPIO0boot btnper ESP32 standard wiring

Avoid the strapping pins (GPIO0/3/45/46) and USB pins (19/20) for the dedicated nets above — already accounted for.

5. NCV7240 wiring notes

  • Tie all V_PWR pins to the 24 V rail through individual ferrite beads
    • 100 nF + 10 µF local decoupling per IC.
  • All GND pins tied to the solid 24 V-return ground pour.
  • SO is open-drain; place one 10 kΩ pull-up to 3V3 on the shared MISO net.
  • /RSTB shared and pulled up to 3V3 (10 kΩ); ESP32 drives low to reset all.
  • /FSO shared open-drain fault flag → ESP32 IRQ, pulled up to 3V3.
  • Daisy-chained SPI is not used here (independent /CSB per device is simpler and lets the ESP32 talk to any device individually at full clock).
  • Each OUTx pad gets a generous copper pour and a screw terminal or 2.54 mm header per channel. For inductive loads, place a TVS/clamp diode from OUTx to the 24 V rail close to the load connector.

6. AP33772S notes

  • Connect CC1/CC2 directly to the USB-C receptacle CC pins (no Rd needed — the AP33772S provides the sink termination).
  • VBUS sense via internal divider; place 100 µF + 10 µF + 100 nF bulk on VBUS_OUT after the controller's NMOS pass switch.
  • Pull VPP / VDD decoupling per datasheet (1 µF on VDD, 100 nF on VPP).
  • The MCU configures the requested PDO (request 24 V/3 A EPR profile) via I²C at boot. Until configured the AP33772S falls back to its NVM defaults — flash the NVM with the desired default PDO request before deployment if you want the rail to come up without the ESP32.
  • Add a SMBJ33A TVS across VBUS_OUT to GND.

7. Layout guidance

  • 4-layer stack recommended: Signal / GND / 24 V / Signal.
  • Keep the 24 V rail as a continuous pour on an inner layer; stitch with vias near each NCV7240 V_PWR pin.
  • USB-C D+/D- routed as a 90 Ω differential pair, length-matched, away from the switching loads. (For PD-only operation D± are unused but route them anyway so the port can carry USB 2.0 data if desired.)
  • Place the AP33772S close to the USB-C connector; keep the VBUS path short and wide (≥ 60 mil for 5 A).
  • ESP32 antenna keep-out: leave ≥ 15 mm clearance and no copper under the antenna section of the module.
  • Per-channel output traces: 0.8 mm minimum for 0.5 A loads, scale up for more. Add 2× thermal-relief pads at each NCV7240 exposed pad.

8. Loads — Bürkert Type 0127 valves (inductive)

Outputs drive Bürkert Type 0127 rocker solenoid valves (24 V DC, 3 W ⇒ ≈125 mA per coil). 32 channels × 125 mA = 4 A peak on the 24 V rail — that's why we request a 24 V / 3-5 A EPR profile from the source.

Because the loads are inductive, every output has a B260A-13-F Schottky (60 V / 2 A, SMA) freewheel diode:

Anode → OUTx, Cathode → +24V rail.

When the NCV7240's low-side switch opens, the coil's collapsing field drives OUTx above +24 V; the diode forward-biases at ≈0.7 V and recirculates the coil current back into the rail, clamping OUTx to roughly +24V + Vf. This is faster and dissipates less per-event than relying on the NCV7240's internal active clamp (≈45 V).

Place the freewheel diodes physically close to the screw terminal pads so the loop area between coil, diode and ground is minimised — important for EMI on a board switching 32 inductive loads.

9. Files

text
ncv7240-driver/
├── .gitignore
├── README.md
├── fp-lib-table  /  sym-lib-table
├── ncv7240-driver.kicad_pro   # KiCad 8 project, design rules + net classes
├── ncv7240-driver.kicad_sch   # generated by tools/gen_sch.py
├── ncv7240-driver.kicad_pcb   # generated by tools/gen_pcb.py
├── datasheets/                # versioned vendor PDFs
│   ├── ncv7240.pdf            (onsemi)
│   ├── ap33772s.pdf           (Diodes Inc)
│   ├── esp32-s3-wroom-1.pdf   (Espressif)
│   ├── b260a.pdf              (Diodes Inc — flyback Schottky)
│   └── burkert-0127.pdf       (Bürkert — load)
└── tools/
    ├── gen_sch.py             # deterministic schematic generator
    └── gen_pcb.py             # deterministic PCB skeleton generator

Regenerate after editing the generators:

sh
python3 tools/gen_sch.py > ncv7240-driver.kicad_sch
python3 tools/gen_pcb.py > ncv7240-driver.kicad_pcb

Open ncv7240-driver.kicad_pro in KiCad 8.0 or newer. In Pcbnew:

  1. Tools → Update PCB from Schematic to import all 30+ footprints from the standard KiCad libraries (you'll need them installed locally — they ship with KiCad).
  2. Components arrive at the origin; drag them into the marked floorplan zones (visible on User.Comments).
  3. Route, fill the GND and +24V zones, run DRC, export Gerbers to gerbers/.

10. Board floorplan (160 × 100 mm, 4-layer)

text
+----------------------------------------------------------------------+
|              NCV7240 x4 Driver — 24V PD EPR    (silkscreen header)   |
|                                                                      |
|  +--------+ +-------------+ +-------------+ +--------+ +----------+  |
|  |USB-C PD| | Buck 24V→3V3| |             | |  4×    | |  Screw   |  |
|  |  J1 U1 | |  U7 L1 C3   | |  ESP32-S3   | | NCV    | |  termi-  |  |
|  | C1/C2  | +-------------+ |   U2        | | 7240   | |  nals    |  |
|  |  D1    |                 | C4 C5       | | U3-U6  | | J2..J5   |  |
|  |        | (44-90, 6-36)   | R1..R5      | |        | |          |  |
|  |        |                 |             | |        | |          |  |
|  |        | +-------------+ |             | +--------+ +----------+  |
|  |        | |             | |             | | Flyback diode field   |  |
|  |        | |    ESP32    | |             | | D2..D33  B260A-SMA    |  |
|  | (4-44, | |  (44-90,    | | (44-90,     | | (90-156,              |  |
|  |  6-60) | |   36-96)    | |  36-96)     | |  60-96)               |  |
|  +--------+ +-------------+ +-------------+ +--------+ +----------+  |
|                                                                      |
+----------------------------------------------------------------------+

4-layer stackup: F.Cu / GND / +24V / B.Cu (1.6 mm FR4, ENIG finish).

9. License

Hardware: CERN-OHL-S v2 (recommended) — adjust to your needs.

Parts

72
QtyValueFootprintReferences
32B260ADiode_SMD:D_SMAD2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24 +16
7100nFCapacitor_SMD:C_0603_1608MetricC5, C6, C7, C10, C12, C14, C16
510uF/50VCapacitor_SMD:C_1210_3225MetricC2, C11, C13, C15, C17
4M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
4NCV7240Package_SO:SSOP-24_5.3x8.2mm_P0.65mmU3, U4, U5, U6
310kResistor_SMD:R_0603_1608MetricR1, R2, R3
24.7kResistor_SMD:R_0603_1608MetricR4, R5
1100kResistor_SMD:R_0603_1608MetricR6
1100uF/50VCapacitor_SMD:CP_Elec_10x10.5C1
110uFCapacitor_SMD:C_0805_2012MetricC4
120kResistor_SMD:R_0603_1608MetricR7
122uFCapacitor_SMD:C_0805_2012MetricC3
14.7uH/2AInductor_SMD:L_Bourns-SRN6045TAL1
1AP33772SPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU1
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U2
1OUT1-8TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_HorizontalJ2
1OUT17-24TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_HorizontalJ4
1OUT25-32TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_HorizontalJ5
1OUT9-16TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_HorizontalJ3
1SMBJ33ADiode_SMD:D_SMBD1
1TPS62932Package_TO_SOT_SMD:SOT-23-6U7
1USB-CConnector:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1

Questions

How big is the Ncv7240-driver PCB?

It measures 200 × 120 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Ncv7240-driver use?

72 parts, built around the ESP32-S3-WROOM-1-N8, NCV7240DP, TPS62932DRL and B260A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ncv7240-driver KiCad files?

From the jussty/ncv7240-driver repository on GitHub, at the commit this page was made from: the board is ncv7240-driver.kicad_pcb and its schematic ncv7240-driver.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ncv7240-driver design in my own project?

Its repository states no licence, so its author keeps all rights: ask jussty before reusing the design.

Similar boards

  • 4 layers101.1 × 50.3 mmModballoon, the printed circuit board in 3D

    Modballoon

    ODZ-UJF-AV-CR/balon

    Semicoductor Cosmic ray detector High-altitude balloon experiment.

    153 parts4
  • 4 layers92 × 56 mmREIN R1, the printed circuit board in 3D

    REIN R1

    rein-baremetal/REIN_R1_KiCad

    Dual-MCU baremetal embedded development board featuring high-speed QSPI storage, hardware USB hub, and flexible power management. Open for PCB trace routing collaboration

    177 parts2
  • 6 layers42.3 × 42.3 mmStepper Motor Controller, the printed circuit board in 3D

    Stepper Motor Controller

    Ricsi1231/Stepper-Motor-Controller

    EmbedCore Stepper Controller is a compact, high-performance stepper motor driver designed to mount directly onto the back of a NEMA 17 motor with the appropriate enclosure.

    91 partsMIT
  • 4 layers66 × 61.8 mm10X ESC V1, the printed circuit board in 3D

    10X ESC V1

    10x-Aero/ESC-Development-Board

    A 6S AM32-compatible ESC built as a proof of concept for learning how to design an ESC from scratch

    98 parts77
  • 4 layers54.7 × 75.8 mmEsphome dot, the printed circuit board in 3D

    Esphome dot

    gcormier/esphome-dot

    Beginnings of a replacement PCB for Amazon Echo Dot v5.

    62 parts16
  • 4 layers100 × 100 mmGammaSpectrometer, the printed circuit board in 3D

    GammaSpectrometer

    RobertGawron/GammaSpectrometer

    Device for quantitative analyze energy spectra of gamma-ray sources. Allows to study what radioactive isotopes in what quantities are present in measured sample.

    326 parts16MIT
  • 2 layers85 × 56 mmYoga v2, the printed circuit board in 3D

    Yoga v2

    mschwingen/hardware

    Hardware designs by Michael Schwingen, michael at schwingen dot org

    85 parts10
  • 4 layers64.9 × 39.2 mmHOLY ESC, the printed circuit board in 3D

    HOLY ESC

    0BAB1/HOLY_ESC

    An open-source closed loop ESC PCB / Hardware platform. Based on a STM32F051 (Cortex M0 based) MCU. Tested using AM32 ESC software.

    81 parts8