My latest project is a battery management system (BMS) that can accurately measure cells in a lithium battery pack, and also perform shunt balancing and possibly charge shuttling to balance the pack. I would also like to be able to use it for a pack of four 12V SLA batteries. A DG408 could be used to select up to 8 cell voltage taps from nominal 3.2V (LiFePO4) or 3.7V (Li-Ion), with a maximum voltage of 8 * 4.2 or 33.6V, which is within the maximum voltage of 40V for the DG408. But the voltage would need a 12:1 voltage divider to read using a PIC with a 3V power supply (from the bottom cell), and this renders the precision of the 10 bit ADC to 33.6/1024=0.032V, which is really not accurate enough for lithium cell monitoring.
I did a preliminary design using a DG409 which can read any one of four cells differentially, or two DG408s for 8 cells. The outputs can be fed to a "flying capacitor", which will hold a voltage sample taken from a cell, and then a pair of MOSFETs can translate that charge to ground level so the ADC can read it using the full range allowed by the reference.
Another method, used by some BMS chips, utilizes a high CMRR differential amplifier to translate the samples to the ADC.
It is also desired to implement shunt charge balancing, where selected cells that have a higher voltage can be discharged to match lower cells in the pack. This is wasteful, but is a commonly used method, and can be done with MOSFETs and resistors.
It is also possible to use charge shuttling, where the flying capacitor can be connected to lower voltage cells so that its charge adds to that of the low cell. But this requires a fairly large capacitor and a low resistance MUX. The DG408/9 have about 50 ohms per element, so that severely limits the practicality of such charge shuttling.
So, I endeavored to design a multiplexer using discrete MOSFETs. My first attempt used MOSFET opto-isolators, but they are somewhat costly and use a fair amount of current for the LED. Then I tried several designs using discrete MOSFETs, and it looks to be successful, although it's a bit complex. Here is the LTSpice file for a simulation:
Here is an image of a complete schematic (as it stands now):
And a PDF that may be easier to view:
I think this should work pretty well, and the discrete MOSFETs should be able to carry at least 100 mA to perform shunt balancing. A larger sampling capacitor might be able to provide charge shuttling. The circuit seems pretty efficient and should work on cell voltages of 2.5 to 4.5 volts, and
12V nominal batteries.If anyone has a schematic for the DG408 or similar analog MUX, I'd appreciate a link to the design. What I found from searching turned up NMOS and PMOS devices in anti-parallel, which won't work because of the body diodes. In series should work, but providing the correct gate voltages is a challenge.