Overview

We will be building a 100Ah LiFePO4 battery using cell modules we purchased from BatteryHookup.com. 


Parts


Modules

These modules were built specifically to handle up to 100a (1c) charge and discharge continuous. Standard lithium ion capacity tests are done at 0.2c which would be 20a continuous. The cells can handle up to 3c but the nickel and wiring was sized to handle 1c loads which is realistically where you want to be. 



NOMINAL VOLTAGE3.2V
CAPACITY100ah (105ah+ is being reported by customers)
WATT HOURS320
FULLY CHARGED VOLTAGE3.65V
FULLY DISCHARGED VOLTAGE2.5V
MAX CONTINUOUS CHARGE100A (1C)
MAX CONTINUOUS DISCHARGE100A (1C)
MAX PULSE DISCHARGE (10 SECONDS)200A (2C)
MODULE WEIGHT6.5 lbs
MODULE DIMENSION7.5" X 5.5" X 3"


BMS

LiFePO4 4S 100a BMS W/ LOW TEMP CUTOFF

Connections

Specifications


ManufacturerXiaoxiang
ModelSP04S020A
Configuration4S 100A
ChemistryLifepo4 3.2V
ConfigurationCommon port with balance
Part Number16270007

Settings

Overcharge Voltage per Cell3.65
Over Discharge Voltage per Cell2.5
Discharge Continuous Amps100A
10 second Discharge Burst200A
Charge Continuous Amps60A
Balancing Current60mA
Low temp cutoff32° F (0° C)
High temp cutoff167° F (75° C)


Bluetooth Module

The Bluetooth module is an optional accessory that may be used to configure and monitor the BMS.


To use, simply plug the 4-pin connector into the BMS. The BMS must be connected to the battery, with the balance lead connected in order for the Bluetooth module to operate.

Note that other Bluetooth modules are not compatible.

For best reception, mount the module high, ideally away from metal. Do not mount it inside of a metal enclosure. The Bluetooth module may be left connected to the BMS for long periods of time. It will go into a deep sleep mode when not in use.


Software (Requires Bluetooth Module)

XiaoXang BMS

https://apps.apple.com/us/app/xiaoxiang-bms/id1375405426


Big Battery

https://apps.apple.com/us/app/bigbattery-com/id1576090574


XiaoXiang Electric

https://apps.apple.com/th/app/xiaoxiangelectric/id1576622653



Build


Battery Case

MeasurementWidth/Length/Height
Battery Cell 7.5" X 3" x 5.5"
Battery Cells x 4 7.5" X 12" x 5.5"
Selected Box(Exterior)7.7" x 15.4" x 10.2"
Selected Box(Interior)7" x ?


We couldn't find a box with the ideal interior dimension of 7.5" x 12", so we went with this bigger ammo box and placed the cells on their sides.



Cell Top Balancing

In order to ensure we get the max capacity out of our new battery, we need to top balance the cells.

See https://www.youtube.com/watch?v=x5ABvbbics8


Charge the battery in it's 4S configuration and then disassemble.

Connect all cells together in parallel and charge at 3.65v until very little current is flowing into the batteries. 

Build Pictures

BMS Configuration


Total Cycle Capacity = your measured capacity.


Capacity Configuration

SoCPack Voltage (≈ 4 cells)Per-Cell Voltage (rested)What I hadNotes
100 % (just after charge)14.4 – 14.6 V3.60 – 3.65 V3.500“Surface charge” voltage that will settle to ~13.6 V after resting
100 % (rested)13.6 V3.40 V3.350Fully charged and rested
90 %13.4 V3.35 V3.330Nearly topped off
80 %13.3 V3.33 V3.329Approaching full
70 %13.2 V3.30 V3.325
60 %13.1 V3.28 V3.306
50 %13.0 V3.25 V3.301Mid-flat plateau
40 %13.0 V3.25 V3.291
30 %12.9 V3.23 V3.280
20 %12.8 V3.20 V3.266Low end of normal range
10 %12.0 V3.00 V3.220Very low, nearly empty
0 %10.0 V2.50 V2.500Absolute minimum – most BMS will cut off here


Balancer Configuration

SpecVoltage(mV)
Start Voltage 3450
Delta to Balace15


Suggested Protections

ProtectionPer-cell trip → reset12 V pack (4s) trip → resetNotes
Over-voltage (OVP)3.65–3.70 V → 3.40–3.45 V14.6–14.8 V → 13.6–13.8 VTrip at top of charge; release after surface charge bleeds.
Under-voltage (UVP)2.50–2.80 V → 2.90–3.00 V10.0–11.2 V → 11.6–12.0 VGive yourself margin; don’t run into UVP in normal use.
Cell balancing start≈3.45–3.50 V≈13.8–14.0 VPassive bleed typically 30–200 mA near top-charge.


Voltage Protection

SpecTrigger (mv)Release(mv)Delay(s)
Cell Over Voltage365035002
Cell under Voltage250028002
Battery Over Voltage 14600140002
Battery Under Voltage10000112002


Current Protection

SpecTrigger(mA)Release (s)Delay(s)
Charge Over Current1000003210
Discharge Over Current1000003210


Temp Protection 

SpecTrigger(*C)Release (*C)Delay(s)
Charge Over Temp65552
Charge Under Temp-152
Discharge Over Temp75702
Discharge Under Temp-1002




Capacity Tests

Capacity Test - 2022 (New)

Battery Tests @ 10A Load

BatteryCapacity Ah
1112 Ah
295 Ah
2 (After Top Balancing)118 Ah


Capacity Test - Oct 2025

Battery 1 Cell Capacity

This test was done after top balancing the cells.

Cell1234Avg
Capacity108.1107.6103.9107.5106.8


Battery 2 Cell Capacity

This test was done after top balancing the cells.

Cell1234Avg
Capacity107.4105.9106.0108.2106.9


Battery Re-Config

Battery 1

Cell1234Avg
Capacity108.1107.6108.2107.5107.9

Battery 2

Cell1234Avg
Capacity107.4105.9106.0103.9105.8


BatteryCapacity Ah
1110.4 Ah
2106.7 Ah


Cost Breakdown

I ordered enough to build 3 batteries in order to save on shipping.

ItemCostCurrencyExchange RateCA$

4 x 3.2V 100ah MODULES

$240.00 US - 5% Discount

$228.00US 0.750410380676933$303.83

Smart BMS

$74.99.00 US - 5% Discount

$71.24US0.750410380676933$94.93
Shipping ($68.35/3)$22.78US0.750410380676933$30.35
Duty ($145.41/3)$48.47CA-$48.47
My USAddress ($12.00/3)$4.00US0.750410380676933$5.33
Bluetooth Module$10.16 CA-$10.16 
Power Junction Post ($48.96/3)$16.32CA-$16.32




$509.39


Other Costs

ItemCostCurrency Exchange CA$
Ammo Box ($16.99 + HST)$19.19CA-$19.19
5x 5/16" Ring Terminal



10 AWG Red Wire



10 AWG Black Wire



Solder-


Strap$3.00


Heat Shrink Tubing



5/16 Nuts and Bolts



Zip Ties



Duct Tape



Total




Appendix

BMS Protocol

Command

Response

Baud Rate: 9600 bps


Sample - Read Info

Command

StartBitRead/WriteCommandLengthDataChecksumStopBit
DDA50300-FF FD77


Checksum Calculation =  (Command + Length + Data) XOR 0xFFFF + 1

= (0x03 + 0x00) XOR 0xFFFF + 1

= 0xFFFD


Response

StartBitCommandStatusLengthDataChecksumStopBit
DD03001B

17 00 00 00 02 D0 03 E8 00 00 20 78 00 00 00 00 00 00 10 48 03 0F 02 0B 76 0B 82

FB FF77


Checksum Calculation =  (Status + Length + Data) XOR 0xFFFF + 1

= 0x00 + 0x1B + data[] XOR 0xFFFF +1

= 0x0401 XOR 0xFFF + 1

= 0xFBFE + 1

= 0xFBFF


References