

CellKeeper
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
12RP2354B
QFN-80-EP(10x10)-20℃~+85℃ 12bit 150MHz 2MB 32 Bit 48 520KB ARM Cortex-M33 Built-in+External External pin reset (NRST)、True random number generator (TRNG) OTP QFN-80-EP(10x10) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)F0505S-1WR3
SIP,19.5x6mm-40℃~+85℃ 1 100kHz 10mm 19.5mm 1W 200mA 2400uF 30mVp-p 3kV 4.5V~5.5V 5V 6mm 88% Short Circuit Protection SIP,19.5x6mm Isolated Power Modules ROHSYLPTECIsolated Power ModulesISO1050DUB
SOP-8-2.54mm-55℃~+105℃ 1 1Mbps 2500 3V~5.5V 4.75V~5.25V 50kV/us Bus fault detection and protection、Fail-safe SOP-8-2.54mm Isolated CAN Transceivers ROHSTexas InstrumentsIsolated CAN TransceiversUCC27524DR
SOP-8-40℃~+125℃ 2 2.4V 30ns 30ns 4.5V~20V 4A 4A 70ns 70ns 800mV IGBT、MOSFET SOP-8 Gate Drivers ROHSJSMSEMIGate DriversW25Q16JVUXIQ
USON-8-EP(2x3)-40℃~+85℃ 100,000 cycles 10uA 133MHz 16Mbit 2.7V~3.6V 20 Years 3ms SPI USON-8-EP(2x3) NOR FLASH ROHSWinbond ElecNOR FLASHLTV-217-B-G
SOP-4-175mil-55℃~+110℃ 1 1.2V 200mW 2us 3.75kV 3us 400mV@8mA,2.4mA 50% 50mA 50mA 600% 6V 70V DC Phototransistor SOP-4-175mil Transistor, Photovoltaic Output Optoisolators ROHSLite-OnTransistor, Photovoltaic Output OptoisolatorsADS1115
UncategorisedTexas InstrumentsTLV1117LV33DCYR
SOT-223-40℃~+125℃@(TJ) 0.003%Vout 1 1.2V@(1A) 12V 1A 3.3V 75dB@(120Hz) Fixed Over Current Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSJSMSEMIVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsSS54
SMA(DO-214AC)-55℃~+125℃ 1mA@40V 40V 550mV@5A 5A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky DiodesBSC0805LS
TDSON-8(5x6)-55℃~+150℃ 1 N-channel 100V 16nC 2.3V 2.7nF 28pF 61A 7mΩ@10V 83W TDSON-8(5x6) MOSFETs ROHSInfineon TechnologiesMOSFETsSMCJ33CA
DO-214AB-65℃~+150℃ 1.5kW@10/1000us 1uA 28.2A@10/1000us 33V 40.6V 53.3V Bidirectional IEC 61000-4-2、IEC 61000-4-4 TVS DO-214AB ESD and Surge Protection (TVS/ESD) ROHSLittelfuseESD And Surge Protection (TVS/ESD)TS-1187A-B-A-B
SMD-4P,5.1x5.1mm-30℃~+85℃ 1.5mm 1.6N 100,000 cycles 12V 5.1mm 5.1mm 50mA Gold No Round Button SPST Surface Mount,Vertical Without Bracket SMD-4P,5.1x5.1mm Tactile Switches ROHSXKB ConnectionTactile Switches
README
README.mdCellKeeper BMS — v1.1

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.
| Path | Description |
|---|---|
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

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| Qty | Value | Footprint | References |
|---|---|---|---|
| 34 | TP | CellKeeper_Local:BMS_Library__TestPoint_THTPad_D1.5mm_Drill1.0mm | 1/2V1, 3v1, 5V1, GND1, GPIO44, GPIO45, GPIO46, RevisionS1, TP11, TP12, TP13, TP14, TP16, TP17, TP18, TP19 +18 |
| 33 | 0r | CellKeeper_Local:BMS_Library__J_0603_jumper | JP10, JP11, JP12, JP13, JP14, JP15, JP16, JP17, JP18, JP19, JP20, JP21, JP22, JP23, JP24, JP27 +17 |
| 26 | 100n | CellKeeper_Local:Capacitor_SMD__C_0402_1005Metric | C44, C46, C47, C50, C51, C53, C56, C57, C58, C59, C61, C63, C100, C101, C102, C105 +10 |
| 24 | 3M | CellKeeper_Local:Resistor_SMD__R_1206_3216Metric | R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117 +8 |
| 22 | 100nF | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | C2, C10, C11, C13, C15, C16, C18, C22, C23, C28, C29, C30, C34, C35, C36, C104 +6 |
| 20 | 5.1k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R45, R57, R66, R69, R72, R77, R79, R80, R81, R82, R138, R139, R143, R144, R153, R154 +4 |
| 20 | TestPoint_2Pole | CellKeeper_Local:BMS_Library__TestPoint_2Pads_Pitch2.54mm_Pad1.5_Drill1.0mm | TP1, TP2, TP4, TP10, TP15, TP23, TP24, TP25, TP34, TP35, TP36, TP37, TP42, TP43, TP44, TP45 +4 |
| 17 | 10k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R3, R4, R13, R14, R15, R17, R19, R20, R21, R25, R28, R42, R50, R51, R52, R75 +1 |
| 17 | 24k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R1, R2, R11, R16, R29, R33, R35, R39, R40, R41, R96, R97, R98, R100, R101, R140 +1 |
| 13 | 1k | CellKeeper_Local:Resistor_SMD__R_0402_1005Metric | R27, R53, R55, R56, R74, R92, R94, R95, R129, R130, R131, R132, R135 |
| 13 | SMB6.8CA | CellKeeper_Local:Diode_SMD__D_SMB | D1, D2, D3, D4, D5, D6, D24, D25, D26, D28, D29, D30, D31 |
| 12 | 1k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R8, R9, R22, R23, R46, R47, R48, R49, R76, R133, R134, R141 |
| 12 | SS54 | CellKeeper_Local:Diode_SMD__D_SMA | D11, D12, D15, D16, D20, D23, D37, D38, D42, D44, D47, D50 |
| 10 | 10uF | CellKeeper_Local:Capacitor_SMD__C_0805_2012Metric | C3, C4, C6, C8, C17, C21, C32, C55, C66, C116 |
| 9 | 1uF | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | C19, C20, C41, C42, C67, C96, C97, C98, C99 |
| 9 | Green | CellKeeper_Local:LED_SMD__LED_0805_2012Metric | D7, D8, D14, D19, D32, D35, D36, D43, D48 |
| 8 | 100k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R5, R10, R18, R24, R34, R36, R151, R152 |
| 8 | 100nf | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | C62, C64, C76, C77, C78, C79, C80, C81 |
| 8 | 22uF | CellKeeper_Local:Capacitor_SMD__C_0805_2012Metric | C5, C7, C12, C33, C37, C48, C49, C69 |
| 8 | 4.7u | CellKeeper_Local:RP2350_80QFN_minimal__C_0402_1005Metric_small_pads | C38, C43, C45, C52, C68, C72, C82, C87 |
| 6 | LTV-217-B-G | CellKeeper_Local:Package_SO__SSOP-4_4.4x2.6mm_P1.27mm | U6, U7, U8, U9, U12, U13 |
| 6 | Red | CellKeeper_Local:LED_SMD__LED_0805_2012Metric | D9, D10, D27, D41, D46, D49 |
| 6 | White | CellKeeper_Local:LED_SMD__LED_0805_2012Metric | D13, D17, D22, D33, D34, D45 |
| 5 | 100pF | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | C24, C25, C26, C27, C103 |
| 4 | 15pF | CellKeeper_Local:Capacitor_SMD__C_0402_1005Metric | C39, C40, C70, C71 |
| 4 | 22R | CellKeeper_Local:Resistor_SMD__R_0402_1005Metric | R70, R71, R127, R128 |
| 4 | 33R | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R7, R12, R37, R38 |
| 4 | 33r | CellKeeper_Local:Resistor_SMD__R_0402_1005Metric | R54, R68, R93, R126 |
| 4 | BSC0805LS | CellKeeper_Local:BMS_Library__TDSON-8_5x6_ | Q1, Q2, Q3, Q4 |
| 4 | MountingHole_Pad | CellKeeper_Local:MountingHole__MountingHole_3.7mm | H1, H2, H7, H8 |
| 4 | SMCJ33CA | CellKeeper_Local:Diode_SMD__D_SMC | D18, D21, D39, D40 |
| 4 | TS-1187A-B-A-B | CellKeeper_Local:Button_Switch_SMD__SW_Push_1P1T_XKB_TS-1187A | SW1, SW2, SW3, SW4 |
| 4 | jumper-bridged | CellKeeper_Local:Jumper__SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP25, JP26, JP38, JP39 |
| 3 | 3.3k | CellKeeper_Local:Resistor_SMD__R_0402_1005Metric | R26, R78, R155 |
| 3 | 510r | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R30, R73, R86 |
| 3 | 600R@100MHz | CellKeeper_Local:Inductor_SMD__L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | FB1, FB3, FB5 |
| 3 | 680uF | CellKeeper_Local:Capacitor_THT__CP_Radial_D10.0mm_P5.00mm | C1, C14, C31 |
| 3 | USB_C_Receptacle_USB2.0_16P | CellKeeper_Local:BMS_Library__USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J9, J11, J19 |
| 2 | 120r | CellKeeper_Local:Resistor_SMD__R_1206_3216Metric | R31, R32 |
| 2 | 1M | CellKeeper_Local:Resistor_SMD__R_1206_3216Metric | R145, R146 |
| 2 | 1nF | CellKeeper_Local:Capacitor_SMD__C_1206_3216Metric | C94, C95 |
| 2 | 2.2k | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R43, R44 |
| 2 | 220r | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R87, R88 |
| 2 | 22uh 5.5A | CellKeeper_Local:Inductor_SMD__L_Changjiang_FXL1040 | L2, L3 |
| 2 | 3.3uh | CellKeeper_Local:RP2350_80QFN_minimal__L_pol_2016 | L4, L6 |
| 2 | 47r | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R136, R137 |
| 2 | 6.8uh | CellKeeper_Local:Inductor_SMD__L_Changjiang_FXL0630 | L1, L5 |
| 2 | 8P8C_LED_Shielded_x2 | CellKeeper_Local:Connector_RJ__RJ45_HCTL_HC-RJ45-5JA-2-2-Y | J4, J5 |
| 2 | ABM8-272-T3 | CellKeeper_Local:Crystal__Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1, Y2 |
| 2 | ADS1115 | CellKeeper_Local:Package_SO__TSSOP-10_3x3mm_P0.5mm | U18, U19 |
| 2 | Conn_01x03 | CellKeeper_Local:Connector_PinHeader_2.54mm__PinHeader_1x03_P2.54mm_Vertical | J8, J16 |
| 2 | Conn_02x10_Odd_Even | CellKeeper_Local:Connector_PinHeader_2.54mm__PinHeader_2x10_P2.54mm_Vertical | J12, J22 |
| 2 | F0505S-1WR3 | CellKeeper_Local:BMS_Library__H0505S-1WR2 | U4, U15 |
| 2 | ISO1050DUB | CellKeeper_Local:Package_SO__SOP-8_6.62x9.15mm_P2.54mm | U5, U10 |
| 2 | MountingHole_Pad | CellKeeper_Local:MountingHole__MountingHole_5mm | H3, H4 |
| 2 | RP2354B | CellKeeper_Local:RP2350_80QFN_minimal__RP2350-QFN-80-1EP_10x10_P0.4mm_EP3.4x3.4mm_ThermalVias | U14, U20 |
| 2 | SDCW3225S-2-102TF | CellKeeper_Local:BMS_Library__FILTER-SMD_4P-L3.2-W2.5-BL | FL1, FL2 |
| 2 | Screw_Terminal_01x04 | CellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_4-G-3.81_1x04_P3.81mm_Horizontal_1.4mmPin | J3, J7 |
| 2 | TLV1117LV33DCYR | CellKeeper_Local:Package_TO_SOT_SMD__SOT-223-3_TabPin2 | U25, U26 |
| 2 | UCC27524DR | CellKeeper_Local:Package_SO__SOIC-8_3.9x4.9mm_P1.27mm | U1, U11 |
| 2 | W25Q16JVUXIQ | Package_SON:Winbond_USON-8-1EP_3x2mm_P0.5mm_EP0.2x1.6mm | U23, U24 |
| 2 | WJ15EDGRC-3.81-04P-14-00A | CellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_4-G-3.81_1x04_P3.81mm_Horizontal_1.4mmPin | J1, J15 |
| 1 | 100R | CellKeeper_Local:Resistor_SMD__R_0603_1608Metric | R142 |
| 1 | 120Ω@100MHz | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | FB2 |
| 1 | 3.81P Screw Terminal | CellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_8-G-3.81_1x08_P3.81mm_Horizontal_1.4mmPin | J10 |
| 1 | 3.81P Screw Terminal | CellKeeper_Local:BMS_Library__PhoenixContact_MC_1_5_2-G-3.81_1x02_P3.81mm_Horizontal_1.4mmPin | J21 |
| 1 | 4.7uF | CellKeeper_Local:Capacitor_SMD__C_0603_1608Metric | C9 |
| 1 | 7.62mm Pitch Screw Terminal | CellKeeper_Local:Connector_Phoenix_GMSTB__PhoenixContact_GMSTBA_2_5_6-G-7_62_1x06_P7.62mm_Horizontal | J18 |
| 1 | AM26LV32EIDR | CellKeeper_Local:Package_SO__SOIC-16_3.9x9.9mm_P1.27mm | U22 |
| 1 | CellKeeper_Enclosure | CellKeeper_Local:CellKeeper_Enclosure | ENC1 |
| 1 | G*** | kibuzzard-6A45612B | kibuzzard-6A45612B |
| 1 | G*** | kibuzzard-6AD6CA76 | kibuzzard-6AD6CA76 |
| 1 | G*** | kibuzzard-6A456096 | kibuzzard-6A456096 |
| 1 | G*** | kibuzzard-6A456164 | kibuzzard-6A456164 |
| 1 | G*** | kibuzzard-6A455FB8 | kibuzzard-6A455FB8 |
| 1 | G*** | kibuzzard-6A455F32 | kibuzzard-6A455F32 |
| 1 | G*** | kibuzzard-6A455ED1 | kibuzzard-6A455ED1 |
| 1 | G*** | kibuzzard-6A4560DE | kibuzzard-6A4560DE |
| 1 | G*** | kibuzzard-6A455E05 | kibuzzard-6A455E05 |
| 1 | G*** | kibuzzard-6A6094FF | kibuzzard-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 mm

- 4 layers44 × 72.1 mm

Similar boards
- 4 layers63.6 × 86 mm

BECom
rjsc/BECom
BECom - Battery Emulator Companion - Open Source Hardware, designed to run dalathegreat/Battery-Emulator
276 parts2GPL-3.0 - 4 layers159.6 × 130 mm

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 mm

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 mm

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 mm

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 mm

ENV6 DemoBoard 1
es-ude/elasticai.hardware
Schematics and Board design for ElasticNodeHardware
106 parts4MIT - 4 layers115 × 75 mm

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 - 4 layers76.2 × 82.6 mm
