Voltage based zero configuration battery management

Controllers and methods to manage a battery, in which a controller estimates scale factor and a steady state current rate according to multiple battery voltage values and a steady state model during steady state operation, and estimates the current rate according to a battery voltage value, the scale factor, and a dynamic model of the battery during dynamic operation, and the controller estimates a remaining capacity of the battery according to the current rate, without requiring controller reconfiguration for different batteries.

BACKGROUND

Battery management system (BMS) control power operations for battery powered devices and predict remaining capacity for one or more battery cells of a battery pack. Accurate capacity estimation relies upon battery current flow information and accurate modeling of battery parameters. This information can be obtained by direct battery current measurement in operation, and by programming the correct battery parameters such as low frequency impedance and chemical capacity. However, current sense resistors consume power, occupy circuit board space, and add cost to the battery management system. In addition, configuration or programming of battery management circuits is undesirable and costly in many applications.

SUMMARY

Described examples include controllers and methods to manage a battery, in which a controller estimates a scale factor and a steady state current rate according to multiple battery voltage values and a steady state model during steady state operation. The controller estimates the current rate according to a single battery voltage value, the scale factor, and a dynamic model of the battery during dynamic operation, and the controller estimates a remaining capacity of the battery according to the current rate.

DETAILED DESCRIPTION

In the drawings, like reference numerals refer to like elements throughout, and the various features are not necessarily drawn to scale. In this description, the term “couple” or “couples” includes indirect or direct electrical or mechanical connection or combinations thereof. For example, if a first device couples to or is coupled with a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via one or more intervening devices and connections.

FIG. 1shows a battery management system100, including a controller102to manage an associated battery104. The associated battery can be directly or indirectly connected to the controller102in various implementations, such as through direct electrical connection, inductive coupling, etc. In one example, the controller102is an integrated circuit (IC) with terminals (e.g., pins, pads, etc.) that provide electrical connection to a positive terminal106and a negative terminal108of the associated battery104, and to a host system or circuit110. The host circuit110includes a first battery pack connection PACK+connected to a circuit node112for switched connection to the positive battery terminal106, and a second battery pack connection PACK−connected to the negative battery terminal108. In the illustrated example, the negative battery terminal108provides a circuit ground or reference voltage, although not a requirement of all possible implementations. The controller IC102includes a first input, in this example a cell voltage sense input terminal114connected to the positive battery terminal106to receive a first signal, in this example a cell voltage signal VC that represents a battery voltage VBAT of the associated battery104relative to the ground or reference voltage of the negative battery terminal108. The battery management system100also includes a first switch116(e.g., an n-channel field effect transistor or NMOS) controlled by the controller IC102for selective discharging of the associated battery104. A second switch118(e.g., an NMOS) is connected in series with the first switch116between the first battery pack connection node112(PACK+) and the positive battery terminal106. The second switch118is controlled by the controller IC102to facilitate charging the associated battery104.

The controller IC102includes a processor120that operates to execute program instructions stored in a memory122to implement one or more battery management functions as described further below. The processor120in one example operates, when powered and upon retrieving and implementing instructions stored in the memory122to perform various computations, determinations, and other functions, for example, to estimate a current rate and a scale factor through computations, lookup table operations (e.g., including interpolation calculations) and/or other operations according to the stored instructions. The processor120can be any suitable digital logic circuit, programmable or pre-programmed, such as an ASIC, microprocessor, microcontroller, DSP, FPGA, etc., that operates to execute program instructions stored in the internal or external memory122to implement the features and functions described herein as well as other associated tasks to implement a battery management system controller. In certain examples, the memory122provides a non-transitory computer-readable storage medium that stores computer-executable instructions that, when executed by the processor120, perform the various features and functions detailed herein. The controller IC102in this example provides a serial data communications interface to exchange data with the host circuit110, including a terminal124that connects a serial clock signal (SCL) from the host to the processor120, and a data terminal126that connects a bidirectional serial data line (SDA) of the host circuit110with the processor120.

The controller IC102also includes a ground reference terminal128connected to the negative battery terminal108to receive a ground reference voltage signal VSS, as well as a battery pack connection terminal130connected to the first battery pack connection node112to receive a pack voltage signal PACK. The controller IC102also includes a first control output terminal132connected through a resistor R1to a gate control terminal of the first switch116to provide a discharge control signal DSG to operate the switch116, and a second control output terminal134connected through a resistor R2to a gate control terminal of the second switch118in order to provide a charging control signal CHG to operate the switch118.

The controller IC102also includes a second input terminal136connected to a thermocouple or other temperature sensor138positioned proximate the associated battery104(labeled “TEMP” in the drawing) to receive a second signal T that represents a temperature of the associated battery104. A first analog to digital converter (ADC)140receives the cell voltage signal VC and provides a corresponding digital value to the processor120. A second ADC142receives the temperature signal T and provides a corresponding digital value to the processor120. In operation, the controller IC102estimates a remaining capacity of the associated battery104and provides the estimate via the communications interface124,126to the host circuit110. The controller IC102estimates the remaining battery capacity without directly measuring the current IBAT flowing into or out of the associated battery104according to (e.g., in response to or based upon) measured voltage samples of the battery voltage VBAT and samples of the battery temperature T using battery model data stored in the memory122. The controller IC102operates while the associated battery104is in steady state operation, and during dynamic operation of the associated battery104. As used herein, steady-state operation includes discharging operation of the associated battery104at a substantially constant discharging current rate after transient dynamics that follow a load change have subsided. Dynamic operation, as used herein, includes charging operation, as well as discharging of the associated battery104at a changing discharge current rate.

The memory122stores program instructions144that are executed by the processor120. In addition, the memory122stores a steady state model146(e.g., an “R” model) of the associated battery104. The steady state model146in one example includes a lookup table148that represents an open circuit voltage OCV(dodk,Tk) and a resistance R(dodk,Tk) of a particular battery type for different depth of discharge values dodkand for different temperatures Tk, where “k” is an index. The memory122further stores a dynamic model150(e.g., a 2RC model) of the particular battery type. In one example, the dynamic model150includes dynamic model parameters152(e.g., R1, C1, R2, C2, R0, and Qmax, as shown inFIG. 5) that represent the particular battery type. In one example, the lookup table148is also used by the dynamic model150as schematically shown inFIG. 1. The memory122also stores a current rate value154(labeled RATE inFIG. 1), a scale factor156(SCALE FACTOR), and a state of charge (SOC equation158(SOC EQN). The processor120computes a remaining capacity of the associated battery104, for example, as a remaining SOC value, or a depth of discharge (DOD) value, and stores the capacity value or values160in the memory122. In addition, the memory122stores an alternate SOC equation162and a maximum voltage computation component164(VMAX COMP.).

The example controller IC102estimates a current rate154(e.g., the ratio of current over a maximum charge capacity (Qmax) of the battery104). The controller IC102uses normalized resistance (e.g., the product of the resistance and Qmax), since resistance itself may not be sufficient to quantify the difference between two cells. One example uses normalized resistance to quantify the deviation between cells using a single scale factor156to account for unknown battery resistance and capacity. The use of normalized resistance and updating of the scale factor156facilitates one-time programming of the models146and150and the capacity160in the memory122, while accommodating use of the controller IC102with different batteries104. In this regard, the parameters of a particular associated battery104can deviate from the parameters defined by the models146and150and the capacity160. The controller IC102in one example updates the scale factor156to accommodate variations of a particular connected batter104from the model parameters and over time. This operation advantageously facilitates a single programming of the memory122without the need to reprogram the controller IC102for a particular associated battery104. In addition, the controller IC102adjusts the deviation in normalized resistance of the associated battery104using the scale factor156which is repeatedly updated. The example controller IC102accommodates deviations in a particular associated battery104and updates the scale factor156during use to accommodate deviations in a particular associated battery104without reprogramming of the controller memory122.

In one example, moreover, the controller IC102estimates the current rate using a selected one of the models146or150according to (e.g., in response to or based upon) the current operating mode of the battery104. In one example, the controller102estimates the current rate using the dynamic model150and the corresponding lookup table148during transient or dynamic mode operation of the associated battery104, including transient conditions following a load change or during battery charging. During steady state battery operation (e.g., discharging operation), the controller IC102estimates the current rate using the steady state model146and the associated battery type parameters152. This operation facilitates accurate battery capacity reporting by the controller IC102according to voltage and temperature samples, without direct measurement of the battery current IBAT.

FIG. 2is a flow diagram of an example method200for managing the battery. In one example, the processor120ofFIG. 1executes the program instructions144from the memory122to implement the method200ofFIG. 2. The following is example code to implement the method200:

In one example, the memory122is programmed with model parameters152, including parameters R1, C1, R2, C2and R0that represent the impedance of a battery type, and Qmaxthat represents the battery capacity in coulombs. In operation at202, the processor samples the battery voltage VBAT and the battery temperature. In one example, the processor120receives a first battery voltage value (e.g., an instantaneous battery voltage sample) Vk from the ADC140that represents the voltage VBAT at a sample time k, and receives a temperature sample Tk from the ADC142that represents the battery temperature at the sample time k. At204, the processor120updates the 2RC dynamic battery model150with the sampled temperature, as well as the state of charge SOC160and the scale factor156computed in a previous cycle. The following is example code to implement the process200at202and204using newly collected sample data:

At206and208, the processor120executes the program instructions144from the memory122to determine whether the associated battery104is currently operating in a steady state mode or in a dynamic mode. In the example ofFIG. 2, the processor120determines that the associated battery104is operating in the steady state mode in response to detecting a change in the current rate154, or determine that the associated battery104is operating in the dynamic mode in response to detecting no change in the current rate154for a non-zero time. At206, the processor120determines whether the current rate computed for the previous cycle has changed significantly from an earlier value. In one example, the processor120compares the two most recently computed values of the current rate at206, and determines that the rate has changed if the average rate of change in voltage exceeds a predetermined threshold amount such as 5 mV. If no significant rate change is determined (NO at206), the processor120determines whether battery transient dynamics have ended at208. In one example, the processor starts a timer with a predetermined time value when dynamics are initially detected, and checks the timer at208. If the timer has expired (YES at208), the processor120determines that the associated battery104is operating in a steady state mode. The following is example code to implement the process200at206and208:

In response to determining that the battery104is operating in the steady state mode, the processor120computes a new current rate at210(e.g., RATE154inFIG. 1) according to (e.g., in response to or based upon) two or more previous voltage values and the battery temperature. In one example, the processor120computes the rate at210according to voltage values Vk and Vk+1, where Vk and Vk+1 are the values obtained by fitting successive voltage samples to a straight line using piecewise linear regression. Vk and Vk+1 are the end point values of the fitted straight line, and the steady state model146stored in the memory122. At212, the processor120computes and updates the scale factor156that represents the deviation in the normalized resistance of the associated battery104according to the first battery voltage sample Vk. The following is example code to implement the process200at210,212, and214:

In one example, the memory122stores a steady-state model146, and a lookup table148that represents the open circuit voltage OCV(dodk,Tk) and a resistance R(dodk,Tk) of a particular battery type for different battery temperatures. A normalized resistance can be calculated as the product R(dodk,Tk)*Qmax. In one example, resistance and Qmaxare programmed. The processor120executes the program instructions144to determine an open circuit voltage value OCV(dodk,Tk) and a resistance value R(dodk,Tk) of the associated battery104by linear interpolation of the lookup table148according to the value of the temperature sample Tk, and the depth of discharge dod.

With default OCV and resistance values R stored as an array or lookup table in the memory122, the processor determines values between any two grid points by linear interpolation. In this example, OCV(dodk,Tk)=va+vb*dodk, and R(dodk,Tk)=ra+rb*dodk, and dodkis the most recently computed capacity value160(e.g., DOD as a percentage=100−SOC). In one example, the processor120uses a resistance or “R” steady state model146which is expressed in terms of the normalized resistance, rate and scale factor by the following equations (1)-(3):
Vk=OCV(dodk,Tk)+Rate*R(dodk,Tk)*Scale*Qmax(1)
Vk=(va+vb*dodk)+Rate*(ra+rb*dodk)*Scale*Qmax(2)
Vk+1=(va+vb*dodk+1)+Rate*(ra+rb*dodk+1)*Scale*Qmax(3)

The processor120in one example computes voltage samples Vkand Vk+1by fitting successive voltage samples to a straight line using piecewise linear regression. Vkand Vk+1are the end point values of the fitted straight line, where the elapsed time between the values Vkand Vk+1(e.g., the time between the indexes k and k+1) is not the sample time. Substituting the coulomb counting equation, dodk+1=dodk−Rate*Elapsed Time into equations (1)-(3) for voltage yields two equations in two unknowns, Rate and Scale. In one example, the processor120computes the current rate154and the scale factor156according to the following equations (4) and (5):
Rate=(Vk−Vk+1)*(ra+rb*dodk)/[ElapsedTime*(vb*ra−va*rb+rb*Vk)]  (4)
Scale=−(va−Vk+vb*dodk)/[Rate*Qmax*(ra+rb*dodk)]  (5)

The processor120computes the current rate154at210according to two or more voltage samples, e.g., according to the fitted voltage values Vk, Vk+1by piecewise linear regression using the open circuit voltage value OCV(dodk,Tk), and the resistance value R(dodk,Tk). At216, the processor120computes the scale factor156according to at least one of Vkor Vk+1, the open circuit voltage value OCV(dodk,Tk), and the resistance value R(dodk,Tk).

At214, the processor120computes the battery cell charge change by integrating the current rate (e.g., by coulomb counting). At216, the processor120computes the remaining capacity160of the associated battery104, for example, as state of charge (SOC) or depth of discharge (DOD)104, according to the current rate154. In one example, the processor120computes the SOC as a value that ranges from 0% to 100% and computes the DOD value as 100%−SOC. In one example, the processor120processor computes the remaining capacity at216using an end of discharge SOC convergence algorithm as described further below in connection withFIG. 16. In one example, the processor120computes the remaining capacity160at216as a present depth of discharge (DOD) value DODk+1for the associated battery104according to a previous DOD value DODkand the current rate154. In one example, the processor120provides the remaining capacity of the associated battery104to the connected host circuit110via the communications interface124,126. The processor120then returns to202to sample the battery voltage and temperature for the next cycle. The following is example code to implement the process200at214:

If the processor120detects a significant rate change (YES at206inFIG. 2), the processor120determines that the associated battery104is operating in a dynamic mode. In response to this dynamic mode determination, the processor120computes the current rate154at218according to the instantaneous battery voltage sample (e.g., the first voltage sample), the temperature sample, the scale factor156, and the dynamic model150of the associated battery104. In one example, the dynamic model150of the associated battery104is a model, for example, a 2RC model, and the memory122stores dynamic model parameters152(R1, C1, R2, C2, R0, and Qmax) that represent a particular battery type. The processor120executes the program instructions144from the memory122to compute the current rate154at218according to the instantaneous battery voltage sample, the temperature sample Tk, the scale factor156, and the dynamic model parameters152. At214, the processor120computes the battery cell charge change by integrating the current rate (e.g., by coulomb counting), and the processor120computes the remaining capacity160of the associated battery104at216as described hereinabove. The following is example code to implement the process200at216:

In the example ofFIG. 2, the dynamic model is also used during battery charging. In this example, the processor120determines whether charging is detected at220. If not (NO at220), the processor120again determines the operating mode at206and208as described hereinabove. If the processor120determines that the battery104is charging (YES at220), the processor120computes a maximum SOC value (e.g., minimum DOD value) at221by automatically detecting a maximum charging voltage of the associated battery104, as described further below in connection withFIGS. 17-21.

In one example, the processor120computes the current rate154for dynamic mode operation according to the following equations (6)-(8):

where the parameters R1, C1, R2, C2, R0and Qmaxare default values programmed into the memory122according to a model of the battery104described below in connection withFIG. 5.

The illustrated examples provide battery fuel gauge functions for battery management systems to accurately estimate and report remaining battery capacity in terms of SOC and/or DOD to facilitate enhanced battery run time for a given host circuit110. Accurate battery capacity estimation can be done using a sense resistor for current measurement as well as configuration by programming the correct battery parameters such as low frequency impedance and chemical capacity. The disclosed examples provide a low power and cost effective solution for applications such as wearables without requiring a sense resistor or accurate module programming. This provides a simple and easy to use plug and play fuel gauge solution for end equipment and battery pack manufacturers with minimum to zero configuration. Described examples provide accurate current estimates without depending on any additional configuration of model parameters such as resistance and Qmax by estimating the current rate (defined in one example as the ratio of current and Qmax) instead of current and using the normalized resistance (defined in one example as the product of resistance and capacity). In one example, the lookup table148is programmed with the resistance, capacity and OCV of a cell such that the table values have the least deviation amongst the cells of a particular charging voltage.

FIG. 3shows a graph300with a curve302that illustrates the battery voltage (VBAT), and a graph310with a curve312that illustrates the battery current (IBAT) during an example charging and discharging cycle. The battery voltage curve302increases during charging from time T0with an initially constant charging current shown in the curve312. As the battery voltage curve302approaches a maximum at T1, the current curve312begins to decrease, and eventually reaches zero. During this time, the processor120detects that the battery is charging (YES at220inFIG. 2), and computes the current rate at218using the dynamic model150.

From T3through T4, the processor120uses the steady-state model146for estimating the current rate. At T4, the associated battery104begins providing current to the host circuit110, and the battery voltage curve302begins to decrease. In response to detecting a threshold amount of change in the current rate at T2, the processor120uses the dynamic model150for a predetermined time ΔT from T2through T3to allow any transient dynamics to settle before determining that the associated battery104is operating in a steady-state mode at T3. In response to detecting a stabilized current rate at T3, the processor120resumes current rate estimation using the steady-state model146from T3through T4. In response to detecting a significant change in the current rate at T4, the processor120again uses the dynamic model150to estimate the current rate from T4through T5, and thereafter uses the steady-state model146.

The controller IC102in one example implements rate estimation in the dynamic region of battery operation, as well as rate estimation in the steady state region of battery operation. The dynamic region in one example includes abrupt changes in the applied load and when the battery104is under the transient effect (e.g., due to diffusion) after a load change. While the battery is operated in this region, the rate is estimated from a single voltage value Vkusing a battery model representing a network of resistances and capacitances. The same approach is also used to estimate the rate while the battery104is being charged.

The steady state region of battery discharge occurs when all the transients associated with the change in load have settled and the variation in load is negligible. When the battery104is operated in this region, the rate is estimated from two voltage samples Vkand Vk+1. The effect of noise and high frequency pulses are minimized by fitting the voltage samples to a straight line using piecewise linear regression. Along with the current rate154, the scale factor156for the normalized resistance is also estimated. This scale factor156helps account for the error associated with the normalized resistance during the dynamic rate estimation. The effect of aging on normalized resistance is accommodated by updating the scale factor at212.

FIG. 4shows a graph400including an open circuit voltage curve402and a corresponding battery voltage curve404(VBAT) as a function of depth of discharge (DOD). The graph400illustrates the correlation error due to an IR drop amount406caused by the internal battery resistance. Without directly measuring a battery current IBAT, and using only voltage correlation, the SOC can be determined by directly correlating OCV to SOC. However, the error due to the IR voltage drop406leads to error in the estimated SOC or DOD. Failure to account for the IR drop406in estimated remaining battery capacity (e.g., SOC or DOD) leads to large estimation errors, particularly for large current rates.

The example implementations of the battery management system100and controller IC102use a zero configuration gauging algorithm that mitigates or minimizes the error in estimated current due to unknown battery model parameters. In particular, the example controller IC102estimates the current rate154(e.g., the ratio of current and Qmax) instead of estimated current. This accounts for an unknown Qmax, while allowing one-time programming of the controller IC102. In addition, the example controller IC102uses normalized resistance R (e.g., defined in one example as the product of resistance and Qmax) as resistance by itself may not be sufficient to quantify the difference between two cells. One example uses normalized resistance where the deviation between cells can easily be quantified using a single scale factor to account for unknown battery resistance and capacity. The controller IC102uses a 2RC dynamic model150to determine the rate154from the instantaneous voltage sample in the dynamic region of battery discharge (such as change in load, transient period after load change) as well as during battery charging. During steady-state operation, the controller IC102uses an R model146to compute the current rate154and the scale factor156from two or more voltage samples computed scale factor156is fed back into the dynamic 2RC model150to improve the rate estimation in the dynamic region.

FIG. 5shows an example 2RC dynamic battery model150in schematic form, including an open circuit voltage (OCV)502connected in series with a resistance R0, and two RC circuits between the positive and negative battery terminals to provide the battery voltage VBAT. A parallel combination of a resistor R1and a first capacitor C1form a first order component, and an additional first order component is formed by a second resistor R2in parallel with a second capacitor C2. The dynamic model150stored in the memory122in the controller IC102includes default parameters for the components R0, R1, R2, C1and C2. The open circuit voltage OCV of the modeled battery is represented in the entries of the lookup table148of the steady state model146.

FIGS. 6-17illustrate simulation results for an example implementation of the controller IC102in a battery management system100.FIGS. 6-11illustrate room temperature discharge performance of the system100for a 280 mA hour, 4.35 V associated battery104. In these simulations, the initial battery model parameters152are stored in the memory122, which correspond to a 3,100 mA hour, 4.4 V battery type. The simulations demonstrate that a one time programming operation can be used to set the initial battery parameters152, and subsequent use with a particular associated battery104results in convergence of the estimated remaining state of charge without direct measurement of the battery current IBAT, and without reprogramming of the memory122.

FIG. 6shows a graph600, including an estimated remaining SOC curve602and an actual remaining SOC curve604for a first battery discharge cycle of an associated battery104at room temperature in the system100ofFIG. 1.FIG. 7shows a graph700including a curve702showing the SOC error for the first battery discharge cycle illustrated inFIG. 6. During the first discharge cycle ofFIGS. 6 and 7, the estimated remaining SOC (curve602) deviates from the actual remaining SOC (curve604) by a significant amount. This is illustrated in the relatively large (e.g., negative) error in the curve702ofFIG. 7.FIGS. 8 and 9illustrate estimated remaining SOC and SOC estimation error for another battery discharge cycle of the associated battery104at room temperature after convergence of a scale factor.FIG. 8shows a graph800that includes an estimated SOC curve802and an actual SOC curve804. A graph900inFIG. 9illustrates an SOC error curve902for the battery discharge cycle ofFIG. 8.FIG. 10shows a graph that includes a curve1002that shows estimated remaining SOC and a curve1004that shows true remaining SOC for a battery discharge cycle of the battery at room temperature with no scale update. A graph1100inFIG. 11shows a curve1102of SOC error for the battery discharge cycle ofFIG. 10. The updating provided by the controller IC102reduces the error shown in curve902compared with the curve702ofFIG. 7for the initial or first discharge cycle of the associated battery104. In particular, the controller IC102employs updates in the estimated remaining capacity160and the scale factor156, to facilitate use of a one-time programming operation to set the battery model parameters152, while using a voltage based monitoring system without directly measuring the battery current IBAT. In operation, the example controller IC102improves the SOC accuracy for successive cycle as more and more accurate scale factors156are computed and used for estimating the current rate of the associated battery104.

FIGS. 12-17illustrate simulated cold battery discharge performance of the system100for a 280 mA hour, 4.35 V associated battery104. A graph1200inFIG. 12shows an estimated remaining SOC curve1202and an actual remaining SOC curve1204for a first discharge cycle of the battery104. A graph1300inFIG. 13shows an SOC error curve1302for the first discharge cycle of the cold battery104. Compared with the performance inFIGS. 6 and 7, the cold associated battery104in some cases exhibits a larger error in the estimated remaining state of charge compared with the battery104at room temperature. A graph1400inFIG. 14includes an estimated remaining SOC curve1402and an actual remaining SOC curve1404.FIG. 15shows a graph1500with an SOC error curve1502for a second discharge cycle of the cold battery.FIG. 16shows a graph that includes a curve1602that shows estimated remaining SOC and a curve1604that shows true remaining SOC for a battery discharge cycle of the cold battery with no scale update. A graph1700inFIG. 17shows a curve1702of SOC error for the battery discharge cycle ofFIG. 16.FIGS. 12-17illustrate the improved performance of the controller IC102with successive battery discharge cycles for the cold battery, by progressively updating the scale factor156.

Referring also toFIG. 18, the processor120in certain examples computes the remaining capacity of the associated battery104at216according to the current rate154using an end of discharge convergence algorithm. In one example, the controller memory122is programmed with a default SOC equation158, and also includes an alternate SOC equation162that implements an end of discharge conversion algorithm.FIG. 18shows a graph1800that includes an estimated SOC curve1602resulting from the use of the alternate SOC equation162in order to provide end of discharge convergence. The graph1800also includes an actual SOC curve1804, and a curve1806representing the estimated SOC computed using the default SOC equation158. As shown inFIG. 18, the alternate SOC equation162ensures convergence of the SOC estimate with the final discharge value of the associated battery104. In this example, the processor120implements the alternate SOC equation162in order to assure end-convergence of SOC capacity estimate160to zero at a termination voltage of the associated battery104. In one example, the processor120provides voltage correlation using a scalable non-linear quadratic function or equation162, shown below as equation (9):
SOC(k)=f(Vterm,V(k),V(k−1),SOC(k−1))  (9)

where Vterm is the termination voltage of the battery104. In one implementation, the processor120executes the program instructions144so as to begin use of the convergence algorithm or equation162close to a predetermined termination voltage, or to begin using the alternate equation162terminate voltage or if the estimated SOC capacity value160would otherwise jump to zero. The use of the alternate SOC equation162in certain examples facilitates smooth transition or approach of the estimated SOC value160toward zero, while avoiding overestimation at any point.

FIGS. 19-23illustrate one example operation of the controller IC102in computing a maximum voltage using the component164of the memory122in order to provide automatic detection of the actual charging voltage of the associated battery104. In this example, the processor120computes a maximum voltage value VMAX at221inFIG. 2according to a charging voltage during charging of the associated battery104. In addition, the processor120correlates a maximum remaining capacity value (e.g., 100% SOC or 0% DOD) to the maximum voltage value VMAX.FIG. 19provides a graph1900that shows a battery voltage curve1902for a charging and discharging cycle. In particular, the associated battery104reaches a maximum charging voltage (VMAX) illustrated as the peak voltage of the curve1902.FIGS. 19-23illustrate simulation results for an associated battery104with a true charging voltage of 4400 mV, with the default the maximum voltage value in the memory122of 4200 vV.FIG. 20shows a graph2000that includes an estimated SOC curve2002and an actual SOC curve2004for a charging and discharging cycle of the associated battery104using a preset maximum charging voltage.FIG. 20shows that the estimated SOC (curve2002) reaches 100% much earlier than the actual SOC (curve2004).

FIG. 21shows a graph2100including a remaining SOC error curve2102for the charging and discharging cycle ofFIG. 20using the preset maximum charging voltage. In the example ofFIGS. 20 and 21, the processor120uses a default maximum voltage in correlates the default voltage to 100% SOC (e.g., 0% DOD). In order to facilitate one time programming of the controller IC102, while obtaining the benefits of no direct measurement of the battery current IBAT,FIGS. 22 and 23illustrate operation of the example controller IC using the VMAX computation component164.FIG. 22shows a graph2200that includes an estimated SOC curve2202, and an actual SOC curve2204.FIG. 23shows a graph2300that includes a remaining SOC error curve2302corresponding to the charge/discharge cycle illustrated inFIG. 22using the VMAX computation component164. The algorithm164in this example learns the maximum voltage (e.g., the new charging voltage (4400 mV)) from the previous charging cycle and hence 100% SOC is reached corresponding to the correct charging voltage thereby significantly reducing the error. Comparing the curves2102and2302ofFIGS. 21 and 23, the use of the maximum voltage computation component164and the correlation of this measured current and voltage to the 100% SOC or 0% DOD value by the controller IC102significantly reduces the error in the estimated remaining battery capacity. In one example implementation, the controller IC102ensures that the maximum voltage of a battery will always correspond to the charging voltage when it is charged according to a constant current constant voltage (CC-CV) charging profile. The processor120in this example monitors the maximum battery voltage and saves the new maximum voltage as the charging voltage that corresponds to the 100% SOC. The processor120then uses the new charging voltage as the 100% SOC point for the next charging cycle.