Skip to the content
PCBKitNew board
4 layers260 × 113 mmCellKeeper, the printed circuit board in 3D

PCB for the CellKeeper BMS

Size
260 × 113 mm
Copper layers
4
Thickness
1.6 mm
Parts
480
Nets
371
Pads
1,573
Tracks, vias
3,181, 468
Pours
40
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Dec 2025
Updated
28 Oct 2026

Overview

CellKeeper is an open-source printed circuit board by cellkeeper-bms, from the cellkeeper-bms/cellkeeper-hardware repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 260 × 113 mm with 480 parts on 371 nets, routed with 3,181 tracks and 468 vias.

It is built around the RP2354B, F0505S-1WR3 and ISO1050DUB, with the UCC27524DR, W25Q16JVUXIQ and LTV-217-B-G among its other parts. Its parts include 140 resistors, 106 capacitors, 50 diodes, 21 ICs and 16 connectors. It belongs with the power boards and the RP2350 boards of this library.

Main components

12

README

README.md

CellKeeper BMS — v1.1

CellKeeper v1.1 PCB, top view

KiCad PCB design for the CellKeeper Battery Management System, a replacement BMS controller for battery packs using the isoSPI protocol. The main board fits the Tesla battery's penthouse: the pack's original harness, HV sense, shunt and BMB connectors plug into it, and it mounts on the original brackets.

Each ordered revision has a release with its Gerbers, JLCPCB BOM and CPL, schematic PDF, board PDF (3D views and 1:1 prints) and the enclosure print files. Rev 1.1 was ordered on 2026-10-28; work towards rev 1.2 is on the rev1.2 branch.

Overview

  • MCUs: two Raspberry Pi RP2354B (dual Cortex-M33, 2 MB in-package flash): the main BMS controller and an independent supervisor, linked by UART. The supervisor also sees the isoSPI receive line and the E-stop input, and it alone enables the contactor drivers.
  • Current sensing: TI INA228 (20-bit) on a galvanically isolated domain (ISO1540 I2C isolator, isolated 5 V DC-DC), also reading the shunt's temperature.
  • HV sensing: 6 sense points (BAT±, LINK±, FC±) through 501:1 dividers into two ADS1115 ADCs: pack, link and output voltage, and the voltage across each contactor.
  • BMB communication: transformer-isolated isoSPI master (SP3485 driver, AM26LV32 receiver, HM2113 transformer), Manchester-encoded by the RP2354's PIO.
  • CAN: two ISO1050 interfaces: inverter CAN, isolated with its own DC-DC, on an RJ45 shared with the E-stop and aux lines; and inter-BMS CAN2 on a pass-through RJ45 pair (not isolated).
  • Contactors: four low-side drivers (FC+, FC-, Link+, Link-): BSC0805LS MOSFETs and UCC27524 gate drivers, PWM'd by the firmware to economise the hold current. The contactor supply is sensed.
  • Supply: 13–16 V logic and contactor inputs (separate, both sensed), TPS5430 5 V buck and 3.3 V LDO; chassis ground terminal.
  • HV battery: 400 V nominal.
  • USB-C ×3: BMS, supervisor, and HMI link. The HMI link is not for a computer: it powers an external ESP32 display (5 V 1 A) and carries its serial.
  • I/O: E-stop input (optocoupler; jumper JP37 disables it), an extra opto input and two extra outputs, fast-charge contactor aux-contact inputs for weld detection, SX serial interface, and experimental PCS signals on jumpers.
  • Board revision strap on GPIO47 (ADC7).

Repository Contents

Three boards, each its own KiCad project. They share no copper: the hat and the precharge board connect to the rest of the system by wires and lugs.

PathDescription
CellKeeper/Main controller board (CellKeeper.kicad_pro). Each ordered revision's Gerbers, BOM, CPL, schematic and board PDFs are on the releases page
isoSPI-Hat/isoSPI hat for a Raspberry Pi Pico: SP3485 / AM26LV32 / HM2113 transformer to the BMB connector
Precharge/Precharge board: six PTCs (three parallel strings of two) between M8 lugs, plus the HV system wiring diagram
lib/Shared CellKeeper_Local symbol and footprint libraries and CellKeeper.3dshapes 3D models
enclosure/3D-printable case for the main board (build123d)
graphics/Silkscreen artwork and README images
python_scripts/README renders (render_readme_images.py), release files (export_release_files.py), 3D model generators
docs/How to release a revision (releasing.md), README notes

Enclosure

CellKeeper enclosure

A two-part printed case (base tray and lid) for the main board, generated by enclosure/cellkeeper_case.py. It mounts in the penthouse on the original HVC brackets. The lid carries the logo and connector labels, which can be printed as a contrasting-colour inlay, with open tunnels over the LEDs. Ready-to-print STEP and STL files are attached to each release; running the script writes them to enclosure/output/print/. The board shows the case in KiCad's 3D viewer through the ENC1 footprint.

Safety

⚠️ This board interfaces with 400 V battery packs that can deliver lethal current. Only qualified personnel should work on high-voltage systems. This is a v1.1 development design — untested, no warranty, use at your own risk.

Acknowledgments

  • Damien Maguire & Tom de Bree — Original BATMan BMS software

License

GPL-3.0 — see LICENSE.

Parts

480
QtyValueFootprintReferences
34TPCellKeeper_Local:BMS_Library__TestPoint_THTPad_D1.5mm_Drill1.0mm1/2V1, 3v1, 5V1, GND1, GPIO44, GPIO45, GPIO46, RevisionS1, TP11, TP12, TP13, TP14, TP16, TP17, TP18, TP19 +18
330rCellKeeper_Local:BMS_Library__J_0603_jumperJP10, JP11, JP12, JP13, JP14, JP15, JP16, JP17, JP18, JP19, JP20, JP21, JP22, JP23, JP24, JP27 +17
26100nCellKeeper_Local:Capacitor_SMD__C_0402_1005MetricC44, C46, C47, C50, C51, C53, C56, C57, C58, C59, C61, C63, C100, C101, C102, C105 +10
243MCellKeeper_Local:Resistor_SMD__R_1206_3216MetricR102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117 +8
22100nFCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricC2, C10, C11, C13, C15, C16, C18, C22, C23, C28, C29, C30, C34, C35, C36, C104 +6
205.1kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR45, R57, R66, R69, R72, R77, R79, R80, R81, R82, R138, R139, R143, R144, R153, R154 +4
20TestPoint_2PoleCellKeeper_Local:BMS_Library__TestPoint_2Pads_Pitch2.54mm_Pad1.5_Drill1.0mmTP1, TP2, TP4, TP10, TP15, TP23, TP24, TP25, TP34, TP35, TP36, TP37, TP42, TP43, TP44, TP45 +4
1710kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR3, R4, R13, R14, R15, R17, R19, R20, R21, R25, R28, R42, R50, R51, R52, R75 +1
1724kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR1, R2, R11, R16, R29, R33, R35, R39, R40, R41, R96, R97, R98, R100, R101, R140 +1
131kCellKeeper_Local:Resistor_SMD__R_0402_1005MetricR27, R53, R55, R56, R74, R92, R94, R95, R129, R130, R131, R132, R135
13SMB6.8CACellKeeper_Local:Diode_SMD__D_SMBD1, D2, D3, D4, D5, D6, D24, D25, D26, D28, D29, D30, D31
121kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR8, R9, R22, R23, R46, R47, R48, R49, R76, R133, R134, R141
12SS54CellKeeper_Local:Diode_SMD__D_SMAD11, D12, D15, D16, D20, D23, D37, D38, D42, D44, D47, D50
1010uFCellKeeper_Local:Capacitor_SMD__C_0805_2012MetricC3, C4, C6, C8, C17, C21, C32, C55, C66, C116
91uFCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricC19, C20, C41, C42, C67, C96, C97, C98, C99
9GreenCellKeeper_Local:LED_SMD__LED_0805_2012MetricD7, D8, D14, D19, D32, D35, D36, D43, D48
8100kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR5, R10, R18, R24, R34, R36, R151, R152
8100nfCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricC62, C64, C76, C77, C78, C79, C80, C81
822uFCellKeeper_Local:Capacitor_SMD__C_0805_2012MetricC5, C7, C12, C33, C37, C48, C49, C69
84.7uCellKeeper_Local:RP2350_80QFN_minimal__C_0402_1005Metric_small_padsC38, C43, C45, C52, C68, C72, C82, C87
6LTV-217-B-GCellKeeper_Local:Package_SO__SSOP-4_4.4x2.6mm_P1.27mmU6, U7, U8, U9, U12, U13
6RedCellKeeper_Local:LED_SMD__LED_0805_2012MetricD9, D10, D27, D41, D46, D49
6WhiteCellKeeper_Local:LED_SMD__LED_0805_2012MetricD13, D17, D22, D33, D34, D45
5100pFCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricC24, C25, C26, C27, C103
415pFCellKeeper_Local:Capacitor_SMD__C_0402_1005MetricC39, C40, C70, C71
422RCellKeeper_Local:Resistor_SMD__R_0402_1005MetricR70, R71, R127, R128
433RCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR7, R12, R37, R38
433rCellKeeper_Local:Resistor_SMD__R_0402_1005MetricR54, R68, R93, R126
4BSC0805LSCellKeeper_Local:BMS_Library__TDSON-8_5x6_Q1, Q2, Q3, Q4
4MountingHole_PadCellKeeper_Local:MountingHole__MountingHole_3.7mmH1, H2, H7, H8
4SMCJ33CACellKeeper_Local:Diode_SMD__D_SMCD18, D21, D39, D40
4TS-1187A-B-A-BCellKeeper_Local:Button_Switch_SMD__SW_Push_1P1T_XKB_TS-1187ASW1, SW2, SW3, SW4
4jumper-bridgedCellKeeper_Local:Jumper__SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP25, JP26, JP38, JP39
33.3kCellKeeper_Local:Resistor_SMD__R_0402_1005MetricR26, R78, R155
3510rCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR30, R73, R86
3600R@100MHzCellKeeper_Local:Inductor_SMD__L_0603_1608Metric_Pad1.05x0.95mm_HandSolderFB1, FB3, FB5
3680uFCellKeeper_Local:Capacitor_THT__CP_Radial_D10.0mm_P5.00mmC1, C14, C31
3USB_C_Receptacle_USB2.0_16PCellKeeper_Local:BMS_Library__USB_C_Receptacle_HRO_TYPE-C-31-M-12J9, J11, J19
2120rCellKeeper_Local:Resistor_SMD__R_1206_3216MetricR31, R32
21MCellKeeper_Local:Resistor_SMD__R_1206_3216MetricR145, R146
21nFCellKeeper_Local:Capacitor_SMD__C_1206_3216MetricC94, C95
22.2kCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR43, R44
2220rCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR87, R88
222uh 5.5ACellKeeper_Local:Inductor_SMD__L_Changjiang_FXL1040L2, L3
23.3uhCellKeeper_Local:RP2350_80QFN_minimal__L_pol_2016L4, L6
247rCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR136, R137
26.8uhCellKeeper_Local:Inductor_SMD__L_Changjiang_FXL0630L1, L5
28P8C_LED_Shielded_x2CellKeeper_Local:Connector_RJ__RJ45_HCTL_HC-RJ45-5JA-2-2-YJ4, J5
2ABM8-272-T3CellKeeper_Local:Crystal__Crystal_SMD_3225-4Pin_3.2x2.5mmY1, Y2
2ADS1115CellKeeper_Local:Package_SO__TSSOP-10_3x3mm_P0.5mmU18, U19
2Conn_01x03CellKeeper_Local:Connector_PinHeader_2.54mm__PinHeader_1x03_P2.54mm_VerticalJ8, J16
2Conn_02x10_Odd_EvenCellKeeper_Local:Connector_PinHeader_2.54mm__PinHeader_2x10_P2.54mm_VerticalJ12, J22
2F0505S-1WR3CellKeeper_Local:BMS_Library__H0505S-1WR2U4, U15
2ISO1050DUBCellKeeper_Local:Package_SO__SOP-8_6.62x9.15mm_P2.54mmU5, U10
2MountingHole_PadCellKeeper_Local:MountingHole__MountingHole_5mmH3, H4
2RP2354BCellKeeper_Local:RP2350_80QFN_minimal__RP2350-QFN-80-1EP_10x10_P0.4mm_EP3.4x3.4mm_ThermalViasU14, U20
2SDCW3225S-2-102TFCellKeeper_Local:BMS_Library__FILTER-SMD_4P-L3.2-W2.5-BLFL1, FL2
2Screw_Terminal_01x04CellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_4-G-3.81_1x04_P3.81mm_Horizontal_1.4mmPinJ3, J7
2TLV1117LV33DCYRCellKeeper_Local:Package_TO_SOT_SMD__SOT-223-3_TabPin2U25, U26
2UCC27524DRCellKeeper_Local:Package_SO__SOIC-8_3.9x4.9mm_P1.27mmU1, U11
2W25Q16JVUXIQPackage_SON:Winbond_USON-8-1EP_3x2mm_P0.5mm_EP0.2x1.6mmU23, U24
2WJ15EDGRC-3.81-04P-14-00ACellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_4-G-3.81_1x04_P3.81mm_Horizontal_1.4mmPinJ1, J15
1100RCellKeeper_Local:Resistor_SMD__R_0603_1608MetricR142
1120Ω@100MHzCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricFB2
13.81P Screw TerminalCellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_8-G-3.81_1x08_P3.81mm_Horizontal_1.4mmPinJ10
13.81P Screw TerminalCellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_2-G-3.81_1x02_P3.81mm_Horizontal_1.4mmPinJ21
14.7uFCellKeeper_Local:Capacitor_SMD__C_0603_1608MetricC9
17.62mm Pitch Screw TerminalCellKeeper_Local:Connector_Phoenix_GMSTB__PhoenixContact_GMSTBA_2_5_6-G-7_62_1x06_P7.62mm_HorizontalJ18
1AM26LV32EIDRCellKeeper_Local:Package_SO__SOIC-16_3.9x9.9mm_P1.27mmU22
1CellKeeper_EnclosureCellKeeper_Local:CellKeeper_EnclosureENC1
1G***kibuzzard-6A45612Bkibuzzard-6A45612B
1G***kibuzzard-6AD6CA76kibuzzard-6AD6CA76
1G***kibuzzard-6A456096kibuzzard-6A456096
1G***kibuzzard-6A456164kibuzzard-6A456164
1G***kibuzzard-6A455FB8kibuzzard-6A455FB8
1G***kibuzzard-6A455F32kibuzzard-6A455F32
1G***kibuzzard-6A455ED1kibuzzard-6A455ED1
1G***kibuzzard-6A4560DEkibuzzard-6A4560DE
1G***kibuzzard-6A455E05kibuzzard-6A455E05
1G***kibuzzard-6A6094FFkibuzzard-6A6094FF

The 463 most common of 480 parts.

Questions

How big is the CellKeeper PCB?

It measures 260 × 113 mm and has 4 copper layers, 1.6 mm thick.

What parts does the CellKeeper use?

480 parts, built around the RP2354B, F0505S-1WR3, ISO1050DUB and UCC27524DR. 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 CellKeeper KiCad files?

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

Can I use the CellKeeper design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from cellkeeper-bms/cellkeeper-hardware

2
  • 4 layers44 × 37.8 mmIsoSPI Hat, the printed circuit board in 3D

    IsoSPI Hat

    cellkeeper-bms/cellkeeper-hardware

    PCB for the CellKeeper BMS

    23 parts11GPL-3.0
  • 4 layers44 × 72.1 mmPrecharge, the printed circuit board in 3D

    Precharge

    cellkeeper-bms/cellkeeper-hardware

    PCB for the CellKeeper BMS

    8 parts11GPL-3.0

Similar boards

  • 4 layers63.6 × 86 mmBECom, the printed circuit board in 3D

    BECom

    rjsc/BECom

    BECom - Battery Emulator Companion - Open Source Hardware, designed to run dalathegreat/Battery-Emulator

    276 parts2GPL-3.0
  • 4 layers159.6 × 130 mmFE UFPR 4 0, the printed circuit board in 3D

    FE UFPR 4 0

    josearistidesbail/FE_UFPR_4_0

    KiCad 10 project for the board that sits between a TI LAUNCHXL-F28379D (runs the FOC firmware) and an Infineon PrimeSTACK 6PS04512E43W39693 inverter driving an EMRAX 208 motor.

    374 parts
  • 4 layers192 × 315.1 mmAesa, the printed circuit board in 3D

    Aesa

    tieziyun/ultrasonic-aesa

    A 40 kHz in-air phased array, an acoustic "AESA". It has 64 transducers in an 8 × 8 grid, and each one can transmit or listen under FPGA control, element by element and ping by ping.

    2,139 parts
  • 4 layers110 × 90 mmFilMachine Mainboard, the printed circuit board in 3D

    FilMachine Mainboard

    yesnoj/FilMachine_Reworked

    FilMachine is an automated film processing machine designed for photographic film development. It handles the entire process: chemical baths, water rinses, temperature regulation, and motor-driven film agitation — all…

    205 parts
  • 4 layers42 × 42 mmSmol servo rp nodrv, the printed circuit board in 3D

    Smol servo rp nodrv

    dognotdog/smol_servo

    circuitry and software for controlling NEMA17 size brushless motors and stepper motors as servos.

    91 parts5
  • 4 layers73 × 45 mmENV6 DemoBoard 1, the printed circuit board in 3D

    ENV6 DemoBoard 1

    es-ude/elasticai.hardware

    Schematics and Board design for ElasticNodeHardware

    106 parts4MIT
  • 4 layers115 × 75 mmInduLink-485, the printed circuit board in 3D

    InduLink-485

    8aChristian/InduLink-485

    The board follows rigorous IPC (IPC-2152, IPC-2221, IPC-7351) standards, complete with galvanic isolation, industrial transient protection (TVS, Schottky, PTC Polyfuse), a wide-input step-down switching power…

    24 partsMIT