| Menu | JAQForum Ver 19.10.27 |
Forum Index : Electronics : 16 - 32 Cell Balancer, BMS
I have built a number of Lifepo4 and Lead Acid multi-cell battery balancers over the past several years, both passive and active types; they all work in various degrees, some better than others. Add to the mix accurate measurement of each cells voltage and the design gets more complicated. The passive types discharge a load resistor across any individual cell when its cell voltage goes above a high set point under charge, depending on the load resistor, quite a lot of heat can be generated, requiring a large heat sink and perhaps a fan. They do have the advantage that the load current is known and doesn't depend on the voltage difference between other cells. The active types using a large ferrite toroidal core with windings linked to each cell and synchronous current pulses work very well, however to get high load currents the circuit impedance must be in the mill-ohms region when cell voltage differences are low, reading the individual cell voltages is also tricky with all the voltage spikes. Under ideal conditions where cells are matched, balancing can be achieved with a couple of amps; cells I am using are re-cycled 100 - 400 AH and various ages - manufactures, so rather large load currents are required to keep "runner" cells in line. A passive balancer with a known load current works best here, this design is a modification of previous variants, where a mother board hosts individual cell module pcb's linked to each cell in the battery bank. A controller connects to one or two MB's allowing either 16 - 32 cell batteries. Cell boards each have their own cpu, here a very cheap Pixaxe 08M2LE and talk to the controller via opto-couplers for isolation. In the past I have used a form of PWM for cell communications, where the width of the pulse specifies the cell address and corresponding cell voltage in milli-volts, this is quite fast and should work ok on 32 cell banks. Here are the pcb's that will be sent off to be made in the next day or so, I will draw up the schematics when its all working and any bugs ironed out. Controller 100x100mm 4 layer: Can drive a couple of large DC relays for main contactor control and inverter pre-charge. ![]() Cell Board 33 x 50mm: The 3.3v regulator is only used when monitoring 6V lead battery cells. ![]() Mother Board 200x106mm: Large holes in the pcb are to allow air from a top mounted fan cool the 0.35r (10 amps) 50w resistors mounted below the main pcb, using a large alloy plate as heat sink. ![]() Cheers Mike Edited 2026-01-06 12:57 by Solar Mike |
||||||
The 1-Wire communications setup may be of interest, it is based on a 12v logic "wired OR" system, having a large hysteresis to get noise levels down. The Master device supplies 12V,0v power to the slaves, with data isolation by opto - couplers. 2 way control bus floats at 12v when not active. Schematic: ![]() PCB 33 x 40mm: ![]() ![]() Gerbers: 6 pcbs fit on a 100x100mm board, I get them made 1.2mm thick and cut with a very large tin snips 1WireV4Gerbers.zip Cheers Mike Edited 2026-01-10 20:56 by Solar Mike |
||||||
To initially set the balancer up, in the past, I have used a pcb with 16 series W.Wound resistors each with a capacitor, all powered from a current limited PSU. This simulates a 16 cell battery and is easier to manage on the bench rather than connecting to a live battery bank. Was a bit messy, so have decided to use a new board using accurate 0.1% 1 watt resistors and a small cooling fan. The current is just over 100mA and provides a reasonably accurate cell voltage that can be easily varied by the PSU for testing. Here is the design for that, 100x100: ![]() ![]() Fan PCB, sits above the main board: ![]() Cheers Mike Edited 2026-01-16 16:43 by Solar Mike |
||||||
Wow Mike that is a lot of work! I haven't got to the stage of using Lithium batteries at home yet. I may look at them when the VRLA batteries I have now die , but I am hoping that that won't be for quite a while. It is amazing how much work you put into these projects, it will be interesting to see how it turns out Pete |
||||||
I guess, prob about 24 hrs to do those pcbs, so not too much, and now that I have retired, I don't get paid for it.... I have been using a different sort of balancer for our 3 banks of 300AH 48v Lead Carbon 6v cells, so 8 cells in series per bank; will post the pcb below. That system uses a flying 1uf capacitor that gets switched across each cell in the bank via DPST optomos relays, type AT224, the cap is then isolated from the bank and switched to an ADC input of the CPU, measured, then discharged, cycle repeats for next cell. Any balance loads that maybe on at the time are switched off during the voltage measurement phase to prevent voltage drops on the balance wires. Takes about 1 sec to scan all 8 cells in the battery; system works pretty well but would be a bit slow if expanded to 16 or 32 cell Lifepo4 banks, thus the new design. The cell loads are power resistors screwed to a large heatsink, mosfet switches driven by an opto to voltage isolator chip TLP3906. The new design will be much faster and cheaper to build, as the cpu's are about $2 each and other opto components not required. Here is the older balancer PCB, as its serial driven, extra boards can be daisy chained for more cells as required: And it's controller: ![]() Cheers Mike |
||||||
Nice project! Do you implement a software calibration per cell, or are you happy with the accuracy? I have made a simular project for my mb31 cells, its build arround an esp32 main controller board and the cell boards use atmega 328 mcu's. They communicate over uart bus isolated by opto can tranceivers0. Works really well, but best result is when cell voltages were calibrated, the 10bit internal dac is a bit on the low side, I use 0.1% resistors and an external 0.1% reference ic. I'm working on an stm32 based version wich has an internal 12 bit dac, I aim for a 1mV resolution. |
||||||
The "flying capacitor" system uses 0.1% resistors and 1 common ADC input. I calibrated in software using a fluke meter and known PSU in place of a cell. If its within 10mV thats ok by me, as balancing is only occurring above 3.5V per cell so well into the voltage rise part of the curve. The individual 08M2 chips are using same 0.1% resistor divider and internal 2.048 reference, they seem to be reasonably close in accuracy, so no extra calibration required. I am not too worried with absolute 1mV deviation, the cells only spend a short period being balanced by the resistive loads, before system switches to a lower "Float" voltage. Way I look at it is as long as all cells are within 20-30mV deviation then they are balanced, at the top end of their voltage end point. I did look at using a voltage ref IC for auto calibration, but the Picaxe Basic being integer based and limited to 16bit maths make it too difficult software wise; your use of atmega 328 mcu's would work much better. |
||||||
| The Back Shed's forum code is written, and hosted, in Australia. |