This supercapacitor load-balancing circuit is designed for 2.7V 10F capacitors. It uses hysteresis to turn on and off MOSFETs that drain supercaps down to a safe voltage when required. Because MOSFET on resistance is much lower than Rs resistance most power dissipation is occuring on resistors. Resistors can be adjusted for any supercap value and additional resistor can be installed for each supercap to keep it below required maximum voltage. I'm aiming ~2.5V on each supercap even though my supercaps are rated to 2.7V, I prefer to be on a safe side. It can be easily modified to set any required voltage by chaging input resistor divider network of each op-amp. TLV431 is giving best accuracy while keeping a very low current, TI recommends ~500uA current for normal operation.
If hysteresis is not wanted than you can remove positive feedback resistors and modify circuit to use a negative feedback capacitor. In this case MOSFETs will be in saturation mode with current constantly flowing though them keeping supercaps at exactly desired voltage chosen by resistor dividers on inputs of op-amps. Following schematic can be used to achieve this:
I prefer to use hysteresis and turn MOSFETs on only when voltage on supercap reaches Vtrip-high voltage and then draining it to Vtrip-low voltage as in this case MOSFET is not constantly on and thus resistors are not dissipating heat all the time. Hysteresis and Rs value should be selected based on supercap capacity so it will be bringing voltage down fast enough without overheating.
I had to update this project to fix the issue with OpAmp starting to oscillate if Rs was below ~1.8Ohm. This is caused by a huge capacity of DMN1019 gate (>2500pF). I tried to fix that by switching from OpAmp to Comparator but that didn't help. So, to fix the issue additional resistors were added after feedback loop and that resolved the issue. Full details in regards to the process can be found here:
Otherwise my project works very well and keeps voltages of ~2.5V on each Supercap without any issues with currents of up to ~1.5A, but as this project is aimed to use solar panels it would probably never see such high currents. As MOSFETs are opening only for a short time, allowing Supercaps to discharge with current of 1.14A (I=U/R=2.5V/2.2Ohm=1.14A) Rs resistors are not heating up rapidly. In other projects that use BJT transistors or MOSFETs held by OpAmp in a partially open state you can see that actually MOSFET itself is heating up rapidly as Rs resistance would be lower than resistance of partially open MOSFET, that's why I decided to implement such project where MOSFET is open only for a short period of time and is in fully open condition, so it's Rds(on) is much lower than Rs and most heat dissipation is occuring in Rs.
Hope this project would help someone! You can stack up as many of these 'building blocks' as you wish to get much higher voltages as required. Also by changing input resistors you can adjust this circuit for any Supercap voltage (but keep in mind that OpAmps usually can tolerate only ~5.5V unless specified otherwise). Charge Enable circuit is optional and should be adjusted for any specific voltage by changing its input resistors. Remember that CE voltage should be lower than maximum Supercap total voltage otherwise your CE circuit would never turn on (for example, in my case maximum voltage is ~5.030V, so CE voltage can't be 5.1V).
Please feel free to ask any questions, I'm more than happy to answer them!