The Ill-Advised 1kWh LiFePO4 1U Rack Mount Battery 3S1P 105Ah

rsaeon

Patron
Actual capacity would probably be closer to 960Wh with these used 'C' grade cells but 1kWh sounds catchy. I'll be making a top-balancing BMS using Tasmota for this.

The entire premise of the project is ill-advised because we'd be dealing with large amounts of current since it's only a 3S pack and I'd like to build this to provide at least 500W for future expandability.

After a teardown that revealed 15 cells, and a purchase of 4 additional cells, I have 3 left over cells that'll be perfect to turn into a 3S pack that'll power simpler loads in my currently empty rack. Add in a charger and this becomes a DC UPS that'll keep my adblock running for weeks, ha.

My first flow chart in over three decades:

battery.jpg

Some of the things I've gathered so far:

photo_2024-07-02 16.21.52.jpeg

The cells will be encapsulated in 2mm G10 FR4 resin fiberglass sheets and 2mm stainless steel.

With a cell height of 36mm plus 2mm on each side for the fiberglass plus another 2mm for the stainless steel on both sides, the total height comes up to 44mm which is just shy of the 45-something-mm height of 1U.

The two SMPS will be connected in series, they're 5V 60A each — so that's going to limit maximum power draw by itself to 600W. I wouldn't be loading more than 500W on this anyway so that leaves 100W left over for charging the cells after a power outage. Realistically, I don't expect to have anything over 200W connected to this.

But first, I'm going to make a Micro-Ohm Meter to make sure I have good connections since this is dealing with higher currents than I'm used to — that'll be a separate thread, I just finished building a prototype.

Budget is, as usual, very restricted (about 1k per week) so this'll take a while.
 
Can you simply measure low resistance values just by hooking up a set of leads?
Looking at a bridge circuit itself gave me a headache so i just gave up ( i wanted to measure iem cable impedances)
 
Can you simply measure low resistance values just by hooking up a set of leads?
Looking at a bridge circuit itself gave me a headache so i just gave up ( i wanted to measure iem cable impedances)

I'm not sure how practical it would be to measure micro-ohms with wheatstone/resistance bridges, it kind of feels like ancient folklore when we have micro controllers and ADC's:

 
Last edited:
I'm not sure how practical it would be to measure micro-ohms with wheatstone/resistance bridges, it kind of feels like ancient folklore when we have micro controllers and ADC's:

You don’t need Arduinos for that.
Measuring just the voltage drop over a bridge is adequate and more for a fairly precise measurement. Have donethis quite a few times for random DIY projects and can confirm the accuracy of the method
 
Update time! I got three screens working!


So far I've got seven I2C devices connected to a single ESP8266, apart from the screen (three temperature sensors, four voltage sensors). From the video description:

This is a proof-of-concept of a very much ill-advised 1kWh 3S LiFePO4 1U rack-mount DC UPS.

Processing and logging is done server-side with self-hosted installs of MQTT, Node-RED & InfluxDB. All stats except uptime are randomly generated in this demonstration. Screen update is through MQTT every 10 seconds here, it would actually be 30 seconds in use.

An ESP8266 module is running a custom compiled version of Tasmota with UFS, uDisplay, ramfont, INA219 and MCP9808 support.

This module is connected to four INA219 modules, one for each LFP cell, one for the charger. Energy in and out of the cells is logged with a PZEM-017. Only one of the INA219 is used for current monitoring, that's the one connected to the charger with a 100A shunt.

Charger is two series connected 5V 350W meanwell units, with the trimpot of one replaced by several digital pots wired in parallel with each other. The digital pots are controlled with two GPIO pins for pseudo constant-current control.

There's also three MCP9808 temperature sensors to monitor the temperatures of the power resistors during balancing. The bright green leds flashing here indicate balancing is active for a particular cell, balancing is run for 5 seconds here, it would actually be 30 seconds in use. Balancing is immediately halted in this video if the temperatures rise over 75 celsius (tentative threshold).

Three displays are connected using a 3-to-8 analog multiplexer, the 74HC4051, which multiplexes the SCL line. Unlike LCD displays, there is no special initialization required for these OLEDs. Each display is selected by binary with prefixing Power1 X; Power2 X commands before DisplayText. Displays are selected at random here for demonstration purposes.

GPIOs:
0,16 — to the multiplexer
1,3 — RX/TX to the PZEM
4,5 — I2C for the displays & sensors
12,13,14 — to LR7843 mosfet modules for battery balancing
2,15 — to the digital pot

For larger battery packs, each ESP8226 will be monitoring and balancing 4 cells (with four temperature sensors, four voltage sensors and four mosfets connected to power resistors). Control is server-side but not server-reliant: Tasmota rules can be used for balancing when the server is unreachable.

This was inspired by ‪@StuartPittaway‬'s DIY BMS.

Now to take a break from this and go for a long walk.

You don’t need Arduinos for that.
Measuring just the voltage drop over a bridge is adequate and more for a fairly precise measurement. Have donethis quite a few times for random DIY projects and can confirm the accuracy of the method

I didn't think wheatstone bridges would've been practical for measuring micro-ohms — sounds like I would need a very precise multimeter? The ADC was just a few hundred, ha.
 
Last edited:
I designed a couple of panels and and got them laser cut in 3mm black acrylic to mount the various modules:

photo_2024-09-15 00.49.38.jpeg



I used 5mm brass spacers here with M3 x 5mm screws, 6mm spacers would've been better because I wouldn't have needed the nylon washers that you see:

photo_2024-09-15 00.49.40.jpeg

These DFRobot I2C hubs help keeps wiring tidy and allows for a point to point connection with every pin on all of the modules I'm using without having to solder wires and/or splices.



All put together, It feels satisfyingly dense and expensive. Probably because of the brass.

photo_2024-09-15 00.49.42.jpeg



The displays still work even after I dropped one and chipped the glass of another:

photo_2024-09-15 00.49.44.jpeg
 
This NH 00/000 fuse holder is intimidating, but necessary (70mm bus bar for scale):

photo_2024-09-20 14.22.52.jpeg




I'll be using this 80A fuse (it's rated for 250V DC):


photo_2024-09-20 14.22.53.jpeg

I don't plan on having loads more than 50A and the charger is rated for 60A so 80A sounds like it makes sense in case there's a short/fault somewhere.



I needed to figure out a way to flush-mount this fuse holder and the 125A 22mm MCB to the 45mm 1U front panel. This looks like a good idea:




So I designed a couple of panels to be laser cut from 1mm stainless steel:

photo_2024-09-20 14.22.54.jpeg

The cuts along the bend lines are to make bending easy, they're 3mm wide.



A vise made bending the flanges easier:

photo_2024-09-20 14.22.55.jpeg



This one is ready to be flush mounted:

photo_2024-09-20 14.22.57.jpeg

photo_2024-09-20 14.22.59.jpeg

This breaker can't do any breaking, it's just an isolator. So I'll be using it as a power switch to disconnect the cells if and when the fuse needs replacing, hopefully it won't ever.



This safety stuff is expensive, the fuse and holder were around 1k and these laser cut panels were about 600 together.

I'm re-using the isolator from the MuscleGrid battery, but they run for around Rs 700 each.

But I'm expecting a 10 year life out of this so it's probably worth it.
 
Back
Top