Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

BMS Balancing - Current Understanding

This site may earn commission on affiliate links.
There was a massive thread that contains a lot of arguing about range and capacity calculations which I don't want to resurrect here. I'm not linking for reference so it doesn't get thread-necro'd! It has been dead for a few years now... ;)

The information below was from page 57 of that thread and spoke to the process the BMS/BMBs use to balance bricks inside our packs. I'm curious if there have been any updates in the last few years about how the BMS balances packs in the S/X using the bleed resistors? What is the current understanding and best practices? wk057 posted this in that thread on 4/21/19:

Worth an update here.

Tesla has changed the balancing algorithm many many times over the years. Originally this was a very dumb setup that would only kick in once a cell group reached a threshold voltage, usually around 90-93% SoC. This is no longer the case.

First, let me point out that Tesla's BMS software has come a LONG way... I'd consider it a work of art now. Lots of genius in there. It's absolutely amazing and full kudos where kudos are due here.

One thing they're now able to do is to calculate out the capacity of individual bricks of cells (96 in the 85/90/100, 84 in the rest) based on a ton of factors and compute this in near real time, in a full range of conditions, with almost magical accuracy. They're basically running physics simulations (similar to how they calculate out unmeasurable metrics in the inverter firmware, like rotor temperature) of the entire pack based on measured power usage/charge, balancer usage, temperature, temperature delta based on coolant flow and coolant temp, predicting temperature gradients, and probably 100 more variables. This is the holy grail of proper balancing for safety and longevity for a battery pack. This is not a dumb system anymore by any means. Knowing the actual capacity of the individual bricks allows them to know exactly which ones need cell bleeders enabled, and for exactly how long. With this data, they can balance on the fly at any SoC, and just use top and bottom SoC windows for fine tuning, validation, and calibration.

The car balances all the time whenever its needed. It knows when a cell group will need balancing before it's even out of balance... which is really freaking weird when you think about it, especially if you're watching a playback of the pack balancing and voltages and see it engage a balancer on a cell group that doesn't look out of balance at all, and watch it fall completely in line still at the end of a charge or discharge cycle. It keeps track of which groups will need it, which wont, how long they'll need it, how much they've been balanced, etc.

It really is an epic setup now.

The short answer to the balancing question: It balances any time it needs to balance.

As for SoC shenanigans, yes getting closer to 100% or 0% will give it a chance to tune things better... but it's not needed anymore. Just charge like you need to, and drive.
 
Thanks for starting this thread, and not linking to places where people are suggesting extreme charging routines.

I don't have anything else to add, except the refresh MS does not seem to need any calibration or balancing, even after months of storage below 55%.
 
I'm starting to think there isn't much sorcery that we can focus - just let the car do its thing. I'm also glad this isn't filling up with speculation and anecdotes. If someone actually KNOWS the current logic/routine, I've love to hear it. Otherwise, please don't just share to keep it between 20 and 80 and avoid superchargers...
 
Agreed. Short of Jason or Sandy reverse engineering the current BMB firmware, there is nothing new we can discuss.

I will share that avoiding SuC is kinda pointless unless you are very good at avoiding Regen. The new cars can easily see over 100kw of Regen, and 40% of total energy into my pack is Regen currently.

There maybe other things we can glean from SMT, but not sure what they would be. CAC is not working anymore for me.
 
Good point on Regen continually 'working' the battery. The real reason to avoid superchargers is that it is cheaper to charge at home... unless you have SC01. Personally, I enjoy getting a quick 100 miles of range on the way home knowing that it is cutting into Tesla's bottom line just that tiny amount. The $2 I save on my own electric bill is just the icing on the cake!
 
I own an old Model S 2015.10 and have long assumed that even my old car balances 'all the time' but only when needed.
My assumption was based on this my ImBalance Versus SoC graph from SMT data:

1712655841529.png



The minimum ImBalance (of 20 mV) is on the GEOMEAN of my SoC window :)

One could wonder, why it is there not a 0 mV ImBalance somewhere? I guess that is because I have a 2% AmpereHourPerBrich ImBalance:

1712656028346.png


Maximum capacity would be with Top Balancing (as the overall pack voltage is higher), but as I rarely charge above 72% the BMS perhaps/potentially cannot figure out a better balancing.

Not having data for higher SoC's the BMS could optimize for the known SoC range. That could be overcharging bricks with CAC below Avg(CAC), but that would cause problems if the user suddenly charge to 100%, because the dump resistors - by far - cannot dump the voltage on the 'overcharged' weaker brickss, on which the voltage increases faster than on the larger capacity bricks :-(

Does anybody know the algorithm?

Side Note, I have ssen that some members here report ImBalance of only a few mV - my ImBalance is far greater, which i feared could be parasistic cells in one or two bricks. So I did SMT readouts of all Brick voltages over several days of Vampire Drain periods and all bricks loose approx the voltage that the Idle consumption cause - so no Parassitic cells (or im-measureable). Atteched graph shows on top Voltages and on Bottom, drop over period. It think it is pretty convincing that all Bricks six in each module has a lower Voltage, why woul dthat be?

1712657954584.png


I tend to conclude, that with a CAC ImBalance of 2% it makes sense to maintain a certain Voltage ImBalance (say up to 2% and 2% of 3.6V is 72 mV).

Any comments on whether this is likely or wishfull thinking?
 
Doesn't look like your car is balancing if there is still at least a 20mV imbalance.

I faced similar and wondered WTF was going on. In the end I tried a method from Reddit that said engineers from Tesla suggested charging to 100% and letting the car sit for at least 6 hours.

So I charged to 100%, unplugged, and let the car sit. I started at 28mV imbalance. After 6 hours it was down to around 20mV imbalance. I decided to leave it and could see the imbalance being corrected by around 1mV per hour. After 24 hours it was down to 4-6mV imbalance.

have long assumed that even my old car balances 'all the time'

I had also thought this due to posts by people in the past. Certainly when I got the car we knew to charge above 93% to trigger balancing. At some point people suggested it was no longer necessary and the car will balance all the time after updates to the BMS software.

But it doesn't seem to be true any more. Or maybe it's only true after the BMS has seen a full spread of ranges (including 100%) but after a while the data becomes stale and the BMS is unable to accurately balance. And then it needs a 100% charge to recalibrate.

Does anybody know the algorithm?

As far as I know the algorithm has changed over the years and uses data points from all over the charging range. However it does appear that you do need to charge into the 90-100% range periodically to keep things accurate.

The other thing I have learnt is that the car needs to sit for a while before the car will conduct readings. I've seen 45 minutes mentioned, so I'd leave the car alone for at least an hour.

i.e. Charging to 100% and driving away immediately isn't going to allow the BMS to get the values it needs. The car needs to sit for an hour.
 
  • Like
Reactions: jensk2
On a '15 MS 85D, I rarely went above 90%. The dozen or so times I did, including 3 times to 100%, I saw very little difference in capacity or RR, even comparing to 2 months storage at 50-60%.

At 65k miles when I sold it, I had 265 out of 270RM. I Forget the capacity per SMT, but think it was 75KwH.

I often had 20mv imbalance, and module 2, string 2 was always low.

Despite this, RR was highest on Teslafi for the model year and mileage.

On the '22, never been below 22 or above 88%. Despite this, my capacity has not suffered, despite 2 months storage at 55%. 93Kwh capacity after 14k miles, which is average, but my pack started out lower than most.4-8mv imbalance, can't get CAC since SMT does not report this on the newer cars.

I don't think it is ever necessary to cycle the battery to extremes to get greater BMS accuracy, if all it does is "add" a few miles of range. The few data points above and Tesla advice do not convince me otherwise.
 
Doesn't look like your car is balancing if there is still at least a 20mV imbalance.

I faced similar and wondered WTF was going on. In the end I tried a method from Reddit that said engineers from Tesla suggested charging to 100% and letting the car sit for at least 6 hours.

So I charged to 100%, unplugged, and let the car sit. I started at 28mV imbalance. After 6 hours it was down to around 20mV imbalance. I decided to leave it and could see the imbalance being corrected by around 1mV per hour. After 24 hours it was down to 4-6mV imbalance.



I had also thought this due to posts by people in the past. Certainly when I got the car we knew to charge above 93% to trigger balancing. At some point people suggested it was no longer necessary and the car will balance all the time after updates to the BMS software.

But it doesn't seem to be true any more. Or maybe it's only true after the BMS has seen a full spread of ranges (including 100%) but after a while the data becomes stale and the BMS is unable to accurately balance. And then it needs a 100% charge to recalibrate.



As far as I know the algorithm has changed over the years and uses data points from all over the charging range. However it does appear that you do need to charge into the 90-100% range periodically to keep things accurate.

The other thing I have learnt is that the car needs to sit for a while before the car will conduct readings. I've seen 45 minutes mentioned, so I'd leave the car alone for at least an hour.

i.e. Charging to 100% and driving away immediately isn't going to allow the BMS to get the values it needs. The car needs to sit for an hour.
so, do we balance on our own every other month or so, charge to 100% and let it sit for an hour
or assume Tesla amazing code, BMS, does all the necessary balancing on its own?
 
so, do we balance on our own every other month or so, charge to 100% and let it sit for an hour
or assume Tesla amazing code, BMS, does all the necessary balancing on its own?
If your capacity on Recurrent, SMT, or Teslafi is in the middle or upper portion of the fleet, just let the BMS do it's job.

If not, don't expect miracles by cycling the battery.
 
  • Like
Reactions: kpanda17
so, do we balance on our own every other month or so, charge to 100% and let it sit for an hour
or assume Tesla amazing code, BMS, does all the necessary balancing on its own?

Depends I guess. If you have CAN bus tools you can see when voltage imbalance starts to drift and the BMS is being ineffective balancing. Then you can do a 100% charge to re-calibrate the BMS.

If you don't have CAN bus monitoring then doing a 100% charge every couple of months would appear to keep things in check.

My last 100% charge was in late January. Just checked the car now and 6mV imbalance so things still looking good.
 
  • Like
Reactions: kpanda17
Depends I guess. If you have CAN bus tools you can see when voltage imbalance starts to drift and the BMS is being ineffective balancing. Then you can do a 100% charge to re-calibrate the BMS.

If you don't have CAN bus monitoring then doing a 100% charge every couple of months would appear to keep things in check.

My last 100% charge was in late January. Just checked the car now and 6mV imbalance so things still looking good.
so, do we balance on our own every other month or so, charge to 100% and let it sit for an hour
or assume Tesla amazing code, BMS, does all the necessary balancing on its own?

I tend to conclude, that with a CAC ImBalance of 2% it makes sense to maintain a certain Voltage ImBalance (say up to 2% and 2% of 3.6V is 72 mV).

Any comments on whether this is likely or wishfull thinking?

Thanks for the replies!

I know a little more now. I had a long trip planned for thursday (2 x 105 km at Danish Highway speeds of up to 130 kmph :)) so I decided to test my theory that the voltage imBalance was BMS Intentional and to correct CAC ImBalance.

So I charged to 100% (third time in the cars existance) AND waited untill it said 'Charge complete' instead of driving as soon as it hit 100%. After racing Danish highways (with consumption out at 239 Wh/km and home in the evening with 249 Wh/km) I returned with 22% SoC. My voltages (courtesy ScanMyTesla) are below (Top taken at 'Charging complete' and bottom 2 hours after parking car after returning).

1713598545919.png


If the Voltage ImBalance was to 'correct' for Calculated Amperage Houre ImBalance (CAC ImBalance) then an Ah weak brick would have too low voltage at bottom SoC (and possibly/likely too high Voltage at 100%, in case Tesla does not simply do Top Level Balancing, but 'Always Balancing')

But all bricks that are High in Voltage at 100% are as well high at low SoC and vice versa. That does not argue for CAC compensation in the Balancer!

As the Voltage drop is inverse proportional to the Ah, I have added below brown graph, which shows the expected low SoC voltage by dividing the 100% Voltage with AVG(100%) / AVG(Min SoC) voltage:
1713598902324.png


If one looks at Module 2 (Brick 7 - 13), itt was very low in 100% Voltage. but landed better than the expected ratio! This must have a high Ah Capacity
If one looks at Module 3 (Brick 13 - 19) it was very high in 100% Voltage and landed worse than expected. This must have a low Ah Capacity
This is all to be expected !

To mee above does not look compensated for CAC at all and my imbalance could very well be the effect of NEWER balancing, as the initial CAC - with 74 high quality Panasonic Cells in parallel must be very similar for all bricks and assuming that Tesla does balancing during production or Panasonic delivers equally charged cells (which they did with th efour NCR 18650B cells I own)

My CAC Imbalance of 4,3Ah I assume is a few blown fuses and the +8 years of drift :-(

On the FB Group 'Tesla BMS_u029/BMS_u018 (BMS_OhSh1t)' one of the Professionals reported that the car has an 80% - 100% balancing window and will only balance in that range while connected to a charger. The info had a recommandation with it :) that periodic slow charge to 90% is a better strategy than charging to 100%, which I think is a very good advice to reduce High SoC Cathode stress!

Above FB info matches my results perfectly.

At my 100% SoC charge, SoC was in the 80-100% range for 1 hour and 20 minutes because it was a Shopping Center 50/25 kW charger, which was a bad idea given the 'new' info:
1713600939412.png


With assumed 100 mA bleed, that caused only 133 mAh offloaded, which is a mere 0,06% of my average CAC of 222 Ah, but is 3% of my CAC ImBalance (of 4.000 mAh). So my balancing should now have been 'improved' ever so slightly :)

If the BMS should compensate my CAC ImBalance of 4 Ah (plus 8 years of drift) it WILL slightly increase capacity, because both the avareage pack Voltage during a discharge is slightly higher AND because the weakes brick dies a litle later. My current average Brick voltage at 100% is 4,163 V, so we can raise average to 4,200 V, which is only 0,9% higher than now. But if my weakes cell(s) are currently at a too low voltage, then the improvement MAY be in excess of 1%

But my slowest 3 phase charging is at 3 x 230V x 5A = 3,3 kW which means that a theoretical 80-90% charge is exactly two hours and then I will need to do that charge 20 times. I am not prepared to do that, because the wear will probably be of the same magnitude as the 'improvement'. Plus, it will not improve longevity, because taking the weaker cells to a higher Voltage will increase the wear on the already weaker cells. (For Capacity I favour Top Level Balancing and for longevity I favor Bottom Level balancing).

But for curiosity and confirmation of current workings of the BMS, I may do a proof of theory test and perform a balancing that I can surely detect. A one phase charge at 5A will use 6-7 hours from 80% to 90% and should improve balancing by 12% relative, which I will be able to measure using ScanMyTesla and Excel :) (If only one brick is 4 Ah below the others balancing WILL take the full +40 hours, but if half of bricks are above and half are below average CAC, then it will be factor two faster, I deducted)

After the test - if my bottom balancing is good I will ignore balancing from now on (and not spam TMC with these long rants :) )
 

Attachments

  • 1713600770894.png
    1713600770894.png
    916.2 KB · Views: 11
Last edited:
  • Informative
Reactions: aerodyne
But for curiosity and confirmation of current workings of the BMS, I may do a proof of theory test and perform a balancing that I can surely detect. A one phase charge at 5A will use 6-7 hours from 80% to 90% and should improve balancing by 12% relative, which I will be able to measure using ScanMyTesla and Excel :) (If only one brick is 4 Ah below the others balancing WILL take the full +40 hours, but if half of bricks are above and half are below average CAC, then it will be factor two faster, I deducted)

After the test - if my bottom balancing is good I will ignore balancing from now on (and not spam TMC with these long rants :) )

I think above calculation was way off! Having slept on the issue, I have come to the conclusion that the voltage ImBalance from the CAC ImBalance should ONLY be 20 mV at 100% SoC :-(

0-100% SoC wil produce (approx) 3,0 - 4,2 Volt increase on the brick(s) with the lowest Ah capacity. That means the end voltages would be:
1713696910238.png


That is 20 mV. And I have 60 mV !!

To estimate whether Balancing will increase my available capacity I have created below graphs. Bricks 11, 12 and 66 hav eth elowest voltage at 100% SoC and could be the bricks that cause 'Pull over safely, car is shutting down'
1713697194281.png


But those bricks are over average in CAC (the green graph is voltage after discharging to 22% SoC, the Brown is what would be expected if each brick had the Average CAC ie. 222 Ah). So bricks 11, 12 and 66 have CAC above average and may not be the 'Pull over' bricks.

1713697364163.png


The CAC weakest cells are those that had the biggest voltage drop during th edischarge and these are bricks 13, 14 and 54!!!
1713697461772.png


So who reaches the assumed 3.0 Volts first? The strong, but too low voltage charged or the weak, that are highly charged, but will fall in voltage faster?

Unfortunately, the voltage drop certainly does not have a fixed slope as function of Ah, because it looks similar to this (same car):

1713697808947.png


I have decided to ignore that and just project linearly and se what bricks goes lowest first, as in:
V(0%) = V(100%) - (V(22%)) / 0,78

That cause these projected voltages per brick:
1713698032693.png


So it suggests that Bricks 12 and 66 will be the two limiting bricks and as they are both severely under charged and can be lifted, then balancing SHOULD improve capacity.

But I think it will take days to balance out the bricks!!

Just as the 4 Ah CAC ImBalance would only cause 20 mV voltage ImBalance, then the current 60 mV voltage Imbalance corresponds to 12 Ah brick Amphour ImBalance. At a bleed speed of 100mA, that could take 120 hours to correct. Luckily (and by nature) the weakest bricks are already high in Charge and the strong cells are low in voltage (same nature), so I will need to bleed somewhat less. But that could still be 6 - 8 AH which will last 60 - 80 HOURS!!
I will likely do 80%-90% a few times, to confirm it is worth the effort and then stop when many bricks projects same 'out of charge' points.

(I have long wondered why my car reports:
Nominal Capacity = 65kWh
50% SoC = 3,7V (Half of energy(kWh) is below this voltage)
Min(CAC) = 220 Ah
Because that SHOULD give 220 Ah x 3,7V x 84 Bricks == 68,37 kWh (and not 65 kWh)
It does makes sense, when some of my strong bricks are under charged :) )
 
Last edited:
(I have long wondered why my car reports:
Nominal Capacity = 65kWh
50% SoC = 3,7V (Half of energy(kWh) is below this voltage)
Min(CAC) = 220 Ah
Because that SHOULD give 220 Ah x 3,7V x 84 Bricks == 68,37 kWh (and not 65 kWh)
It does makes sense, when some of my strong bricks are under charged :) )
I think I know why, my Nominal Capacity is off!

Before two longer trips, I have balanced my Bricks by charging slowly for 10 hours in the Balanibg window of 80% -100% SoC. Each balancing only improved ImBalance by approx 2 mV (According to FB/Recell, the blead resistors only blead 100 mA, so it will take a long time to correct my 60 mV - My estimate wa sthat 10 hours of 100 mA woould bleqad off 1 Ah, which is 1/222'th brick capacity and SHOULD reduce voltage by approx 5 mV, but not so, )

The first 'Balancing sesion' I left it connected to charger for 3 hours after it reached charging to 93% and that did not improve the ImBalance, so it only bleads while charging as proposed by FB/Recell. As Iwe had two more hours before we were to start th elong trip, I turned on Camp Mode.

A few day slater, my CAC ImBalance was improved, because my minimum CAC was up from 219,9 Ah to 220,2 Ah, which SHOULD have increased the Nominal Capacity. But no the Nominal Capacity was 0,6 kWh DOWN (from 65,1 kWh to 64,5 kWh)

Two week slater I did the second Balancing Session I knew staying connected to charger woul dnot improve, so we left immediately when at 93%. Due to nice whether and no wind, we came homw with 59% SoC and car was to stay put for two days, so I again turned Camp mode on, untill it was at 56%.
This morning CAC was unchanged, but now my Nominal Capacit was dropped to 63,5 kWh!

I think that is the explanation for my Capacity discrepancy! The Car software does not incorporate the Vampire Drain into the total capacity. So now my Nominal is 63,5 kWh and 14 times my weakest brick offers 220,2 Ah * 3,7 V * 84 Bricks == 68.438 kWh (ever so slightly up)

My Car only drive approx every third day, so looses around 4% - 7% SoC in between each drive and charge, which is what I am missing in Nominal Capacity.

I have ruled out Parasitic Drain in one or two bricks with these Vampire Drain Voltage Drops - no one brick drops more than other bricks. The Brown Graph is the expected voltage drop from a Drive if all bricks had 222 Ah CAC, so whenever the real voltage (in Green) is under the expected drop, its CACis below average and when the Green is Above the Brown, that Brick has higher than average CAC:

1715419848983.png


As CAC is inverse proportional to voltage drop, I have calculated the CAC for all brick either from the Min CAC or the Max CAC that SMT reports. To my surprise, Max caluclated from Min and vice versa, requires that the dAh/dV slopes are squared (Power of 2). But then 'Cac From Min and CAC From max totally match and is this:
1715420176330.png


Above shows that my CAC ImBalance is not the main cause for the voltage ImBalance, The Brick that first reaches 3,0 Volts (or whatever the 'Pull over safely' trigger is is Brick 12, which has a hhigh CAC, but is just under charged. If Brick 12 did not terminate the drive, the next brick to kill the fun is Brick 66, which as well have a high CAC.

My Voltage ImBalance is most likely primarily caused by my bricks newer having been balanced as I almost newer charges above 80%

So my Min ImBalance is at the 'Assembly Voltage' of 3,6 V from October 2015 :-(
1715420318479.png


My ImBalance is numerically LARGE, but not terrible. I plan to Balance a few times more to get the 6% (~0%) a liitle more in line, but will not fully Top Balance as that is mostly excessive stress. And as I newer charge to 100%, having the battery bottom balanced seems better.
 
Last edited:
For the non tech person (me) what is the best way to balance my 2015 MS 85D with 120,000 miles? I’ve noticed it has been losing charge more quickly when sitting overnight. Thank you
Hmmmm,
I have read many different stories about how to balance Tesla (A: Charge to above 93%, now Blead Resistor CMOS (switches) will be turned on with timers, to blead off current from Bricks with too high voltage, which will take days. B: It Balances by itself all the time etc.

My current understanding (from FB/Recell, which I have some what confirmed) the older Model S. only bleads current while charging between 80% and 100%, so that is the way to balance. Occasionally charge to - say - 90% to cause less stress and degradation.

I am convinced FB/Recell knows what he talks about, and it explains perfectly my ImBalance, which seems NOT caused by varying brick capacity, but from 'missing' balancing and I have commuted between 20% and 65% for ages, so newer got into the 80% - 100% SoC window.,

BTW: Voltage ImBalance will not really cause the car to faster loose charge over night.

Excessive vampire drain is most likely:
1: Excessive Vampire Drain from a remote App or logger that wakes the car too frequently
2: Instalation of MCU2 on an older MCU1 Model S (MCU2 and Sleep is less energy efficient)
3: Parasitic Load from cells with shorts/dendrites, with a too high internal short resistance to blow the fuse wire to the bad cell.
4: Stuck Always-ON CMOS in the current blead circuit, so that it constantly bleads the brick
Two latter issues will eventually cause BMS* errors and will require a fix from one of the new third party battery service shops.

Option 3 and 4 are the reason I performed the attached measurements, which shows all bricks voltages after longer idle periods, to see if vampire would drop all bricks voltage relatively the same, when the car is idle? (then it is consumption and not error). But if one/some bricks falls dramatically faster than the others, it would normally be:
A: One or more Parasitic Cell(s) in the brick
B: Stuck CMOS in the current blead circuit, so that it constantly bleads the brick

For this info, ScanMyTesla is a very good app! (Would love if the Beta version (which supports CAC Signals) could still dump data to CSV files, but that functionality did not make it into the Beta, so not so currently)

1715438189095.png
 
If the bleed resistors only fire off above 80% and while charging, it seems a good approach might be to set your home charger to 85% and the lowest Amperage you can and let that 80% to 85% time take as long as it can several nights in a row. Always charging to 80% and only 80% doesn't seem to help the balance at all. Thoughts?
 
No need, the car balances at all SOC levels when it’s not charging.
^^^This.

Even if there was a method to rebalance the pack strings better than the BMS normally would, what is the point? If there are weak strings they will become weak and out of balance again at some point.

If I wanted my pack to have greater life and higher capacity, I would charge in smaller increments when possible, at night when it is cooler, and store inside wherever possible.

This approach is highly doable and guaranteed to be better than not.