Measure Multiple Temperatures in Battery-Management Systems, and Save Power Too
Measure Multiple Temperatures in Battery-Management Systems, and Save Power Too
Abstract
It is critically important that lithium-ion battery stacks have a good battery-management system for monitoring many cell voltages and cell temperatures. Without that monitoring, thermal runaway can lead to a battery explosion. This design idea presents a low-power circuit that measures the temperature of up to 12 thermistors. It powers and configures the multiplexers, and also puts the muxes into shutdown to save power when not measuring temperatures.
A similar version of this article was published in Electronic Design on October 6, 2011.
High-voltage, multicell, series-stacked batteries are found in electric vehicles, hybrid electric vehicles, electric bikes, power tools, and many other devices. Because of their high energy density, lithium-ion batteries are popular for these applications. It is critically important that these high-energy battery stacks have a good battery-management system for monitoring the many cell voltages and cell temperatures. Without that monitoring, thermal runaway can lead to a battery explosion.
Current data-acquisition ICs for battery packs measure multiple cell voltages (typically 12), but they only scan and measure two temperatures at most. This design idea presents a low-power circuit that measures the temperature of up to 12 thermistors. It powers the multiplexers and puts the muxes into shutdown to save power when not measuring temperatures.
The low-power circuit of Figure 1 scans and measures the temperature of all cells in the battery. The two MAX382 multiplexers switch 12 thermistors to the two auxiliary inputs of a data-acquisition IC (like the MAX11068 or MAX17830), two thermistors at a time in six pairs. The data-acquisition IC provides bias for the thermistors, while powering the multiplexers and controlling their switching and enable/disable functions.
The thermistors are biased from the data-acquisition IC's thermal-supply output (THRM). This configuration saves power because an internal switch disables THRM when the auxiliary inputs are disabled for scanning. Note that those auxiliary inputs should be disabled (not scanned) when measurement of the external temperature-sensing device is not required. Connecting THRM to the multiplexer-enable inputs saves additional power by placing the multiplexers in shutdown mode when temperature measurements are not needed. When the auxiliary inputs are not being scanned, the two multiplexers draw only 0.56µA from VAA. THRM enables the multiplexers only for the brief interval when the auxiliary inputs are being scanned (i.e., when the temperature measurement is needed). The data-acquisition IC's GPIO ports switch the auxiliary inputs among the 12 thermistors.
A scope shot of the THRM, AUXIN1, and AUXIN2 waveforms (Figure 2) shows that THRM is enabled only for the maximum acquisition time (~700µs). This maximum time is used here only for illustration. The actual settling time for acquisition is software programmable and should be determined so that the capacitors at the AUXIN_ have enough time to settle.
Using the circuit of Figure 1 and the pseudo-code (Table 2), the output of the ADC is read at different temperatures. Table 1 compares the output of the data-acquisition IC with and without the multiplexer, and shows the error in percentage. Error (%) = [(ADC output with mux) - (ADC output without mux)]/4096 × 100 (where 4096 is a full-scale ADC value in decimal). The on-resistance of the multiplexer contributes to the error. To minimize this on-resistance, a thermistor with a relatively higher resistance (at higher temperatures) is used (Murata thermistor 100kΩ, NXFT15WF104FA2B050).
Temperature | Data-Acquisition IC Output with Multiplexer (HEX) | Data-Acquisition IC Output Without Multiplexer (HEX) | Error (%) |
-30 | F27 | F27 | 0 |
-20 | EA1 | E9E | 0.07 |
0 | C65 | C70 | -0.27 |
10 | AD0 | AD5 | -0.12 |
25 | 7F6 | 7F4 | 0.05 |
40 | 560 | 55A | 0.15 |
60 | 2EB | 2E3 | 0.19 |
80 | 18C | 18D | -0.02 |
100 | 0D6 | 0D0 | 0.15 |
125 | 06A | 065 | 0.122 |
Command | Purpose | Read/Write |
HELLOALL | Initialization. This command sets the device address of the first part in the chain. All other parts in the chain are then assigned an automatically incremented address. | Write |
ROLLCALL | Initialization. Used to determine the number of devices in the stack. | Read |
SETLASTADDRESS | Initialization. This command tells each MAX11068 in an SMBUS ladder which device address is the last one. | Write |
Set AIN1EN & AIN2EN in ADCCFG register | Enables AIN1 and AIN2 channels for scanning. | Write |
Set AINCFG_ bits in ACQCFG register | Sets the acquisition settling time (from 5.3µs to 339.2µs) for the auxiliary analog channels. | Write |
Set GPIO as output, and set the GPIO output values by writing to GPIO register | The GPIO output values decide which thermistor is selected for scanning, as the GPIO is tied to the select pins of the multiplexer. | Write |
Set the SCAN bit in the SCANCTRL register (0x0D) | This command starts the conversion process of the inputs. | Write |
Read AIN1 (0x40) and AIN2 (0x41) registers | Used to read conversion results from the temperature-sensing device selected by GPIO. | Read |