
Modballoon
ODZ-UJF-AV-CR/balon
Semicoductor Cosmic ray detector High-altitude balloon experiment.

KiCad 8 PCB: 4x NCV7240 octal low-side drivers + ESP32-S3 + AP33772S USB-C PD EPR (24V)
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.
A KiCad 8 project for a compact controller board that:
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.
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)| Ref | Part | Pkg | Notes |
|---|---|---|---|
| U1 | AP33772S | QFN-24 | USB-C PD 3.1 EPR sink controller |
| U2 | ESP32-S3-WROOM-1-N8R8 | SMD module | 8 MB flash, 8 MB PSRAM |
| U3..U6 | NCV7240ADQR2G | SSOP-24 | Octal low-side driver, SPI |
| J1 | USB-C receptacle (EPR rated) | TID/16-pin | 5 A continuous, EPR cable required >3 A |
| D1 | TVS for VBUS (e.g. SMBJ33A) | SMB | 33 V standoff |
| L1 | 10 µH @ 3 A ferrite/inductor | 1210 | VBUS LC filter (optional) |
| C_BULK | 100 µF / 50 V × 2 | electrolytic | VBUS bulk on 24 V rail |
| FB1..FB4 | Ferrite bead, 600 Ω @ 100 MHz | 0603 | Per-NCV7240 V_PWR decoupling |
| U7 | LDO/buck 24 V → 3.3 V (e.g. MP2451 or TPS62932) | SOT-23-6 | ≥500 mA for ESP32 peaks |
| U8 | (optional) 3.3 V LDO | SOT-23-5 | Clean rail for analog if needed |
| Q_GATE | P-MOSFET (e.g. DMP3098L) | SOT-23 | Reverse-polarity / VBUS gate (optional) |
| R_CS | 1 % shunts | 0805 | If 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).
Defined in ncv7240-driver.kicad_pro:
| Net class | Track | Clearance | Vias | Used for |
|---|---|---|---|---|
| Default | 0.25 | 0.20 | 0.6 / 0.3 | logic, SPI, I²C |
| Power_24V | 0.80 | 0.40 | 0.9 / 0.4 | VBUS, 24 V plane feeds, OUTx pours |
| USB_PD | 0.40 | 0.25 | 0.7 / 0.3 | CC1/CC2, VBUS sense, D+/D- (90 Ω diff) |
| ESP32 pin | Net | Goes to |
|---|---|---|
| GPIO10 | SPI_CS1 | NCV7240 #1 /CSB |
| GPIO11 | SPI_CS2 | NCV7240 #2 /CSB |
| GPIO12 | SPI_CS3 | NCV7240 #3 /CSB |
| GPIO13 | SPI_CS4 | NCV7240 #4 /CSB |
| GPIO14 | SPI_SCK | all NCV7240 SCLK |
| GPIO15 | SPI_MOSI | all NCV7240 SI |
| GPIO16 | SPI_MISO | all NCV7240 SO (open-drain, ext. pull-up) |
| GPIO17 | NCV_RSTB | all NCV7240 /RSTB (active low, pull-up) |
| GPIO18 | NCV_FSO | all NCV7240 /FSO fault flag (IRQ) |
| GPIO8 | I2C_SDA | AP33772S SDA (+ 4.7 kΩ pull-up to 3V3) |
| GPIO9 | I2C_SCL | AP33772S SCL (+ 4.7 kΩ pull-up to 3V3) |
| GPIO4 | PD_INT | AP33772S /INT |
| EN | reset btn | per ESP32 standard wiring |
| GPIO0 | boot btn | per ESP32 standard wiring |
Avoid the strapping pins (GPIO0/3/45/46) and USB pins (19/20) for the dedicated nets above — already accounted for.
V_PWR pins to the 24 V rail through individual ferrite beads
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.VPP / VDD decoupling per datasheet (1 µF on VDD, 100 nF on VPP).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.
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 generatorRegenerate after editing the generators:
python3 tools/gen_sch.py > ncv7240-driver.kicad_sch
python3 tools/gen_pcb.py > ncv7240-driver.kicad_pcbOpen ncv7240-driver.kicad_pro in KiCad 8.0 or newer. In Pcbnew:
User.Comments).gerbers/.+----------------------------------------------------------------------+
| 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).
Hardware: CERN-OHL-S v2 (recommended) — adjust to your needs.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 32 | B260A | Diode_SMD:D_SMA | D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24 +16 |
| 7 | 100nF | Capacitor_SMD:C_0603_1608Metric | C5, C6, C7, C10, C12, C14, C16 |
| 5 | 10uF/50V | Capacitor_SMD:C_1210_3225Metric | C2, C11, C13, C15, C17 |
| 4 | M3 | MountingHole:MountingHole_3.2mm_M3 | MH1, MH2, MH3, MH4 |
| 4 | NCV7240 | Package_SO:SSOP-24_5.3x8.2mm_P0.65mm | U3, U4, U5, U6 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R3 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 100uF/50V | Capacitor_SMD:CP_Elec_10x10.5 | C1 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C4 |
| 1 | 20k | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | 4.7uH/2A | Inductor_SMD:L_Bourns-SRN6045TA | L1 |
| 1 | AP33772S | Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm | U1 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1 | U2 |
| 1 | OUT1-8 | TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_Horizontal | J2 |
| 1 | OUT17-24 | TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_Horizontal | J4 |
| 1 | OUT25-32 | TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_Horizontal | J5 |
| 1 | OUT9-16 | TerminalBlock:TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_Horizontal | J3 |
| 1 | SMBJ33A | Diode_SMD:D_SMB | D1 |
| 1 | TPS62932 | Package_TO_SOT_SMD:SOT-23-6 | U7 |
| 1 | USB-C | Connector:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
It measures 200 × 120 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask jussty before reusing the design.

ODZ-UJF-AV-CR/balon
Semicoductor Cosmic ray detector High-altitude balloon experiment.

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

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.

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


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.

mschwingen/hardware
Hardware designs by Michael Schwingen, michael at schwingen dot org

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.