Skip to the content
PCBKitNew board
4 layers220 × 110 mmCell sim, the printed circuit board in 3D

This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

Size
220 × 110 mm
Copper layers
4
Thickness
1.6 mm
Parts
1,152
Nets
858
Pads
3,763
Tracks, vias
9,835, 1,528
Pours
47
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 Jul 2024
Updated
10 Apr 2026

Overview

Cell sim is an open-source printed circuit board by atopile, from the atopile/cell-sim repository on GitHub, published under the MIT licence. It is a 4-layer board of 220 × 110 mm with 1,152 parts on 858 nets, routed with 9,835 tracks and 1,528 vias.

Its parts include 474 resistors, 296 capacitors, 247 ICs, 49 diodes and 49 transistors. It belongs with the power boards of this library.

README

README.md

Cell Simulator

This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

  • 16 channels
  • Open-Source hardware design, you can embed onto your own HIL setup
  • ⚡️ 0-4.5V and 0-500mA per channel
  • DMM muxed to each channel for arbitarily precise measurment
  • Open-circuit simulation on each channel
  • 📏 16bit ADC feedback for voltage and current
  • 🔌 USB w/ Python software interface (+ 100MBit Ethernet + WiFi waiting for firmware support)

IMG_0374 3

Design overview

Cell Diagram

Board Render

Getting Started

  1. Install python if you don't have it already
  2. Install the requirements pip install -r requirements.txt
  3. Connect the board via USB Port
  4. Power the board with the 12V input (supply: 1A minimum, 3A recommended)
  5. Run the example python script python example_set_voltages.py
  6. Voltages should be set to 3.5V, then rainbow from 1V to 4V across the 16 channels and current should be close to 0A.

Test Output

You should see something like this: Rainbow

Notes

  1. To get best low noise performance, use a quality power supply for the input supply.

Manufacturing

Board is intended to be manufactured with JLC, files are in the main directory of the repository. Note, the highlighted isolated regulator needs to be depopulated:

Screenshot 2026-02-26 at 3 23 36 PM

Firmware

Update Firmware

We use PlatformIO to build and upload the firmware via USB.

  1. Install PlatformIO: https://platformio.org/install
  2. Connect the board via USB (might need to accept connection popup on Mac)
  3. Run pio run -t upload or install the PlatformIO VSCode extension and use the upload button.

API Docs

Connecting to cellsim

python
from lib.cellsim import CellSim
cellsim = CellSim(port)

Enable outputs

Each cell has a relay in series between the cell output and the connector, this can be used to simulate open-wire faults for example.

python
# Global enable/disable
cellsim.enableOutputAll()
time.sleep(1)
cellsim.disableOutputAll()
time.sleep(1)

# Enable/disable one at a time
# Turn relays on in a wave
for i in range(1, 17):
    cellsim.enableOutput(i)
    time.sleep(0.1)

time.sleep(1)

# Turn relays off in a wave
for i in range(1, 17):
    cellsim.disableOutput(i)
    time.sleep(0.1)

Setting voltages

Each output voltage can be specified between 0.5V and 4.4V

python
# Set all at once
cellsim.setAllVoltages(3.5)
time.sleep(1)

# Set one at a time
print("\nSetting rainbow voltage pattern...")
for i in range(16):
    voltage = 1.0 + (3.0 * i / 15)  # Spread 1V to 4V across 16 channels
    cellsim.setVoltage(i + 1, voltage)

Measuring voltages (onboard)

Each channel has an onboard 16bit ADC that measures the cell output. Note this is not a kelvin connection to your DUT, the measurement will only be accurate when minimal current is being drawn by the DUT.

python
voltages = cellsim.getAllVoltages()
print(f"Voltages: {[f'{v:.3f}' for v in voltages]}")

Measuring voltages externally

To take a precision measurement, each channel has a multiplexed output that connects to the DMM connector via a relay.

python
channel_to_measure = 3
# Enable DMM
cellsim.enableDMM(channel_to_measure)

# take measurment using external DMM
# that is connected to the DMM banana outputs
time.sleep(1)

cellsim.disableDMM()

Load switch

Each channel has a resistor + mosfet across its output, this can be used to speed up the discharge of the output capacitors. For example when transitioning from a high output voltage to a low output voltage, there will be an RC decay time before the voltage settles, typically in the ~100ms range. Turning on the load switch will make this much faster.

python
cellsim.enableLoadSwitchAll()
time.sleep(1)

cellsim.disableLoadSwitchAll()
time.sleep(1)

Disconnecting session

Once your test is finished, you can use the following to close the serial session:

python
  cellsim.close()

Parts

1,152
QtyValueFootprintReferences
21562.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 10kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R1, R101, R102, R105, R108, R111, R113, R114, R117, R118, R122, R123, R126, R127, R130, R133 +199
13625V 10uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0805C100, C106, C107, C108, C110, C111, C112, C115, C116, C122, C123, C124, C126, C127, C128, C131 +120
7716V 100nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C1, C11, C12, C13, C14, C101, C102, C109, C113, C117, C118, C125, C129, C133, C134, C141 +61
5325V 1uF X5R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C103, C104, C114, C119, C120, C130, C135, C136, C146, C151, C152, C162, C167, C168, C178, C183 +37
5262.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 1kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R106, R109, R110, R131, R134, R135, R156, R159, R160, R181, R184, R185, R206, R209, R210, R231 +36
49?lib:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ1, Q2, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21, Q22, Q23 +33
49?lib:LED0603-RDLED1, LED2, LED10, LED11, LED12, LED13, LED14, LED15, LED16, LED17, LED18, LED19, LED20, LED21, LED22, LED23 +33
48?lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU108, U109, U110, U122, U123, U124, U136, U137, U138, U150, U151, U152, U164, U165, U166, U178 +32
3262.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 13kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R104, R107, R129, R132, R154, R157, R179, R182, R204, R207, R229, R232, R254, R257, R279, R282 +16
32?lib:RELAY-SMD_HFD4-5-SRU100, U113, U114, U127, U128, U141, U142, U155, U156, U169, U170, U183, U184, U197, U198, U211 +16
32?lib:LED-SMD_4P-L2.0-W2.0-BRU103, U104, U117, U118, U131, U132, U145, U146, U159, U160, U173, U174, U187, U188, U201, U202 +16
1862.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 6.19kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R19, R116, R141, R166, R191, R216, R241, R266, R291, R316, R341, R366, R391, R416, R441, R466 +2
18?lib:SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BLU14, U21, U35, U49, U63, U105, U119, U133, U147, U161, U175, U189, U203, U217, U231, U245 +2
1750V 2.2uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0805C33, C41, C57, C73, C105, C121, C137, C153, C169, C185, C201, C217, C233, C249, C265, C281 +1
1762.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 11.5kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R67, R115, R140, R165, R190, R215, R240, R265, R290, R315, R340, R365, R390, R415, R440, R465 +1
1762.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 14kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R64, R69, R119, R144, R169, R194, R219, R244, R269, R294, R319, R344, R369, R394, R419, R444 +1
17?lib:SOIC-8_L4.9-W3.9-P1.27-LS6.0-TLU18, U32, U46, U60, U74, U102, U116, U130, U144, U158, U172, U186, U200, U214, U228, U242 +1
17?lib:PWRM-TH_BXXXXS-2WR2U17, U22, U36, U50, U64, U78, U106, U120, U134, U148, U162, U176, U190, U204, U218, U232 +1
17?lib:MSOP-10_L3.0-W3.0-P0.50-LS5.0-BLU19, U23, U37, U51, U65, U79, U107, U121, U135, U149, U163, U177, U191, U205, U219, U233 +1
17?lib:SOT-563_L1.6-W1.2-P0.50-LS1.6-TLU7, U28, U42, U56, U70, U84, U112, U126, U140, U154, U168, U182, U196, U210, U224, U238 +1
17?lib:IND-SMD_L4.0-W4.0L2, L4, L6, L10, L12, L14, L16, L18, L20, L22, L24, L26, L28, L30, L32, L34 +1
16125mW Thick Film Resistors 150V ±1% 100mΩ 0805 Chip Resistor - Surface Mount ROHSlib:R0805R78, R103, R128, R153, R178, R203, R228, R253, R278, R303, R328, R353, R378, R403, R428, R453
16125mW Thick Film Resistors 150V ±100ppm/℃ ±1% 226Ω 0805 Chip Resistor - Surface Mount ROHSlib:R0805R87, R112, R137, R162, R187, R212, R237, R262, R287, R312, R337, R362, R387, R412, R437, R462
1662.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 24kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R70, R95, R120, R145, R170, R195, R220, R245, R270, R295, R320, R345, R370, R395, R420, R445
1662.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 37.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R71, R96, R121, R146, R171, R196, R221, R246, R271, R296, R321, R346, R371, R396, R421, R446
1662.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 43kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R74, R99, R124, R149, R174, R199, R224, R249, R274, R299, R324, R349, R374, R399, R424, R449
1662.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 60.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R75, R100, R125, R150, R175, R200, R225, R250, R275, R300, R325, R350, R375, R400, R425, R450
16?lib:WSON-6_L2.0-W2.0-P0.65-TL-EPU27, U41, U55, U69, U83, U97, U111, U125, U139, U153, U167, U181, U195, U209, U223, U237
16?lib:QFN-16_L3.0-W3.0-P0.50-BL-EP1.7U31, U45, U59, U73, U87, U101, U115, U129, U143, U157, U171, U185, U199, U213, U227, U241
16?lib:IND-SMD_L4.4-W4.2L3, L5, L7, L9, L11, L13, L15, L17, L19, L21, L23, L25, L27, L29, L31, L33
462.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 2kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R54, R55, R56, R57
462.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 33Ω 0402 Chip Resistor - Surface Mount ROHSlib:R0402R6, R7, R11, R12
462.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 49.9Ω 0402 Chip Resistor - Surface Mount ROHSlib:R0402R8, R9, R13, R14
216V 2.2uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0603C25, C27
250V 10nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C8, C9
250V 10pF C0G ±5% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C18, C19
250V 6.8nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C6, C7
262.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 200Ω 0402 Chip Resistor - Surface Mount ROHSlib:R0402R4, R5
262.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 4.7kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R2, R3
262.5mW Thick Film Resistors 50V ±800ppm/℃ ±1% 0Ω 0402 Chip Resistor - Surface Mount ROHSlib:R0402R469, R470
2?lib:TSSOP-24_L7.8-W4.4-P0.65-LS6.4-BLU11, U12
2?lib:SOD-323_L1.8-W1.3-LS2.5-RDDS1, DS2
10.6A, 42V, 1.1MHz Buck Regulatorlib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BRU13
110V 10uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0603C28
110V 4.7uF X5R ±20% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C10
150V 1nF X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0805C4
150V 22nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C5
162.5mW Thick Film Resistors 50V ±1% ±200ppm/℃ 10Ω 0402 Chip Resistor - Surface Mount ROHSlib:R0402R10
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 10.2kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R61
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 12.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R15
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 17.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R60
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 1MΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R16
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 22.6kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R58
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 4.12kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R59
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 86.6kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R18
1?lib:CRYSTAL-SMD_4P-L3.2-W2.5-BLU6
1?lib:USB-C-SMD_KH-TYPE-C-16PU3
1?lib:WIRELM-SMD_ESP32-S3-WROOM-1U1
1?lib:HDR-SMD_8P-P2.54-V-M-R2-C4-LS7.4U248
1?lib:R1206R17
1?lib:HDR-TH_4P-P2.54-V-FU10
1?lib:IND-SMD_L12.0-W12.0L1
1?lib:CONN-TH_22P-P2.00_5018762240U247
1?lib:MSOP-10_L3.0-W3.0-P0.50-LS5.0-TLU20
1?lib:RJ45-TH_J1B1211CCDU5
1?lib:CONN-TH_XT30PW-MJ1
1?lib:CAP-SMD_BD10.0-L10.3-W10.3-LS11.0-FDC20
1?lib:AUDIO-TH_24.243.1U8
1?lib:LQFP-48_L7.0-W7.0-P0.50-LS9.0-BLU4
1?lib:SSOP-24_L8.1-W5.3-P0.65-LS7.8-BLU16
1?lib:KEY-SMD_4P-L4.2-W3.2-P2.20-LS4.6U2
1?lib:CONN-TH_24.243.2U9
1?lib:IDC-TH_Z-231012820106U246

Questions

How big is the Cell sim PCB?

It measures 220 × 110 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Cell sim use?

1,152 parts. 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 Cell sim KiCad files?

From the atopile/cell-sim repository on GitHub, at the commit this page was made from: the board is elec/layout/default/cell-sim.kicad_pcb and its schematic elec/layout/cell/cell.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cell sim design in my own project?

Its repository publishes it under the MIT 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 atopile/cell-sim

5
  • 4 layersCell, the printed circuit board in 3D

    Cell

    atopile/cell-sim

    This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

    63 parts25MIT
  • 2 layersEthernet, the printed circuit board in 3D

    Ethernet

    atopile/cell-sim

    This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

    32 parts25MIT
  • 2 layersTca9548apwr, the printed circuit board in 3D

    Tca9548apwr

    atopile/cell-sim

    This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

    20 parts25MIT
  • 2 layers225.7 × 100.8 mmLv2842xlvddcr, the printed circuit board in 3D

    Lv2842xlvddcr

    atopile/cell-sim

    This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

    8 parts25MIT
  • 2 layers225.7 × 100.8 mmLevel shifter, the printed circuit board in 3D

    Level shifter

    atopile/cell-sim

    This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.

    3 parts25MIT

Similar boards

  • 4 layers265 × 171.4 mmT1-panel, the printed circuit board in 3D

    T1-panel

    INTI-CMNB/kibot_variants_arduprog_site

    Example of KiBot navigate results deployment using --quick-start

    1,163 parts
  • 4 layers148.8 × 177.8 mmSparkFun GNSS DAN F10N panelized, the printed circuit board in 3D

    SparkFun GNSS DAN F10N panelized

    sparkfun/SparkFun_GNSS_DAN-F10N

    A USB evaluation board for the dual L1/L5 frequency DAN-F10N GNSS receiver.

    1,135 parts
  • 4 layers106.2 × 89.3 mm3CH AWG TIA v103, the printed circuit board in 3D

    3CH AWG TIA v103

    GrandFatherPikhto/3CH-AWG-TIA

    3 Channels AWG Tia Generator on 10CL006, AD9707, ADA4807-2

    1,135 parts
  • 4 layers148.3 × 147.3 mmSaintcon2019TopBoard, the printed circuit board in 3D

    Saintcon2019TopBoard

    compukidmike/Saintcon2019

    There is also a video of my badge talk at Saintcon https://www.youtube.com/watch?v=MAhJ2WoN14

    1,120 parts20
  • 4 layers79.6 × 117.2 mmPanel, the printed circuit board in 3D

    Panel

    atx/mlsdr

    SDR for my TDOA radiolocator

    1,116 parts5MIT
  • 4 layers60 × 570 mmArm panel, the printed circuit board in 3D

    Arm panel

    kingoflolz/mic_hardware

    For more detail on the project see links below:

    1,110 parts21
  • 4 layers8b alu slice, the printed circuit board in 3D

    8b alu slice

    tmarhguy/tomato

    A functional 32-bit computer built from scratch in a dorm; implemented on FPGA, Kicad, browser simulation

    1,105 parts2