Skip to the content
PCBKitNew board
4 layersCell, 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.

Copper layers
4
Thickness
1.6 mm
Parts
63
Nets
57
Pads
200
Tracks, vias
480, 75
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
25 Jul 2024
Updated
10 Apr 2026

Overview

Cell 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 with 63 parts on 57 nets, routed with 480 tracks and 75 vias.

Its parts include 25 resistors, 16 capacitors, 14 ICs, 3 diodes and 3 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

63
QtyValueFootprintReferences
1162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 10kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R4, R5, R8, R9, R12, R15, R18, R20, R21, R24, R25
825V 10uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0805C2, C3, C4, C6, C7, C8, C11, C12
416V 100nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C5, C9, C13, C14
325V 1uF X5R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0402C10, C15, C16
362.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 1kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R13, R16, R17
3?lib:LED0603-RDLED1, LED2, LED3
3?lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU3, U4, U5
3?lib:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ1, Q2, Q3
262.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 13kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R11, R14
2?lib:RELAY-SMD_HFD4-5-SRU8, U9
2?lib:LED-SMD_4P-L2.0-W2.0-BRU12, U13
1125mW Thick Film Resistors 150V ±1% 100mΩ 0805 Chip Resistor - Surface Mount ROHSlib:R0805R10
1125mW Thick Film Resistors 150V ±100ppm/℃ ±1% 226Ω 0805 Chip Resistor - Surface Mount ROHSlib:R0805R19
150V 2.2uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSlib:C0805C1
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 11.5kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R22
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 14kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R1
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 24kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R2
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 37.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R3
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 43kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R6
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 6.2kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R23
162.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 60.4kΩ 0402 Chip Resistor - Surface Mount ROHSlib:R0402R7
1?lib:IND-SMD_L4.0-W4.0L2
1?lib:SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BLU14
1?lib:WSON-6_L2.0-W2.0-P0.65-TL-EPU6
1?lib:MSOP-10_L3.0-W3.0-P0.50-LS5.0-BLU2
1?lib:IND-SMD_L4.4-W4.2L1
1?lib:PWRM-TH_BXXXXS-2WR2U1
1?lib:SOIC-8_L4.9-W3.9-P1.27-LS6.0-TLU11
1?lib:SOT-563_L1.6-W1.2-P0.50-LS1.6-TLU7
1?lib:QFN-16_L3.0-W3.0-P0.50-BL-EP1.7U10

Questions

What parts does the Cell use?

63 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 KiCad files?

From the atopile/cell-sim repository on GitHub, at the commit this page was made from: the board is elec/layout/cell/cell.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 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 layers220 × 110 mmCell sim, the printed circuit board in 3D

    Cell sim

    atopile/cell-sim

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

    1,152 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 layers27 × 31.5 mmAmp macom vga, the printed circuit board in 3D

    Amp macom vga

    loxodes/vna

    Under development open hardware microwave vector network analyzer

    63 parts205
  • 4 layers71 × 10 mm001 dot flipper, the printed circuit board in 3D

    001 dot flipper

    pierre-muth/fast-flipdot

    Driving a flipdot matrix differently. All dots simultaneously.

    63 parts145GPL-3.0
  • 4 layers68.1 × 66 mmAmbient, the printed circuit board in 3D

    Ambient

    lab11/signpost

    Exploring what happens when you put computers on sign posts.

    63 parts97Apache-2.0
  • 4 layers40 × 40 mmLocus, the printed circuit board in 3D

    Locus

    Nieko27/Frame-Workshop

    A repo for all things steam frame hardware.

    63 parts93CERN-OHL-S-2.0
  • 4 layers60.2 × 20.8 mmPhaseLatchMini, the printed circuit board in 3D

    PhaseLatchMini

    AndersBNielsen/PhaseLatchMini

    High-rate continuous streaming of interleaved dual ADC (I/Q) samples over USB Full‑Speed (FS) using only the built‑in CDC class on an STM32F103C8 ("Blue Pill" style) board.

    63 parts72
  • 4 layers54 × 34 mmNeurband main, the printed circuit board in 3D

    Neurband main

    jlcjak/neurband

    Open, minimal sEMG wristband like the Meta Neural Band: 8-ch ADS1298 + nRF52832 BLE, dry gold electrodes on a flex, 3D-printed band. KiCad, FreeCAD, Zephyr, Python, simulations.

    63 parts46
  • 4 layers20.5 × 50.8 mmPicoPD Pro, the printed circuit board in 3D

    PicoPD Pro

    CentyLab/PicoPD_Pro

    Repo for PicoPD Pro hardware/software and documentation

    63 parts42
  • 4 layers110 × 90 mmEEZ DIB BP3C r3B3, the printed circuit board in 3D

    EEZ DIB BP3C r3B3

    intergalaktik/bb3-cm4

    CM4 compatible MCU board

    63 parts35