Abstract:
The invention provides a method of determining a vehicle steering wheel angle by receiving at least one steering sensor output from at least one steering sensor. The method then receives a vehicle speed signal. A centered steering angle is determined based on the received vehicle speed signal and the steering sensor output.

Description:
COPYRIGHT NOTICE  
         [0001]    A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyrights whatsoever.  
         TECHNICAL FIELD OF THE INVENTION  
         [0002]    In general, the invention relates to controlled vehicle systems. More specifically, the invention relates to steering angle information utilized within varying vehicle systems and, in particular, to a method for providing initialization and the accurate angle sensing of steering direction (also known in the art as steering angle, steering wheel angle, and steering hand wheel angle).  
         BACKGROUND OF THE INVENTION  
         [0003]    Modern automotive technologies utilize advanced system algorithms to provide for advanced vehicle safety, comfort, control, and additional like attributes. These algorithms rely upon driver response, driver preferences, vehicle sensor output, hardcoded constants, and determined variables as input for processing the preferred function. An algorithm&#39;s result is then relayed for utilization within the pertinent system. Many of these algorithms rely upon the values defined by each other as inputs to be processed for additional controls. One value often required by alternate algorithms is for a vehicle&#39;s precise steering wheel center or steering wheel angle off center.  
           [0004]    Prior art ‘steering angle determination’ algorithm&#39;s provide accurate results, but at a cost. One such cost involves the quality of a ‘steering angle determination’ algorithms result. Current ‘steering angle determination’ algorithms rely upon dedicated steering sensors. If more than one algorithm needs a raw steering wheel angle value, multiple sensors must be added thus increasing manufacturing costs.  
           [0005]    Additionally, current ‘steering angle determination’ algorithms require three or more driver or sensor inputs such as yaw rate and lateral acceleration in addition to the steering sensor, in order to accurately determine a steering angle. Statistically, the larger the number of required input&#39;s, the higher the probability of inaccurate results caused by faulty driver input or malfunctioning sensors. Additionally, the larger the number of vehicle sensors, the higher the vehicle costs of manufacturing.  
           [0006]    In addition, current ‘steering angle determination’ algorithms can hamper the proficiency of additional vehicle algorithms. This can be caused by the amount of time required for the steering sensor and additional sensors to provide sufficient data for the ‘steering angle determination’ algorithm to accurately determine the angle of a steering wheel from center.  
           [0007]    Therefore, it would be desirable to have an algorithm that quickly determines absolute steering wheel angle information, that requires a minimum number of inputs, and that further improves upon the above-mentioned situations and prior art.  
         SUMMARY OF THE INVENTION  
         [0008]    One embodiment of the invention provides a method of determining a vehicle steering wheel angle. At least one steering sensor output and a vehicle speed signal are received. A centered steering angle is determined based on the received vehicle speed signal and the steering sensor output.  
           [0009]    Another embodiment of the invention provides a system for determining a vehicle steering angle including a means for receiving at least one steering sensor output, a means for receiving a vehicle speed signal, and a means for determining a centered steering angle based on the received vehicle speed signal and the steering sensor output.  
           [0010]    Another embodiment of the invention provides a computer readable medium storing a computer program comprising computer readable code for receiving at least one steering sensor output. The computer program further comprises computer readable code for receiving a vehicle speed signal and for determining a centered steering angle based on the received vehicle speed signal and the steering sensor output.  
           [0011]    The foregoing and other features and advantages of the invention will become further apparent from the following detailed description of the presently preferred embodiment, read in conjunction with the accompanying drawings. The detailed description and drawings are merely illustrative of the invention rather than limiting, the scope of the invention being defined by the appended claims and equivalents thereof. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0012]    [0012]FIG. 1 is a schematic view of one embodiment of a steering wheel angle system, in accordance with the invention;  
         [0013]    [0013]FIG. 2 is a block diagram of one embodiment of a ‘steering angle determination’ algorithm imbedded in the steering wheel angle system of FIG. 1 in accordance with the invention;  
         [0014]    [0014]FIG. 3 is a block diagram of one embodiment of a ‘external frequency signal conditioning’ algorithm imbedded in the ‘steering angle determination’ module of FIG. 2 in accordance with the invention; and  
         [0015]    [0015]FIG. 4 is a block diagram of one embodiment of a ‘centered steering angle determination’ algorithm imbedded in the ‘steering angle determination’ module of FIG. 2 in accordance with the invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0016]    ‘Steering wheel angle determination’ methods and systems are not new to the art, but prior art algorithms required vehicle information in excess of a vehicle speed, and the information provided by a steering sensor as its output. In addition to one embodiment of the present invention limiting the requiring vehicle variables to the vehicle speed and multiple steering sensor output values, an additional embodiment may utilize the vehicle speed and a single digital steering sensor output value.  
         [0017]    [0017]FIG. 1 is a schematic view of one embodiment of a vehicle steering wheel angle system  100  including a ‘digital steering sensor’  110 , a ‘control module’  130 , and a common communication path between them  120  as is known in the art. In one embodiment, the ‘digital steering sensor’  110  is a quadrature sensor known in the art and provides a phase A (PHA), phase B (PHB), and index (INDEX or steering index) signal  122  output (pulses). An additional embodiment may use an analog steering sensor providing analog values of like output. The output signals  122  carried across the communication path  120  can become the input to one embodiment of a ‘steering angle determination’ algorithm, imbedded within the ‘control module’  130 . The ‘steering angle determination’ algorithm’ is also known in the art as a ‘SAD’ algorithm, and is further illustrated in FIG. 2 as module  200 . Further embodiments of the invention may refer to algorithms as modules or as the algorithm name without the specification ‘algorithm’.  
         [0018]    The ‘SAD’ algorithm  200  defines the software requirements for the ‘control module’  130  to produce as outputs, a centered steering wheel angle (centered steering wheel angle)  280  and a steering autoflag  270  from the digital steering sensor output  122 . In an alternative embodiment, the ‘SAD’ algorithm may be used as a ‘Black Box’, with all inputs and outputs defined generically and without consideration for any necessary external processing, thereby allowing for the use of the ‘SAD’ algorithm output by any type or number of vehicle control module. The term ‘Black Box’ is one known in the art to refer to a stand alone application who&#39;s output may be used by any other application without prejudice.  
         [0019]    The ‘SAD’ algorithm  200  inputs can include continuous, external, and discrete inputs. The continuous input to the ‘SAD’ algorithm can include the ‘vehicle speed’  215 . The external inputs to the ‘SAD’ algorithm can include the ‘steering phase A pulse’  202 , the ‘steering phase B pulse’  205 , and the ‘steering index pulse’  208 . The discrete (flag variable) inputs to the ‘SAD’ algorithm  200  can include a ‘diagnostics degraded modes’  220 , and a ‘external steering autocenter trimset’ 210 .  
         [0020]    The ‘diagnostics degraded modes’  220  is shown as an alternate embodiment wherein sensors or logic, determine if any fault occurs within the inputs to the ‘SAD’ algorithm  200 . If a fault is indicated by the ‘diagnostics degraded modes’  220 , appropriate portions of the ‘SAD’ algorithm  200  can be overwritten.  
         [0021]    Additional external inputs to the ‘SAD’ algorithm  200  can include a ‘EEPROM steering autocenter’  252 , a ‘external frequency signal conditioning calibrations’  242 , a ‘center ramp calibrations’  254 , and an ‘autocentering calibrations’  257 . The values of these input variables can be predetermined and stored in a memory device for use by internal algorithms. The ‘external frequency signal conditioning calibrations’  242  input can include a ‘left index mark’, a ‘right index mark’, a ‘dig steer rotation’, and a ‘steer low-pass filter (LPF) coefficient’ as described later in FIG. 3.  
         [0022]    In one embodiment of the invention, the ‘SAD’ algorithm  200  can be broken down into the distinct functional algorithms or blocks, ‘external frequency signal conditioning’  240  and ‘centered steering angle determination’  260 .  
         [0023]    In the embodiment of FIG. 2, it is assumed in that the flag bits that denote activation of the ‘diagnostics degraded modes’  220  can be set and cleared by generic diagnostic routines as a function of any fault conditions that can affect the ‘SAD’ algorithm  200 . Additionally for one embodiment, all software associated with the ‘SAD’ algorithm  200  can be executed once every 10 ms.  
         [0024]    In one embodiment, the ‘SAD’ algorithm  200  power-up initialization occurs when the ‘control module’  130  has been in a low current shutdown mode and a wake-up occurs, such as starting the host vehicle. After the control module&#39;s  130  software has performed generic power-up initialization and calibration upload functions, the status of the ‘SAD’ algorithm  200  can be initialized where all steering sensor faults can be assumed inactive until re-detected, and all intermediate variables can be initialized appropriately to allow for smooth start-up of the ‘SAD’ algorithm  200 .  
         [0025]    [0025]FIG. 3 is a block diagram of one embodiment of the ‘external frequency signal conditioning’ algorithm  240  of the ‘SAD’ algorithm  200 , and illustrated are all inputs and outputs, as well as the most significant internal variables for this embodiment. The ‘external frequency signal conditioning’ algorithm  240  can include the functional modules or algorithms ‘process phase A/B input captures’ (process phase A/B input captures and compute steer angle counts)  310 , ‘process index pulse input capture’  320 , ‘adjust for index’  340 , and ‘filter steer angle’  360 .  
         [0026]    In one embodiment of the invention, the ‘process phase A/B input captures’ routine  310  can be called every time an interrupt occurs on either ‘phase A pulse’  202  or ‘phase B pulse’  205 . The ‘phase A pulse’  202  and ‘phase B pulse’  205  input state can be read and used to determine the steer angle counts and direction variables. The steer angle counts can be incremented or decremented each time an interrupt occurs. The direction variable can be either left or right, depending on which phase the interrupt has occurred and at which output level.  
         [0027]    In another embodiment, phase A/B interrupt enable flags can be used to disable an interrupt until an interrupt of the other phase occurs. The mechanism prevents a single interrupt from toggling back and forth on very slight sensor movement. Additionally, one embodiment of the ‘process phase A/B input captures’  310  may use the following logic or equivalent.  
                                                                                                                         Read A state from phase A pulse (hardware)           Read B state from phase B pulse (hardware)           If phase A interrupt occurred then                Phase A interrupt enable flag = disable           Phase B interrupt enable flag = enable           Clear digital steer sensor diagnostic timer                If (A state = B sate) then                Increment steer angle counts           Direction = right                Else                Decrement steer angle counts           Direction = left                Endif                Endif                      
 
         [0028]    [0028]                                                                                                               If phase B interrupt occurred then                Phase A interrupt enable flag = enable           Phase B interrupt enable flag = disable           Clear digital steer sensor diagnostic timer           If (A state = B state) then                Decrement steer angle counts           Direction = left                Else                Increment steer angle counts           Direction = right                Endif                Endif                        
         [0029]    The outputs of the ‘process phase A/B input captures’  310  can be ‘steer angle counts’  314  and ‘direction’  317 . The outputs can then be passed as inputs to the ‘adjust for index’  340 .  
         [0030]    In one embodiment of the invention, a ‘process index pulse input capture’  320  algorithm can be executed within the ‘external frequency signal conditioning’  240  every time a ‘phase A/B input capture occurs. Input capture is a technique known in the art and is hardware determined. A ‘index pulse’  208  can be processed by the ‘process index pulse input capture’  320  producing a ‘index state’  324  that is used to synchronize the steering angle counts in the ‘adjust for index’  340 . The ‘process index pulse input capture’  320 , can also determine if an index track value is high or low. An index track is the value of the ‘index pulse’  208  once captured and is said to be HIGH for every value +/−10 about the center of the ‘digital steer sensor’  110 . The index track is said to be LOW for the remainder of the rotation of the ‘digital steer sensor’  110 . Therefore, a transition can occur every time the ‘digital steer sensor’  110  rotates and crosses the +/−10 threshold. The transitions can be Low to High or High to Low depending on the rotational direction and location.  
         [0031]    For one embodiment, an additional output of the ‘process index pulse input capture’  320  can be the ‘index transition’  328  flag, which becomes active when a transition has occurred. The ‘index transition’  328  will be reset by the ‘adjust for index’  340 . A index captured output within the ‘process index pulse input capture’  320  can be a one shot flag that will become and stay active once the first ‘index transition’  328  value occurs. To achieve the ‘index state’  324  and ‘index transition’  328  outputs, one embodiment of the ‘process index pulse input capture’  320  may implement the following logic, or equivalent.  
         [0032]    Initialization of Routine/Controller  
         [0033]    Index Captured=No  
         [0034]    Index Transition=No  
         [0035]    Normal Operation  
         [0036]    Read index state from index pulse (hardware)  
         [0037]    If (index state≠old index state) then  
         [0038]    Index transition=Yes  
         [0039]    Index captured=Yes  
         [0040]    Else  
         [0041]    Index transition=No  
         [0042]    Endif  
         [0043]    Old index state=index state  
         [0044]    Every time an ‘index transition’  328  occurs, the ‘steer angle counts’  314  are re-synchronized within the ‘adjust for index’  340 . For index LOW to HIGH transition, the ‘right index mark’  334  is sensed when turning left, and the ‘left index mark’  332  is sensed when turning right. For index HIGH to LOW transition, the ‘right index mark’  334  is sensed when turning right, and the ‘left index mark’  332  is sensed when turning left. A ‘dig steer rotation’  336  input defines the degree of steering rotation less then 360, and may also be used by the ‘adjust for index’  340 . To determine the steer angle count re-synchronized value, one embodiment of the ‘adjust for index’  340  may implement the following logic, or equivalent.  
                                                                                                                                                                           If (index transition = Yes) then                If (direction = left) AND (index state = high) then                Temp = right_index_mark                Elseif (direction = right) AND (index state = low) then                Temp = right_index_mark                Else                Temp = left_index_mark                Endif           If (steer angle counts &lt; -dig_steer_rotation) then                Steer angle counts = temp − 360                Elseif (steer angle counts &lt; dig_steer_rotation) then                Steer angle counts = temp                Else                Steer angle counts = temp + 360                Endif           Index transition = No            Endif                  
 
         [0045]    The resulting ‘steering angle counts’  244  can have possible values within −370 counts to +370 counts, and can be passed as input values to a ‘filter steer angle’  360  of the ‘external frequency signal conditioning’  240  algorithm, and to the ‘centered steering angle determination’  260  algorithm of the ‘SAD’ algorithm  200 .  
         [0046]    The ‘filter steer angle’  360  of the ‘external frequency signal conditioning’  240  can low-pass filter the ‘steering angle counts’  244  to help smooth out the signal. To provide the low-pass filtering of the ‘steering angle counts’  244 , one embodiment of the ‘filter steer angle’  360  can execute the following equations, or equivalent: 
         Filtered steer angle ( n )=(steer_LPF_coef*steer angle counts ( n ))+((1−steer_LPF_coef)*filtered steer angle ( n− 1)). 
         [0047]    Because the ‘steering LPF (low-pass filter) coefficient’  362  may be hardcoded to a value of 0.5, alternative embodiments of the invention may implement the LPF directly using arithmetic shift operations instead of multiplications, using the following equations, or equivalent: 
         Filtered steer angle ( n )=0.5*steer angle counts ( n )−0.5*filtered steer angle ( n− 1)+filtered steer angle ( n− 1). 
         [0048]    The resulting ‘filtered steer angle’  246  signal can be carried forward with a range appropriate to the range of a physical steering system. For example, ±720 equals two full steering wheel rotations.  
         [0049]    With the process completion of the ‘external frequency signal conditioning’  240 , outputs ‘steering wheel angle counts’  244 , ‘filtered steering wheel angle’  246 , and ‘index captured’  248  ‘can be passed as inputs to the ‘centered steering angle determination’  260  algorithm. In one embodiment as is shown in FIG. 4, the ‘centered steering angle determination’  260  may be composed of a ‘steering autocenter determination’  415  algorithm, a ‘steering center ramp detection’  430  algorithm, and a ‘centered steering wheel angle computation’  450  algorithm.  
         [0050]    Illustrated in FIG. 4, one embodiment of the invention provides that the ‘steering autocenter determination’  415  may require the inputs ‘filtered steering angle’  246 , ‘vehicle speed’  215 , ‘external steering autocenter trimset flag’  210 , ‘diagnostic degraded modes’  220 , ‘EEPROM steering autocenter’  252 , and the ‘autocentering calibrations’  257 . For one embodiment, the ‘autocentering calibrations’  257  can be further comprised of a ‘autocentering minimum vehicle speed (AC_Speed)’, an ‘autocentering angle band (AC_Angle_Band)’, an ‘autocentering time (AC_Time)’, an ‘autocentering multiple angle band (AC_Mult_Angle_Band)’, an ‘autocentering multiple count limit (AC_Mult_Count’), and a ‘maximum EEPROM autocenter offset’.  
         [0051]    The outputs of the ‘steering autocenter determination’  415  can include a ‘steering autocenter’  425 , a ‘steering autoflag’  270 , and the ‘EEPROM steering autocenter’  252 . The ‘EEPROM steering autocenter’  252  may be both an input and an output. This value can be used by the ‘steering angle determination’  415  to store in memory a steering autocenter value across the ‘controller module’  130  wake-up cycles.  
         [0052]    In one embodiment of the ‘steering angle determination’  415 , a command from the ‘external steering autocenter trimset flag’  210  may be received to instruct the ‘steering angle determination’  415  to store the current value of the ‘filtered steering angle’  246  as the ‘EEPROM steering autocenter’ value  252 .  
         [0053]    When one embodiment provides the ‘external steering autocenter trimset flag’  210  set to (on), the ‘SAD’ algorithm  200  can react in one of two ways, both as a function of the status of a ‘ignore steering autocenter command’ provided by the ‘diagnostics degraded modes’  220 . If the ‘ignore steering autocenter command’ is active, one embodiment of the ‘SAD’ algorithm  200  may take no action in response to the ‘external steering autocenter trimset flag’  210  command. Otherwise, the ‘SAD’ algorithm  200  can execute the ‘external steering autocenter trimset flag’ 210  command by taking the following actions:  
         [0054]    Set the ‘steering autocenter’  425  equal to the ‘filtered steering angle’  246 .  
         [0055]    Set the ‘steering autoflag’  270  (valid angle).  
         [0056]    Attempt to program the ‘EEPROM steering autocenter’  252  value to match the updated ‘steering autocenter’  425 .  
         [0057]    Attempt to program the ‘EEPROM steering autocenter’  252  checksum to equal the 1&#39;s complement of the updated ‘steering autocenter’  425 .  
         [0058]    Wherein the ‘steering autocenter’  425  value in ‘a’ is saved to computer memory in a manner known in the art, and the saved value is used as the updated ‘EEPROM steering autocenter’  452  values for ‘c’ and ‘d’. Regardless to which of the two above reactions are used, the ‘external steering autocenter trimset flag’  210  can be cleared in order to prevent repeated execution of the above logic. In other words the flag, or equivalent mechanism, can be handled as a one-time execution. The external reply, handled outside the ‘SAD’ algorithm  200 , can indicate what actions were taken in response to the ‘external steering autocenter trimset flag’  210 .  
         [0059]    For another embodiment of the invention, the ‘steering autocenter determination’  415  can be used to allow the ‘controller module’  130  (in this embodiment, the controller module circuit memory) to “learn” the ‘filtered steering angle’  246  value that corresponds to straight-line driving (centered steering wheel position) by providing corrected ‘steering autocenter’  425  values to memory. Memory may be of any type known in the art, and may be non-volatile RAM for this embodiment. Non-volatile may be required to prevent loss of the learned value between ignition cycles. The ‘steering autocenter determination’  415 , the steering autocenter  425  and old steering autocenter variables can be initialized to equal the ‘EEPROM steering autocenter’  252  during all reset types. After initialization (if required), the ‘steering autocenter determination’  415  can execute the following equations and logic, or equivalent:  
                                                                                                               If (index captured = Yes) then                If steering enable flag = 0 then                Autocenter one-time flag = 0 (Inactive)           Autocenter multiple one-time flag = 0 (Inactive)           Steering autoflag = 0 (Inactive)           Steering autocenter = EEPROM steering autocenter           Old steering autocenter = EEPROM steering autocenter           New autocenter found flag = 0 (Inactive)                Elseif autocenter one-time flag = 0 (Inactive) then                Autocenter one-time flag = 1 (Active)           Initial AC steering angle = filtered steering angle           Autocenter counter = 0                Else                Execute steering autocentering subroutine                Endif            Endif                  
 
         [0060]    The steering autocentering subroutine can execute the following equations and logic, or equivalent:  
                                                                                                                                                                                                                         AC_Delta = filtered steering angle − initial ac steering angle           If [(vehicle speed &gt; AC_Speed) AND (|AC_Delta| &lt; AC_Angle_Band) then                Increment autocenter counter           If autocenter counter ≧ AC_Time then                Autocenter one-time flag = 0 (Inactive)           If autocenter multiple one-time = 0 (Inactive) then                Autocenter multiple one-time = 1           Initial multiple AC angle = filtered steering angle           Autocenter multiple counter = 1                Else                AC_Mult_Delta = filtered steering angle − initial multiple ac            angle       If |AC_Mult_Delta| &lt; AC_Mult_Angle_Band then                Increment autocenter multiple counter           If autocenter multiple counter ≧ AC_Mult_Count then                Steering autocenter = filtered steering angle           Steering autoflag = 1 (Active)           New autocenter found flag = 1 (Active)           Autocenter multiple one-time = 0 (Inactive)                Endif                Else                Initial multiple AC angle = filtered steering angle           Autocenter multiple counter = 1                Endif                Endif                Endif                Else                Initial AC steering angle = filtered steering angle           Autocenter counter = 0                Endif                      
 
         [0061]    The ‘steering autocenter determination’  415  can at power down, update the ‘EEPROM steering autocenter’  252  to equal the current value of the ‘steering autocenter’  425  if the two differ by more than the ‘maximum EEPROM autocenter offset calibration’ value found in the autocenter calibrations  257 . In one embodiment, the following equations and logic, or comparable, may be used:  
                                                                   Offset = steering autocenter − EEPROM steering autocenter       If |Offset| &gt; maximum EEPROM autocenter offset then                Program ‘EEPROM steering autocenter’ to equal steering autocenter            Program ‘EEPROM steering autocenter’ checksum to equal 1&#39;s complement of                steering autocenter            Endif                  
 
         [0062]    The ‘steering center ramp detection’  430  algorithm, in one embodiment, can be used to determine if the steering wheel position is within a threshold of the position relating to the ‘EEPROM steering autocenter’  252 . The ‘steering center ramp detection’  430  assumes that it is not possible to drive above a defined vehicle speed for more than a defined time interval with a steering wheel angle that is outside the range −180° to +180°. The ‘centered steering angle determination’  260  can execute the ‘steering center ramp determination’  430  once an index edge has been captured.  
         [0063]    The inputs for the ‘steering center ramp determination’  430  include ‘index captured’  248 , ‘filtered steer angle’  246 , ‘vehicle speed’  215 , ‘diagnostic degraded modes’  220 , ‘steer angle counts’  244 , and the ‘center ramp calibrations’  254 . The ‘center ramp calibrations’  254  can contain a ‘center ramp minimum vehicle speed (Ramp_Speed)’, a ‘center ramp angle band (Ramp_Angle)’, and a ‘center ramp time (Ramp_Time)’ values. The output of the processed ‘steering center ramp determination’  430  is the ‘steering autoflag’  270 .  
         [0064]    For one embodiment of the ‘steering center ramp determination’  430 , the following equations and logic, or equivalent can be executed:  
                                                                                                                                                                                                                                     If (Index Captured = Yes) then           If (steering enable flag = 0) OR (disable steering ramp find degraded mode = 1) then                Center ramp one-time flag = 0 (inactive)                Elseif center ramp one-time flag = 0 (inactive) then                Center ramp one-time flag = 1 (active)           Initial ramp steering angle = filtered steer angle           Ramp counter = 0                Else                Ramp_Delta = filtered steer angle − initial ramp steering angle           If [(Vehicle Speed &gt; Ramp_Speed) AND (|Ramp_Delta| &lt; Ramp_Angle)            then                Increment ramp counter           If ramp counter ≧ Ramp_Time then                Center ramp one-time flag = 0 (inactive)           Steering autoflag = 1 (active)           If filtered steer angle &gt; 180° then                Steer angle counts = steer angle counts − 360           Filtered Steer Angle = Filtered Steer Angle −360           Filtered steer angle (n−1) = filtered steer angle (n−1) −            360                Elseif filtered steer angle &lt; −180° then                Steer angle counts = steer angle counts + 360           Filtered steer angle = filtered steer angle + 360           Filtered steer angle (n−1) = filtered steer angle (n−1) +            360                Endif                Endif                Else                Initial ramp steering angle = filtered steer angle           Ramp Counter = 0                Endif           Endif                Endif                      
 
         [0065]    Upon processing the ‘steering center ramp determination’  430 , the ‘steering autoflag’  270  can be made available to the ‘steering autocenter determination’  415 , and the ‘centered steer angle computation’  450  algorithm as an input.  
         [0066]    The ‘centered steering angle computation’  450 , can calculate a ‘centered steering angle’  280  by subtracting the ‘steering autocenter’  425  from the current ‘filtered steer angle’  246  value once a valid autocenter has been determined. One embodiment of the ‘centered steering angle computation’  450  may use the following equations and logic, or equivalent:  
                                                                   If (index captured flag = Yes) AND (steering autocenter valid flag = Yes) then                Centered steer angle = filtered steer angle − steering autocenter            Else                Centered steer angle = 0            Endif                  
 
         [0067]    With the determination of the ‘centered steer angle’  280  complete, one embodiment of the ‘SAD’ algorithm  200  concludes and can provide the ‘centered steer angle’  280  or any combination of the above outputs to the ‘controller module’  130 , or any other embodiment requiring a defined value for a centered steering wheel angle or its components.  
         [0068]    The above-described implementations and algorithms of the invention are example implementations and algorithms. These implementations and algorithms illustrate one possible approach for modular implementation of the ‘SAD’ algorithm  200 . The actual implementation may vary from the structure that is illustrated. Moreover, various other improvements and modifications to this invention may occur to those skilled in the art, and those improvements and modifications will fall within the scope of this invention as set forth below.