There is an increasing need in portable applications for estimating cell capacity accurately through coulomb counting. There is also industry-wide pressure to reduce the cost of the cell pack. A solution for both of these problems is to design the coulomb counter into the handset instead of the pack, but this method must support the ability to switch between cells that might be of different sizes or have different levels of charge. It must also protect data that is susceptible to corruption due to unexpected power losses when the cell pack is disconnected.
The following is an example of how an accurate fuel gauge can be maintained on the handset side of the application by storing data essential to operation in nonvolatile (NV) memory located inside the pack. This is only an example of a working system. The exact data and storage locations can be adjusted to fit the individual application. Note the following ideas build upon Dallas Semiconductor's fuel-gauging concept described in Application Note 131
In the block diagram shown in Figure 1
, real-time measurements are performed by a DS2770 located inside the handset. The DS2720, located in the pack, contains NV backup of important fuel-gauging parameters, which would be lost, if power was removed from the host. The DS2720 is powered directly from the cell, maintaining the data even if the protector is tripped. The fuel-gauging software running in the host system has been modified from the AN131 concept in two ways. First, the DS2770's coulomb count and cell aging information are backed up periodically into the DS2720's memory, and second, the system software's initialization routine recalls this information from the DS2720 when the host powers up. The variables stored in the DS2720 are described in the following sections:
Accumulated Current (ACR)
The DS2770's ACR is RAM and, unless it is backed up, will be lost at disconnect. The ACR is copied to the DS2720 each time the fuel gauging software accesses the DS2770 to guarantee an accurate count is maintained even after an unexpected pack disconnect. This data is stored in the DS2720's scratchpad RAM instead of EEPROM because of its high rate of update. Upon reconnection and power up of the handset, the stored value is written back into the DS2770 and fuel gauging continues as normal. Minor amounts of ACR error will be introduced based on how long the handset is active before the ACR is restored. The maximum error can be calculated as follows:
ACR Max Error (mAH) = Active Current Load (mA) X (DS2720 Update Period (H) + Start Up Time before Initialization (H))
Total Accumulated Discharge (TAD)
TAD is an estimation of total charge, in mAH, drained from the cell during its lifetime. This value is calculated by the fuel-gauging software in the handset during normal operation. The TAD value is specific to each individual cell; therefore, it is stored in the cell pack's memory. The host software updates the TAD in the DS2720's EEPROM upon the completion of each charge, and restores the variable in software at power-up.
The cell age variable is a percentage multiplier of the cell characterization data used to account for aging of the cell. Normally the characterization data inside the cell pack is modified based on in-system results to recalibrate the fuel gauge, but in this example, the data cannot stay within the pack due to memory constraints in the DS2720. Instead, the default characterization data resides inside the DS2770 on the handset side and the cell age variable, a percentage multiplier of that characterization data, is stored in the DS2720. Using this multiplier to scale the characterization data will produce an error that is inversely proportional to the number of bits of resolution of the multiplier as follows:
Calculated Characterization Data Error (%) = 100% / 2(bits of resolution)
Therefore, a 12-bit value would induce only .0244% error, which is suitable for most applications. The cell age multiplier is updated and stored to EEPROM in the DS2720 each time a learning cycle is completed. It is recalled from the DS2720 and used to scale the characterization data at power up and initialization.
Cell Type Selector
A given application can use more than one type of cell pack. Multiple cell pack types are supported by having different sets of characterization data for each type contained in the DS2770. A bit or bits in the DS2720 indicates what type of pack is being used and which set of characterization data to use. The cell type selector value is read from the DS2720 along with the cell age percentage at power-up to select the appropriate characterization data to be used by the fuel-gauging software. The cell type selector should never be overwritten.
DS2720 Memory Map
Table 1 is a sample memory map showing how the fuel-gauge variables can be stored in the DS2720 along with other important pack information such as the DS2720 status register, default settings, and date code. In this memory map, variables that are periodically updated are stored on Page 0 (0x20 to 0x23) and variables that never change are stored on Page 1 (0x30 to 0x33) allowing that page to be permanently locked to prevent accidental overwrites.
Table 1. Memory map for fuel-gauge variable storage in the cell pack.
Accurate fuel gauging can be achieved on the handset side by keeping NV copies of important variables in pack memory. Data backup in the cell pack gurantees accuracy of the fuel gauge after power loss with minimal error induced. Multiple packs of different sizes, ages, and levels of charge can be supported by the fuel-gauging software, but stand-alone chargers are not. This algorithm requires that any system that charges or discharges the cell pack update the variables stored in the DS2720 to maintain fuel-gauge accuracy. Refer to AN131
for an overview of Dallas Semiconductor fuel gauging.