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

This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.
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.
This cell-sim is designed to mimic a LiPo battery pack for develpoment of the surrounding electronics, like a BMS.


pip install -r requirements.txt
python example_set_voltages.py
You should see something like this:

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:
We use PlatformIO to build and upload the firmware via USB.
pio run -t upload or install the PlatformIO VSCode extension and use the upload button.from lib.cellsim import CellSim
cellsim = CellSim(port)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.
# 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)Each output voltage can be specified between 0.5V and 4.4V
# 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)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.
voltages = cellsim.getAllVoltages()
print(f"Voltages: {[f'{v:.3f}' for v in voltages]}")To take a precision measurement, each channel has a multiplexed output that connects to the DMM connector via a relay.
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()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.
cellsim.enableLoadSwitchAll()
time.sleep(1)
cellsim.disableLoadSwitchAll()
time.sleep(1)Once your test is finished, you can use the following to close the serial session:
cellsim.close()| Qty | Value | Footprint | References |
|---|---|---|---|
| 215 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 10kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R1, R101, R102, R105, R108, R111, R113, R114, R117, R118, R122, R123, R126, R127, R130, R133 +199 |
| 136 | 25V 10uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0805 | C100, C106, C107, C108, C110, C111, C112, C115, C116, C122, C123, C124, C126, C127, C128, C131 +120 |
| 77 | 16V 100nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C1, C11, C12, C13, C14, C101, C102, C109, C113, C117, C118, C125, C129, C133, C134, C141 +61 |
| 53 | 25V 1uF X5R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C103, C104, C114, C119, C120, C130, C135, C136, C146, C151, C152, C162, C167, C168, C178, C183 +37 |
| 52 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 1kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R106, 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-BR | Q1, Q2, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21, Q22, Q23 +33 |
| 49 | ? | lib:LED0603-RD | LED1, 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-BL | U108, U109, U110, U122, U123, U124, U136, U137, U138, U150, U151, U152, U164, U165, U166, U178 +32 |
| 32 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 13kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R104, R107, R129, R132, R154, R157, R179, R182, R204, R207, R229, R232, R254, R257, R279, R282 +16 |
| 32 | ? | lib:RELAY-SMD_HFD4-5-SR | U100, 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-BR | U103, U104, U117, U118, U131, U132, U145, U146, U159, U160, U173, U174, U187, U188, U201, U202 +16 |
| 18 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 6.19kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R19, 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-BL | U14, U21, U35, U49, U63, U105, U119, U133, U147, U161, U175, U189, U203, U217, U231, U245 +2 |
| 17 | 50V 2.2uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0805 | C33, C41, C57, C73, C105, C121, C137, C153, C169, C185, C201, C217, C233, C249, C265, C281 +1 |
| 17 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 11.5kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R67, R115, R140, R165, R190, R215, R240, R265, R290, R315, R340, R365, R390, R415, R440, R465 +1 |
| 17 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 14kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R64, 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-TL | U18, U32, U46, U60, U74, U102, U116, U130, U144, U158, U172, U186, U200, U214, U228, U242 +1 |
| 17 | ? | lib:PWRM-TH_BXXXXS-2WR2 | U17, 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-BL | U19, 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-TL | U7, U28, U42, U56, U70, U84, U112, U126, U140, U154, U168, U182, U196, U210, U224, U238 +1 |
| 17 | ? | lib:IND-SMD_L4.0-W4.0 | L2, L4, L6, L10, L12, L14, L16, L18, L20, L22, L24, L26, L28, L30, L32, L34 +1 |
| 16 | 125mW Thick Film Resistors 150V ±1% 100mΩ 0805 Chip Resistor - Surface Mount ROHS | lib:R0805 | R78, R103, R128, R153, R178, R203, R228, R253, R278, R303, R328, R353, R378, R403, R428, R453 |
| 16 | 125mW Thick Film Resistors 150V ±100ppm/℃ ±1% 226Ω 0805 Chip Resistor - Surface Mount ROHS | lib:R0805 | R87, R112, R137, R162, R187, R212, R237, R262, R287, R312, R337, R362, R387, R412, R437, R462 |
| 16 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 24kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R70, R95, R120, R145, R170, R195, R220, R245, R270, R295, R320, R345, R370, R395, R420, R445 |
| 16 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 37.4kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R71, R96, R121, R146, R171, R196, R221, R246, R271, R296, R321, R346, R371, R396, R421, R446 |
| 16 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 43kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R74, R99, R124, R149, R174, R199, R224, R249, R274, R299, R324, R349, R374, R399, R424, R449 |
| 16 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 60.4kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R75, 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-EP | U27, 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.7 | U31, U45, U59, U73, U87, U101, U115, U129, U143, U157, U171, U185, U199, U213, U227, U241 |
| 16 | ? | lib:IND-SMD_L4.4-W4.2 | L3, L5, L7, L9, L11, L13, L15, L17, L19, L21, L23, L25, L27, L29, L31, L33 |
| 4 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 2kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R54, R55, R56, R57 |
| 4 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 33Ω 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R6, R7, R11, R12 |
| 4 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 49.9Ω 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R8, R9, R13, R14 |
| 2 | 16V 2.2uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0603 | C25, C27 |
| 2 | 50V 10nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C8, C9 |
| 2 | 50V 10pF C0G ±5% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C18, C19 |
| 2 | 50V 6.8nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C6, C7 |
| 2 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 200Ω 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R4, R5 |
| 2 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 4.7kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R2, R3 |
| 2 | 62.5mW Thick Film Resistors 50V ±800ppm/℃ ±1% 0Ω 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R469, R470 |
| 2 | ? | lib:TSSOP-24_L7.8-W4.4-P0.65-LS6.4-BL | U11, U12 |
| 2 | ? | lib:SOD-323_L1.8-W1.3-LS2.5-RD | DS1, DS2 |
| 1 | 0.6A, 42V, 1.1MHz Buck Regulator | lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR | U13 |
| 1 | 10V 10uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0603 | C28 |
| 1 | 10V 4.7uF X5R ±20% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C10 |
| 1 | 50V 1nF X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0805 | C4 |
| 1 | 50V 22nF X7R ±10% 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS | lib:C0402 | C5 |
| 1 | 62.5mW Thick Film Resistors 50V ±1% ±200ppm/℃ 10Ω 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R10 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 10.2kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R61 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 12.4kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R15 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 17.4kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R60 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 1MΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R16 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 22.6kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R58 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 4.12kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R59 |
| 1 | 62.5mW Thick Film Resistors 50V ±100ppm/℃ ±1% 86.6kΩ 0402 Chip Resistor - Surface Mount ROHS | lib:R0402 | R18 |
| 1 | ? | lib:CRYSTAL-SMD_4P-L3.2-W2.5-BL | U6 |
| 1 | ? | lib:USB-C-SMD_KH-TYPE-C-16P | U3 |
| 1 | ? | lib:WIRELM-SMD_ESP32-S3-WROOM-1 | U1 |
| 1 | ? | lib:HDR-SMD_8P-P2.54-V-M-R2-C4-LS7.4 | U248 |
| 1 | ? | lib:R1206 | R17 |
| 1 | ? | lib:HDR-TH_4P-P2.54-V-F | U10 |
| 1 | ? | lib:IND-SMD_L12.0-W12.0 | L1 |
| 1 | ? | lib:CONN-TH_22P-P2.00_5018762240 | U247 |
| 1 | ? | lib:MSOP-10_L3.0-W3.0-P0.50-LS5.0-TL | U20 |
| 1 | ? | lib:RJ45-TH_J1B1211CCD | U5 |
| 1 | ? | lib:CONN-TH_XT30PW-M | J1 |
| 1 | ? | lib:CAP-SMD_BD10.0-L10.3-W10.3-LS11.0-FD | C20 |
| 1 | ? | lib:AUDIO-TH_24.243.1 | U8 |
| 1 | ? | lib:LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL | U4 |
| 1 | ? | lib:SSOP-24_L8.1-W5.3-P0.65-LS7.8-BL | U16 |
| 1 | ? | lib:KEY-SMD_4P-L4.2-W3.2-P2.20-LS4.6 | U2 |
| 1 | ? | lib:CONN-TH_24.243.2 | U9 |
| 1 | ? | lib:IDC-TH_Z-231012820106 | U246 |
It measures 220 × 110 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
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).

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

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

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

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

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

INTI-CMNB/kibot_variants_arduprog_site
Example of KiBot navigate results deployment using --quick-start

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

GrandFatherPikhto/3CH-AWG-TIA
3 Channels AWG Tia Generator on 10CL006, AD9707, ADA4807-2


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



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