DIY Electric Car Forums banner

BMS design guidelines

61160 Views 137 Replies 19 Participants Last post by  [email protected]
I think this forum is still lacking a definite thread for guidelines designing a BMS, whether commercial or just DIY for one's own use.

I was replying to but thought it would be off-topic, hence this new thread. So here's what I was going to reply...

BMS is simple as hell. Don't overengineer it.

IMHO, think about redistributive balancing only if you are going to mix variety of cells with varying specifications or quality.

Do a careful top-balance manually; let the BMS shunting take care of minor imbalance caused by self discharge and peukert effects, which are both almost nonexistent in all li-ion.

Recovering shunting energy is easy, I have built some prototypes (of bi-directional flyback transformer construction), but still, the amount of energy wasted there is so tiny... Does it make sense to do active balancing when using new, identical li-ion cells?

I would consider pointing all design efforts towards reliability, and key to reliability is in simplicity and careful consideration of all possible use & misuse cases. Look at the MiniBMS; they have a long thread on this forum where they share the schematic. It's important to take a look at how they solve design challenges for maximum simplicity, reliability and minimum cost in mind.

IMO, one MCU per cell is a good idea. Pick an MCU that has an integrated temperature sensor and you get an extra feature for free.


- Low voltage shutdown for motor controller
- High voltage shutdown for charger
- Low voltage shutdown for charger (do not allow charging damaged cells). This is especially important for LiCoO2.
- High temperature shutdown for both motor & charger
- Low temperature charging disable/limiter (jeffcoat)
- Error & statistics reporting

- Make sure that no error condition such as
- full battery pack voltage over the cell module terminals
- short circuit on cell module
would cause excessive heat on the module,

- Make sure ALL error conditions cause shutdown for motor controller and charger.

- Add DC rated fuse
- make sure that it will blow before the shunt MOSFET & resistor get too hot in case of latch-on fault.

- For any problem you are going to solve by adding a new feature, make sure this problem really exists, measure and analyze it.

I'm thinking about compiling a small guide or "FAQ" on BMS design points. So any additions to this list are very welcome. I'll start by editing this list to add new points.
See less See more
1 - 20 of 138 Posts
How about a low temperature shutdown for charging (at least as an option) - do not allow the charger to activate when temp is below 32F.
Have you taken a peak at this:

Click on "search inside book" on the left under the picture of the book. Some great info. Goes over all the different designs. Sitting on my shelf if you want me to look anything up for ya.

How about a low temperature shutdown for charging (at least as an option) - do not allow the charger to activate when temp is below 32F.
Having the charger on at a low current at that low temperature could actually keep the batteries from freezing.
Have you taken a peak at this:

Click on "search inside book" on the left under the picture of the book. Some great info. Goes over all the different designs. Sitting on my shelf if you want me to look anything up for ya.
Yeah, I have taken a peak inside; it looks excellent. Have been thinking about buying it.

Having the charger on at a low current at that low temperature could actually keep the batteries from freezing.
Maybe, at least until they are full at which point you cannot charge anymore.

The "problem" is, lithium has way too "good" efficiency to do this well enough, and the efficiency is higher the lower the current is. Also, once it's full you cannot trickle charge it (or yes you can by using 100% SOC OCV, but it won't generate heat then).

For cold areas, a combination of battery insulation and battery heater is the only way. Good insulation should be enough for daily use, but the heater should be there in case the car is left for a few days sitting in cold with emptyish battery pack.

Oh, it's off-topic again :D.
Yeah, I have taken a peak inside; it looks excellent. Have been thinking about buying it.
I highly recommend it. Basically reconfirmed everything I learned when I helped build/design some different BMS devices for a local Portland company.

Maybe, at least until they are full at which point you cannot charge anymore.
Yes, but if it's that cold, you know that it's cold well before and you can shut off the charger/turn it back on/turn off/turn on in anticipation. Eventually, you're right, but I don't think low temp should stop charging, it should continue it as long as it can.
Thanks for starting this thread. The book on Amazon looks very good, and I see that the author is Davide Andrea of Elithion LLC. Having a comprehensive book such as this can be valuable, although in the electronics field the material can quickly become outdated. How much has changed since 2010, when it was published? And it was probably mostly written in 2008-2009.

Another good source of information is companies who make batteries and those who offer ICs for various aspects of battery management. Some such sources are: (Elithion)

I have several ideas which may be realized as separate designs or combined into a complete system
  1. A simple single cell monitor which presents a minimal current drain (10-100 uA) and flashes one or more LEDs showing SOC based on cell voltage from 2V to 5V. Target cost < $5/cell.
  2. Single cell monitor and charge/discharge controller. Flashing LEDs for indication of SOC. Bypass charge current upon maximum voltage. Isolated signal to charger to taper off charge and shut down when all cells fully charged and balanced. Open cell detection and protection: For charging by shunting charge current and sending shutoff signal to charger. For discharging avoid cell reversal by detecting low voltage and activating bypass circuit, and/or using power diode, and sending shutoff signal to controller and main interlock. Target cost < $10/cell.
  3. Single cell analyzer, which can perform a pre-programmed sequence of charging and discharging at various rates and store data or send to PC via USB connection for further analysis. Test profile can also be changed and controlled by USB. Target cost $50-$200 depending on cell A-h rating and complexity of software.
  4. Integrated modular battery pack for small cylindrical cells. Package 12 cells in series for 38.4V Li-Ion or 44.4V LiFePO4. Internal relay disconnects module under internal fault conditions, and requires external 12V signal to activate. Eight modules in series supplies 307V or 355V for 230 VAC VFD, or 15 in series for 576V or 666V for 460 VAC VFD. Modules may be connected in series or parallel for various voltage and current capacity.
Those are my ideas at this time. I want to do some testing on the inexpensive Li-Ion 18650 cells I found, as well as the NiMH which may be a viable alternative. Another version of these devices could be made for 12V SLAs and Flooded Lead batteries. My particular immediate interest is for use in small vehicles such as lawn tractors, wheelchairs, ATVs, and bikes, but may be scaled up for larger lithium cells of 20-100+ Ah capacity for road vehicles such as cars and trucks. I am focusing on standard industrial 3 phase motors so the battery pack voltage will be 300-600 VDC nominal, and 2-5 HP motors drawing 3 to 10 amps where one or two strings of 3600 Ah cells would be sufficient.
See less See more
Here is a very simple and cheap single cell BMS which uses only about $3 in components and can be adjusted to limit charge to any voltage from about 3V to 4.5V. Here it is set to 3.62 volts.

The functionality of the circuit could be replicated with much higher accuracy using a small PIC, with little difference in cost, and it can have a better SOC indicator and shutdown signal. The ASC file for this design is available at:
See less See more
Consider what will happen to your $5 BMS if the cell it is connected to goes open circuit, either from internal failure, or because one of the terminal bolts loosened up...

To protect against this all-too-common failure mode requires adding either a blocking diode or a DC fuse capable of withstanding the full pack voltage. Both solutions are sub-optimal: the diode will result in a temperature and current dependent offset in the cell voltage while HV DC fuses are big and expensive.
Tesseract - is that not a problem with pretty much any of the commonly used BMS?

Do you have a better solution?

I guess you could use small PTC heater elements instead of the shunt resistors. They will get up to a pre-defined temperature and only sink the current required to maintain it. So even with the full pack voltage across it, the current is controlled and they will not spontaneously combust like a resistor!

For the simple circuit I show above, during charging, if a cell opens up, the voltage is held at about 4 volts and the shunt resistor and MOSFET draw up to 20A. This voltage would be maintained as long as the charger were properly current limited, and of course this would be a fault condition which would be detected by the BMS (assuming it uses a PIC or other processor), and it would signal the charger to disconnect within 100 mSec or so.

In the case of a 150V pack with a 1 ohm (150A) load, the MOSFET reverse diode would conduct, and the 0.2 ohm shunt resistor would limit the current to 130 amps and there would be -27V across the cell BMS. The resistor would dissipate 3000 watts and the MOSFET would see 143 watts. But it would be easy to add an optoisolator so that any reverse voltage would turn it on and send a signal to the main interlock contactor to shut down. This would happen as soon as the voltage reached about -3V, at which point the shunt resistor saw about 12 amps which would be 28 watts, and the MOSFET would see 9 watts. If the cell opened gradually (as in 100 mSec or so), the voltage would rise slowly enough for the fault protection circuitry to shut down the pack before severe damage (or any danage) would occur.

Another safeguard would be a TVS diode across each cell that would limit the voltage to 6 volts or so. Here is a 3000W TVS that can withstand a pulse current of 326 amps and costs less than $1.

Or a 5000W version that can handle over 500A for about $2 in quantity:

A 3.5 volt version may be better:

What happens when a cell opens without any BMS or other form of protection? Or with a commercially available BMS?
See less See more
Tesseract - is that not a problem with pretty much any of the commonly used BMS?

Do you have a better solution?
No I don't have a better solution, and I consider this problem to be intractable when real-world economics are factored in. That is to say, it can't be solved without costing more money than consumers are willing to pay.

I guess you could use small PTC heater elements instead of the shunt resistors.... i
Nope. The PTC resistor has to be rated for the full pack voltage.
Perhaps a 5.1 volt zener and a fuse could handle both open circuit and short circuit. The zener would be in parallel with the reg and the the fuse would be in series those. In the event of an open cell while driving the zener would conduct for only a fraction of a second, but a longer fraction of a second than the fuse would remain intact. In the event of a open circuit while charging the diode would conduct at about 1 volt and the fuse blow. Here is an idea for the fuse. It gets trickier to find a inexpensive fuse with a higher DC voltage rating as the desired current gets higher. Very little shunt current should be required if you start with a top balanced pack.
The only way I can see to protect against an open cell is to detect it quickly and shut down the charger or the pack main contactor if it opens while the vehicle is operating. For the small battery packs that I am considering for tractors and such, with pack "modules" of perhaps 12 cells in series, it would be fairly easy to use a wired-OR configuration of optoisolators which would turn on in the case of an overvoltage event due to opening of any single cell, and it could trip a relay that would disconnect the entire module. My idea is to require an external 12V (or higher) signal to activate the pack, and it could even latch on using the pack voltage to keep it closed. It would draw some current from the pack, but a relay with a 24 VDC coil with contacts rated at 30 amps has a coil resistance of 660 ohms for 36 mA and probably can be held in using a PWM circuit with about 10 mA, which would be less than 1% reduction of capacity for a pack rated at 3600 mA or higher.

This particular relay costs about $2 in quantity and can switch 30A at 28VDC or 240 VAC. Since the pack will have a BMS with 11 good batteries at 3.3V each and one open cell with a reverse voltage of -6V or less, the relay would actually only switch about 28VDC, especially if there were more than one series string in the battery pack. This would isolate the string and allow the others to provide enough continued capacity to operate the vehicle at reduced power.

Another way to handle an open cell would be for the relay to be an SPDT type which would open the path to the defective cell and shunt the rest of the current, which would just diminish the pack voltage by 3 volts or so. For a 150V pack with multiple strings in parallel this would only be a loss of 2% of full pack voltage and the current draw would still be fairly well balanced. If the packs were isolated with high current Schottky rectifiers it would avoid the problem of the higher voltage pack trying to charge the lower voltage pack, but unless the cells were fully charged it would probably soon balance itself even without diodes.

BTW, the fuse you suggest is only rated up to 5 amps, and costs about $3, which is more than the 30A relay I mention:
I just found this resource that seems rather comprehensive and worthwhile looking at. I found it when searching for "open cell protection lithium battery pack EV".

Some other links with useful info: (Lithium-Air cells) (testing) (also many other topics) (costs) (Elithion BMS) (thermal issues) (power and thermal)

and the list goes on. There is a huge amount of information out there, but really not very much specifically addressing the problem of open cell failure. :eek:
See less See more
BTW, the fuse you suggest is only rated up to 5 amps, and costs about $3, which is more than the 30A relay I mention:
You shouldn't need to bypass much current. I have seen no need to bypass more than 1/2 amp (EVpower regs) with a pre-balanced pack. I was eying a 2 amp fuse for about a 1.5 amp shunt.

What impressed me about the fuse I listed was the DC interrupt rating. Up to 450 volts DC with up to a 5900 amp interrupt. They where listed for $2.17 each at Digi-Key. If an inexpensive zener that will hold on longer than the fuse is available it would be a few extra dollars a cell.

There have been some BMS systems that drain a cell dead without warning if subjected to brief reversals or over-voltage conditions. I was thinking in terms of shutting the cell module down dead so so the monitoring loop would throw an error. There may be simpler, even passive, to provide that kind of protection against over voltage and reverse voltage.
I think the 1/2 amp bypass specification is only for charge equalization, where it removes, say, 5% of total charge current of 10 amps until other cells with greater capacity reach maximum SOC. But if a cell opens, with a constant current source, there will be a voltage imposed on the open cell which will be the full charger compliance voltage less the voltage of the intact cells. So a battery charger which uses a 170 VDC peak voltage (from a 120 VAC rectified line voltage), on a 120V nominal pack with 38 cells at 3.2V each, will have 170-(37*3.2) = 51.6V applied to it. If the rest of the pack cells have internal resistance of 0.05 ohms (probably much less), it only takes 20*1.9 = 38 VDC to maintain a 10 amp charge.

The situation is much more dire in the case of discharge during maximum current draw, where the entire remaining pack voltage can be applied to the open cell, and the inductance of the motor could generate a much higher voltage. So it is important to have a fast passive means to maintain continuity of the circuit during fault conditions, long enough for a secondary means of shutdown can be activated.

As I explained before, having multiple strings of cells in parallel eliminates most of the problem by providing auxiliary paths for the current, and a simple disconnect of a defective string, or bypass of an open cell, can permit continued use of the EV until the defective cell can be replaced.
See less See more
the balance circuit that i have passes a certain % of current based on how unbalanced that cell is from the rest of the pack. costs about $1 - $1.50 per cell if the parts are bought in bulk.

so PStechpaul is talking about passing current when the max voltage has been reached? or just a maximum safety voltage thingy?

And dont tell me that the mainstream dc motors that we DIY's buy dont have feedback protection? (as PStechpaul metions above)
... Here is an idea for the fuse....
The Cooper Bussmann BK-PCx series fuses are a pretty good choice here, with the caveat that low amperage fuses tend to fail early from vibration/fatigue in automotive applications.

Aside from that, the only real problem is that they are relatively expensive, ranging in price from $1.55 to $6.10 each in 100s. Hence my earlier comment about there being no solution to the open-cell failure problem which is economically viable.

In the end, the least expensive and most reliable way to protect a non-balancing BMS (ie - one that only monitors cell voltage) is with a series diode rated for more than the full pack voltage, accepting that the forward voltage drop of the diode will vary with temperature (and current, hence why I say to only use it with a BMonS) and that variation can only be partially compensated for in software (or hardware, if you are into a strictly analog solution).
I have made an initial design of a single cell BMS system:

It has a shunt MOSFET and a 0.47 ohm power resistor which is designed to limit charging voltage to a voltage determined by the PIC, and it can shunt up to 7 amps before the voltage will climb above 3.3 volts. The top balance voltage can be programmed to anything from 3V to 4.5V, and at that point it will start shunting the charge current and also will activate the optoisolator which can shut down the charger. It is possible to connect the optoisolator outputs in series so that shutdown will occur only when all cells have been balanced, or if connected in parallel the first cell to reach maximum voltage will shut down the charge. There is also a visual indication from the red LED. :D

If a reverse voltage is applied, as may happen if a cell is depleted during discharge, the MOSFET reverse diode will conduct and the current will be shunted by the 0.47 ohm resistor. It will also activate the optoisolator which should be connected so as to shut down the pack. Of course, in normal operation, the PIC would sense a drop in cell voltage before reversal occurred, and it would flag the error and shut down. But in case of a sudden open circuit of a cell, it would also protect the system by limiting the voltage. :)

The green LED is used as a status indicator. It can be set up to flash at a variable rate to indicate battery voltage. Thus during charging it can show the progress as the voltage increases, or it can also use the time elapsed as a measure of SOC. This design does not have a current sensor, so it cannot comput Ah, but that is more a function of the charger. ;)

In the absense of charging current, the PIC is powered from the cell, and can provide a flashing green LED signal to indicate open circuit voltage. The PIC itself draws only about 25 uA when operating and as little as 20 nA standby. The LED is visible at current as low as 2 mA and it can have a duty cycle of 100 mSec/10 sec which is the equivalent of 20 uA. So an average draw of 50 uA on a 3 Ah battery would drain it to 90% capacity in 6000 hours. It could also be programmed to enter standby mode if the open cell voltage was less than, say, 2.8 volts, so it would not deplete the battery even after years of storage. :)

The total cost of this design is mostly the PIC ($0.50), MOSFET ($0.75), Optoisolator ($0.25), and power resistor ($0.50). The other components are mostly penny and nickle parts or maybe $0.25 total, and the PCB would be about $1 in 100pc quantity. So about $3.25 total. Of course this is designed for a small pack of 3-10 Ah capacity, but the design could be scaled up to handle 40-200 Ah cells. :cool:

This is still in its "infancy" so it may change as I dig into details. Also I have chosen the smallest and cheapest PIC I could find, just to see if it could work, and I have a couple of development boards using this part. A more capable part with more I/O pins would still be less than $1. I also need to deal with the problem of reading the cell voltage which will be the same as or greater than the supply voltage. A voltage divider would be the obvious answer, but the ADC requires a maximum source impedance of 10kohms, which would be 320 uA on a 3.2 volt cell. Probably still OK. But I could use an external MOSFET to connect the ground side of the divider only during measurement. Such things are part of the challenge and allure of electronic design. So please tell me any pros and cons of this circuit, and any features that might be desired. ;)

See less See more
1 - 20 of 138 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.