16s Relay BMS - 5A active balance for under $100

completelycharged

Active member
Joined
Mar 7, 2018
Messages
1,083
And now for something completely different.... queue monty python music.....

20210213-RelayBMS.png

This is a bit of a thought in progress and very open to all kinds of feedback, feedback including monty python quotes will be more highly rated...

Diagram is missing a current sensor...

Been thinking about BMS units for 2 years now and have been delaying adding a BMS (yep been running the battery back with no BMS for 2 years) but a solution is maybe now getting much clearer for me.

I was originally planning to go down an ESP route with an ESP per battery pack but it still had issues to deal with and was not going to be able to active balance, plus lacking some of the critical measurement functionality.

So, after browsing at parts for 2 years and forgeting and remembering things over that timeframe I think I have a solution, but it's a little more different.

Basically just a relay switched charger with a difference (or not so much aof a difference).

The idea is that the top right unit (RS485 ADC unit) measures 2 cell voltages in parallel and the key measurement is the voltage differential between the cells own voltages. i.e. if one cell is 3.10V and the other is 3.21V then the criticla measurement of interest is 0.11V. The absolute cell values are not too critical at this point and a relative reference.

The battery pack discharge or charge rate is then taken into account to corrrect some of the bias that a high charge or discharge may be introducing to the cell voltage differential.

Process would be to switch between all cells in the pack and measure all of the differences. This would then provide a full pack picture as to which cell is the lowest or which ones have the greatest imbalance.

Then the charger would be switched to those cells and charged (power supply buck in the bottom left corner is fuly isolated 36-72V buck) and the exact energy charge could then be measured and monitored. The CC CV buck (bottom right) would be set to 5A and 8.4V (to allow for both cells in parallel to be charged if needed) and that way the full picture as to what is going on with the pack can be catured.

My oiwn pack is 22s (LTO) so my cell voltages are a little different and would need 3 x 16 channel 3 x 8 channel relays to allow for cell switching.

Any thoughts as to why this could not work ?
 
Can you come out to play?

like your idea will be interested in seeing how this plays out.

Not quite in line with your thread and I don’t want to highjack it.

I’ve just purchased three of the same 16 relay boards. My plan is to use them with NTC thermistors to monitor individual pack temperatures and overall battery house temperature. Use the relays to switch fans below the packs to help with pack cooling during the summer months. I plan to use a couple of the relays to also switch main circulation fans lower down in the battery house to help move the air around and also to switch a small 40W heater for during the winter months. My battery house has been at minus Celsius for three days now and the BMS has shut the battery down. Today it has risen to 0.9C. The BMS triggers at 4C and releases at 2C. Not sure yet but I may lower the set-points slightly?

I just need to figure out how to connect the thermistors to the boards and tell it when to switch the fans on and off.
 
(Subtle as a brick)... Would have thought the DS18B20 route would have been a lot easier. Use OWFS (1 fire file system) in linux, wire 10+ at a time to a 1-Wire-USB adapter and read them out from the file system. You need to change the setting in OWFS to instigate a parallel ADC trigger otherwise the OWFS fails as it defaults to trigger-wait-read and given the length of the ADC time the whole thing runs out of time with about 10 devices on. I did experiment with this setup a few years back.
That said for the batteries I'm looking at some RS485 temperatrue sensors that have humidity in as well. £2.50 each so over 2.5x DS18B20. The humidity is one of the variables I would like to measure and detect sudden changes in addition to temperature. Only looking for around 4 sensors for the whole pack.

Yeah, well brass monkey out there as we would say at the moment (laughable to those from Alaska). I fortunately don't have the temperature issue for the batteries as they are LTO, the only temperature issue may be fire.

Humidity for the packs could turn out to be an unforseen issue of hidden corrosion as I have some stuff which ends up with loads of condensation on as the temperature rises suddenly... watch this weekend when the temperature picks up quickly.
 
Just had a thought, even more off thread, what about a chemical sensor to detect any electrolyte gassing from cells ?

Back on thread - looking to use a Juntek VAT-1030 for the current reading for the balancing energy. This streams out readings at about 10Hz over the RS485 port.
 
Dont over complicate. Have 1 or 2 fans for cooling the full area is enough. Same with sensors. :)

Instead of building bms with 100s of relays why not just go DIYBms or such? Relays arent cheap to run in terms of power :)
 
The thought about the relay option is that they will be off most of the time and more likely about 99% of the time. The balance current can then be relatively high and fully monitored per cell that is balanced. The balance charge can then also be applied to a group of cells together (those that are in series) so for example, say you have cells 4-5-6 that need balancing, they can all be charged as a set.

All just an idea at the moment.

The relay switching would also allow for a discharge option (pull up/down balancing) so that for 1 cell being out of balance your not then faced with balancing the rest of the pack to being that 1 cell back into balance. This thought is based on some of the active balancers that I have seen whcih use an overall isolated supply to charge only the lowest voltage cell in the pack.

DIYBms is along the lines of my initial thoughts, which was to have an ESP per cell (with micro boost unit) so they were completely isolated and all WiFi based. The issue for me was that I have 18 separate packs and 11 cells per pack, whcih would have needed over 100 ESP units. This is because I can and do take some packs away from the system for use at a remote site. I did start off playing with 10 ESP units together and then found out my wifi unit was rater dated old and could not cope with many Wifi channels in parallel !
 
DIYBms does not have an ESP per cell. They just have a small attiny. ESP is to power hungry for that ;)
 
(Subtle as a brick)... Would have thought the DS18B20 route would have been a lot easier. Use OWFS (1 fire file system) in linux, wire 10+ at a time to a 1-Wire-USB adapter and read them out from the file system. You need to change the setting in OWFS to instigate a parallel ADC trigger otherwise the OWFS fails as it defaults to trigger-wait-read and given the length of the ADC time the whole thing runs out of time with about 10 devices on. I did experiment with this setup a few years back.
That said for the batteries I'm looking at some RS485 temperatrue sensors that have humidity in as well. £2.50 each so over 2.5x DS18B20. The humidity is one of the variables I would like to measure and detect sudden changes in addition to temperature. Only looking for around 4 sensors for the whole pack.

Yeah, well brass monkey out there as we would say at the moment (laughable to those from Alaska). I fortunately don't have the temperature issue for the batteries as they are LTO, the only temperature issue may be fire.

Humidity for the packs could turn out to be an unforseen issue of hidden corrosion as I have some stuff which ends up with loads of condensation on as the temperature rises suddenly... watch this weekend when the temperature picks up quickly.

Thanks I’ll look at those other routes too. I like the sound of the RS485 temperature with humidity.
 
Dont over complicate. Have 1 or 2 fans for cooling the full area is enough. Same with sensors. :)

yeah my initial thought was just a couple of fans to aid air movement around the battery house for cooling in the summer and to assist a 40W radiant tube heater in the winter. I saw the relay boards going for next to nothing, I got the three for £6 and thought I’m sure I could find a use for them. 1st thought was for temperature control but now I’m thinking there may be other uses.
 
Just had a thought, even more off thread, what about a chemical sensor to detect any electrolyte gassing from cells ?
oh yeah now we’re talking, ultimate cell monitoring what else could we add?
 
"We interrupt this program to annoy you and make things generally more irritating."

Well, after a bit more thinking and not able to put it off any longer I ordered a bunch of parts.
Changed the plan a little... ordered parts for the system :
7 x 8 channel relay cards (ny setup is 22s : 22 points x 2 + extra)
Juntek 30A meter - current and voltage measurement option
2 x 32 channel digital IO boards - RS485
7 channel ADC RS485 board (experiment with for accuract as cheaper option)

The links are all aliexpress items as to what I orderd so check for pricing changes / shop around.... no affiliate links, etc.

12V buck board in this thread (fully isolated)

I went for the 8 channel relay boards because I figured that any accident would only vapourise or weld one or two boards.... and easier/cheaper to replace. Overall not much difference in pricing per connected relay.

The thought is to only switch one cell in at a time and then measure the cell voltage at top / bottom relative to overall pack voltage with the juntek (and in parallel just the cell with the separate ADC board). My original thought was to switch in 2 cells and measure them together as a cross reference, but the overall pack voltage / power levels will be known so as to rule out some variations that could occur during measurement.

The overall aim of this is periodic measurement, not 24 x 7 constant switching and checking the cell voltages every few seconds. The overall state of the pack will then be mapped an learnt per parallel cell pack and then used as the reference to then evaluate long term deviations. All energy balancing will also then be logged and tracked on a Wh/Joule basis so that the overall energy balancing requirement of the pack from (effective) day one will be known and be able to chart it.


To allow for better overall analysis and tracking of the system I have also ordered a 60A Daly BMS unit to get the cell voltage data out in parallel (yeah, cheating a little). This is hopefully going to be the LTO voltage level model and I will hopefully only see unloaded cell voltage ranges of 2.05V through 2.45V.

Temperature monitoring when I get around to the 8266 and the 1-wire DS18B20's that have been in a tin for 2 years...

The plan is to release the code here as well.
 
So whats your total price as of today without coding with what you bought now? Just wanted to see how it stays if you went with DIYBms instead? :)
 
I really like the approach and design of DIYBms, but not for me...

Total cost so far is (including local 20% tax/VAT) for 22s pack for development and test setup :

7 x Relay cards = £29.68 (only need 4 for 16s)
2 x 32 Channel IO = £26.93 (only need 1 for 16s)
7 Channel ADC = £6.56
Total (excluding buck) £63.73

There are other components to add in, like a £3 5A buck, 12V isolated buck £5, glass fuses, wire and RS485 adapters 2 x £2.

This is the costing for 22s and Im wiring it with more flexibility to test with than an absolute minimum setup (2 extra relay cards for 22s and 1 extra IO card for switching options and testing with 22s).

The relay switching could be wired to just 16 IO channels for 16s system with splitter diodes (1 channel to switch 2 relays for a cell).

With a minimal setup the relays and control end up closer to £35 for 16s...

The Juntek 30A meter I ordered is not really needed and will use a resistor divider and shunt attached to the ADC board as a much cheaper solution to measure the cell (cell and relative) voltage and balance current. The Juntek will get re-used for another project after testing (wind turbine output monitoring).
 
IO Boards arrived...

Throwing some ideas around... single ESP8266 16s balancer...

Looking at some of the parts on Aliexpress and starting to realise that the component cost can be reduced, a lot...

Use an ESP8266 as the base controller.

Use 6 IO pins to switch the 16 relay channels on/off with a 16 channel multiplexer (add small diodes inline - each pin goes to two relays, effectively creating a DP relay). The multiplexer "partly" prevents two relays being switched at the same time but a few mS delay between enabling is still needed to allow the mechanical parts to move.... main point is this reduces the number of IO pins needed to switch the relays.

Which switch one pair (1 on each card) 2 x 16 channel relay cards to the cells (might need pull-up or pull-down resistors)

Feed this with the isolated 12V buck in the previous post and feed the serial data back into the 8266 to get the balance energy and cell voltage.
I think this is the cheapest buck unit I have ever seen which has serial data output.

Use a voltage divider and feed the cell output voltage to the ADC on the 8266 to get the connected cell voltage wiithin the pack (3-56V).
 
Back
Top