Custom Power Bank

Open-source files on GitHub.

This is a power bank I built around three 18650 cells. I designed the battery-management PCB and the 3D-printed case, wrote the firmware for the controller, and made an iOS app for monitoring it over Bluetooth.

I started this project when I was 17 and worked on it alongside school. It was my first larger electronics project and the first time I had designed a custom PCB. At the beginning, I knew very little about circuit design, PCB layout, battery management or choosing components. I had to learn these things while building it and went through several different circuit designs before reaching this version. It turned into a much bigger undertaking than I had expected.

Electronics

  • Three Panasonic NCR18650B cells in a 3S configuration
  • BQ76920 battery monitor for the individual cell voltages, pack voltage and temperature
  • 8 mΩ shunt resistor for measuring charge and discharge current
  • Power MOSFETs for switching the charge and discharge paths
  • Protection against under-voltage, over-voltage, over-current and short circuits
  • Passive balancing for the three cells
  • Arduino Nano 33 BLE as the controller
  • Separate modules for the USB power conversion

Firmware

The firmware runs on the Arduino and communicates with the BQ76920 over I²C. It is responsible for:

  • Reading the cell voltages, pack voltage, current and temperature
  • Controlling the charge and discharge MOSFETs
  • Balancing the cells
  • Estimating the remaining charge with coulomb counting
  • Recording battery data and reporting protection faults
  • Turning the output off after it has been idle
  • Sending data and receiving commands over Bluetooth Low Energy

iOS app

The iOS app is written in SwiftUI and connects directly to the power bank over Bluetooth:

Enclosure

The case and the internal holders are modeled in Fusion360 and 3D printed out of PETG for some extra heat resistance.

This article was updated on July 5, 2026