diy solar

diy solar

BMS MOSFETs Explained

upnorthandpersonal

Administrator
Staff member
Moderator
Joined
Dec 25, 2019
Messages
5,148
Location
63° North, Finland
I'm writing this post since it seems there is a lot of confusion (especially in the comment section of a certain youtuber in Australia) on why both MOSFETs in a typical single port BMS are controlled individually and why/how this works when they're in the same series circuit. It will hopefully also show why just controlling both MOSFETs at the same time to try and accomplish this is not a good idea.

Let's start with the simplified diagram of a single port, MOSFET based BMS:


BMS.jpg

Some basic points: the load is also where the charger would be connected. R Sense is for the BMS to know how much current is flowing and in which direction. MCU (Micro Controller Unit) is the controller, and the discharge (Q DSG) and charge (Q CHG) MOSFETs (connected back-to-back) are individually controlled by the MOSFET driver under instruction from the MCU. Please note that an active MOSFET conducts in both directions. The diodes (body diodes) of the MOSFETs are internal to these devices, and in many applications these are often unwanted, but they are useful in a BMS.

- Suppose we want to both allow charge and discharge. This is easy: enable both MOSFETS and current can flow to/from the battery as needed. Nothing special here.
- If we want to disable both charge and discharge, this is also easy: disable both MOSFETs. Please note that doing so will effectively turn off the battery as you would with a disconnect switch. In other words, any devices that need to know the battery voltage to operate (MPPT, Inverter) will turn off.

So, now we have the issue: what if we hit over voltage protection, or low temperature protection. In both of these instances, we still want to be able to discharge, but not charge. Turning both MOSFETs off won't do since we can't discharge now. The solution is to rely on the internal body diodes:

- To allow discharge, but not charge we turn off the charge MOSFET. In doing so, we still have a current path: through the body diode of the charge MOSFET:

BMS_discharge.jpg
You can see that current flow is one directional only - the diode in the charge MOSFET will be reverse biased for any charge current and thus there will be no current flowing in the charge direction. The inverter and charge controller will still see the battery voltage (minus the drop over the internal diode - our friendly youtuber measured this one at around 0.6V).

- To allow charge, but not discharge we do something similar: we turn on the charge MOSFET but turn off the discharge MOSFET:

BMS_charge.jpg

You can see again that the current flow is one direction only: the diode in the discharge MOSFET will be reverse biased for any discharge current and this there will be no current flowing in the discharge direction. Again, the inverter and charge controller will still see the battery voltage (again, minus a small drop).

Now, sending lots of current through this diode is not a good idea. These are far from ideal diodes and they will heat up at relatively low currents. That's where our sense resistor comes in. If the BMS has to only allow charge, as soon as the current builds up (our friendly youtuber measured this to be at 1.5A if I remember correctly) the BMS will automatically enable the discharge MOSFET. This will eliminate this diode voltage drop and charging will occur as normal. The same is done if the BMS only allows discharge. As soon as the discharge current rises, the charge MOSFET is enabled to eliminate the voltage drop over its diode.

Note that this process keeps the protections in place: as soon as the current drops again, the relevant MOSFET is turned off again automatically by the BMS.

In short: having the BMS control both charge and discharge MOSFETs independently prevents abrupt battery disconnection in case a problem arises that only affects one of the current directions (charge or discharge). You want to be able to discharge in over voltage, and want to be able to charge in under voltage situations. Abruptly disconnecting/connecting the battery in such situations can be detrimental for other devices attached to the battery and indeed the battery itself. Using the internal body diode offers a simple hardware feature to make sure these conditions do not arise.
 
Last edited:
Thank you very much for this.
Sometimes on bms specs the charge current is half of the discharge current.
Is there a reason for this?.
I would've thought it is the same both ways.
 
Last edited:
Thank you very much for this.
Sometimes on bms specs the charge current is half of the discharge current.
Is there a reason for this?.
I would've thought it is the same both ways.

This is common with a separate port BMS for example where you have a different charge path (and often lower current) compared to the discharge path.
 
For the non neuro-typical among us, could you please expand the MCU acronym once at the first usage.
Please and thanks.
 
The problem wth BMS in the video you are referring to gave the inexperienced user too many test controls. Manual control on full shutdown is fine but giving inexperienced individual ability to manually turn off just charging or discharging control of back to back bidirectional switch MOSFET's is asking for trouble.

I did notice when charge current was raised to a point where the MOSFET body diode voltage drop would create too much heat the firmware overrode the manual setting and fully turned on both back to back MOSFET's to save the MOSFET's from burning up.
 
I did notice when charge current was raised to a point where the MOSFET body diode voltage drop would create too much heat the firmware overrode the manual setting and fully turned on both back to back MOSFET's to save the MOSFET's from burning up.

This is the recommended way of doing it even with manual controls. You don't want to keep current flowing through the diode - the diode is only there to make sure that you don't disconnect the battery entirely (which would be the case if the MOSFET didn't have a diode) and that the current path that still exists is the one that follows the active setting. There is a book "Lithium-Ion Batteries and Applications: A Practical and Comprehensive Guide to Lithium-Ion Batteries and Arrays, from Toys to Towns." that has a section dedicated to this.
 
Last edited:
I'm writing this post since it seems there is a lot of confusion (especially in the comment section of a certain youtuber in Australia) on why both MOSFETs in a typical single port BMS are controlled individually and why/how this works when they're in the same series circuit. It will hopefully also show why just controlling both MOSFETs at the same time to try and accomplish this is not a good idea.

Let's start with the simplified diagram of a single port, MOSFET based BMS:


View attachment 67269

Some basic points: the load is also where the charger would be connected. R Sense is for the BMS to know how much current is flowing and in which direction. MCU (Micro Controller Unit) is the controller, and the discharge (Q DSG) and charge (Q CHG) MOSFETs (connected back-to-back) are individually controlled by the MOSFET driver under instruction from the MCU. Please note that an active MOSFET conducts in both directions. The diodes (body diodes) of the MOSFETs are internal to these devices, and in many applications these are often unwanted, but they are useful in a BMS.

- Suppose we want to both allow charge and discharge. This is easy: enable both MOSFETS and current can flow to/from the battery as needed. Nothing special here.
Nothing special, but just to clarify - if the BMS is safely within the range of LVD to HVD (all cells close to LVD + (HVD - LVD)/2) will a typical BMS such as a Heltec support equal maximum charge and discharge current?
upnorthandpersonal said:
- If we want to disable both charge and discharge, this is also easy: disable both MOSFETs. Please note that doing so will effectively turn off the battery as you would with a disconnect switch. In other words, any devices that need to know the battery voltage to operate (MPPT, Inverter) will turn off.

So, now we have the issue: what if we hit over voltage protection, or low temperature protection. In both of these instances, we still want to be able to discharge, but not charge. Turning both MOSFETs off won't do since we can't discharge now. The solution is to rely on the internal body diodes:

- To allow discharge, but not charge we turn off the charge MOSFET. In doing so, we still have a current path: through the body diode of the charge MOSFET:

View attachment 67272
You can see that current flow is one directional only - the diode in the charge MOSFET will be reverse biased for any charge current and thus there will be no current flowing in the charge direction. The inverter and charge controller will still see the battery voltage (minus the drop over the internal diode - our friendly youtuber measured this one at around 0.6V).

- To allow charge, but not discharge we do something similar: we turn on the charge MOSFET but turn off the discharge MOSFET:

View attachment 67273

You can see again that the current flow is one direction only: the diode in the discharge MOSFET will be reverse biased for any discharge current and this there will be no current flowing in the discharge direction. Again, the inverter and charge controller will still see the battery voltage (again, minus a small drop).
This is very helpful and has helped me to understand why my 300A Heltec BMS is limited to only 100A maximum charge current. What I’m still confused by is whether that lower charge limit only applies when the BMS has disconnected for LVD (as you describe above) or will be in effect even above LVD when both Q DSG and Q CHG should be on, right? If the 100A charge limit will apply even when both transistors are on, I’m confused as to why?
Now, sending lots of current through this diode is not a good idea. These are far from ideal diodes and they will heat up at relatively low currents. That's where our sense resistor comes in. If the BMS has to only allow charge, as soon as the current builds up (our friendly youtuber measured this to be at 1.5A if I remember correctly) the BMS will automatically enable the discharge MOSFET. This will eliminate this diode voltage drop and charging will occur as normal. The same is done if the BMS only allows discharge. As soon as the discharge current rises, the charge MOSFET is enabled to eliminate the voltage drop over its diode.

Note that this process keeps the protections in place: as soon as the current drops again, the relevant MOSFET is turned off again automatically by the BMS.

In short: having the BMS control both charge and discharge MOSFETs independently prevents abrupt battery disconnection in case a problem arises that only affects one of the current directions (charge or discharge). You want to be able to discharge in over voltage, and want to be able to charge in under voltage situations. Abruptly disconnecting/connecting the battery in such situations can be detrimental for other devices attached to the battery and indeed the battery itself. Using the internal body diode offers a simple hardware feature to make sure these conditions do not arise.
I’m only ever going to be exceeding 100A of charge voltage when all cells of my battery will be well over LVD, so thanks for helping me understand whether I can count on charging at currents higher than 100A without issue in that situation (~120A is probably the highest I’ll ever need to go) or I need to design my system to limit charge currebt under 100A always (even when safely above LVD),
 
if the BMS is safely within the range of LVD to HVD (all cells close to LVD + (HVD - LVD)/2) will a typical BMS such as a Heltec support equal maximum charge and discharge current?

The Heltec BMS should (at least, the ones like I use - the black ones - Heltec has others). There are variations of the design that don't (I think Daly for example). In general, stick to what the datasheet says.

This is very helpful and has helped me to understand why my 300A Heltec BMS is limited to only 100A maximum charge current. What I’m still confused by is whether that lower charge limit only applies when the BMS has disconnected for LVD (as you describe above) or will be in effect even above LVD when both Q DSG and Q CHG should be on, right? If the 100A charge limit will apply even when both transistors are on, I’m confused as to why?

Which 300A Heltec do you have? You normally even in LVD situations have the BMS turn on both MOSFETS once enough current is flowing. The Heltec ones (again, if we're talking about the black ones) should do the same current in both charge and discharge directions.
 
The Heltec BMS should (at least, the ones like I use - the black ones - Heltec has others). There are variations of the design that don't (I think Daly for example). In general, stick to what the datasheet says.



Which 300A Heltec do you have? You normally even in LVD situations have the BMS turn on both MOSFETS once enough current is flowing. The Heltec ones (again, if we're talking about the black ones) should do the same current in both charge and discharge directions.
Heltec’s website leaves a great deal to be desired, but if you follow this link, this is the 8S 300A BMS: I am using: https://m.alibaba.com/product/1600144832217/Chengdu-Heltec-BMS-8S-300A-protection.html

The specs listed are as follows:

8S 300A 3.2V Same Port
Charge protection voltage: 3.75V
Charge protection release voltage: 3.6V
Discharge protection voltage: 2.1V
Discharge release voltage: 2.5V
Balanced voltage: 3.55V
Balanced current: 83MA
Maximum continuous overcurrent: 300A
Current limit protection: 1200A
Connection:Same Port
Short circuit protection: load short circuit protection
Size: 150*80*14MM

But if you click on ‘picture’ instead of ‘video’ and zoom in, the label on the BMS itself also says:

‘Charge Current: Max 100A’

I’m fine for now (60A SCC) but thinking of doubling array size and charge current in a year or two, so just trying to understand whether a charge current of ~120A will mean I need a second BMS in parallel or this one may be fine (between 3.0V / 24,0V and 3.4 / 27.2V)…
 
I'm not familiar with that particular BMS. It might have some other reasons for the limitation, or it might well be that the limitation doesn't exist - writing something like "Maximum continuous overcurrent" doesn't really make sense. I'll try to make time to dig into this one.
 
Back
Top