Abstract:
A method of determining the state of a battery including the steps of generating a state vector that describes the state of the battery, predicting a response for the state vector, measuring a response of the battery, and correcting the state vector based on the differences between the predicted response and a measured response to determine the state of the battery.

Description:
TECHNICAL FIELD 
     The present invention relates to a method and apparatus for determining the state of a battery. More specifically, the present invention relates to a prediction and correction method for determining the state of charge of a battery. 
     BACKGROUND OF THE INVENTION 
     In today&#39;s automotive market, there exist a variety of propulsion or drive technologies used to power vehicles. The technologies include internal combustion engines (ICEs), electric drive systems utilizing batteries and/or fuel cells as an energy source, and hybrid systems utilizing a combination of internal combustion engines and electric drive systems. The propulsion systems each have specific technological, financial, and performance advantages and disadvantages, depending on the state of energy prices, energy infrastructure developments, environmental laws, and government incentives. 
     The increasing demand to improve fuel economy and reduce emissions in present vehicles has led to the development of advanced hybrid vehicles. Hybrid vehicles are classified as vehicles having at least two separate power sources, typically an internal combustion engine and an electric traction motor. Hybrid vehicles, as compared to standard vehicles driven by an ICE, have improved fuel economy and reduced emissions. During varying driving conditions, hybrid vehicles will alternate between separate power sources, depending on the most efficient manner of operation of each power source. For example, a hybrid vehicle equipped with an ICE and an electric motor will shut down the ICE during a stopped or idle condition, allowing the electric motor to propel the vehicle and eventually restart the ICE, improving fuel economy for the hybrid vehicle. 
     Hybrid vehicles are broadly classified into series or parallel drivetrains, depending upon the configuration of the drivetrains. In a series drivetrain utilizing an ICE and an electric traction motor, only the electric motor drives the wheels of a vehicle. The ICE converts a fuel source to mechanical energy to turn a generator which converts the mechanical energy to electrical energy to drive the electric motor. In a parallel hybrid drivetrain system, two power sources such as an ICE and an electric traction motor operate in parallel to propel a vehicle. Generally, a hybrid vehicle having a parallel drivetrain combines the power and range advantages of a conventional ICE with the efficiency and electrical regeneration capability of an electric motor to increase fuel economy and lower emissions, as compared with a traditional ICE vehicle. 
     Battery packs having secondary/rechargeable batteries are an important component of hybrid or electrical vehicle systems, as they enable an electric motor/generator (MoGen) to store braking energy in the battery pack during regeneration and charging by the ICE. The MoGen utilizes the stored energy in the battery pack to propel or drive the vehicle when the ICE is not operating. During operation, the ICE will be turned on and off intermittently, according to driving conditions, causing the battery pack to be constantly charged and discharged by the MoGen. The state of charge (SOC, defined as the percentage of the full capacity of a battery that is still available for further discharge) is used to regulate the charging and discharging of the battery. 
     Rechargeable batteries are also an important component in other applications where a battery pack is continually cycled, such as in solar-powered battery packs for satellites, portable communication apparatus and non-interruptable power supplies. 
     The preferred embodiment of the present invention utilizes a nickel/metal hydride (NiMH) battery in the battery pack. A NiMH battery stores hydrogen in a metal alloy. When a NiMH cell is charged, hydrogen generated by the cell electrolyte is stored in the metal alloy (M) in the negative electrode. Meanwhile, at the positive electrode, which typically consists of nickel hydroxide loaded in a nickel foam substrate, a hydrogen ion is ejected and the nickel is oxidized to a higher valency. On discharge, the reactions reverse. The reaction at the negative electrode is more clearly shown by the following reaction diagram: 
     
       
         MH x +OH − ⇄MH x−1 +H 2 O+e −   
       
     
     The discharging direction is represented by →; the charging direction is represented by ←. 
     On discharge, OH- ions are consumed at the negative hydride electrode and generated at the nickel oxide positive electrode. The converse is true for the water molecules. 
     A difficulty with NiMH batteries is predicting their SOC because of the charging and discharging characteristics of NiMH battery technology. 
     Referring to FIG. 1, typical charge increasing 10 and charging decreasing 12 curves are illustrated for a NiMH battery. Referencing points A and B and points C and D, it can be shown that the voltages are the same while the SOCs are substantially different. Thus, it is very difficult to use an open circuit voltage to accurately predict the SOC of the NiMH battery, as the battery operating operation (charge increasing, charge sustaining or charge decreasing) must be known. Furthermore, coulombic integration methods to determine the SOC of a battery suffer from accumulated errors. When used with a hybrid vehicle, the intermittent charging and discharging of the battery pack amplifies the problems associated with predicting the SOC of a NiMH battery pack. To successfully operate a hybrid powertrain of a vehicle incorporating a battery pack, an accurate and repeatable estimate of battery SOC is needed. 
     A technique used by the present invention to describe the SOC and operating characteristics of a battery is state estimation. When a system can be described by either a differential or difference equation, there are state variables associated with that system. These systems are typically referred to as dynamical (or dynamic) systems. A very simple example of such a system comprises:               x          t       =       x   .     =     f        (   x   )                                
     or 
     
       
         x k+1 =ƒ(x k ) 
       
     
     The notation {dot over (x)} is used to denote differentiation with respect to time. This is a system without an input that has a state x that evolves over time according to the function ƒ. The values at a given time are completely determined by the initial value x 0 . A more complex system includes inputs and observations (or measurements). An example of such a system is 
     
       
         X k+1 =ƒ s (x k ,u k ) 
       
     
     
       
         y k =ƒ m (x k ,u k ) 
       
     
     In this case, u is an input and y is an observable output of the system. ƒ s  maps the current state, x k , and input, u, to the next state X k+1 . ƒ m  maps the current state and input to the measurement y. When these equations are used to describe physical systems, noise is added to the description of the system. An example of this is 
     
       
         x k+1 =ƒ s (x k ,u k )+n p   
       
     
     
       
         y k =ƒ m (x k ,u k )+n m   
       
     
     In this example, n p  is the noise associated with the evolution of the state. n m  describes noise associated with measurement. 
     State estimation refers to the set of techniques used to determine the state x given the measurements y for dynamical systems illustrated above. Two very common approaches to state estimation are (a) inversion methods such as {circumflex over (x)} k =ƒ m   −1 (y,u) and (b) ad hoc/expert system methods which estimate state based on special case tests or conditions. 
     For special cases of systems, there are optimal methods for performing state estimation. For linear systems in the presence of white gaussian noise, a Kalman Filter (KF) is the optimal state estimator. The KF estimates the state of the system with the minimum mean squared error between the estimate and the true value. The KF estimates the state using all information available in the model, the noise characterization and all previous observations. 
     For nonlinear systems, there are several methods available to perform state estimation. The most common of these is the Extended Kalman Filter (EKF) and Hybrid Kalman Filter (HKF). Both linearize the system to update the state estimate. Both are near optimal methods for estimating a systems state. 
     SUMMARY OF THE INVENTION 
     The present invention includes a method and apparatus to determine the state of charge (SOC) and operating characteristics of a battery pack utilizing NiMH batteries or any other rechargeable battery technology known in the art including, but not limited to, lead acid and lithium polymer batteries. The method of the present invention includes an SOC algorithm that combines the concepts of state estimation with the concepts of system identification in a prediction-correction model. The SOC in a battery and the voltage hysteresis of the battery are estimated as states of the battery. The resistance and impulse response of the battery are estimated using system identification techniques. The state and the system identification are used in combination to establish an optimal estimation of the SOC and other characteristics of a battery. 
     The SOC algorithm of the present invention relies on a simplified model of the battery behavior that includes an amp-hour integrator, a first order differential equation describing voltage hysteresis, an adaptive description of battery impedance, a function which relates battery charge hysteresis, impedance and current to terminal voltage, and a description of the measurement errors and modeling errors. The model of the battery behavior and description of the measurement and modeling errors are combined into an Extended Kalman Filter (EKF). In operation, the EKF uses the model of the battery to predict the voltage on the terminals due to the current on the terminals. The difference between the predicted voltage and the measured voltage is then used to correct the state variables. The correction to the state variables is a near optimal method for minimizing the sum of squared errors between the estimated values and the actual values. 
     The present invention, in the preferred embodiment, further includes a vehicle having a parallel hybrid drive system incorporating an energy management controller and hybrid system controller executing the methods of the present invention, an internal combustion engine (ICE), and a motor-generator (MoGen) that charges and discharges the battery pack. The MoGen not only provides for propulsion of the vehicle during certain vehicle operating conditions but also replaces an alternator to charge the battery pack in the vehicle and replaces a conventional starter motor to start the ICE. The hybrid drive system of the present invention will utilize the ICE and MoGen to propel or motor the vehicle during the vehicle conditions which are most efficient for the ICE or MoGen operation. For example, during deceleration or a stopped condition, fuel flow to the ICE will be cut off, as these conditions are some of the least efficient conditions to run the ICE. The MoGen system becomes the active propulsion or motoring system during this fuel cut-off feature and powers the vehicle without noticeably disturbing the operation of the vehicle or sacrificing driveability. The MoGen will propel the vehicle and smoothly transition the vehicle from the idle or stopped state and start the ICE for ICE driving conditions. The transfer of power between the MoGen and ICE or vice versa is transparent to the operator or driver, as the vehicle will perform as if there is only one drive system propelling the vehicle. 
     During normal operation of the vehicle when the ICE is running, the MoGen will act as an electrical generator to supply electrical power to the vehicle&#39;s electrical infrastructure (fans, radios, instrumentation, control, etc.) as well as recharging the battery pack. The battery pack and a power supply, such as a DC—DC converter, will supply power to the vehicle electrical infrastructure and power the MoGen when it is operating as the motoring device for the vehicle. In the motoring mode, the MoGen is an electrical load drawing current from the battery pack. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a diagrammatic drawing of a NiMH battery potential for rates of charge (upper curve) and discharge (lower curve); 
     FIG. 2 is a diagrammatic drawing of the hybrid vehicle of the present invention; 
     FIG. 3 is a process control flow diagram of the function generating the RTDL vector in the preferred method of the present invention; and 
     FIG. 4 is a process control flow diagram of the preferred method of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 2 is a diagrammatic drawing of a hybrid vehicle  14  of the present invention. The hybrid vehicle  14  includes a battery pack  16  having a single battery module or individual battery modules. In the preferred embodiment, the battery pack  16  comprises a plurality of NiMH batteries connected in series to produce a 36 Volt nominal bus. In alternate embodiments of the present invention, the battery pack  16  may comprise any known battery technology, including but not limited to lead acid and lithium polymer. 
     A motor generator (MoGen)  20  is dynamically coupled to an internal combustion engine (ICE)  22  and functions as either a motor to propel the vehicle  14  or a generator to charge the battery pack  16 , depending on the operating state of the vehicle  14  (i.e., braking, stopped, or operating at a constant speed on a highway). The MoGen  20  is preferably an AC induction machine but may comprise any known electrical motor/generator technology, including, but not limited to, DC machines, synchronous machines, and switched reluctance machines. The MoGen  20  in the preferred embodiment is located on the rear of the vehicle to drive the rear wheels  17 . A similar MoGen  20  is located on the front of the vehicle to drive the front wheels  18 . 
     The MoGens  20  are controlled by an electrical control system comprising a hybrid system controller  23 , DC—DC converters  24  and power inverter modules  25 . In alternate embodiments of the present invention, the controller  23 , DC—DC converters  24 , and power inverter modules  25  may be configured as a unitary system. The hybrid system controller  23  may comprise any type of control module or vehicle controller known in the art, and is equipped with nonvolatile memory (NVM), random access memory (RAM), discrete and analog input/output (I/O), a central processing unit, communications interfaces for conventional and wireless (Bluetooth®) networking within an automotive communications network, etc. 
     The MoGens  20  in generator mode generate electrical energy that is transferred to the battery pack  16  and the DC—DC converters  24  by the controller  23  and inverter modules  25 . The controller  23  and inverter modules  25  determine the direction of current flow for the MoGens  20 , according to the vehicle  14  operating state. The DC—DC converters  24  provide and regulate the DC bus that is pulse-width-modulated by the inverter modules  25  to supply time varying current to the MoGens  20 . In a regeneration state (such as during braking) or charging condition, current will flow from the MoGens  20 , via the inverter modules  25 , to charge the battery pack  16  and provide current to the DC—DC converters  24 . In a state where the MoGens  20  are needed to provide propulsion, current will flow from the battery pack  16  to the MoGens  20 , via the DC—DC converters  24  and inverter modules  25 , to power the MoGens  20 . 
     In the preferred embodiment of the present invention, the SOC of the battery pack  16  is dynamically tracked to determine when to charge the battery pack  16 . The hybrid controller  23  of the present invention will control a battery pack&#39;s SOC near 50% to 80% so that the charge acceptance and efficiency during regenerative braking can be realized, although controlling the battery pack  16  to any SOC percentage is within the scope of the present invention. 
     To determine and control the SOC of the battery pack  16 , the following methods will be employed. To aid in the understanding of the following methods and algorithms, variables and functions will be defined as follows: 
     Definition of Variables Used in the Preferred Method: 
     
       
         
               
               
             
           
               
                   
               
             
             
               
                 α 
                 a vector, which when cross multiplied by the RTDL 
               
               
                   
                 vector results in an estimate of the impulse response 
               
               
                   
                 voltage 
               
               
                   
               
               
                 
                   
                     
                       
                         ( 
                         
                           E 
                           R 
                         
                         ) 
                       
                     
                             
                     
                         
                     
                   
                 
                 constant in the self discharge equation, nominal value of 6789 
               
               
                   
               
               
                 F 
                 temporary matrix used to hold linearized value of 
               
               
                   
                 propagation equations 
               
               
                 F N   
                 constant in the Nernst equation, nominal value of 96487 
               
               
                 H 
                 temporary matrix used to hold linearized values of 
               
               
                   
                 measurement equation 
               
               
                 I Parasitic   
                 the parasitic current drawn from the battery while not 
               
               
                   
                 monitored, units in amps 
               
               
                 I Identity   
                 Identity matrix 
               
               
                 I 
                 value of cell terminal current as sample k, units of amps 
               
               
                 K0 
                 constant in the self discharge equation, nominal value 
               
               
                   
                 1.0683e7 in units of 1/hr 
               
               
                 Kf 
                 temporary matrix, holds the Kalman gain 
               
               
                 KG 
                 temporary matrix used 
               
               
                 P 0   
                 initial value of the estimate covariance or quality of the 
               
               
                   
                 estimate 
               
               
                   
               
               
                   
                 
                   
                     
                       
                         
                           [ 
                           
                             
                               
                                 
                                   var 
                                    
                                   
                                     ( 
                                     
                                       Q 
                                       0 
                                     
                                     ) 
                                   
                                 
                               
                               
                                 0 
                               
                               
                                 0 
                               
                             
                             
                               
                                 0 
                               
                               
                                 
                                   var 
                                   ( 
                                   
                                     Q 
                                     
                                       H 
                                       0 
                                     
                                   
                                   ) 
                                 
                               
                               
                                 0 
                               
                             
                             
                               
                                 0 
                               
                               
                                 0 
                               
                               
                                 
                                   cov 
                                    
                                   
                                       
                                   
                                    
                                   ar 
                                    
                                   
                                       
                                   
                                    
                                   
                                     ( 
                                     
                                       a 
                                       0 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           ] 
                         
                          
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
               
               
                   
                 nominal values are: 
               
               
                   
               
               
                   
                 
                   
                     
                       
                         
                           [ 
                           
                             
                               
                                 3.0 
                               
                               
                                 0 
                               
                               
                                 0 
                               
                             
                             
                               
                                 0 
                               
                               
                                 1.0 
                               
                               
                                 0 
                               
                             
                             
                               
                                 0 
                               
                               
                                 0 
                               
                               
                                 
                                   diag 
                                    
                                   
                                     ( 
                                     
                                       [ 
                                       0.0001 
                                       ] 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           ] 
                         
                          
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
               
               
                 Q max   
                 capacity of the battery, nominal value of 12.6 amp-hrs 
               
               
                 Q H max 0   
                 amount of charge in hysterysis, nominal value of 1.8 
               
               
                   
                 amp-hrs 
               
               
                 Q 
                 estimate of the number of amp-hours in the pack 
               
               
                 Q 0   
                 value to use to initialize the estimate on a new battery, 
               
               
                   
                 nominal value of 0.5 · Q Max   
               
               
                 Q H   
                 estimate of the charge associated with the hysterysis 
               
               
                   
                 voltage, units of amp-hrs 
               
               
                 Q H     0     
                 value used to initialize the hysterysis voltage estimation, 
               
               
                   
                 nominal value of 0 amp-hrs 
               
               
                 R 
                 variance of voltage measurement, nominal value of 
               
               
                   
                 0.0025 
               
               
                 Re 
                 temporary matrix 
               
               
                 Rg 
                 constant in Nernst Equations, nominal value 8.314 
               
               
                 RTDL 
                 a history vector which contains transformation of current 
               
               
                   
                 information. The elements of the vector are current values 
               
               
                   
                 which are subjected to one or more of the following 
               
               
                   
                 operations: delays in time, resampling, frequency 
               
               
                   
                 filtering, linear scaling and nonlinear scaling, units of 
               
               
                   
                 amps. 
               
               
                 T 
                 value of cell skin temperature at sample k, units of 
               
               
                   
                 degrees Kelvin 
               
               
                 Ts 
                 sample time in seconds, nominal value of 1.00 
               
               
                 U θ   
                 pivot voltage in Nernst Equations, nominal value of 
               
               
                   
                 1.345 volts 
               
               
                 V 
                 value of cell terminal voltage at sample k, units of volts 
               
               
                 x −   
                 vector containing the states and parameter estimates of 
               
               
                   
                 the battery prior to correction from the measurements 
               
               
                   
                 [Q Q H  α T ] T   
               
               
                 x +   
                 vector containing the states and parameter estimations of 
               
               
                   
                 the battery after the correction from measurements 
               
               
                   
                 [Q Q H  α T ] T   
               
               
                 β 
                 rate of hysteresis charge change, nominal value of 1.6 hr 
               
               
                 γ 
                 ratio of hysteresis charge to cell voltage, nominal value 
               
               
                   
                 of 0.02222 V/amp-hr 
               
               
                 δ 
                 reciprocal of amount of charge required to saturate 
               
               
                   
                 hysteresis, 
               
               
                   
               
               
                   
                 
                   
                     
                       
                         nominal 
                          
                         
                             
                         
                          
                         value 
                          
                         
                           1 
                           
                             0.1 
                             · 
                             
                               Q 
                               max 
                             
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
               
             
          
         
       
     
     Definition of Functions Used in the Preferred Method: 
     α Var (I)—process noise variance associated with the impulse response parameters as a function of current. 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                   
               
               
                   
                 abs(I) 
                 Variance 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 0 
                 0.0000055 
               
               
                   
                 1 
                 0.0000060 
               
               
                   
                 5 
                 0.0000100 
               
               
                   
                 25 
                 0.0000250 
               
               
                   
                 100 
                 0.0001000 
               
               
                   
                   
               
             
          
         
       
     
     next_x=ƒ(x,u)—a discrete time nonlinear model of battery dynamics where [Q Q H  α T ]=x T  and [I T]=u T , 
     
       
         next_Q=Q+((I·η(Q,T)−I SD (Q,T))/3600)·Ts 
       
     
     
       
         iƒ(I−I SD &gt;0) 
       
     
                 next   —          Q   H       =       Q   H     +     β   ·     (       (     I   +       I   SD          (     Q   ,   T     )         )     3600     )     ·   Ts   ·           Q     H                 max                 inc            (   Q   )       -     Q   H           Q     H                 max                 inc            (   Q   )                   else             next   —          Q   H       =       Q   H     +     β   ·     (       (     I   +       I   SD          (     Q   ,   T     )         )     3600     )     ·   Ts   ·           Q     H                 max                 dec            (   Q   )       +     Q   H           Q     H                 max                 dec            (   Q   )                                   next_α=α 
     
       
         next_x=[next_Q next_Q H  next_α T ] T   
       
     
     dƒdx(x,u)—the Jacobian matrix of ƒ(x,u) with respect to x 
     The vector [I T]=u T  contains the current and temperature. 
     The vector [Q Q H  α T ]=x T  contains the state estimate. 
     If I&gt;0 this function returns              [           (     1   +          η                            Q        (     I   ,   Q   ,   T     )         ·   Ts   ·     I   3600         -     Ts   ·         I   SD          (     Q   ,   T     )         Q   ·   3600           )         0       0             (     β   ·   Ts   ·     (       -       I   SD          (     Q   ,   T     )           Q   ·   3600       )     ·           Q     H                 max            (   Q   )       -     Q   H           Q     H                 max            (   Q   )           )           (     1   -     β   ·       I   -       I   SD          (     Q   ,   T     )         3600     ·   Ts       )         0           0       0         diag        (   1   )             ]                                        
      otherwise, it returns              [           (     1   +          η                            Q        (     I   ,   Q   ,   T     )         ·   Ts   ·     I   3600         -     Ts   ·         I   SD          (     Q   ,   T     )         Q   ·   3600           )         0       0             (     β   ·   Ts   ·     (       -       I   SD          (     Q   ,   T     )           Q   ·   3600       )     ·           Q     H                 max            (   Q   )       +     Q   H           Q     H                 max            (   Q   )           )           (     1   +     β   ·       I   -       I   SD          (     Q   ,   T     )         3600     ·   Ts       )         0           0       0         diag        (   1   )             ]                                        
     y=h(x,u,RTDL)—a function which forms voltage estimate from states and currents 
     
       
         [Q Q H  α T ]=x T   
       
     
     
       
         [I T]=u T   
       
     
     
       
         V=QtoV(Q)+γ·Q H +RTDL·α T   
       
     
     
       
         y=[V] 
       
     
     dhdx(x,u,RTDL)—a function which returns the Jacobian of h(·) with respect to x 
     
       
         [Q Q H  α T ]=x T   
       
     
     
       
         [I T]=u T   
       
     
     
       
         
           
             
               
                  
                 h 
               
               
                  
                 x 
               
             
             = 
             
               [ 
               
                 
                    
                   
                      
                     Q 
                   
                 
                  
                 
                     
                 
                  
                 
                   
                      
                     h 
                   
                   
                      
                     
                       Q 
                       H 
                     
                   
                 
                  
                 
                     
                 
                  
                 
                   
                      
                     h 
                   
                   
                      
                     
                       a 
                       T 
                     
                   
                 
               
               ] 
             
           
         
                 
         
             
         
      
     
      where Q is in amp-hrs and T is in Kelvin,        f   =     F     Rg   ·   T               SOC   =     Q     Q   max                      V            Q   H         =       -     (     1   T     )       ·     (     1   f     )     ·     log        (       SOC     1.0001   -   SOC       +   0.0001     )                        V            Q   H         =   γ                  V            a   T         =     RTDL   T                            
     I SD (Q,T)—Self Discharge current as a function of charge and temperature 
     where T is in Kelvin, and Q is in amp-hrs          I   SD     =       K0   ·          (       -     (     E   R     )            1   T       )       ·   Q                   in                 amps                            
     Q H max inc (Q)—maximum hysteresis charge under charge increasing conditions 
     
       
         Q H max inc =(1−e −δ(Qmax−Q) )·Q H max 0   
       
     
      with        δ   =     1       0.1   ·   Q                   max                              
     Q H max dec (Q)—maximum hysteresis charge under charge decreasing conditions 
     
       
         Q H max dec =(1−e −δ·Q )·Q H max 0   
       
     
      with        δ   =     1       0.1   ·   Q                   max                              
     Q HVar (Q)—process noise variance associated with propagation of the hysteresis estimate. This variance is associated with battery charge. All values are linearly interpolated. 
     
       
         
               
               
               
             
           
               
                   
                   
               
               
                   
                 Q/Q max   
                 Variance 
               
               
                   
                   
               
             
             
               
                   
                 0.0 
                 0.00001 
               
               
                   
                 0.1 
                 0.00010 
               
               
                   
                 0.2 
                 0.00020 
               
               
                   
                 0.4 
                 0.00030 
               
               
                   
                 0.5 
                 0.00050 
               
               
                   
                 0.6 
                 0.00030 
               
               
                   
                 0.8 
                 0.00020 
               
               
                   
                 0.9 
                 0.00010 
               
               
                   
                 1.0 
                 0.00001 
               
               
                   
                   
               
             
          
         
       
     
     Q HVar (Q H ,I)—process noise variance associated with propagation of the hysteresis estimate. This variance is associated with voltage hysteresis charge. All values are linearly interpolated. 
     If I&gt;0 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                   
               
               
                   
                 Q H /Q H max inc  (Q) 
                 Variance 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 −1.0 
                 0.050 
               
               
                   
                 −0.8 
                 0.050 
               
               
                   
                 −0.6 
                 0.050 
               
               
                   
                 −0.4 
                 0.050 
               
               
                   
                 −0.2 
                 0.050 
               
               
                   
                 0.0 
                 0.050 
               
               
                   
                 0.2 
                 0.050 
               
               
                   
                 0.4 
                 0.040 
               
               
                   
                 0.6 
                 0.030 
               
               
                   
                 0.8 
                 0.020 
               
               
                   
                 1.0 
                 0.001 
               
               
                   
                   
               
             
          
         
       
     
      Else 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                   
               
               
                   
                 Q H /Q H max dec  (Q) 
                 Variance 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 −1.0 
                 0.001 
               
               
                   
                 −0.8 
                 0.020 
               
               
                   
                 −0.6 
                 0.030 
               
               
                   
                 −0.4 
                 0.040 
               
               
                   
                 −0.2 
                 0.050 
               
               
                   
                 0.0 
                 0.050 
               
               
                   
                 0.2 
                 0.050 
               
               
                   
                 0.4 
                 0.050 
               
               
                   
                 0.6 
                 0.050 
               
               
                   
                 0.8 
                 0.050 
               
               
                   
                 1.0 
                 0.050 
               
               
                   
                   
               
             
          
         
       
     
     QtoV(Q,T)—equation which converts charge and temperature to open circuit voltage using the Nernst equation. Where Q is in amp-hrs and T is in Kelvin,        f   =       F   N       Rg   ·   T               SOC   =     Q     Q   max                 V   =       U   θ     +       1   f     ·     log        (       SOC     1.0001   -   SOC       +   0.0001     )             ,     volts                 per                 cell                            
      Note: The relationship used for QtoV(Q,T) can be more general and is not limited to the Nernst equation for NiMH batteries. 
     Q Var (Q)—process noise variance associated with the prediction of Q as a function of Q. Nominal values, linearly interpolated: 
     
       
         
               
               
               
             
           
               
                   
                   
               
               
                   
                 Q/Q max   
                 Variance 
               
               
                   
                   
               
             
             
               
                   
                 0.0 
                 0.00002 
               
               
                   
                 0.2 
                 0.00001 
               
               
                   
                 0.4 
                 0.00001 
               
               
                   
                 0.5 
                 0.00001 
               
               
                   
                 0.6 
                 0.00001 
               
               
                   
                 0.8 
                 0.00005 
               
               
                   
                 1.0 
                 0.00010 
               
               
                   
                   
               
             
          
         
       
     
     φ(Q,Q H ,I)—process noise variance as a function of charge, hysteresis charge and current.        ϕ   =     [             Q   Var          (   Q   )           0       0           0         (         Q   HVar          (   Q   )       +       Q   HVar          (       Q   H     ,   I     )         )         0           0       0           a   Var          (   I   )             ]                            
     η(Q, T)—charge efficiency of the battery as a function of charge and temperature. The nominal value for this function is 0.99. 
     dηdQ(I,Q,T)—change in charge efficiency as a function of Q. Since the nominal value of η(Q,T) is constant, this nominal value is 0. 
     This invention provides a method to estimate the state, including but not limited to the SOC, temperature, and power of a battery that relies on two distinct steps: a prediction of the next battery response and a correction based on the differences (i.e., quality of the prediction) between the prediction and the measured response of the battery. The correction is based on a statistically optimal method. 
     The method of the present invention, in a first embodiment, produces a state vector which preferably comprises a state of charge estimate, Q, a hysteresis charge estimate, Q H , and a q×1 vector of learned battery responses, α. The learned battery responses are used to predict the terminal voltage that occurs under load.          state                 vector     =     x   =     [         Q             Q   H               a   1             ⋮             a   q           ]                              
     This dynamic voltage is formed by multiplying the learned battery response by a vector of current measurements which have been modified and time shifted. 
     Initialization 
     The first step in the preferred method is initialization. When the method is initialized for the first time, an initial value is selected for each of the state variables. Based on the variances and covariances (which can be quantified as the quality of the estimate) of the initialization vector, a covariance matrix is initialized, P 0 . A vector that contains the current history is also initialized to a set of values that represents the currents prior to initialization. This vector is referred to as resampled, tap delay line (RTDL). 
     Referring to the process flow diagram of FIG. 3, the RTDL vector can be expanded. The illustrated function forms the elements of the RTDL vector in combination of the following: 
     the input u 
     undelayed by 1 or more sample intervals 
     nonlinear functions of u 
     nonlinear functions of u delayed by one or more sample intervals 
     filtered values of u 
     filtered values of u delayed by one or more samples 
     combinations of filtered and nonlinear transforms on u and combinations of filtered and nonlinear transforms on u delayed by one or more samples 
     First Initialization: 
     Let RTDL=[0]. 
     Let x − =[Q 0  Q H     0    α T ] T . 
     Let P−=P 0 . 
     When the preferred method of the present invention is restarted after a long period without updates, the following procedure is used. 
     Recover x +  from nonvolatile memory. 
     Recover T from nonvolatile memory and store in oldT. 
     Sample temperature and store in T. 
     Recover RTDL from nonvolatile memory. 
     Calculate the time in seconds since the last update of x +  and store in t. 
     Let x − =x + . 
     Let P − =P + . 
     For i=1 to t repeatedly do the following: 
     Estimate the temperature at time i by 
     
       
         
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
           
               
                   
               
             
             
               
                 Recover x + from nonvolatile memory. 
               
               
                 Recover T from nonvolatile memory and store in oldT. 
               
               
                 Sample temperature and store in T. 
               
               
                 Recover RTDL from nonvolatile memory. 
               
               
                 Calculate the time in seconds since the last update of x +  and store in t. 
               
             
          
           
               
                   
                 Let x −  = x + . 
               
               
                   
                 Let P −  = P + . 
               
               
                   
                 For i = 1 to t repeatedly do the following: 
               
               
                   
                   
               
               
                   
                 Estimate the temperature at time i by 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           T 
                           ^ 
                         
                         = 
                         
                           
                             old 
                              
                             
                                 
                             
                              
                             T 
                           
                           + 
                           
                             i 
                             · 
                             
                               
                                 
                                   T 
                                   - 
                                   
                                     old 
                                      
                                     
                                         
                                     
                                      
                                     T 
                                   
                                 
                                 t 
                               
                               . 
                             
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Let I = I Parasitic   
               
               
                   
                 Update RTDL using I. 
               
               
                   
                 Let u = [I {circumflex over (T)}] T . 
               
               
                   
                 Propagate the value of x −  by performing an iteration of the nonlinear 
               
             
          
           
               
                 model: x −  = f (x − , u). 
               
             
          
           
               
                   
                 Linearize the model about the current operating point, let 
               
             
          
           
               
                 F = dfdx(x − ,u). 
               
             
          
           
               
                   
                 Get Q and Q H  from the x −  vector. 
               
               
                   
                 Propagate the covariance estimate, Let P −  = F · P −  · F T  + φ(Q, Qh, I) 
               
               
                   
                   
               
             
          
         
       
     
     Let I=I Parasitic    
     Update RTDL using I. 
     Let u=[I {circumflex over (T)}] T . 
     Propagate the value of x −  by performing an iteration of the nonlinear model: x − =ƒ(x − ,u). 
     Linearize the model about the current operating point, let F=dƒdx(x − ,u). 
     Get Q and Q H  from the x −  vector. 
     Propagate the covariance estimate, Let P − =F·P − ·F T +φ(Q, Qh,I) 
     Prediction 
     Every iteration of the preferred method comprises one or more prediction steps. When a prediction step occurs, three things happen. The nonlinear model is linearized about the current state, then this linear model is used to propagate the covariance of the estimate. The nonlinear model of the method is used to predict the next state the system. The modified current history vector (RTDL) is updated based on the current estimate. A simple embodiment of the modified current history vector is a tap delay line. The input vector u may be based on a measurement of current, or carried forward from a previous measurement. With reference to the signal flow diagram of FIG. 4, the following prediction steps may be executed. 
     Update the RTDL vector using u. See block  30  of FIG.  4 . 
     Propagate the estimate, let x − =ƒ(x + ,u). See block  32  of FIG.  4 . 
     Linearize the model about the estimate, F=dƒdx(x + , u). See block  34  of FIG.  4 . 
     Propagate the covariance, get Q and QH from the x −  vector, then let P − =F·P + ·F+φ(Q,Q H ,I). See block  36  of FIG.  4 . Block  36  generates a quality estimate of the state estimate before the correction step. 
     Blocks  38  and  39  represent unit time delays. 
     Correction and Quality Estimate 
     To correct the estimate, a measurement is made of current and voltage. Based on a linearized model of the battery, about its present state estimate, the measurement correction is performed as follows. 
     Sample voltage and current. Assign these values to u, y, respectively. 
     Note: Voltage and current are sampled synchronously. 
     Let u=[I]. 
     Let y=[V] 
     Perform the measurement correction step of the Kalman Filter: 
     Linearize the model about the current state, let H=dhdx(x − ,u,RTDL). See block  40  of FIG.  3 . 
     Let Re=H·P − ·H T +R. 
     Calculate the Filter Gain, let K ƒ =P − ·H T ·Re −1 . See blocks  42  and  46  of FIG.  4 . 
     Calculate the innovation (the difference between the estimate and the measured value), let e=y−h(x − ,u, RTDL). 
     Update the state estimate, let x + =x − +K ƒ ·e . See block  44  of FIG.  4 . 
     Let KG=(I Identity −Kƒ·H). 
     Update the covariance value, let P + =KG·P − ·KG T +Kƒ·R·Kƒ T . See block  48  of FIG.  4 . 
     Blocks  46  and  48  generate a quality estimate of the ?? after the correction steps. 
     Finally, the updated state variables are stored in nonvolatile memory. The SOC of the battery pack  16  is obtained by recovering the 1 st  element of the x +  vector, Q, and calculating state of charge as the ratio of the estimated charge to the maximum charge capacity of the pack:        SOC   =       Q     Q   max       .                            
     The present invention further includes an acceptance and discharge capability predictor algorithm (i.e., power) that utilizes the SOC methods of the present invention. The SOC method constructs a model of the battery in the process of predicting SOC. This model can be used to predict the charge acceptance of the battery or the discharge capability of the battery. 
     For the purposes of this discussion, charge acceptance is a measure of the amount of power that can be accepted by the battery until a defined voltage lid is reached. Discharge capability is defined as a measure of the amount of power that can be sourced by the battery until a defined voltage floor is reached. 
     One measure of charge acceptance is the amount of time that a fixed power level can be accepted or delivered by the battery. The following method will calculate this: 
     Where P is the desired power level, t max  is the maximum time of charge acceptance, V Lid  is the highest voltage that can be sustained, and V Floor  is the lowest voltage that can be sustained by executing the following: 
     Make a copy of the current state variables, let {circumflex over (x)}=[Q Q H  α T ] T . 
     Make a copy of the current tap delay line, let R{circumflex over (T)}DL=RTDL. 
     Measure the voltage and store in V{circumflex over ( )}. 
     Measure the temperature and store in T. 
     Assume that the power level can be sustained, t=0. 
     Repeat until (t&gt;t max ) or (V&gt;V Lid ) or (V&lt;V Floor )          Let                   I   ^       =       P     V   ^       .                            
     Let û=[Î T] T . 
     Update the tap delay line R{circumflex over (T)}DL using Î. 
     Let x=ƒ({circumflex over (x)},û). 
     Let {circumflex over (V)}=h({circumflex over (x)},û,R{circumflex over (T)}DL). 
     Let t=t+Ts. 
     On exiting this loop, the minimum time at power P is greater then t. 
     While this invention has been described in terms of some specific embodiments, it will be appreciated that other forms can readily be adapted by one skilled in the art. Obvious adaptations include, but are not limited to, the use of a finite differences model (or finite element model) of the battery chemistry, alternative electrical models of the battery, and using voltage where current is used in the preferred embodiment. Accordingly, the scope of this invention is to be considered limited only by the following claims.