Answering here to
this post.
Hi,
I need to understand, how mosfet is selected for BMS application.
It will be helpful if you share the equations you used to select mosfet for voltage. SC current, Temperature etc.
Well, it's a complex problem I can't really sum up in a post but I'll try anyway (please note that if you want to select a MOSFET for this application for real you need to learn more about that subject, this post will probably not be enough)
First you need to determine the minimum rated Vds(max) you'll need. Here it's not too complicated as the battery will never go over 64 V (for 16S LFP and 14S NMC) so the standard Vds(max) directly above that is 80 V. Ideally you want more margin than that for various reasons but mainly so you can have TVS diodes to catch the inductive spike when you turn the MOSFETs off (they are basically robust zener diodes so you need some margin for them to not conduct at 64 V and to fully conduct before hitting the MOSFET Vds(max) voltage) and 16 V is barely enough so a 100, 120 or 150 V MOSFET would be better.
But there is a big trade-off with higher voltage MOSFETs: they also have a higher Rds(on) (all other things being equal) which means higher losses. You can always throw more money to solve the problem (mainly better MOSFETs and/or more MOSFETs in //) but in my case I have very tight constraints regarding budget, thermal design, etc... so that's why I selected a 80 V MOSFET instead of a 100+ V one. By now I guess you start to realize (if you didn't knew already) that selecting a MOSFET is basically a big heap of compromises ?
Speaking of the Rds(on) it's the next big thing you'll need to choose. Lower = less losses but of course = more expensive (and the relation isn't linear; the cost will far more than double if you want half the Rds(on)...) so that's why usually it's a better idea to have multiple MOSFETs in // instead of only one super low Rds(on) MOSFET. Multiple MOSFETs is also an advantage for thermal reasons as you have more surface area to transfer heat to a heatsink and they can be spreaded too. Note that MOSFETs in // must be closely thermally coupled (i.e. being on the same heatsink) to avoid problems with current sharing due to varying Rds(on) with the Tj.
Also, you need to use the worst case (or at least real world) Rds(on) and not the big number at the top of the datasheet if you don't want your MOSFETs to melt. For example the MOSFET I chose is advertised as 1.1 mOhm but that's the typical value at Tj = 25 °C... the typical value at Tj = 120 °C is 1.9 mOhm and the max is 2.4 mOhm, which is more than double and of course that means more than double the losses and heat to disispate.
Also, don't select the MOSFET based on its Id(max) as in our application the Rds(on) and so the thermal limit will be reached far before the Id(max) gets relevant (for example I use MOSFETs with a Id(max) of hundred of amps each but I only pass 30 A per MOSFET as the Tj would get too high with more than that).
Then we enter the "details" and it can get complex but they are important if you don't want to fry the MOSFETs the first time they turn on or off, or even by just connecting them to the battery and loads...
If you want to be capable to make an e-fuse feature and so be capable of interrupting a short-circuit safely you'll need to turn the MOSFETs off very quickly (single digit µs maximum, else they'll melt...) and that includes the total delay (detecting that the current is too high, driving the MOSFET gate, etc...), not just the MOSFET turn off time you can find in the datasheet. That means hardware only (software will be too slow unless you have a very very fast MCU which you will not since it's a BMS, not a PC), no low-pass filter, fast amplifier, fast comparator, very good gate driver, very low gate resistance, low inductance routing, etc...
Of course you also need to check that the maximum expected short-circuit current (usually a few kA for most of our systems) is below the Id(max) of the MOSFET by a good margin (current that high will not share as equally as the normal current between the MOSFETs), you'll need to use the appropriate graph in the datasheet as the table will not be enough since it's dependent on time.
NB: if you don't implement an e-fuse then be ready to accept loss of the MOSFETs if there's a short-circuit as a classic fuse will be far too slow to protect them.
NB²: an e-fuse doesn't replace a classic fuse (unless it's triple redundant and certified, which will not be the case here), always include a classic fuse in your system for the "you never know" case.
Another very important thing is the PCB layout as you must ensure that the PCB traces can handle the expected current (I plan to add busbars for example as 300 A is to much, even with a 8 layers PCB...) and you also need to share the current as equally as possible if you use multiple MOSFETs in //. And, of course, you need to do all that while still having a proper heatsinking strategy. Also, 64 V isn't high but it's not low either, you must pay attention to clearance and creepage distances.
Another thing to take into account is that the MOSFETs can turn on if there is a high enough dV/dt between their drain and source (when you physically connect the BMS to the battery for example) even with a pull-down resistor on their gate, that's because there is parasitic capacitances between the gate and the drain, and the gate and the source (and also between the drain and the source but we don't care about that here), more info
here. They form a capacitive divider which will divide Vds by a ratio equal to Crss / Ciss and if this voltage is over Vgs(th)(min) then the MOSFET will turn on.
Now the obvious and easy thing to do to fix that is to add a capacitor big enough between the gate and the source so the divider ratio gets big enough that Vgs is never high enough to turn on the MOSFET. Small problem with that: the gate driver will have to charge and discharge this additional capacitance and it'll greatly increase the turn-on and turn-off times, the former isn't a big problem but the later is if you want the e-fuse feature described earlier.
The best solution I found is to add schottky diode so the capacitor doesn't increase the turn-off time (it still increases the turn-on time but it's way under the maximum we could want for it so we don't care here):
Note that the values are placeholders. You need to calculate C1 via this formula: C1 = Crssmax * (Vdsmax / Vgsthmin) which in my case gives C1 = 1.7 * (64 / 1.2) = 90.7 = 100 nF (you need to use worst case for Crss(max) and Vgs(th)(min) and in my case I had to use the graphs as the table in the datasheet didn't give those). R1 isn't super critical and anything around a few dozen kOhm is fine. The diode must have the lower Vf possible. Regarding the PCB layout, C1 and D1 must be as close to the MOSFET as possible with traces of as low inductance as possible.
NB: I haven't tested my design IRL yet so even if I always use the worst cases and add some margin to be safe, some of what I described above might not be enough to not fry the MOSFETs in some extreme cases.
Side note unrelated to all that MOSFET stuff but related to the projet itself: I had to pause working on it for quite a few reasons but I resumed working on it since a few days. I'm currently selecting the LEDs for the HMI board and then I'll route the PCB for it (the schematic was already finished from before).