Your diagram looks good. Doesn't look like too much design work. It will be interesting seeing how the disconnect fets work. That's your biggest unknown. How much power do they dissipate during a fault condition. That determines how many fets in parallel you need. I wouldn't put those fets on your primary circuit board. That would be too restrictive.
When are you starting?
I was spending these days in simulating my idea for the active balancer. I got all the answers I was expecting. It works good but I still have doubts if it is needed.
My plan is to start this weekend. These days I only design PCBs at work and I want to shift it for the weekend.
I Like the approach, should be a fairly flexible design using the BQ76952.
I have mused over many different designs, all with their pros and cons.
PCB Design:
The BQ chip & its reference does address most of the grunt work for implementing the design, the schematic and pcb would be nice to layout to make it customizable for different series layouts of the cells. So the one design can be used for different sized packs.
Id like to see one small main board with MCU, BQ chip, low current balancing, temp sensors, small gauge wire connections, Voltage supply & charge pump.
And then a daughter board with the Fets on it that could be designed in 2-4 different sizes to accommodate different current requirements.
The shunt is tricky, it kind of needs to be sized for the application which would lead it to be on the daughter board, but it needs to be carefully integrated on the PCB with the mcu to maintain much SOC accuracy.
Using common source/drain mosfets is pretty much the best way, and the only way if you want single connection but making it charge only etc.
There will be some loss on the body diode during this operation. But the battery often leaves the charge or discharge only condition quickly, and there are few times where you would need the body diode conducting, the bms fets should never be switched off in an ideal scenario anyway. Your inverter should stop charging before max voltage and stop discharging before max discharge anyway.
That should not be difficult. That chip supports 3-16 cells so it can be compatible with 12V, 24V and 48V.
I still don't know where to place the shunt.
For the fets I am planning to have a daughter board only for the fets. I would like to try aluminum core PCB. I will use smd fets.
The dielectric layers is thermally conductive and electrically isolant. Mosftes will be mounted on the top, copper side. This kind of PCB is usually used in high power diodes for proper dissipation.
Maybe this is not the easiest solution but this is a hobby project and I want to try it. You can think they are expensive but they are not. I need to double check the prices anyway. If it is more than I think I will go for normal FR4 with 2-3oz copper.
Active balancing:
For large packs that need a larger amount of balancing in perpetuity it is worth active balancing, mostly so as a designer you dont have to deal with as much heat dissipation on the pcb, but the efficiency and speed advantage is a bonus.
Chips like the ETA3000 work well, but there is a fundamental flaw when using them in large packs. Because each chip only senses its cell and the one higher, and balances to 30mv, you can end up where they are no longer transferring current in this scenario: 4.11 4.13 4.15 4.17 4.19 4.21 4.23. Each chip thinks it is balanced to 20mv, but the pack is well out of balance.
The chips internally are just synchronous buck converters with the feedback point of (vc1+vc2)/2 with a bit of hysteresis and current limiting.
What really needs to happen is that the main MCU synchronizes all of them and tells them what direction to run to balance the whole pack, and to make use of the high accuracy ADC in the BQ chip to shuttle charge to end up with an accurate final balance. This could also run when the pack isn't just at balance voltage.
I am still not sure if active balancing is useful. Talking about the voltage curve, in the knees is useful for sure but in the central region where the curve is flat.
Videos where people test balancers always test them with the pack disconected. This means internal resistance does not have effect in the voltage accross the cell. If resistance of the cells is perfectly matched, this will work also perfectly during charging and discharging because internal resistance will create the same voltage drop under current in every cell. If resistances are not perfectly matched, they will produce different voltage drops, resulting in different cell voltages even they the have the same state of charge. This will trigger the balancer during charge and discharge unbalancing the cells. There are many studies about this. I have seen many people saying that they are using them and their voltages are the same for every cell but I doubt the cells are SoC balanced.
Maybe I am totally wrong but if I want to do something, it needs to be something different to what there is in the market. Talking about a balancer, where you have converters and currents that need to be controller I am not going to put effort untill I am sure that it is really needed.
I was thingking that a solution for this could be do periodical top balancing with the active balancer. Once every 1 or 2 months battery pack is charged over the knee and the balancer would do the top balancing.
ETA3000 neughbour balancing. Only balances with the neighbour cell. If the top needs top balance with the bottom, all of them need to work moving current cell to cell from top to bottom. It is exactly the one Will used in his video
They do not really need MCU, they work autonomous.
My idea for active balancing is also using buck converters but in a different way. It works in simulation (matlab simulink with real battery models). But I am not planning to implement it for now.
Software:
For the Coms, bluetooth is only useful if there's a companion app that can be used to see and set parameters for mobile/portable applications
Wifi would be great, would be useful to be able to transmit Voltages, currents, SOC, Balance accumulation, ETC over mqtt. This can permit logging with Emoncms, or grafana/influx. Or integration in to other systems.
A specified UART protocol could be useful.
Most flexible would be making the main mcu arduino compatible, opens up tweaking the code to customise the operation to a wider audience.
Id likely try use an ESP32 for the Main mcu, which can easily do bluetooth & wifi if needed, and should be more than fast enough to interface with the BQ chip.
It would also be needed to have some way to edit the calibration values for cell voltage measurements.
I think I will go with ESP32. I am not a big fan of it. This can also replace the STM32 main MCU. In terms of of open source is convinent as it can be programed with Arduino IDE. I would not like to use it but I think it is the most convinent solution. It will also reduce the BOM.
I see little need for the SOC Mcu or the balance mcu, the Main mcu should have no problem reading that info from the BQ and passing it to where is needed. The added complexity of all the communication between the different MCUs would be unlikely to outweigh the benifits of a dedicated mcu for the task.
I am not worried about that. Comunications with DMA are very efficient.
Keen to help out where needed on this design, it really would benefit being open source and means that wherever the design gets to it can be taken over by someone else.
Thank you for your help. I do not mind making it opensource.